/* 🏠 我的小屋・獨立場景（home.css，搭配 home.js）——非彈窗、獨立頁面。
   ⚠️ 新檔：push 時 GitHub Desktop 要手動勾（CI 不自動帶 home.css/home.js）。 */

/* 小雞的家：寵物旁一間「真正的小屋物件」（非按鈕卡片）。前院 flex 把小屋＋寵物並排、底部對齊。
   平常有生活感：煙囪冒煙、窗戶亮燈、門口小花搖（取得地契後才點亮＝.lived）。
   未入住＝house_locked 施工圖＋🔒 未入住；取得地契＝house_day/night。 */
.pet-yard{display:flex;align-items:flex-end;justify-content:center;gap:18px;margin:6px auto 10px;flex-wrap:nowrap;}
.pet-yard .pet-stage-wrap{margin:0;flex:none;}
#homeEntrance.home-house{position:relative;flex:none;width:108px;height:108px;cursor:pointer;
  background:none;border:none;padding:0;filter:drop-shadow(0 6px 6px rgba(80,55,30,.18));transition:transform .15s;}
#homeEntrance.home-house:hover{transform:translateY(-2px);}
#homeEntrance.home-house:active{transform:scale(.96);}
#homeEntrance .hh-base{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;display:block;}
/* 拿掉多餘遮罩（門口小花／窗戶亮燈／煙囪煙）——夜晚只靠 .night 暗化，不疊圖層 */
#homeEntrance .hh-ov{display:none!important;}
/* 夜晚小屋外觀：用白天圖＋暗化（修正 house_night.png 破圖） */
#homeEntrance.night .hh-base{filter:brightness(.68) saturate(.82) contrast(1.02);}
#homeEntrance.lived .hh-glow{opacity:.9;animation:hhGlow 3.2s ease-in-out infinite;}
#homeEntrance.lived .hh-smoke{opacity:.85;animation:hhSmoke 4s ease-in-out infinite;}
#homeEntrance.lived .hh-flowers{opacity:1;animation:hhSway 3.4s ease-in-out infinite;transform-origin:50% 100%;}
@keyframes hhGlow{0%,100%{opacity:.55}50%{opacity:1}}
@keyframes hhSmoke{0%{opacity:.35;transform:translateY(2px)}50%{opacity:.85;transform:translateY(-2px)}100%{opacity:.35;transform:translateY(2px)}}
@keyframes hhSway{0%,100%{transform:rotate(-2deg)}50%{transform:rotate(2deg)}}
/* 狀態小牌（🔒 未入住／📦 神祕包裹） */
#homeEntrance .hh-tag{position:absolute;left:50%;bottom:-6px;transform:translateX(-50%);white-space:nowrap;
  background:#5a4632;color:#fff;font-size:11px;font-weight:900;padding:2px 9px;border-radius:999px;
  box-shadow:0 2px 6px rgba(0,0,0,.2);z-index:3;}
#homeEntrance .hh-tag[hidden]{display:none;}
/* 點鎖定時的小萌對話泡泡 */
#homeEntrance .hh-tip{position:absolute;left:50%;bottom:104%;transform:translateX(-50%) translateY(6px);
  width:158px;background:#fff;border:2px solid #ead7ae;border-radius:14px;padding:8px 11px;
  font-size:12.5px;font-weight:800;color:#4a3312;box-shadow:0 6px 16px rgba(0,0,0,.18);
  opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;z-index:9;}
