:root{color-scheme:light;--ink:#59412e;--muted:#988571;--paper:#fff9e9;--cream:#f6e8c8;--gold:#eaba55;--orange:#cc714c;--green:#6c9364;--line:#dbc69e;--shadow:#67462720;--tile:#e9eee4;--tile2:#e3eadd;font-family:'Noto Sans SC','PingFang SC','Microsoft YaHei',sans-serif;font-synthesis:none;color:var(--ink);background:#e9ddc4}
*{box-sizing:border-box}body{margin:0;min-width:340px}button,a,input{font:inherit}button{color:inherit;cursor:pointer;touch-action:manipulation}button{border:0}a{color:inherit;text-decoration:none}button:disabled{cursor:default;opacity:.5}button:focus-visible,a:focus-visible{outline:3px solid #688f76;outline-offset:3px}button:active:not(:disabled){transform:translateY(1px)}img{max-width:100%}h1,h2,h3,p{margin:0}button svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round}.ambient{position:fixed;inset:0;background:radial-gradient(ellipse at 20% 15%,#fff9e6 0,transparent 46%),radial-gradient(ellipse at 88% 90%,#b8c7a3 0,transparent 40%),repeating-linear-gradient(90deg,#ffffff08 0px,#ffffff08 2px,transparent 2px,transparent 45px);pointer-events:none}.layout{position:relative;display:grid;grid-template-columns:minmax(230px,320px) minmax(370px,490px) minmax(220px,290px);gap:36px;align-items:start;justify-content:center;padding:28px 30px 36px;min-height:100svh}.welcome-panel{padding:10px 8px 0;position:sticky;top:28px}.back-link{font-size:12px;color:#917858;display:inline-block;margin-bottom:46px}.brand-stamp{font-size:10px;letter-spacing:2.6px;font-weight:800;color:#a38664;margin-bottom:12px}.welcome-panel h1{position:relative;font-size:66px;line-height:1.1;letter-spacing:2px;font-weight:900;color:#63402a;text-shadow:2px 3px #fff7de}.welcome-panel h1 span{color:#b8613d}.welcome-panel h1 i{position:absolute;font-size:12px;letter-spacing:2px;right:16px;top:54px;writing-mode:vertical-rl;border:1.5px solid #b9754a;border-radius:4px;padding:9px 5px;font-style:normal;transform:rotate(7deg);color:#a96340}.welcome-copy{font-size:14px;line-height:1.9;letter-spacing:1px;margin:22px 0 0;color:#937654}.chef-hero{width:290px;height:auto;display:block;margin:16px auto 0;filter:drop-shadow(0 12px 12px #74512312);animation:breathe 5s ease-in-out infinite;transform-origin:bottom center}.chef-note{position:relative;border-radius:18px;padding:14px 16px;background:#fff9e2d9;border:1px solid #dfcaa7;box-shadow:0 4px 12px #79553209;max-width:260px;margin:-5px auto 18px;transform:rotate(-2deg)}.chef-note span{font-size:11px;color:#b88b62}.chef-note p{font-size:14px;line-height:1.9}.release-note{font-size:11px;letter-spacing:2px;color:#a48d70;display:block;text-align:center}.game-shell{position:relative;background:#fff7e3;border:1px solid #d7bf95;border-radius:30px;box-shadow:0 18px 60px #61462121,0 3px 0 #c6ac80;overflow:hidden;padding:16px 15px 0;max-width:490px;min-width:0}.game-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;gap:12px}.profile{padding:0;display:flex;align-items:center;gap:10px;background:transparent;text-align:left}.profile b{font-size:17px;letter-spacing:1px}.profile small{display:block;font-size:11px;color:#a38c69;margin-top:3px}.avatar{display:inline-block;border-radius:50%;width:44px;height:44px;flex:none;background:#eadbc4 url('./assets/shiliu-chef.webp?v=20260911-28') 50% 11%/150% auto no-repeat;border:2px solid #fffaf0;box-shadow:0 0 0 1px #dcc7a5}.round-btn{width:34px;height:34px;background:#f1e4c9;border:1px solid #dec9a5;border-radius:50%;display:grid;place-items:center;font-size:26px;line-height:1;flex:none}.resources{display:flex;gap:8px;align-items:center;margin-bottom:10px}.resource{height:31px;display:flex;align-items:center;gap:5px;border:1px solid #e9d7b1;border-radius:11px;background:#fbefd5;padding:1px 9px;position:relative;flex:1;min-width:0}.resource strong{font-size:15px;line-height:1}.resource small{font-size:10px;color:#998063;white-space:nowrap}.resource .plus{background:#a7bd73;color:white;border:1px solid #809e57;border-radius:6px;line-height:17px;width:18px;margin-left:auto;font-weight:bold}.mini-icon,.nav-icon,.featured-dish,.sprite{--food-atlas:url('./assets/food-atlas.webp?v=20260911-28');position:relative;display:inline-block;flex:none}.mini-icon{width:28px;height:28px}.energy-icon{color:#e5b345;text-shadow:1px 1px #b38a2b;font-weight:900;font-size:30px;line-height:1}.gift-resource{flex:0 0 auto;padding:1px 7px}.notification{position:absolute;top:-3px;right:2px;width:7px;height:7px;background:#dc7552;border:1px solid #fff8e6;border-radius:50%}.notification.hidden{display:none}.street-banner{height:94px;position:relative;display:block;width:100%;border-radius:15px;overflow:hidden;border:2px solid #e5c697;padding:0;text-align:left;background:#d1ad6c;margin-bottom:12px;isolation:isolate}.street-banner img{width:100%;height:100%;object-fit:cover;object-position:50% 47%;position:absolute;inset:0;z-index:-2}.street-banner:after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#35251588,transparent 75%);z-index:-1}.street-label{position:absolute;left:13px;bottom:15px;color:#fffae8;text-shadow:0 1px 3px #593d25}.street-label span{font-size:10px;letter-spacing:2px;display:block;margin-bottom:4px}.street-label b{font-size:17px}.street-enter{position:absolute;bottom:14px;right:10px;font-size:11px;background:#fff7e7e8;border:1px solid #fff7e7;border-radius:18px;padding:6px 10px;color:#80552d}.section-row{display:flex;justify-content:space-between;align-items:center;margin:0 2px 6px}.section-row h2{font-size:12px;font-weight:700;letter-spacing:1px}.section-row>span{font-size:10px;color:#a28c6b}.orders{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.order-card{position:relative;background:#fffdf4;border:1px solid #dfcca7;border-radius:14px;overflow:hidden;box-shadow:0 3px 0 #d8c5a040;min-width:0}.customer-row{display:flex;align-items:center;gap:5px;padding:5px 7px 4px;background:#f2dfc6}.customer-row.green{background:#e4ebcf}.customer-row.blue{background:#dfe9e5}.customer-row.yellow{background:#f5e6bb}.customer-avatar{width:26px;height:26px;flex:none;display:block;background:url('./assets/shiliu-chef.webp?v=20260911-28') 50% 5%/155% auto no-repeat;border-radius:50%;background-color:#fff7e0}.customer-row b{font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.order-items{display:flex;justify-content:center;align-items:center;min-height:48px;gap:4px;padding:3px}.requirement{position:relative;background:transparent;padding:0;display:inline-flex;flex-direction:column;align-items:center;min-width:0}.requirement .sprite{width:36px;height:36px}.quantity{font-size:10px;background:#f2e4c8;color:#876e4c;border:1px solid #e1d0ad;border-radius:7px;padding:0 4px;position:absolute;right:-2px;bottom:0;line-height:14px}.quantity.enough{background:#809c60;color:#fff;border-color:#779254}.order-button{width:calc(100% - 12px);margin:1px 6px 6px;border-radius:8px;min-height:27px;font-size:11px;font-weight:700;background:#f1e8d3;color:#a38f72;border:1px solid #e1d2b2;display:flex;align-items:center;justify-content:center;gap:3px}.order-button.ready{background:#80a666;border-color:#648b4b;color:#fffbe8;box-shadow:0 2px 0 #608448}.order-button .mini-icon{width:19px;height:19px}.order-button.ready::after{content:'交付';font-size:10px;margin-left:5px;font-weight:500}.board-heading{display:flex;justify-content:space-between;font-size:10px;color:#99876a;align-items:center;margin:11px 3px 7px}.open-dot{display:inline-block;width:5px;height:5px;border-radius:50%;background:#98aa68;margin-right:5px}.text-button{background:transparent;color:#9b774b;padding:3px 0;font-size:11px}.board{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;padding:7px;background:#cfdbc9;border:2px solid #b7c5ad;border-radius:16px;box-shadow:inset 0 2px 5px #72886615;touch-action:none;user-select:none;-webkit-user-select:none;position:relative}.cell{aspect-ratio:1;background:#edf0e6;border-radius:8px;border:1px solid #dbe3d1;box-shadow:0 2px 0 #b4c4a85c;position:relative;padding:2px;min-width:0;display:grid;place-items:center;touch-action:none;isolation:isolate;transition:background .12s,box-shadow .12s;outline-offset:-2px}.cell:nth-child(even){background:#e4eadc}.cell .sprite{width:95%;height:95%;pointer-events:none;filter:drop-shadow(0 2px 1px #69563515);transition:transform .12s}.cell.generator{background:#f9e7bc;border-color:#d7bb83}.cell.tool{background:#eee1ce;border-color:#d4ba95}.cell.selected{box-shadow:inset 0 0 0 2px #e3a344,0 0 0 1px #d69632;background:#fff2c8}.cell.compatible{box-shadow:inset 0 0 0 2px #8fa870}.cell.drag-target{background:#e5f4bf;box-shadow:inset 0 0 0 2px #7a984f}.cell.source-drag .sprite{opacity:.3}.cell.locked{background:repeating-linear-gradient(135deg,#c2cfb5 0,#c2cfb5 4px,#bfccb2 4px,#bfccb2 8px);border-color:#b5c4a9;box-shadow:none}.lock-symbol{font-size:12px;color:#8b9e7f;opacity:.7}.cell-badge{position:absolute;right:1px;bottom:0;line-height:12px;font-size:8px;background:#fdf6ddde;border:1px solid #cfba93;border-radius:5px;padding:0 3px;z-index:2;pointer-events:none}.cell-badge.power{color:#ab822f;font-size:15px;line-height:16px;background:#fff8dc;border-color:#d7bd80}.cell-badge.ready{color:#fff;background:#769d59;border-color:#56793e;font-size:10px}.cell-badge.timer{color:#785d40;font-size:9px}.selection{min-height:45px;display:flex;align-items:center;justify-content:space-between;padding:5px 3px;font-size:10px;color:#91795b;gap:7px}.selection span{line-height:1.5}.selection .selected-info{display:flex;align-items:center;gap:6px;min-width:0}.selection b{font-size:12px;color:#6e5034}.selection small{font-size:9px;display:block;color:#a08a6b}.selection-actions{display:flex;gap:5px;flex:none}.tiny-btn{font-size:10px;background:#f5e6c8;border:1px solid #dbc294;border-radius:7px;padding:5px 8px;white-space:nowrap}.bottom-nav{margin:0 -15px;background:#f9edce;border-top:1px solid #e3cda3;display:flex;justify-content:space-around;padding:6px 5px 7px}.bottom-nav button{background:none;display:flex;align-items:center;flex-direction:column;position:relative;min-width:65px;gap:1px;opacity:.73;border-radius:10px}.bottom-nav button.active{opacity:1;background:#f0deaa55}.bottom-nav b{font-size:10px;letter-spacing:1px}.nav-icon{width:30px;height:30px}.bottom-nav small{position:absolute;right:0;top:1px;background:#efdec0;border:1px solid #d4bb8c;font-size:8px;border-radius:6px;padding:0 3px}.save-state{font-size:9px;text-align:center;background:#f9edce;color:#ab9675;margin:0 -15px;padding:0 8px 5px}.save-state.error{color:#a94931;background:#ffe3cb;padding:8px;font-size:12px}.desk-panel{padding-top:68px;position:sticky;top:0;display:flex;flex-direction:column;gap:25px}.paper-card{padding:23px 21px;background:#fff9e9c9;border:1px solid #dfcfac;border-radius:5px 5px 18px 5px;box-shadow:0 5px 18px #70502e0a;position:relative}.paper-card h2{font-size:20px;margin:8px 0 17px;font-weight:800;letter-spacing:1px}.card-eyebrow{font-size:9px;letter-spacing:2px;color:#aa8a61}.desk-stat{display:flex;justify-content:space-between;border-bottom:1px dashed #deceb3;padding:10px 0;font-size:12px;color:#9b8362}.desk-stat b{color:#725137;font-size:14px}.small-btn{padding:10px 13px;border:1px solid #d0b98f;border-radius:9px;background:#f3e7cc;width:100%;font-size:12px;margin-top:18px;display:flex;justify-content:space-between}.recipe-preview{transform:rotate(2deg);text-align:center;padding-top:25px}.tape{position:absolute;width:66px;height:20px;background:#b7c18b66;left:50%;top:-9px;transform:translateX(-50%) rotate(-4deg)}.featured-dish{width:104px;height:104px;margin:13px 0 6px}.recipe-preview h3{font-size:18px;letter-spacing:1px}.recipe-preview p{font-size:11px;color:#a28b6e;margin:10px 0}.recipe-preview .text-button{font-size:12px}.desk-tip{padding:0 16px;transform:rotate(-1deg)}.desk-tip b{font-size:13px;color:#876b4b}.desk-tip p{font-size:12px;line-height:1.9;color:#a18d70;margin-top:9px}.modal{width:min(460px,calc(100vw - 24px));max-height:min(88svh,850px);border:2px solid #d4b384;border-radius:24px;background:#fff8e8;color:var(--ink);box-shadow:0 24px 90px #352b2940;padding:0;overscroll-behavior:contain}.modal::backdrop{background:#3b332568;backdrop-filter:blur(4px)}.modal>header{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:20px 22px 16px;border-bottom:1px solid #e5d5b8;position:sticky;top:0;background:#fff8e8;z-index:5}.modal>header small{font-size:10px;letter-spacing:2px;color:#a88b61;display:block;margin-bottom:4px}.modal>header h2{font-size:24px;font-weight:800;letter-spacing:1px}.modal-content{padding:18px 20px 24px}.modal-content p{font-size:14px;line-height:1.8;color:#9b8060}.modal-content h3{font-size:17px;margin-bottom:8px}.modal-content .sprite{width:50px;height:50px}.modal-content .requirement .sprite{width:42px;height:42px}.modal .round-btn{font-size:26px}.modal-content .stack{display:grid;gap:14px}.recipe-card,.task-card,.shop-card{padding:15px;background:#fffdf4;border:1px solid #e4d2ad;border-radius:16px;position:relative}.recipe-card.locked{opacity:.58}.recipe-head{display:flex;align-items:center;gap:12px}.recipe-head h3{margin:0 0 4px;font-size:16px}.recipe-head p{font-size:11px;line-height:1.5}.ingredient-line{display:flex;gap:8px;align-items:center;padding:12px 0}.ingredient-line>span{font-size:12px;color:#b9a17b}.primary-btn{background:#ce7950;color:#fffaeb;border:1px solid #ab5d39;box-shadow:0 3px 0 #a65d3c;border-radius:11px;min-height:42px;font-size:14px;font-weight:700;padding:10px 18px;display:inline-flex;align-items:center;justify-content:center;gap:7px}.primary-btn.green{background:#82a265;border-color:#638448;box-shadow:0 3px 0 #64854b}.primary-btn:disabled{box-shadow:none}.primary-btn.full{width:100%}.secondary-btn{border:1px solid #d6bd95;background:#f5e7ca;border-radius:10px;min-height:40px;padding:9px 14px;font-size:13px}.button-row{display:flex;gap:9px;flex-wrap:wrap;margin-top:12px}.modal-caption{margin-bottom:16px}.pill{display:inline-block;font-size:10px;background:#efdfbd;border-radius:6px;padding:3px 6px;color:#a78454}.task-card{margin-bottom:12px}.task-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.task-header h3{margin:0;font-size:15px}.task-card p{font-size:12px}.progress-track{height:7px;background:#eee2c9;border-radius:5px;margin:12px 0;overflow:hidden}.progress-track i{display:block;background:#91aa72;height:100%;border-radius:5px}.task-foot{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:#997d56}.task-foot .secondary-btn{font-size:12px;min-height:30px;padding:5px 10px}.storage-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:12px 0}.storage-slot{aspect-ratio:1;border-radius:12px;background:#f0e4cd;border:1px dashed #ccb58c;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:10px;color:#a48e70;padding:2px}.storage-slot .sprite{width:55px;height:55px}.storage-slot.filled{background:#fff9e9;border-style:solid}.setting-row{display:flex;justify-content:space-between;gap:15px;align-items:center;border-bottom:1px solid #e5d5b9;padding:14px 0;font-size:14px}.toggle{width:45px;height:26px;border-radius:18px;background:#d8c8aa;padding:3px;display:flex;align-items:center}.toggle:after{content:'';width:20px;height:20px;background:#fff9e9;border-radius:50%;box-shadow:0 1px 3px #78502c25}.toggle[aria-checked=true]{background:#91a96e;justify-content:flex-end}.notice{padding:13px;border-radius:10px;background:#f2e6cc;font-size:12px!important;line-height:1.8;margin:12px 0}.danger{color:#ac5840}.help-list{padding-left:20px;font-size:14px;line-height:1.8}.help-list li{padding-bottom:12px}.collection{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin:16px 0}.collection-item{text-align:center;padding:6px;background:#f3e8d0;border-radius:10px;font-size:10px}.collection-item .sprite{width:58px;height:58px}.collection-item.undiscovered .sprite{filter:grayscale(1);opacity:.25}.collection-item span:last-child{display:block;margin-top:4px}.toast{position:fixed;bottom:100px;left:50%;transform:translate(-50%,15px);background:#62452eea;color:#fff7e3;border:1px solid #fff5d455;border-radius:14px;padding:12px 19px;font-size:13px;text-align:center;z-index:50;opacity:0;pointer-events:none;max-width:min(400px,85vw);transition:opacity .18s,transform .18s;line-height:1.6;box-shadow:0 5px 24px #4a30232a}.toast.show{opacity:1;transform:translate(-50%,0)}.toast button{display:inline-block;margin-left:10px;background:#ecd1a4;color:#62452e;border-radius:6px;font-size:12px;padding:4px 8px;pointer-events:auto}.effects{position:fixed;inset:0;pointer-events:none;z-index:60}.drag-ghost{position:fixed;width:65px;height:65px;pointer-events:none;z-index:100;filter:drop-shadow(0 8px 4px #67472c44);transform:translate(-50%,-72%) scale(1.16)}.pop{animation:pop .35s ease-out}.float-reward{position:fixed;font-size:21px;font-weight:900;color:#bc842c;text-shadow:0 1px #fff9d9;animation:reward 1.1s ease-out forwards;pointer-events:none}.spark{position:fixed;width:7px;height:7px;background:#f0bd4e;border-radius:2px;animation:spark .6s ease-out forwards;transform:rotate(45deg)}.tutorial{padding:11px 12px;background:#fff1c9;border:1px solid #dec99a;border-radius:12px;font-size:12px;margin-bottom:12px;display:flex;gap:9px;align-items:flex-start;line-height:1.65}.tutorial b{display:block;font-size:13px}.tutorial button{background:none;font-size:20px;padding:0 0 0 8px;color:#af9470}.tutorial .avatar{width:34px;height:34px}.street-scene{position:relative;aspect-ratio:3/2;overflow:hidden;border-radius:15px;border:2px solid #d6b682;background:#e8d0a4;margin-bottom:16px}.street-scene>img{width:100%;height:100%;object-fit:cover}.shop-cover{position:absolute;top:0;bottom:0;display:grid;place-items:center;background:#ebdfc5df;backdrop-filter:grayscale(1) blur(2px);color:#9b7d55;text-align:center;font-size:12px;border-right:1px dashed #c8b18b}.shop-cover.left{left:0;width:33%}.shop-cover.right{right:0;width:30%;border-left:1px dashed #c8b18b}.shop-cover.center{left:33%;width:37%;background:#efe6d1c2}.shop-cover span{background:#fff6dfd9;border:1px solid #d5bc93;padding:8px;border-radius:10px;line-height:1.6}.shop-level{position:absolute;bottom:10px;left:10px;background:#fff5dadf;border:1px solid #d4b78b;border-radius:8px;padding:4px 9px;font-size:10px}.shop-card{margin-top:12px}.shop-card .shop-title{display:flex;justify-content:space-between;align-items:center}.shop-card p{font-size:12px;margin-top:7px}.stage-dots{display:flex;gap:4px;margin:10px 0}.stage-dots i{height:5px;flex:1;border-radius:3px;background:#e8dcc2}.stage-dots i.done{background:#9bb275}.shop-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:12px}.shop-footer .primary-btn{font-size:12px;min-height:34px;padding:7px 10px}.shop-footer small{font-size:11px;color:#ab8c62}.story-box{font-size:14px;line-height:1.9;background:#f8ebcd;border:1px solid #e0c9a3;padding:15px;border-radius:14px;margin-bottom:15px}.modal-tabs{display:flex;gap:6px;margin-bottom:15px}.modal-tabs button{flex:1;background:#f0e2c7;border:1px solid #dbc399;border-radius:9px;padding:8px;font-size:13px}.modal-tabs button.on{background:#91a875;border-color:#77945b;color:#fff9e6}.footnote{font-size:10px!important;color:#b29c7b!important;margin-top:16px!important;text-align:center}.big-energy{display:flex;align-items:center;justify-content:center;gap:10px;font-size:38px;margin:20px}.big-energy .energy-icon{font-size:65px}.hint-link{color:#886335;text-decoration:underline;font-size:12px;cursor:pointer}
@keyframes breathe{50%{transform:translateY(-4px) rotate(.6deg)}}@keyframes pop{0%{transform:scale(.65)}50%{transform:scale(1.13)}100%{transform:scale(1)}}@keyframes reward{to{transform:translateY(-75px);opacity:0}}@keyframes spark{to{transform:translate(var(--dx),var(--dy)) rotate(180deg);opacity:0}}
body.reduce-motion *,body.reduce-motion *:before,body.reduce-motion *:after{animation:none!important;transition:none!important}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
@media(min-width:1450px){.layout{gap:65px;padding-top:40px;grid-template-columns:310px 490px 280px}.welcome-panel{padding-top:30px}.chef-hero{width:315px}.welcome-panel h1{font-size:78px}}
@media(max-width:1120px){.layout{grid-template-columns:230px minmax(370px,460px);gap:30px;padding:20px}.desk-panel{display:none}.welcome-panel h1{font-size:60px}.welcome-panel h1 i{right:0}.chef-hero{width:235px}}
@media(max-width:760px){body{background:#fff7e3}.ambient,.welcome-panel,.desk-panel{display:none}.layout{display:block;padding:0;min-height:100svh}.game-shell{margin:0 auto;border:0;border-radius:0;box-shadow:none;width:100%;max-width:490px;padding:calc(10px + env(safe-area-inset-top)) 12px 0;min-height:100svh}.game-top{margin-bottom:7px}.profile b{font-size:16px}.avatar{width:39px;height:39px}.resources{margin-bottom:8px}.street-banner{height:85px;margin-bottom:9px}.bottom-nav{margin:0 -12px;padding:5px 3px 4px}.save-state{margin:0 -12px;padding-bottom:max(4px,env(safe-area-inset-bottom))}.board{gap:3px;padding:6px}.cell{border-radius:7px}.selection{min-height:42px}.order-items{min-height:43px}.requirement .sprite{width:32px;height:32px}.customer-row{padding:4px 6px 3px}.customer-avatar{width:22px;height:22px}.order-button{min-height:25px}.section-row{margin-bottom:5px}.board-heading{margin-top:9px;margin-bottom:5px}.toast{bottom:85px}.nav-icon{width:28px;height:28px}.bottom-nav b{font-size:10px}.modal-content{padding:15px}.modal>header{padding:17px}.back-link{margin-bottom:20px}}
@media(max-width:760px) and (max-height:760px){.street-banner{height:52px}.street-label{bottom:9px;left:10px}.street-label span{display:none}.street-label b{font-size:13px}.street-enter{bottom:9px;font-size:10px;padding:3px 7px}.game-top{margin-bottom:5px}.profile small{display:none}.avatar{width:32px;height:32px}.resources{height:27px;margin-bottom:6px}.resource{height:27px}.board-heading{margin-top:6px}.board{gap:2px;padding:5px}.selection{min-height:35px}.customer-avatar{width:18px;height:18px}.customer-row b{font-size:9px}.order-items{min-height:37px}.requirement .sprite{width:29px;height:29px}.order-button{min-height:22px;margin-bottom:4px}.section-row h2{font-size:11px}.nav-icon{width:24px;height:24px}.bottom-nav{padding:4px 3px 3px}.bottom-nav b{font-size:9px}.save-state{font-size:8px}.game-shell{padding-top:max(6px,env(safe-area-inset-top))}}
@media(min-width:761px){.game-shell{margin-bottom:16px}}
.generator-level{position:absolute;top:1px;left:3px;font-size:8px;color:#a57835}.steam{position:absolute;left:45%;top:8%;width:7px;height:18px;border-left:3px solid #ffffffb0;border-radius:50%;pointer-events:none;animation:steam 1.8s infinite ease-out}.steam.s2{left:62%;animation-delay:.8s}.steam.s1{left:37%}.tutorial-target{animation:hintpulse 2s infinite}.cooking-display,.item-portrait{position:relative;display:flex;justify-content:center;margin:10px auto 16px}.cooking-display .sprite,.item-portrait .sprite{width:140px;height:140px}.center{text-align:center;justify-content:center}.full{width:100%}.chain-strip{display:flex;gap:4px;margin:16px 0}.chain-strip button{min-width:0;flex:1;display:flex;flex-direction:column;align-items:center;background:#f1e6cf;border:1px solid #dec9a7;border-radius:9px;padding:4px 2px}.chain-strip .sprite{width:100%;height:auto;aspect-ratio:1}.chain-strip small{font-size:10px}.chain-strip .current{background:#f1dbaa;border-color:#c29d61}.uses-list{display:flex;gap:10px;flex-wrap:wrap}.uses-list button{display:flex;align-items:center;gap:8px;padding:8px;background:#f5e9ce;border-radius:10px;font-size:12px}.journal-stats{display:flex;justify-content:space-around;margin:10px 0 24px;padding:15px 0;background:#f2e5c9;border-radius:13px}.journal-stats div{display:flex;flex-direction:column;align-items:center;gap:5px}.journal-stats b{font-size:25px;color:#a67343}.journal-stats span{font-size:11px;color:#a18a6a}.story-chef{display:block;width:170px;height:auto;margin:0 auto 15px}.gift-card .primary-btn{margin-top:15px}.cooking-display .steam{top:0;left:50%;height:40px;width:16px}.text-button.full{min-height:36px}.collection button{color:inherit;border:1px solid #e6d5b2}.collection-item .sprite{max-width:100%;height:auto;aspect-ratio:1}.order-button.ready{animation:readyglow 3s ease-in-out infinite}.modal-content .full{margin-top:10px}.modal-content .notice{margin:15px 0}.modal-content .text-button{font-size:12px;padding:8px 0}.modal-content .task-card .pill{white-space:nowrap}.resource:focus-visible{outline-offset:1px}
@keyframes steam{0%{opacity:0;transform:translateY(4px) scale(.65)}40%{opacity:.8}100%{opacity:0;transform:translateY(-15px) scale(1.2)}}@keyframes hintpulse{50%{box-shadow:inset 0 0 0 2px #d4a251,0 0 8px #d4a25166}}@keyframes readyglow{50%{filter:brightness(1.08)}}
@media(max-width:390px){.selection-actions{gap:3px}.tiny-btn{padding:4px 6px;font-size:9px}.selection b{font-size:11px}.chain-strip{gap:3px}.resource{padding-left:6px;padding-right:6px}.resource small{font-size:9px}}

@media(min-width:761px) and (max-height:900px){.layout{grid-template-columns:250px 390px 250px;gap:30px;padding-top:18px}.welcome-panel{top:18px}.back-link{margin-bottom:28px}.welcome-panel h1{font-size:59px}.welcome-panel h1 i{right:3px}.chef-hero{width:230px}.welcome-copy{margin-top:15px}.desk-panel{padding-top:38px}.game-shell{padding-top:11px}.game-top{margin-bottom:7px}.profile .avatar{width:33px;height:33px}.profile b{font-size:15px}.profile small{font-size:9px}.resource{height:28px}.resources{margin-bottom:7px}.street-banner{height:53px;margin-bottom:8px}.street-label{bottom:8px}.street-label span{display:none}.street-label b{font-size:13px}.street-enter{padding:4px 8px;bottom:9px}.customer-avatar{width:20px;height:20px}.customer-row{padding:4px 6px}.customer-row b{font-size:9px}.order-items{min-height:39px}.requirement .sprite{width:29px;height:29px}.order-button{min-height:24px;font-size:10px}.board{gap:3px;padding:5px}.board-heading{margin:7px 3px 5px}.selection{min-height:39px}.bottom-nav{padding-top:4px;padding-bottom:4px}.nav-icon{width:25px;height:25px}.game-shell .bottom-nav b{font-size:9px}}
@media(min-width:761px) and (max-height:760px){.game-shell .street-banner{display:none}.welcome-panel .chef-hero{width:200px}.welcome-copy{font-size:13px}.chef-note{padding:10px 13px}.desk-panel{padding-top:18px}.paper-card{padding:18px}.paper-card h2{font-size:18px}.featured-dish{width:84px;height:84px}}

.locked-expansion{grid-column:1/-1;min-height:28px;border-radius:6px;background:#c3d0b8;border:1px dashed #a6b798;color:#657c54;font-size:11px;padding:5px;touch-action:manipulation}.customer-row b,.bottom-nav b,.game-shell .bottom-nav b{font-size:11px}.selection{font-size:11px}.selection small{font-size:10px}@media(max-width:760px){.expanded-board .street-banner{display:none}}@media(max-width:760px) and (max-height:700px){.street-banner{display:none}.selection{min-height:35px}.game-shell{padding-left:10px;padding-right:10px}.board{gap:2px}.customer-row b{font-size:10px}}
.shop-art{display:block;aspect-ratio:1;width:100%;background-image:url('./assets/shop-growth-atlas.webp?v=20260911-28');background-size:300% 300%;background-repeat:no-repeat;border-radius:12px;flex:none}.street-overview{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;background:#fff8e8;border-radius:14px;padding:10px 0}.street-overview figure{margin:0;min-width:0}.street-overview figcaption{text-align:center;font-size:11px;font-weight:700;line-height:1.5}.street-overview small{display:block;font-weight:400;color:#aa8659;font-size:10px;margin-top:2px}.shop-detail{display:flex;gap:14px;align-items:center;margin-top:12px}.shop-detail .shop-art{width:38%;max-width:160px}.shop-benefits{display:flex;flex-direction:column;gap:9px;min-width:0}.shop-benefits small{font-size:10px;color:#a88a60}.shop-benefits b{font-size:14px;color:#648049;line-height:1.6}.shop-benefits span{font-size:11px;color:#a08054;line-height:1.6}.shop-history{margin-top:17px;font-size:12px;color:#a58966;border-top:1px solid #eadcc3;padding-top:10px}.shop-history summary{cursor:pointer}.shop-history ol{padding-left:22px;display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}.shop-history .completed{color:#708b51}.celebration-shop{max-width:280px;margin:0 auto 15px}.upgrade-reward{display:flex;flex-direction:column;text-align:center;gap:9px;border:1px solid #c5d3af;background:#edf1dc;padding:16px;border-radius:12px;margin-bottom:12px}.upgrade-reward span,.upgrade-reward small{font-size:12px;color:#849066}.upgrade-reward b{font-size:18px;color:#647e47}.mastery-info{display:flex;align-items:center;justify-content:space-between;gap:6px;font-size:10px;color:#a1855e;margin-top:14px}.mastery-info b{color:#79945d;font-weight:600}.mastery-next{font-size:10px!important;line-height:1.5!important;margin-top:5px;color:#a08665!important}.recipe-card .progress-track{height:5px;margin:8px 0 0}.order-bonus{font-size:9px;color:#68834e;background:#e6edce;border-radius:4px;position:absolute;right:5px;top:32px;padding:1px 3px;line-height:13px}.reward-breakdown{font-size:12px!important;text-align:center;color:#6d8756!important}@media(max-width:390px){.shop-detail{gap:9px}.shop-benefits b{font-size:12px}.shop-history ol{font-size:11px}}
.journal-nav{display:flex;gap:5px;margin-bottom:18px}.journal-nav button{flex:1;min-height:37px;border:1px solid #dec8a0;border-radius:9px;font-size:12px;background:#f1e5cb;color:#96754f;padding:6px}.journal-nav button.on{color:#fff8e7;background:#8ca66c;border-color:#738e56}.chapter-cover,.banquet-header{padding:20px 16px;background:#f5e9cb;border:1px solid #dec8a2;border-radius:14px;margin-bottom:16px}.chapter-cover small,.banquet-header small{font-size:11px;color:#b18b57;letter-spacing:1px}.chapter-cover h3,.banquet-header h3{font-size:23px;margin:10px 0}.chapter-cover p,.banquet-header p{font-size:13px!important}.chapter-goals{display:grid;gap:10px;margin:18px 0}.chapter-goal{display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:13px;padding:13px 10px;border:1px solid #e5d7ba;background:#fffdf3;border-radius:10px;color:#a08764}.chapter-goal b{font-size:12px;white-space:nowrap}.chapter-goal.done{color:#698650;background:#edf0de;border-color:#ccd7b7}.chapter-history{font-size:13px;margin-top:20px;color:#997955}.chapter-history summary{padding:10px 0;cursor:pointer}.chapter-history ol{list-style:none;padding:0}.chapter-history li{padding:12px 6px;border-bottom:1px dashed #ddceb1;display:flex;justify-content:space-between;gap:10px}.chapter-history li span{font-size:11px;color:#b69b76}.chapter-history li.done b{color:#738d53}.banquet-menu-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.banquet-menu{border:1px solid #e3d1ad;border-radius:13px;background:#fffdf5;text-align:center;padding:12px 9px}.banquet-menu .sprite{width:66px;height:66px}.banquet-menu h3{font-size:15px!important}.banquet-menu p{font-size:11px!important;min-height:40px;line-height:1.7!important}.banquet-menu .secondary-btn{font-size:11px;padding:7px;min-height:38px;margin-top:9px}.banquet-courses{display:grid;grid-template-columns:repeat(5,1fr);gap:5px;margin:16px 0}.banquet-courses>div{display:flex;flex-direction:column;align-items:center;gap:4px;min-width:0;background:#f1e5ce;border:1px solid #e3d2b0;border-radius:10px;padding:8px 2px;font-size:10px;color:#a48a63}.banquet-courses .sprite{width:100%;height:auto;aspect-ratio:1}.banquet-courses .current{border:2px solid #a2b47b;background:#f4f4df}.banquet-courses .served{opacity:.6;background:#e7edd6;color:#638347}.banquet-medals{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.banquet-medals>div{display:flex;flex-direction:column;align-items:center;padding:10px 3px;border-radius:12px;border:1px dashed #dcc8a4;background:#eee5d2;color:#b6a182;gap:5px;text-align:center}.banquet-medals .sprite{filter:grayscale(.8);opacity:.4;max-width:100%}.banquet-medals .earned{background:#fff0c9;border:1px solid #d9bd80;color:#946b39}.banquet-medals .earned .sprite{filter:none;opacity:1}.banquet-medals b{font-size:10px}.banquet-medals span:last-child{font-size:10px}.medal-title{margin-top:24px!important;font-size:17px!important}.chapter-hint{color:#7b8c58;max-width:85%;text-align:left;font-size:11px;min-height:23px}.board-heading{gap:6px}.board-heading>button:last-child{white-space:nowrap}
.motion-cat{display:block;aspect-ratio:1;background-image:url('./assets/shiliu-motion.webp?v=20260911-28');background-size:300% 200%;background-position:0 0;background-repeat:no-repeat;border-radius:20px;animation:shiliu-blink 6s steps(1,end) infinite}.pet-shiliu{padding:0;background:#fff8e8;border:1px solid #e7d8b7;border-radius:34px;overflow:hidden;cursor:pointer;box-shadow:0 9px 25px #73522c10;transition:transform .2s}.pet-shiliu .motion-cat{width:100%}.pet-shiliu:hover{transform:rotate(-2deg)}.story-mascot{width:76px;float:right;margin:-6px -3px 5px 8px}.hint-cat{width:35px;flex:none;border-radius:9px}.hint-copy{flex:1}.is-celebrating .motion-cat{animation:shiliu-wave 1.3s steps(1,end) 1}.is-celebrating .profile .avatar{animation:avatar-cheer .6s ease-out 2}.cell.cooking{background:#f5d9aa;box-shadow:inset 0 -6px 9px #e7a44b55,0 2px 0 #b9986540}.cell.cooking>.sprite{animation:pot-simmer 1.2s ease-in-out infinite;transform-origin:50% 85%}.cell.dish-ready>.sprite{animation:dish-ready 2.8s ease-in-out infinite}.cell.cooking::after{content:'';position:absolute;bottom:3px;left:28%;width:44%;height:7px;background:#f3b74f;border-radius:50%;filter:blur(3px);opacity:.7;z-index:-1;animation:stove-glow .9s ease-in-out infinite alternate}.cell.cooking .steam{border-color:#fff8e9;filter:drop-shadow(0 0 1px #a0835b55);animation-duration:1.9s}.ingredient-arrive>.sprite{animation:ingredient-arrive .3s cubic-bezier(.2,.8,.3,1.25)}.stove-start{animation:stove-start .45s ease-out}.dish-arrive{animation:dish-arrive .5s ease-out}.flying-food{position:fixed;width:48px;height:48px;pointer-events:none;filter:drop-shadow(0 5px 4px #684b3044)}.page-paused *, .page-paused *::before,.page-paused *::after{animation-play-state:paused!important}.reduce-motion .motion-cat{background-position:0 0}.modal[open]{animation:modal-open .2s ease-out}.modal::backdrop{animation:backdrop-open .2s ease-out}@keyframes shiliu-blink{0%,79%{background-position:0 0}80%{background-position:50% 0}82%{background-position:100% 0}84%{background-position:50% 0}86%,100%{background-position:0 0}}@keyframes shiliu-wave{0%{background-position:0 100%}23%{background-position:50% 100%}47%{background-position:0 100%}62%{background-position:50% 100%}78%{background-position:100% 100%}100%{background-position:0 0}}@keyframes avatar-cheer{0%,100%{transform:translateY(0) rotate(0)}40%{transform:translateY(-4px) rotate(-7deg)}70%{transform:translateY(-1px) rotate(5deg)}}@keyframes pot-simmer{0%,100%{transform:translateY(0) rotate(-1deg)}50%{transform:translateY(-1.5px) rotate(1deg)}}@keyframes dish-ready{0%,80%,100%{transform:translateY(0)}88%{transform:translateY(-3px)}94%{transform:translateY(-1px)}}@keyframes stove-glow{to{opacity:.35;transform:scaleX(.8)}}@keyframes ingredient-arrive{0%{transform:translateY(-10px) scale(.5);opacity:0}70%{transform:translateY(1px) scale(1.08);opacity:1}100%{transform:none;opacity:1}}@keyframes stove-start{0%{transform:scale(1)}40%{transform:scale(.92)}75%{transform:scale(1.04)}100%{transform:scale(1)}}@keyframes dish-arrive{0%{transform:translateY(-14px) rotate(-8deg);opacity:.2}65%{transform:translateY(2px) rotate(2deg)}100%{transform:none;opacity:.6}}@keyframes modal-open{from{opacity:0;transform:translateY(8px) scale(.985)}to{opacity:1;transform:none}}@keyframes backdrop-open{from{opacity:0}to{opacity:1}}


.header-actions{display:flex;gap:7px;align-items:center}.focus-switch{font-size:11px;padding:6px 9px;border:1px solid #decaa4;background:#f7ebd0;border-radius:10px;min-height:30px;color:#90734f}.focus-switch[aria-pressed=true]{background:#8fa773;border-color:#6f8b51;color:#fffbea}.board-window{position:relative;border-radius:16px;scrollbar-width:thin;scrollbar-color:#adbd9a #e3eadb;overscroll-behavior:contain;scroll-padding-top:60px}.board{touch-action:pan-y}.cell{touch-action:pan-y}.cell.occupied{touch-action:none}.board-scroll-tools{display:none}.focus-mode .street-banner,.focus-mode .section-row,.focus-mode .customer-row{display:none}.customer-avatar{background-image:url('./assets/shiliu-motion.webp?v=20260911-28');background-size:512% 341.333%;background-position:9.71% 3.87%;animation:guest-look 8s ease-in-out infinite;transform-origin:50% 90%}.customer-avatar.mood-1{background-position:92.56% 3.87%;animation-delay:-2s}.customer-avatar.mood-2{background-position:9.71% 74.59%;animation-delay:-4s}.customer-avatar.mood-3{background-position:92.56% 74.59%;animation-delay:-6s}@keyframes guest-look{0%,72%,100%{transform:rotate(0)}78%{transform:rotate(-6deg) translateY(-1px)}86%{transform:rotate(4deg)}94%{transform:rotate(0)}}
@media(max-width:760px){.layout{height:100svh;min-height:0}.game-shell{height:100svh;min-height:0;display:flex;flex-direction:column;overflow:hidden}.game-top,.resources,.street-banner,.order-section,.board-heading,.selection,.bottom-nav,.save-state{flex-shrink:0}.board-window{min-height:0;flex:1;overflow-y:auto;overflow-x:hidden;border:2px solid #b7c5ad;background:#cfdbc9}.board-window .board{border:0;border-radius:12px;box-shadow:none;padding:6px}.board-window .cell:nth-child(-n+7){position:sticky;top:0;z-index:4;box-shadow:0 3px 0 #aaba9766}.board-scroll-tools{display:flex;align-items:center;gap:5px;height:24px;flex-shrink:0;padding:0 2px;color:#9ba382}.board-scroll-tools span{flex:1;font-size:9px;white-space:nowrap}.board-scroll-tools button{width:28px;height:23px;background:#e5ebd8;color:#7a9063;border-radius:5px;font-size:13px}.board-scroll-tools button:disabled{opacity:.3}.selection{min-height:39px;padding:3px}.hint-cat{width:30px}.bottom-nav{padding-top:3px;padding-bottom:3px}.save-state{flex:none}.focus-mode .game-shell .board-heading{margin-top:6px}.focus-mode .order-items{min-height:36px}.focus-mode .order-button{min-height:23px}.focus-mode .orders{gap:6px}.focus-mode .order-card{border-radius:10px}.focus-mode .order-bonus{top:2px;right:3px}.game-shell .game-top{gap:8px}.game-shell .profile{min-width:0}.game-shell .profile b{font-size:15px}.game-shell .profile small{font-size:9px}.profile .avatar{flex:none}.header-actions{gap:5px}.header-actions .round-btn{width:30px;height:30px}.focus-switch{padding:5px 7px}.board-window:focus-visible{outline:2px solid #b8914c;outline-offset:2px}}
@media(max-width:760px) and (max-height:700px){.game-shell .board-window .board{padding:5px}.game-shell .selection{min-height:35px}.board-scroll-tools{height:23px}.selection .hint-copy{font-size:10px}.game-shell .profile b{font-size:14px}.game-shell .header-actions .round-btn{width:27px;height:27px}.game-shell .focus-switch{min-height:27px}.game-shell .save-state{font-size:9px}}

/* FOOD SPRITE RECTS: generated by tools/build-sprites.py */
.mini-icon::before,.nav-icon::before,.featured-dish::before,.sprite::before{content:"";position:absolute;left:50%;top:50%;width:var(--art-w);height:var(--art-h);transform:translate(-50%,-50%);background-image:var(--food-atlas);background-repeat:no-repeat;background-size:var(--art-size);background-position:var(--art-position);pointer-events:none}
.sprite[data-icon="0"]{--art-w:92.00000%;--art-h:86.21714%;--art-size:716.57143% 764.63415%;--art-position:2.59500% 4.03670%}
.sprite[data-icon="1"]{--art-w:74.65969%;--art-h:92.00000%;--art-size:809.03226% 656.54450%;--art-position:22.02002% 1.69332%}
.sprite[data-icon="2"]{--art-w:92.00000%;--art-h:89.87283%;--art-size:724.85549% 742.01183%;--art-position:39.40796% 3.50230%}
.sprite[data-icon="3"]{--art-w:92.00000%;--art-h:84.88398%;--art-size:692.81768% 750.89820%;--art-position:58.71389% 3.77185%}
.sprite[data-icon="4"]{--art-w:90.55497%;--art-h:92.00000%;--art-size:667.02128% 656.54450%;--art-position:78.04878% 2.25776%}
.sprite[data-icon="5"]{--art-w:92.00000%;--art-h:85.95960%;--art-size:633.33333% 677.83784%;--art-position:98.67424% 2.52572%}
.sprite[data-icon="6"]{--art-w:84.29319%;--art-h:92.00000%;--art-size:716.57143% 656.54450%;--art-position:1.85357% 21.44873%}
.sprite[data-icon="7"]{--art-w:86.45226%;--art-h:92.00000%;--art-size:670.58824% 630.15075%;--art-position:20.80600% 21.04265%}
.sprite[data-icon="8"]{--art-w:92.00000%;--art-h:72.68508%;--art-size:692.81768% 876.92308%;--art-position:39.88816% 24.21242%}
.sprite[data-icon="9"]{--art-w:92.00000%;--art-h:71.06878%;--art-size:663.49206% 858.90411%;--art-position:58.96714% 23.73646%}
.sprite[data-icon="10"]{--art-w:92.00000%;--art-h:67.24873%;--art-size:636.54822% 870.83333%;--art-position:78.61873% 23.33333%}
.sprite[data-icon="11"]{--art-w:92.00000%;--art-h:88.74747%;--art-size:633.33333% 656.54450%;--art-position:98.48485% 21.26058%}
.sprite[data-icon="12"]{--art-w:82.23464%;--art-h:92.00000%;--art-size:783.75000% 700.55866%;--art-position:2.92505% 40.55814%}
.sprite[data-icon="13"]{--art-w:88.36158%;--art-h:92.00000%;--art-size:737.64706% 708.47458%;--art-position:20.75646% 40.85422%}
.sprite[data-icon="14"]{--art-w:92.00000%;--art-h:90.38596%;--art-size:733.33333% 746.42857%;--art-position:39.79686% 40.79190%}
.sprite[data-icon="15"]{--art-w:92.00000%;--art-h:90.97207%;--art-size:700.55866% 708.47458%;--art-position:58.51163% 40.85422%}
.sprite[data-icon="16"]{--art-w:81.98964%;--art-h:92.00000%;--art-size:729.06977% 649.74093%;--art-position:77.72643% 40.43355%}
.sprite[data-icon="17"]{--art-w:92.00000%;--art-h:87.90099%;--art-size:620.79208% 649.74093%;--art-position:98.76426% 40.05655%}
.sprite[data-icon="18"],.nav-icon.food,.featured-dish{--art-w:92.00000%;--art-h:80.92147%;--art-size:656.54450% 746.42857%;--art-position:1.31703% 59.11602%}
.sprite[data-icon="19"]{--art-w:92.00000%;--art-h:70.32692%;--art-size:602.88462% 788.67925%;--art-position:20.26769% 59.17808%}
.sprite[data-icon="20"]{--art-w:92.00000%;--art-h:72.25366%;--art-size:611.70732% 778.88199%;--art-position:40.03813% 59.10339%}
.sprite[data-icon="21"]{--art-w:92.00000%;--art-h:69.99043%;--art-size:600.00000% 788.67925%;--art-position:60.00000% 59.26941%}
.sprite[data-icon="22"]{--art-w:92.00000%;--art-h:83.47317%;--art-size:611.70732% 674.19355%;--art-position:80.26692% 59.08240%}
.sprite[data-icon="23"]{--art-w:84.04324%;--art-h:92.00000%;--art-size:742.01183% 677.83784%;--art-position:98.34101% 58.84004%}
.sprite[data-icon="24"]{--art-w:91.01604%;--art-h:92.00000%;--art-size:677.83784% 670.58824%;--art-position:1.68382% 77.31959%}
.sprite[data-icon="25"]{--art-w:88.62827%;--art-h:92.00000%;--art-size:681.52174% 656.54450%;--art-position:20.93458% 77.32832%}
.sprite[data-icon="26"]{--art-w:92.00000%;--art-h:80.38835%;--art-size:608.73786% 696.66667%;--art-position:39.79008% 77.18808%}
.sprite[data-icon="27"]{--art-w:92.00000%;--art-h:81.98964%;--art-size:649.74093% 729.06977%;--art-position:59.00094% 77.07948%}
.sprite[data-icon="28"]{--art-w:92.00000%;--art-h:81.77778%;--art-size:633.33333% 712.50000%;--art-position:79.16667% 76.99443%}
.sprite[data-icon="29"],.nav-icon.chest{--art-w:92.00000%;--art-h:88.22564%;--art-size:643.07692% 670.58824%;--art-position:98.77243% 77.41331%}
.sprite[data-icon="30"],.mini-icon.coin{--art-w:92.00000%;--art-h:80.73469%;--art-size:639.79592% 729.06977%;--art-position:1.79584% 95.65619%}
.sprite[data-icon="31"]{--art-w:92.00000%;--art-h:92.00000%;--art-size:803.84615% 803.84615%;--art-position:21.67577% 94.53552%}
.sprite[data-icon="32"],.nav-icon.book{--art-w:86.70157%;--art-h:92.00000%;--art-size:696.66667% 656.54450%;--art-position:40.40968% 96.42521%}
.sprite[data-icon="33"]{--art-w:92.00000%;--art-h:82.59091%;--art-size:712.50000% 793.67089%;--art-position:58.53432% 95.16423%}
.sprite[data-icon="34"],.nav-icon.awning{--art-w:92.00000%;--art-h:69.46000%;--art-size:627.00000% 830.46358%;--art-position:78.36812% 94.74161%}
.sprite[data-icon="35"],.mini-icon.gift{--art-w:92.00000%;--art-h:87.28205%;--art-size:643.07692% 677.83784%;--art-position:98.48914% 96.07109%}
/* END FOOD SPRITE RECTS */

/* Permanent street decor and lightweight scene atmosphere. */
.street-art{position:relative;aspect-ratio:3/2;overflow:hidden;border-radius:16px;background:#dfc393;border:1px solid #cfb991;isolation:isolate}
.street-art>img{display:block;width:100%;height:100%;object-fit:cover;animation:scene-reveal .45s ease-out}
.street-art[data-theme="lantern"]{background:#514856}
.scene-label{position:absolute;left:12px;bottom:12px;padding:5px 10px;border:1px solid #fff6de66;border-radius:14px;background:#583e2bd9;color:#fff6df;font-size:10px;letter-spacing:.5px;z-index:2}
.street-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:15px 2px 18px}
.street-toolbar small{font-size:10px;color:#a18a67}.street-toolbar h3{font-size:18px;margin:4px 0 0}.street-toolbar .secondary-btn{font-size:12px;min-height:38px}.street-toolbar .secondary-btn span{font-size:10px;margin-left:4px;color:#967a56}
.decor-modal{width:min(660px,calc(100vw - 24px))}.decor-modal .modal-content{padding:20px 22px 24px}.decor-intro{font-size:13px!important;margin-bottom:18px}.decor-catalogue{display:grid;gap:14px}
.decor-card{display:flex;align-items:center;gap:15px;padding:10px;background:#fffdf6;border:1px solid #dfcaa6;border-radius:16px;text-align:left;transition:border-color .18s,box-shadow .18s;min-width:0}.decor-card:hover{border-color:#a6af7b;box-shadow:0 3px 14px #72542c12}.decor-card.selected{border:2px solid #8f9e68;padding:9px;background:#faf8e9}.decor-card .scene-mini{width:43%;flex:none;border-radius:10px}.decor-card-copy{display:flex;flex-direction:column;gap:6px;min-width:0}.decor-card-copy>b{font-size:17px;letter-spacing:.6px}.decor-card-copy>small{font-size:11px;color:#a08665;line-height:1.5}.decor-status{font-size:11px;color:#907553;line-height:1.5;margin-top:5px}.selected .decor-status{color:#71864c}.decor-arrow{margin-left:auto;color:#a39172;font-size:23px}.decor-caption{font-size:11px!important;color:#a48b6a!important;margin:17px 0 12px}.decor-story{font-size:15px!important;color:#796042!important;padding:16px 2px 6px;line-height:1.85!important}.decor-detail{font-size:12px!important;padding:0 2px 13px}.decor-goals{border:1px solid #dfd1b6;border-radius:13px;background:#fffaf0;padding:7px 13px;margin-bottom:15px}.decor-goals>div{display:flex;justify-content:space-between;gap:10px;font-size:12px;padding:8px 0;color:#a28b69}.decor-goals>div+div{border-top:1px dashed #e8dcc4}.decor-goals>div.done{color:#75894f}.decor-goals b{font-size:11px;white-space:nowrap}.decor-price{display:flex;align-items:center;gap:8px;padding:4px 2px 13px;font-size:12px;color:#a18662}.decor-price b{font-size:19px;color:#87612f}.decor-price small{margin-left:auto;font-size:11px}.decor-return{margin-top:15px}
.scene-atmosphere{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:1}.scene-atmosphere>i{position:absolute;top:-8%;left:calc(3% + var(--n)*14%);width:6px;height:10px;border-radius:85% 0 85% 0;background:#b9c786;opacity:0;animation:street-drift calc(10s + var(--n)*.65s) linear infinite;animation-delay:calc(var(--n)*-2.7s)}
[data-theme="garden"]>.scene-atmosphere>i{background:#ffd1c8;border-radius:80% 10% 80% 30%;width:8px;height:6px;box-shadow:inset 1px 1px #fff0dd80}
[data-theme="lantern"]>.scene-atmosphere>i{top:calc(25% + var(--n)*8%);width:3px;height:3px;background:#fff4b1;border-radius:50%;box-shadow:0 0 5px 2px #ffcf8170;animation:street-firefly calc(6s + var(--n)*.7s) ease-in-out infinite;animation-delay:calc(var(--n)*-1.5s)}
.street-art[data-theme="lantern"]::after{content:'';position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at 33% 26%,#ffbb501e,transparent 13%),radial-gradient(ellipse at 66% 33%,#ffbc4826,transparent 15%);animation:lantern-breathe 4s ease-in-out infinite alternate}
.scene-heat{position:absolute;left:44%;top:41%;width:6%;height:14%;pointer-events:none;z-index:1}.scene-heat i{position:absolute;bottom:0;left:20%;height:65%;width:25%;border-radius:50%;border-left:2px solid #fff8eaa0;opacity:0;animation:street-steam 3.4s ease-out infinite}.scene-heat i:nth-child(2){left:55%;animation-delay:-1.2s}.scene-heat i:nth-child(3){left:35%;animation-delay:-2.4s}
body[data-theme="lantern"] .ambient{background:radial-gradient(ellipse at 10% 10%,#98919f30,transparent 65%),radial-gradient(ellipse at 90% 80%,#ae8e8c30,transparent 65%)}body[data-theme="garden"] .ambient{background:radial-gradient(ellipse at 15% 10%,#ffd7d640,transparent 55%),radial-gradient(ellipse at 85% 85%,#b9c99b60,transparent 50%)}
@keyframes scene-reveal{from{opacity:.4}to{opacity:1}}
@keyframes street-drift{0%{opacity:0;transform:translate(0,0) rotate(0)}12%{opacity:.65}80%{opacity:.5}100%{opacity:0;transform:translate(30px,330px) rotate(210deg)}}
@keyframes street-firefly{0%,100%{opacity:0;transform:translate(0,0)}35%{opacity:.8;transform:translate(12px,-12px)}65%{opacity:.3;transform:translate(-8px,-24px)}}
@keyframes street-steam{0%{opacity:0;transform:translateY(5px) scale(.65)}20%{opacity:.65}100%{opacity:0;transform:translateY(-24px) scale(1.35)}}
@keyframes lantern-breathe{from{opacity:.45}to{opacity:1}}
@media(max-width:450px){.decor-modal .modal-content{padding:14px}.decor-card{gap:10px;padding:8px}.decor-card.selected{padding:7px}.decor-card .scene-mini{width:41%}.decor-card-copy>b{font-size:15px}.decor-card-copy>small{font-size:10px}.decor-status{font-size:10px;margin-top:2px}.decor-card-copy{gap:3px}.decor-arrow{font-size:19px}.decor-price b{font-size:17px}.scene-label{font-size:9px;left:8px;bottom:8px}}
.reduce-motion .scene-atmosphere,.reduce-motion .scene-heat{display:none}.reduce-motion .street-art::after{animation:none}.reduce-motion .street-art>img{animation:none}
@media(prefers-reduced-motion:reduce){.scene-atmosphere,.scene-heat{display:none}.street-art::after,.street-art>img{animation:none}}

.street-banner .street-label,.street-banner .street-enter{z-index:2}

.scene-loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:10px;color:#806344;background:#f2e3c8;font-size:12px;z-index:3}.scene-loading>i{width:22px;height:22px;border:2px solid #bba57855;border-top-color:#9c8455;border-radius:50%;animation:scene-loading-turn 1s linear infinite}.scene-loaded .scene-loading{display:none}.scene-mini .scene-loading>span{display:none}.scene-mini .scene-loading{font-size:10px}.scene-failed .scene-loading>i{display:none}.scene-failed .scene-loading>span{display:block}.scene-failed .scene-loading .text-button{font-size:11px;padding:6px}.street-art:not(.scene-loaded)>.scene-atmosphere,.street-art:not(.scene-loaded)>.scene-heat{visibility:hidden}@keyframes scene-loading-turn{to{transform:rotate(360deg)}}

/* The town and kitchen share one persistent game state; navigation only changes views. */
[hidden]{display:none!important}
body[data-screen="town"] .kitchen-only,body[data-screen="board"] .town-screen{display:none!important}
body[data-screen="town"] .focus-switch{display:none}
.town-screen{display:flex;flex-direction:column;gap:10px;min-height:0}
.town-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:4px 2px 0;flex:none}
.town-heading small{font-size:8px;letter-spacing:1.5px;color:#a59172}.town-heading h2{font-size:17px;letter-spacing:1px;margin-top:3px;font-weight:800}
.town-decor{border:1px solid #d6bf93;border-radius:12px;background:#f5e9cc;padding:8px 11px;display:flex;gap:9px;align-items:center;font-size:11px;min-height:38px}.town-decor span{font-size:20px;color:#c07763}
.town-map{position:relative;isolation:isolate;overflow:hidden;border-radius:18px;background:#efe0be;flex:1;min-height:300px;height:510px;border:1px solid #d8c49c;container-type:size}
.town-ground{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;pointer-events:none}
.town-world{position:absolute;left:50%;top:50%;width:min(100cqw,81cqh);height:min(123.46cqw,100cqh);transform:translate(-50%,-50%)}
.town-light{position:absolute;inset:0;background:linear-gradient(140deg,#fff4c917,transparent 55%);pointer-events:none;z-index:3}
.town-shop{position:absolute;display:block;padding:0;width:50%;aspect-ratio:1;background:none;transform:translate(-50%,-50%);-webkit-tap-highlight-color:transparent;z-index:2;isolation:isolate;touch-action:manipulation}
.town-shop:active:not(:disabled){transform:translate(-50%,-50%)}
.shop-breakfast{left:28%;top:25%;z-index:2}.shop-produce{left:76%;top:46%;z-index:3}.shop-bread{left:27%;top:66%;z-index:4}
.town-shop-art{position:absolute;inset:0;display:block;filter:drop-shadow(0 4px 2px #6a543926);transition:filter .2s}
.town-shop-art::before{content:'';display:block;position:absolute;left:50%;bottom:0;transform:translateX(-50%);width:var(--building-w);height:var(--building-h);background-image:url('./assets/shop-growth-atlas.webp?v=20260911-28');background-size:var(--building-size);background-position:var(--building-position);background-repeat:no-repeat;mask-image:url('./assets/town-shop-mask.svg?v=20260911-28');mask-size:var(--building-size);mask-position:var(--building-position);mask-repeat:no-repeat}
.town-shop:hover .town-shop-art{filter:drop-shadow(0 5px 3px #8c633954) brightness(1.035)}
.town-shop-label{position:absolute;left:50%;top:95%;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;white-space:nowrap;background:#fffaeadf;border:1px solid #cbb28c;border-radius:8px;padding:4px 9px;box-shadow:0 2px 4px #62402114;min-width:106px}
.town-shop-label b{font-size:11px;letter-spacing:.5px}.town-shop-label small{font-size:9px;color:#997a51;margin-top:2px}
.town-build-badge{position:absolute;left:50%;top:0;transform:translate(-50%,-60%);padding:4px 8px;border-radius:9px;background:#f7ead0;border:1px solid #c4a679;box-shadow:0 2px 0 #b59a7450;font-size:10px;color:#977b59;white-space:nowrap}
.can-build .town-build-badge{background:#f9c96b;color:#704b24;border-color:#b88b47;animation:build-invitation 3.3s ease-in-out infinite}
.town-stage{display:flex;gap:2px;position:absolute;bottom:-35px;left:50%;transform:translateX(-50%);padding:3px 4px;border-radius:6px;background:#fff7df80}.town-stage i{width:7px;height:3px;border-radius:2px;background:#a68b644d}.town-stage i.done{background:#799257}
.shop-locked .town-shop-art{filter:saturate(.55) opacity(.83)}.shop-locked .town-shop-label{background:#f1e9d9ed}
.town-cat{position:absolute;left:59%;top:70%;width:15%;aspect-ratio:.87;z-index:5;padding:0;background:none;animation:cat-stroll 22s ease-in-out infinite;transform-origin:50% 95%}
.town-cat img{display:block;position:relative;width:100%;height:100%;object-fit:contain;animation:cat-footstep 1.1s ease-in-out infinite;transform-origin:50% 90%;pointer-events:none}
.cat-shadow{position:absolute;width:65%;height:10%;left:20%;bottom:2%;background:#715b4850;filter:blur(2px);border-radius:50%;pointer-events:none}
.town-cat-name{position:absolute;left:50%;bottom:-15px;transform:translateX(-50%);font-size:9px;white-space:nowrap;color:#7b664d;background:#fff7daaa;padding:2px 5px;border-radius:8px}
.town-sign{position:absolute;left:66%;top:89%;transform:rotate(-4deg);display:flex;flex-direction:column;gap:3px;border:2px solid #bd9365;border-radius:7px;background:#eace9d;color:#795937;padding:7px 9px;box-shadow:0 3px 0 #9f795966;z-index:6;font-size:11px}.town-sign small{font-size:8px}
.town-theme-tag{position:absolute;top:10px;right:10px;background:#fff8e7d9;border:1px solid #e0cba7;border-radius:12px;padding:4px 8px;font-size:9px;z-index:5;pointer-events:none;color:#8a775b}
.town-steam{position:absolute;left:28%;top:20%;width:10%;height:13%;z-index:6;pointer-events:none;display:none}.shops-open .town-steam{display:block}.town-steam i{position:absolute;left:15%;bottom:0;width:20%;height:35%;border-left:2px solid #fffbeee6;border-radius:50%;animation:street-steam 3.5s ease-out infinite;opacity:0;filter:drop-shadow(0 0 1px #99887170)}.town-steam i:nth-child(2){left:40%;animation-delay:-1.2s}.town-steam i:nth-child(3){left:65%;animation-delay:-2.4s}
.town-river{position:absolute;bottom:-5%;right:-5%;width:25%;height:12%;border-radius:50%;background:linear-gradient(135deg,transparent,#fffaea65,transparent);opacity:.4;animation:river-glint 5s ease-in-out infinite;pointer-events:none}
.town-map>.scene-atmosphere{z-index:7}
.town-next{background:#fffaf0;border:1px solid #e0cda9;border-radius:12px;display:flex;align-items:center;gap:9px;padding:9px 12px;text-align:left;flex:none;min-height:49px}.town-next-icon{font-size:25px;color:#9ca776;flex:none}.town-next small{display:block;font-size:9px;color:#ad9673;margin-bottom:3px}.town-next b{font-size:11px;font-weight:600}.town-next-arrow{margin-left:auto;font-size:20px;color:#b9a582}
.town-play{flex:none;border:1px solid #b77139;background:linear-gradient(#ecc47e,#e8b866);box-shadow:0 3px 0 #ba9053;border-radius:14px;display:flex;gap:10px;align-items:center;padding:8px 16px;text-align:left;margin-bottom:14px;min-height:57px}.town-play .nav-icon{width:38px;height:38px;flex:none}.town-play b{font-size:17px;letter-spacing:2px;display:block;color:#674828}.town-play small{font-size:10px;color:#8a673c;display:block;margin-top:3px}.town-play>span:last-child{font-size:24px;margin-left:auto}.town-play.has-ready{background:linear-gradient(#bbcb93,#a8bb80);border-color:#84965b;box-shadow:0 3px 0 #7f915c}.town-play.has-ready small{color:#536941}
.town-map-status{position:absolute;inset:auto 8px 8px;z-index:10;display:flex;align-items:center;justify-content:center;gap:6px;border-radius:9px;background:#fff8e9ef;padding:8px;font-size:10px;color:#957749}.town-map-status button{background:#eddfc5;border-radius:5px;padding:5px}
.town-build-feedback{position:absolute;left:50%;top:45%;transform:translate(-50%,-50%);z-index:12;pointer-events:none;white-space:nowrap;background:#fff8dcf5;border:2px solid #9fae72;box-shadow:0 8px 24px #59432530;border-radius:16px;padding:14px 20px;font-size:14px;color:#677b40;opacity:0;transition:opacity .25s}.town-build-feedback.visible{opacity:1}
.building-complete .town-shop-art{animation:town-built .85s ease-out}.building-complete::after{content:'✧';position:absolute;inset:-15%;font-size:44px;color:#fffbe8;text-shadow:0 0 4px #dcaa38;pointer-events:none;animation:town-sparkles 1.2s ease-out 2}
.town-shop-glow{display:none;position:absolute;inset:25% 8% 0;background:radial-gradient(ellipse,#ffc96540,transparent 65%);pointer-events:none;animation:lantern-breathe 3.8s ease-in-out infinite alternate}
.town-map[data-theme="lantern"] .town-shop:not(.unopened) .town-shop-glow{display:block}.town-map[data-theme="lantern"] .town-shop-art{filter:brightness(.86) drop-shadow(0 4px 2px #41374550)}.town-map[data-theme="lantern"] .town-light{background:#71608213}.town-map[data-theme="garden"] .town-light{background:linear-gradient(140deg,#ffd5d41a,transparent 60%)}
body[data-screen="board"] .town-screen *,body[data-screen="board"] .town-screen *::before{animation-play-state:paused!important}
@keyframes cat-stroll{0%,12%,100%{translate:0 0}24%,40%{translate:18% -35%}52%,64%{translate:42% 10%}80%,90%{translate:-10% 25%}}
@keyframes cat-footstep{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-2px) rotate(2deg)}}
@keyframes build-invitation{0%,70%,100%{translate:0 0}80%{translate:0 -3px}90%{translate:0 1px}}
@keyframes town-built{0%{transform:scale(.9);filter:brightness(1.25)}40%{transform:scale(1.1)}70%{transform:scale(.98)}100%{transform:scale(1)}}
@keyframes town-sparkles{0%{opacity:0;transform:scale(.6) rotate(-12deg)}30%{opacity:1}100%{opacity:0;transform:scale(1.3) rotate(12deg)}}
@keyframes river-glint{0%,100%{transform:translateX(0);opacity:.1}50%{transform:translateX(-8px);opacity:.45}}
@media(min-width:761px){body[data-screen="town"] .game-shell{height:min(930px,calc(100svh - 45px));min-height:640px;display:flex;flex-direction:column}body[data-screen="town"] .game-top,body[data-screen="town"] .resources,body[data-screen="town"] .bottom-nav,body[data-screen="town"] .save-state{flex:none}.town-screen{flex:1}.town-map{height:auto}}
@media(max-width:760px){.town-screen{flex:1;gap:8px}.town-heading{padding-top:0}.town-heading h2{font-size:16px}.town-map{height:auto;min-height:0;flex:1}.town-play{margin-bottom:10px;min-height:53px}.town-next{padding:7px 10px;min-height:45px}.town-heading small{font-size:7px}}
@media(max-width:760px) and (max-height:700px){.town-heading small{display:none}.town-heading h2{font-size:14px}.town-heading{min-height:31px}.town-decor{min-height:30px;padding:3px 9px}.town-next{min-height:39px;padding:4px 9px}.town-play{min-height:47px;padding:5px 12px;margin-bottom:8px}.town-play b{font-size:15px}.town-play .nav-icon{height:32px;width:32px}.town-screen{gap:6px}.town-shop-label{padding:3px 6px;min-width:91px}.town-shop-label b{font-size:10px}.town-shop-label small{font-size:8px}.town-build-badge{font-size:9px;padding:3px 5px}.town-sign{padding:4px 6px;font-size:10px}.town-stage{bottom:-30px}.town-stage i{width:6px}}
.reduce-motion .town-cat,.reduce-motion .town-cat img,.reduce-motion .town-build-badge,.reduce-motion .town-river,.reduce-motion .town-shop-glow{animation:none}.reduce-motion .town-steam{display:none}
@media(prefers-reduced-motion:reduce){.town-steam{display:none}}
/* Keep labels clear even when the available map height is short. */
.town-shop{width:45%}.shop-breakfast{left:27%;top:22%}.shop-produce{left:76%;top:42%}.shop-bread{left:27%;top:70%}.town-sign{top:86%;left:66%}.town-cat{left:65%;top:65%}.town-shop:not(.can-build) .town-build-badge{display:none}.town-shop-label{padding:3px 7px;min-width:100px}.town-stage{bottom:-34px}.town-steam{left:27%;top:17%}

.town-cat{left:52%;top:72%}
@keyframes cat-stroll{0%,12%,100%{translate:0 0}24%,40%{translate:20% -5%}52%,64%{translate:30% 5%}80%,90%{translate:-15% 8%}}
.town-screen{animation:scene-reveal .3s ease-out}
.is-celebrating .town-cat img{animation:town-cat-cheer .6s ease-in-out 2}
@keyframes town-cat-cheer{0%,100%{transform:translateY(0) rotate(0)}35%{transform:translateY(-7px) rotate(-8deg)}70%{transform:translateY(-2px) rotate(6deg)}}
.reduce-motion .town-screen,.reduce-motion .is-celebrating .town-cat img{animation:none}
.town-sign{top:auto;left:auto;right:3%;bottom:3%}
.town-cat::after{content:'';position:absolute;inset:-6px}

.town-build-badge{top:6%}

/* Layered shop growth. All raster cutouts share explicit measured rectangles. */
.building-art{display:block;position:relative;isolation:isolate;width:100%;aspect-ratio:1;overflow:visible}
.building-art.shop-art{background:none;border-radius:0}
.building-base{position:absolute;left:9%;top:2%;width:82%;height:82%;z-index:1}
.building-base::before,.street-prop::before,.walker-frame::before{content:'';position:absolute;left:50%;bottom:0;width:var(--cut-w);height:var(--cut-h);transform:translateX(-50%);background-size:var(--cut-size);background-position:var(--cut-position);background-repeat:no-repeat;mask-size:var(--cut-size);mask-position:var(--cut-position);mask-repeat:no-repeat}
.building-base::before{background-image:url('./assets/shop-growth-atlas.webp?v=20260911-28');mask-image:url('./assets/town-shop-mask.svg?v=20260911-28')}
.town-shop-art::before{content:none}
.building-feature{display:block;position:absolute;aspect-ratio:1;transform:translate(-50%,-50%);z-index:2;pointer-events:none}
.street-prop{display:block;width:100%;aspect-ratio:1;position:relative}
.street-prop::before{background-image:url('./assets/street-props.webp?v=20260911-28');mask-image:url('./assets/street-props-mask.svg?v=20260911-28')}
.feature-entry{left:14%;top:64%;width:22%}.feature-patio{left:82%;top:80%;width:35%}.feature-light{left:85%;top:36%;width:22%}.feature-counter{left:24%;top:84%;width:27%}.feature-flowers{left:53%;top:84%;width:30%;z-index:3}.feature-arch{left:28%;top:26%;width:38%;z-index:0}.feature-display{left:84%;top:70%;width:23%;z-index:3}.feature-chime{left:89%;top:52%;width:20%}
.building-feature>i.feature-light{position:absolute;left:50%;top:26%;width:37%;height:30%;border-radius:50%;background:#ffd67f47;filter:blur(2px);animation:lantern-breathe 3.5s ease-in-out infinite alternate;pointer-events:none}
.building-feature>i.feature-steam{position:absolute;left:57%;top:5%;width:10%;height:22%;border-left:2px solid #fff9e5d9;border-radius:50%;animation:street-steam 3s ease-out infinite;pointer-events:none}
.feature-chime .street-prop{transform-origin:50% 12%;animation:chime-sway 5.2s ease-in-out infinite}.town-shop .feature-flowers .street-prop{transform-origin:50% 90%;animation:planter-sway 6s ease-in-out infinite}
.building-complete .new-feature{animation:feature-place .7s cubic-bezier(.2,.8,.3,1.2)}
@keyframes feature-place{0%{scale:.4;opacity:0;translate:0 -8px}65%{scale:1.13;opacity:1;translate:0 1px}100%{scale:1;translate:0 0}}
@keyframes chime-sway{0%,65%,100%{rotate:0deg}73%{rotate:5deg}82%{rotate:-4deg}92%{rotate:2deg}}
@keyframes planter-sway{0%,100%{rotate:-.7deg}50%{rotate:.7deg}}
.growth-preview-link{display:flex;justify-content:space-between;align-items:center;width:100%;border:1px solid #d8c6a6;background:#f7efde;border-radius:9px;padding:9px 11px;margin:14px 0 10px;font-size:12px;color:#957447}.growth-preview-link span{font-size:17px}
.growth-comparison{display:grid;grid-template-columns:1fr 1fr;gap:8px}.growth-comparison figure{min-width:0;margin:0;border:1px solid #e1d1b3;border-radius:13px;padding:8px 3px 5px;background:#f4ead6}.growth-comparison figure.growth-after{border-color:#afbe8d;background:#eff1df}.growth-comparison figcaption{text-align:center;font-size:11px;color:#927b58;padding-bottom:8px}.growth-comparison .growth-after figcaption{color:#72834d;font-weight:700}.growth-comparison .shop-art{width:100%}.growth-line{padding:14px 0;font-size:13px!important}.growth-return{margin-top:15px}

/* Measured walk frames are anchored at the feet; motion time pauses off screen. */
.town-cat{left:48%;top:70%;animation:none!important}
.walker-facing{position:absolute;inset:0;transform-origin:50% 90%;pointer-events:none}
.town-cat[data-facing="left"] .walker-facing{scale:-1 1}
.walker-cycle{position:absolute;left:50%;bottom:0;width:115%;aspect-ratio:1;transform:translateX(-50%)}
.walker-frame{position:absolute;inset:0;opacity:0;pointer-events:none}
.walker-frame::before{background-image:url('./assets/shiliu-waddle.webp?v=20260911-28');mask-image:url('./assets/shiliu-waddle-mask.svg?v=20260911-28')}
.idle-frame::before{background-image:url('./assets/shiliu-idle.webp?v=20260911-28');mask-image:url('./assets/shiliu-idle-mask.svg?v=20260911-28')}
.walker-frame.is-current{opacity:1}
.is-celebrating .town-cat .walker-facing{animation:town-cat-cheer .6s ease-in-out 2}
.reduce-motion .building-feature>i,.reduce-motion .feature-chime .street-prop,.reduce-motion .town-shop .feature-flowers .street-prop,.reduce-motion .town-cat .walker-facing{animation:none}.reduce-motion .feature-steam{display:none}
@media(prefers-reduced-motion:reduce){.feature-steam{display:none}}
/* Reserve the frontage for attachments without shrinking the shop itself. */
.town-shop{width:52%}.shop-produce{left:74%}.town-shop-label{top:86%}.town-build-badge{top:11%}.town-stage{top:calc(86% + 34px);bottom:auto}
.feature-light{left:90%;top:65%;width:35%}
[data-building="produce"] .feature-light{left:85%;top:64%;width:32%}
.feature-chime{left:10%;top:64%;width:30%}

/* Grounded breathing remains visible while waiting; facing and body motion
   use separate layers so a greeting cannot undo a left-facing pose. */
.walker-body{position:absolute;inset:0;transform-origin:50% 100%;animation:cat-idle-breathe 4.6s ease-in-out infinite}
.walker-cycle{translate:0 var(--step-lift,0px);rotate:var(--step-roll,0deg);scale:1 var(--step-squash,1);transform-origin:50% 100%}
@keyframes cat-idle-breathe{0%,100%{transform:scale(1.01,.992) rotate(-.35deg)}50%{transform:scale(.994,1.025) rotate(.35deg)}}


/* Familiar visitors: individual painted portraits and a quiet keepsake book. */
.guest-portrait{display:block;width:100%;height:auto;aspect-ratio:1;object-fit:contain;background:#fff8e9;border-radius:14px}
.customer-avatar{background:none!important;overflow:hidden;padding:0}.customer-avatar .guest-portrait{border-radius:50%;width:100%;height:100%;object-fit:cover}
.town-heading-actions{display:flex;align-items:center;gap:5px;flex:none}.town-heading-actions .town-decor{padding:5px 8px;font-size:11px}.town-neighbors{position:relative}.town-neighbors i{position:absolute;right:3px;top:3px;width:6px;height:6px;background:#c28354;border:1px solid #fff5df;border-radius:50%}
.neighbors-intro{line-height:1.8;font-size:13px!important;margin-bottom:16px!important;color:#947b57}.neighbors-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.neighbor-card{display:flex;flex-direction:column;align-items:stretch;text-align:center;border:1px solid #daceb4;border-radius:15px;padding:10px;background:#faf2df;box-shadow:0 3px 0 #e5d8bd60;transition:transform .2s}.neighbor-card .guest-portrait{width:100%;max-width:160px;align-self:center;margin-bottom:9px;border-radius:10px}.neighbor-1{background:#f0f1df}.neighbor-2{background:#edf1ed}.neighbor-3{background:#f6e9df}.neighbor-name{font-size:13px;font-weight:700}.friend-rank{font-size:10px;line-height:1.7;color:#9a7752;margin:4px 0 6px;display:block}.friend-count{font-size:9px;color:#927f64;margin-top:5px;line-height:1.6}.neighbor-status{font-size:10px;padding:6px 2px;margin-top:9px;background:#fffaf1a6;border-radius:7px;color:#8b795c}.neighbor-status.gift-ready{background:#dae4bd;color:#647847}.neighbor-card .progress-track{width:100%;height:5px;margin:5px 0 0}
.neighbor-profile{display:flex;gap:16px;align-items:center;padding:13px;border-radius:16px;margin-bottom:18px}.neighbor-profile .guest-portrait{width:112px;flex:none}.neighbor-profile h3{font-size:17px;margin:4px 0 9px}.neighbor-profile p{font-size:12px!important;margin:0!important}.neighbor-profile strong{font-size:11px;display:block;color:#789057;margin-top:9px;line-height:1.7}.neighbor-profile .friend-rank{font-size:11px}
.friend-gift{padding:15px;border:1px solid #d9c9ab;border-radius:12px;background:#faf2df}.friend-gift.is-ready{background:#f0f3df;border-color:#afbd8a}.friend-gift>div:first-child{display:flex;justify-content:space-between;gap:10px;align-items:center}.friend-gift b{font-size:13px}.friend-gift span{font-size:11px;color:#8b795c}.friend-gift p{font-size:12px!important;margin:9px 0 12px!important}.neighbor-section-title{font-size:15px;margin:24px 0 13px!important}.neighbor-section-title small{font-size:11px;color:#9a876d;margin-left:6px}.neighbor-orders{display:flex;flex-direction:column;gap:8px}.neighbor-orders>button{display:flex;align-items:center;justify-content:space-between;gap:8px;border:1px solid #dfcfb0;background:#fff9ee;border-radius:11px;padding:10px;text-align:left}.neighbor-order-food{display:flex;gap:8px}.neighbor-order-food>span{display:flex;align-items:center;gap:4px}.neighbor-order-food .sprite{width:34px;height:34px;flex:none}.neighbor-order-food small{font-size:10px;max-width:60px}.neighbor-orders b{font-size:11px;flex:none;color:#73864f}.neighbor-empty{padding:14px;background:#f4eddf;border-radius:10px;font-size:12px!important;line-height:1.9}
.friend-memories{display:flex;flex-direction:column;gap:12px;margin-bottom:15px}.friend-memory{position:relative;display:flex;gap:13px;background:#fff9e9;border:1px solid #e0cda6;padding:17px 14px;border-radius:3px 13px 13px 3px;box-shadow:2px 3px 0 #ddcfb230}.memory-number{font-size:23px;color:#c4ac80;font-family:Georgia,serif;line-height:1}.friend-memory h4{font-size:12px;margin:0 0 8px;color:#947041}.friend-memory p{font-size:12px!important;line-height:1.9;margin:0!important;color:#8e7b5f}.friend-memory.locked{background:#efeade;border-style:dashed;box-shadow:none}.friend-memory.locked p,.friend-memory.locked h4{color:#ad9e85}.order-neighbor-link{display:flex;gap:12px;text-align:left;align-items:center;width:100%;padding:9px;background:#f5efdf;border-radius:13px;margin-bottom:15px}.order-neighbor-link .guest-portrait{width:64px;flex:none}.order-neighbor-link b{font-size:12px;display:block;color:#88724f}.order-neighbor-link small{font-size:11px;display:block;margin-top:7px;color:#a68b64}
@media(max-width:380px){.town-heading h2{font-size:14px;letter-spacing:0}.town-heading small{letter-spacing:.5px}.neighbors-grid{gap:8px}.neighbor-card{padding:8px}.neighbor-profile{gap:11px;padding:10px}.neighbor-profile .guest-portrait{width:94px}.neighbor-orders>button{flex-wrap:wrap}.friend-gift>div:first-child{align-items:flex-start;flex-wrap:wrap}}

.customer-avatar{width:26px;height:26px;flex:none}
@media(max-width:760px){.customer-avatar{width:24px;height:24px}.customer-row{gap:5px}}

/* Harvest dishes: independently measured silhouettes, aligned to cell centres. */
.sprite[data-icon="36"]{--food-atlas:url('./assets/harvest-dishes.webp?v=20260911-28');--art-w:92.00000%;--art-h:66.00338%;--art-size:212.18274% 295.75472%;--art-position:5.27903% 12.65060%}
.sprite[data-icon="37"]{--food-atlas:url('./assets/harvest-dishes.webp?v=20260911-28');--art-w:92.00000%;--art-h:67.37133%;--art-size:216.58031% 295.75472%;--art-position:94.66667% 14.57831%}
.sprite[data-icon="38"]{--food-atlas:url('./assets/harvest-dishes.webp?v=20260911-28');--art-w:86.48356%;--art-h:92.00000%;--art-size:258.02469% 242.55319%;--art-position:8.33333% 85.07463%}
.sprite[data-icon="39"]{--food-atlas:url('./assets/harvest-dishes.webp?v=20260911-28');--art-w:92.00000%;--art-h:70.44482%;--art-size:212.90323% 278.04878%;--art-position:94.73684% 84.43337%}
.sprite[data-icon="36"]::before,.sprite[data-icon="37"]::before,.sprite[data-icon="38"]::before,.sprite[data-icon="39"]::before{mask-image:url('./assets/harvest-dishes-mask.svg?v=20260911-28');mask-size:var(--art-size);mask-position:var(--art-position);mask-repeat:no-repeat}
.recipe-season{display:inline-block;padding:2px 5px;margin-left:5px;border-radius:5px;background:#f2d7a6;color:#916a34;font-size:9px;vertical-align:middle;font-weight:500}
.banquet-dishes{margin:10px 0;color:#96805c;font-size:11px;text-align:left}.banquet-dishes summary{cursor:pointer;min-height:28px;line-height:28px}.banquet-dishes ol{margin:4px 0 10px;padding-left:19px;line-height:1.9}

/* A small preparation note, tied to the real inventory rather than scripted tips. */
.preparation{display:flex;align-items:center;gap:7px;padding:7px 5px 7px 8px;border:1px solid #ceb98d;border-left:3px solid #b49555;border-radius:10px;background:#fff8df;box-shadow:0 2px 0 #ddc89e30;margin:8px 0 0;flex:none;min-height:53px}
.preparation[hidden]{display:none}.prep-art{width:32px;flex:none}.prep-art .sprite{width:32px;height:32px}.prep-copy{flex:1;min-width:0}.prep-copy>button{display:block;max-width:100%;padding:0;background:none;text-align:left;font-size:9px;color:#a0875b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.5}.prep-copy p{font-size:11px;line-height:1.5;color:#80643b;margin:2px 0 0}.prep-next{padding:7px 6px;min-height:30px;font-size:10px;white-space:nowrap;border:1px solid #b9c394;border-radius:7px;background:#e5ebcf;color:#6d7d4b;flex:none}.prep-stop{padding:0;background:none;color:#ad9670;min-width:22px;min-height:30px;font-size:18px}.prep-follow{margin-top:12px}.order-card.prep-order{outline:2px solid #b69b5a;outline-offset:1px}.cell.prep-cell:not(.selected){box-shadow:inset 0 0 0 2px #b5a35f,0 0 0 1px #fff2bd;background-color:#f4efd4}.cell.prep-cell::after{content:'';position:absolute;right:4px;top:4px;width:5px;height:5px;background:#aa8a42;border-radius:50%;pointer-events:none}
@media(max-width:760px) and (max-height:700px){.preparation{margin-top:5px;padding:5px;gap:5px;min-height:49px}.prep-art,.prep-art .sprite{width:27px;height:27px}.prep-copy p{font-size:11px}.prep-next{padding:6px 5px}.prep-copy>button{font-size:9px}}

/* Real waiting orders live in two quiet pockets of the street. */
.town-visitors{position:absolute;inset:0;pointer-events:none;z-index:5}
.town-visitor{position:absolute;left:53%;top:11%;width:14%;aspect-ratio:.82;min-width:38px;padding:0;background:none;pointer-events:auto;isolation:isolate;touch-action:manipulation}
.town-visitor:nth-child(2){left:40.5%;top:43%}
.town-visitor[hidden]{display:none}
.visitor-arrival{position:absolute;inset:0;animation:visitor-arrive .55s ease-out both;pointer-events:none}
.visitor-shadow{position:absolute;left:13%;bottom:1%;width:75%;height:8%;border-radius:50%;background:#6c58472d;filter:blur(1px)}
.visitor-breath{position:absolute;inset:0;transform-origin:50% 100%;animation:visitor-breathe 5.2s ease-in-out infinite}
.town-visitor:nth-child(2) .visitor-breath{animation-duration:4.8s;animation-delay:-1.7s}
.visitor-figure{position:absolute;left:50%;bottom:0;width:122%;aspect-ratio:1;transform:translateX(-50%);visibility:hidden}
.visitor-figure::before{content:'';position:absolute;left:50%;bottom:0;width:var(--cut-w);height:var(--cut-h);transform:translateX(-50%);background:url('./assets/street-visitors.webp?v=20260911-28') var(--cut-position)/var(--cut-size) no-repeat;mask:url('./assets/street-visitors-mask.svg?v=20260911-28') var(--cut-position)/var(--cut-size) no-repeat}
.visitor-fallback{position:absolute;left:0;bottom:0;width:100%;height:auto;aspect-ratio:1;border-radius:50%;border:1px solid #cdb795;background:#fff6e3}
.visitors-art-ready .visitor-figure{visibility:visible}.visitors-art-ready .visitor-fallback{display:none}
.visitor-bubble{position:absolute;right:-16%;bottom:94%;min-width:32px;height:32px;border:1px solid #cdbd95;border-radius:12px 12px 12px 3px;background:#fffbee;box-shadow:0 2px 3px #7a634b18;display:flex;align-items:center;justify-content:center;padding:1px 3px;pointer-events:auto;transition:background .2s,border-color .2s}
.visitor-bubble .sprite{width:27px;height:27px}
.visitor-bubble small{position:absolute;bottom:-2px;right:-3px;font-size:8px;background:#f2e5c9;color:#866c46;border:1px solid #cdbd95;border-radius:5px;line-height:12px;padding:0 2px}.visitor-bubble small:empty{display:none}
.visitor-bubble b{display:none;position:absolute;right:-4px;top:-5px;width:15px;height:15px;border-radius:50%;background:#77995d;color:#fff9e4;border:1px solid #fff5db;font-size:11px;line-height:13px}
.is-ready .visitor-bubble{background:#eff5d8;border-color:#96ae70}.is-ready .visitor-bubble b{display:block}
.visitor-caption{position:absolute;left:50%;bottom:-18px;transform:translateX(-50%);white-space:nowrap;opacity:0;font-size:9px;border-radius:6px;padding:2px 5px;color:#7f704f;background:#fff9e7ed;pointer-events:none;transition:opacity .15s}
.town-visitor:focus-visible .visitor-caption,.town-visitor:hover .visitor-caption{opacity:1}
@keyframes visitor-breathe{0%,100%{transform:scale(1.005,.992) rotate(-.3deg)}50%{transform:scale(.99,1.02) rotate(.3deg)}}
@keyframes visitor-arrive{from{opacity:0;transform:translateY(3px)}to{opacity:1;transform:translateY(0)}}
/* A little transparent hit padding helps small touch screens. */
.town-visitor::after{content:'';position:absolute;inset:-4px;z-index:-1}

/* The market sits beside the chapter note, leaving the street its height. */
.town-links{display:grid;grid-template-columns:minmax(0,1fr) 92px;gap:7px;flex:none}
.town-links .town-next{min-width:0;width:100%;padding-left:9px;padding-right:8px;gap:6px}
.town-links .town-next>span:nth-child(2){min-width:0}.town-links .town-next b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.town-market{border:1px solid #d7c598;border-radius:12px;padding:8px 6px;background:repeating-linear-gradient(90deg,#eef0d9 0,#eef0d9 14px,#f7f5e3 14px,#f7f5e3 28px);box-shadow:inset 0 4px #becb96;text-align:center}
.town-market>span{font-size:11px;font-weight:700;display:block}.town-market small{display:block;font-size:9px;margin-top:4px;color:#94805b}
.market-welcome{display:flex;align-items:center;gap:13px;background:#f0eedb;border:1px solid #ddd4ac;border-radius:16px;padding:12px;margin-bottom:13px}
.market-welcome h3{font-size:17px;margin:6px 0!important}.market-welcome small{font-size:10px;color:#a18555}.market-welcome p{font-size:11px!important;line-height:1.6!important}
.market-basket{flex:none;background:#f9f4df;border:1px solid #dfd3ab;border-radius:50%;width:68px;height:68px;display:grid;place-items:center}.market-basket .sprite{width:61px;height:61px}
.market-budget{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:11px;background:#f4e6c9;border-radius:9px;padding:10px;color:#96815d}.market-budget b{color:#795737;font-size:14px;margin-left:3px}
.market-destination{display:flex;gap:7px;margin-top:15px}.market-destination button{flex:1;min-height:38px;border-radius:9px;background:#f0e4cd;border:1px solid #d8c59e;font-size:12px}.market-destination button.on{background:#8ca16e;color:#fffbe9;border-color:#758b55}
.market-space{font-size:10px!important;margin:7px 2px 13px;line-height:1.6!important}
.market-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.market-offer{border:1px solid #ded0ae;border-radius:14px;background:#fffcef;overflow:hidden;text-align:center;padding:8px 8px 11px;box-shadow:0 3px 0 #e4d5b33b;min-width:0}
.market-offer-tags{min-height:18px;display:flex;justify-content:space-between;gap:3px;align-items:center;font-size:8px;color:#9e8054;white-space:nowrap}.market-offer-tags b{font-size:8px;color:#748b4e;border-radius:4px;background:#e8edce;padding:2px 3px;font-weight:500}
.market-food{padding:0;border-radius:50%;background:radial-gradient(ellipse,#f1e6c9,transparent 72%);width:82px;height:75px;margin:4px auto 3px;display:grid;place-items:center}.market-food .sprite{width:74px;height:74px}
.market-offer h3{font-size:13px;margin:3px 0!important}.market-offer p{font-size:10px!important;line-height:1.6!important}.market-price{display:block;color:#ad7440;font-size:12px;margin:6px 0 7px}
.market-buy{display:block;width:100%;min-height:34px;border:1px solid #ad754c;border-radius:8px;background:#d49662;color:#fff9e5;font-weight:600;font-size:11px;padding:6px 3px;box-shadow:0 2px #ad754c}
.market-buy:disabled{opacity:1;background:#ece5d4;color:#a99a82;border-color:#ddd0b5;box-shadow:none}.market-offer.purchased .market-food{opacity:.5}
.market-restock{padding:15px 12px 10px;border:1px dashed #cdbb98;background:#f5edd9;border-radius:12px;margin-top:18px}.market-restock>b{font-size:12px;display:block}.market-restock>span{font-size:10px;color:#9b8766;display:block;margin-top:7px}.market-restock p{font-size:10px!important;line-height:1.8!important}
@media(max-width:380px){.town-links{grid-template-columns:minmax(0,1fr) 84px;gap:5px}.town-links .town-next-icon{font-size:20px}.market-welcome{padding:9px;gap:9px}.market-welcome h3{font-size:15px}.market-basket{width:56px;height:56px}.market-basket .sprite{width:52px;height:52px}.market-offer{padding:7px 6px 10px}.market-offer-tags{font-size:7px}.market-offer-tags b{font-size:7px}}

/* A delivered order gets a brief thank-you before the next visitor arrives. */
.reaction-art{position:relative;display:block;width:100%;aspect-ratio:1;transform-origin:50% 100%;animation:reaction-weight var(--reaction-duration,3600ms) ease-in-out both;pointer-events:none}
.reaction-fallback{position:absolute;left:6%;bottom:0;width:88%;height:auto;aspect-ratio:1;object-fit:contain;border-radius:50%;background:#fff8e7}
.reaction-frame{position:absolute;inset:0;visibility:hidden;pointer-events:none}
.reaction-frame::before{content:'';position:absolute;left:50%;bottom:0;width:var(--cut-w);height:var(--cut-h);transform:translateX(-50%);background:url('./assets/visitor-reactions.webp?v=20260911-28') var(--cut-position)/var(--cut-size) no-repeat;mask:url('./assets/visitor-reactions-mask.svg?v=20260911-28') var(--cut-position)/var(--cut-size) no-repeat}
.reaction-thank{opacity:1;animation:reaction-thank var(--reaction-duration,3600ms) steps(1,end) both}.reaction-wave{opacity:0;animation:reaction-wave var(--reaction-duration,3600ms) steps(1,end) both}
.reaction-art-ready .reaction-frame{visibility:visible}.reaction-art-ready .reaction-fallback{display:none}
.visitor-breath>.reaction-art{position:absolute;left:50%;bottom:0;width:122%;transform:translateX(-50%)}
.is-thanking .visitor-arrival,.is-thanking .visitor-bubble{animation:visitor-farewell var(--reaction-duration,3600ms) linear both}
.visitor-thanks{font-size:10px;color:#97713f;min-width:44px;white-space:nowrap;gap:3px;padding:2px 5px;background:#fff0d3;border-color:#d4b78b}.visitor-thanks>span{color:#c67958;font-size:13px;animation:thanks-heart 1.8s ease-in-out 2}
.delivery-toast{display:flex;align-items:center;gap:11px;text-align:left;width:max-content;max-width:min(400px,90vw);padding:8px 14px;font-size:12px;line-height:1.7}
.delivery-toast>.reaction-art{width:58px;height:58px;flex:none}.delivery-toast>span:last-child{min-width:0;max-width:270px}
@keyframes reaction-thank{0%,46%{opacity:1}46.01%,100%{opacity:0}}
@keyframes reaction-wave{0%,46%{opacity:0}46.01%,100%{opacity:1}}
@keyframes reaction-weight{0%{scale:.97 .98;rotate:-.7deg}12%{scale:1.008 .99;rotate:0deg}35%{scale:1 1;rotate:0deg}53%{rotate:-1.3deg}70%{rotate:1deg}85%,100%{scale:1 1;rotate:0deg}}
@keyframes visitor-farewell{0%,86%{opacity:1;translate:0 0}100%{opacity:0;translate:0 2px}}
@keyframes thanks-heart{0%,100%{scale:1}45%{scale:1.12}}

/* A small, persistent companion card follows real opening progress. */
.opening-guide{display:flex;align-items:center;gap:8px;margin:0 0 10px;padding:9px 7px 9px 9px;border:1px solid #dfc99e;border-radius:14px;background:linear-gradient(115deg,#fff4d4,#fbefd8);box-shadow:0 2px 0 #dac59e36}
.opening-guide{flex:none}.opening-guide[hidden]{display:none}.opening-guide .opening-cat{width:34px;height:40px;flex:none}.opening-copy{min-width:0;flex:1}.opening-copy small{display:block;color:#aa855d;font-size:9px;letter-spacing:.5px}.opening-copy b{display:block;font-size:12px;color:#785436;margin:2px 0}.opening-copy p{font-size:10px;line-height:1.5;color:#937653}.opening-next{flex:none;min-height:36px;padding:6px 9px;border-radius:10px;border:1px solid #a2b27d;background:#e1e8c5;color:#627348;font-size:11px;font-weight:700}.opening-dismiss{flex:none;min-width:26px;min-height:36px;background:none;font-size:20px;color:#a78c67;padding:0}.opening-order{outline:2px solid #baa057;outline-offset:1px}.opening-shop .town-shop-label{box-shadow:0 0 0 3px #e1b65f,0 3px 8px #77552e24}
@media(max-width:380px){.opening-guide{gap:5px;padding-left:7px}.opening-guide .opening-cat{width:28px}.opening-next{padding:6px 7px}}

/* Cooked dishes get a quiet tasting at a little table before the farewell. */
.dining-art{position:absolute;left:50%;bottom:-4%;width:134%;aspect-ratio:1;transform:translateX(-50%);pointer-events:none}
.dining-frame{position:absolute;inset:0;visibility:hidden;pointer-events:none}.dining-frame::before{content:'';position:absolute;left:50%;bottom:0;width:var(--cut-w);height:var(--cut-h);transform:translateX(-50%);background:url('./assets/visitor-dining.webp?v=20260911-28') var(--cut-position)/var(--cut-size) no-repeat;mask:var(--dining-mask) var(--cut-position)/var(--cut-size) no-repeat}
.dining-fallback{position:absolute;left:15%;bottom:0;width:70%;height:auto;border-radius:50%;background:#fff7e8}.dining-art-ready .dining-frame{visibility:visible}.dining-art-ready .dining-fallback{display:none}
.dining-pose-1{opacity:0}.dining-food{position:absolute;left:37%;top:63%;width:35%;height:35%;transform:translate(-50%,-68%);filter:drop-shadow(0 1px 1px #76573620);visibility:hidden}.dining-art-ready .dining-food{visibility:visible}
[data-dining-phase="settling"] .dining-art{animation:dining-settle .8s ease-out both}
[data-dining-phase="eating"] .dining-pose-0{animation:dining-rest 2.4s steps(1,end) 3 both}
[data-dining-phase="eating"] .dining-pose-1{animation:dining-taste 2.4s steps(1,end) 3 both}
.dining-bubble{height:25px;min-width:42px;bottom:110%;font-size:10px;color:#97723e;background:#fff4dc;gap:3px}.dining-bubble span{color:#ca8260;animation:dining-heart 2.4s ease-in-out 3}
@keyframes dining-settle{from{opacity:0;translate:0 -3px}to{opacity:1;translate:0 0}}
@keyframes dining-rest{0%,57.99%{opacity:1}58%,87.99%{opacity:0}88%,100%{opacity:1}}
@keyframes dining-taste{0%,57.99%{opacity:0}58%,87.99%{opacity:1}88%,100%{opacity:0}}
@keyframes dining-heart{0%,40%,100%{translate:0 0;scale:1}65%{translate:0 -2px;scale:1.08}}

/* A compact illustrated cookbook: ingredients lead directly into the cooker. */
.cookbook-modal{border:3px solid #d6ad6c;background:#fff8e5;box-shadow:0 0 0 5px #f2d397,0 22px 80px #3b2b2866;overflow:hidden}
.cookbook-modal>header{background:linear-gradient(115deg,#ffe3a5,#f7cb80);border-bottom:2px solid #e8bd79;padding:15px 20px}
.cookbook-modal #modal-kicker{color:#997449;letter-spacing:.12em;font-size:10px}
.cookbook-modal #modal-title{font-size:24px}
.cookbook-modal .modal-content{padding:18px 20px 12px;background:linear-gradient(90deg,#f5e6c522,transparent 7%,transparent 93%,#f5e6c544)}
.cookbook-intro{display:grid;grid-template-columns:110px 1fr;align-items:center;gap:12px}
.cookbook-intro>.sprite{width:110px;height:110px;filter:drop-shadow(0 5px 2px #9f744014)}
.cookbook-intro p{margin:0;padding:12px;background:#f6e2c5;border-radius:12px 17px 13px 8px;font-size:14px;line-height:1.8;color:#987250}
.cookbook-divider{display:flex;align-items:center;gap:12px;justify-content:center;color:#ab7c45;font-size:13px;letter-spacing:.16em;margin:16px 0 12px}
.cookbook-divider::before,.cookbook-divider::after{content:'';height:1px;background:#e7cda1;width:45px}.cookbook-divider span{background:#faebc8;border-radius:30px;padding:5px 20px}
.cookbook-ingredients{display:flex;justify-content:center;align-items:flex-start;gap:8px;flex-wrap:wrap}
.cookbook-ingredient{width:82px;padding:0;background:none;border:0;display:flex;flex-direction:column;gap:7px;align-items:center;font-size:11px;color:#8d6b49;line-height:1.3}
.ingredient-tile{position:relative;display:block;width:78px;height:78px;background:#f8e5b9;border:2px solid #e1c58e;border-radius:15px;box-shadow:inset 0 2px 0 #fff9df,0 3px 0 #cfb58433}
.ingredient-tile>.sprite{width:68px;height:68px;margin:3px}.ingredient-tile i{position:absolute;right:-3px;top:-5px;width:18px;height:18px;background:#79acb5;color:#fff;border:2px solid #fff6dc;border-radius:6px;font-size:12px;font-style:normal;font-weight:800;line-height:14px}
.ingredient-tile b{position:absolute;right:-3px;bottom:-4px;min-width:32px;border-radius:8px;background:#c58a5e;color:#fff8e7;padding:3px 5px;font-size:11px;line-height:1.2;border:1px solid #fff8df}
.cookbook-ingredient.enough .ingredient-tile{border-color:#9eaf73;background:#eef0ca}.cookbook-ingredient.enough b{background:#88a369}.cookbook-plus{padding-top:25px;color:#c6a878;font-size:18px}
.cookbook-stock{font-size:10px!important;color:#ad9473!important;text-align:center;line-height:1.5!important;margin:11px 0 0!important}
.cookbook-arrow{text-align:center;font-size:34px;font-weight:900;line-height:1.1;color:#8fac67;text-shadow:0 2px #cfddb0;margin:10px 0 5px}
.cookbook-tool{display:flex;align-items:center;justify-content:center;gap:14px;background:#fbefd2;border-radius:16px;padding:7px 12px;max-width:290px;margin:auto}
.cookbook-stove{position:relative;flex:none}.cookbook-stove>.sprite{width:70px;height:70px}.cookbook-tool>div+div{display:flex;flex-direction:column;gap:6px}.cookbook-tool b{font-size:14px;color:#89673f}.cookbook-tool span:not(.sprite):not(.steam){font-size:12px;color:#a17a4b}.cookbook-tool small{font-size:10px;color:#ad9271}.cookbook-status{text-align:center;font-size:12px!important;line-height:1.6!important;margin:12px 0 0!important;color:#a57d50!important}.cookbook-status.ready{color:#799254!important}
.cookbook .primary-btn{min-height:45px;font-size:15px}.cookbook .text-button{color:#ac875d}.cookbook .simmering .cookbook-stove>.sprite{animation:pot-simmer 1.8s ease-in-out infinite;transform-origin:50% 85%}
.recipe-open{width:100%;padding:0;background:transparent;text-align:left;border:0}.recipe-open>span:not(.sprite){flex:1;display:flex;flex-direction:column;gap:7px}.recipe-open b{font-size:16px}.recipe-open small{font-size:11px;color:#a88a62}.recipe-open i{font-size:27px;font-style:normal;color:#bfa175}.recipe-card .cookbook-ingredients{margin:14px 0 10px}.recipe-card .ingredient-tile{width:56px;height:56px;border-radius:11px}.recipe-card .ingredient-tile>.sprite{width:48px;height:48px;margin:2px}.recipe-card .cookbook-ingredient{width:66px;font-size:10px}.recipe-card .cookbook-plus{padding-top:16px}.recipe-card .primary-btn{font-size:12px}.recipe-practice{font-size:10px;color:#a78c69;margin-top:12px}.recipe-practice summary{cursor:pointer}.recipe-card.locked{opacity:1}.recipe-card.locked .recipe-open>.sprite{opacity:.55}
@media(max-width:390px){.cookbook-modal .modal-content{padding:12px 14px 8px}.cookbook-modal>header{padding:12px 15px}.cookbook-modal #modal-title{font-size:22px}.cookbook-intro{grid-template-columns:88px 1fr;gap:8px}.cookbook-intro>.sprite{width:88px;height:88px}.cookbook-intro p{font-size:12px;padding:10px}.cookbook-divider{margin:10px 0}.cookbook-arrow{margin:7px 0 3px}.cookbook-tool{padding:4px 10px}.cookbook-stove>.sprite{width:62px;height:62px}}
@media(prefers-reduced-motion:reduce){.cookbook .simmering .cookbook-stove>.sprite{animation:none}}
.reduce-motion .cookbook .simmering .cookbook-stove>.sprite{animation:none}
.cookbook-modal{overflow-y:auto;overscroll-behavior:contain}
@media(max-height:700px){.cookbook-modal>header{padding-top:10px;padding-bottom:10px}.cookbook-modal .modal-content{padding-top:10px;padding-bottom:6px}.cookbook-intro{grid-template-columns:76px 1fr}.cookbook-intro>.sprite{width:76px;height:76px}.cookbook-divider{margin:6px 0 9px}.cookbook-divider span{padding:3px 16px}.cookbook-stock{margin-top:7px!important}.cookbook-arrow{font-size:28px;margin:5px 0 2px}.cookbook-stove>.sprite{width:54px;height:54px}.cookbook-status{margin-top:8px!important}.cookbook .text-button.full{margin-top:3px;min-height:30px;padding:5px 0}}
.modal-tabs button{white-space:nowrap;padding-left:5px;padding-right:5px;font-size:12px}
.recipe-card .primary-btn:disabled,.cookbook .primary-btn:disabled{opacity:1;background:#eadcc3;border-color:#d8c49f;box-shadow:0 3px 0 #cdb58c;color:#937953}
/* A small chalkboard for the day's chosen recipe. */
.town-links{grid-template-columns:minmax(0,1fr) 77px 77px;gap:6px}.town-specialty{border:3px solid #b79665;border-radius:11px;background:#718773;color:#fffae5;padding:6px 4px;box-shadow:inset 0 0 0 1px #dbe2bc55;text-align:center}.town-specialty>span{display:block;font-size:11px;font-weight:700}.town-specialty small{display:block;font-size:9px;margin-top:4px;color:#e2e8c9}.specialty-order{border-color:#c3a264}.specialty-order .order-bonus{color:#957036;background:#f7eac5}
.specialty-intro{display:flex;gap:12px;align-items:center;padding:13px;border:1px solid #d5c69e;border-radius:16px;background:#f1efd9;margin-bottom:14px}.specialty-intro small{font-size:10px;color:#a2885e}.specialty-intro h3{font-size:17px;margin:6px 0!important}.specialty-intro p{font-size:11px!important;line-height:1.7!important}.specialty-plate{width:72px;height:72px;flex:none;display:grid;place-items:center;background:#fff9e8;border:1px solid #dbccaa;border-radius:50%}.specialty-plate .sprite{width:66px;height:66px}.specialty-status{padding:12px 14px;background:#f8ecd3;border:1px solid #decea8;border-radius:12px;margin-bottom:16px}.specialty-status>b{font-size:12px}.specialty-status>p{font-size:11px!important;line-height:1.8!important;margin-top:6px}.specialty-pending{margin-top:10px;display:grid;gap:6px}.specialty-pending button{display:flex;justify-content:space-between;align-items:center;gap:8px;text-align:left;background:#fff9e8;border:1px solid #d5c9a0;border-radius:9px;padding:9px;font-size:10px;color:#748653}.specialty-pending span{font-size:9px;white-space:nowrap}.specialty-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.specialty-card{display:flex;flex-direction:column;align-items:center;min-width:0;border:1px solid #ddcca8;border-radius:14px;background:#fff9e9;box-shadow:0 3px 0 #e2d4b730;padding:8px 7px 10px}.specialty-card.chosen{background:#edf1d9;border-color:#99ae79}.specialty-card.locked{background:#f2ebdc;color:#a5987f}.specialty-card.locked>.sprite{opacity:.5;filter:saturate(.5)}.specialty-card-top{font-size:9px;color:#a28860;margin:2px 0}.specialty-card>.sprite{width:72px;height:72px}.specialty-card>b{font-size:12px;margin:4px 0}.specialty-card>small{font-size:10px;color:#9c8461}.specialty-card-foot{font-size:10px;color:#7e915c;padding:7px 0 0}.specialty-back{margin-bottom:10px}.specialty-detail{text-align:center;padding:13px;background:#fffaed;border:1px solid #e3d1ac;border-radius:16px}.specialty-dish{display:inline-block}.specialty-dish>.sprite{width:106px;height:106px}.specialty-detail h3{font-size:18px;margin:6px 0!important}.specialty-detail p{font-size:11px!important;line-height:1.9!important;color:#9e825b}.specialty-ingredients{display:flex;justify-content:center;align-items:center;gap:12px;margin:12px 0}.specialty-ingredients>span{color:#b6a27d}.specialty-ingredients>button{display:flex;flex-direction:column;align-items:center;gap:4px;background:none;padding:0;font-size:10px}.specialty-ingredients .sprite{width:48px;height:48px}.specialty-ingredients b{font-size:10px;color:#7a8e58}.specialty-stock{color:#7c8d5e!important}.specialty-detail+.notice{font-size:11px!important}
@media(max-width:380px){.town-links{grid-template-columns:minmax(0,1fr) 70px 70px;gap:5px}.town-links .town-next{gap:5px;padding-left:7px}.town-links .town-next-icon{display:none}.specialty-intro{gap:9px;padding:10px}.specialty-intro h3{font-size:15px}.specialty-plate{width:58px;height:58px}.specialty-plate .sprite{width:54px;height:54px}}
.specialty-detail-head{display:flex;align-items:center;gap:9px;text-align:left}.specialty-detail-head .specialty-dish>.sprite{width:80px;height:80px}.specialty-detail-head>div{flex:1;min-width:0}.specialty-detail-head h3{font-size:16px}.specialty-back{margin:0 0 10px!important}.specialty-detail+.notice{padding:10px;line-height:1.8}.specialty-detail .full{font-size:12px;min-height:38px}
@media(max-height:700px){.specialty-detail{padding:10px}.specialty-detail-head .specialty-dish>.sprite{width:64px;height:64px}.specialty-detail-head h3{font-size:15px}.specialty-ingredients{margin:8px 0}.specialty-detail+.notice{margin:10px 0!important}}
.specialty-modal>header{padding:12px 17px}.specialty-modal #modal-title{font-size:23px}.specialty-modal #modal-kicker{font-size:10px}.specialty-modal .modal-content{padding:13px 15px}
.specialty-detail .primary-btn{background:#f1e6c8;color:#8e7047;border-color:#d8c49f;box-shadow:0 3px 0 #ceba94}

/* Persistent seated / standing layers share a single real-time meal clock. */
.meal-seat,.meal-standing{position:absolute;inset:0;pointer-events:none}
.meal-seat{opacity:var(--meal-seat,0);translate:0 var(--meal-seat-y,0px)}
.meal-standing{opacity:var(--meal-stand,0);translate:0 var(--meal-stand-y,0px)}
.meal-standing>.reaction-art{position:absolute;left:50%;bottom:0;width:122%;transform:translateX(-50%);scale:1 var(--meal-breath,1);rotate:var(--meal-roll,0deg)}
.is-meal .dining-art,.is-meal .dining-frame,.is-meal .reaction-art,.is-meal .reaction-frame,.is-meal .visitor-bubble,.is-meal .dining-bubble span{animation:none}
.is-meal .dining-pose-0{opacity:calc(1 - var(--meal-taste,0))}.is-meal .dining-pose-1{opacity:var(--meal-taste,0)}
.is-meal .reaction-thank{opacity:calc(1 - var(--meal-wave,0))}.is-meal .reaction-wave{opacity:var(--meal-wave,0)}
.is-meal .dining-bubble{opacity:var(--meal-bubble,1);translate:0 var(--meal-bubble-y,0px)}
.is-meal .meal-words{font-size:10px;color:#97723e}
.is-meal .dining-frame{scale:1 var(--meal-breath,1);transform-origin:50% 75%}

/* Four measured walk poses per outfit; travel ends in the existing idle art. */
.visitor-stride{position:absolute;left:50%;bottom:0;width:136%;aspect-ratio:1;transform:translateX(-50%);pointer-events:none}
.visitor-stride-facing{position:absolute;inset:0;transform:scaleX(var(--stride-direction,1));translate:0 var(--stride-lift,0px)}
.visitor-stride-frame{position:absolute;inset:0;visibility:hidden;pointer-events:none}.visitor-stride-frame.current{visibility:visible}
.visitor-stride-frame::before{content:'';position:absolute;left:50%;bottom:0;width:var(--cut-w);height:var(--cut-h);transform:translateX(-50%);background:url('./assets/visitor-walk.webp?v=20260911-28') var(--cut-position)/var(--cut-size) no-repeat;mask:var(--stride-mask) var(--cut-position)/var(--cut-size) no-repeat}
.town-visitor.is-journey{translate:var(--visitor-shift,0%) var(--visitor-shift-y,0%);opacity:var(--visitor-opacity,1)}
.will-depart.is-thanking .visitor-arrival{animation:none}

/* Drop feedback stays under the pointer without accepting unrelated facility taps. */
.cell.drop-valid{box-shadow:inset 0 0 0 3px #91ad66,0 0 0 2px #e7efcb;background-color:#eef3d6}.cell.drop-invalid{box-shadow:inset 0 0 0 2px #d29672;background-color:#f7e4d0}
.bottom-nav .storage-dropzone{background:#edf1d8;border-radius:12px;outline:1px dashed #a3b780;outline-offset:-2px}.bottom-nav .storage-dropzone.drop-valid{background:#dfeac5;outline:2px solid #91aa68;outline-offset:-2px}.bottom-nav .storage-dropzone.drop-invalid{background:#f3dfcc;outline-color:#cf9674}
#drag-hint{position:fixed;z-index:101;bottom:90px;left:50%;transform:translateX(-50%);max-width:85vw;padding:8px 14px;background:#fff3dcf5;color:#9e744c;border:1px solid #d8bc92;border-radius:12px;box-shadow:0 5px 18px #765a3229;font-size:12px;line-height:1.5;text-align:center;pointer-events:none}
#drag-hint.valid{background:#f1f6dcf5;border-color:#abbc82;color:#74894e}

/* An invitation and shared shopping list, using the existing painted food. */
.banquet-size-picker{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin:15px 0}.banquet-size-picker button{min-width:0;padding:12px 4px;border:2px solid #e0c7a0;border-radius:15px;background:#fff8e5;color:#70513b;display:grid;gap:6px;box-shadow:0 3px 0 #dfc39a}.banquet-size-picker b{font-size:13px}.banquet-size-picker span{font-size:12px}.banquet-size-picker small{font-size:10px;line-height:1.5}.banquet-size-picker [aria-pressed=true]{background:#eaf0d8;border-color:#70957a;box-shadow:0 3px 0 #70957a}.banquet-size-picker button:disabled{opacity:.48}.banquet-menu-reward{display:block;color:#7c694a;margin:7px 0 12px;font-size:12px}.banquet-invitation{margin-top:12px;padding:20px 14px 10px;border:2px solid #dfbc85;border-radius:20px;background:linear-gradient(135deg,#fff4d8,#fffaf0);box-shadow:0 5px 0 #ead5b1;text-align:center}.banquet-invitation>small{color:#88724c;letter-spacing:2px}.banquet-invitation h3{font-size:25px;margin:8px 0}.banquet-invitation>p{font-size:13px;color:#957451}.banquet-preview-courses{list-style:none;margin:20px 0 0;padding:0;text-align:left}.banquet-preview-courses>li{display:grid;grid-template-columns:22px 1fr auto;gap:6px;align-items:center;padding:9px 0;border-top:1px dashed #d9c5a5}.course-number{font-size:12px;background:#dbe6c9;border-radius:50%;width:22px;height:22px;display:grid;place-items:center;color:#607657}.banquet-preview-courses button{display:flex;align-items:center;text-align:left;gap:4px;padding:0;border:0;background:transparent;color:inherit;width:100%;font-size:12px}.banquet-preview-courses .sprite{width:43px;height:43px;flex-shrink:0}.banquet-preview-courses button span:not(.sprite){display:grid;gap:3px}.banquet-preview-courses button b{font-size:11px;font-weight:500;color:#96734a}.banquet-preview-courses li>small{font-size:10px;color:#93724b;white-space:nowrap}.banquet-budget{border-top:2px solid #e0c493;margin-top:15px;padding-top:14px;text-align:left}.banquet-budget>div{display:flex;justify-content:space-between;margin:8px 0;font-size:13px}.banquet-budget>div:nth-child(3){color:#59775a}.banquet-budget p{font-size:11px;line-height:1.8;color:#9b8060}.banquet-pantry{margin:22px 0}.banquet-pantry h3{font-size:17px;margin-bottom:6px}.banquet-pantry>p{font-size:12px;color:#947c5e;line-height:1.7}.banquet-pantry h4{font-size:13px;margin:20px 0 8px}.banquet-stock-row{display:flex;align-items:center;width:100%;gap:8px;text-align:left;border:0;border-bottom:1px solid #e9dbc0;background:transparent;padding:8px 0;color:inherit}.banquet-stock-row .sprite{width:47px;height:47px;flex-shrink:0}.banquet-stock-row>span:not(.sprite){flex:1;min-width:0;display:grid;gap:5px}.banquet-stock-row b{font-size:13px}.banquet-stock-row small{font-size:11px;color:#917b5f}.banquet-stock-row em{font-size:11px;font-style:normal;white-space:nowrap;color:#a56842}.banquet-stock-row.stock-ready em{color:#66855e}.banquet-stock-note{display:block;margin-top:12px;line-height:1.8;font-size:11px;color:#a18d73}.banquet-shopping{margin:14px 0;border:1px solid #dbc29b;border-radius:13px;padding:14px;background:#fff7e4}.banquet-shopping>summary{font-size:13px;font-weight:600;cursor:pointer;display:flex;justify-content:space-between}.banquet-shopping[open]>summary span{transform:rotate(90deg)}.banquet-shopping .banquet-pantry{margin-bottom:0}.banquet-start{margin-top:8px}.stock-all-ready{color:#62855e!important}

.modal-return{display:flex;align-items:center;gap:8px;max-width:100%;min-height:42px;margin:0 0 14px;padding:8px 13px;border:1px solid #d9c4a0;border-radius:13px;background:#f7edd7;color:#765b40;text-align:left;font-size:13px;line-height:1.5;box-shadow:0 2px 0 #e7d4b4}.modal-return>span{font-size:23px;line-height:1}.modal-return:active{transform:translateY(1px);box-shadow:none}.modal-return:focus-visible{outline:3px solid #729779;outline-offset:3px}

/* Four grounded painted poses: brace, lift and stand; reverse to sit down. */
.meal-transition{position:absolute;left:50%;bottom:-4%;width:134%;aspect-ratio:1;transform:translateX(-50%);opacity:var(--meal-transition,0);pointer-events:none}
.dining-rise-frame{position:absolute;inset:0;visibility:hidden}.dining-rise-frame.current{visibility:visible}
.dining-rise-frame::before{content:'';position:absolute;left:50%;bottom:0;width:var(--cut-w);height:var(--cut-h);transform:translateX(-50%);background:url('./assets/visitor-rise.webp?v=20260911-28') var(--cut-position)/var(--cut-size) no-repeat;mask:var(--rise-mask) var(--cut-position)/var(--cut-size) no-repeat}

/* Ground anchors stay fixed even when small screens enlarge the hit target. */
.town-world{container-type:size}
.town-visitor{left:70%;top:auto;bottom:75.1707317%;transform:translateX(-50%)}
.town-visitor:nth-child(2){left:47.5%;top:auto;bottom:43.1707317%}
.town-tables{position:absolute;inset:0;pointer-events:none;z-index:4;visibility:hidden}
.town-tables.tables-ready{visibility:visible}.town-tables[hidden]{display:none}
.town-table{position:absolute;left:70%;bottom:75.1707317%;width:14%;min-width:38px;aspect-ratio:.82;transform:translateX(-50%)}
.town-table:nth-child(2){left:47.5%;bottom:43.1707317%}
.empty-table-art{position:absolute;left:50%;bottom:-4%;width:134%;aspect-ratio:1;transform:translateX(-50%);pointer-events:none}
.empty-table-art::before{content:'';position:absolute;left:50%;bottom:0;width:var(--cut-w);height:var(--cut-h);transform:translateX(-50%);background:url('./assets/visitor-empty-tables.webp?v=20260911-28') var(--cut-position)/var(--cut-size) no-repeat;mask:url('./assets/visitor-empty-table-mask.svg?v=20260911-28') var(--cut-position)/var(--cut-size) no-repeat}
.is-yielding .visitor-arrival,.is-yielding .reaction-art,.is-yielding .reaction-frame{animation:none}
.is-yielding .reaction-thank{opacity:1}.is-yielding .reaction-wave{opacity:0}.is-yielding .visitor-thanks{display:none}

/* Layered recipes keep the immediate cook action visible before optional planning. */
.recipe-steps{margin:14px 0 8px;border:1px solid #d9c499;border-radius:12px;background:#f8efd8;text-align:left;overflow:hidden}
.recipe-steps summary{display:flex;justify-content:space-between;gap:8px;cursor:pointer;padding:13px 12px;color:#795c37;font-size:12px;font-weight:650;list-style:none;min-height:44px}
.recipe-steps summary::-webkit-details-marker{display:none}.recipe-steps[open] summary{border-bottom:1px dashed #dac89e}
.recipe-steps>div{padding:0 10px 12px}.recipe-steps p{font-size:11px;line-height:1.7;color:#8b7452;margin:12px 0}.recipe-steps h4{font-size:12px;margin:16px 0 7px;color:#806340}.recipe-steps>div>small{display:block;font-size:10px;line-height:1.7;color:#927d5d;margin-top:10px}
.modal-tabs{flex-wrap:wrap}.modal-tabs [data-recipe-tab]{flex:1;white-space:nowrap}

/* LAYERED FOOD SPRITES */
.sprite[data-icon="40"]{--food-atlas:url('./assets/layered-dishes.webp?v=20260911-28');--art-w:92.00000%;--art-h:84.88095%;--art-size:248.80952% 269.67742%;--art-position:9.46667% 12.42079%}
.sprite[data-icon="41"]{--food-atlas:url('./assets/layered-dishes.webp?v=20260911-28');--art-w:92.00000%;--art-h:74.69947%;--art-size:220.38664% 271.42857%;--art-position:92.55474% 12.62626%}
.sprite[data-icon="42"]{--food-atlas:url('./assets/layered-dishes.webp?v=20260911-28');--art-w:92.00000%;--art-h:85.51175%;--art-size:226.76311% 243.96887%;--art-position:6.99001% 84.18919%}
.sprite[data-icon="43"]{--food-atlas:url('./assets/layered-dishes.webp?v=20260911-28');--art-w:92.00000%;--art-h:74.23448%;--art-size:216.20690% 267.94872%;--art-position:94.51039% 83.71501%}
.sprite[data-icon="40"]::before,.sprite[data-icon="41"]::before,.sprite[data-icon="42"]::before,.sprite[data-icon="43"]::before{mask-image:url('./assets/layered-dishes-mask.svg?v=20260911-28');mask-size:var(--art-size);mask-position:var(--art-position);mask-repeat:no-repeat}
/* END LAYERED FOOD SPRITES */

/* An optional batch note keeps direct cooking as the main recipe action. */
.recipe-plan-link{margin-top:8px;color:#71804c}.batch-intro{display:flex;align-items:center;gap:14px;padding:6px 0 16px}.batch-intro>.sprite{width:82px;height:82px;flex:none}.batch-intro h3{font-size:19px;margin:0 0 8px}.batch-intro p{font-size:12px;color:#8e7958;margin:0}.batch-sizes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.batch-sizes button{display:flex;flex-direction:column;gap:6px;align-items:center;padding:12px 4px;border:1px solid #d7c391;border-radius:12px;background:#f6ecd2;color:#836b45}.batch-sizes button[aria-pressed="true"]{background:#e5edcf;border-color:#8fa371;box-shadow:inset 0 0 0 1px #8fa371}.batch-sizes b{font-size:18px}.batch-sizes span{font-size:10px;line-height:1.5}.batch-note{font-size:12px;line-height:1.7;color:#88724f;margin:15px 0}.batch-shopping{background:#faf3df;border:1px solid #ddcba5;border-radius:12px;padding:0 11px 12px;margin-top:15px}.batch-shopping summary{padding:12px 0;display:flex;justify-content:space-between;font-size:12px;cursor:pointer;list-style:none}.batch-shopping summary::-webkit-details-marker{display:none}.batch-shopping h4{font-size:12px;margin:10px 0;color:#88704d}.batch-shopping>small{display:block;color:#978360;font-size:10px;line-height:1.7;margin-top:12px}

/* Rear walking is only mounted for a trip whose outfit has finished decoding. */
.visitor-stride-facing{opacity:calc(1 - var(--stride-back,0))}
.visitor-stride-rear{position:absolute;inset:0;opacity:var(--stride-back,0);translate:0 var(--stride-lift,0px);pointer-events:none}
.visitor-back-frame{position:absolute;inset:0;visibility:hidden;pointer-events:none}.visitor-back-frame.current{visibility:visible}
.visitor-back-frame::before{content:'';position:absolute;left:50%;bottom:0;width:var(--cut-w);height:var(--cut-h);transform:translateX(-50%);background:url('./assets/visitor-back.webp?v=20260911-28') var(--cut-position)/var(--cut-size) no-repeat;mask:var(--back-mask) var(--cut-position)/var(--cut-size) no-repeat}

/* A paper purchase slip, using the existing painted ingredient art. */
.supply-entry{width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;text-align:left;padding:12px 14px;margin:12px 0;border:1px solid #b8c2a0;border-radius:12px;background:#edf0da;color:#536443;box-shadow:0 3px #d6ddbd}.supply-entry b,.supply-entry small{display:block}.supply-entry small{font-size:11px;margin-top:5px;font-weight:400}.supply-entry>span:last-child{font-size:24px}
.supply-intro{display:flex;align-items:center;gap:14px;padding:14px 0}.supply-intro h3{margin:4px 0}.supply-intro small{font-size:11px;color:#977e57}.supply-intro p{font-size:12px!important;margin:4px 0!important}.supply-stamp{display:grid;place-items:center;flex:0 0 52px;height:52px;border:3px double #b37450;border-radius:50%;color:#ad704d;font-size:26px;transform:rotate(-9deg)}
.supply-tabs,.supply-quantity{display:flex;gap:8px;margin:10px 0}.supply-tabs button,.supply-quantity button{flex:1;min-height:40px;border:1px solid #d0c09d;border-radius:10px;background:#f2ead6;color:#715b42;font-size:12px}.supply-tabs button[aria-pressed=true],.supply-quantity button[aria-pressed=true]{background:#dee7c7;border-color:#8caa70;color:#48633d;box-shadow:inset 0 0 0 1px #8caa70}
.supply-grid{gap:10px}.supply-option{position:relative;display:flex;flex-direction:column;align-items:center;padding:12px 8px;border:1px solid #d7c5a0;border-radius:14px;background:#fff9e9;box-shadow:0 3px #e8d9b9;color:#624d34}.supply-option .sprite{width:76px;height:76px;margin:10px 0 3px}.supply-option b{font-size:14px}.supply-option>span:not(.sprite){font-size:10px;margin:5px 0;color:#9a8969}.supply-option .supply-rank{position:absolute;top:3px;left:8px}.supply-option strong{font-size:12px;color:#ac7048;margin:6px 0}.supply-option small{font-size:10px;color:#73855a}.supply-option:active{transform:translateY(2px);box-shadow:0 1px #e8d9b9}
.supply-note{font-size:11px!important;line-height:1.8!important;color:#988569;margin:12px 0!important}.supply-receipt{padding:12px;border-top:1px dashed #c6b795;border-bottom:1px dashed #c6b795;font-size:12px}.supply-receipt span{display:block;margin-top:6px;color:#8a795f}.supply-selected{display:flex;align-items:center;gap:12px;margin:4px 0 18px}.supply-selected .sprite{width:90px;height:90px;flex-shrink:0}.supply-selected h3{margin:6px 0}.supply-selected p{font-size:12px!important;margin:0!important}.supply-selected small{color:#9a8159;letter-spacing:3px;font-size:10px}.supply-field{padding:12px 0;border-top:1px solid #e6dac1}.supply-field>b{font-size:13px}.supply-field>small{font-size:11px;color:#9a8868}.supply-total{display:grid;grid-template-columns:1fr auto;align-items:center;padding:14px;margin:12px 0;background:#f1e6ca;border-radius:10px}.supply-total>span{font-size:13px}.supply-total strong{font-size:22px;color:#a56540}.supply-total small{grid-column:1/-1;text-align:right;font-size:11px;margin-top:7px;color:#927953}.supply-tip{padding:10px 12px;background:#edf0dc;border-radius:8px;font-size:11px!important;line-height:1.7!important}.supply-tip button{display:block;font-size:11px;margin-top:4px}

.prep-copy>button.prep-shopping{display:block;width:auto;font-size:10px;color:#778956;margin-top:3px;padding:0;text-align:left;text-decoration:underline;text-underline-offset:3px}.prep-copy>button.prep-shopping[hidden]{display:none}.shopping-entry{display:flex;justify-content:space-between;align-items:center;margin:10px 0;color:#657e4f;border-color:#b9c7a0;background:#f0f1df}.shopping-intro{padding:12px 0}.shopping-intro>small{color:#95805c;font-size:11px}.shopping-intro h3{font-size:19px;margin:7px 0}.shopping-intro p{font-size:12px!important;line-height:1.8!important}.shopping-rows{display:grid;gap:12px;margin:14px 0}.shopping-row{padding:10px;border:1px solid #d8c6a2;border-radius:14px;background:#fff9e9;box-shadow:0 3px #e9dcc0}.shopping-food{width:100%;display:flex;gap:9px;align-items:center;text-align:left;color:#70553a;background:transparent}.shopping-food>.sprite{width:54px;height:54px;flex-shrink:0}.shopping-food>span{flex:1;min-width:0}.shopping-food b{display:block;font-size:13px}.shopping-food small{display:block;font-size:10px;color:#9b896c;margin-top:5px;line-height:1.7}.shopping-food em{font-size:10px;font-style:normal;white-space:nowrap;color:#b67c4f}.shopping-ready{background:#f1f2df;border-color:#c9d3ae}.shopping-ready .shopping-food em{color:#6e8c51}.shopping-options{display:grid;gap:7px;margin-top:8px}.shopping-options>button{padding:9px 12px;min-height:43px;border:1px solid #c6b592;border-radius:8px;background:#eee5cc;color:#755839;text-align:left}.shopping-options>button b{display:block;font-size:12px}.shopping-options>button small{display:block;font-size:10px;margin-top:3px;color:#95805c}.shopping-options>button[data-market-buy]{background:#e7ecd2;border-color:#b0c18e;color:#547141}.shopping-options>button:disabled{opacity:.55}.shopping-hint,.shopping-footnote{font-size:10px!important;line-height:1.8!important;color:#978567;margin:8px 2px 0!important}.shopping-footnote{margin:14px 0!important}

/* A calm painted wipe, sampled from the same clock as eating and standing. */
.meal-cleanup{position:absolute;left:50%;bottom:-4%;width:134%;aspect-ratio:1;transform:translateX(-50%);opacity:var(--meal-cleanup,0);pointer-events:none}.dining-cleanup-frame{position:absolute;inset:0;visibility:hidden;pointer-events:none}.dining-cleanup-frame.current{visibility:visible;opacity:var(--meal-clean-blend,1)}.dining-cleanup-frame.previous{visibility:visible;opacity:calc(1 - var(--meal-clean-blend,1))}.dining-cleanup-frame::before{content:'';position:absolute;left:50%;bottom:0;width:var(--cut-w);height:var(--cut-h);transform:translateX(-50%);background:url('./assets/visitor-cleanup.webp?v=20260911-28') var(--cut-position)/var(--cut-size) no-repeat;mask:var(--cleanup-mask) var(--cut-position)/var(--cut-size) no-repeat}.is-meal .dining-food{opacity:var(--meal-food,1)}

/* A handwritten menu can be adjusted before the table is set. */
.banquet-work{display:grid;gap:5px;padding:12px 14px;margin-top:16px;border:1px solid #d4c59f;border-radius:12px;background:#efe9ce;text-align:left}.banquet-work>span{font-size:11px;color:#927c58}.banquet-work>b{font-size:14px;color:#69744b}.banquet-work>small{font-size:10px;color:#968361;line-height:1.7}.banquet-choice-note{font-size:11px!important;text-align:left;line-height:1.8!important;margin:12px 0!important}.banquet-restore{font-size:11px}.banquet-preview-courses .banquet-swap{font-size:10px;width:auto;margin-top:7px;padding:6px 8px;color:#61794f;background:#e8ecd5;border:1px solid #bac7a0;border-radius:7px;white-space:nowrap;min-height:32px}.banquet-choice-panel{grid-column:1/-1;background:#f0e6c9;border:1px solid #d7c098;border-radius:12px;padding:10px;margin-top:6px;animation:modal-in .18s ease-out}.banquet-choice-title{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px}.banquet-choice-title>b{font-size:11px}.banquet-choice-title>button{width:auto;font-size:10px;padding:7px}.banquet-choice-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.banquet-choice-grid article{min-width:0;display:flex;flex-direction:column;align-items:center;text-align:center;background:#fff9e8;border:1px solid #dbc79f;border-radius:10px;padding:8px}.banquet-choice-grid article.selected{border-color:#8aa267;box-shadow:inset 0 0 0 1px #8aa267;background:#f4f3df}.banquet-choice-grid article>.sprite{width:68px;height:68px}.banquet-choice-grid article>b{font-size:11px;margin:4px 0;line-height:1.5}.banquet-choice-grid article>small{font-size:10px;color:#9a8564;line-height:1.7;margin-bottom:7px}.banquet-choice-grid button.choose-dish{font-size:11px;justify-content:center;min-height:34px;padding:7px;background:#dce5c0;border:1px solid #b1c18e;border-radius:7px;color:#5b7247;margin-top:auto}.banquet-choice-grid button:disabled{opacity:.55}.banquet-choice-grid button.choice-recipe{font-size:10px;justify-content:center;min-height:30px;margin-top:3px;color:#96744f}.reduce-motion .banquet-choice-panel{animation:none}@media(prefers-reduced-motion:reduce){.banquet-choice-panel{animation:none}}

/* Street letters and collected postcards share the kitchen's warm paper palette. */
.invitation-entry{display:flex;width:100%;align-items:center;gap:12px;margin:16px 0;padding:15px;border:2px solid #d4b380;border-radius:16px;background:linear-gradient(115deg,#f3e3bd,#fff5da);color:#715039;text-align:left;box-shadow:0 3px 0 #e5d0a7}.invitation-entry>span:first-child{font-size:30px;color:#9b7750}.invitation-entry>span:nth-child(2){flex:1;display:grid;gap:5px}.invitation-entry b{font-size:15px}.invitation-entry small{font-size:11px;line-height:1.6;color:#917b57}.invitation-entry i{font-size:22px;font-style:normal}
.invitation-heading{padding:16px 3px 10px}.invitation-heading>small{letter-spacing:2px;font-size:10px;color:#a88a5e}.invitation-heading h3{font-size:23px;margin:10px 0;color:#65472f}.invitation-heading p{font-size:12px;line-height:1.9;color:#907653;margin:8px 0}.invitation-letters{display:grid;gap:18px;margin:12px 0 28px}.invitation-letter{position:relative;padding:19px 15px 16px;border:1px solid #d9bc8b;border-radius:7px 20px 16px 8px;background:linear-gradient(145deg,#fff9e6,#f6ebce);box-shadow:0 4px 0 #ead7b1,0 7px 16px #7350220a}.invitation-letter::before{content:'';position:absolute;top:-5px;left:22px;width:55px;height:12px;background:#d9dfb5aa;transform:rotate(-5deg);border:1px solid #c5cf9f77;pointer-events:none}.invitation-sender{display:flex;gap:9px;align-items:center}.invitation-sender .guest-portrait{width:52px;height:52px;object-fit:contain;flex-shrink:0}.invitation-sender>span{flex:1;min-width:0}.invitation-sender small{font-size:10px;color:#9c825f}.invitation-sender h3{font-size:16px;line-height:1.5;margin:5px 0;color:#71513b}.invitation-sender>i{font-style:normal;font-size:10px;color:#9b865f;border:1px dashed #bca376;border-radius:50%;padding:10px 4px;white-space:nowrap;transform:rotate(9deg)}.invitation-letter>p{font-size:12px;line-height:1.9;color:#8b7351;margin:12px 0}.invitation-checks{border-top:1px dashed #d5c09a;border-bottom:1px dashed #d5c09a;padding:9px 0;margin:12px 0;display:grid;gap:8px}.invitation-checks>div{display:flex;gap:8px;justify-content:space-between;font-size:11px;line-height:1.6;color:#99754b}.invitation-checks .met{color:#607c50}.invitation-checks b{white-space:nowrap;font-size:10px}.invitation-letter>.primary-btn{margin-top:5px;font-size:12px;min-height:42px}.invitation-rule-note,.invitation-album-note{font-size:11px;line-height:1.9;color:#998260}.invitation-unlock{background:#eee7cd;border:1px solid #d7c29c;border-radius:12px;padding:14px;display:grid;gap:10px;font-size:11px}.invitation-unlock>b{font-size:13px;color:#7f7150}.invitation-unlock>span{display:flex;justify-content:space-between;gap:10px}.invitation-unlock strong{color:#7f8658}.invitation-album-title{display:flex;align-items:center;flex-wrap:wrap;gap:8px;justify-content:space-between;margin-top:22px}.invitation-album-title h3{margin:0;font-size:18px}.invitation-album-title>span{font-size:10px;color:#8f7956}.invitation-postcards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px;margin:16px 0}.invitation-postcard{min-width:0;align-self:start;padding:7px 7px 10px;background:#faf0d8;border:1px solid #dcc59d;box-shadow:0 3px 0 #e8d8b8;border-radius:4px 4px 10px 5px}.invitation-postcard summary{list-style:none;cursor:pointer}.invitation-postcard summary::-webkit-details-marker{display:none}.invitation-postcard summary>b{display:block;font-size:12px;line-height:1.6;margin:9px 2px 5px}.invitation-postcard summary>small{display:block;font-size:10px;color:#a08a68;line-height:1.7;margin:0 2px}.postcard-picture{height:116px;overflow:hidden;position:relative;border-radius:3px;background:#e6dfc7}.postcard-picture>img{width:100%;height:100%;object-fit:cover;object-position:50% 100%;filter:saturate(.4);opacity:.58}.collected .postcard-picture>img{filter:none;opacity:1}.postcard-guest{position:absolute;bottom:-3px;left:5px}.postcard-guest .guest-portrait{width:67px;height:67px;object-fit:contain;filter:drop-shadow(0 2px 1px #513f2433)}.postcard-stamp{position:absolute;right:6px;top:8px;font-size:9px;color:#83714f;padding:7px 4px;border:1px dashed #9f8f63;border-radius:50%;background:#fff5dce8;transform:rotate(12deg)}.collected .postcard-stamp{color:#617650;border-color:#84966d}.postcard-memories{border-top:1px dashed #d5bf96;margin-top:12px;padding:3px 3px 0}.postcard-memories p{font-size:11px;line-height:1.9;color:#a28f70}.postcard-memories .read{color:#796143}.invitation-budget{border-top:2px solid #ddc39a;margin:20px 0 15px;padding-top:10px}.invitation-budget>div{display:flex;justify-content:space-between;gap:8px;font-size:12px;margin:10px 0}.invitation-budget>div:nth-child(3){padding-top:10px;border-top:1px dashed #ddc39a}.invitation-budget>div:nth-child(4){color:#668054}.invitation-budget>p{font-size:11px;line-height:1.9;color:#99815d}.invitation-active{border:1px solid #c5cca5;background:#f0efd7;padding:13px;border-radius:12px;display:grid;gap:6px;margin:15px 0}.invitation-active b{font-size:13px;color:#6e7951}.invitation-active span{font-size:11px;line-height:1.8;color:#8a795b}.invitation-plan>.primary-btn{font-size:12px;min-height:46px}.invitation-menu .banquet-swap{min-height:40px}.invitation-postcard[open] .postcard-memories{animation:modal-in .3s ease-out}.reduce-motion .postcard-memories{animation:none}@media(prefers-reduced-motion:reduce){.invitation-postcard[open] .postcard-memories{animation:none}}

.postcard-dish{position:absolute;bottom:0;right:-1px;filter:drop-shadow(0 2px 1px #63452733)}.postcard-dish .sprite{width:59px;height:59px}.invitation-postcard:not(.collected) .postcard-dish{opacity:.6}

/* Planted turn between farewell and the rear walk; only adjacent poses blend. */
.visitor-turn{position:absolute;left:50%;bottom:0;width:136%;aspect-ratio:1;transform:translateX(-50%);pointer-events:none}.visitor-turn-frame{position:absolute;inset:0;visibility:hidden;opacity:0;pointer-events:none}.visitor-turn-frame.current{visibility:visible;opacity:var(--turn-blend,1)}.visitor-turn-frame.previous{visibility:visible;opacity:calc(1 - var(--turn-blend,1))}.visitor-turn-frame::before{content:'';position:absolute;left:50%;bottom:0;width:var(--cut-w);height:var(--cut-h);transform:translateX(-50%);background:url('./assets/visitor-turn.webp?v=20260911-28') var(--cut-position)/var(--cut-size) no-repeat;mask:var(--turn-mask) var(--cut-position)/var(--cut-size) no-repeat}

.return-note{display:flex;align-items:center;flex:none;margin:0 0 8px;padding:3px 6px 3px 3px;border:1px solid #d9c59d;border-radius:12px;background:linear-gradient(115deg,#f4e8c8,#fff6de);box-shadow:0 2px 0 #eadbbd}.return-open{display:flex;align-items:center;gap:7px;flex:1;min-width:0;text-align:left;background:none;color:#72573b;padding:0;border:0}.return-open>img{width:37px;height:37px;object-fit:contain;flex:none}.return-open>span{display:grid;gap:3px;min-width:0}.return-open small{font-size:9px;color:#9b815b;letter-spacing:1px}.return-open b{font-size:12px;line-height:1.4}.return-open>i{font-style:normal;margin-left:auto;font-size:20px;color:#ac9468}.return-dismiss{width:34px;height:34px;border:0;background:none;color:#ad956c;font-size:19px}.return-welcome{display:flex;align-items:center;gap:10px;margin:5px 0 18px}.return-welcome>img{width:77px;height:77px;object-fit:contain;flex:none}.return-welcome h3{font-size:17px;line-height:1.6;margin:0 0 7px}.return-welcome p{font-size:11px;color:#9b825d;line-height:1.8;margin:0}.return-energy{display:flex;align-items:center;gap:13px;background:#eaf0d8;border:1px solid #c6d2a8;border-radius:12px;padding:13px;margin-bottom:18px}.return-energy>span{font-size:33px;color:#8b9f5f}.return-energy>div{display:grid;gap:7px}.return-energy b{font-size:14px;color:#647c50}.return-energy small{font-size:10px;color:#91a16f}.return-label{font-size:14px;margin:18px 0 10px}.return-dishes{display:grid;gap:10px}.return-dishes article{display:flex;align-items:center;gap:8px;border:1px solid #e0caa6;background:#fff9e9;border-radius:12px;padding:9px}.return-dishes .sprite{width:58px;height:58px;flex:none}.return-dishes article>div{display:grid;gap:7px;flex:1;min-width:0}.return-dishes b{font-size:12px;line-height:1.6}.return-dishes small{font-size:10px;color:#a08a65;line-height:1.6}.return-dishes button{font-size:11px;min-height:38px;flex:none;padding:8px 10px}.return-plan{border:1px dashed #c4bb91;background:#f4efd9;border-radius:12px;padding:14px;margin:19px 0}.return-plan>small{color:#a0885b;font-size:10px;letter-spacing:1px}.return-plan h3{font-size:15px;margin:9px 0}.return-plan p{font-size:11px;line-height:1.8;color:#8c7754}.return-plan .primary-btn{min-height:42px;font-size:12px}.return-collected{color:#718853;font-size:12px;line-height:1.8;padding:12px;background:#eff0da;border-radius:10px}@media(max-height:700px){.return-note{margin-bottom:5px}.return-open>img{width:31px;height:31px}.return-open b{font-size:11px}.return-open small{font-size:8px}.return-open>span{gap:2px}}

/* Pivot around the planted paws, keeping the existing idle at both ends. */
.walker-facing{transform-origin:56.694% 100%}.walker-turn{position:absolute;inset:0;visibility:hidden;pointer-events:none}.town-cat[data-turning="true"]>.walker-facing{visibility:hidden}.town-cat[data-turning="true"]>.walker-turn{visibility:visible}.walker-turn-left{scale:-1 1;transform-origin:55.821% 100%}.walker-turn-middle::before{background-image:url('./assets/shiliu-turn.webp?v=20260911-28');mask-image:var(--pivot-mask)}.walker-turn-frame.pivot-current{opacity:var(--pivot-blend,1)}.walker-turn-frame.pivot-previous{opacity:calc(1 - var(--pivot-blend,1))}

/* Ingredient-to-ingredient suggestions stay next to the actual shortage. */
.shopping-merge-options{border-top:1px dashed #d7c6a6;margin:10px 0 0;padding-top:10px}.shopping-merge-options>small{font-size:10px;color:#9b825c}.shopping-merge-option{margin-top:8px;background:#f2efda;border:1px solid #d4cead;border-radius:11px;padding:9px}.shopping-merge-recipe{display:flex;align-items:center;justify-content:space-around;gap:8px}.shopping-merge-recipe>span{display:flex;align-items:center;gap:5px;flex:1;min-width:0}.shopping-merge-recipe .sprite{width:35px;height:35px}.shopping-merge-recipe b{font-size:10px;line-height:1.6}.shopping-merge-recipe>i{font-size:19px;font-style:normal;color:#9daa76}.shopping-merge-option>p{font-size:10px!important;line-height:1.7;margin:7px 0!important;color:#9e8b65}.shopping-merge-option>button{display:flex;flex-direction:column;align-items:center;gap:4px;width:100%;padding:8px 6px;background:#fff8e7;border:1px solid #d5c49f;border-radius:8px;color:#7c683f;min-height:42px}.shopping-merge-option>button>b{font-size:11px}.shopping-merge-option>button>small{font-size:9px;color:#9a835c}
.shopping-merge-recipe b>small{display:block;font-size:9px;font-weight:400;color:#9a865e}
/* Pantry-led menu ideas: a small recipe notebook, with food art kept legible. */
.menu-ideas-entry{display:flex;align-items:center;gap:12px;width:100%;margin:14px 0;padding:14px 16px;text-align:left;border:2px solid #bcbea0;border-radius:17px;background:#eef1d9;color:#52684b;box-shadow:0 3px 0 #d9dcc2}
.menu-ideas-entry>span:first-child{font-size:30px}.menu-ideas-entry>span:nth-child(2){flex:1}.menu-ideas-entry b,.menu-ideas-entry small{display:block}.menu-ideas-entry small{font-size:12px;margin-top:5px;font-weight:400}.menu-ideas-entry i{font-style:normal;font-size:23px}
.menu-ideas-heading{text-align:center;padding:5px 0 8px}.menu-ideas-heading small{font-size:12px;color:#8b7659}.menu-ideas-heading h3{font-size:24px;margin:8px 0}.menu-ideas-heading p{font-size:13px;line-height:1.7;margin:8px 0;color:#88765e}
.menu-idea-current{background:#f0e6cc;border-radius:14px;padding:13px}.menu-idea-current>b{font-size:13px;color:#7f7057}.menu-idea-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px;margin:12px 0 5px;text-align:center}.menu-idea-stats div+div{border-left:1px solid #dacdab}.menu-idea-stats dt{font-size:12px;color:#857157}.menu-idea-stats dd{margin:4px 0 0;font-weight:800;font-size:24px;color:#654b35;font-variant-numeric:tabular-nums}.menu-idea-stats dd small{display:block;font-size:10px;font-weight:400;margin-top:2px}
.menu-idea-explain{font-size:12px;line-height:1.7;color:#8a785e;margin:12px 2px 17px}.menu-ideas-list{display:grid;gap:18px}.menu-idea-card{padding:16px 13px 14px;border:2px solid #dbc391;border-radius:20px;background:linear-gradient(160deg,#fffaf0,#faf0d6);box-shadow:0 4px 0 #e9daba}.menu-idea-labels{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:14px}.menu-idea-labels span{padding:5px 10px;border-radius:7px 12px 12px 3px;background:#e7bc74;color:#6c4c2c;font-size:12px;font-weight:800}.menu-idea-labels span+span{background:#e1e7c7;color:#617345}
.menu-idea-dishes{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:2px;align-items:start}.menu-idea-dishes button{min-width:0;border:0;padding:0 1px 5px;background:transparent;color:#785d44}.menu-idea-dishes .sprite{width:100%;height:auto;aspect-ratio:1;display:block;margin:0 auto 4px}.menu-idea-dishes button>span:not(.sprite){display:block;font-size:10px;line-height:1.4;min-height:28px}.menu-idea-dishes small{font-size:10px;color:#927e60}.menu-idea-delta{font-size:12px;line-height:1.7;color:#647b4d;background:#edf0dc;border-radius:10px;padding:9px;margin:12px 0 8px}.menu-idea-breakdown{font-size:12px;color:#8b765b;line-height:1.7;margin-bottom:13px}.menu-idea-breakdown summary{cursor:pointer;padding:6px 0}.menu-idea-breakdown p{margin:5px 0}.menu-idea-card .primary-btn{font-size:14px;padding:12px 8px}

.menu-idea-explain summary{cursor:pointer;color:#8b765b;padding:3px 0}.menu-idea-explain p{margin:5px 0 8px}.menu-ideas-heading{padding:2px 0 6px}
.town-teahouse{position:absolute;right:3%;top:5%;z-index:7;border:2px solid #9aac83;border-radius:9px;background:#f8efd7;color:#58714d;box-shadow:0 3px 0 #9caa7e88;padding:7px 24px 7px 9px;transform:rotate(3deg);text-align:left}.town-teahouse span{display:block;font-size:11px;font-weight:800}.town-teahouse small{display:block;font-size:8px;margin-top:3px}.town-teahouse i{position:absolute;right:7px;top:10px;font-style:normal}
.tea-scene{position:relative;isolation:isolate;overflow:hidden;border:1px solid #d6cfac;border-radius:20px;background:radial-gradient(ellipse at 42% 55%,#f9f0d6 15%,#e1e9c9 65%,#cfddba);height:300px;margin:0 0 12px}.tea-river{position:absolute;bottom:-45px;right:-35%;height:130px;width:130%;border-radius:50%;transform:rotate(-12deg);background:repeating-linear-gradient(178deg,#b1d7cf 0 12px,#c3e1d4 13px 15px,#add0c6 16px 22px);border:7px solid #d8d9af;box-shadow:0 -4px 0 #e7dfba}.tea-house-art{position:relative;display:block;width:100%;height:100%}.tea-house-art::before{content:'';position:absolute;left:50%;bottom:0;transform:translateX(-50%);width:var(--tea-w,100%);height:var(--tea-h,100%);background-image:url('./assets/tea-house.webp?v=20260912-tea1');background-size:var(--tea-size);background-position:var(--tea-position);background-repeat:no-repeat;mask-image:url('./assets/tea-house-mask.svg?v=20260912-tea1');mask-size:var(--tea-size);mask-position:var(--tea-position);mask-repeat:no-repeat}
.tea-scene>.tea-house-art{position:absolute;width:77%;height:86%;left:16%;bottom:11%;filter:drop-shadow(0 4px 1px #6c6c4533)}.tea-host{position:absolute;left:23%;bottom:10%;height:80px;width:65px;z-index:5;transform-origin:50% 100%;animation:visitor-breathe 5.2s ease-in-out infinite}.tea-host .visitor-figure{visibility:visible}.tea-planter{position:absolute;left:1%;bottom:5%;width:24%;height:auto;aspect-ratio:1;z-index:4;transform-origin:50% 90%;animation:tea-leaves 6s ease-in-out infinite}.tea-planter .sprite{width:100%;height:100%}.tea-scene-sign{position:absolute;right:10px;bottom:9px;z-index:5;border:1px solid #bcb68a;border-radius:9px;background:#fff9e5e8;padding:7px 11px;color:#627149;font-size:13px;font-weight:800;text-align:center;box-shadow:0 2px 0 #b9b58e55}.tea-scene-sign small{display:block;font-size:9px;font-weight:400;margin-top:4px;color:#938361}
.tea-cup-steam{position:absolute;left:64%;top:54%;width:30px;height:28px;pointer-events:none;z-index:4}.tea-cup-steam i{position:absolute;bottom:0;width:5px;height:18px;border-radius:50%;background:#fff9e2aa;filter:blur(1px);animation:tea-steam 3.8s ease-in-out infinite}.tea-cup-steam i:nth-child(2){left:10px;animation-delay:-1.3s}.tea-cup-steam i:nth-child(3){left:20px;animation-delay:-2.6s}.tea-lantern-glow{position:absolute;inset:23% 0 26% 10%;background:radial-gradient(ellipse at 22% 50%,#ffca5a44,transparent 26%),radial-gradient(ellipse at 85% 65%,#ffca5a44,transparent 25%);pointer-events:none;animation:lantern-breathe 4.3s ease-in-out infinite alternate}
.tea-progress{display:flex;justify-content:space-between;font-size:11px;color:#8b805c;margin:13px 1px 18px}.tea-welcome h3{font-size:18px;margin:16px 0 9px}.tea-welcome p{font-size:13px;line-height:1.8;color:#8b795b}.tea-gates{display:grid;gap:9px;font-size:12px;color:#7b805b;background:#efeed8;border-radius:11px;padding:13px;margin:16px 0}.tea-harvest{border:1px solid #c5cba2;border-radius:16px;background:#f1f1dc;padding:13px}.tea-harvest-title{display:flex;gap:9px;align-items:center}.tea-harvest-title>.sprite{width:53px;height:53px;flex:none}.tea-harvest-title>div{flex:1}.tea-harvest-title h3{margin:0 0 5px;font-size:17px}.tea-harvest-title small{font-size:11px;color:#8f855f}.tea-harvest-title>b{font-size:15px;color:#9ba65a}.tea-harvest-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}.tea-harvest-actions button{font-size:13px;padding:11px 5px}.tea-harvest-actions small{display:block;font-size:9px;font-weight:400;margin-top:5px;opacity:.8}.tea-harvest p{font-size:11px;color:#918264;line-height:1.8;margin:11px 0 3px}.tea-harvest>.text-button{font-size:12px;margin-top:4px}
.tea-menu-title{display:flex;align-items:baseline;justify-content:space-between;margin-top:24px}.tea-menu-title h3{font-size:18px;margin:0}.tea-menu-title small{font-size:11px;color:#9c8c6b}.tea-menu-note{font-size:12px;color:#9a8564;line-height:1.8}.tea-orders{display:grid;gap:14px}.tea-order{border:2px solid #d5c496;border-radius:17px;background:#fff8e7;padding:14px}.tea-order h4{margin:0 0 8px;text-align:center;font-size:15px}.tea-order-food{display:flex;align-items:center;justify-content:center;gap:15px;margin:8px 0 13px}.tea-order-food button{display:flex;flex-direction:column;align-items:center;width:104px;min-width:0;background:none;border:0;color:#7e6848;padding:0}.tea-order-food .sprite{width:77px;height:77px}.tea-order-food span:not(.sprite){font-size:12px;line-height:1.6}.tea-order-food small{font-size:11px;padding:2px 7px;border-radius:8px;background:#e7ecd0;color:#71834e;margin-top:4px}.tea-order-food i{font-style:normal;color:#baa37b}.tea-order>.primary-btn{font-size:13px}.tea-order>.text-button{font-size:12px;margin:6px 0 0}.tea-order .shopping-entry{font-size:11px;margin-top:3px;min-height:36px;padding:7px}
.tea-upgrade{margin:22px 0;border:1px dashed #bcb591;border-radius:16px;padding:15px;text-align:center;background:#f1ead5}.tea-upgrade h3{font-size:17px;margin:0}.tea-upgrade p{font-size:12px;color:#918060;line-height:1.7}.tea-upgrade-picture{height:185px;max-width:240px;margin:auto}.tea-recipes{margin:22px 0}.tea-recipes summary{font-size:14px;font-weight:700;cursor:pointer;padding:8px 0}.tea-recipes>div{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}.tea-recipes button{display:flex;align-items:center;gap:5px;border:1px solid #ddccaa;border-radius:11px;padding:7px;background:#fff8e7;text-align:left;color:#7a6446}.tea-recipes .sprite{width:48px;height:48px;flex:none}.tea-recipes b{display:block;font-size:11px}.tea-recipes small{font-size:9px;line-height:1.5;color:#9c8965;display:block;margin-top:5px}.tea-complete{font-size:13px;color:#7d8a5f;text-align:center;line-height:1.8;background:#edf0d9;padding:15px;border-radius:12px;margin-top:23px}
@keyframes tea-leaves{0%,100%{rotate:-1deg}50%{rotate:1.2deg}}@keyframes tea-steam{0%{opacity:0;translate:0 3px;scale:.7}30%{opacity:.6}100%{opacity:0;translate:3px -20px;scale:1.2}}
.reduce-motion .tea-scene *{animation:none!important}@media(prefers-reduced-motion:reduce){.tea-scene *{animation:none!important}}@media(max-width:380px){.tea-scene{height:250px}.tea-host{width:55px;height:67px}.tea-recipes>div{grid-template-columns:1fr}.tea-recipes .sprite{width:44px;height:44px}.tea-recipes b{font-size:12px}.tea-recipes small{font-size:10px}.town-teahouse{padding:5px 20px 5px 7px}.town-teahouse span{font-size:10px}}
.sprite[data-icon="44"]{--food-atlas:url('./assets/tea-food.webp?v=20260912-tea1');--art-w:73.717949%;--art-h:92.000000%;--art-size:501.600000% 401.923077%;--art-position:6.474104% 9.235669%}
.sprite[data-icon="44"]::before{mask-image:url('./assets/tea-food-mask-0.svg?v=20260912-tea1');mask-size:var(--art-size);mask-position:var(--art-position);mask-repeat:no-repeat}
.sprite[data-icon="45"]{--food-atlas:url('./assets/tea-food.webp?v=20260912-tea1');--art-w:92.000000%;--art-h:81.343629%;--art-size:484.169884% 547.598253%;--art-position:34.572864% 13.170732%}
.sprite[data-icon="45"]::before{mask-image:url('./assets/tea-food-mask-1.svg?v=20260912-tea1');mask-size:var(--art-size);mask-position:var(--art-position);mask-repeat:no-repeat}
.sprite[data-icon="46"]{--food-atlas:url('./assets/tea-food.webp?v=20260912-tea1');--art-w:92.000000%;--art-h:78.640264%;--art-size:413.861386% 484.169884%;--art-position:66.035752% 12.964824%}
.sprite[data-icon="46"]::before{mask-image:url('./assets/tea-food-mask-2.svg?v=20260912-tea1');mask-size:var(--art-size);mask-position:var(--art-position);mask-repeat:no-repeat}
.sprite[data-icon="47"]{--food-atlas:url('./assets/tea-food.webp?v=20260912-tea1');--art-w:82.830565%;--art-h:92.000000%;--art-size:462.730627% 416.611296%;--art-position:97.151577% 10.388248%}
.sprite[data-icon="47"]::before{mask-image:url('./assets/tea-food-mask-3.svg?v=20260912-tea1');mask-size:var(--art-size);mask-position:var(--art-position);mask-repeat:no-repeat}
.sprite[data-icon="48"]{--food-atlas:url('./assets/tea-food.webp?v=20260912-tea1');--art-w:89.618123%;--art-h:92.000000%;--art-size:416.611296% 405.825243%;--art-position:3.147954% 49.312169%}
.sprite[data-icon="48"]::before{mask-image:url('./assets/tea-food-mask-4.svg?v=20260912-tea1');mask-size:var(--art-size);mask-position:var(--art-position);mask-repeat:no-repeat}
.sprite[data-icon="49"]{--food-atlas:url('./assets/tea-food.webp?v=20260912-tea1');--art-w:88.674699%;--art-h:92.000000%;--art-size:391.875000% 377.710843%;--art-position:35.438972% 47.939262%}
.sprite[data-icon="49"]::before{mask-image:url('./assets/tea-food-mask-5.svg?v=20260912-tea1');mask-size:var(--art-size);mask-position:var(--art-position);mask-repeat:no-repeat}
.sprite[data-icon="50"]{--food-atlas:url('./assets/tea-food.webp?v=20260912-tea1');--art-w:92.000000%;--art-h:84.923077%;--art-size:438.461538% 475.000000%;--art-position:66.838843% 51.212121%}
.sprite[data-icon="50"]::before{mask-image:url('./assets/tea-food-mask-6.svg?v=20260912-tea1');mask-size:var(--art-size);mask-position:var(--art-position);mask-repeat:no-repeat}
.sprite[data-icon="51"]{--food-atlas:url('./assets/tea-food.webp?v=20260912-tea1');--art-w:86.268852%;--art-h:92.000000%;--art-size:438.461538% 411.147541%;--art-position:98.450413% 49.736565%}
.sprite[data-icon="51"]::before{mask-image:url('./assets/tea-food-mask-7.svg?v=20260912-tea1');mask-size:var(--art-size);mask-position:var(--art-position);mask-repeat:no-repeat}
.sprite[data-icon="52"]{--food-atlas:url('./assets/tea-food.webp?v=20260912-tea1');--art-w:92.000000%;--art-h:82.251656%;--art-size:415.231788% 464.444444%;--art-position:1.890756% 87.500000%}
.sprite[data-icon="52"]::before{mask-image:url('./assets/tea-food-mask-8.svg?v=20260912-tea1');mask-size:var(--art-size);mask-position:var(--art-position);mask-repeat:no-repeat}
.sprite[data-icon="53"]{--food-atlas:url('./assets/tea-food.webp?v=20260912-tea1');--art-w:87.591054%;--art-h:92.000000%;--art-size:420.805369% 400.638978%;--art-position:33.995816% 87.460149%}
.sprite[data-icon="53"]::before{mask-image:url('./assets/tea-food-mask-9.svg?v=20260912-tea1');mask-size:var(--art-size);mask-position:var(--art-position);mask-repeat:no-repeat}
.sprite[data-icon="54"]{--food-atlas:url('./assets/tea-food.webp?v=20260912-tea1');--art-w:84.985337%;--art-h:92.000000%;--art-size:398.095238% 367.741935%;--art-position:66.560170% 88.937568%}
.sprite[data-icon="54"]::before{mask-image:url('./assets/tea-food-mask-10.svg?v=20260912-tea1');mask-size:var(--art-size);mask-position:var(--art-position);mask-repeat:no-repeat}
.sprite[data-icon="55"]{--food-atlas:url('./assets/tea-food.webp?v=20260912-tea1');--art-w:78.297872%;--art-h:92.000000%;--art-size:447.857143% 381.155015%;--art-position:97.535934% 89.081081%}
.sprite[data-icon="55"]::before{mask-image:url('./assets/tea-food-mask-11.svg?v=20260912-tea1');mask-size:var(--art-size);mask-position:var(--art-position);mask-repeat:no-repeat}
.tea-house-art[data-tea-stage="0"]{--tea-w:92.917369%;--tea-h:100.000000%;--tea-size:227.586207% 211.467116%;--tea-position:6.258890% 4.992436%}
.tea-house-art[data-tea-stage="1"]{--tea-w:91.554054%;--tea-h:100.000000%;--tea-size:231.365314% 211.824324%;--tea-position:94.662921% 5.287009%}
.tea-house-art[data-tea-stage="2"]{--tea-w:96.752137%;--tea-h:100.000000%;--tea-size:221.554770% 214.358974%;--tea-position:4.215116% 94.020927%}
.tea-house-art[data-tea-stage="3"]{--tea-w:97.474747%;--tea-h:100.000000%;--tea-size:216.580311% 211.111111%;--tea-position:96.296296% 95.303030%}

.tea-harvest-actions button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px}.tea-harvest-actions small{margin-top:0}

/* Tea art stays legible while a sheet or its independent masks are loading. */
body:not(.tea-house-ready) .tea-house-art::before{visibility:hidden}
body:not(.tea-food-ready) .sprite[data-tea-item]::before{visibility:hidden}
body:not(.tea-food-ready) .sprite[data-tea-item]::after{content:attr(data-tea-fallback);position:absolute;inset:8%;display:grid;place-items:center;padding:3px;border:1px solid #c5cda6;border-radius:12px;background:#f3efdb;color:#738359;font-size:10px;font-weight:700;line-height:1.3;text-align:center;white-space:normal}
.tea-art-note{display:flex;align-items:center;justify-content:space-between;gap:8px;border:1px solid #d5d6b5;border-radius:10px;background:#f9f2dd;color:#887451;padding:8px 10px;font-size:11px;line-height:1.5;margin:7px 0}.tea-art-note[hidden]{display:none}.tea-art-note .text-button{flex:none;font-size:11px;padding:5px}
.tea-scene-loading{position:absolute;left:8%;right:8%;top:28%;z-index:6;flex-direction:column;text-align:center;box-shadow:0 5px 18px #6b674119;background:#fff9e8ed}
.tea-receipt{scroll-margin-block:12px;border:1px solid #c7d3a8;border-radius:12px;background:linear-gradient(120deg,#f7f7df,#edf2db);padding:10px 12px;margin:10px 0;color:#62754d;animation:tea-receipt-arrive .32s ease-out both}.tea-receipt strong{font-size:12px;display:block}.tea-receipt>small,.tea-served-receipt>div>small{display:block;font-size:10px;margin-top:6px;line-height:1.5;color:#8f8462}.tea-receipt-items{display:flex;flex-wrap:wrap;gap:9px;margin-top:5px}.tea-receipt-food{display:flex;align-items:center;gap:4px;animation:tea-food-arrive .42s ease-out both;animation-delay:calc(var(--receipt-i)*70ms)}.tea-receipt-food>.sprite{width:44px;height:44px;flex:none}.tea-receipt-food>span:last-child{font-size:10px;max-width:78px;line-height:1.4}.tea-receipt-food b{display:block;color:#819c55;font-size:12px}.tea-served-receipt{display:flex;align-items:center;gap:9px}.tea-served-receipt>.reaction-art{width:64px;height:72px;flex:none}.tea-served-receipt>div{min-width:0;flex:1}.tea-served-receipt .tea-receipt-food>.sprite{width:35px;height:35px}
@keyframes tea-receipt-arrive{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}
@keyframes tea-food-arrive{0%{opacity:0;transform:translateY(7px) scale(.94)}65%{opacity:1;transform:translateY(-2px) scale(1.02)}100%{opacity:1;transform:translateY(0) scale(1)}}
.reduce-motion .tea-receipt,.reduce-motion .tea-receipt *{animation:none!important}@media(prefers-reduced-motion:reduce){.tea-receipt,.tea-receipt *{animation:none!important}}

.tea-table-note{padding:12px;margin:13px 0;border:1px solid #c5cfab;border-radius:15px;background:linear-gradient(115deg,#edf1d9,#fff6df);text-align:left}.tea-table-heading{display:flex;align-items:center;gap:10px}.tea-table-heading>.sprite{width:52px;height:52px;flex:none}.tea-table-heading b{display:block;font-size:13px;color:#637650}.tea-table-heading small{display:block;font-size:10px;line-height:1.6;color:#968768;margin-top:4px}.tea-table-tastes{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;margin-top:8px}.tea-table-tastes button{display:flex;flex-direction:column;align-items:center;gap:4px;padding:4px 1px;background:#fff9e7a8;border-radius:10px;color:#806e51;font-size:9px;line-height:1.5}.tea-table-tastes .sprite{width:47px;height:47px}.tea-table-note>.text-button{font-size:11px;margin-top:8px}.tea-table-entry{padding:16px 13px;margin:22px 0 8px;border:1px solid #cbd2b0;border-radius:16px;background:#f0f0d9}.tea-table-entry>small{font-size:10px;color:#879265;letter-spacing:1px}.tea-table-entry>h3{font-size:18px;margin:6px 0 8px;color:#647451}.tea-table-entry>p{font-size:12px;line-height:1.8;color:#938367}.tea-table-links{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}.tea-table-links>button{display:flex;align-items:center;gap:6px;text-align:left;background:#fff8e7;border:1px solid #d7d4b4;border-radius:12px;padding:8px 6px;color:#6f7656}.tea-table-links .sprite{width:40px;height:40px;flex:none}.tea-table-links b{display:block;font-size:11px;line-height:1.4}.tea-table-links small{display:block;font-size:9px;line-height:1.5;margin-top:4px;color:#9b8d70}.tea-table-links i{font-style:normal;margin-left:auto}.tea-table-footnote{font-size:10px!important;margin-top:12px!important}.tea-table-entry>.secondary-btn{margin-top:12px}@media(max-width:380px){.tea-table-links{grid-template-columns:1fr}.tea-table-links .sprite{width:42px;height:42px}.tea-table-links b{font-size:12px}.tea-table-tastes .sprite{width:41px;height:41px}}

.prep-next.prep-direct{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:4px;min-width:72px;min-height:48px;padding:8px 7px;background:#829c62;color:#fffbea;border:1px solid #708951;box-shadow:0 3px 0 #607847}.prep-next.prep-direct b{font-size:12px;font-weight:800;line-height:1.3}.prep-next.prep-direct small{font-size:10px;font-weight:500;line-height:1.2;white-space:nowrap;opacity:.95}.prep-next.prep-direct[data-prep-type="cook"]{background:#c77e51;border-color:#ae6842;box-shadow:0 3px 0 #995835}.prep-next.prep-direct[data-prep-type="collect"]{background:#ac985e;border-color:#968249;box-shadow:0 3px 0 #82713f}.prep-next[aria-busy="true"]{opacity:.6;cursor:default}.prep-next.prep-direct:active:not(:disabled){box-shadow:0 1px 0 #607847;transform:translateY(2px)}

/* Ease between the painted standing and stride poses while the feet settle.
   Both layers retain the same continuously mounted breathing parent. */
.town-cat[data-walking="true"] .walker-facing .walker-frame.is-current{opacity:var(--walk-mix,1)}
.town-cat[data-walking="true"] .walker-facing .idle-frame.is-resting{opacity:calc(1 - var(--walk-mix,1))}
/* The banquet sign belongs to the map edge, outside the actor's world path. */
.town-map>.town-sign{right:6px;bottom:4px;min-height:44px;white-space:nowrap;padding:6px 8px;transform:rotate(-2deg)}
/* First commercial playtest: an illustrated journal, not a shop overlay. */
.business-summary{display:flex;gap:7px;padding:5px 12px 9px;flex:none}.business-strip{display:flex;align-items:center;gap:10px;flex:1;min-width:0;padding:9px 10px;background:#fff7df;border:1px solid #d7bf92;border-radius:13px;text-align:left;box-shadow:0 3px 0 #cbb78744}.business-day{font-size:9px;color:#9c734c;text-align:center;flex:none}.business-day b{display:block;font-size:22px;line-height:1.1;color:#966a43}.business-copy{flex:1;min-width:0}.business-copy strong{font-size:12px;display:block}.business-copy small{display:block;font-size:9px;margin:3px 0;color:#8c795e;white-space:normal}.business-copy i{height:4px;display:block;background:#e9ddbd;border-radius:8px;overflow:hidden}.business-copy em{display:block;height:100%;background:#87a675;border-radius:8px;transition:width .3s}.album-shortcut{background:#eaf0de;border:1px solid #b9c5a1;border-radius:12px;width:88px;flex:none;display:grid;place-content:center;text-align:center;padding:5px;color:#576d48}.album-shortcut>span{font-size:20px;line-height:1}.album-shortcut b{font-size:11px}.album-shortcut small{font-size:9px;margin-top:3px}.diamond-icon{font-size:25px;color:#bd6c83;line-height:1;text-shadow:0 1px #fff}.diamond-resource{gap:4px!important}.resources .resource{min-width:0}.resources .gift-resource{padding-inline:5px}.business-cover,.album-cover{padding:23px 18px;border:1px solid #d8bf8c;border-radius:18px;background:radial-gradient(circle at 90% 8%,#e8d59670,transparent 45%),#fcf1d4;text-align:center;box-shadow:inset 0 0 0 5px #fff9e5}.business-cover small,.album-cover>small{color:#987951;font-size:11px;letter-spacing:1px}.business-cover h3,.album-cover h3{font-size:22px;margin:12px 0;color:#785332}.business-cover p,.album-cover p{font-size:12px;line-height:1.7;color:#8c775b}.business-meter{margin:18px 0 10px}.business-meter b{font-size:38px;color:#789264}.business-meter span{font-size:13px;margin-left:8px;color:#a58b6b}.business-rewards{display:flex;flex-wrap:wrap;justify-content:center;gap:7px;margin:16px 0;font-size:12px}.business-rewards span{border-radius:8px;padding:8px;background:#f0e6ce;color:#7d6143}.business-orders{display:grid;gap:9px;margin:12px 0 18px}.business-orders button{display:flex;align-items:center;justify-content:space-between;background:#f3ecd9;border:1px solid #deceb1;border-radius:12px;padding:8px 13px}.business-orders button>span{display:flex;align-items:center;gap:4px}.business-orders .sprite{width:50px;height:50px}.business-orders b{font-size:13px}.diamond-balance{text-align:center;border:1px solid #e0c1bf;background:#faebe4;border-radius:12px;padding:14px;margin:12px 0;color:#ac687b}.diamond-balance>b{font-size:25px}.diamond-balance small{display:block;color:#9d806f;font-size:11px;margin-top:5px}.stack>button>small,.ad-unavailable small{display:block;font-size:10px;font-weight:400;margin-top:5px;line-height:1.5}.ad-unavailable{padding:14px 10px;border:1px dashed #baad98;border-radius:12px;background:#ede7da;color:#8b8272!important;opacity:1!important;font-size:12px}.album-cover>b{display:block;margin:14px 0 0;font-size:35px;color:#87956c}.album-cover>b span{font-size:13px;margin-left:6px}.album-packs{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:22px 0}.photo-pack{position:relative;display:flex;flex-direction:column;align-items:center;gap:8px;border:2px solid #c8ac78;border-radius:9px 9px 17px 17px;background:repeating-linear-gradient(90deg,#efdcb1 0 5px,#f3e3c2 5px 9px);box-shadow:0 4px 0 #b9a17855;padding:20px 8px 14px}.photo-pack.rare{background:repeating-linear-gradient(90deg,#e0c2c6 0 5px,#efd5d6 5px 9px);border-color:#b48a98}.pack-seal{background:#fff7df;border:2px solid #cfb074;border-radius:50%;width:46px;height:46px;font-size:32px;color:#af8052}.photo-pack strong{font-size:14px}.photo-pack small{font-size:10px;font-weight:400}.photo-pack>b{font-size:11px;background:#fff7e5b8;padding:6px 8px;border-radius:8px}.photo-pack:not(:disabled):hover{filter:brightness(1.04)}.album-set{margin:25px 0;padding-top:15px;border-top:1px dashed #cfbb96}.album-set header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;gap:8px}.album-set header small{font-size:10px;color:#a58b65}.album-set h3{font-size:18px;margin-top:3px}.album-set header>span{font-size:11px;background:#f0e2bd;padding:6px;border-radius:8px;white-space:nowrap}.photo-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px 8px;margin:12px 0}.photo-grid>button,.album-reveal button{padding:0;background:transparent;min-width:0;text-align:center}.album-photo{position:relative;display:block;aspect-ratio:.69;border:4px solid #fff7de;border-radius:5px;background:#eadbb6;box-shadow:0 2px 5px #65513235;overflow:hidden;isolation:isolate}.album-photo[data-rarity="2"]{border-color:#c7d6b0}.album-photo[data-rarity="3"]{border-color:#e2bd6b;box-shadow:0 0 0 1px #ba914d,0 3px 7px #b6965740}.album-scene{position:absolute;inset:0 0 25%;background-size:cover;background-position:var(--photo-x) 50%;filter:saturate(.8)}.album-actor{position:absolute;left:15%;bottom:26%;width:75%;height:65%;filter:drop-shadow(0 2px 1px #58412a44);transform:rotate(var(--photo-turn))}.album-photo .visitor-figure{visibility:visible}.album-sun{position:absolute;inset:0;background:linear-gradient(140deg,#ffedaa35,transparent 60%);pointer-events:none}.photo-caption{position:absolute;bottom:0;left:0;right:0;height:27%;display:flex;flex-direction:column;justify-content:center;gap:3px;background:#fff8e2;color:#755839;padding:3px}.photo-caption b{font-size:10px;line-height:1.25}.photo-caption small{font-size:10px;letter-spacing:2px;color:#c29040}.photo-missing .album-scene{filter:sepia(.6);opacity:.24}.photo-missing .album-actor{filter:brightness(0);opacity:.10}.photo-question{position:absolute;top:20%;left:0;right:0;text-align:center;font-size:34px;color:#b7a17b;z-index:2}.photo-missing .photo-caption{background:#e9dec6}.photo-large{max-width:290px;margin:8px auto 20px}.photo-large .photo-caption b{font-size:20px}.photo-large .photo-caption small{font-size:17px}.photo-large .photo-question{font-size:80px}.album-reveal{padding:14px 10px;background:#f4eacb;border:1px solid #d8c7a2;border-radius:14px}.album-reveal h3{font-size:15px;margin-bottom:13px}.album-reveal>div{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.album-reveal.is-opening button{animation:photo-reveal .55s both;animation-delay:var(--reveal-delay)}.album-reveal button>small{font-size:10px;display:block;margin-top:7px}.new-photo{color:#657c44;font-weight:800}.album-complete,.album-stars{padding:20px 15px;border:1px solid #ddc797;border-radius:14px;background:#f4e6bf;margin:18px 0}.album-complete h3{font-size:18px}.album-complete p,.album-stars p{font-size:12px;line-height:1.8;margin:8px 0 12px}.album-stars{background:#f0ebda}.album-rules{font-size:12px;line-height:1.8;margin:20px 0}.album-rules summary{cursor:pointer;font-weight:700}.album-rules p{margin-top:12px}.business-summary:empty{display:none}@keyframes photo-reveal{from{opacity:0;transform:translateY(12px) rotateY(65deg)}to{opacity:1;transform:none}}body.reduce-motion .album-reveal button{animation:none}@media(prefers-reduced-motion:reduce){.album-reveal button{animation:none}}@media(max-width:760px){.business-summary{padding:3px 9px 7px;gap:6px}.business-strip{padding:6px 8px;gap:7px}.business-day b{font-size:19px}.business-copy strong{font-size:11px}.business-copy small{font-size:9px;margin:2px 0}.album-shortcut{width:78px}.resources{gap:5px!important}.resources>.resource{padding-inline:6px!important;gap:3px}.resources>.resource strong{font-size:15px!important}.resources>.resource small{font-size:9px}.resources .gift-resource .mini-icon{display:none}.business-summary{flex-shrink:0}.album-packs{gap:10px}.photo-pack strong{font-size:12px}}@media(max-width:380px){.business-copy small{font-size:8px}.resources>.resource{padding-inline:5px!important}.business-strip{gap:5px}.album-shortcut{width:72px}.photo-caption b{font-size:9px}.photo-grid{gap:9px 6px}}

.album-reveal{scroll-margin-top:8px}.album-shortcut small{font-size:9px;line-height:1.4}

@media(max-width:760px) and (max-height:700px){body[data-screen="board"] .business-strip{padding-block:4px}body[data-screen="board"] .business-summary{min-height:0}body[data-screen="board"] .album-shortcut{padding-block:3px}body[data-screen="board"] .album-shortcut>span{display:none}body[data-screen="board"] .business-day{display:flex;align-items:center;gap:3px}body[data-screen="board"] .business-day b{font-size:16px}}
.album-photo.story-photo{aspect-ratio:.64}.story-photo .album-scene{bottom:20%}.story-photo .album-actor{bottom:21%}.story-photo .photo-caption{height:20%;z-index:3}.album-story{position:absolute;inset:0 0 20%;background-color:#f4e6cb;background-size:contain;background-position:center;background-repeat:no-repeat;opacity:0;z-index:1;transition:opacity .24s ease}.story-ready .album-story{opacity:1}.story-ready .album-actor,.story-ready .album-scene{visibility:hidden}.album-art-status{font-size:11px;line-height:1.6;background:#f0e8d3;border-radius:9px;padding:9px 12px;margin:0 0 12px;display:flex;align-items:center;gap:8px}.album-art-status[hidden]{display:none}.album-art-status .text-button{flex-shrink:0}.photo-story-copy{max-width:320px;margin:0 auto 14px;padding:12px 16px;font-size:13px;line-height:1.9;background:#f1e6cd;border-radius:12px;color:#8a6b48}.reduce-motion .album-story{transition:none}@media(prefers-reduced-motion:reduce){.album-story{transition:none}}

/* Card backs and decode placeholders never request large street panoramas. */
.album-placeholder{position:absolute;inset:0 0 20%;display:grid;place-items:center;background:repeating-linear-gradient(45deg,#d8c59624 0 2px,transparent 2px 9px),#ede2c2;box-shadow:inset 0 0 0 6px #f9f1d9,inset 0 0 0 7px #d5c392}.album-stamp{display:grid;place-items:center;width:46px;height:46px;border:1px solid #bda779;border-radius:50%;outline:3px double #c9b78b;outline-offset:3px;font-size:14px;font-weight:700;letter-spacing:2px;color:#a58e62;transform:rotate(-12deg);opacity:.65}.photo-missing .album-stamp{opacity:.16}.photo-missing .photo-question{top:28%;font-size:27px;color:#b59e71}.album-photo[data-photo-group="1"] .album-placeholder{background-color:#e0e7d0}.album-photo[data-photo-group="2"] .album-placeholder{background-color:#d9e5df}.album-photo[data-photo-group="3"] .album-placeholder{background-color:#e2dcdd}.story-preview-ready .album-story{opacity:1}.story-ready .album-placeholder,.story-preview-ready .album-placeholder{visibility:hidden}.photo-large .album-stamp{width:90px;height:90px;font-size:25px}.photo-large.photo-missing .photo-question{font-size:64px}

/* Business journal: next action, earned reward route, stock investment. */
.business-route{margin:20px 0;padding:15px 12px;background:#f5e6d4;border:1px solid #dfc4aa;border-radius:15px}.business-route header{display:flex;gap:8px;align-items:center;justify-content:space-between}.business-route h3{font-size:14px}.business-route header strong{font-size:12px;color:#a46260;white-space:nowrap}.business-route ol{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));list-style:none;padding:0;margin:18px 0 12px;gap:5px}.business-route li{position:relative;display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;color:#9f8c76}.business-route li>span{position:relative;z-index:1;display:grid;place-items:center;width:32px;height:32px;background:#fdf7e9;border:2px solid #d7c3a6;border-radius:50%;font-size:18px}.business-route li:not(:last-child):after{content:"";position:absolute;top:15px;left:65%;width:80%;height:2px;background:#d7c3a6}.business-route li.done>span{background:#8da17b;border-color:#8da17b;color:white}.business-route li.current>span{border-color:#bd8069;box-shadow:0 0 0 4px #d9af8f35;color:#a56550}.business-route li:last-child>span{color:#a46980;border-color:#c698a4;background:#f8e7e6}.business-route li b{font-size:11px}.business-route li small{font-size:9px}.business-route p{font-size:11px;line-height:1.7;color:#92795d}.business-next-title{font-size:17px;margin-top:22px}.business-order{padding:12px;border:1px solid #deceb1;border-radius:13px;background:#f7f0df}.business-order.suggested{border-color:#9aab82;background:#edf0dc}.business-order-top{display:flex;justify-content:space-between;align-items:center;gap:8px}.business-order-top>span{font-size:12px;font-weight:700;color:#6c815c}.business-order-top small{font-size:10px;color:#9a8567}.business-food{display:flex;align-items:center;gap:8px;margin-top:5px}.business-food>span{position:relative;display:flex;align-items:center}.business-food b{font-size:12px}.business-order p{font-size:12px;line-height:1.65;margin:5px 0 10px}.business-orders .business-order button{display:block;text-align:center;padding:10px;font-size:12px}.business-orders .business-order button.green{background:#829564;border-color:#71835a;color:white}.business-upgrade{padding:15px;border:1px dashed #c9b18a;border-radius:12px;background:#f1e9d4;margin:20px 0}.business-upgrade h3{font-size:15px}.business-upgrade p{font-size:11px;line-height:1.8;margin:6px 0}.business-upgrade small{display:block;font-size:10px;color:#9a866b;margin-top:8px;text-align:center}

[data-business-refresh] .business-cover{padding:14px 14px 13px}[data-business-refresh] .business-cover h3{font-size:21px;margin:7px 0}[data-business-refresh] .business-cover p{font-size:11px}[data-business-refresh] .business-meter{margin:7px 0}[data-business-refresh] .business-meter b{font-size:30px}[data-business-refresh] .business-rewards{margin:10px 0;font-size:11px}[data-business-refresh] .business-rewards span{padding:6px}[data-business-refresh]>.primary-btn{padding-block:11px}[data-business-refresh] .business-next-title{margin-top:16px}

@media(max-width:760px) and (max-height:700px){[data-business-refresh] .business-cover{padding:10px}[data-business-refresh] .business-cover h3{font-size:18px;margin:4px 0}[data-business-refresh] .business-meter{margin:4px 0}[data-business-refresh] .business-meter b{font-size:26px}}

.order-coin-rules{font-size:11px;line-height:1.8;color:#947b60;margin:15px 0;padding:10px 12px;border:1px solid #dfd0b3;border-radius:10px;background:#f7efdc}.order-coin-rules summary{cursor:pointer;font-weight:700;color:#806548}.order-coin-rules p{margin-top:8px}

/* Weekly gathering: painted street cover, recipe slips and permanent stamps. */
.festival-shortcut{grid-column:1/-1;display:flex;align-items:center;gap:12px;text-align:left;padding:10px 15px;border:1px solid #d7b982;border-radius:14px;background:#fcf1d5;color:#675135;width:100%;box-shadow:0 2px 0 #d7b98233}
.festival-shortcut>span:first-child{font-size:27px;color:#a46845}.festival-shortcut>span:nth-child(2){flex:1}.festival-shortcut b,.festival-shortcut small{display:block}.festival-shortcut small{font-size:11px;margin-top:3px;color:#826d4f}
.festival-cover{border:1px solid #d8bf8e;border-radius:18px;overflow:hidden;background:#fbf0d8}.festival-cover .street-art{border-radius:0;aspect-ratio:2.4}.festival-cover .scene-label{display:none}.festival-heading{padding:14px 17px}.festival-heading small{color:#806f51;font-size:11px;letter-spacing:.04em}.festival-heading h3{margin:5px 0 6px;font-size:24px}.festival-heading p{margin:0;font-size:13px;line-height:1.6}.festival-calendar{font-size:11px;text-align:center;color:#806f51;margin:10px 0 16px}
.festival-current{background:#fff9e9;border:2px solid #d3ad72;border-radius:18px;padding:16px;box-shadow:0 4px 0 #dcc29244}.festival-current header small{color:#9e7151;font-weight:700}.festival-current h3{margin:4px 0 12px;font-size:20px}.festival-food{display:flex;justify-content:center;gap:12px}.festival-food>button{position:relative;display:flex;flex-direction:column;align-items:center;flex:1;max-width:155px;border:1px solid #dec99e;border-radius:13px;padding:8px 3px;background:#f8ebc9;font-size:11px;color:#665039}.festival-food .sprite{width:66px;height:66px}.festival-food b{border-radius:10px;padding:2px 8px;margin-top:5px;font-size:12px;background:#e6c893}.festival-food .enough{background:#6c9772;color:white}.festival-exchange{text-align:center;margin:14px 0;font-size:13px}.festival-exchange p{margin:0 0 5px}.festival-exchange>span{font-size:12px;color:#567c5d}.festival-payment-note{display:block;font-size:10px;line-height:1.6;text-align:center;color:#8b785d;margin-top:9px}.festival-current .primary-btn{font-size:14px}
.festival-itinerary,.festival-rules{margin:18px 0;padding:14px;border:1px solid #dbcaac;border-radius:13px;background:#fff9ed;font-size:12px;line-height:1.7}.festival-itinerary summary,.festival-rules summary{font-weight:700;cursor:pointer}.festival-preview{border-top:1px dashed #d2ba91;margin-top:15px;padding-top:14px}.festival-preview header{display:flex;justify-content:space-between;gap:8px;margin-bottom:10px}.festival-preview header>span{white-space:nowrap;color:#a16b40}.festival-preview>p{text-align:center;color:#557e60;margin:9px 0 0}.festival-preview.done{opacity:.65}.festival-collection{margin-top:22px}.festival-collection h3{font-size:16px}.festival-collection h3>small{float:right;font-size:11px;color:#8b7959;font-weight:400}.festival-collection>div{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.festival-collection article{text-align:center;padding:12px 3px;border:1px dashed #ccbc9f;border-radius:13px;color:#968775}.festival-collection article.owned{background:#f7e3ba;border:1px solid #bf9252;color:#815735}.festival-medal{display:block;margin:auto auto 8px;border:3px double currentColor;border-radius:50%;width:47px;height:47px;line-height:39px;font-size:27px}.festival-collection b{display:block;font-size:11px}.festival-collection small{font-size:10px}.festival-collection>p{font-size:11px;line-height:1.6;color:#8b785d}.festival-finished{text-align:center;border-radius:18px;background:#e9efd9;border:1px solid #b9c39f;padding:24px 17px;color:#577658}.festival-finished h3{font-size:19px}.festival-finished p{font-size:13px;line-height:1.7}.festival-finished .festival-medal{animation:festival-stamp .55s cubic-bezier(.2,.7,.3,1) both}@keyframes festival-stamp{from{opacity:0;transform:rotate(-16deg) scale(1.3)}to{opacity:1;transform:rotate(0) scale(1)}}
.reduce-motion .festival-medal{animation:none}@media(prefers-reduced-motion:reduce){.festival-medal{animation:none!important}}
.festival-cover .street-art{aspect-ratio:3}
@media(max-height:740px){.festival-cover{display:grid;grid-template-columns:92px minmax(0,1fr)}.festival-cover .street-art{aspect-ratio:auto;height:100%;min-height:110px}.festival-cover .street-art img{height:100%;object-fit:cover}.festival-heading{padding:10px}.festival-heading h3{font-size:19px;margin:4px 0}.festival-heading p{font-size:11px;line-height:1.5}.festival-heading small{font-size:9px}.festival-current{padding:12px}.festival-current h3{font-size:18px;margin-bottom:8px}.festival-food .sprite{width:50px;height:50px}.festival-food>button{padding:6px 3px}.festival-calendar{font-size:10px;margin:8px 0 12px}.festival-exchange{margin:10px 0}.festival-current .primary-btn{min-height:40px;padding:10px}}
#modal-content .festival-calendar{font-size:11px;line-height:1.5}#modal-content .festival-heading p{font-size:13px;line-height:1.6}#modal-content .festival-exchange p{font-size:13px;line-height:1.5}#modal-content .festival-itinerary p,#modal-content .festival-rules p{font-size:12px;line-height:1.7}#modal-content .festival-collection>p{font-size:11px;line-height:1.6}
@media(max-height:740px){#modal-content .festival-calendar{font-size:10px}#modal-content .festival-heading p{font-size:11px;line-height:1.5}}

/* Gathering square: independent stage keeps the original walking route intact. */
body[data-town-view="gathering"] .town-links,body[data-town-view="gathering"] .town-play{display:none}
body[data-town-view="gathering"] .town-gathering-entry{background:#dbe6c6;color:#526b42}
.town-heading-actions{flex-shrink:0}.town-gathering-entry{padding-inline:9px}
.gathering-square{position:relative;isolation:isolate;display:flex;flex-direction:column;flex:1;min-height:300px;border:1px solid #d2bf93;border-radius:20px;overflow:hidden;background:#e6dcc0;margin-bottom:8px}
.gathering-square[hidden]{display:none}.gathering-ground{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 60%;z-index:-2;opacity:.86}
.gathering-square:after{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(#fff4d99c,transparent 32%,transparent 68%,#fff4d9cc);pointer-events:none}
.gathering-heading{display:flex;align-items:center;gap:9px;padding:12px 10px;flex:none}
.gathering-heading>button{border:1px solid #c7b38b;border-radius:12px;background:#fff7e7e8;min-height:40px;padding:6px 10px;font-size:12px}
.gathering-heading>span{flex:1;min-width:0;text-align:right}.gathering-heading b{font-size:18px;display:block;color:#745238}.gathering-heading small{font-size:10px;display:block;margin-top:4px;color:#806b4e}
.gathering-scene{position:relative;flex:1;min-height:160px;container-type:size;display:grid;place-items:center}
.gathering-stage{position:relative;width:min(100cqw,145cqh);aspect-ratio:1.45}
.gathering-table{position:absolute;bottom:0;left:0;width:100%;height:auto;pointer-events:none;z-index:2;opacity:0;transition:opacity .5s}
.gathering-square[data-art="ready"] .gathering-table{opacity:1}
.gathering-host{position:absolute;left:39%;bottom:49%;width:24%;height:44%;padding:0;background:none;z-index:3;transform-origin:50% 100%;-webkit-tap-highlight-color:transparent}
.gathering-idle{display:block;position:absolute;inset:0;transform-origin:50% 100%;animation:gathering-breath 4.6s ease-in-out infinite}
.gathering-host-fallback{position:absolute;width:100%;left:0;bottom:0;border-radius:50%;background:#fcf2d6}
.gathering-idle .walker-frame{visibility:hidden}.host-art-ready .gathering-idle .walker-frame{visibility:visible}.host-art-ready .gathering-host-fallback{display:none}
.gathering-idle .gathering-blink-0{opacity:1;animation:gathering-eyes-open 6.4s step-end infinite}.gathering-idle .gathering-blink-1{animation:gathering-eyes-half 6.4s step-end infinite}.gathering-idle .gathering-blink-2{animation:gathering-eyes-shut 6.4s step-end infinite}
.gathering-square.is-serving{--gathering-duration:4800ms}.gathering-square.is-greeting{--gathering-duration:2800ms}
.gathering-foods{position:absolute;z-index:4;left:22%;right:22%;bottom:25%;display:flex;justify-content:center;gap:7%;pointer-events:none}
.gathering-dish{position:relative;display:flex;flex-direction:column;align-items:center;width:44%;min-width:0}
.gathering-dish>.sprite{width:100%;aspect-ratio:1;filter:drop-shadow(0 3px 1px #674e2a30)}
.gathering-dish>small{position:absolute;top:90%;white-space:nowrap;background:#fff5dce8;color:#735337;border:1px solid #cbb289;border-radius:7px;padding:3px 5px;font-size:10px;line-height:1.4}
.gathering-empty-plate{display:block;width:80%;aspect-ratio:1.4;border-radius:50%;background:#f7eddc;border:3px solid #ccbd98;box-shadow:inset 0 0 0 3px #fff7e4,0 3px 1px #927f5440;transform:rotate(-6deg);margin-top:20%;margin-bottom:8%}
.gathering-dish.missing>small{color:#8c7c61;background:#f6edd9e8}
.gathering-steam{position:absolute;z-index:5;left:46%;bottom:54%;width:15%;height:13%;pointer-events:none;display:none}
.has-hot-food .gathering-steam{display:block}.gathering-steam i{position:absolute;bottom:0;width:15%;height:60%;background:#fff7dcaa;border-radius:50%;filter:blur(2px);animation:gathering-steam 3.8s ease-out infinite}.gathering-steam i:nth-child(2){left:50%;animation-delay:-1.8s}
.gathering-footer{padding:10px 12px 14px;flex:none;background:linear-gradient(transparent,#fff5def0 23%)}
.gathering-hint{font-size:12px;line-height:1.6;text-align:center;color:#7d6243;min-height:22px;margin-bottom:9px}.gathering-footer>div{display:flex;gap:8px}.gathering-footer .primary-btn{flex:1;font-size:13px;padding:9px 6px}.gathering-footer .secondary-btn{font-size:12px;padding-inline:9px}.gathering-footer button[hidden]{display:none}
.gathering-art-status{font-size:10px;color:#927858;text-align:center;line-height:1.6;margin-top:5px}.gathering-art-status:empty{display:none}.gathering-footer>.text-button{display:block;margin:3px auto 0}
.gathering-square.is-serving .gathering-dish{animation:gathering-arrive .7s ease-out both}.gathering-square.is-serving .gathering-dish:nth-child(2){animation-delay:.16s}
.gathering-paused *{animation-play-state:paused!important}
@keyframes gathering-breath{0%,100%{transform:scale(1.005,.997)}50%{transform:scale(.995,1.023)}}
@keyframes gathering-eyes-open{0%,88%,94%,100%{opacity:1}89%,93%{opacity:0}}
@keyframes gathering-eyes-half{0%,88%,90%,92%,94%,100%{opacity:0}89%,93%{opacity:1}}
@keyframes gathering-eyes-shut{0%,89%,93%,100%{opacity:0}90%,92%{opacity:1}}
@keyframes gathering-thanks{0%,100%{transform:scale(1)}22%{transform:scale(1.015,.985)}60%{transform:rotate(-2deg) scale(.995,1.015)}80%{transform:rotate(1deg)}}
@keyframes gathering-steam{0%{transform:translateY(0) scale(.6);opacity:0}25%{opacity:.65}100%{transform:translate(8px,-28px) scale(1.35);opacity:0}}
@keyframes gathering-arrive{from{transform:translateY(-10px) scale(.92);opacity:0}to{transform:none;opacity:1}}
@media(max-width:760px) and (max-height:700px){.gathering-square{min-height:260px}.gathering-heading{padding:7px 8px}.gathering-heading b{font-size:16px}.gathering-footer{padding:5px 8px 10px}.gathering-hint{font-size:11px;margin-bottom:6px}.gathering-scene{min-height:135px}.gathering-dish>small{font-size:9px;padding:2px 3px}.town-heading-actions{gap:4px}.town-heading h2{font-size:13px}}
/* The weekly shortcut occupies its own row; it must not squeeze the daily goal. */
.business-summary{flex-wrap:wrap}.business-summary>.festival-shortcut{flex:0 0 100%;width:100%;min-width:0;padding:6px 10px;gap:9px}.business-summary>.festival-shortcut b{font-size:12px}.business-summary>.festival-shortcut small{font-size:9px;margin-top:2px}.business-summary>.festival-shortcut>span:first-child{font-size:22px}
.gathering-host{left:36%;bottom:53%;width:28%;height:48%;z-index:1}
.gathering-dish>small{white-space:normal;text-align:center;width:max-content;max-width:125%}

/* Keep the chef outfit and crop throughout the nod; no visitor costume swap. */
.gathering-host{z-index:3}
.gathering-square:is(.is-serving,.is-greeting) .gathering-idle{animation:gathering-thanks var(--gathering-duration) ease-in-out both}
.gathering-square:is(.is-serving,.is-greeting) .gathering-blink-0{animation:gathering-nod-open var(--gathering-duration) step-end both}
.gathering-square:is(.is-serving,.is-greeting) .gathering-blink-1{animation:none;opacity:0}
.gathering-square:is(.is-serving,.is-greeting) .gathering-blink-2{animation:gathering-nod-shut var(--gathering-duration) step-end both}
.gathering-dish>small b,.gathering-dish>small span{display:block}.gathering-dish>small b{font-weight:600;line-height:1.2}.gathering-dish>small span{white-space:nowrap}
@keyframes gathering-nod-open{0%,17%,56%,100%{opacity:1}18%,55%{opacity:0}}
@keyframes gathering-nod-shut{0%,17%,56%,100%{opacity:0}18%,55%{opacity:1}}
.gathering-reduced *{animation:none!important;transition:none!important}.gathering-reduced .gathering-blink-0{opacity:1!important}.gathering-reduced :is(.gathering-blink-1,.gathering-blink-2){opacity:0!important}.gathering-reduced .gathering-steam{display:none}
@media(prefers-reduced-motion:reduce){.gathering-square *{animation:none!important;transition:none!important}.gathering-square .gathering-blink-0{opacity:1!important}.gathering-square :is(.gathering-blink-1,.gathering-blink-2){opacity:0!important}.gathering-square .gathering-steam{display:none}}

/* Energy and stock are separate constraints; show the tracked preparation. */
.energy-totals{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 5px}.energy-totals .big-energy{margin:0;gap:5px}.energy-totals .big-energy b{font-size:36px}.energy-totals .diamond-balance{margin:0;padding:8px 12px;min-width:84px}.energy-totals .diamond-balance b{font-size:22px}.energy-totals .diamond-balance small{margin-top:1px}
.energy-supply .energy-recovery{text-align:center;font-size:12px;margin:6px 0 14px;color:#8b7554}
.energy-readiness{border:1px solid #c7caaa;background:#f2f2df;border-radius:14px;padding:11px 13px;margin-bottom:14px}.energy-readiness header{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.energy-readiness header>span{font-size:10px;color:#7f865c;flex-shrink:0}.energy-readiness header>b{font-size:12px;color:#586b47}.energy-readiness>p{font-size:11px;line-height:1.6;margin:5px 0 6px;color:#7a7053}.energy-stock{display:flex;align-items:center;gap:8px;padding:5px 0}.energy-stock>.sprite{width:36px;height:36px}.energy-stock>div{flex:1;min-width:0}.energy-stock b{font-size:12px;display:block}.energy-stock small{font-size:10px;display:block;margin-top:3px}.energy-stock>span:last-child{font-size:11px;white-space:nowrap;color:#7f6748}.energy-readiness .energy-resume-time{padding-top:6px;border-top:1px dashed #cbd0b0;margin-bottom:3px}.energy-resume-time small{display:block;font-size:9px;color:#8d8a6d;margin-top:2px}.energy-readiness>.text-button{display:block;margin:5px 0 0;font-size:11px;min-height:28px;color:#637a50}
.energy-supply>.stack{gap:10px}.energy-supply .primary-btn{font-size:13px}.energy-rules{font-size:11px;margin:16px 0 10px;padding:10px 12px;background:#f4ecd8;border-radius:10px;color:#897052}.energy-rules summary{cursor:pointer}.energy-rules>p{font-size:11px;line-height:1.8;margin-top:8px}.energy-links{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}
@media(max-height:740px){.energy-totals .big-energy b{font-size:30px}.energy-totals .diamond-balance{padding:5px 9px}.energy-readiness{padding:8px 10px;margin-bottom:11px}.energy-readiness>p{margin-block:4px}.energy-stock{padding:2px 0}.energy-readiness>.text-button{margin-top:2px}.energy-supply .energy-recovery{margin-bottom:10px}.energy-supply>.stack{gap:9px}}
.energy-totals .big-energy small{font-size:15px}.energy-totals .big-energy .energy-icon{font-size:46px}

/* Keep fixed navigation outside the shrinking street coordinate system. */
.album-cover{position:relative;padding:15px 70px 15px 15px;text-align:left}.album-cover>small{font-size:10px;letter-spacing:0}.album-cover h3{font-size:17px;line-height:1.5;margin:8px 0}.album-cover>p:first-of-type{display:none}.album-cover>p.footnote{font-size:10px;margin:0;line-height:1.6}.album-cover>b{position:absolute;right:14px;top:20px;font-size:29px;margin:0;text-align:center}.album-cover>b span{display:block;font-size:11px;margin:0}.album-packs:focus-visible{outline:2px solid #83966b;outline-offset:4px;border-radius:10px}.album-sources>header>.secondary-btn{margin-bottom:14px;font-size:12px}
.album-focus{margin:14px 0;padding:17px 15px;border:1px solid #c4cfa9;border-radius:15px;background:linear-gradient(135deg,#eff1dc,#faf5df);box-shadow:inset 0 0 0 4px #fff9e566}
.album-focus header{display:flex;justify-content:space-between;align-items:center;gap:10px}.album-focus header>div>small,.album-focus.complete>small{color:#75805a;font-size:11px}.album-focus h3{font-size:18px;margin:4px 0 0}.album-focus header>b{font-size:28px;color:#728154}.album-focus header>b small{font-size:12px}
.album-stamps{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px;margin-top:14px}.album-stamps button{padding:7px 2px;border:1px dashed #c2b697;border-radius:8px;background:#eae3cf;color:#a29373;min-height:46px}.album-stamps .owned{border:1px solid #a8b98a;background:#f7faec;color:#718347;box-shadow:0 2px 0 #b2bd9844}.album-stamps span{display:block;font-size:18px;line-height:1}.album-stamps small{display:block;margin-top:5px;font-size:9px;letter-spacing:0;color:#aa8949}.album-focus p{font-size:12px;line-height:1.7;margin:12px 0 9px}.album-focus-reward{display:flex;align-items:center;justify-content:space-between;gap:6px;flex-wrap:wrap;font-size:11px;color:#7e694a}.album-chance-note,.album-claim-note{display:block;font-size:10px;line-height:1.6;color:#8a8068;margin-top:8px}
.album-sources{margin:20px 0;padding:16px 12px;border:1px solid #dac39a;border-radius:15px;background:#fbf3de;scroll-margin-top:100px}.album-sources:focus-visible{outline:2px solid #83966b;outline-offset:3px}.album-sources>header h3{font-size:17px}.album-sources>header p{font-size:11px;line-height:1.7;color:#9a8060;margin:7px 0 14px}.album-source{display:flex;gap:10px;padding:13px 0;border-top:1px dashed #d9c9a9}.album-source:last-child{padding-bottom:0}.album-source>div{flex:1;min-width:0}.album-source h4{font-size:13px;line-height:1.5;margin:0}.album-source p{font-size:11px;color:#8e785d;line-height:1.7;margin:5px 0 8px}.album-source .secondary-btn{font-size:12px;min-height:42px;padding:10px 7px}.album-source .text-button{font-size:11px;min-height:40px;text-align:left}.album-source-stamp{display:grid;place-items:center;flex:none;align-self:flex-start;width:33px;height:36px;color:#aa8759;font-size:20px;border:1px solid #d5bd91;background:#f1e4c3;border-radius:7px;transform:rotate(-5deg)}.album-source.ready .album-source-stamp{background:#e2eccd;border-color:#a6b983;color:#71874e}
@media(max-width:380px){.album-focus{padding:14px 11px}.album-stamps{gap:4px}.album-source{gap:7px}.album-source-stamp{width:27px;height:32px}.album-sources{padding:14px 10px}.album-focus-reward .text-button{font-size:11px}}
.town-map>.town-teahouse{top:8px;right:6px;min-height:44px;min-width:94px;max-width:115px;transform:none;padding:6px 23px 6px 9px}
.town-map>.town-theme-tag{right:auto;left:8px;top:8px}
/* A press must not replace the visitor's centered world transform. */
.town-visitor:active:not(:disabled){transform:translateX(-50%)}
.town-visitor:active .visitor-breath,.town-visitor:active .visitor-stride{filter:brightness(1.06)}
@container (max-height:280px){.town-visitor .visitor-bubble{right:100%;bottom:0;border-radius:12px 12px 3px 12px}}
@media(max-width:760px) and (max-height:620px){
 .business-summary{padding-top:0;padding-bottom:4px}.album-shortcut>span{display:none}
 .business-summary>.festival-shortcut{padding-block:4px}
 .business-summary>.festival-shortcut>span:nth-child(2){display:flex;align-items:baseline;gap:6px;min-width:0}
 .business-summary>.festival-shortcut b{flex:none;font-size:11px}
 .business-summary>.festival-shortcut small{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:9px;margin:0}
}

.album-focus>.primary-btn{font-size:14px}.album-focus>.primary-btn>small{display:block;font-size:11px;line-height:1.5;margin-top:3px;font-weight:400}
.daily-menu-cover{padding:17px 16px;margin-bottom:15px;border:1px solid #d5c18f;border-radius:15px;background:linear-gradient(140deg,#f8edc9,#f2efd9);box-shadow:inset 0 0 0 4px #fff8e5}.daily-menu-cover>small{font-size:11px;color:#957443}.daily-menu-cover h3{font-size:19px;line-height:1.5;margin:7px 0}.daily-menu-cover p{font-size:11px;line-height:1.7;color:#917b5b;margin:7px 0 11px}.daily-menu-cover>b{display:inline-block;padding:5px 9px;border-radius:8px;background:#e5eacb;color:#72804f;font-size:11px}
.daily-production{padding:10px 11px;background:#f0ead5;border-radius:9px;margin-top:11px}.daily-production>span{display:flex;justify-content:space-between;font-size:12px;color:#816b48}.daily-production small{display:block;color:#968363;font-size:10px;line-height:1.6;margin-top:5px}
