/* 100天农场 · 风格锚 v2.0（蜜色木 / 砖红 / 赭黄 / 苔绿 / 樱粉 / 深蓝，深棕黑描边） */
:root{
  --wood:#d9a86c; --wood-d:#b07d47; --brick:#b5533a; --soil:#c98b3b; --soil-d:#9c6a2c;
  --moss:#6f8f4e; --pink:#e7a6b6; --water:#2f4a6b; --outline:#3a2a20; --paper:#f3ead6;
  --warm:#f6c46a; --warm-sky:#f4a259; --gold:#e8c34a; --ink:#2a1f18; --muted:#7c6a58;
  --panel:#f6e8ca; --panel-2:#eddab2; --shadow:0 5px 0 rgba(58,42,32,.16);
  --wood-frame:#8a5a2e; /* 卡片木色描边，和木底和谐 */
  --safe-b:env(safe-area-inset-bottom,0px);
  --safe-t:env(safe-area-inset-top,0px);
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei","Segoe UI",sans-serif;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
[hidden]{display:none!important}
html,body{margin:0;height:100%;overflow:hidden;touch-action:manipulation}
body{background:#d3a05f;color:var(--ink);user-select:none} /* 与底部导航同色：iOS 装成 App 后 Home 横条区不再露出深色空块 */
/* 场景区允许竖向滑动翻页（pan-y），但仍禁止双指缩放；点一下＝走路照常 */
.home-scene,.farm-map{touch-action:pan-y}
/* 输入框：字号≥16px（iOS 聚焦不自动放大）；且只有输入框允许选字/长按 */
input,textarea,select{font-size:16px!important;-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}
img.art{image-rendering:pixelated;image-rendering:crisp-edges;object-fit:contain}

#app{position:fixed;inset:0;display:flex;flex-direction:column;max-width:520px;margin:0 auto;
  background:linear-gradient(180deg,#f7d9a6,#f4c583);overflow:hidden}

/* 顶栏 */
#topbar{display:flex;align-items:center;justify-content:space-between;
  padding:calc(10px + var(--safe-t)) 14px 10px;  /* 顶部留出刘海/状态栏安全区，别叠到时间信号 */
  background:var(--soil);border-bottom:3px solid var(--outline);color:#fff8ec;flex:0 0 auto}
.tb-left,.tb-right{display:flex;align-items:center;gap:8px}
.badge{background:#fff8ec;color:var(--ink);border:2px solid var(--outline);border-radius:8px;
  padding:2px 8px;font-size:13px;font-weight:700}
.badge.ghost{background:var(--brick);color:#fff}
.coins{display:inline-flex;align-items:center;gap:5px;background:#fff8ec;color:var(--ink);
  border:2px solid var(--outline);border-radius:10px;padding:2px 9px;font-size:14px}
.coins b{font-variant-numeric:tabular-nums}
.ic-coin{width:14px;height:14px;border-radius:50%;background:var(--gold);border:2px solid var(--outline);display:inline-block}
.icon-btn{background:#fff8ec;border:2px solid var(--outline);border-radius:10px;width:34px;height:30px;
  font-size:16px;color:var(--ink);cursor:pointer}
.icon-btn.on{background:var(--gold)}

/* 页面容器 */
#screen{flex:1 1 auto;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;
  padding:14px 14px 20px}
.page{animation:fade .25s ease}
@keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
h2.page-title{font-size:17px;margin:2px 0 12px;display:flex;align-items:center;gap:8px}
.hint{color:var(--muted);font-size:12.5px;line-height:1.6}

/* 底部导航 */
#nav{flex:0 0 auto;display:flex;background:var(--wood);border-top:3px solid var(--outline);
  padding-bottom:var(--safe-b)} /* 只避开 Home 横条本身，不再多留空白 */
.tab{flex:1;background:none;border:none;padding:10px 0 9px;display:flex;flex-direction:column;align-items:center;
  gap:3px;color:var(--muted);font-size:12.5px;font-weight:600;cursor:pointer;position:relative;opacity:.85;min-height:60px}
img.ic{width:30px;height:30px;object-fit:contain;image-rendering:pixelated}
img.pt-ic{width:23px;height:23px;object-fit:contain;image-rendering:pixelated;flex:0 0 auto}
.tab.active{opacity:1;color:var(--ink)}
.tab.active img.ic{transform:scale(1.08)}
.tab .dot{position:absolute;top:8px;right:calc(50% - 24px);width:10px;height:10px;border-radius:50%;
  background:var(--brick);border:1.5px solid #fff}

/* 卡片 / 面板 */
.card{background:var(--panel);border:3px solid var(--outline);border-radius:14px;padding:12px;
  box-shadow:var(--shadow);margin-bottom:12px}
.card h3{margin:0 0 8px;font-size:15px}
.row{display:flex;align-items:center;gap:10px}
.spread{justify-content:space-between}
.grid{display:grid;gap:10px}
.grid.g2{grid-template-columns:repeat(2,1fr)}
.grid.g3{grid-template-columns:repeat(3,1fr)}
.grid.g4{grid-template-columns:repeat(4,1fr)}
.grid.g5{grid-template-columns:repeat(5,1fr)}
.grid.g6{grid-template-columns:repeat(6,1fr)}

button.btn{font-family:inherit;background:var(--brick);color:#fff8ec;border:3px solid var(--outline);
  border-radius:12px;padding:9px 14px;font-size:14px;font-weight:700;cursor:pointer;box-shadow:0 4px 0 rgba(58,42,32,.25)}
button.btn:active{transform:translateY(3px);box-shadow:none}
button.btn.sec{background:var(--wood);color:var(--ink)}
button.btn.gold{background:var(--gold);color:var(--ink)}
button.btn:disabled{background:#c9beac;color:#8a8072;box-shadow:none;cursor:default}
button.btn.wide{width:100%}
.pill{display:inline-flex;align-items:center;gap:4px;background:var(--panel-2);border:2px solid var(--outline);
  border-radius:999px;padding:2px 9px;font-size:12px}

/* 家 */
.home-scene{position:relative;border:3px solid var(--outline);border-radius:14px;overflow:hidden;box-shadow:var(--shadow)}
.home-scene img.bg{width:100%;display:block}
.home-hotspots{position:absolute;inset:0}
.hot{position:absolute;display:flex;flex-direction:column;align-items:center;gap:1px;cursor:pointer;
  filter:drop-shadow(0 2px 0 rgba(0,0,0,.2))}
.hot img{width:44px;height:44px}
.hot span{font-size:10px;background:#fff8ecdd;border:1.5px solid var(--outline);border-radius:6px;padding:0 4px}
.hot .dot{position:absolute;top:-3px;right:-3px;width:11px;height:11px;border-radius:50%;background:var(--brick);border:2px solid #fff}
/* 点击区：对准底图家具，平时只留淡框，hover/点亮时提示 */
.zone{position:absolute;cursor:pointer;border-radius:8px;display:flex;align-items:flex-end;justify-content:center;
  border:2px dashed transparent;transition:border-color .15s,background .15s}
.zone:hover,.zone:active{border-color:rgba(255,248,236,.6);background:rgba(255,248,236,.12)}
.zone-label{font-size:10px;background:#fff8ecdd;border:1.5px solid var(--outline);border-radius:6px;padding:0 4px;
  margin-bottom:2px;opacity:0;transform:translateY(4px);transition:opacity .15s,transform .15s;pointer-events:none;white-space:nowrap}
.zone:hover .zone-label,.zone:active .zone-label{opacity:1;transform:none}
.zone-icon{width:42px;height:52px;position:absolute;left:50%;bottom:60%;transform:translateX(-50%);filter:drop-shadow(0 2px 2px rgba(0,0,0,.35))}
.zone .dot{position:absolute;top:-4px;right:-4px;width:11px;height:11px;border-radius:50%;background:var(--brick);border:2px solid #fff}
/* 她：等速走位＋踏步小跳＋朝向翻转（不再直线飘） */
.char-mini{position:absolute;left:50%;top:72%;transform:translate(-50%,-92%);height:84px;pointer-events:none;
  transition:left var(--walk,.6s) linear, top var(--walk,.6s) linear;will-change:left,top}
.char-mini img{display:block;height:84px;transform-origin:50% 100%}
.char-mini.face-left{transform:translate(-50%,-92%) scaleX(-1)}
/* 脚下的影子（跟着踏步一起呼吸），让「走路」更有落地感 */
.char-mini .mini-shadow{position:absolute;left:50%;bottom:-3px;width:36px;height:9px;
  transform:translateX(-50%);border-radius:50%;pointer-events:none;z-index:-1;
  background:radial-gradient(ellipse at center, rgba(40,28,18,.34), rgba(40,28,18,0) 70%)}
/* 走路：绕着脚做「左右晃 + 踏步小跳」的摇摆步（无需帧动画也有走的感觉）*/
.char-mini.walking img{animation:walkstep .34s ease-in-out infinite}
/* 四方向真帧走路：用逐帧切换，不要假摇摆；人物略大一点、贴地 */
.char-mini.walk-sprite{transform:translate(-50%,-90%);height:96px}
.char-mini.walk-sprite img{height:96px}
.char-mini.walk-sprite.walking img{animation:none}
.char-mini.walk-sprite.face-left{transform:translate(-50%,-90%) scaleX(-1)}
@keyframes walkstep{
  0%{transform:translateY(0) rotate(-3.2deg)}
  25%{transform:translateY(-3px) rotate(0deg) scaleY(1.015)}
  50%{transform:translateY(0) rotate(3.2deg)}
  75%{transform:translateY(-3px) rotate(0deg) scaleY(1.015)}
  100%{transform:translateY(0) rotate(-3.2deg)}
}
.char-mini.walking .mini-shadow{animation:walkshadow .34s ease-in-out infinite}
@keyframes walkshadow{0%,100%{transform:translateX(-50%) scale(1)}50%{transform:translateX(-50%) scale(.82);opacity:.8}}
@media (prefers-reduced-motion: reduce){.char-mini{transition:none}.char-mini.walking img{animation:none}.char-mini.walking .mini-shadow{animation:none}}
.hot.placed.big img{width:56px;height:56px}
.hot.placed img{width:38px;height:38px}
/* 宠物：慢慢溜达（等速缓动，走完停一会），朝向翻转 */
.pet-mini{position:absolute;transform:translate(-50%,-70%);pointer-events:none;z-index:1;
  transition:left var(--petwalk,2s) ease-in-out, top var(--petwalk,2s) ease-in-out}
.pet-mini img{width:34px;height:34px;image-rendering:pixelated;display:block}
.pet-mini.face-left{transform:translate(-50%,-70%) scaleX(-1)}
.pet-mini.moving img{animation:petbob .5s ease-in-out infinite}
@keyframes petbob{50%{transform:translateY(-2px)}}
@media (prefers-reduced-motion: reduce){.pet-mini{transition:none}.pet-mini.moving img{animation:none}}

/* 农场 */
.farm-map{position:relative;border:3px solid var(--outline);border-radius:14px;overflow:hidden;box-shadow:var(--shadow)}
.farm-map img.bg{width:100%;display:block}
/* 一季一图，昼夜靠罩层：醒着=暖金；睡着=冷蓝（§14.2 光照圣经） */
.bg-tint{position:absolute;inset:0;pointer-events:none;mix-blend-mode:soft-light}
.bg-tint.warm{background:linear-gradient(180deg,rgba(246,196,106,.28),rgba(244,162,89,.10))}
.bg-tint.cool{background:linear-gradient(180deg,rgba(36,50,82,.42),rgba(59,74,107,.30));mix-blend-mode:multiply}
/* 夜晚：背景靠罩层压暗，前景（人物/宠物/作物/夜彩蛋）也一起调暗，免得人太亮不搭场景 */
.home-scene.cool .char-mini, .home-scene.cool .pet-mini,
.farm-map.cool .char-mini, .farm-map.cool .pet-mini,
.farm-map.cool .soil, .farm-map.cool .night-item{filter:brightness(.72) saturate(.88)}
/* 直接点背景里画好的 8 块土：透明点击区，不再叠丑格子 */
.soil{position:absolute;width:15%;height:11%;transform:translate(-50%,-50%);cursor:pointer;
  display:flex;align-items:center;justify-content:center;border-radius:8px;transition:background .12s}
.soil:hover,.soil:active{background:rgba(255,248,236,.14)}
.soil.dry{box-shadow:inset 0 0 0 3px rgba(181,83,58,.6);border-radius:8px}
.soil img{width:104%;height:150%;object-fit:contain;transform:translateY(-14%);filter:drop-shadow(0 2px 2px rgba(0,0,0,.35))}
.soil .q{position:absolute;font-size:20px;color:#fff8ec;text-shadow:0 1px 2px rgba(0,0,0,.5);opacity:.9}
.soil .q.ready{top:-6px;right:2px;font-size:13px}
.night-item{position:absolute;cursor:pointer;transform:translate(-50%,-50%)} /* 不乱动、藏角落 */
.night-item img{width:30px;height:30px;filter:drop-shadow(0 1px 2px rgba(0,0,0,.4))}
/* 好感未揭示：问号占位 */
.npc-portrait.mystery{display:flex;align-items:center;justify-content:center;background:linear-gradient(180deg,#3a2e26,#2a211b)}
.npc-portrait.mystery span{font-size:40px;font-weight:800;color:#f0c46a;opacity:.85}
@keyframes bob{50%{transform:translateY(-4px)}}

/* 图鉴 */
.collection-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:7px}
.cell{aspect-ratio:1/1;background:var(--panel-2);border:2px solid var(--outline);border-radius:8px;
  display:flex;align-items:center;justify-content:center;position:relative;cursor:pointer}
.cell img{width:78%;height:78%}
.cell.locked img{opacity:.5}
.cell .hb{position:absolute;top:1px;left:3px;font-size:10px;color:var(--brick)}

/* 心动 / NPC */
.npc-card{display:flex;gap:12px;align-items:center}
.npc-portrait{width:74px;height:100px;flex:0 0 auto;border:2px solid var(--outline);border-radius:10px;
  overflow:hidden;background:linear-gradient(180deg,#f7d9a6,#eabf86);display:flex;align-items:flex-end;justify-content:center;
  padding:8px 8px 4px} /* 留一圈边距，人物不贴框 */
.npc-portrait img{height:100%;width:auto;max-width:100%;object-fit:contain}
.hearts{display:flex;align-items:center;gap:3px;margin:4px 0}
.hearts .h{width:16px;height:16px}
.affbar{height:8px;background:var(--panel-2);border:2px solid var(--outline);border-radius:6px;overflow:hidden}
.affbar>i{display:block;height:100%;background:var(--brick)}
.love-ready{box-shadow:0 0 0 3px var(--gold),var(--shadow);animation:glow 1.3s ease-in-out infinite}
@keyframes glow{50%{box-shadow:0 0 0 5px var(--pink),var(--shadow)}}
.stage-dots{display:flex;gap:6px;margin-top:6px}
.stage-dots .sd{font-size:11px;padding:2px 6px;border:2px solid var(--outline);border-radius:999px;background:var(--panel-2)}
.stage-dots .sd.done{background:var(--brick);color:#fff}
.stage-dots .sd.ready{background:var(--gold)}
.stage-dots .sd.wait{opacity:.6;border-style:dashed}

/* 商店 */
.shop-tabs{display:flex;gap:6px;overflow-x:auto;padding-bottom:8px;margin-bottom:6px}
.shop-tabs button{white-space:nowrap;background:var(--panel-2);border:2px solid var(--outline);border-radius:999px;
  padding:5px 12px;font-size:13px;cursor:pointer;font-family:inherit}
.shop-tabs button.active{background:var(--brick);color:#fff}
.shop-item{display:flex;gap:10px;align-items:center;padding:8px;background:var(--panel);border:2px solid var(--outline);
  border-radius:10px}
.shop-item img{width:48px;height:48px;flex:0 0 auto}
.shop-item .si-body{flex:1;min-width:0}
.shop-item .si-name{font-size:13.5px;font-weight:700}
.shop-item .si-desc{font-size:11.5px;color:var(--muted);line-height:1.45}
.shop-item .si-buy{flex:0 0 auto;display:flex;flex-direction:column;align-items:flex-end;gap:4px}
.price{font-size:12px;font-weight:700;display:inline-flex;align-items:center;gap:3px}

/* ===== 剧情呈现层（§11 五级视觉重量）===== */
.overlay{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;
  background:rgba(30,20,14,.55);padding:18px}
.overlay[hidden]{display:none}
.overlay .frame{max-width:460px;width:100%;overflow-y:auto;animation:pop .28s ease;
  -webkit-overflow-scrolling:touch;overscroll-behavior:contain;
  max-height:82vh;max-height:min(82vh, calc(100dvh - 110px))}
@keyframes pop{from{opacity:0;transform:scale(.94)}to{opacity:1;transform:none}}

/* 1 全屏卷轴（主线，最重） */
.frame.scroll{background:var(--paper);border:5px solid var(--outline);border-radius:6px;
  box-shadow:0 0 0 6px var(--wood-d),0 14px 30px rgba(0,0,0,.4);padding:22px 20px}
.frame.scroll .ep-head{text-align:center;border-bottom:2px dashed var(--wood-d);padding-bottom:10px;margin-bottom:14px}
.frame.scroll .ep-head .ep-day{font-size:12px;color:var(--muted)}
.frame.scroll .ep-head .ep-title{font-size:18px;font-weight:800}

/* 2 NPC 立绘对话框（好感 b/c） */
.frame.portrait{background:transparent;display:flex;flex-direction:column;align-items:center;gap:0}
.frame.portrait .stand{height:210px}
.frame.portrait .dbox{background:var(--panel);border:4px solid var(--outline);border-radius:14px;padding:14px 16px;width:100%;box-shadow:var(--shadow)}

/* 3 信纸（回信 + 他的好感，含空椅子剪影） */
.frame.letter{background:var(--paper);border:3px solid var(--outline);border-radius:8px;
  box-shadow:var(--shadow);padding:0;overflow:hidden}
.frame.letter .lt-top{display:flex;gap:10px;padding:14px 16px 6px}
.frame.letter .chair{width:52px;height:70px;opacity:.8;flex:0 0 auto}
.frame.letter .lt-face{width:56px;height:76px;flex:0 0 auto;object-fit:contain}
.frame.letter .lt-body{padding:6px 18px 18px;background:
  repeating-linear-gradient(transparent,transparent 27px,rgba(58,42,32,.12) 28px)}

/* 4 小纸条卡（小剧场，轻，2 秒可划走） */
.frame.note{background:var(--paper);border:2px solid var(--outline);border-radius:10px;
  box-shadow:var(--shadow);padding:16px 18px;max-width:380px;transform:rotate(-.6deg)}
.frame.note .note-tag{font-size:11px;color:var(--muted);margin-bottom:6px}

.line{margin:0 0 10px;line-height:1.75;font-size:15px}
.line .who{font-weight:800;margin-right:4px}
.line.n{color:var(--ink)}
.line.tv{color:var(--water)}
.line.he,.line.qin,.line.jin{color:var(--brick);font-weight:600}
.line.she{color:var(--ink)}
.scene-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:14px}
.scene-tap{text-align:center;color:var(--muted);font-size:12px;margin-top:8px}

/* 5 toast（系统提示，最轻） */
.toasts{position:fixed;left:0;right:0;bottom:calc(70px + var(--safe-b));z-index:60;display:flex;
  flex-direction:column;align-items:center;gap:6px;pointer-events:none;padding:0 16px}
.toast{background:var(--ink);color:#fff8ec;border-radius:999px;padding:8px 16px;font-size:13px;
  box-shadow:var(--shadow);animation:tin .3s ease;max-width:100%}
.toast.gold{background:var(--gold);color:var(--ink)}
@keyframes tin{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* 电视机内嵌 */
.tv-screen{background:var(--water);border:4px solid #222;border-radius:12px;padding:16px;color:#eaf0f7;text-align:center}
.tv-stars{display:flex;justify-content:center;gap:4px;margin:8px 0}
.tv-stars img{width:26px;height:26px}
.tv-daily{background:#1b2b44;border-radius:8px;padding:10px 12px;font-size:14px;line-height:1.6;margin-top:8px}
.tv-sign{font-size:11px;color:#a9bcd6;margin-top:4px;text-align:right}

/* 回忆册 */
.mem-tabs{display:flex;gap:6px;margin-bottom:10px;flex-wrap:wrap}
.mem-tabs button{background:var(--panel-2);border:2px solid var(--outline);border-radius:999px;padding:4px 11px;font-size:12.5px;cursor:pointer;font-family:inherit}
.mem-tabs button.active{background:var(--brick);color:#fff}
.mem-item{background:var(--panel);border:2px solid var(--outline);border-radius:10px;padding:10px 12px;margin-bottom:8px;cursor:pointer}
.mem-item .mi-t{font-weight:700;font-size:13.5px}
.mem-item .mi-s{font-size:11px;color:var(--muted)}
.mem-group{font-size:12px;font-weight:800;color:var(--brick);margin:14px 2px 6px;letter-spacing:.5px}
.mem-group:first-of-type{margin-top:12px}

/* 弹窗通用（gifting / choose） */
.sheet{background:var(--panel);border:3px solid var(--outline);border-radius:16px;padding:16px;max-width:420px;width:100%;box-shadow:var(--shadow);
  max-height:82vh;max-height:min(82vh, calc(100dvh - 96px));overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
.sheet h3{margin:0 0 10px}
/* 长列表弹窗（回忆册/信箱）：表头与「合上」贴边固定，中间列表自己滚 */
.sheet.tall{display:flex;flex-direction:column;padding:0}
.sheet.tall>.sheet-head{padding:14px 16px 8px;position:sticky;top:0;background:var(--panel);z-index:2;border-bottom:2px solid var(--outline)}
.sheet.tall>.sheet-scroll{overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding:12px 16px;flex:1 1 auto}
.sheet.tall>.sheet-foot{padding:10px 16px 14px;position:sticky;bottom:0;background:var(--panel);border-top:2px solid var(--outline)}
.empty{color:var(--muted);font-size:13px;text-align:center;padding:20px}
.center{text-align:center}
.mt{margin-top:12px}

/* ===== 星露谷 UI 皮（木底 + 木色圆角卡片 + 羊皮纸 + 木质按钮）===== */
#app{
  background:var(--ui-bg, linear-gradient(180deg,#f7d9a6,#f4c583)) 0 0 / 300px repeat, #e6c184;
  image-rendering:pixelated;
}
/* 卡片 / 弹窗：暖色纸面 + 木色圆角描边（换掉之前的直角木框，和木底更和谐） */
.card,.sheet,.frame.note{
  background:var(--panel);
  border:3px solid var(--wood-frame);
  border-radius:16px;
  box-shadow:0 4px 0 rgba(58,42,32,.18), inset 0 0 0 2px rgba(255,248,236,.35);
}
.sheet.tall>.sheet-head{border-bottom:2px solid rgba(138,90,46,.35)}
.sheet.tall>.sheet-foot{border-top:2px solid rgba(138,90,46,.35)}
/* 卷轴皮 ui_scroll / 木质按钮 ui_button 已按 kk 要求整个拿掉，恢复原本卡纸弹窗与砖红按钮 */

/* —— 湖边钓鱼：入口木牌 + 全屏 iframe 挂载 —— */
.fish-spot{position:absolute;transform:translate(-50%,-100%);z-index:6;cursor:pointer;
  filter:drop-shadow(0 3px 2px rgba(0,0,0,.4));animation:fishbob 2.4s ease-in-out infinite}
@keyframes fishbob{50%{transform:translate(-50%,-108%)}}
.fish-spot{display:flex;flex-direction:column;align-items:center;gap:1px}
.fish-spot .fs-sign{width:58px;height:auto;image-rendering:pixelated;display:block}
.fish-spot .fs-tag{font-size:10px;font-weight:800;color:#fff8ec;background:rgba(58,42,32,.82);
  border-radius:6px;padding:1px 6px;letter-spacing:.06em;box-shadow:0 1px 2px rgba(0,0,0,.4)}
.fish-spot:active{animation:none;transform:translate(-50%,-100%) scale(.93)}
@media (prefers-reduced-motion: reduce){.fish-spot{animation:none}}
.fish-overlay{position:fixed;inset:0;z-index:200;background:#1a120c;display:block}
.fish-frame{width:100%;height:100%;border:none;display:block;background:#1a120c}
.fish-back{position:fixed;left:12px;top:12px;z-index:210;appearance:none;border:none;cursor:pointer;font-family:inherit;
  background:rgba(58,42,32,.9);color:#f6e8ca;font-size:13px;font-weight:700;padding:9px 14px;border-radius:999px;box-shadow:0 3px 12px rgba(0,0,0,.45)}
.fish-back:active{transform:translateY(1px)}

/* ===== UI 外壳微优化（沿用原本 CSS 风格，只加一点层次/立体，更耐看，不换成图片框）===== */
button.btn{background:linear-gradient(180deg,#c2664c,#b5533a 55%,#9e4630);
  box-shadow:0 4px 0 #7c3a28, inset 0 2px 0 rgba(255,255,255,.22);text-shadow:0 1px 0 rgba(58,42,32,.4)}
button.btn:active{transform:translateY(3px);box-shadow:0 1px 0 #7c3a28, inset 0 2px 0 rgba(255,255,255,.18)}
button.btn.sec{background:linear-gradient(180deg,#e3bd88,#d9a86c 55%,#c08f52);
  box-shadow:0 4px 0 #9c6a2c, inset 0 2px 0 rgba(255,255,255,.32);text-shadow:none;color:var(--ink)}
button.btn.sec:active{box-shadow:0 1px 0 #9c6a2c, inset 0 2px 0 rgba(255,255,255,.28)}
button.btn.gold{background:linear-gradient(180deg,#f2d566,#e8c34a 55%,#cfa631);
  box-shadow:0 4px 0 #b08a24, inset 0 2px 0 rgba(255,255,255,.42);text-shadow:none;color:var(--ink)}
button.btn.gold:active{box-shadow:0 1px 0 #b08a24, inset 0 2px 0 rgba(255,255,255,.38)}
button.btn:disabled{background:#c9beac;box-shadow:0 4px 0 #9a9080;text-shadow:none}
.card{background:linear-gradient(180deg,#faf1da,#f4e6c4);border-color:var(--wood-frame);
  box-shadow:0 4px 0 rgba(58,42,32,.14), inset 0 0 0 2px rgba(255,255,255,.5), inset 0 -3px 0 rgba(138,90,46,.12)}
.sheet{background:linear-gradient(180deg,#faf1da,#f4e6c4)}
#topbar{background:linear-gradient(180deg,#d59a45,#c98b3b);box-shadow:inset 0 -3px 0 rgba(58,42,32,.18)}
#nav{background:linear-gradient(180deg,#e2b87c,#d3a05f);box-shadow:inset 0 3px 0 rgba(255,255,255,.16)}
.badge{background:linear-gradient(180deg,#fffaf0,#f3e6cc);box-shadow:inset 0 1px 0 rgba(255,255,255,.7),0 1px 0 rgba(58,42,32,.15)}
.badge.ghost{background:linear-gradient(180deg,#c2664c,#b5533a);color:#fff8ec}
.coins{background:linear-gradient(180deg,#fffaf0,#f3e6cc);box-shadow:inset 0 1px 0 rgba(255,255,255,.7)}
.pill{background:linear-gradient(180deg,#f3e7c6,#e9d7ab)}
.shop-tabs button,.mem-tabs button{background:linear-gradient(180deg,#f0e2bd,#e4d09f);box-shadow:0 2px 0 rgba(58,42,32,.12)}
.shop-tabs button.active,.mem-tabs button.active{background:linear-gradient(180deg,#c2664c,#b5533a);box-shadow:0 2px 0 #7c3a28;color:#fff8ec}

/* 采集包网格（囤物癖收藏） */
.harvest-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:7px}
.hv-slot{position:relative;aspect-ratio:1/1;background:var(--panel-2);border:2px solid var(--outline);border-radius:8px;
  display:flex;align-items:center;justify-content:center;padding:3px;box-shadow:inset 0 -2px 0 rgba(138,90,46,.12)}
.hv-slot img{width:82%;height:82%;object-fit:contain;image-rendering:pixelated}
.hv-slot .cnt{position:absolute;right:2px;bottom:0;font-size:11px;font-weight:800;color:var(--ink);
  background:rgba(246,232,202,.92);border-radius:5px;padding:0 4px;line-height:1.5}
/* 设置开关 */
.set-row{display:flex;align-items:center;gap:12px;padding:11px 2px;border-bottom:1px solid rgba(138,90,46,.18)}
.set-l{flex:1;min-width:0}
.set-t{font-size:14px;font-weight:700}
.set-d{font-size:11.5px;color:var(--muted);margin-top:2px;line-height:1.4}
.toggle{flex:0 0 auto;width:48px;height:28px;border-radius:999px;border:2px solid var(--outline);
  background:#c9beac;position:relative;cursor:pointer;transition:background .15s;padding:0}
.toggle::after{content:"";position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:50%;
  background:#fff8ec;box-shadow:0 1px 2px rgba(0,0,0,.3);transition:left .15s}
.toggle.on{background:var(--moss)}
.toggle.on::after{left:22px}
.sell-big{width:88px;height:88px;object-fit:contain;image-rendering:pixelated;display:block;margin:8px auto 4px}
/* 作物生长小标签（实时生长：显示还剩多久 / 需浇水） */
.soil .q.grow{font-size:9px;font-weight:700;background:rgba(58,42,32,.82);color:#fff8ec;border-radius:6px;
  padding:1px 5px;line-height:1.5;text-shadow:none;position:absolute;bottom:-2px;left:50%;transform:translateX(-50%);white-space:nowrap}
/* 水量条（一次浇满随时间掉，到 0 枯萎） */
.water-bar{position:absolute;bottom:-1px;left:14%;right:14%;height:4px;background:rgba(58,42,32,.45);border-radius:3px;overflow:hidden;z-index:2}
.water-bar i{display:block;height:100%;background:#4a90c2}
.water-bar i.low{background:#c98a2c}