#homeEntrance .hh-tip.show{opacity:1;transform:translateX(-50%) translateY(0);}
@media (max-width:360px){.pet-yard{gap:12px;}#homeEntrance.home-house{width:92px;height:92px;}}

/* ══ 小屋室內・多房間場景（左右滑動）══ */
#homeScene{position:fixed;inset:0;z-index:1200;display:none;flex-direction:column;background:#efe3cf;touch-action:manipulation;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;}
/* 🏠 小屋所有房間：禁止連點放大螢幕(touch-action)＋禁止長按/右鍵選取複製(user-select/touch-callout)，圖片也不能被拖曳/長按存 */
#homeScene *{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-touch-callout:none;}
#homeScene img{-webkit-user-drag:none;user-drag:none;}
#homeScene button,#homeScene .home-furn,#homeScene [data-action],#homeScene [data-rmnav],#homeScene [data-rmgo],#homeScene .rmn-dot{touch-action:manipulation;pointer-events:auto;-webkit-tap-highlight-color:transparent;}
#homeScene.show{display:flex;}
.home-header{display:flex;align-items:center;gap:10px;padding:calc(12px + env(safe-area-inset-top)) 14px 12px;position:relative;z-index:5;
  background:linear-gradient(#fffaf0,#f6ecd6);border-bottom:1.5px solid #e6d8ba;flex:none;}
.home-back{width:40px;height:40px;border:1.5px solid #e0d3b4;border-radius:12px;background:#fff;
  font-size:20px;cursor:pointer;line-height:1;color:#8a6a3a;flex:none;}
.home-back:active{transform:scale(.95);}
.home-titlewrap{flex:1;text-align:center;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;}
.home-title{font-size:16px;font-weight:900;color:#7a5220;text-align:center;line-height:1.15;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.home-sub{font-size:11px;font-weight:800;color:#a98d5e;text-align:center;line-height:1.1;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.home-sub:empty{display:none;}
.home-lv{font-size:12px;font-weight:900;color:#b4732a;background:#fff2d6;border:1.5px solid #ead7ae;
  border-radius:999px;padding:4px 10px;flex:none;min-width:42px;text-align:center;}

/* 視窗＋左右滑軌（每個 panel＝一間房、寬 100vw） */
.home-viewport{position:relative;flex:1;overflow:hidden;}
.home-track{display:flex;height:100%;will-change:transform;}
.home-panel{flex:0 0 100vw;width:100vw;height:100%;position:relative;}
.home-arrow{position:absolute;top:50%;transform:translateY(-50%);width:38px;height:52px;z-index:6;
  border:none;background:rgba(255,255,255,.66);color:#7a5220;font-size:26px;font-weight:900;cursor:pointer;
  border-radius:12px;line-height:1;box-shadow:0 2px 8px rgba(0,0,0,.12);}
.home-arrow.left{left:calc(env(safe-area-inset-left,0px) + 16px);} .home-arrow.right{right:calc(env(safe-area-inset-right,0px) + 16px);}
.home-arrow:active{transform:translateY(-50%) scale(.94);}
.home-arrow[hidden]{display:none;}
.home-dots{display:flex;justify-content:center;align-items:center;gap:7px;padding:9px 0 12px;flex:none;background:#f6ecd6;}
.home-dot{width:8px;height:8px;border-radius:50%;background:#d8c39a;transition:all .2s;}
.home-dot.active{background:#e0842c;width:20px;border-radius:999px;}
.home-dot.locked{opacity:.55;}

/* 房間底圖（日/夜，room_day/night.png 由 JS 內聯設定）＋家具絕對定位 */
.home-room{position:relative;width:100%;height:100%;overflow:hidden;background:#f3dfb6 center/cover no-repeat;}
/* 🚫 小屋物件不可被框選／長按複製（iOS 長按 img 的存檔選單、文字反白、拖曳複製） */
.home-room, .home-room *, .hv-realroom, .hv-realroom *{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-touch-callout:none;}
.home-room img, .hv-realroom img{-webkit-user-drag:none;user-drag:none;}
/* 🏠 多房間左右滑導覽 */
.room-nav{position:absolute;left:calc(env(safe-area-inset-left,0px) + 12px);top:10px;transform:none;display:flex;align-items:center;flex-wrap:nowrap;gap:6px;z-index:60;max-width:calc(100vw - 24px - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px));background:rgba(255,255,255,.9);border-radius:999px;padding:4px 6px 4px 10px;box-shadow:0 2px 8px rgba(120,90,60,.22);}
.rmn-dot{font-size:17px;opacity:.4;cursor:pointer;filter:grayscale(.5);transition:.15s;}
.rmn-dot.on{opacity:1;filter:none;transform:scale(1.18);}
.rmn-arrow{position:absolute;top:42%;z-index:60;width:50px;height:68px;border:none;border-radius:16px;background:rgba(255,255,255,.95);font-size:0;color:transparent;line-height:0;padding:0;cursor:pointer;box-shadow:0 3px 12px rgba(120,90,60,.3);display:flex;align-items:center;justify-content:center;}
/* 用 CSS 邊框畫「>」箭頭，永遠水平＋垂直置中（不受字型 glyph 偏移影響） */
.rmn-arrow::before{content:"";display:block;width:15px;height:15px;border-top:4px solid #c9901c;border-right:4px solid #c9901c;border-radius:2px;}
.rmn-next::before{transform:translateX(-3px) rotate(45deg);}
.rmn-prev::before{transform:translateX(3px) rotate(-135deg);}
.rmn-prev{left:6px;}
.rmn-next{right:6px;}
/* 🏠 房間導覽膠囊鈕（跟「🏖️ 海邊」同款、暖色系、顯示目標房名） */
.rmn-go{position:absolute;top:44%;z-index:30;border:1.5px solid #ead9b0;background:rgba(255,250,238,.94);color:#b5791e;font-weight:800;font-size:12.5px;padding:8px 12px;border-radius:999px;box-shadow:0 3px 10px rgba(150,110,40,.2);cursor:pointer;font-family:inherit;white-space:nowrap;}
.rmn-go:active{transform:scale(.95);}
.rmn-go.rmn-prev{left:calc(env(safe-area-inset-left,0px) + 6px);right:auto;}
.rmn-go.rmn-next{right:calc(env(safe-area-inset-right,0px) + 6px);left:auto;}
.home-alt-hint{position:absolute;left:50%;bottom:calc(58px + env(safe-area-inset-bottom));top:auto;transform:translateX(-50%);z-index:6;background:rgba(255,255,255,.9);border:1px solid #ead7ae;border-radius:999px;padding:4px 12px;font-size:11.5px;font-weight:800;color:#7a5a2a;white-space:nowrap;pointer-events:none;max-width:92%;overflow:hidden;text-overflow:ellipsis;}   /* 移到底部房間導覽上方＝避開瀏海與「🛠 佈置」鈕 */
body.room-editing .room-nav, body.room-editing .rmn-arrow, body.room-editing .rmn-go{display:none;}
/* 🛠 佈置中保留上方「快速選房」＝編輯時也能直接跳臥室（會先自動存這間） */
body.room-editing .room-top{z-index:70;}
/* 🏠 上方房間快速選擇列：避開 iPhone 瀏海（safe-area），一鍵直接跳房間 */
/* 🔵 房間快速移動：預設一顆小球（顯示所在），按了才展開清單＝不遮住小屋日記/打掃 */
.room-top{position:absolute;left:50%;transform:translateX(-50%);top:max(calc(env(safe-area-inset-top,0px) + 8px), 54px);z-index:61;display:flex;flex-direction:column;align-items:center;gap:6px;}
.rt-ball{border:none;background:rgba(255,255,255,.9);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border-radius:999px;padding:6px 13px;font-size:15px;font-weight:800;color:#8a6a45;box-shadow:0 2px 10px rgba(120,90,60,.22);cursor:pointer;font-family:inherit;white-space:nowrap;line-height:1;}
.rt-ball .rt-car{font-size:11px;transition:transform .2s;display:inline-block;}
.room-top.open .rt-ball .rt-car{transform:rotate(180deg);}
.rt-list{display:none;flex-wrap:wrap;justify-content:center;gap:6px;max-width:min(94vw, calc(100vw - 36px));background:rgba(255,255,255,.94);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border-radius:16px;padding:6px;box-shadow:0 6px 18px rgba(120,90,60,.28);}
.room-top.open .rt-list{display:flex;}
.rt-list button{flex:0 0 auto;border:none;background:transparent;font-size:13px;font-weight:800;color:#8a6a45;padding:6px 12px;border-radius:999px;cursor:pointer;white-space:nowrap;}
.rt-list button.on{background:#c9901c;color:#fff;}
.rt-list button.rt-beach{color:#1a86b0;}
.rt-list button.rt-beach:active,.rt-list button:active{background:#f0e2d4;}
/* 🏠 v0.60.606 左上房間控制整合：房名 ✎ ｜ 🚪 換房間 ▾ ＋ 下拉選單 */
.rmn-name{display:inline-flex;align-items:center;gap:3px;flex:0 1 auto;min-width:0;border:none;background:transparent;font-size:13px;font-weight:800;color:#5a4636;cursor:pointer;padding:2px 2px;}
.rmn-name .rmn-nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:34vw;}
.rmn-name .rmn-pen{flex:0 0 auto;font-style:normal;font-size:12px;color:#b09a78;}
.rmn-switch{flex:0 0 auto;border:none;background:#f3e7d3;border-radius:999px;padding:5px 11px;font-size:12.5px;font-weight:800;color:#8a6a45;cursor:pointer;font-family:inherit;white-space:nowrap;line-height:1;}
.rmn-switch:active{background:#ecdcc2;}
.rmn-switch .rmn-car{font-size:10px;display:inline-block;}
.room-nav .rn-menu{position:absolute;top:calc(100% + 6px);left:0;z-index:62;display:flex;flex-direction:column;gap:2px;min-width:150px;max-width:min(70vw,240px);max-height:52vh;overflow:auto;-webkit-overflow-scrolling:touch;background:rgba(255,255,255,.98);border:1px solid #ecd9c2;border-radius:14px;padding:6px;box-shadow:0 8px 22px rgba(120,90,60,.28);}
.room-nav .rn-item{border:none;background:transparent;text-align:left;padding:9px 12px;border-radius:10px;font-size:13.5px;font-weight:700;color:#7a5a3a;cursor:pointer;font-family:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.room-nav .rn-item.on{background:#f0e2d4;color:#8a5a1c;}
.room-nav .rn-item:active{background:#f5ede0;}
.room-nav .rn-item.rn-beach{color:#1a86b0;}
.room-nav .rn-sep{height:1px;background:#eee0cc;margin:4px 4px;}
.re-applyall{background:#fff3de!important;border:1px dashed #e0b56a!important;color:#c9901c!important;display:inline-flex;flex-direction:column;align-items:center;justify-content:center;font-weight:800;}
.re-applyall span{font-size:10px;line-height:1.15;margin-top:2px;}
/* 🏠 小屋節慶佈置：到節日掛在牆上/架上（x/y 為中心點，不擋點擊、柔和淡入） */
.home-festdeco{position:absolute;transform:translate(-50%,-50%);pointer-events:none;z-index:5;object-fit:contain;filter:drop-shadow(0 2px 4px rgba(60,50,30,.22));animation:homeDecoIn .6s ease-out both;}
@keyframes homeDecoIn{from{opacity:0;transform:translate(-50%,-44%)}to{opacity:1;transform:translate(-50%,-50%)}}
@media (prefers-reduced-motion:reduce){.home-festdeco{animation:none}}
/* 夜晚用 room_night.png（本身已暗），這裡只加很輕的藍色夜色統一氛圍 */
.home-room.night::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(20,28,70,.10),rgba(10,15,45,.16));}

/* 鎖定房（施工中，等房屋升級） */
.home-room.locked{display:flex;align-items:center;justify-content:center;background:linear-gradient(#efe0c2,#e4cfa2);}
.room-lock{text-align:center;padding:20px;}
.room-lock .rl-ic{font-size:54px;line-height:1;}
.room-lock .rl-t{font-size:18px;font-weight:900;color:#7a5220;margin-top:8px;}
.room-lock .rl-d{font-size:13px;color:#9a7c4c;font-weight:700;margin-top:6px;line-height:1.6;}
.room-lock .rl-badge{display:inline-block;margin-top:12px;background:#5a4632;color:#fff;font-size:12px;
  font-weight:900;padding:5px 13px;border-radius:999px;}

/* 鄰居房 */
.home-room.neighbor{background:linear-gradient(#fef6e4,#f6e7c8);}
.room-scroll{position:absolute;inset:0;overflow:auto;-webkit-overflow-scrolling:touch;padding:14px 14px 18px;}
.room-scroll .rs-title{font-size:15px;font-weight:900;color:#7a5220;text-align:center;margin-bottom:12px;}

/* 家具：落地(floor)站地板＋接地陰影；掛牆(wall)貼牆。 */
.home-furn{position:absolute;cursor:pointer;transition:transform .15s;z-index:2;}   /* z:2＝在地板/壁紙層(z1)之上，地板不再蓋住家具 */
.home-furn:active{transform:scale(.96);}
.home-furn img{width:100%;height:auto;display:block;pointer-events:none;position:relative;z-index:1;}
.home-furn.floor{filter:drop-shadow(0 4px 5px rgba(60,40,20,.26));}
.home-furn.floor::after{content:"";position:absolute;left:2%;right:2%;bottom:-7px;height:20px;z-index:0;   /* 🌅 v0.60.397 接觸陰影加大加柔＝更貼地、更有重量 */
  background:radial-gradient(52% 100% at 50% 0%,rgba(35,22,8,.34),rgba(35,22,8,0) 74%);filter:blur(1px);}
.home-furn.wall{z-index:1;filter:drop-shadow(0 4px 6px rgba(60,40,20,.16)) brightness(.96) saturate(.96);}   /* 🌅 牆面家具退到最後、略暗＝與地板家具拉出前後 */
/* 家具狀態小標（自己會說「我今天有事情」；不做紅點） */
.home-furn .furn-plate{position:absolute;left:50%;top:70%;transform:translate(-50%,-50%);font-size:14px;line-height:1.15;font-weight:900;color:#5a3c1c;background:linear-gradient(#fff6e0,#f3dfae);border:2px solid #caa25e;border-radius:6px;padding:2px 8px;max-width:150%;white-space:nowrap;pointer-events:none;box-shadow:0 2px 4px rgba(90,60,25,.28);text-shadow:0 1px 0 rgba(255,255,255,.6);letter-spacing:.5px;z-index:3;}
.home-furn .furn-plate.flip{transform:translate(-50%,-50%) scaleX(-1);}   /* 信箱翻轉時門牌字反向修正＝維持正讀 */
.home-furn .furn-badge{position:absolute;top:-8px;right:-4px;font-size:20px;z-index:3;pointer-events:none;
  filter:drop-shadow(0 1px 1px rgba(0,0,0,.28));animation:furnBadge 2s ease-in-out infinite;}
@keyframes furnBadge{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}

/* 🌅 2.5D 氛圍層（v0.60.397）：窗光斜射＋角落壓暗＋地板反光。純顯示、不擋點擊；
   beam/vignette 疊在家具之上(z40)、寵物(z41)與 UI(z60) 之下＝家具受光、寵物與按鈕保持鮮明。 */
.home-atmos{position:absolute;inset:0;pointer-events:none;overflow:hidden;}
.home-atmos>div{position:absolute;pointer-events:none;}
.atmos-sheen{left:0;right:0;bottom:0;height:42%;z-index:3;
  background:linear-gradient(180deg,rgba(255,241,208,.10),rgba(0,0,0,.10));}
.atmos-beam{top:0;right:0;width:66%;height:74%;z-index:40;mix-blend-mode:screen;filter:blur(3px);
  background:radial-gradient(120% 88% at 88% 4%,rgba(255,244,214,.50),rgba(255,244,214,0) 56%);}
.atmos-vignette{inset:0;z-index:40;
  background:radial-gradient(135% 100% at 78% 20%,rgba(0,0,0,0) 46%,rgba(30,18,5,.22) 100%);}
.home-room.night .atmos-beam{background:radial-gradient(120% 88% at 88% 4%,rgba(184,206,255,.26),rgba(184,206,255,0) 56%);}
.home-room.night .atmos-vignette{background:radial-gradient(135% 100% at 78% 20%,rgba(0,0,0,0) 40%,rgba(8,12,30,.34) 100%);}
body.room-editing .home-atmos{display:none;}   /* 佈置編輯時隱藏＝畫面乾淨、擺放看得準 */
/* 依 km 未解鎖的家具：仍在房間裡但稍微變淡，🔒 提示還沒開放 */
.home-furn.locked-func img{filter:saturate(.55) brightness(.95);opacity:.88;}

/* 窗外天氣小牌（每日小事） */
.home-wx{position:absolute;top:10px;right:calc(env(safe-area-inset-right,0px) + 10px);z-index:6;background:rgba(255,255,255,.82);
  border:1.5px solid #ead7ae;border-radius:999px;padding:4px 11px;font-size:12.5px;font-weight:900;
  color:#7a5220;box-shadow:0 2px 8px rgba(0,0,0,.1);}
/* 👣 主人累積步數＋寵物累積 km 小牌（移到左上角；兩行、各帶名字） */
.home-steps{position:absolute;top:10px;left:calc(env(safe-area-inset-left,0px) + 12px);z-index:6;background:rgba(255,255,255,.82);
  border:1.5px solid #ead7ae;border-radius:12px;padding:6px 11px;font-size:11.5px;font-weight:800;
  color:#7a5220;box-shadow:0 2px 8px rgba(0,0,0,.1);text-align:left;line-height:1.7;}
.home-steps b{color:#b4732a;font-weight:900;}

/* 🌱 菜園（左下角）：成長中顯示倒數；成熟時作物發光＋「！」可點收成 */
.home-garden{position:absolute;left:2%;bottom:6%;width:33%;z-index:4;cursor:pointer;}
.home-garden .hg-bed{width:100%;display:block;filter:drop-shadow(0 3px 3px rgba(60,40,20,.22));}
.home-garden .hg-crop{position:absolute;left:50%;bottom:40%;width:32%;transform:translateX(-50%);pointer-events:none;}
.home-garden.ripe .hg-crop{animation:hgGlow 1.7s ease-in-out infinite;}
@keyframes hgGlow{0%,100%{filter:drop-shadow(0 0 2px rgba(255,220,120,.55));}50%{filter:drop-shadow(0 0 11px rgba(255,214,90,1));}}
.home-garden .hg-bang{position:absolute;left:50%;top:-4%;transform:translateX(-50%);background:#e0842c;color:#fff;
  font-weight:900;font-size:15px;width:22px;height:22px;line-height:22px;text-align:center;border-radius:50%;
  box-shadow:0 2px 6px rgba(0,0,0,.28);animation:hgBang 1s ease-in-out infinite;pointer-events:none;}
@keyframes hgBang{0%,100%{transform:translateX(-50%) translateY(0);}50%{transform:translateX(-50%) translateY(-3px);}}
.home-garden .hg-timer{position:absolute;left:50%;top:-6%;transform:translateX(-50%);white-space:nowrap;
  background:rgba(255,255,255,.9);border:1.5px solid #ead7ae;border-radius:999px;padding:2px 9px;font-size:11.5px;
  font-weight:900;color:#7a5220;box-shadow:0 2px 6px rgba(0,0,0,.12);pointer-events:none;opacity:.72;}   /* 稍微透明，不擋畫面 */

/* 房間裡的寵物 */
.home-pet{position:absolute;left:50%;bottom:8%;width:30%;transform:translateX(-50%);transform-origin:bottom center;z-index:41;pointer-events:auto;cursor:pointer;}   /* 寵物永遠在家具之上(z41>家具/擺設上限30)；放大(原 22%)；景深縮放以腳底為基準 */
.home-pet img{width:100%;display:block;filter:drop-shadow(0 8px 8px rgba(0,0,0,.18));}
/* 🐾 寵物演出引擎（②）：閒置微呼吸、走動時上下小彈（朝向翻面靠 img inline scaleX，不與此衝突） */
.home-pet .pet-inner{display:block;animation:petBreathe 3.6s ease-in-out infinite;}
/* 🐾 做客客人（Phase 1）：會走動的活寵物＋頭上關係稱號 */
.home-guest{position:absolute;width:26%;transform:translateX(-50%);transform-origin:bottom center;z-index:41;pointer-events:none;}   /* 做客寵物永遠在家具之上(z41)；放大(原 18%)；景深縮放以腳底為基準 */
.home-guest img{width:100%;display:block;filter:drop-shadow(0 6px 6px rgba(0,0,0,.16));}
.home-guest .pet-inner{display:block;animation:petBreathe 3.9s ease-in-out infinite;}
.home-guest.walking .pet-inner{animation:none;}
.home-guest .guest-title{position:absolute;left:50%;top:-18px;transform:translateX(-50%);white-space:nowrap;background:rgba(255,255,255,.92);border:1px solid #ead7ae;border-radius:999px;padding:2px 8px;font-size:10px;font-weight:800;color:#7a5220;box-shadow:0 2px 6px rgba(120,90,60,.2);pointer-events:none;}
.home-guest .guest-say{position:absolute;left:50%;top:-42px;transform:translateX(-50%) translateY(4px);width:max-content;max-width:150px;white-space:normal;text-align:center;background:#fffdf7;border:1px solid #ead7ae;border-radius:12px;padding:4px 9px;font-size:11px;font-weight:700;color:#5a4636;line-height:1.4;box-shadow:0 3px 9px rgba(120,90,60,.22);pointer-events:none;opacity:0;transition:opacity .2s,transform .2s;z-index:7;}
.home-guest .guest-say.show{opacity:1;transform:translateX(-50%) translateY(0);}
/* 🗨 家具講話泡泡：出現在家具當下位置上方（跟著搬移） */
.home-room .furn-say{position:absolute;transform:translate(-50%,-100%);width:max-content;max-width:52%;white-space:normal;text-align:center;background:rgba(255,255,255,.95);border:1px solid #ead7ae;border-radius:12px;padding:5px 10px;font-size:12px;font-weight:700;color:#5a4636;line-height:1.4;box-shadow:0 3px 10px rgba(120,90,60,.22);pointer-events:none;opacity:0;transition:opacity .18s;z-index:44;}
.home-room .furn-say.show{opacity:1;}
/* 📨 做客邀請卡 */
.guest-invite{position:fixed;inset:0;z-index:1300;display:flex;align-items:center;justify-content:center;background:rgba(40,30,20,.38);opacity:0;transition:opacity .2s;padding:24px;}   /* z-index 需高於小屋 #homeScene(1200)＝邀請卡才會顯示在小屋之上，否則被小屋蓋住、離開小屋才露出浮在寵物頁 */
.guest-invite.show{opacity:1;}
.guest-invite .gi-box{background:#fffdf7;border-radius:20px;padding:20px 20px 16px;max-width:320px;width:100%;text-align:center;box-shadow:0 12px 40px rgba(80,55,30,.3);transform:translateY(8px);transition:transform .2s;}
.guest-invite.show .gi-box{transform:none;}
.guest-invite .gi-pet{font-size:46px;line-height:1;margin-bottom:8px;}
.guest-invite .gi-txt{font-size:15px;color:#5a4636;font-weight:700;line-height:1.6;margin-bottom:14px;}
.guest-invite .gi-txt b{color:#b5622a;}
.guest-invite .gi-row{display:flex;gap:10px;}
.guest-invite .gi-row button{flex:1;border:none;border-radius:999px;padding:11px 0;font-size:15px;font-weight:800;cursor:pointer;font-family:inherit;}
.guest-invite .gi-no{background:#f0e2d4;color:#8a6a4a;}
.guest-invite .gi-yes{background:#6fc28b;color:#fff;}
.guest-invite .gi-yes:disabled{opacity:.6;}
/* 📖 做客紀錄入口鈕（小屋右上、天氣 chip 下方） */
.guestlog-btn{position:absolute;left:calc(env(safe-area-inset-left,0px) + 12px);top:52px;z-index:30;border:1.5px solid #ead7ae;background:rgba(255,255,255,.92);color:#7a5220;font-weight:800;font-size:12px;padding:6px 11px;border-radius:999px;box-shadow:0 2px 8px rgba(120,90,60,.18);cursor:pointer;font-family:inherit;}
body.room-editing .guestlog-btn{display:none;}
/* 🏠 房間舒適度：整潔度徽章（左上、km 下方）＋ 打掃鈕（右側、小屋日記下方） */
/* 📨 小屋入口「有寵物想做客」紅點 */
.home-invite-dot{position:absolute;top:-6px;right:-6px;z-index:8;width:28px;height:28px;font-size:16px;display:flex;align-items:center;justify-content:center;background:#ff5a7a;border:2px solid #fff;border-radius:999px;box-shadow:0 2px 7px rgba(200,40,80,.45);animation:homeInvitePulse 1.4s ease-in-out infinite;pointer-events:none;}
@keyframes homeInvitePulse{0%,100%{transform:scale(1)}50%{transform:scale(1.14)}}
.home-comfort{position:absolute;top:44px;left:calc(env(safe-area-inset-left,0px) + 12px);z-index:6;background:rgba(255,255,255,.85);border:1px solid #ead7ae;border-radius:999px;padding:3px 10px;font-size:11px;font-weight:800;color:#6a7a4a;white-space:nowrap;box-shadow:0 2px 6px rgba(120,90,60,.18);pointer-events:none;max-width:70%;overflow:hidden;text-overflow:ellipsis;}
.home-cleanbtn{position:absolute;right:calc(env(safe-area-inset-right,0px) + 10px);top:52px;z-index:30;border:1.5px solid #cfe6c0;background:rgba(255,255,255,.94);color:#4a8a3a;font-weight:800;font-size:12px;padding:6px 11px;border-radius:999px;box-shadow:0 2px 8px rgba(120,90,60,.18);cursor:pointer;font-family:inherit;}
/* 🌊 客廳左緣「往海邊」入口：貼左邊、垂直置中，暗示往左走出去 */
.beach-go{position:absolute;left:calc(env(safe-area-inset-left,0px) + 6px);top:44%;z-index:30;border:1.5px solid #bfe6f2;background:rgba(240,251,255,.92);color:#1f7fa0;font-weight:800;font-size:12.5px;padding:8px 12px;border-radius:999px;box-shadow:0 3px 10px rgba(30,120,160,.2);cursor:pointer;font-family:inherit;animation:beachGoPulse 2.6s ease-in-out infinite;}
.beach-go:active{transform:scale(.95)}
@keyframes beachGoPulse{0%,100%{transform:translateX(0)}50%{transform:translateX(-3px)}}
body.room-editing .beach-go{display:none}
.home-cleanbtn:active{transform:scale(.96);}
body.room-editing .home-comfort, body.room-editing .home-cleanbtn{display:none;}
/* 📖 做客紀錄視窗 */
.guest-log{position:fixed;inset:0;z-index:61;display:flex;align-items:center;justify-content:center;background:rgba(40,30,20,.42);opacity:0;transition:opacity .2s;padding:20px;}
.guest-log.show{opacity:1;}
.guest-log .gl-box{background:#fffdf7;border-radius:18px;width:100%;max-width:360px;max-height:80vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 12px 40px rgba(80,55,30,.3);transform:translateY(8px);transition:transform .2s;}
.guest-log.show .gl-box{transform:none;}
.guest-log .gl-hd{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;font-size:16px;font-weight:900;color:#7a5220;border-bottom:1px solid #f0e2d4;}
.guest-log .gl-x{border:none;background:#f0e2d4;color:#8a6a4a;width:30px;height:30px;border-radius:50%;font-size:15px;cursor:pointer;font-weight:800;}
.guest-log .gl-tabs{display:flex;gap:6px;padding:10px 14px 0;}
.guest-log .gl-tab{flex:1;border:1.5px solid #f0d9c4;background:#fff;border-radius:999px;padding:7px 6px;font-size:13px;font-weight:800;color:#8a6a4a;cursor:pointer;font-family:inherit;}
.guest-log .gl-tab.on{background:#ff8fb1;color:#fff;border-color:#ff8fb1;}
.guest-log .gl-body{padding:12px 14px 16px;overflow-y:auto;}
.guest-log .gl-memo{font-size:14px;color:#5a4636;font-weight:700;margin-top:2px;line-height:1.5;}
.guest-log .gl-stat{text-align:center;font-size:14px;font-weight:800;color:#5a4636;margin-bottom:12px;}
.guest-log .gl-stat b{color:#b5622a;font-size:17px;}
.guest-log .gl-card{border:1px solid #f0e2d4;border-radius:12px;padding:10px 12px;margin-bottom:9px;background:#fffefb;}
.guest-log .gl-name{font-size:14px;font-weight:800;color:#5a4636;}
.guest-log .gl-first{background:#ffe6b8;color:#b5622a;font-size:10px;font-weight:800;border-radius:999px;padding:1px 7px;margin-left:4px;}
.guest-log .gl-meta{font-size:12px;color:#8a7358;margin-top:3px;}
.guest-log .gl-acts{font-size:11.5px;color:#8fa06a;margin-top:3px;font-weight:700;}
.guest-log .gl-cur-title{font-size:12.5px;font-weight:900;color:#9a7a4a;margin:4px 2px 8px;}
.guest-log .gl-card.gl-cur{background:#fff8ec;border-color:#f0d9a8;}
.guest-log .gl-card.gl-cur .gl-meta b{color:#b5622a;}
.guest-log .gl-bye{margin-top:8px;border:1px solid #e7b7a0;background:#fff;color:#b5622a;border-radius:999px;padding:5px 12px;font-size:12px;font-weight:800;cursor:pointer;font-family:inherit;}
.guest-log .gl-bye:disabled{opacity:.5;cursor:default;}
/* 💭 v0.60.610 小屋回憶・回憶卡改版（純顯示） */
.guest-log .mem-sect{font-size:12px;font-weight:800;color:#9a7a4a;margin:12px 2px 7px;}
.guest-log .mem-sect:first-child{margin-top:2px;}
.guest-log .mem-today{display:flex;gap:11px;align-items:flex-start;background:linear-gradient(160deg,#fff6ec,#ffeef1);border:1.5px solid #f2d3c2;border-radius:15px;padding:13px 14px;margin-bottom:4px;}
.guest-log .mem-today .mt-em{font-size:27px;line-height:1.05;}
.guest-log .mem-today .mt-t1{font-size:16px;font-weight:900;color:#5a4636;line-height:1.35;}
.guest-log .mem-today .mt-t2{font-size:12.5px;color:#7a6a53;margin-top:3px;line-height:1.5;}
.guest-log .mem-card{display:flex;gap:10px;align-items:flex-start;background:#fffefb;border:1px solid #f0e2d4;border-radius:13px;padding:10px 12px;margin-bottom:8px;}
.guest-log .mem-card .mc-dt{min-width:48px;font-size:11px;color:#8a7358;padding-top:3px;font-weight:700;}
.guest-log .mem-card .mc-em{font-size:20px;line-height:1.1;}
.guest-log .mem-card .mc-tx{flex:1;}
.guest-log .mem-card .mc-t1{font-size:14px;font-weight:800;color:#5a4636;line-height:1.35;}
.guest-log .mem-card .mc-t2{font-size:12px;color:#8a7358;margin-top:2px;line-height:1.45;}
.guest-log .mem-star{display:inline-block;background:#fff6dd;border:1px solid #ecd08a;color:#a9791b;border-radius:999px;font-size:10px;font-weight:800;padding:1px 7px;margin-left:5px;vertical-align:middle;}
/* 🐾 同步行為：兩隻一起點頭 */
.home-guest.gsync .pet-inner{animation:gsyncNod .5s ease 2;}
@keyframes gsyncNod{0%,100%{transform:translateY(0)}40%{transform:translateY(-8%)}}
/* 🎁 客人留下的紀念物（牆角小收藏） */
.home-keepsakes{position:absolute;left:2.5%;top:29%;display:flex;flex-wrap:wrap;gap:1px;max-width:15%;z-index:4;}
.home-keepsakes .ks{font-size:17px;line-height:1.15;cursor:pointer;filter:drop-shadow(0 2px 2px rgba(80,55,30,.2));transition:transform .12s;}
.home-keepsakes .ks:active{transform:scale(1.25);}
body.room-editing .home-keepsakes{display:none;}
/* 🧹 v0.60.595 編輯模式畫面淨化：只補「尚未隱藏」的浮層與寵物名牌；不 display:none 整隻寵物、不改位置/z/資料 */
body.room-editing .home-wx,
body.room-editing .home-greet,
body.room-editing .home-trace,
body.room-editing .furn-say,
body.room-editing .home-zzz,
body.room-editing .home-guest .guest-title,
body.room-editing .home-guest .guest-say{display:none!important}   /* 天氣提示(窗外毛毛雨)/招呼語/足跡/說話泡泡/睡覺特效/訪客名牌(含「陌生」) */
body.room-editing #homeTrack .home-pet,
body.room-editing #homeTrack .home-guest{opacity:.7;pointer-events:none!important;transition:opacity .2s}   /* 寵物留作比例參考：降透明、不可點（不隱藏整隻） */
body.room-editing #homeTrack .home-pet .pet-inner,
body.room-editing #homeTrack .home-guest .pet-inner{animation:none!important}   /* 暫停呼吸動畫（走動另由 JS 於編輯時暫停排程） */
/* 📮 信箱皮膚選擇器 */
.mbx-picker{position:fixed;inset:0;z-index:9000;display:flex;align-items:center;justify-content:center;background:rgba(40,30,20,.42);opacity:0;transition:opacity .2s;padding:20px;}
.mbx-picker.show{opacity:1;}
.mbx-picker .mp-box{background:#fffdf7;border-radius:18px;width:100%;max-width:360px;max-height:80vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 12px 40px rgba(80,55,30,.3);transform:translateY(8px);transition:transform .2s;}
.mbx-picker.show .mp-box{transform:none;}
.mbx-picker .mp-hd{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;font-size:16px;font-weight:900;color:#7a5220;border-bottom:1px solid #f0e2d4;}
.mbx-picker .mp-x{border:none;background:#f0e2d4;color:#8a6a4a;width:30px;height:30px;border-radius:50%;font-size:15px;cursor:pointer;font-weight:800;}
.mbx-picker .mp-grid{padding:12px 14px 16px;overflow-y:auto;display:grid;grid-template-columns:repeat(3,1fr);gap:9px;}
.mbx-picker .mp-tile{border:2px solid #f0e2d4;background:#fffefb;border-radius:12px;padding:6px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:3px;font-family:inherit;}
.mbx-picker .mp-tile.on{border-color:#ff8fb1;background:#fff3f6;}
.mbx-picker .mp-tile img{width:100%;height:56px;object-fit:contain;}
.mbx-picker .mp-tile{position:relative;}
.mbx-picker .mp-tile span{font-size:11px;font-weight:700;color:#5a4636;}
.mbx-picker .mp-tile.locked{opacity:.5;filter:grayscale(.5);}
.mbx-picker .mp-lock{position:absolute;top:4px;right:5px;font-size:14px;}
.mbx-picker .mp-hint{font-size:11.5px;color:#a89a80;text-align:center;padding:0 14px 14px;}
/* 👋 告別演出卡片 */
.guest-farewell{position:fixed;inset:0;z-index:62;display:flex;align-items:center;justify-content:center;background:rgba(40,30,20,.34);opacity:0;transition:opacity .25s;padding:24px;pointer-events:none;}
.guest-farewell.show{opacity:1;}
.guest-farewell .gf-box{background:#fffdf7;border-radius:20px;padding:22px 22px 18px;max-width:300px;text-align:center;box-shadow:0 12px 40px rgba(80,55,30,.3);transform:translateY(10px);transition:transform .25s;}
.guest-farewell.show .gf-box{transform:none;}
.guest-farewell .gf-pet{font-size:52px;line-height:1;margin-bottom:8px;position:relative;display:inline-block;}
.guest-farewell .gf-wave{position:absolute;right:-14px;top:-2px;font-size:26px;transform-origin:70% 90%;animation:gfWave 0.7s ease-in-out infinite;}
@keyframes gfWave{0%,100%{transform:rotate(-12deg)}50%{transform:rotate(18deg)}}
.guest-farewell .gf-txt{font-size:15px;color:#5a4636;font-weight:700;line-height:1.7;}
.guest-farewell .gf-txt b{color:#b5622a;}
.home-pet.walking .pet-inner{animation:petWalkBob .32s ease-in-out infinite;}
/* 🐾 點寵物→開心跳一下（④ 即時互動） */
.home-pet.poking .pet-inner{animation:petHop .5s ease;}
/* 🐾 拜訪互動的寵物反饋小圖示（冒愛心/道具往上飄） */
.home-pet .hv-react{position:absolute;top:-4%;font-size:22px;line-height:1;pointer-events:none;z-index:50;will-change:transform,opacity;animation:hvReact 1.35s ease-out forwards;}
@keyframes hvReact{0%{opacity:0;transform:translate(-50%,8px) scale(.5)}18%{opacity:1;transform:translate(-50%,0) scale(1.15)}100%{opacity:0;transform:translate(-50%,-52px) scale(1)}}
@keyframes petBreathe{0%,100%{transform:translateY(0);}50%{transform:translateY(-2px);}}
@keyframes petWalkBob{0%,100%{transform:translateY(0);}50%{transform:translateY(-3px);}}
@keyframes petHop{0%{transform:translateY(0);}30%{transform:translateY(-14px);}55%{transform:translateY(0);}78%{transform:translateY(-5px);}100%{transform:translateY(0);}}
/* 睡覺 Zzz 特效：在寵物頭邊飄上去淡出 */
.home-zzz{position:absolute;width:15%;z-index:6;pointer-events:none;animation:homeZzz 2.4s ease-out forwards;}
@keyframes homeZzz{0%{opacity:0;transform:translateY(8px) scale(.6);}18%{opacity:1;}100%{opacity:0;transform:translateY(-34px) scale(1.08);}}

/* 家具說明泡泡 */
.home-say{position:absolute;left:50%;bottom:34%;transform:translateX(-50%);z-index:46;
  width:max-content;max-width:78%;background:#fff;border:2px solid #ead7ae;border-radius:16px;padding:11px 16px;
  font-size:16px;font-weight:800;color:#4a3312;box-shadow:0 6px 18px rgba(0,0,0,.16);
  opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;}
.home-say.show{opacity:1;transform:translateX(-50%) translateY(-6px);}
/* 🛠 v0.60.607 佈置模式：說明泡泡移到上方（在標題/浮條下、房間中上），結構上就不可能被底部工具列蓋，任何 iPhone 高度都不重疊 */
body.room-editing .home-say{bottom:auto;top:calc(env(safe-area-inset-top,0px) + 112px);max-width:88%;}
body.room-editing .home-say.show{transform:translateX(-50%) translateY(0);}

/* 🏡 進房招呼句（v1）：小萌在門口講「昨天誰來過」；暖色泡泡、可點掉、輕彈入（純 CSS 動畫） */
.home-greet{position:absolute;left:50%;bottom:36%;transform:translateX(-50%) translateY(10px) scale(.92);
  z-index:22;max-width:82%;background:linear-gradient(#fffdf6,#fff3d9);border:2px solid #f0d79a;
  border-radius:18px;padding:12px 34px 12px 16px;font-size:15.5px;font-weight:800;color:#5a3f1a;
  line-height:1.5;box-shadow:0 8px 22px rgba(120,80,20,.22);cursor:pointer;
  opacity:0;pointer-events:none;transition:opacity .28s,transform .28s cubic-bezier(.2,1.3,.4,1);}
.home-greet.show{opacity:1;pointer-events:auto;transform:translateX(-50%) translateY(0) scale(1);}
.home-greet::after{content:"";position:absolute;left:50%;bottom:-9px;transform:translateX(-50%);
  width:0;height:0;border-left:9px solid transparent;border-right:9px solid transparent;border-top:10px solid #fff3d9;}
.home-greet .hgr-x{position:absolute;top:5px;right:10px;font-size:15px;color:#b79a63;font-weight:900;line-height:1;}

/* 🏡 拜訪痕跡實體化（③）：鄰居留下的動作 → 房間裡可點的小物件（門口禮物盒/花圃留言牌…）；純 emoji＋CSS 動畫 */
.home-trace{position:absolute;z-index:7;cursor:pointer;font-size:26px;line-height:1;
  filter:drop-shadow(0 3px 4px rgba(60,40,20,.28));}
.home-trace .tr-ic{display:block;}
.home-trace .tr-spark{position:absolute;top:-9px;right:-11px;font-size:12px;pointer-events:none;
  animation:trSpark 1.9s ease-in-out infinite;}
@keyframes trSpark{0%,100%{opacity:.3;transform:scale(.8);}50%{opacity:1;transform:scale(1.15);}}
.tr-bob{animation:trBob 2.4s ease-in-out infinite;}
@keyframes trBob{0%,100%{transform:translateY(0);}50%{transform:translateY(-4px);}}
.tr-float{animation:trFloat 3s ease-in-out infinite;}
@keyframes trFloat{0%,100%{transform:translateY(0) rotate(-5deg);}50%{transform:translateY(-6px) rotate(5deg);}}
.tr-drip{animation:trDrip 2.1s ease-in-out infinite;}
@keyframes trDrip{0%,100%{transform:translateY(0);opacity:.85;}50%{transform:translateY(2px);opacity:1;}}
@media (max-width:360px){.home-trace{font-size:22px;}}

/* 入口 gating 覆蓋層（鎖定／神祕包裹／地契／首次事件） */
.home-gate{position:absolute;inset:0;z-index:30;display:flex;align-items:center;justify-content:center;
  background:radial-gradient(120% 80% at 50% 30%,#fff6e6,#f0dcb6);text-align:center;padding:24px;}
.home-gate[hidden]{display:none;}
.hg-inner{max-width:340px;position:relative;}
.hg-img{width:min(56vw,240px);height:auto;display:block;margin:0 auto 14px;filter:drop-shadow(0 8px 12px rgba(80,55,30,.22));}
.hg-pack{cursor:pointer;animation:hgWobble 1.6s ease-in-out infinite;}
@keyframes hgWobble{0%,100%{transform:rotate(-3deg)}50%{transform:rotate(3deg)}}
.hg-t{font-size:21px;font-weight:900;color:#7a5220;}
.hg-d{font-size:14.5px;color:#8a6a3a;font-weight:700;margin-top:8px;line-height:1.7;white-space:pre-line;}
.hg-note{font-size:13px;color:#a06a2a;font-weight:800;margin-top:10px;}
.hg-btn{margin-top:18px;font-size:16px;font-weight:900;color:#fff;background:#e0842c;border:none;
  border-radius:14px;padding:12px 22px;cursor:pointer;box-shadow:0 5px 14px rgba(224,132,44,.4);}
.hg-btn:active{transform:scale(.96);}
.hg-btn:disabled{background:#d8c4a4;box-shadow:none;}
.hg-sparkle{position:absolute;inset:0;pointer-events:none;font-size:40px;display:flex;align-items:center;justify-content:center;opacity:0;}
.home-gate.reveal .hg-sparkle{animation:hgSpark 1s ease;}
@keyframes hgSpark{0%{opacity:0;transform:scale(.4)}40%{opacity:1;transform:scale(1.2)}100%{opacity:0;transform:scale(1.9)}}

/* ── 社交面板：拜訪清單／留言板 ── */
#homeSocial{position:absolute;inset:0;z-index:40;display:none;}
#homeSocial.show{display:block;}
#homeSocial::before{content:"";position:absolute;inset:0;background:rgba(30,20,10,.34);}
.hs-sheet{position:absolute;left:0;right:0;bottom:0;max-height:82%;display:flex;flex-direction:column;
  box-sizing:border-box;max-width:100vw;overflow:hidden;
  background:#fffaf0;border-top-left-radius:20px;border-top-right-radius:20px;
  box-shadow:0 -8px 30px rgba(0,0,0,.22);animation:hsUp .26s cubic-bezier(.2,.7,.3,1);}
@keyframes hsUp{from{transform:translateY(100%);}to{transform:translateY(0);}}
.hs-head{display:flex;align-items:center;gap:8px;padding:12px 14px;border-bottom:1.5px solid #efe1c4;flex:none;
  box-sizing:border-box;padding-left:calc(14px + env(safe-area-inset-left));padding-right:calc(14px + env(safe-area-inset-right));}
.hs-title{font-size:17px;font-weight:900;color:#7a5220;flex:1;min-width:0;text-align:center;}
.hs-back,.hs-close{width:36px;height:36px;border:1.5px solid #e6d6b4;border-radius:11px;background:#fff;
  font-size:17px;cursor:pointer;color:#8a6a3a;line-height:1;}
.hs-back:active,.hs-close:active{transform:scale(.95);}
.hs-back{visibility:hidden;}
.hs-body{padding:12px 14px 18px;box-sizing:border-box;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:none;
  padding-left:calc(14px + env(safe-area-inset-left));padding-right:calc(14px + env(safe-area-inset-right));padding-bottom:calc(18px + env(safe-area-inset-bottom));}
.hs-body::-webkit-scrollbar{display:none;}   /* v0.60.150 信箱面板隱藏捲軸（仍可觸控上下滑），解「多了捲軸」 */

/* 鄰居清單 */
.hs-hint{font-size:13px;color:#a98d5e;font-weight:700;text-align:center;padding:18px 6px;}
/* 📮 信箱分頁（禮物/誰來我家/鄰居小屋/留言）＝頁面不再全部展開太長 */
.hs-body .mb-tabs{position:sticky;top:-12px;z-index:8;display:flex;gap:6px;background:#fffdf9;margin:-12px -14px 10px;padding:10px 14px 8px;border-bottom:1px solid #f0e2d4;}
.hs-body .mb-tab{flex:1 1 0;white-space:nowrap;border:1.5px solid #f0d9c4;background:#fff;border-radius:999px;padding:8px 6px;font-size:12.5px;font-weight:800;color:#8a6a4a;cursor:pointer;font-family:inherit;position:relative;}
.hs-body .mb-tab.on{background:#ff8fb1;color:#fff;border-color:#ff8fb1;}
.hs-body .mb-tab .mb-dot{position:absolute;top:5px;right:8px;width:8px;height:8px;border-radius:50%;background:#e5443b;border:1.5px solid #fff;}
.hs-body .mb-pane[hidden]{display:none;}
.hs-house{display:flex;align-items:center;gap:12px;padding:11px 12px;margin-bottom:9px;
  background:#fff;border:1.5px solid #eee0c2;border-radius:14px;cursor:pointer;}
.hs-house:active{transform:scale(.99);}
.hs-house .hs-ava{width:44px;height:44px;font-size:30px;line-height:44px;text-align:center;
  background:#fbeecd;border-radius:12px;flex:none;overflow:hidden;}
.hs-house .hs-ava img{width:100%;height:100%;object-fit:contain;object-position:center bottom;display:block;}
.hs-house .hs-info{flex:1;min-width:0;}
.hs-house .hs-name{font-size:15px;font-weight:900;color:#5a3d16;}
.hs-house .hs-sub{font-size:12px;color:#a98d5e;font-weight:700;}
.hs-house .hs-dot{width:9px;height:9px;border-radius:50%;background:#43c463;flex:none;
  box-shadow:0 0 0 3px rgba(67,196,99,.18);}
/* 🏘 鄰居拜訪動作列（留言／按讚／澆水） */
.hs-house{margin-bottom:0;}
.hs-acts{display:flex;gap:8px;margin:-3px 0 11px;padding:0 2px;}
.hs-acts button{flex:1;padding:8px 4px;border:1.5px solid #eaddc0;border-radius:11px;background:#fbf5e8;
  color:#7a5a2a;font-weight:800;font-size:13px;font-family:inherit;cursor:pointer;transition:.12s;}
.hs-acts button:active{transform:scale(.96);}
.hs-acts button:disabled{opacity:.6;color:#c9648a;background:#fdeef3;border-color:#f2d3de;cursor:default;}
/* 🏡 拜訪卡（看鄰居的家） */
.hv-card{background:linear-gradient(180deg,#fff8ec,#fdf0da);border:1.5px solid #eddcb8;border-radius:18px;
  padding:18px 14px 16px;text-align:center;margin-bottom:10px;}
.hv-card .hv-pet{font-size:60px;line-height:1;filter:drop-shadow(0 4px 5px rgba(90,60,20,.18));}
.hv-card .hv-name{font-size:18px;font-weight:900;color:#5a3d16;margin-top:8px;}
.hv-card .hv-petname{font-size:13.5px;font-weight:800;color:#a9814a;margin-top:2px;}
.hv-card .hv-stats{display:flex;justify-content:center;gap:8px;flex-wrap:wrap;margin-top:12px;}
.hv-card .hv-stats span{background:#fff;border:1.5px solid #eddcb8;border-radius:999px;padding:5px 12px;
  font-size:13px;font-weight:800;color:#7a5a2a;}
.hv-card .hv-garden{margin-top:11px;font-size:13.5px;font-weight:800;color:#3f8a52;}
.hv-acts{margin-top:0;}

/* 留言板 */
.hs-msgs-title{font-size:12.5px;font-weight:800;color:#9a7a4a;margin:6px 2px 8px;}
.hs-msgs{display:flex;flex-direction:column;gap:8px;margin-bottom:14px;}
.hs-msg{background:#fff;border:1.5px solid #eee0c2;border-radius:12px;padding:9px 12px;}
.hs-msg .m-top{display:flex;justify-content:space-between;gap:8px;margin-bottom:2px;}
.hs-msg .m-who{font-size:13px;font-weight:900;color:#7a5220;}
.hs-msg .m-time{font-size:11px;color:#b6a079;font-weight:700;flex:none;}
.hs-msg .m-body{font-size:15px;color:#4a3312;font-weight:600;word-break:break-word;}
.hs-empty{text-align:center;color:#a98d5e;font-weight:700;font-size:13px;padding:16px 6px;}
.hs-canned{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:10px;}
.hs-canned button{font-size:13px;font-weight:800;color:#7a5220;background:#fdf3dd;
  border:1.5px solid #ead7ae;border-radius:999px;padding:7px 13px;cursor:pointer;}
.hs-canned button:active{transform:scale(.96);background:#f6e6bf;}
.hs-compose{display:flex;gap:8px;box-sizing:border-box;}
.hs-compose input{flex:1;min-width:0;box-sizing:border-box;font-size:15px;padding:10px 12px;border:1.5px solid #e6d6b4;border-radius:12px;
  background:#fff;color:#4a3312;}
.hs-compose button{flex:none;}
.hs-compose button{font-size:15px;font-weight:900;color:#fff;background:#e07a2a;border:none;
  border-radius:12px;padding:10px 16px;cursor:pointer;}
.hs-compose button:active{transform:scale(.96);}
.hs-compose button:disabled{background:#d8c4a4;}

/* 眨眼轉場：上下眼皮 */
#blinkLids{position:fixed;inset:0;z-index:3000;pointer-events:none;}
#blinkLids .lid{position:absolute;left:0;right:0;height:53%;background:#171009;}
#blinkLids .lid.top{top:0;transform:translateY(-100%);}
#blinkLids .lid.bot{bottom:0;transform:translateY(100%);}
#blinkLids.anim .lid{transition:transform .3s cubic-bezier(.5,0,.5,1);}
#blinkLids.closed .lid.top{transform:translateY(0);}
#blinkLids.closed .lid.bot{transform:translateY(0);}

/* ══ 🌦 窗外天氣特效（v1・純 CSS 動畫、零 egress）══
   依 <body data-weather> 由 home.js 在窗戶區（左上）掛 .home-window.wx-<kind>；
   柔邊遮罩＝不同手機 cover 裁切或被家具擋住時也不露硬邊；粒子純 CSS、無新圖、遵流量聖經。
   ★因窗景本身很亮，天氣「色調 tint」是主要訊號（永遠看得到），粒子為輔（加深＋陰影才讀得出）。 */
.home-window{position:absolute;left:9%;top:5%;width:35%;height:34%;z-index:3;pointer-events:none;overflow:hidden;border-radius:14px;
  -webkit-mask-image:radial-gradient(130% 120% at 48% 42%,#000 58%,transparent 84%);
          mask-image:radial-gradient(130% 120% at 48% 42%,#000 58%,transparent 84%);}
.home-window span{position:absolute;display:block;pointer-events:none;}

/* 🪟 v0.60.268 真窗戶＝獨立圖層：窗外天空(依天氣) 疊 透明窗框。與天氣特效層(.home-window)同一窗區、特效粒子在上(z3) */
.home-room .home-win{position:absolute;left:8%;top:8%;width:37%;aspect-ratio:1/1;z-index:2;pointer-events:none;}
.home-room .home-win .win-sky{position:absolute;left:11%;right:11%;top:10%;bottom:15%;background-position:center;background-size:cover;background-repeat:no-repeat;border-radius:6px;box-shadow:inset 0 0 10px rgba(0,0,0,.10);}
.home-room .home-win .win-frame{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;object-position:center;filter:drop-shadow(0 2px 4px rgba(80,55,30,.22));}
.home-room .home-win.win-round .win-sky{left:15%;right:15%;top:13%;bottom:17%;border-radius:50%;}
/* 🌦 天氣粒子層放進窗戶內：填滿窗框、跟著窗戶移動、夾在天空與窗框之間 */
.home-room .home-win .home-window{position:absolute!important;inset:0!important;left:0!important;top:0!important;width:100%!important;height:100%!important;z-index:1;border-radius:8px;}
.home-room .home-win .win-frame{z-index:2}
.home-room .home-win.win-round .home-window{-webkit-mask-image:radial-gradient(circle at 50% 46%,#000 60%,transparent 72%);mask-image:radial-gradient(circle at 50% 46%,#000 60%,transparent 72%)}
/* 🎀 窗簾＝獨立圖層，掛在窗戶上方、略寬於窗框 */
.home-room .home-win .win-curtain{position:absolute;left:-7%;top:2%;width:114%;height:auto;object-fit:contain;object-position:top center;pointer-events:none;filter:drop-shadow(0 3px 5px rgba(80,55,30,.20));z-index:2;}
/* ✨ 套組卡＋窗簾「無」選項 */
.re-tile.re-preset{flex-direction:column;justify-content:center;gap:2px;background:linear-gradient(#fff7ec,#ffe9cf);position:relative;padding-bottom:14px;}
.re-tile .re-pemoji{font-size:26px;line-height:1;}
.re-preset-miss{position:absolute;left:2px;right:2px;bottom:2px;font-style:normal;font-size:8px;font-weight:800;color:#c0392b;background:rgba(255,235,235,.95);border-radius:6px;padding:1px 0;text-align:center;white-space:nowrap;}
.re-tile .re-none{display:flex;align-items:center;justify-content:center;width:100%;height:44px;font-size:20px;color:#c0a884;}

/* ☀️ 晴天：暖金光暈＋斜光束微閃 */
.wx-sun{background:radial-gradient(120% 90% at 50% 22%,rgba(255,226,140,.5),rgba(255,226,140,0) 66%);mix-blend-mode:screen;}
.wx-sun::before,.wx-sun::after{content:"";position:absolute;top:-30%;height:170%;transform:rotate(18deg);}
.wx-sun::before{left:-18%;width:64%;background:linear-gradient(180deg,rgba(255,240,180,.6),rgba(255,240,180,0));filter:blur(6px);animation:wxSunRay 5.5s ease-in-out infinite;}
.wx-sun::after{left:26%;width:42%;background:linear-gradient(180deg,rgba(255,246,206,.5),rgba(255,246,206,0));filter:blur(7px);animation:wxSunRay 6.8s ease-in-out infinite 1.2s;}
@keyframes wxSunRay{0%,100%{opacity:.4;}50%{opacity:.9;}}

/* ☁️ 陰天：壓一層灰＋柔白雲團緩慢飄過 */
.wx-cloud{background:linear-gradient(180deg,rgba(150,158,172,.5),rgba(150,158,172,.16) 72%);}
.wx-cloud::before,.wx-cloud::after{content:"";position:absolute;border-radius:50%;
  background:radial-gradient(closest-side,rgba(255,255,255,.95),rgba(255,255,255,0));filter:blur(2px);}
.wx-cloud::before{left:-40%;top:12%;width:70%;height:34%;animation:wxCloud 9s linear infinite;}
.wx-cloud::after{left:-60%;top:40%;width:92%;height:42%;opacity:.8;animation:wxCloud 13s linear infinite 2s;}
@keyframes wxCloud{0%{transform:translateX(0);}100%{transform:translateX(230%);}}

/* 🌧 下雨：藍灰色調＋明顯斜雨絲 */
.wx-rain{background:linear-gradient(180deg,rgba(96,128,168,.5),rgba(96,128,168,.12) 78%);}
.wx-drop{top:-16%;width:2.5px;height:17%;border-radius:2px;
  background:linear-gradient(transparent,rgba(150,190,235,.98));box-shadow:0 0 2px rgba(70,110,160,.5);animation:wxRain linear infinite;}
@keyframes wxRain{0%{transform:translateY(-30px) translateX(0);opacity:0;}10%{opacity:1;}100%{transform:translateY(300px) translateX(-18px);opacity:.55;}}

/* ⛈ 雷雨：更深更密的雨＋偶爾閃光 */
.wx-storm{background:linear-gradient(180deg,rgba(74,86,116,.6),rgba(74,86,116,.16) 78%);}
.wx-storm .wx-drop{background:linear-gradient(transparent,rgba(180,208,240,1));}
.wx-flash{left:0;top:0;width:100%;height:100%;background:rgba(255,255,245,.95);opacity:0;animation:wxFlash 6s steps(1) infinite;}
@keyframes wxFlash{0%,7%,100%{opacity:0;}2%{opacity:.8;}4%{opacity:.25;}5%{opacity:.6;}}

/* ❄️ 下雪／結霜：冷色調＋帶灰邊的雪點（亮背景才看得見） */
.wx-snow{background:linear-gradient(180deg,rgba(198,216,240,.5),rgba(198,216,240,.14) 76%);}
.wx-flake{top:-8%;width:9px;height:9px;border-radius:50%;
  background:radial-gradient(closest-side,#fff,rgba(232,240,252,.85));box-shadow:0 0 0 1px rgba(120,150,195,.55),0 1px 3px rgba(90,120,170,.5);
  animation:wxSnow linear infinite;}
@keyframes wxSnow{0%{transform:translateY(-14px) translateX(0);opacity:0;}12%{opacity:1;}100%{transform:translateY(290px) translateX(20px);opacity:.5;}}

/* 🌸 櫻花／🍁 楓葉：飽和花瓣＋深色邊（顏色以容器類切換） */
.wx-petal{background:linear-gradient(180deg,rgba(255,196,222,.42),rgba(255,196,222,.1) 76%);}
.wx-maple{background:linear-gradient(180deg,rgba(240,178,120,.42),rgba(240,178,120,.1) 76%);}
.wx-petal .wx-petal,.wx-maple .wx-petal{top:-8%;width:12px;height:9px;animation:wxPetal linear infinite;}
.wx-petal .wx-petal{background:radial-gradient(closest-side,#ffa9cb,#ff6ea6);border-radius:80% 10% 80% 10%;filter:drop-shadow(0 1px 1px rgba(200,70,125,.45));}
.wx-maple .wx-petal{background:radial-gradient(closest-side,#ffb972,#df7a2c);border-radius:20% 80% 30% 70%;filter:drop-shadow(0 1px 1px rgba(160,80,20,.45));}
@keyframes wxPetal{0%{transform:translateY(-14px) translateX(0) rotate(0);opacity:0;}12%{opacity:1;}
  50%{transform:translateY(150px) translateX(22px) rotate(180deg);}100%{transform:translateY(300px) translateX(-6px) rotate(360deg);opacity:.55;}}

/* 🌫 濃霧：整片壓白＋橫向流動霧層 */
.wx-fog{background:linear-gradient(180deg,rgba(226,226,224,.62),rgba(226,226,224,.28));}
.wx-fog::before,.wx-fog::after{content:"";position:absolute;left:-60%;width:220%;height:44%;
  background:linear-gradient(90deg,transparent,rgba(250,250,248,.95),transparent);filter:blur(3px);}
.wx-fog::before{top:20%;animation:wxFog 8s linear infinite;}
.wx-fog::after{top:52%;opacity:.75;animation:wxFog 11s linear infinite 1.5s;}
@keyframes wxFog{0%{transform:translateX(0);}100%{transform:translateX(46%);}}

/* 🌠 流星：夜空色調＋微光星＋偶爾一道流星 */
.wx-meteor{background:linear-gradient(180deg,rgba(26,32,68,.55),rgba(26,32,68,.12) 74%);}
.wx-star{width:3px;height:3px;border-radius:50%;background:#fff;box-shadow:0 0 5px rgba(255,255,255,1);animation:wxTwinkle 2.6s ease-in-out infinite;}
@keyframes wxTwinkle{0%,100%{opacity:.3;}50%{opacity:1;}}
.wx-shoot{left:78%;top:8%;width:64px;height:2px;border-radius:2px;
  background:linear-gradient(90deg,rgba(255,255,255,0),#fff);transform:rotate(28deg);opacity:0;animation:wxShoot 5.5s ease-in infinite;}
@keyframes wxShoot{0%,72%{opacity:0;transform:translate(0,0) rotate(28deg);}74%{opacity:1;}86%{opacity:1;}92%{opacity:0;transform:translate(-150px,80px) rotate(28deg);}100%{opacity:0;}}

@media (max-width:360px){.home-window{width:39%;height:32%;}}

/* 💧 澆水互動回饋（v0.60.158）：點澆水時噴壺傾倒＋水珠灑落＋小芽冒出。純 CSS、零 egress，fixed 錨到按鈕上緣。 */
.water-fx{position:fixed;transform:translate(-50%,-100%);width:0;height:0;z-index:1300;pointer-events:none;}
.water-fx .wf-can{position:absolute;left:50%;top:-16px;transform:translateX(-50%);font-size:27px;
  transform-origin:70% 80%;animation:wfCan .95s ease-in-out;filter:drop-shadow(0 2px 2px rgba(60,90,120,.3));}
.water-fx .wf-drop{position:absolute;left:50%;top:-2px;font-size:16px;opacity:0;will-change:transform,opacity;
  animation:wfDrop 1s ease-in forwards;}
.water-fx .wf-sprout{position:absolute;left:50%;top:8px;font-size:22px;opacity:0;
  transform:translateX(-50%) scale(.2);animation:wfSprout 1.1s cubic-bezier(.34,1.56,.64,1) .4s forwards;}
@keyframes wfCan{0%{transform:translateX(-50%) rotate(0);}28%{transform:translateX(-50%) rotate(-34deg);}
  70%{transform:translateX(-50%) rotate(-34deg);}100%{transform:translateX(-50%) rotate(0);}}
@keyframes wfDrop{0%{opacity:0;transform:translate(-50%,-4px) scale(.6);}18%{opacity:1;}
  100%{opacity:0;transform:translate(calc(-50% + var(--dx,0px)),48px) scale(1);}}
@keyframes wfSprout{0%{opacity:0;transform:translateX(-50%) scale(.2) translateY(6px);}
  55%{opacity:1;transform:translateX(-50%) scale(1.15) translateY(-2px);}
  100%{opacity:0;transform:translateX(-50%) scale(1) translateY(-10px);}}
.hs-acts button.watering{animation:wfBtn .55s ease;}
@keyframes wfBtn{0%,100%{background:#fbf5e8;border-color:#eaddc0;}45%{background:#e6f4ff;border-color:#bfe2ff;}}
@media (prefers-reduced-motion:reduce){
  .water-fx .wf-can,.water-fx .wf-drop,.water-fx .wf-sprout,.hs-acts button.watering{animation-duration:.01ms!important;}
}

/* 🎁 送禮系統（v0.60.159）＝ 選單 / 信箱禮物卡 / 送出·開箱動畫。純 CSS、零 egress。 */
.gift-modal{position:fixed;inset:0;z-index:1300;display:flex;align-items:flex-end;justify-content:center;
  background:rgba(40,30,15,.42);opacity:0;transition:opacity .2s ease;}
.gift-modal.show{opacity:1;}
.gift-modal .gm-card{width:100%;max-width:440px;background:#fbf5e8;border-radius:20px 20px 0 0;padding:16px 16px 22px;
  position:relative;transform:translateY(16px);transition:transform .22s ease;box-shadow:0 -6px 24px rgba(60,40,20,.25);}
.gift-modal.show .gm-card{transform:translateY(0);}
.gm-x{position:absolute;top:12px;right:14px;border:0;background:transparent;font-size:18px;color:#a08a6a;cursor:pointer;line-height:1;}
.gm-title{font-size:17px;font-weight:900;color:#6b4f22;padding-right:24px;}
.gm-status{font-size:12.5px;color:#9a7c46;font-weight:700;margin:3px 0 12px;min-height:16px;}
.gm-status.sent{font-size:15px;font-weight:900;color:#c0392b;line-height:1.5;text-align:center;background:#fdecea;border:1px solid #f5c6c0;border-radius:10px;padding:8px 10px;}
.gm-sentout .gm-gifts{opacity:.5;filter:grayscale(.55);pointer-events:none;}
.gm-sentout .gm-compose{display:none!important;}
.gm-sentout .gm-send{display:none!important;}
.gm-gifts{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;}
.gm-gift{display:flex;flex-direction:column;align-items:center;gap:3px;padding:12px 6px;border:2px solid #ecdfc4;
  border-radius:14px;background:#fff;cursor:pointer;transition:transform .12s ease,border-color .12s ease,background .12s ease;}
.gm-gift:active{transform:scale(.95);}
.gm-gift.on{border-color:#639922;background:#eef6e2;}
.gm-gift .gm-ic{font-size:26px;line-height:1;}
.gm-gift .gm-nm{font-size:13px;font-weight:800;color:#5a4622;}
.gm-gift .gm-eff{font-size:10.5px;color:#8a6a3a;font-weight:700;}
.gm-compose{margin-top:12px;}
.gm-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px;}
.gm-chip{border:1.5px solid #dbead0;border-radius:999px;background:#f0f7e8;color:#3B6D11;font-size:12.5px;font-weight:700;
  padding:6px 12px;cursor:pointer;text-align:left;}
.gm-chip:active{transform:scale(.97);}
.gm-chiphint{font-size:12px;color:#a08a6a;}
#gmInput{width:100%;box-sizing:border-box;padding:10px 12px;border:1.5px solid #e6dcc6;border-radius:12px;font-size:14px;background:#fff;}
.gm-send{width:100%;margin-top:14px;padding:13px;border:0;border-radius:14px;background:#639922;color:#fff;
  font-size:16px;font-weight:900;cursor:pointer;}
.gm-send:disabled{background:#cdbf9f;cursor:default;}
.gm-send:active:not(:disabled){transform:scale(.98);}

/* 信箱：收到的禮物卡 */
.gift-claimall{display:block;margin:0 0 10px;padding:8px 14px;border:0;border-radius:999px;background:#639922;color:#fff;
  font-size:13px;font-weight:900;cursor:pointer;}
.gift-card{display:flex;align-items:center;gap:11px;padding:10px 12px;margin-bottom:9px;border-radius:14px;
  background:#fff;border:1.5px solid #f0e6cf;box-shadow:0 2px 6px rgba(90,60,30,.06);}
.gift-card.claimed{background:#f6f1e6;opacity:.9;}
.gift-card .gc-ic{font-size:28px;flex:0 0 auto;}
.gift-card:not(.claimed) .gc-ic{animation:giftWobble 1.6s ease-in-out infinite;}
.gift-card .gc-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px;}
.gc-from{font-size:13px;color:#5a4622;}
.gc-eff{font-size:12px;color:#8a6a3a;font-weight:800;}
.gc-msg{font-size:12.5px;color:#7a5f3a;font-style:italic;margin-top:2px;line-height:1.5;}
.gc-open{flex:0 0 auto;padding:8px 15px;border:0;border-radius:11px;background:#e0842c;color:#fff;font-size:14px;font-weight:900;cursor:pointer;animation:giftPulse 1.8s ease-in-out infinite;}
.gc-open:active{transform:scale(.95);}
.gc-reply{flex:0 0 auto;padding:7px 13px;border:1.5px solid #eaddc0;border-radius:11px;background:#fbf5e8;color:#7a5220;font-size:13px;font-weight:800;cursor:pointer;}
.gc-reply.off{background:#f0f0f0;border-color:#e2e2e2;color:#b0b0b0;cursor:not-allowed;}
@keyframes giftWobble{0%,100%{transform:rotate(-5deg);}50%{transform:rotate(5deg);}}
@keyframes giftPulse{0%,100%{transform:scale(1);}50%{transform:scale(1.06);}}

/* 送出/開箱噴發動畫 */
.gift-fx{position:fixed;transform:translate(-50%,-50%);width:0;height:0;z-index:1320;pointer-events:none;}
.gift-fx .gf-item{position:absolute;left:0;top:0;font-size:20px;opacity:0;will-change:transform,opacity;}
.gift-fx .gf-send{animation:gfSend 1s ease-out forwards;}
.gift-fx .gf-open{animation:gfOpen 1.1s cubic-bezier(.2,.7,.3,1) forwards;}
@keyframes gfSend{0%{opacity:0;transform:translate(-50%,-50%) scale(.6);}20%{opacity:1;}100%{opacity:0;transform:translate(calc(-50% + var(--dx,0px)),-90px) scale(1.1);}}
@keyframes gfOpen{0%{opacity:0;transform:translate(-50%,-50%) scale(.3);}25%{opacity:1;}100%{opacity:0;transform:translate(calc(-50% + var(--dx,0px)),-58px) scale(1.25);}}
@media (prefers-reduced-motion:reduce){
  .gift-card .gc-ic,.gc-open,.gift-fx .gf-item{animation-duration:.01ms!important;}
}

/* 🌱 菜園等級進度條（累積收成 → Lv1-7，門檻 2/5/10/18/30/50）v0.60.253 */
.home-garden .hg-lvbar{position:absolute;left:0;bottom:2%;transform:none;display:inline-flex;align-items:center;gap:5px;white-space:nowrap;background:rgba(255,255,255,.94);border:1px solid #ead7ae;border-radius:999px;padding:2px 8px;box-shadow:0 2px 6px rgba(120,90,60,.22);pointer-events:none;z-index:6;opacity:.72;}   /* 稍微透明，不擋畫面 */
.home-garden .hg-lvtxt{font-size:10px;font-weight:800;color:#5a7a3a;}
.home-garden .hg-lvtrack{width:36px;height:5px;border-radius:999px;background:#e6ecd8;overflow:hidden;}
.home-garden .hg-lvtrack i{display:block;height:100%;background:linear-gradient(90deg,#8fd06a,#5aa832);}

/* 🏠 小屋編輯器 Phase 2（買了的家具拖進小屋擺放）v0.60.259 */
.home-room .home-floor-lay{position:absolute;left:0;right:0;bottom:0;height:40%;width:100%;object-fit:cover;z-index:1;pointer-events:none;opacity:.92;
  -webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 16%);mask-image:linear-gradient(to bottom,transparent 0,#000 16%)}   /* 上緣柔化＝地板與牆不再硬斷層 */
.home-room.night .home-floor-lay{filter:brightness(.72) saturate(.92)}   /* 夜晚地板同步變暗，不再亮得突兀 */
.home-room .home-wall-lay{position:absolute;left:0;right:0;top:0;height:60%;width:100%;object-fit:cover;z-index:1;pointer-events:none;opacity:.9}   /* 拿掉 multiply＋提高不透明度＝壁紙的紫/綠等顏色正常顯示，不再被咖啡色背景染掉 */
.home-room .home-lay{position:absolute;width:22%;transform:translate(-50%,-50%);filter:drop-shadow(0 3px 4px rgba(80,55,30,.28));pointer-events:none;transition:filter .12s}
.home-room .home-lay.home-appliance{pointer-events:auto;cursor:pointer}   /* 🧹💧 家電在一般檢視要能點＝才會播使用動畫 */
body.room-editing .home-room .home-lay{pointer-events:auto;cursor:grab;touch-action:none}
body.room-editing .home-room .home-lay.sel{outline:3px solid #ff8fb1;outline-offset:4px;border-radius:10px;filter:drop-shadow(0 8px 8px rgba(80,55,30,.4))}
body.room-editing #homeTrack .home-pet{pointer-events:none!important}
body.room-editing .home-furn{pointer-events:auto!important;cursor:grab;touch-action:none}
body.room-editing .home-furn.locked-func{pointer-events:none!important}
/* 🛠 佈置＝唯一主行動 FAB：移到右下角拇指區、避開房間中央與上方；佈置模式改由底部工具列接手，先收起 */
.room-editbtn{position:absolute;left:auto;top:auto;right:calc(env(safe-area-inset-right,0px) + 16px);bottom:calc(env(safe-area-inset-bottom,0px) + 16px);z-index:45;width:48px;height:48px;border:none;border-radius:50%;background:rgba(255,255,255,.5);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:#8a6a55;font-size:22px;line-height:1;box-shadow:0 4px 14px rgba(120,90,60,.28);cursor:pointer;opacity:.85;transition:opacity .2s,transform .1s}
.room-editbtn:hover{opacity:1}
.room-editbtn:active{transform:scale(.92)}
/* 🧧 收藏室地契可領＝常駐提醒鈕（錯過自動動畫也能領） */
.room3-badge{position:fixed;left:50%;bottom:calc(env(safe-area-inset-bottom,0px) + 76px);transform:translateX(-50%);z-index:10055;background:linear-gradient(90deg,#ffd66e,#f0a020);color:#7a4a10;border:none;border-radius:999px;padding:11px 20px;font-size:14px;font-weight:900;box-shadow:0 6px 18px rgba(210,140,30,.45);cursor:pointer;font-family:inherit;animation:room3Pulse 1.6s ease-in-out infinite;}
@keyframes room3Pulse{0%,100%{transform:translateX(-50%) scale(1)}50%{transform:translateX(-50%) scale(1.05)}}
body.room-editing .room-editbtn{display:none;}
body.visiting .room-editbtn{display:none;}   /* 🛠 拜訪/信箱面板打開時收起佈置 FAB，避免蓋住拜訪按鈕/誤觸卡住 */
/* 編輯器選取後底部大按鈕控制列（放大/縮小/左轉/右轉/上下層/複製/刪除）v0.60.263 */
#reCtrl.re-ctrl{display:flex;gap:6px;justify-content:center;flex-wrap:wrap;padding:6px 2px 8px;border-bottom:1px solid #f0e2d4;margin-bottom:6px}
#reCtrl.re-ctrl[hidden]{display:none}
#reCtrl button{border:2px solid #ecd9c2;background:#fff;border-radius:14px;min-width:68px;min-height:60px;cursor:pointer;font-size:22px;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#5a4636;font-family:inherit;line-height:1;box-shadow:0 2px 5px rgba(120,90,60,.12)}
#reCtrl button i{font-style:normal;font-size:12.5px;font-weight:800;margin-top:3px}
#reCtrl button:active{background:#fff2e2;transform:scale(.96)}
#reCtrl button#reLock.on{background:#fff0c2;border-color:#f0d48a;color:#b5622a}
.home-room .re-box.re-locked .re-br{display:none}   /* 鎖定時不顯示縮放控制點 */
#reCtrl button.danger{border-color:#f6c2c2;color:#d15a5a}
#reCtrl.fix .itemonly{display:none}   /* 內建家具：只留「移到最前/最後」，不給複製/刪除 */
#reCtrl:not(.fix) .fixonly{display:none}   /* 擺設：不顯示「收起（內建家具用）」 */
/* 🛠 修：hidden 被 display 蓋過（尚未儲存視窗關不掉）→ 一律尊重 hidden */
#homeScene [hidden]{display:none!important}
.room-editbar{position:absolute;left:0;right:0;bottom:0;z-index:31;background:rgba(255,247,239,.98);border-top:1px solid #ecd9c2;padding:8px 10px calc(8px + env(safe-area-inset-bottom));box-shadow:0 -4px 14px rgba(120,90,60,.12)}
.room-editbar .re-cats{display:flex;gap:6px;overflow-x:auto;padding-bottom:6px}
.room-editbar .re-cat{flex:0 0 auto;border:1px solid #f0d9c4;background:#fff;border-radius:999px;padding:6px 11px;font-size:12.5px;font-weight:700;color:#8a6a4a;cursor:pointer;font-family:inherit;white-space:nowrap}
.room-editbar .re-cat.on{background:#6fc28b;color:#fff;border-color:#6fc28b}
/* 🛠 功能列（全部解鎖/上鎖/收起全部/收合/復原/退出/完成）＝跟家具分類分開一排 */
.room-editbar .re-tools{display:flex;gap:6px;overflow:visible;align-items:stretch;padding:7px 0 2px;margin-top:5px;border-top:1px dashed #ecd9c2}
/* 🛠 v0.60.601 外面一排：左=可換頁工具(塞不下才橫滑)、右=固定導航(退出/完成/收合永不壓縮) */
.room-editbar .re-tools-leftwrap{position:relative;flex:1 1 auto;min-width:0;display:flex}
.room-editbar .re-tools-left{display:flex;gap:6px;align-items:center;flex:1 1 auto;min-width:0;overflow-x:auto;-webkit-overflow-scrolling:touch}
.room-editbar .re-tools-leftwrap::after{content:'›';position:absolute;top:0;right:0;height:100%;width:30px;display:none;align-items:center;justify-content:flex-end;padding-right:2px;pointer-events:none;color:#b09a78;font-size:18px;font-weight:700;background:linear-gradient(90deg,rgba(255,247,239,0),rgba(255,247,239,.96))}   /* 🛠 v0.60.602 右邊還有工具→露漸層＋› */
.room-editbar .re-tools-leftwrap::before{content:'‹';position:absolute;top:0;left:0;height:100%;width:30px;z-index:1;display:none;align-items:center;justify-content:flex-start;padding-left:2px;pointer-events:none;color:#b09a78;font-size:18px;font-weight:700;background:linear-gradient(270deg,rgba(255,247,239,0),rgba(255,247,239,.96))}   /* 往右滑後左邊還有→露 ‹ */
.room-editbar .re-tools-leftwrap.sh-right::after{display:flex}
.room-editbar .re-tools-leftwrap.sh-left::before{display:flex}
.room-editbar .re-tools-right{display:flex;gap:6px;align-items:center;flex:0 0 auto;padding-left:6px;border-left:1px dashed #e0cba6}
.room-editbar .re-toolpage{display:flex;gap:6px;align-items:center}
.room-editbar .re-collapse{flex:0 0 auto;align-self:center;min-height:34px;display:flex;align-items:center;gap:3px;padding:0 11px;border:1px solid #e6d3b4;background:#fbf3e6;color:#9a7b56;border-radius:12px;font-size:12px;font-weight:500;line-height:1;cursor:pointer;font-family:inherit;white-space:nowrap}   /* 收合＝最低視覺層級輔助鈕(比工具鈕矮/淡) */
.room-editbar .re-collapse:active{background:#f2e6cf}
.room-editbar .re-unlockall.re-navexit{background:#fff;border-color:#d9c39a;color:#8a6a4a}   /* 退出＝同尺寸窄鈕、中性暖棕，不再直立長條 */
.room-editbar .re-unlockall.re-moreback{background:#f3e7d3;border-color:#d9c39a;color:#8a6a4a}   /* 返回＝換回預設工具頁 */
.room-editbar #reMoreWrap{display:contents}   /* 「顯示更多」容器：展開時按鈕直接排進工具列 */
#reCtrl #reCtrlMore{display:contents}   /* 🛠 選中操作列「更多」容器：展開時按鈕排進 #reCtrl */
#reCtrl #reCtrlMoreBtn.re-ctrl-more{background:#e9f7ee;border-color:#bfe3c8;color:#2e9e5b}   /* 🛠 v0.60.600 「更多/收起」淡綠色＝和其他操作鈕區分 */
#reCtrl #reCtrlMoreBtn.re-ctrl-more:active{background:#d8f0e0}
.room-editbar.re-min .re-cats{display:none}
.room-editbar.re-min .re-tools{border-top:none;margin-top:0;padding:0;overflow:visible;justify-content:center}
/* 🔽 收合工具列＝縮成中央小膠囊（漂亮版），露出底部角落家具方便搬 */
.room-editbar .re-min,.room-editbar .re-unlockall{flex:0 0 auto;border:1.5px solid #f0d9c4;background:#fff8ef;border-radius:999px;padding:8px 13px;font-size:13px;font-weight:800;color:#b5622a;cursor:pointer;font-family:inherit;white-space:nowrap}
/* 兩字一行的緊湊按鈕（全部解鎖/上鎖/收起全部/已收起/收合/復原）＝橫排更省版面 */
.room-editbar .re-2l{display:inline-flex;align-items:center;justify-content:center;gap:3px;padding:6px 10px;line-height:1;min-height:44px;box-sizing:border-box;flex:0 0 auto;}   /* 統一高度＝預設頁↔更多頁 toolbar 高度一致、不跳動 */
.room-editbar .re-2l>span{display:inline-block;font-size:11.5px;line-height:1.14;text-align:center;}
.room-editbar.re-min #reClearItems{display:none}   /* 收合時：保留「全部解鎖／全部上鎖」，只收起「收起全部」＝解得到鎖 */
.room-editbar.re-min{left:50%;right:auto;transform:translateX(-50%);width:auto;bottom:calc(12px + env(safe-area-inset-bottom));padding:8px 12px;border:1px solid #ecd9c2;border-radius:999px;background:rgba(255,250,243,.98);box-shadow:0 6px 20px rgba(120,90,60,.22);}
/* 📱 收合小球：像 iPhone AssistiveTouch 的半透明浮球（收合工具列後點它展開） */
.re-minball{position:absolute;left:calc(env(safe-area-inset-left,0px) + 14px);bottom:calc(env(safe-area-inset-bottom,0px) + 16px);z-index:33;border:1.5px solid #d9c39a;background:rgba(255,250,243,.98);color:#8a6a4a;border-radius:999px;padding:9px 16px;font-size:14px;font-weight:800;line-height:1;cursor:pointer;box-shadow:0 4px 14px rgba(120,90,60,.28);transition:transform .1s;font-family:inherit;white-space:nowrap;}   /* 🛠 v0.60.602 收合後的「⌃ 展開」＝有字看得懂(取代舊 🛠 圓球) */
.re-minball:hover{opacity:1}
.re-minball:active{transform:scale(.92)}
.room-editbar.re-min #reCtrl,.room-editbar.re-min .re-tray,.room-editbar.re-min .re-cat,.room-editbar.re-min #reUndo{display:none}
.room-editbar.re-min .re-cats{gap:8px;padding:0;overflow:visible;align-items:center;justify-content:center}
.room-editbar.re-min .re-done{margin-left:0}
/* 🏠 小屋編輯 v2.0：情境名稱標籤＋「⋯更多」彈出選單（大按鈕≥44px、彈窗在按鈕上方、單手操作） */
.re-selname{display:inline-flex;align-items:center;font-weight:800;font-size:13px;color:#6b4a24;background:#fff3de;border:1px solid #ecd9b8;border-radius:999px;padding:5px 12px;margin-right:2px;white-space:nowrap;max-width:120px;overflow:hidden;text-overflow:ellipsis;}
.re-adv-wrap,.re-more-wrap{position:relative;display:inline-block;flex:0 0 auto;}
.re-catmore,.re-adv{flex:0 0 auto;border:1.5px solid #f0d9c4;background:#fff8ef;border-radius:999px;padding:8px 13px;min-height:40px;font-size:13px;font-weight:800;color:#b5622a;cursor:pointer;font-family:inherit;white-space:nowrap;}
.re-adv{display:inline-flex;flex-direction:column;align-items:center;gap:2px;padding:6px 10px;}
.re-adv i{font-style:normal;font-size:10px;}
.re-advmenu,.re-catmoremenu{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%);background:#fff;border:1px solid #ead7ae;border-radius:14px;box-shadow:0 8px 22px rgba(120,90,60,.28);padding:6px;display:flex;flex-direction:column;gap:4px;z-index:30;min-width:132px;}
.re-advmenu[hidden],.re-catmoremenu[hidden]{display:none;}
.re-advmenu button,.re-catmoremenu button{white-space:nowrap;text-align:left;padding:10px 14px;min-height:44px;border:none;background:transparent;font-size:14px;font-weight:700;color:#5a4a2e;border-radius:10px;cursor:pointer;font-family:inherit;}
.re-advmenu button:active,.re-catmoremenu button:active{background:#fbf0dd;}
.room-editbar .re-exit{flex:0 0 auto;border:1.5px solid #ecd9c2;background:#fff;border-radius:999px;width:40px;min-height:40px;font-size:15px;color:#9a8a70;cursor:pointer;font-family:inherit;}
/* 🪟🌱 佈置模式：窗戶、菜園也可拖曳 */
body.room-editing .home-win,body.room-editing .home-garden{pointer-events:auto!important;cursor:grab;touch-action:none}
body.room-editing .home-win.sel,body.room-editing .home-garden.sel{outline:3px solid #ff8fb1;outline-offset:3px;border-radius:10px}
.room-editbar .re-done{flex:0 0 auto;border:1.5px solid #6fc28b;background:#6fc28b;color:#fff;border-radius:999px;font-weight:800;font-size:13px;cursor:pointer;font-family:inherit}   /* 完成＝綠色主按鈕(同尺寸窄鈕，padding/高度沿用 .re-2l) */
.room-editbar .re-tray{display:flex;gap:8px;overflow-x:auto;-webkit-overflow-scrolling:touch;min-height:74px;align-items:center}
.room-editbar .re-tile{flex:0 0 auto;width:64px;border:1px solid #eee2cc;background:#fff;border-radius:12px;padding:5px;cursor:pointer;font-family:inherit;display:flex;flex-direction:column;align-items:center;gap:2px}
.room-editbar .re-tile.on{border-color:#6fc28b;box-shadow:0 0 0 2px #6fc28b55}
.room-editbar .re-tile img{width:46px;height:46px;object-fit:contain}
.room-editbar .re-tile span{font-size:10px;color:#7a6a52;max-width:60px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.room-editbar .re-empty{color:#9a8f7c;font-size:12.5px;padding:0 6px}
/* ⭐ 家具磚右上角收藏鈕 */
.room-editbar .re-tile{position:relative}
.room-editbar .re-fav{position:absolute;top:1px;right:1px;font-size:14px;line-height:1;font-style:normal;color:#c9a24a;padding:2px;border-radius:8px;background:rgba(255,255,255,.75)}
.room-editbar .re-fav.on{color:#f2a900;text-shadow:0 0 4px #ffd97a}
/* ➕ 查看更多磚 */
.room-editbar .re-more{border-style:dashed;color:#c9901c;justify-content:center;font-weight:800}
.room-editbar .re-more span{color:#c9901c;max-width:none;white-space:normal;text-align:center;line-height:1.15}
.room-ctrl{position:absolute;left:50%;bottom:96px;transform:translateX(-50%);z-index:33;display:flex;gap:6px;flex-wrap:wrap;justify-content:center;max-width:96%;background:#fff;border-radius:16px;padding:7px;box-shadow:0 4px 16px rgba(120,90,60,.25)}
.room-ctrl button{border:1.5px solid #f0e2d4;background:#fff;border-radius:12px;min-width:50px;min-height:48px;cursor:pointer;font-size:18px;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#5a4636;font-family:inherit}
.room-ctrl button i{font-style:normal;font-size:10px;font-weight:700;margin-top:1px}
.room-ctrl button.danger{border-color:#f6c2c2;color:#d15a5a}
.room-leave{position:absolute;inset:0;z-index:40;background:rgba(70,50,35,.45);display:flex;align-items:center;justify-content:center;padding:24px}
.room-leave .rl-box{background:#fff;border-radius:18px;padding:20px;max-width:300px;width:100%;text-align:center}
.room-leave h3{margin:0 0 6px;font-size:17px}.room-leave p{margin:0 0 16px;color:#8a7663;font-size:14px}
.room-leave .rl-row{display:flex;gap:10px}.room-leave .rl-row button{flex:1;border:none;border-radius:12px;padding:12px;font-weight:800;font-size:15px;cursor:pointer;background:#f0e2d4;color:#5a4636;font-family:inherit}
.room-leave .rl-row button.danger{background:#ef8a8a;color:#fff}
.room-editbar .re-exit{border:none;background:#f0e2d4;color:#8a6a4a;border-radius:999px;padding:6px 14px;font-weight:800;font-size:13px;cursor:pointer;margin-left:4px}

/* 🏠 選取框（iPad 風：淡藍細框＋四角圓點＋右下角單一控制點）v0.60.264 */
.home-room .re-box{position:absolute;box-sizing:border-box;border:2px solid #8CCBFF;border-radius:8px;z-index:40;pointer-events:none;background:rgba(140,203,255,.06)}
.home-room .re-box .re-dot{position:absolute;width:10px;height:10px;background:#fff;border:2px solid #8CCBFF;border-radius:50%}
.home-room .re-box .re-dot.tl{left:-6px;top:-6px}
.home-room .re-box .re-dot.tr{right:-6px;top:-6px}
.home-room .re-box .re-dot.bl{left:-6px;bottom:-6px}
.home-room .re-box .re-br{position:absolute;right:-15px;bottom:-15px;width:30px;height:30px;background:#8CCBFF;color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:15px;pointer-events:auto;touch-action:none;box-shadow:0 2px 6px rgba(0,0,0,.25);cursor:nwse-resize}
/* 🗂 重疊選取小清單（Phase 1）：點到疊在一起的多件家具時跳出，小圖＋名字，點一列就選那件 */
.home-room .re-picker{position:absolute;z-index:60;min-width:136px;max-width:66%;max-height:60%;overflow:auto;-webkit-overflow-scrolling:touch;background:#fffdf7;border:1px solid #ead7ae;border-radius:12px;box-shadow:0 8px 22px rgba(90,60,25,.28);padding:6px;pointer-events:auto;animation:rePickerIn .14s ease-out}
@keyframes rePickerIn{from{opacity:0;transform:translateY(4px) scale(.97)}to{opacity:1;transform:none}}
.home-room .re-picker .rp-hd{font-size:11px;font-weight:800;color:#8a6a3a;padding:2px 6px 6px;white-space:nowrap}
.home-room .re-picker .rp-row{display:flex;align-items:center;gap:8px;width:100%;box-sizing:border-box;background:#fff;border:1px solid #f0e2d4;border-radius:9px;padding:5px 8px;margin-top:4px;cursor:pointer;text-align:left}
.home-room .re-picker .rp-row:first-of-type{margin-top:0}
.home-room .re-picker .rp-row:active{background:#fde7d6}
.home-room .re-picker .rp-row img{width:30px;height:30px;object-fit:contain;flex:0 0 30px;pointer-events:none}
.home-room .re-picker .rp-row span{font-size:13px;font-weight:700;color:#5a4636;line-height:1.2;pointer-events:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* 🎚 就地調整（Phase 2「先調整再擺放」）：新增家具時淡化其他家具聚焦這件＋頂部確認浮條 */
body.re-adjusting .home-room .home-lay{opacity:.4;transition:opacity .18s}
body.re-adjusting .home-room .home-lay.sel{opacity:1}
.re-adjustbar{position:absolute;top:calc(env(safe-area-inset-top,0px) + 58px);left:50%;transform:translateX(-50%);z-index:72;display:flex;align-items:center;gap:8px;max-width:94vw;padding:7px 10px;background:rgba(255,253,247,.96);border:1px solid #ead7ae;border-radius:999px;box-shadow:0 6px 18px rgba(90,60,25,.28);backdrop-filter:blur(4px)}
.re-adjustbar[hidden]{display:none}
.re-adjustbar .rab-hint{font-size:12.5px;font-weight:800;color:#8a6a3a;padding:0 2px;white-space:nowrap}
.re-adjustbar button{border:none;border-radius:999px;padding:9px 16px;font-size:15px;font-weight:900;cursor:pointer;min-height:42px;white-space:nowrap}
.re-adjustbar .rab-ok{background:#2e9e5b;color:#fff;box-shadow:0 2px 6px rgba(46,158,91,.4)}
.re-adjustbar .rab-cancel{background:#fff;color:#c0392b;border:1.5px solid #e6b6ac}
.re-adjustbar .rab-ok:active{background:#268a4f}
.re-adjustbar .rab-cancel:active{background:#fdeae6}
@media (max-width:360px){ .re-adjustbar .rab-hint{display:none} }

/* 🏘 真正走進鄰居家：唯讀渲染對方小屋（v3） */
.hv-realroom{position:relative;width:min(100%,44vh);aspect-ratio:10/17;margin:0 auto 10px;border-radius:16px;overflow:hidden;box-shadow:0 6px 18px rgba(90,60,30,.22);background:#f3dfb6;}   /* 直式比例貼近真實小屋，移除 max-height 避免壓扁 */
.hv-realroom .home-room{position:absolute;inset:0;width:100%;height:100%;}
.hv-realroom .home-furn img,.hv-realroom .home-lay{pointer-events:none;}
.hv-realroom .home-lay.hv-appliance{pointer-events:auto;cursor:pointer;}   /* 🧹💧 家電在拜訪畫面可點＝播示範動畫 */
.hv-realroom .home-pet{pointer-events:none;}
/* 🐾 拜訪別人家：對方寵物＋做客寵物「活起來」（呼吸＋偶爾輕跳，純 CSS 不加流量、不像靜止死掉） */
@keyframes hvAlive{0%,58%,100%{transform:translateY(0) scale(1);}30%{transform:translateY(-2%) scale(1.02);}70%{transform:translateY(-9%) scale(1.03);}80%{transform:translateY(0) scale(1);}}
.hv-realroom .home-pet .pet-inner,.hv-realroom .home-guest .pet-inner{display:inline-block;transform-origin:bottom center;animation:hvAlive 3.4s ease-in-out infinite;}
.hv-realroom .home-guest:nth-of-type(2) .pet-inner{animation-duration:3.9s;animation-delay:.5s;}
.hv-realroom .home-guest:nth-of-type(3) .pet-inner{animation-duration:3.1s;animation-delay:1.1s;}
.hv-realroom .home-guest:nth-of-type(4) .pet-inner{animation-duration:4.2s;animation-delay:.8s;}
/* 🧹💧 會使用的家電：點一下的開機動畫（純 CSS） */
.home-appliance{cursor:pointer;}
.appliance-run{position:absolute;z-index:39;pointer-events:none;transform:translate(-50%,-50%);animation:robotRun 8s ease-in-out;}
.appliance-run::after{content:'💨';position:absolute;left:-10px;bottom:0;font-size:13px;animation:robotPuff .7s ease-out infinite;}
@keyframes robotRun{0%{transform:translate(-50%,-50%)}16%{transform:translate(-210%,-50%)}38%{transform:translate(140%,-50%)}58%{transform:translate(-190%,-50%)}78%{transform:translate(120%,-50%)}100%{transform:translate(-50%,-50%)}}
@keyframes robotPuff{0%{opacity:.75;transform:translateX(0)}100%{opacity:0;transform:translateX(-9px)}}
.appliance-mist{position:absolute;z-index:39;pointer-events:none;width:15px;height:15px;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.9),rgba(255,255,255,0) 70%);transform:translate(-50%,-50%);animation:mistRise 2.6s ease-out forwards;}
/* 🧑‍🍳 其它家電：冒粒子（熱氣/水氣/風/放鬆）＋產出小物彈跳 */
.appliance-emo{position:absolute;z-index:39;pointer-events:none;font-size:16px;transform:translate(-50%,-50%);animation:appEmoRise 2.4s ease-out forwards;}
@keyframes appEmoRise{0%{opacity:0;transform:translate(-50%,-50%) scale(.6)}20%{opacity:.95}100%{opacity:0;transform:translate(-50%,-250%) scale(1.15)}}
.appliance-pop{position:absolute;z-index:40;pointer-events:none;font-size:34px;transform:translate(-50%,-20%) scale(0);filter:drop-shadow(0 4px 5px rgba(120,80,20,.28));animation:appPop 2.4s ease forwards;}
@keyframes appPop{0%{opacity:0;transform:translate(-50%,-20%) scale(0)}28%{opacity:1;transform:translate(-50%,-95%) scale(1.2)}72%{opacity:1;transform:translate(-50%,-85%) scale(1)}100%{opacity:0;transform:translate(-50%,-85%) scale(1)}}
@keyframes mistRise{0%{opacity:0;transform:translate(-50%,-50%) scale(.4)}20%{opacity:.85}100%{opacity:0;transform:translate(-50%,-280%) scale(1.7)}}
.hv-petaway{position:absolute;left:50%;top:7%;bottom:auto;transform:translateX(-50%);z-index:6;background:rgba(255,255,255,.94);border:1px solid #ead7ae;border-radius:14px;padding:6px 14px;font-size:12px;font-weight:800;color:#7a5a2a;white-space:normal;max-width:80%;text-align:center;line-height:1.35;box-shadow:0 2px 8px rgba(120,90,60,.2);pointer-events:none;}
.home-garden.hv-gardentag{left:3%;bottom:5%;width:auto;max-width:60%;z-index:6;pointer-events:none;background:rgba(255,255,255,.92);border:1px solid #ead7ae;border-radius:999px;padding:3px 10px;font-size:11px;font-weight:800;color:#5a7a3a;white-space:nowrap;box-shadow:0 2px 6px rgba(120,90,60,.2);}
.hv-hdr{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 4px 2px;}
.hv-hdr b{font-size:16px;color:#6b4a24;}
/* 🏠 拜訪鄰居・多房間切換（依友好度解鎖） */
.hv-rooms{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin:8px 4px 4px;}
.hv-room{border:1.5px solid #ead7ae;background:#fff;color:#8a6a45;border-radius:999px;padding:6px 13px;font-size:13px;font-weight:800;cursor:pointer;font-family:inherit;}
.hv-room.on{background:#c9901c;color:#fff;border-color:#c9901c;}
.hv-room.locked{background:#f3ece0;color:#b0a48f;border-color:#e2d8c4;cursor:not-allowed;}
.hv-friendhint{margin:2px 8px 6px;font-size:12px;color:#8a7a5c;text-align:center;line-height:1.5;}
.hv-friendhint b{color:#c9901c;}
.hv-friendbar{margin:8px 4px 4px;padding:7px 12px;background:#fff6e3;border:1px solid #f0dcae;border-radius:12px;font-size:12.5px;color:#7a5a2a;text-align:center;line-height:1.5;}
.hv-friendbar b{color:#c9901c;}
.hv-friend-badge{margin-left:6px;background:#fff2d6;border:1px solid #ead7ae;border-radius:999px;padding:1px 9px;font-size:11.5px;font-weight:800;color:#b4732a;white-space:nowrap;}
.hs-friend{background:#fff2d6;border:1px solid #ead7ae;border-radius:999px;padding:0 7px;font-size:11px;font-weight:800;color:#b4732a;white-space:nowrap;}
.hs-fav{margin-left:6px;font-size:16px;color:#d8c9a8;cursor:pointer;user-select:none;line-height:1;}
.hs-fav.on{color:#f2b705;}
/* 🏘 小鎮 hub 導覽列 */
.hub-bar{display:flex;flex-wrap:wrap;gap:6px;padding:2px 2px 8px;position:sticky;top:0;z-index:2;}
.hub-chip{font-size:12.5px;font-weight:800;color:#8a6a40;background:#fff5e0;border:1.5px solid #f0dcae;border-radius:999px;padding:5px 11px;cursor:pointer;line-height:1;-webkit-tap-highlight-color:transparent;transition:transform .08s ease;}
.hub-chip:active{transform:scale(.94);}
.hub-chip.on{color:#5a3d00;background:linear-gradient(90deg,#ffe08a,#f5b73d);border-color:#eec158;box-shadow:0 2px 6px rgba(240,183,5,.25);}
.hub-chip.hub-rand{margin-left:auto;color:#5a3d00;background:linear-gradient(90deg,#ffd7ec,#ff9ecb);border-color:#ff9ecb;}
.hub-search{width:100%;box-sizing:border-box;font-size:14px;color:#5a3d00;background:#fffaf0;border:1.5px solid #f0dcae;border-radius:12px;padding:8px 12px;margin:0 0 8px;outline:none;}
.hub-search:focus{border-color:#f5b73d;background:#fff;}
.hv-title-badge{display:inline-block;font-size:11px;font-weight:800;color:#5a3d00;background:linear-gradient(90deg,#ffe08a,#f5b73d);border-radius:999px;padding:2px 8px;vertical-align:middle;}
.hv-hdr .hv-stats{display:inline-flex;gap:10px;font-size:12px;color:#8a6a40;font-weight:700;}
.hv-gardenline{margin:2px 4px 8px;font-size:12px;color:#5a7a3a;font-weight:700;}

/* 🎬 家具 idle 動畫（v0.60.456）：只動 filter/opacity，不碰 transform＝不影響家具定位/縮放/旋轉。
   都是很輕的光影效果（發光/閃爍/水波），只在小屋內的家具上跑。 */
.home-lay.dm-flicker{animation:dm-flicker 1.1s ease-in-out infinite;transform-origin:center bottom}
.home-lay.dm-screen{animation:dm-screen 3.4s ease-in-out infinite}
.home-lay.dm-shimmer{animation:dm-shimmer 3.8s ease-in-out infinite}
.home-lay.dm-twinkle{animation:dm-twinkle 1.9s ease-in-out infinite}
.home-lay.dm-glow{animation:dm-glow 3.2s ease-in-out infinite}
@keyframes dm-flicker{0%,100%{filter:brightness(1) drop-shadow(0 0 2px rgba(255,180,80,.35));opacity:1}45%{filter:brightness(1.18) drop-shadow(0 0 7px rgba(255,170,60,.7));opacity:.94}70%{filter:brightness(1.06) drop-shadow(0 0 4px rgba(255,180,80,.5));opacity:.98}}
@keyframes dm-screen{0%,100%{filter:brightness(1) saturate(1)}50%{filter:brightness(1.14) saturate(1.15)}}
@keyframes dm-shimmer{0%,100%{filter:brightness(1)}50%{filter:brightness(1.1) drop-shadow(0 0 5px rgba(120,200,255,.45))}}
@keyframes dm-twinkle{0%,100%{filter:brightness(1)}30%{filter:brightness(1.25) drop-shadow(0 0 6px rgba(255,230,120,.7))}60%{filter:brightness(.96)}}
@keyframes dm-glow{0%,100%{filter:brightness(.97) drop-shadow(0 0 2px rgba(255,220,140,.25))}50%{filter:brightness(1.12) drop-shadow(0 0 9px rgba(255,210,120,.6))}}

/* 🔋 海邊 overlay 全螢幕遮住小屋時，暫停小屋底下所有 CSS 動畫（由 home.js 於進海邊加 .overlay-paused、離開移除）＝省 GPU 合成；只暫停、不改視覺，移除 class 立即恢復。不影響海邊(#beachScene 另一層)。 */
#homeScene.overlay-paused *,
#homeScene.overlay-paused *::before,
#homeScene.overlay-paused *::after{animation-play-state:paused !important;-webkit-animation-play-state:paused !important;}
