/* 喵窩 (2.0): the room the avatar on 總覽 opens. The stage is drawn at 390 x 844 and scaled to the phone (assets/meow-v4-nest.js). */
.v4-sub-page[data-v4-sub="nest"]{padding:0;max-width:none}
.v4-sub-page[data-v4-sub="nest"] .v4-head{display:none}
html.nest-open body nav.bottom-nav,html.nest-open #meowAssistantFab,html.nest-open .v4-nav-fade{display:none!important}
.nest-wrap{position:fixed;inset:0;z-index:5;overflow:hidden;background:#eadfcb}
.nest-wrap *{box-sizing:border-box}
.nest-ava{position:relative;display:block;flex:none;width:82px;height:76px;margin:-14px -6px 0 0;padding:0;border:0;background:none;cursor:pointer;-webkit-tap-highlight-color:transparent}
.nest-ava .b,.nest-ava .f{position:absolute;left:0;bottom:0;width:82px;height:57px}
.nest-ava .f{pointer-events:none}
.nest-ava .p{position:absolute;left:17px;top:2px;width:48px;height:48px;border-radius:50%;border:1.25px solid var(--v4-card-line);background:var(--v4-tile,#f8e8cc);overflow:hidden;transform-origin:50% 100%;animation:n-breathe 2.8s ease-in-out infinite}
.nest-ava .p img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.nest{position:absolute;left:50%;top:0;width:390px;height:844px;margin-left:-195px;overflow:hidden;box-sizing:border-box;transform-origin:50% 0;color:var(--v4-ink);font-family:var(--v4-sans)}
/* the avatar sitting in the nest: back of the nest, the person's picture, front rim */
/* the room */
.nest-top{position:absolute;left:16px;right:16px;top:58px;display:flex;align-items:center;gap:8px;z-index:3}
.nest-chip{position:relative;display:inline-flex;align-items:center;gap:6px;height:40px;box-sizing:border-box;padding:0 14px;border-radius:14px;border:1.25px solid var(--v4-card-line);background:var(--v4-card);box-shadow:var(--v4-shadow);font-family:var(--v4-serif);font-weight:900;font-size:15px;color:var(--v4-title)}
.nest-chip::before{content:"";position:absolute;inset:3px;border:1px dashed var(--v4-stitch);border-radius:10px;pointer-events:none}
.nest-chip.pts{margin-left:auto;color:#bb453d}
.nest-chip.bump{animation:n-bump .4s ease}
.nest-stage{position:absolute;left:45px;top:462px;width:300px;height:290px;z-index:2}
.nest-stage>.b,.nest-stage>.f{position:absolute;left:0;bottom:0;width:300px;height:210px}
.nest-stage>.f{pointer-events:none}
.nest-heart{position:absolute;bottom:150px;z-index:4;color:#bb453d;pointer-events:none;animation:n-float 1s ease-out forwards}
.nest-coin{position:absolute;z-index:3;width:50px;height:50px;padding:0;border-radius:50%;border:1px solid #9b4334;background:var(--v4-leather-gold);box-shadow:0 6px 12px rgba(127,36,28,.22),0 3px 0 #a9782a;color:#fff7ec;cursor:pointer;display:flex;align-items:center;justify-content:center;animation:n-bob 2.4s ease-in-out infinite}
.nest-coin::before{content:"";position:absolute;inset:3px;border:1.2px dashed rgba(255,241,226,.6);border-radius:50%}
.nest-fly{position:absolute;z-index:5;color:#d39a3a;pointer-events:none;animation:n-fly .6s ease-in forwards}
.nest-fly2{position:absolute;left:190px;top:210px;z-index:1;color:#bb453d;pointer-events:none;animation:n-butterfly 9s ease-in-out infinite}
.nest-sun{position:absolute;left:30px;top:90px;width:220px;height:320px;background:linear-gradient(115deg,rgba(255,255,255,.26),rgba(255,255,255,0) 70%);pointer-events:none;animation:n-sun 5s ease-in-out infinite}
.nest-dim{position:absolute;inset:0;background:rgba(40,28,18,.45);z-index:6;animation:n-fade .2s ease}
.nest-sheet{position:absolute;left:0;right:0;bottom:0;z-index:7;box-sizing:border-box;padding:6px 8px 20px;animation:n-up .3s cubic-bezier(.2,1,.4,1)}
.nest-x{position:absolute;right:8px;top:6px;z-index:2;width:40px;height:40px;border:0;background:none;font-size:24px;line-height:1;color:var(--v4-sub);cursor:pointer}
.nest-grid{display:grid;grid-template-columns:repeat(6,54px);grid-auto-rows:54px;width:324px;align-self:center;border-radius:10px;overflow:hidden;box-shadow:0 0 0 1.25px var(--v4-card-line);perspective:500px}
.nest-grid.no{animation:n-shake .35s ease}
.nest-scene{background-color:var(--v4-card-gold);background-repeat:no-repeat;background-size:324px 270px}
.nest-scene.fresh{animation:n-flip .55s ease}
.nest-tile{position:relative;display:flex;align-items:center;justify-content:center;width:54px;height:54px;padding:0;border:0;background:var(--v4-track,#e6d8c0);color:#b89d80;cursor:pointer}
.nest-tile::before{content:"";position:absolute;inset:3px;border:1px dashed var(--v4-stitch);border-radius:6px;pointer-events:none}
.nest-tip{font-size:13px;line-height:20px;font-weight:700;color:var(--v4-sub);text-align:center}
.nest-shelf{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 6px}
.nest-pic{width:100%;aspect-ratio:6/5;border-radius:10px;box-shadow:0 0 0 1.25px var(--v4-card-line);object-fit:cover}
@keyframes n-breathe{0%,100%{transform:scale(1,1)}50%{transform:scale(1.015,.975)}}
@keyframes n-hop{0%{transform:scale(1.06,.9)}45%{transform:translateY(-34px) scale(.96,1.06)}80%{transform:translateY(0) scale(1.05,.93)}100%{transform:none}}
@keyframes n-bump{50%{transform:scale(1.14)}}
@keyframes n-pop{from{opacity:0;transform:translateX(var(--tx,0)) scale(.7)}to{opacity:1;transform:translateX(var(--tx,0)) scale(1)}}
@keyframes n-float{from{opacity:1;transform:translateY(0) scale(.7)}to{opacity:0;transform:translateY(-90px) scale(1.2)}}
@keyframes n-fly{to{left:330px;top:70px;opacity:.2;transform:scale(.5)}}
@keyframes n-butterfly{0%,100%{transform:translate(0,0) rotate(-8deg)}25%{transform:translate(90px,-50px) rotate(10deg)}50%{transform:translate(20px,-110px) rotate(-12deg)}75%{transform:translate(-110px,-30px) rotate(8deg)}}
@keyframes n-sun{50%{opacity:.45}}
@keyframes n-fade{from{opacity:0}}
@keyframes n-up{from{transform:translateY(100%)}}
@keyframes n-flip{0%{transform:rotateY(90deg) scale(1.25)}60%{transform:rotateY(0) scale(1.15)}100%{transform:none}}
@keyframes n-shake{25%{transform:translateX(-6px)}75%{transform:translateX(6px)}}
.nest-room{background:#eadfcb url("./nest/room.webp") center top/cover no-repeat}
.nest-stat[hidden]{display:none}
.nest-stat{position:absolute;left:16px;right:16px;top:106px;z-index:3;display:grid;grid-template-columns:auto 1fr 1fr;align-items:center;gap:12px;padding:10px 14px;border-radius:14px;border:1.25px solid var(--v4-card-line);background:var(--v4-card);box-shadow:var(--v4-shadow)}
.nest-stat::before{content:"";position:absolute;inset:3px;border:1px dashed var(--v4-stitch);border-radius:10px;pointer-events:none}
.nest-stat b{font-family:var(--v4-serif);font-weight:900;font-size:15px;line-height:20px;color:var(--v4-title);white-space:nowrap}
.nest-swap{position:relative;z-index:1;padding:0;border:0;background:none;cursor:pointer;display:flex;flex-direction:column;align-items:flex-start;font-size:12px;line-height:16px;font-weight:700;color:var(--v4-muted)}
.nest-meter{display:flex;flex-direction:column;gap:3px;font-size:12px;line-height:16px;font-weight:700;color:var(--v4-sub)}
.nest-bar{display:block;height:8px;border-radius:4px;background:var(--v4-track,#e6d8c0);box-shadow:inset 0 0 0 1px var(--v4-card-line);overflow:hidden}
.nest-bar i{display:block;height:100%;border-radius:4px;background:var(--v4-leather-red);transition:width .4s ease}
.nest-bar.full i{background:var(--v4-leather-gold)}
.nest-bed{position:absolute;left:6px;top:566px;width:210px;height:147px;pointer-events:none}
.nest-bed.b{z-index:1}
.nest-cat{position:absolute;top:530px;left:0;width:176px;height:182px;padding:0;border:0;background:none;cursor:pointer;z-index:2;transition:left 1.5s linear}
.nest-cat.fast{transition:left .55s ease-out}
.nest-cat span{position:absolute;inset:0;display:block;transform-origin:50% 100%}
.nest-cat img{width:100%;height:100%;object-fit:contain;object-position:50% 100%;display:block;transform-origin:50% 100%}
.nest-body{position:absolute;inset:0;display:block;transform-origin:50% 100%;filter:drop-shadow(0 7px 5px rgba(90,60,35,.2));animation:n-breathe 2.8s ease-in-out infinite}
.nest-sprite{position:absolute;left:-30px;bottom:-2px;width:236px;height:212px;display:none;background-repeat:no-repeat;background-size:944px 212px;transform:scaleX(-1);filter:drop-shadow(0 6px 4px rgba(90,60,35,.2));animation:n-walk .64s steps(4) infinite,n-bob .32s ease-in-out infinite}
.nest-cat.walk .nest-sprite{display:block}
.nest-cat.walk .nest-body{display:none}
.nest-cat.fast .nest-sprite{animation-duration:.32s,.16s}
.nest-cat.meow .nest-body{animation:n-meow .55s ease}
.nest-cat.sleep .nest-body{animation:none;filter:none}
.nest-loop{position:absolute;inset:0;display:block;background-repeat:no-repeat}
.nest-cat.p-sit .nest-loop{background-size:3520px 182px;animation:n-l20 2s steps(20) infinite}
.nest-cat.p-eat .nest-loop,.nest-cat.p-play .nest-loop{background-size:2112px 182px;animation:n-l12 1.2s steps(12) infinite}
.nest-cat.p-sleep .nest-loop{display:none}
.nest-cat:not(.p-sleep) .base{display:none}
.nest-cat.c0.p-eat .nest-body{scale:1.22}
.nest-cat.c1.p-eat .nest-body{scale:1.18}
.nest-cat.c2.p-eat .nest-body{scale:1.28}
.nest-cat.c3.p-eat .nest-body{scale:1.32}
.nest-cat.c4.p-eat .nest-body{scale:1.22}
.nest-rm{position:absolute;display:block;pointer-events:none;background-image:url("./nest/room.webp");background-repeat:no-repeat;background-size:auto 844px}
.nest-rm.curtain{left:0;top:0;width:72px;height:290px;background-position:-42px 0;-webkit-mask-image:linear-gradient(90deg,#000 70%,transparent);mask-image:linear-gradient(90deg,#000 70%,transparent);transform-origin:0 0;animation:n-curtain 6s ease-in-out infinite}
.nest-rm.vine{left:28px;top:160px;width:126px;height:156px;background-position:-70px -160px;-webkit-mask-image:radial-gradient(ellipse 50% 50% at 50% 50%,#000 78%,transparent);mask-image:radial-gradient(ellipse 50% 50% at 50% 50%,#000 78%,transparent);transform-origin:50% 20%;animation:n-sway 5s ease-in-out infinite}
.nest-rm.fern{left:332px;top:300px;width:58px;height:180px;background-position:-374px -300px;-webkit-mask-image:linear-gradient(90deg,transparent,#000 30%);mask-image:linear-gradient(90deg,transparent,#000 30%);transform-origin:100% 100%;animation:n-sway 6.4s ease-in-out -1s infinite}
.nest-mote{position:absolute;width:5px;height:5px;border-radius:50%;background:#fff6dc;box-shadow:0 0 6px 2px rgba(255,240,200,.7);pointer-events:none;opacity:0;animation:n-mote 9s linear infinite}
.nest-cat.sleep img{animation:n-breathe 3.6s ease-in-out infinite;transform-origin:50% 100%}
.nest-cat.sleep span{transform:translateY(-30px) scale(1.04)}
.nest-cat.sleep:not(.nest-over) span{clip-path:inset(-20px -20px 20% -20px)}
/* asleep: the body stays behind the rim, the head and front paws rest over it */
.nest-over{z-index:4;pointer-events:none;-webkit-mask-image:radial-gradient(ellipse 44% 66% at 33% 62%,#000 82%,transparent 100%);mask-image:radial-gradient(ellipse 44% 66% at 33% 62%,#000 82%,transparent 100%)}
.nest-over img{filter:none}
.nest-cat.hop .nest-body{animation:n-hop .55s cubic-bezier(.3,1.4,.5,1)}
.nest-cat.hop .nest-sprite{animation:n-walk .32s steps(4) infinite}
.nest-none{grid-column:1/-1;padding:18px 0;text-align:center;font-size:14px;line-height:20px;font-weight:700;color:var(--v4-sub)}
.nest-catbubble{position:absolute;top:492px;z-index:4;white-space:nowrap;transition:left 1.5s linear;animation:n-pop .28s cubic-bezier(.3,1.5,.5,1)}
.nest-heart{top:560px;bottom:auto}
.nest-bowl{position:absolute;left:276px;top:662px;z-index:1;animation:n-pop .3s ease}
.nest-wand{position:absolute;z-index:4;width:64px;height:92px;margin:-10px 0 0 -32px;pointer-events:none;transform-origin:50% 0;transition:left .5s ease-out,top .5s ease-out}
.nest-wand svg{display:block;transform-origin:50% 0;animation:n-swing .7s ease-in-out infinite}
.nest-tap{position:absolute;inset:0;z-index:3;border:0;padding:0;background:none;cursor:pointer}
.nest-hud{position:absolute;left:16px;right:16px;display:grid;bottom:22px;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;z-index:5}
.nest-hud .v4-btn{grid-column:span 3}
.nest-hud .v4-btn.small{grid-column:span 2;min-height:0;height:42px;font-size:15px}
.nest-hud .v4-btn.on{outline:2px solid #d39a3a;outline-offset:1px}
/* first visit: choose the cat */
.nest-pick{position:absolute;inset:0;z-index:8;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:12px;padding:0 16px 22px;background:rgba(40,28,18,.28)}
.nest-pick>img{width:236px;height:252px;object-fit:contain;object-position:50% 100%;animation:n-hop .55s cubic-bezier(.3,1.4,.5,1),n-breathe 2.8s ease-in-out .6s infinite;filter:drop-shadow(0 8px 6px rgba(60,40,25,.28))}
.nest-pick section{width:100%}
.nest-pick h2{margin:0;font-family:var(--v4-serif);font-size:22px;line-height:30px;font-weight:900;color:var(--v4-title);text-align:center}
.nest-breeds{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}
.nest-breed{position:relative;display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 0 5px;border-radius:12px;border:1.25px solid var(--v4-card-line);background:var(--v4-card-gold,#f3e7d3);font-family:var(--v4-serif);font-weight:900;font-size:12px;line-height:16px;color:var(--v4-title);cursor:pointer}
.nest-breed img{width:50px;height:50px;object-fit:contain}
.nest-name{width:100%;height:46px;padding:0 14px;border-radius:12px;border:1.25px solid var(--v4-card-line);background:var(--v4-field,#fff7ec);text-align:center;font-family:var(--v4-serif);font-weight:900;font-size:18px;color:var(--v4-title);outline:none}
.nest-name:focus{border-color:#bb453d}
.nest-lockwrap{position:relative;display:flex;flex-direction:column;gap:12px}
.nest-lockwrap .nest-shelf{filter:blur(7px) saturate(.7);pointer-events:none}
.nest-locktip{display:flex;align-items:center;justify-content:center;gap:6px;font-size:14px;line-height:20px;font-weight:700;color:var(--v4-sub)}
.nest-breed.on{background:var(--v4-field,#fff7ec);border-color:#bb453d;box-shadow:0 0 0 1.5px #bb453d}
/* Steam-style achievement list: only what has been earned, newest first, plus a count of what is still hidden */
.nest-sheet.tall section{max-height:770px;overflow:auto}
.nest-prog{display:flex;align-items:center;gap:10px;font-family:var(--v4-serif);font-weight:900;font-size:15px;color:var(--v4-title)}
.nest-prog .nest-bar{flex:1;height:10px;border-radius:5px}
.nest-ach-list{display:flex;flex-direction:column;gap:8px}
.nest-ach{position:relative;display:grid;grid-template-columns:58px minmax(0,1fr) auto;column-gap:10px;align-items:center;padding:8px 12px 8px 8px;border-radius:12px;border:1.25px solid var(--v4-card-line);background:var(--v4-field,#fff7ec)}
.nest-ach>img{grid-row:1/3;width:58px;height:58px}
.nest-ach h4{margin:0;min-width:0;font-family:var(--v4-serif);font-size:16px;line-height:22px;font-weight:900;color:var(--v4-title)}
.nest-ach time{font-size:12px;line-height:22px;font-weight:700;color:var(--v4-muted)}
.nest-ach p{grid-column:2/4;margin:0;font-size:13px;line-height:18px;font-weight:600;color:var(--v4-sub)}
.nest-ach small{grid-column:2/4;display:flex;align-items:center;gap:6px;margin-top:3px;font-size:12px;line-height:16px;font-weight:700;color:var(--v4-muted)}
.nest-ach small u{display:block;flex:none;width:64px;height:5px;border-radius:3px;background:var(--v4-track,#e6d8c0);overflow:hidden}
.nest-ach small u i{display:block;height:100%;background:#a9825f}
.nest-ach.rare{border-color:#c98f33;background:linear-gradient(115deg,#fff1cf,#fff7ec 62%);box-shadow:0 0 0 1px #e2b45f,0 4px 10px rgba(201,143,51,.25)}
.nest-ach.rare small{color:#a4661b}
.nest-ach.rare small u i{background:#c98f33}
.nest-hidden{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:12px;border:1.25px dashed var(--v4-stitch);font-size:14px;line-height:20px;font-weight:700;color:var(--v4-sub)}
.nest-toast{position:fixed;left:12px;right:12px;top:calc(var(--v4-safe-top) + 10px);z-index:2147483000;max-width:436px;margin:0 auto;display:flex;align-items:center;gap:10px;padding:8px 14px 8px 8px;border-radius:14px;border:1.25px solid #7f241c;background:#3b2a20;box-shadow:0 10px 22px rgba(40,24,14,.4);color:#fff7ec;animation:n-toast 4.2s cubic-bezier(.2,1,.4,1) forwards}
.nest-toast img{flex:none;width:52px;height:52px}
.nest-toast small{display:block;font-size:12px;line-height:16px;font-weight:700;color:#e5c9a8}
.nest-toast b{display:block;font-family:var(--v4-serif);font-size:17px;line-height:23px;font-weight:900}
@keyframes n-walk{from{background-position:0 0}to{background-position:-944px 0}}
@keyframes n-bob{0%,100%{translate:0 0}50%{translate:0 -3px}}
@keyframes n-l20{to{background-position:-3520px 0}}
@keyframes n-l12{to{background-position:-2112px 0}}
@keyframes n-curtain{0%,100%{transform:skewX(0)}50%{transform:skewX(1.6deg)}}
@keyframes n-sway{0%,100%{transform:rotate(-1.2deg)}50%{transform:rotate(1.4deg)}}
@keyframes n-mote{0%{opacity:0;transform:translate(0,0)}15%{opacity:.85}80%{opacity:.5}100%{opacity:0;transform:translate(46px,-120px)}}
@keyframes n-meow{30%{transform:scale(1.07,.95)}60%{transform:scale(.97,1.05)}}
@keyframes n-swing{0%,100%{transform:rotate(-16deg)}50%{transform:rotate(16deg)}}
@keyframes n-toast{0%{opacity:0;transform:translateY(-110%)}8%,88%{opacity:1;transform:none}100%{opacity:0;transform:translateY(-110%)}}
html.v4.dark .nest-ach.rare{background:linear-gradient(115deg,#4a3519,var(--v4-field,#211916) 62%)}
html.v4.dark .nest-ach.rare small{color:#e2b45f}
@media (prefers-reduced-motion:reduce){.nest-rm,.nest-mote,.nest-sun,.nest-fly2{animation:none}}
