.estate-hero{margin:15px 0 0;position:relative;overflow:hidden;border-radius:17px 17px 0 0;isolation:isolate;min-height:clamp(154px,26vw,242px);display:flex;align-items:flex-end;padding:clamp(17px,3vw,32px);color:#fff5d3;background:#435737 url('/luobo/farm/estate.webp') center 56%/cover}
.estate-hero:before{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(72deg,#152e1be8,transparent 70%)}
.estate-hero span{font-size:11px;letter-spacing:.14em}.estate-hero h1{font:750 clamp(32px,5vw,55px)/1.18 Georgia,"Songti SC",serif;margin:5px 0}.estate-hero p{font-size:13px;margin:0}
.estate-switch{display:grid;grid-template-columns:1fr 1fr;border:1px solid #c8b787;border-top:0;background:#f8efd4}
.estate-switch button{font-weight:750;text-align:left;padding:12px 18px;border:0;border-right:1px solid #c8b787;color:#42553b;background:transparent;line-height:1.4}
.estate-switch button:last-child{border:0}.estate-switch small{display:block;font-size:11px;font-weight:500;opacity:.85}.estate-switch button[aria-pressed=true]{background:#315740;color:#fff1ca;box-shadow:inset 0 -3px #cea351}
.estate-ledger{border-radius:0 0 10px 10px;background:#eae3cb;color:#375039;margin-bottom:12px}
.estate-ledger .basket{border:0;color:#38543b;background:transparent;padding:5px;font-size:12px}
#yardPanel{color:#284532}.feed-rack,.yard-pantry{background:#fff9e9;border:1px solid #cfc09d;border-radius:12px;overflow:hidden}
.feed-rack{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px;padding:12px 15px}.feed-rack h2,.yard-pantry h2{margin:0;font:750 20px Georgia,"Songti SC",serif}.feed-rack p,.yard-pantry p{font-size:12px;color:#70644d;margin:4px 0}
.feed-rack button{border:1px solid #738566;background:#355a41;color:#fff5d5;min-height:36px;border-radius:7px;padding:5px 10px;font-weight:650;font-size:12px}
.feed-rack .quiet{color:#354f38;border-color:#cbb98c;background:#f9f0d6}
.yard-rule{margin:9px 3px 12px;color:#665f4b;font-size:12px;line-height:1.6}
.yard-pantry{margin-top:13px;padding:14px 16px}#yardGoods{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-top:9px}#yardGoods span,#yardGoods strong{display:block}#yardGoods span{font-size:11px;color:#71634c}#yardGoods strong{font-size:17px}
#farm .farm-notice:not(:empty){position:sticky;bottom:9px;z-index:2;margin:9px 0 0;background:#f7f0d8;box-shadow:0 2px 8px #40341f24;border-radius:5px}
/* The pasture is the main play surface. Animals and feed are independent of the painted ground. */
#farm[data-area=pasture] .estate-hero{min-height:0;padding:10px 17px;background:#274c39}
#farm[data-area=pasture] .estate-hero :is(span,p){display:none}
#farm[data-area=pasture] .estate-hero h1{margin:0;font-size:23px}
.pasture-game{overflow:hidden;border:1px solid #9f8759;border-radius:15px;background:#fff6dd;box-shadow:0 5px 14px #52401d19}
.pasture-top{display:flex;align-items:center;gap:12px;min-height:55px;padding:8px 15px;background:#294a38;color:#fff2c9}
.pasture-top h2{flex:none;margin:0;font:750 21px/1.25 Georgia,"Songti SC",serif}
#yardHint{font-size:12px;line-height:1.5;color:#f5e7c7}
.meadow{position:relative;isolation:isolate;overflow:hidden;aspect-ratio:1672/941;background:#a2a584}
.pasture-ground{position:absolute;inset:0;transform-origin:0 0;background:url('/luobo/farm/live/farmyards.webp') center/100% 100% no-repeat;transition:transform .48s cubic-bezier(.22,.75,.24,1)}
#pastureWide{position:absolute;z-index:5;top:8px;left:8px;min-height:34px;padding:4px 11px;border:1px solid #f5dfad;border-radius:18px;background:#264333e6;color:#fff8de;cursor:pointer;font-weight:650}
.animal-flock{position:absolute;inset:0}
.roamer{--size:14.1%;position:absolute;left:0;top:0;z-index:1;width:var(--size);aspect-ratio:192/160;border:0;padding:0;background:transparent;box-shadow:none;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;will-change:transform;transform-origin:50% 100%}
.roamer::before{content:"";position:absolute;left:50%;bottom:0;min-width:40px;min-height:40px;width:94%;height:70%;transform:translateX(-50%)}
.roamer[data-animal=sheep]{--size:8.9%}.roamer[data-animal=pig]{--size:11.1%;z-index:3}.roamer[data-animal=hen]{--size:4.8%;z-index:3}
.animal-figure,.animal-sprite,.resting-coat{position:absolute;inset:0;display:block;pointer-events:none}
.animal-figure{transform-origin:50% 98%}
.animal-sprite,.resting-coat{background-repeat:no-repeat;transition:none}
.animal-sprite{background-image:var(--walk-art);background-size:800% 600%}
.resting-coat{background-image:var(--rest-art);background-size:100% 100%;opacity:0}
.roamer[data-pose=down] .animal-sprite{opacity:0}
.roamer[data-pose=down] .resting-coat{opacity:1}
.animal-shadow{position:absolute;bottom:2%;left:16%;width:68%;height:7%;border-radius:50%;background:#45382266;filter:blur(1.5px);transform:skewX(28deg)}
.animal-tag{position:absolute;left:50%;top:100%;transform:translateX(-50%);clip-path:inset(50%);white-space:nowrap;pointer-events:none}
.roamer:focus-visible .animal-tag{clip-path:none;border-radius:8px;background:#283d2c;color:#fff5d5;padding:1px 6px;font-size:10px;line-height:1.4}
.roamer[data-pose=down] .animal-shadow{width:78%;left:10%;height:8%;opacity:.78}
.meadow.holding-meal .animal-shadow{box-shadow:0 0 0 1px #e3cb84}
.offered-meal{position:absolute;z-index:2;width:3.6%;transform:translate(-50%,-70%);pointer-events:none}
.offered-meal svg,.carried-feed svg{width:100%;display:block;filter:drop-shadow(0 3px 1px #64472036)}
.carried-feed{position:fixed;top:0;left:0;z-index:99;width:52px;pointer-events:none}
.feed-tray{display:flex;justify-content:center;gap:10px;padding:9px 12px 3px;background:linear-gradient(#ead8b0,#fff6dd)}
.portion{position:relative;display:flex;align-items:center;gap:9px;justify-content:center;touch-action:none;user-select:none;-webkit-user-select:none;border:1px solid #af975f;box-shadow:0 2px 0 #ccb686;border-radius:11px;padding:3px 10px;min-height:44px;min-width:126px;background:#fffae9;color:#2b4934;font-weight:700}
.portion svg{width:35px;height:35px;pointer-events:none}.portion span{font-size:14px;line-height:1.2;text-align:left}.portion small{display:block;color:#6d7158;font-size:10px;font-weight:500}.portion b{color:#835f32;font:700 13px Georgia,serif}
.portion[aria-pressed=true]{background:#f8e3a5;outline:2px solid #62814d}
.feed-help{margin:6px 8px 12px;text-align:center;color:#736644;font-size:12px}
.herd-roster{display:flex;border-top:1px solid #decd9f;padding:8px 12px 0;gap:6px;justify-content:center}
.herd-roster button{flex:1;border:1px solid #d2c095;border-radius:5px;color:#546144;background:#fcf6e4;font-weight:650;min-height:34px}
.herd-roster button[aria-pressed=true]{color:#fff4cf;background:#395a41;border-color:#395a41}
.animal-info{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:11px 14px 14px}
.animal-info h3{margin:0;font:700 17px Georgia,"Songti SC",serif}.animal-info p{margin:4px 0 0;color:#716449;font-size:12px}
.animal-info button{border:1px solid #a39056;border-radius:8px;padding:7px 13px;background:#31563a;color:#fff2cc;white-space:nowrap;font-weight:700}.animal-info button:disabled{background:#ece2c7;color:#80775d}
.feed-rack{margin-top:12px}
@media(max-width:690px){.pasture-top{gap:9px;min-height:52px;padding:8px 10px}.pasture-top h2{font-size:18px}.estate-switch button{padding:9px 12px}.feed-rack{padding:10px}.animal-info{padding:9px 11px 11px}}
@media(prefers-reduced-motion:reduce){.roamer{will-change:auto}.pasture-ground{transition:none}}

#visitAnimalMarket{margin-left:auto;flex:none;border:1px solid #e3ce95;border-radius:16px;padding:6px 12px;font-size:12px;font-weight:700;color:#fff0bd;background:#34543c}
.animal-mood{display:inline-block;font-size:11px;font-weight:700;color:#3e6147;margin:0 0 3px}
.animal-mood[data-mood=hungry],.animal-mood[data-mood=peckish]{color:#975521}
.resident-list{display:flex;flex-wrap:wrap;gap:7px;padding:9px 14px 0}
.resident-list button{min-height:34px;padding:3px 12px;border:1px solid #bead83;border-radius:16px;background:#fff9e9;color:#485540}
.resident-list button[aria-pressed=true]{border-color:#4d6947;background:#e2ead4;color:#264930;font-weight:700}
.animal-market{border:1px solid #beab7a;border-radius:14px;margin:14px 0 0;background:#fff9e9;overflow:hidden;scroll-margin-block-start:12px;box-shadow:0 4px 12px #533c1310}
.animal-market header,.animal-market footer{display:flex;align-items:center;justify-content:space-between;gap:10px}
.animal-market header{padding:15px 16px 12px}
.animal-market header h2{margin:0;color:#264c37;font:750 23px/1.3 Georgia,"Songti SC",serif}
.animal-market header p{margin:4px 0 0;color:#70664c;font-size:12px}
.animal-market header>span{flex:none;font-size:12px;white-space:nowrap;color:#645637}
.animal-market header b{font:700 21px Georgia,serif;color:#805427;margin-left:3px}
.adoption-stock{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;padding:0 15px}
.adoption-stock article{overflow:hidden;border:1px solid #d6c59f;border-radius:8px;background:#fffdf5}
.adoption-stock img{display:block;width:100%;aspect-ratio:1.68;object-fit:cover;object-position:center 48%}
.offer-body{padding:9px 10px}.offer-title{display:flex;justify-content:space-between;align-items:baseline;gap:4px}.offer-title h3{margin:0;font:750 17px Georgia,"Songti SC",serif;color:#294734}.offer-title small{color:#706751;font-size:10px}.offer-body p{font-size:11px;color:#6b634e;margin:5px 0 9px}
.offer-body button{width:100%;border:1px solid #38573a;background:#35553e;color:#fff1c7;font-size:13px;font-weight:750;border-radius:6px;min-height:36px}
.offer-body button:disabled{color:#786a4d;background:#f1e9d4;border-color:#d7c9a7}
.offer-note{display:block;min-height:15px;margin-top:4px;text-align:center;color:#7c6647;font-size:10px}
.animal-market footer{padding:10px 16px 13px;color:#70664c;font-size:12px}.animal-market footer a{font-weight:700;color:#36583e}
.pasture-air,.pasture-air i{position:absolute;pointer-events:none}.pasture-air{inset:0;overflow:hidden}
.swallow{top:15%;left:5%;width:1.7%;color:#514f42;animation:pasture-swallow 24s linear infinite;opacity:0}
.swallow svg{display:block;width:100%;fill:currentColor;animation:pasture-wings .54s ease-in-out infinite alternate}
.butterfly{top:60%;left:39%;width:1.1%;min-width:4px;aspect-ratio:1;animation:pasture-flutter 13s ease-in-out infinite alternate}
.butterfly::before,.butterfly::after{content:"";position:absolute;top:20%;left:50%;width:45%;height:64%;border-radius:85% 10% 70% 35%;background:#f5c866;box-shadow:inset -1px 1px #875635;transform-origin:0 90%;animation:pasture-wings .28s ease-out infinite alternate}
.butterfly::before{left:3%;background:#e6a954;border-radius:30% 85% 30% 70%;transform-origin:100% 90%;animation-delay:-.1s}
@keyframes pasture-wings{from{transform:scaleY(.53) rotate(-7deg)}to{transform:scaleY(1) rotate(4deg)}}
@keyframes pasture-swallow{0%,75%{opacity:0;transform:translate(0,25%) rotate(-8deg)}78%{opacity:.8}86%{transform:translate(1650%,-215%) rotate(4deg)}96%{opacity:.78;transform:translate(4190%,110%) rotate(6deg)}100%{opacity:0;transform:translate(4850%,-140%) rotate(-8deg)}}
@keyframes pasture-flutter{0%,22%{transform:translate(0,0) rotate(-20deg)}45%{transform:translate(150%,-115%) rotate(12deg)}65%{transform:translate(270%,-65%) rotate(-10deg)}100%{transform:translate(110%,70%) rotate(16deg)}}
@media(max-width:600px){.adoption-stock{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:0 10px}.animal-market header{padding:12px 11px 10px}.animal-market footer{padding:10px 11px;font-size:11px}.adoption-stock img{aspect-ratio:1.8}.pasture-top{flex-wrap:wrap;column-gap:6px}.pasture-top h2{order:0}.pasture-top #yardHint{order:2;flex-basis:100%}.pasture-top #visitAnimalMarket{order:1}}
@media(prefers-reduced-motion:reduce){.pasture-air{display:none}.resting-coat{background-image:var(--still-art)}.animal-sprite,.resting-coat{transition:none}}

.offer-try{position:relative;display:block;width:100%;padding:0;border:0;background:#e8e2cb;text-align:left}
.offer-try span{position:absolute;right:5px;bottom:5px;padding:3px 7px;color:white;font-size:11px;font-weight:700;border-radius:12px;background:#233e2eda}
#careTrial{width:min(540px,calc(100% - 26px));max-height:90svh;padding:0;border:1px solid #c5ae7d;border-radius:15px;color:#294734;background:#fff8e5;box-shadow:0 15px 60px #17251c66}
#careTrial::backdrop{background:rgba(22,40,30,.62)}
#careTrial header{display:flex;align-items:center;justify-content:space-between;padding:10px 15px;background:#294a38;color:#fff0c9}
#careTrial h2{margin:0;font:750 21px Georgia,"Songti SC",serif}
#finishTrial{width:35px;height:35px;border:1px solid #b4b393;border-radius:50%;background:transparent;color:#fff2cd;font:23px/1 sans-serif}
.trial-controls{padding:10px 14px 14px;text-align:center}.trial-controls p{margin:0 0 9px;font-size:14px}
.trial-controls button{min-height:40px;border:1px solid #355940;border-radius:7px;padding:5px 16px;color:#fff4ce;background:#355940;font-weight:700}
.trial-controls small{display:block;margin-top:6px;color:#72674d;font-size:11px}
.pen-product{position:absolute;z-index:2;transform:translate(-50%,-100%);width:clamp(32px,7.8%,74px);aspect-ratio:1;border:none;padding:0;border-radius:40%;background:transparent;cursor:pointer}
.pen-product:disabled{opacity:1;cursor:default;pointer-events:none}
.pen-product i{position:absolute;inset:0;background:url('/luobo/farm/yard-fixtures-v8.webp') var(--goods-col) 0%/400% 200%;filter:drop-shadow(0 1px 1px #5a482b88)}
.pen-product[data-full=true] i{background-position-y:100%}
.pen-product[data-kind=hen]{left:19%;top:65%}.pen-product[data-kind=cow]{left:40%;top:36%}.pen-product[data-kind=sheep]{left:81.8%;top:42%}.pen-product[data-kind=pig]{left:60%;top:66%}
.pen-product b:not(:empty){position:absolute;right:-6%;top:0;border-radius:10px;border:1px solid #efce91;padding:1px 4px;background:#37523b;color:#fff8d9;font:700 clamp(9px,1.4vw,13px)/1.1 system-ui}
.pen-product[data-kind=hen] i{background-position-y:0%}
.pen-product[data-kind=hen][data-full=true] i:after,.pen-product[data-kind=hen][data-eggs="2"] i:before{content:"";position:absolute;top:63%;left:44%;width:13%;height:16%;border-radius:52% 48% 46% 47%/65% 65% 38% 38%;background:radial-gradient(at 34% 25%,#fff4d2,#eac697 68%,#b08257);transform:rotate(-13deg);box-shadow:0 1px 1px #663c1f77}
.pen-product[data-kind=hen][data-eggs="2"] i:before{left:54%;top:65%;transform:rotate(17deg)}
.pen-product[data-kind=hen][data-eggs="3"] i{background-position-y:100%}.pen-product[data-kind=hen][data-eggs="3"] i:after{display:none}

.pen-product{z-index:3}
.pen-product span{position:absolute;top:96%;left:50%;transform:translateX(-50%);white-space:nowrap;border-radius:3px;background:#4e3928;color:#fff3d4;padding:1px 4px;font:600 clamp(10px,1.3vw,13px)/1.3 system-ui;box-shadow:0 1px 2px #47352366}
.pen-product[data-full=true] span{background:#24503c;color:white}
.animal-flock{z-index:1;pointer-events:none}.animal-flock button{pointer-events:auto}

@media(max-width:745px){
  .pen-product{width:8%;min-height:44px;border-radius:4px}
  .pen-product i{inset:auto 0 0;aspect-ratio:1}
  .pen-product:disabled span,.pen-product b{display:none}
  .pen-product[data-full=true] span{top:90%;padding:2px 4px;font-size:10px}
  .pen-product[data-full=true] span::after{content:" " attr(data-count)}
}

.pen-product:not([data-kind=hen]){width:7.2%}
.pen-product:not([data-kind=hen]):disabled span,.pen-product:not([data-kind=hen]) b{display:none}
@media(min-width:746px){.pen-product:not([data-kind=hen])[data-full=true] span::after{content:" " attr(data-count)}}
.yard-shelter{position:absolute;width:10%;aspect-ratio:1;transform:translate(-50%,-100%);background:url('/luobo/farm/shelters9.webp') 0 0/200% 200%;pointer-events:none;z-index:1}
.laying-out{touch-action:none}.laying-out [data-layout]{pointer-events:auto;cursor:grab}.laying-out .animal-flock{visibility:hidden}.laying-out .layout-picked{outline:2px dashed #ffdd84;outline-offset:2px}
.layout-tools{display:flex;align-items:center;flex-wrap:wrap;gap:6px;padding:7px;background:#f8efd8}.layout-tools[hidden]{display:none}.layout-tools small{flex:1 1 100%}.layout-tools select,.layout-tools button{min-height:38px;color:#284532}
.yard-shelter{aspect-ratio:2}.layout-toggle{order:1;border:1px solid #d4bd8e;border-radius:16px;background:#f2e5bf;color:#274e3b;padding:6px 11px;font-weight:700}
