/* Quiet, tactile objects share the baby's existing room. */
.toy-layer{position:absolute;inset:0;z-index:12;pointer-events:none}.toy-layer[hidden],.toy-shop[hidden],.toy-layer [hidden]{display:none!important}
.toy-layer button{pointer-events:auto;color:#285d59;font:800 .78rem 'DM Sans',sans-serif}
.toy-basket{position:absolute;bottom:10px;left:12px;width:48px;height:48px;border:1px solid #c4dcd2;border-radius:15px;padding:5px;background:#fffaf0ed;box-shadow:0 3px 10px #305e5210}.toy-basket svg{width:100%;height:100%}.toy-basket .toy-count{position:absolute;right:-3px;top:-4px;min-width:17px;border-radius:20px;background:#dfb76d;color:#294f4c;font-size:.65rem;padding:2px}
.toy-basket:disabled{opacity:.45}.toy-tray{position:absolute;left:50%;bottom:65px;transform:translateX(-50%);width:min(310px,calc(100% - 24px));padding:7px 10px;background:#fffdf3f5;border:1px solid #b9d5c9;border-radius:18px;box-shadow:0 6px 24px #28594d1a;pointer-events:auto;backdrop-filter:blur(8px)}
.toy-tray-head{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:.75rem;color:#486b63}.toy-tray-head button{min-width:36px;min-height:32px;border:0;background:transparent;font-size:1.3rem}.toy-tray-items{display:flex;gap:6px;flex-wrap:wrap;justify-content:center;padding:2px 0 5px}.toy-tray-items button{touch-action:none;flex:none;width:48px;height:48px;border:1px solid #d8e7dc;border-radius:12px;background:#eef6ed;padding:3px}.toy-tray-items svg{width:100%;height:100%}.toy-store-link{display:block;width:100%;min-height:36px;border:0;border-top:1px solid #e3ebe0;background:transparent;font-size:.74rem}
.toy-play-note{position:absolute;left:50%;top:58px;transform:translateX(-50%);max-width:calc(100% - 30px);padding:6px 11px;border-radius:14px;background:#fffaf0e6;color:#476b61;font-size:.76rem;line-height:1.35;text-align:center;pointer-events:none}
.held-toy{position:fixed;pointer-events:auto;width:70px;height:76px;transform:translate(-50%,-50%) rotate(var(--toy-angle,0deg));touch-action:none;border:0;background:transparent;padding:0;cursor:grab;filter:drop-shadow(0 5px 4px #3e63522a);z-index:14;user-select:none;-webkit-user-select:none}.held-toy.held{cursor:grabbing;filter:drop-shadow(0 9px 6px #3e635238)}.held-toy svg{display:block;width:100%;height:100%;pointer-events:none}.held-toy[data-toy=car]{width:82px}.held-toy.toy-moved[data-toy=rattle] svg{animation:toy-rattle .16s ease-out}.held-toy.toy-moved[data-toy=cloth] svg{animation:toy-wave .35s ease-out}.held-toy .toy-wheel{transform-box:fill-box;transform-origin:center;rotate:var(--wheel-turn,0deg)}

.avatar.toy-follow .head{animation:none;transform:rotate(var(--toy-head,0deg))}.avatar.toy-follow .eyes>ellipse:nth-of-type(n+3),.avatar.toy-follow .eyes>circle{translate:var(--toy-eye-x,0px) var(--toy-eye-y,0px)}.avatar.toy-rest .head{animation:none;transform:rotate(18deg) translateX(10px) scaleX(.88)}.avatar.toy-rest .eyes{translate:4px 0;opacity:.65}
@keyframes toy-rattle{50%{transform:rotate(9deg)}}@keyframes toy-wave{50%{transform:skewX(7deg) scaleX(.94)}}
/* The store can open from supplies or from the age-stage shop. */
.toy-store-entry{border:1px solid #d0bc9b!important;background:#fff3da!important;color:#79623e!important;border-radius:12px;min-height:44px;padding:7px;font:800 .76rem 'DM Sans',sans-serif}.toy-shop{position:fixed;inset:0;z-index:60;display:flex;justify-content:center;background:var(--season-page,#eaf4f1);padding:max(10px,env(safe-area-inset-top)) 12px max(10px,env(safe-area-inset-bottom));color:#244c4d}.toy-shop-page{width:min(760px,100%);height:100%;display:flex;flex-direction:column;min-height:0}.toy-shop header{display:flex;align-items:center;justify-content:space-between;gap:10px;flex:none;padding:8px 4px}.toy-shop header small{font-size:.68rem;letter-spacing:.12em;color:#6e897a;font-weight:800}.toy-shop h2{margin:4px 0;font:900 1.65rem 'Nunito',sans-serif}.toy-shop header button{flex:none;width:44px;height:44px;border:1px solid #bdd4c9;border-radius:14px;background:#fffdf3;font-size:1.7rem;color:#315e58}.toy-shop-summary{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:5px 4px 10px}.toy-shop-summary p{font-size:.8rem;line-height:1.45;max-width:430px;margin:0}.toy-shop-summary strong{white-space:nowrap;padding:8px 12px;background:#fff1d6;border-radius:14px;color:#826137;font-size:.85rem}.toy-shop-list{min-height:0;overflow-y:auto;overscroll-behavior:contain;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-content:start;padding:5px}.toy-product{display:grid;grid-template-columns:72px minmax(0,1fr);gap:8px 10px;background:#fffdf7;border:1px solid #d4e1d7;border-radius:19px;padding:13px}.toy-product-art{align-self:center}.toy-product-art svg{width:72px;height:78px}.toy-product-copy small{display:block;font-size:.62rem;line-height:1.35;color:#798a70;font-weight:800}.toy-product h3{font:900 1rem/1.15 'Nunito',sans-serif;margin:5px 0}.toy-product p{font-size:.74rem;line-height:1.4;margin:3px 0}.toy-product-copy>span{font-size:.66rem;line-height:1.3;color:#6c8478}.toy-product-actions{grid-column:1/-1}.toy-product-actions button{width:100%;min-height:44px;border:0;border-radius:12px;background:#173e48;color:#fff;font-weight:800;padding:9px}.toy-product[data-owned=true] .toy-product-actions button{background:#edf3e8;color:#55705a;border:1px solid #d3dfcb}.toy-product-actions button:disabled{opacity:.45}.toy-shop footer{padding:10px 5px 2px;font-size:.7rem;line-height:1.45;color:#6b8076;flex:none}.toy-shop #toyShopMessage{flex:none;margin:0 5px 8px;font-size:.78rem;min-height:1.4em;color:#49785e}
@media(max-width:610px){.toy-shop-list{grid-template-columns:1fr;gap:9px}.toy-shop h2{font-size:1.45rem}.toy-shop-summary{align-items:flex-start}.toy-shop-summary p{font-size:.74rem}.toy-shop-summary strong{font-size:.76rem;padding:7px 8px}.toy-product{grid-template-columns:65px minmax(0,1fr);padding:10px}.toy-product-art svg{width:65px;height:70px}.toy-product-actions{grid-column:2}.shop-categories .toy-store-entry{font-size:.68rem;padding:4px}.toy-play-note{top:52px;font-size:.69rem}.held-toy{width:62px;height:68px}}
@media(max-height:600px){.toy-tray{bottom:54px;padding:4px 8px}.toy-tray-items button{height:40px;width:44px}.toy-tray-head{font-size:.67rem}.toy-tray-head button{min-height:25px}.toy-store-link{min-height:28px}.toy-play-note{top:38px}.toy-shop header{padding:1px 4px}.toy-shop-summary p{display:none}.toy-shop-summary{padding:0 4px 4px}.toy-shop footer{padding-top:5px}.toy-product{padding:8px}}
@media(prefers-reduced-motion:reduce){.held-toy.toy-moved svg{animation:none!important}}

.toy-empty{font-size:.75rem;line-height:1.4;color:#6b8579;margin:5px 0}.household-heading .toy-store-entry{font-size:.72rem;max-width:90px}

.held-toy[data-toy=rings]{width:92px;height:94px}

/* The assembled tower is the same kind of movable object as the loose ring. */
.toy-stack-target{position:fixed;bottom:auto;transform:translate(-50%,-50%);z-index:14;width:92px;height:94px;padding:0;border:0;background:transparent;pointer-events:auto;touch-action:none;cursor:grab;user-select:none;-webkit-user-select:none;filter:drop-shadow(0 5px 4px #3e63522a)}
.toy-stack-target>svg{display:block;width:100%;height:100%;overflow:visible}
.toy-stack-target[hidden]{display:none!important}.toy-stack-target.held{cursor:grabbing;filter:drop-shadow(0 9px 6px #3e635238)}.toy-stack-target>*{pointer-events:none}.toy-stack-target:focus-visible{outline:3px solid #386e70;outline-offset:5px}
.toy-basket.toy-cleanup-hint .action-icon{animation:toy-cleanup-nudge .8s ease-in-out 2}
@keyframes toy-cleanup-nudge{50%{transform:translateY(-3px) scale(1.08)}}
@media(prefers-reduced-motion:reduce){.toy-basket.toy-cleanup-hint .action-icon{animation:none}}

/* Once a toy is picked up the tray gets out of the baby's way. */
.toy-put-away{position:absolute;bottom:11px;left:65px;width:38px;height:44px;background:#fffaf0c9;border:1px solid #d3e2d6;border-radius:13px;font-size:1.3rem!important}
.stage>.toy-play-note{position:relative;inset:auto;left:auto;top:auto;bottom:auto;transform:none;max-width:calc(100% - 24px);margin:3px 0;padding:4px 10px;font-size:.72rem;line-height:1.3;flex:none;z-index:13}
.toy-play-note[hidden]{display:none!important}
.avatar.toy-rest .head,.avatar.toy-rest .arm-right{animation:none!important}
.avatar.toy-rest .head{transform-origin:160px 149px}
@media(max-height:600px){.stage>.toy-play-note{font-size:.65rem;margin:1px 0;padding:2px 7px}}

/* The basket is a physical drop target; refusal never locks the held toy. */
.toy-basket.toy-drop-ready{background:#fff0c9;border-color:#b89551;box-shadow:0 0 0 4px #e6c77860;scale:1.08}
.toy-basket-hit{animation:toy-basket-catch .38s ease-out}
.toy-returning{pointer-events:none!important;z-index:14;animation:toy-return .3s cubic-bezier(.25,.7,.35,1) both}
.toy-product-reward{display:block;font-size:.7rem;font-weight:800;font-style:normal;color:#547964;margin-top:5px}
@keyframes toy-return{from{transform:translate(-50%,-50%) scale(1);opacity:1}to{transform:translate(calc(-50% + var(--toy-return-x)),calc(-50% + var(--toy-return-y))) scale(.2);opacity:1}}
@keyframes toy-basket-catch{40%{scale:1.17}100%{scale:1}}
@media(prefers-reduced-motion:reduce){.toy-returning,.toy-basket-hit{animation:none}.toy-basket.toy-drop-ready{scale:1}}

/* One play action also serves as the physical basket drop target. */
.toy-basket.toy-action-basket{position:relative;inset:auto;width:auto;height:auto;min-height:58px;padding:6px 4px;background:var(--season-surface,#fff);box-shadow:none;border-radius:15px}.toy-action-basket .action-icon{width:34px;height:34px}.toy-action-basket .action-icon svg{width:100%;height:100%}.toy-action-basket .toy-basket-label{position:static;font:inherit;color:inherit;background:none;padding:0}.toy-action-basket .toy-count{top:4px;right:5px;min-width:16px;font-size:.6rem}.held-toy[hidden]{display:none!important}
.toy-basket.toy-action-basket.revealed{background:linear-gradient(var(--season-surface,#fff),var(--season-surface,#fff)) padding-box,conic-gradient(from -90deg,var(--ring-color) var(--progress),#dbe8e5 0) border-box}
.toy-basket.toy-action-basket.need-urgent{box-shadow:0 0 0 2px #df78694d,0 0 14px #df786966}
.toy-basket.toy-action-basket.toy-drop-ready{background:#fff0d4;border-color:#b89551;box-shadow:0 0 0 3px #e6c77860}

/* Stable care positions: milk reserves the space later shared by drink and food. */
#actions.fixed-care-grid{grid-template-columns:repeat(12,minmax(0,1fr));grid-template-rows:repeat(2,minmax(58px,auto));gap:6px;margin-top:6px}
#actions.fixed-care-grid>#action-milk{grid-row:1;grid-column:1 / span 6}
#actions.fixed-care-grid.has-food>#action-milk{grid-column:1 / span 3}
#actions.fixed-care-grid>#action-food{grid-row:1;grid-column:4 / span 3}
#actions.fixed-care-grid>#action-diaper{grid-row:1;grid-column:7 / span 3}
#actions.fixed-care-grid>#action-sleep{grid-row:1;grid-column:10 / span 3}
#actions.fixed-care-grid>#toyBasket{grid-row:2;grid-column:1 / span 6}
#actions.fixed-care-grid>#action-pacifier{grid-row:2;grid-column:7 / span 6}
#actions.fixed-care-grid>.action{min-width:0;min-height:58px;position:relative;padding:6px 3px;gap:3px;font-size:clamp(.65rem,2.7vw,.81rem);line-height:1.2}
#actions.fixed-care-grid>.action[hidden]{display:none!important}
#actions.fixed-care-grid>.action.action-locked{opacity:1;color:#829892;border:1px dashed #cad8d3;background:var(--season-surface,#f4f7f4);box-shadow:none;cursor:default}
.action-locked>.action-icon{opacity:.48}.action-lock-note{font-size:.61rem;font-weight:600;color:#738780;line-height:1.15}
.action-locked .action-lock-note:before{content:'';display:inline-block;width:9px;height:11px;margin-right:4px;vertical-align:-1px;background:currentColor;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 14'%3E%3Cpath d='M3 6V4a3 3 0 0 1 6 0v2M2 6h8v7H2Z' fill='none' stroke='black' stroke-width='1.6' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat}
#actions.fixed-care-grid>#action-pacifier.revealed{background:linear-gradient(var(--season-surface,#fff),var(--season-surface,#fff)) padding-box,conic-gradient(from -90deg,var(--ring-color) var(--progress),#dbe8e5 0) border-box}
@media(max-height:600px){#actions.fixed-care-grid{grid-template-rows:repeat(2,minmax(50px,auto));gap:5px}#actions.fixed-care-grid>.action{min-height:50px}.fixed-care-grid .action-icon{width:25px;height:25px;font-size:1.4rem}}
