@font-face{font-family:'DM Sans';src:url('../grid-rush/assets/fonts/DMSans.woff2') format('woff2');font-weight:100 1000;font-display:swap}@font-face{font-family:'Fredoka';src:url('../grid-rush/assets/fonts/Fredoka.woff2') format('woff2');font-weight:300 700;font-display:swap}
:root{--night:#192e32;--deep:#12262a;--cream:#f8ebcf;--gold:#edc77e;--jade:#98b9a4;--coral:#e79984;--display:'Fredoka',system-ui,sans-serif;--spring:cubic-bezier(.2,1.3,.4,1)}*{box-sizing:border-box}html{color-scheme:dark;background:var(--night);color:var(--cream)}body{margin:0;background:radial-gradient(ellipse at 80% 5%,#47626166,transparent 48%),var(--night);font:14px/1.6 'DM Sans',system-ui,sans-serif}button,input{font:inherit}button,a,input{touch-action:manipulation;-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:default;opacity:.5}[hidden]{display:none!important}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--gold);outline-offset:4px}.sr-only{position:absolute;width:1px;height:1px;clip-path:inset(50%);overflow:hidden;white-space:nowrap}.bbl-skip{position:fixed;top:-100px;left:12px;z-index:100;background:var(--cream);color:var(--night);padding:10px}.bbl-skip:focus{top:10px}.bbl-header{max-width:1180px;margin:auto;display:flex;align-items:center;gap:24px;min-height:86px;padding:16px 30px;border-bottom:1px solid #b0c1a730}.bbl-brand{display:flex;align-items:center;gap:10px;color:var(--cream);text-decoration:none;font:400 23px var(--display)}.bbl-brand>span{display:grid;place-items:center;width:38px;height:42px;background:#ba5749;border:1px solid #e5ad74;border-radius:8px;color:#ffe1a0;transform:rotate(-6deg);font-size:24px}.bbl-brand b{font-weight:400}.bbl-brand i{color:var(--coral);font-style:normal}.bbl-header .playground-home{color:var(--cream);background:#f8ebcf0a;border-color:#f8ebcf33;font-size:12.1px}.header-stamp{margin-left:auto;font-size:10px;letter-spacing:1.2px;color:var(--jade)}main#app{max-width:1180px;margin:auto;padding:34px 30px}.bbl-intro{display:flex;justify-content:space-between;align-items:flex-end;gap:30px;margin-bottom:30px}.bbl-kicker{font-size:10px;font-weight:600;letter-spacing:1.5px;margin:0 0 12px;color:var(--jade)}h1{font:500 clamp(45px,6vw,76px)/1.06 var(--display);letter-spacing:-1.8px;margin:0}h1 em{font-style:normal;color:var(--gold)}h2{font:400 27px/1.17 var(--display);margin:0 0 16px}h2 em{color:var(--jade);font-style:normal}.intro-note{padding-bottom:7px;color:#c3d0be}.intro-note>span{font:400 39px var(--display);color:var(--coral)}.intro-note p{font-size:13px;line-height:1.9;margin:4px 0 8px}.intro-note small{font-size:12.1px;color:var(--jade)}.bbl-layout{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:26px;align-items:start}.play-panel{position:relative;min-width:0;border:1px solid #a6b2985c;border-radius:24px;background:#253d3c;overflow:hidden;isolation:isolate;box-shadow:0 12px 45px #071a1d4d;scroll-margin-top:12px}.bridge-scene{position:absolute;inset:0;overflow:hidden;z-index:-1;background:radial-gradient(ellipse at 55% 65%,#8c7c4c66,transparent 60%),linear-gradient(#283f43,#4a6560 68%,#263e3b)}.bridge-beam{position:absolute;top:0;left:-5%;width:110%;height:85px;background:linear-gradient(#526463,#354c4d);transform:rotate(-5deg);box-shadow:0 13px 0 #1c3436,0 28px 18px #102d3266}.bridge-pillar{position:absolute;top:50px;bottom:0;width:53px;background:linear-gradient(90deg,#52635d,#728074 55%,#3b5753);box-shadow:inset 4px 0 0 #a4ac8e22}.pillar-left{left:12px;transform:rotate(-3deg)}.pillar-right{right:10px;transform:rotate(3deg)}.skyline{position:absolute;left:0;right:0;top:27%;height:120px;opacity:.3;background:repeating-linear-gradient(90deg,#152f39 0 35px,transparent 35px 49px);clip-path:polygon(0 27%,10% 27%,10% 0,23% 0,23% 43%,37% 43%,37% 10%,48% 10%,48% 48%,60% 48%,60% 0,76% 0,76% 24%,92% 24%,92% 15%,100% 15%,100% 100%,0 100%)}.tram{position:absolute;top:44%;left:-80px;width:64px;height:63px;display:grid;place-items:center;border-radius:8px 8px 0 0;background:#6a8e81;border:3px solid #b3be9a88;font-size:13px;color:#f4e7bc;animation:tram-pass 22s linear infinite}.rain{position:absolute;inset:90px 0 12%;opacity:.12;background:repeating-linear-gradient(103deg,transparent 0 47px,#d9e5cd 48px 49px,transparent 50px 90px);animation:rain-fall 1.6s linear infinite}.neon-sign{position:absolute;top:110px;right:17px;width:43px;padding:12px 7px;border:2px solid #d8a18a66;border-radius:7px;background:#263e3d}.neon-sign>span{writing-mode:vertical-rl;font-size:19px;letter-spacing:5px;color:#edb39b;text-shadow:0 0 13px #ef917a88}.neon-sign>small{display:block;font-size:10px;line-height:1.5;letter-spacing:1px;color:var(--gold);margin-top:6px}.play-panel.has-neon .neon-sign{box-shadow:0 0 28px #e79c7177,inset 0 0 12px #dd8b6b55;border-color:#f7c589}.altar-table{position:absolute;left:0;right:0;bottom:0;height:31%;background:linear-gradient(#b18a60,#8c694c);border-top:9px solid #d1af7a;box-shadow:0 -12px 30px #122c2966;transform:perspective(500px) rotateX(5deg);transform-origin:bottom}.altar-table:after{content:'';position:absolute;inset:15px 12px;background:repeating-linear-gradient(6deg,transparent 0 39px,#714c3522 40px 42px)}.stall-cat{position:absolute;right:18px;bottom:23%;padding:17px 8px 8px;border:2px solid #eed39a;border-radius:15px 15px 7px 7px;font-size:12.1px;color:#af5a43;background:#f4dfb4;transform:rotate(6deg)}.stall-radio{position:absolute;left:14px;bottom:22%;padding:8px;background:#c7b58b;border:3px solid #425a50;border-radius:8px;color:#4b6457;font-size:18px}.welcome{position:relative;padding:40px 30px 26px;min-height:600px;background:linear-gradient(#18323599,#203735c9 58%,#3f4a35bd)}.fong-intro{display:flex;align-items:center;gap:18px;margin-bottom:23px}.fong-art{display:block;width:84px;flex:0 0 84px}.fong-art svg{display:block;width:100%;height:100%}.fong-intro .fong-art{width:100px;flex-basis:100px;align-self:flex-end;filter:drop-shadow(0 5px 3px #0c28295c)}.fong-intro .bbl-kicker{font-size:10px;margin-bottom:8px}.fong-intro h2{font-size:30px;color:var(--gold);margin-bottom:9px}.fong-intro p:last-child{font-size:12.1px;line-height:1.8;margin:0;color:#e1dfc4}.worry-field{padding:0;border:0;margin:0 0 17px;min-width:0}.worry-field legend,.custom-label{display:block;font-size:12.1px;color:#e8e4c8;margin-bottom:9px}.custom-label{font-size:12.1px;color:#c7d5bc}#worry-input{display:block;width:100%;min-height:43px;padding:10px 12px;border:1px solid #cbd0ad66;border-radius:10px;background:#102a2dbb;color:var(--cream);font-size:12.1px}#worry-input::placeholder{color:#a5b89e}.quiet-note{font-size:10px;line-height:1.7;color:#bfccb5;margin:8px 0}.selected-kit{display:flex;align-items:center;gap:11px;margin:12px 0 16px;padding:8px 12px;border-radius:11px;border:1px dashed #d6ca9b66}.selected-kit>span:first-child{width:37px;height:41px;transform:rotate(-12deg)}.selected-kit svg{width:100%;height:100%}.selected-kit>div{flex:1;min-width:0}.selected-kit small{display:block;color:#bcc9b0;font-size:10px}.selected-kit b{display:block;font-size:12.1px;font-weight:500}.selected-kit>span:last-child{font-size:22px;color:var(--gold)}.bbl-button,.soft-button,.text-button{min-height:44px;padding:11px 15px;border-radius:12px;font-size:12px;font-weight:600;transition:transform .18s var(--spring),box-shadow .18s}.bbl-button{background:var(--gold);border:1px solid #ffe4a8;color:#2f463c;box-shadow:0 4px 0 #917144}.bbl-button:active{transform:translateY(2px) scale(.98);box-shadow:0 1px 0 #917144}.soft-button{background:#38534b;border:1px solid #a4b79788;color:var(--cream)}.soft-button:active{transform:scale(.97)}.text-button{background:transparent;border:0;color:#bdceb4;padding:7px 10px;font-size:12.1px}.start-button{width:100%;display:flex;justify-content:space-between;align-items:center;font-size:13px;gap:10px}.welcome-options{display:flex;align-items:center;justify-content:space-between;margin-top:10px;font-size:12.1px;color:#baccb2}.welcome-options label{display:flex;align-items:center;gap:8px;min-height:38px}.welcome-options input{accent-color:var(--gold);width:16px;height:16px}.ritual-stage{display:flex;flex-direction:column;height:610px;padding:14px 20px 0;background:#1a32341a}.ritual-top{display:flex;align-items:center;gap:8px;min-height:56px}.ritual-top>div{flex:1;min-width:0}.ritual-top .bbl-kicker{font-size:10px;margin:0 0 4px;color:#c8d5b7}.ritual-top h2{font-size:23px;margin:0;color:var(--gold);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.phase-clock{width:30px;height:30px;border:1px solid #d3c59477;border-radius:50%;display:grid;place-items:center;font:400 15px var(--display);color:var(--cream)}.icon-button{width:44px;height:44px;border:1px solid #c3c7a64d;border-radius:10px;background:#193638aa;color:var(--cream);font-size:17px;flex-shrink:0}.step-track{list-style:none;display:flex;justify-content:space-between;gap:5px;padding:8px 0 14px;margin:0;border-bottom:1px solid #d4d7b533}.step-track li{display:flex;flex:1;align-items:center;gap:5px;color:#a9bcaa;font-size:10px}.step-track span{display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:#26413e;border:1px solid #c5d0b333;font:400 12.1px var(--display);flex-shrink:0}.step-track li.is-current{color:var(--gold)}.step-track li.is-current span{background:var(--gold);color:#2d4b3e;border-color:#f3e2b6;box-shadow:0 0 14px #f0cc7844}.step-track li.is-done span{color:var(--jade);background:#476452}.step-track small{font-size:10px;line-height:1.4}.phase-body{position:relative;display:flex;flex:1;min-height:0}.phase-panel{position:relative;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;min-width:0;padding:10px 0}.phase-instruction{font-size:12.1px;line-height:1.7;text-align:center;max-width:340px;color:#ede6c6;margin:0}.fong-bubble{display:flex;align-items:center;gap:12px;min-height:78px;padding:7px 12px 5px;border:1px solid #bbc8a64d;border-radius:15px 15px 0 0;background:#223d3ee8}.fong-bubble .fong-art{width:49px;flex-basis:49px;align-self:flex-end}.fong-bubble p{font-size:12px;line-height:1.7;color:#f5dfae;margin:0}.incense-zone{position:relative;display:flex;align-items:flex-end;justify-content:center;gap:22px;width:250px;height:210px;max-height:42vh;padding-bottom:36px;touch-action:none}.incense-stick{position:relative;width:44px;height:155px;display:flex;align-items:center;justify-content:flex-end;flex-direction:column;border:0;background:none;touch-action:none;color:#d6c69b;padding:0 0 7px}.incense-stick i{display:block;width:5px;height:var(--incense-length,124px);max-height:100%;background:linear-gradient(#806a4b 6%,#a17342 7% 77%,#b84f3e 78%);border-radius:4px;box-shadow:2px 0 0 #3a393733}.incense-stick b{position:absolute;bottom:3px;font:400 12.1px var(--display);background:#735d42;border-radius:50%;width:16px;height:16px}.incense-stick.is-lit i{background:linear-gradient(#f4ce76 1%,#e28742 2% 5%,#a17342 7% 77%,#b84f3e 78%);filter:drop-shadow(0 -3px 7px #ffd17a88)}.incense-stick.is-lit:after{content:'';position:absolute;top:5px;width:10px;height:19px;background:#f4ca73;border-radius:70% 30% 70% 30%;animation:flame-sway .8s ease-in-out infinite alternate}.incense-smoke{position:absolute;bottom:calc(var(--incense-length,124px) + 7px);left:50%;width:46px;height:clamp(28px,6vh,52px);translate:-50% 0;opacity:0;pointer-events:none;-webkit-mask-image:linear-gradient(to top,#000 0%,#000 62%,transparent 100%);mask-image:linear-gradient(to top,#000 0%,#000 62%,transparent 100%)}.incense-smoke svg{display:block;width:100%;height:100%;overflow:visible}.is-lit .incense-smoke{opacity:1}.incense-panel.is-blown .incense-stick:after{display:none}.incense-bowl{position:absolute;bottom:0;width:150px;height:53px;background:linear-gradient(#c9a56b,#9b6e47);border:3px solid #e6c188;border-radius:8px 8px 55px 55px;text-align:center;color:#f1d298;font-size:25px}.phase-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:center}.paper-name{width:min(240px,80%);padding:22px 20px;background:#efdcaa;color:#6b4a35;box-shadow:4px 8px 0 #162e2f55;transform:rotate(-3deg);border:2px solid #d1b381;text-align:center}.paper-name>span{color:#b55a44;border:1px solid #b55a4477;padding:3px 9px;font-size:13px;letter-spacing:3px}.paper-name p{font:400 25px/1.35 var(--display);overflow-wrap:anywhere;margin:23px 0}.paper-name small{font-size:12.1px}.beat-stats{display:flex;align-items:center;justify-content:center;gap:30px;align-self:stretch;text-align:center}.beat-stats b{display:block;font:400 25px var(--display);color:var(--gold)}.beat-stats small{display:block;font-size:10px;color:#cfdbc0}.rhythm-rail{position:relative;display:flex;align-items:center;gap:7px;color:#cfdbc0;font-size:10px}.rhythm-rail i{display:block;width:9px;height:9px;border-radius:50%;background:var(--gold);transform:scale(var(--beat-scale,1));box-shadow:0 0 11px #efd49677}.hit-zone{position:relative;display:block;flex:1;min-height:120px;max-height:300px;width:min(62%,235px);padding:0;border:0;background:transparent;color:#6c4c38;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.paper-doll{display:block;width:100%;height:100%;filter:drop-shadow(2px 7px 0 #172d3255);transform-origin:50% 75%}.paper-doll svg{width:100%;height:100%}.paper-crease{opacity:var(--paper-wear,0)}.paper-tear{opacity:var(--paper-tear,0)}.doll-label{position:absolute;left:31%;right:27%;top:58%;max-height:28%;font-size:calc((clamp(10px,1.5vw,12px)) * 1.1);font-weight:600;line-height:1.2;overflow:hidden;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}.striking-weapon{position:absolute;width:95px;height:100px;right:-40px;top:14%;pointer-events:none;transform:rotate(-18deg);filter:drop-shadow(3px 5px 2px #162c3277)}.striking-weapon svg{width:100%;height:100%}.hit-feedback{margin:0;font:400 16px var(--display);min-height:22px;color:#f9d484;text-align:center}.beat-panel{gap:5px}.beat-panel .phase-instruction{font-size:10px}.qte-call{position:absolute;z-index:2;top:61px;left:50%;transform:translateX(-50%);background:#b85747;color:#fff0c7;border:1px solid #f0ba83;border-radius:99px;padding:7px 14px;font-size:12.1px;white-space:nowrap;box-shadow:0 5px 17px #0a242955}.tiger-tray{position:relative;width:min(340px,100%);height:240px;max-height:43vh;touch-action:none}.paper-tiger{position:absolute;left:8%;top:3%;width:70%;height:85%;filter:drop-shadow(0 8px 0 #17322e66)}.paper-tiger svg{width:100%;height:100%;overflow:visible}.mouth-target{position:absolute;left:42%;top:51%;width:20px;height:20px;pointer-events:none}.pork-piece{position:absolute;right:0;bottom:0;width:95px;height:90px;border:0;background:none;padding:0;touch-action:none;z-index:2;filter:drop-shadow(0 6px 3px #17323166);transition:translate .08s ease-out}.pork-piece svg{width:100%;height:100%}.tiger-mouth{transform-origin:64px 75px;transition:transform .2s var(--spring)}.is-ready .tiger-mouth{transform:scale(1.5)}.tiger-smile{display:none}.is-fed .tiger-mouth{display:none}.is-fed .tiger-smile{display:block}.is-fed .pork-piece{opacity:0;scale:.3;transition:opacity .3s,scale .3s}.blessing-panel{isolation:isolate}.blessing-paper{position:relative;z-index:2;width:160px;max-height:70%;min-height:210px;padding:20px 15px;background:#eed398;border:3px solid #cda65e;border-radius:5px;color:#a34735;transform:rotate(-4deg);box-shadow:5px 8px 0 #16312f55;transition:opacity .8s,filter .8s,transform .8s}.blessing-paper>span{display:block;font-size:50px;line-height:1.4;font-weight:700;border:2px solid #b35e42;padding:5px}.blessing-paper b{display:block;font-size:12.1px;margin-top:8px}.blessing-paper.is-burning{filter:brightness(1.8);opacity:0;transform:translateY(-30px) scale(.8)}.fortune-rays{position:absolute;width:240px;height:240px;z-index:-1;border-radius:50%;background:repeating-conic-gradient(#e7c97422 0 10deg,transparent 10deg 30deg);animation:ray-turn 20s linear infinite}.effects{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:5}.spark{position:absolute;left:50%;top:45%;width:6px;height:11px;background:var(--spark-color,#edc77e);border-radius:2px;animation:spark-out 700ms ease-out forwards}.effects .score-pop{position:absolute;left:50%;top:30%;font:500 25px var(--display);color:#f8e0a6;animation:score-rise .6s ease-out forwards}.stall-dashboard{display:grid;gap:0;min-width:0}.stall-wallet{border:1px solid #b1c39d44;padding:23px;border-radius:20px;background:#243d3a;margin-bottom:20px}.stall-wallet .bbl-kicker{font-size:10px}.wallet-totals{display:flex;gap:28px;margin:18px 0 12px}.wallet-totals b{font:400 29px var(--display);color:var(--gold);display:block}.wallet-totals small{font-size:12.1px;color:#bfceb4;display:block}.idle-note{font-size:12.1px;color:#c3d0b6;line-height:1.7;margin:0}.idle-welcome{font-size:12.1px;color:var(--gold);padding:8px 0 0;margin:0}.stall-tabs{display:flex;padding:7px;background:#112c2b;border-left:1px solid #a7bf9844;border-right:1px solid #a7bf9844;gap:4px}.stall-tabs button{flex:1;min-width:0;min-height:41px;padding:7px 4px;font-size:12.1px;border:0;border-radius:9px;background:transparent;color:#bcd0b4;transition:background .2s,scale .2s var(--spring)}.stall-tabs [aria-selected=true]{background:#ddc17d;color:#2f4a3a;box-shadow:0 2px 0 #7b6338}.stall-tabs button:active{scale:.94}.collection-panel{padding:17px;border:1px solid #b1c39d44;border-top:0;border-radius:0 0 20px 20px;background:#203b37}.collection-note{font-size:12.1px;color:#bfceb4;margin:0 0 14px;line-height:1.8}.kit-row,.decor-row,.friend-row{display:flex;align-items:center;gap:10px;min-height:66px;padding:12px 0;border-top:1px solid #acbd8c2b}.kit-row:first-child,.decor-row:first-child,.friend-row:first-child{border-top:0}.kit-art{display:block;width:37px;flex-shrink:0;height:45px}.kit-art svg{width:100%;height:100%}.kit-row>div,.decor-row>div,.friend-row>div{flex:1;min-width:0}.kit-row b,.decor-row b,.friend-row b{display:block;font-size:12.1px;font-weight:500;color:#f2e5bd}.kit-row small,.decor-row small,.friend-row small{font-size:10px;line-height:1.7;color:#b6c9ad;display:block;margin-top:3px}.kit-row button,.decor-row button{min-height:42px;min-width:62px;padding:7px 8px;border:1px solid #b4c49a66;border-radius:9px;background:#355345;color:#f2ddb0;font-size:10px;flex-shrink:0}.kit-row button:disabled,.decor-row button:disabled{opacity:.6}.decor-icon,.friend-icon{display:grid;place-items:center;flex:0 0 35px;width:35px;height:39px;font-size:23px;color:var(--gold)}.friend-row.is-locked{opacity:.65}.friend-row p{font-size:12.1px;line-height:1.8;color:#c6d0b8;margin:6px 0 0}.records-card{margin-top:22px;padding:23px;border:1px solid #b1c39d44;border-radius:20px;background:#243c37}.records-card .bbl-kicker{font-size:10px}.records-card h2{font-size:23px}.records-card ol{list-style:none;padding:0;margin:0}.record-row{display:flex;gap:12px;align-items:center;padding:13px 0;border-top:1px solid #b8c5a52b}.record-row>span{font:400 22px var(--display);color:var(--jade)}.record-row div{flex:1;min-width:0}.record-row b{display:block;font-size:12.1px;font-weight:500}.record-row small{display:block;font-size:10px;color:#b8c7ac;margin-top:3px}.record-row output{font:400 25px var(--display);color:var(--gold)}.empty-record{font-size:12.1px;color:#bdcbb0;line-height:1.8}.story-card{margin-top:22px;padding:20px 24px;border:1px solid #bcc7aa33;border-radius:17px;background:#223b36}.story-card summary{font:400 21px var(--display);min-height:37px;cursor:pointer;color:#d7d4ac}.story-card p,.story-card li{font-size:12px;line-height:1.95;color:#bcccaf}.story-card ol{padding-left:20px}.shop-message{min-height:20px;font-size:12.1px;color:var(--gold);margin:12px 0}.bbl-footer{display:flex;align-items:center;justify-content:space-between;padding-top:22px;border-top:1px solid #bfccac33;margin-top:20px;gap:10px;font-size:12.1px;color:#b2c4a6}.bbl-results{position:relative;padding:30px 28px;background:linear-gradient(#203a36f5,#203a36f5);text-align:center}.bbl-results h2{font-size:28px;color:var(--cream)}.bbl-results .bbl-button,.bbl-results>.soft-button{display:block;width:100%;margin-top:12px}.fortune-slip{margin:24px 0;padding:24px 22px;background:#efddad;color:#604c34;border:2px solid #c9aa70;box-shadow:4px 5px 0 #0c27294d;transform:rotate(-1.3deg);border-radius:3px}.fortune-slip>span{display:inline-grid;place-items:center;width:39px;height:39px;border:1px solid #bd6244;color:#a75238;font-size:24px}.fortune-slip p{font:400 23px/1.4 var(--display);margin:13px 0 14px}.fortune-slip small{font-size:10px;color:#886d49}.result-stats{display:flex;gap:15px;justify-content:center;margin:25px 0}.result-stats span{flex:1}.result-stats b{display:block;font:400 30px var(--display);color:var(--gold)}.result-stats small{display:block;font-size:10px;color:#b9cbb0}.reward-line{font-size:12px;color:var(--gold)}.friend-arrival{font-size:12px;background:#f0d28a22;border:1px solid #f0d28a66;border-radius:10px;padding:12px;color:var(--gold)}.pause-overlay{position:absolute;inset:0;z-index:15;display:grid;place-items:center;padding:25px;background:#172e30f5;backdrop-filter:blur(7px)}.pause-card{text-align:center;max-width:310px}.pause-card>span{font-size:55px;color:var(--gold)}.pause-card p{font-size:12px;line-height:1.8;color:#beceb0}.pause-card button{display:block;width:100%;margin-top:12px}.is-playing{overflow:hidden}.is-playing:before{content:'';position:fixed;inset:0;z-index:25;background:#0c2224df;backdrop-filter:blur(6px)}.is-playing .play-panel{position:fixed;inset:max(12px,env(safe-area-inset-top)) 16px calc(18px + env(safe-area-inset-bottom));width:min(680px,calc(100% - 32px));max-height:850px;margin:auto;z-index:30;border-color:#adbc8e88}.is-playing .ritual-stage{height:100%}
@keyframes tram-pass{0%,60%{translate:-70px}100%{translate:850px}}@keyframes rain-fall{to{background-position:-18px 140px}}@keyframes flame-sway{to{transform:scale(.8,1.2) rotate(15deg)}}@keyframes ray-turn{to{rotate:360deg}}@keyframes spark-out{to{transform:translate(var(--sx),var(--sy)) rotate(var(--sr));opacity:0}}@keyframes score-rise{to{translate:10px -48px;opacity:0}}
@media(max-width:900px){.bbl-layout{grid-template-columns:minmax(0,1fr) 270px;gap:18px}.header-stamp{display:none}.welcome{padding:28px 20px}.fong-intro{gap:12px}.fong-intro h2{font-size:27px}.fong-intro .fong-art{width:75px;flex-basis:75px}.ritual-stage{padding:12px 15px 0}.bbl-header{padding:16px 22px}}
@media(max-width:700px){main#app{padding:24px 14px calc(25px + env(safe-area-inset-bottom))}.bbl-header{padding:13px 16px;min-height:70px;gap:10px;justify-content:space-between}.bbl-brand{font-size:18px;gap:7px}.bbl-brand>span{width:29px;height:33px;font-size:20px}.bbl-header .playground-home{font-size:12.1px;padding:0 10px;min-height:44px}.bbl-intro{gap:15px;margin-bottom:23px;align-items:flex-start}.bbl-intro .bbl-kicker{font-size:10px;max-width:175px;line-height:1.6;margin-bottom:8px}h1{font-size:42px;letter-spacing:-1px}.intro-note{max-width:135px;align-self:flex-end}.intro-note>span{font-size:26px}.intro-note p{font-size:12.1px;line-height:1.8}.intro-note small{font-size:10px;line-height:1.5;display:block}.bbl-layout{display:block}.play-panel{border-radius:20px}.welcome{padding:25px 20px 20px;min-height:0}.fong-intro{gap:14px;margin-bottom:18px}.fong-intro .fong-art{width:76px;flex-basis:76px}.fong-intro h2{font-size:28px}.selected-kit{margin:10px 0 15px}.stall-dashboard{margin-top:23px}.stall-wallet h2 br{display:none}.stall-wallet h2{font-size:26px}.wallet-totals{margin:10px 0}.stall-wallet{padding:20px}.stall-tabs button{min-height:44px;font-size:12.1px}.kit-row,.decor-row{min-height:70px}.kit-row button,.decor-row button{min-height:44px}.bbl-results{padding:25px 20px}.bbl-results h2{font-size:25px}.fortune-slip p{font-size:22px}.bbl-footer{flex-direction:column;text-align:center}.story-card{padding:17px 18px}.story-card summary{font-size:20px}.is-playing .play-panel{inset:max(8px,env(safe-area-inset-top)) 8px calc(18px + env(safe-area-inset-bottom));width:calc(100% - 16px);max-height:none;border-radius:18px}.ritual-stage{padding:8px 13px 0}.ritual-top h2{font-size:21px}.ritual-top .icon-button{width:44px;min-height:44px}.step-track{padding:6px 0 10px}.step-track li{flex-direction:column;gap:3px}.step-track small{font-size:10px;min-height:10px}.fong-bubble{min-height:72px;gap:8px;padding:7px 10px 0}.fong-bubble p{font-size:12.1px}.fong-bubble .fong-art{width:45px;flex-basis:45px}.phase-instruction{font-size:12.1px;max-width:290px}.hit-zone{max-height:340px}.beat-stats b{font-size:27px}.beat-stats{gap:25px}.striking-weapon{width:79px;height:85px;right:-31px}.phase-actions button{min-height:44px}.incense-zone{height:210px}.paper-name p{font-size:24px}.tiger-tray{max-width:300px}.tiger-panel .phase-instruction{max-width:260px}.blessing-paper{min-height:210px}.bbl-results .fortune-slip{padding:20px 17px}}
@media(max-height:650px){.is-playing .ritual-top{min-height:44px}.is-playing .ritual-top h2{font-size:18px}.is-playing .step-track{padding-bottom:6px}.is-playing .fong-bubble{min-height:54px}.is-playing .fong-bubble .fong-art{width:36px;flex-basis:36px}.is-playing .fong-bubble p{font-size:12.1px}.is-playing .phase-panel{gap:7px;padding:5px 0}.is-playing .hit-zone{max-height:220px}.is-playing .beat-stats b{font-size:21px}.is-playing .beat-stats small{font-size:10px}.is-playing .incense-zone{height:150px}.is-playing .incense-stick{height:125px}.is-playing .incense-stick{--incense-length:96px}.is-playing .paper-name{padding:14px 17px;width:190px}.is-playing .paper-name p{margin:15px 0;font-size:22px}.is-playing .tiger-tray{height:175px;max-width:260px}.is-playing .blessing-paper{min-height:0;width:130px;padding:12px}.is-playing .blessing-paper>span{font-size:32px}.is-playing .phase-instruction{font-size:10px}.is-playing .phase-panel .quiet-note{font-size:10px;margin:0}.is-playing .hit-feedback{font-size:14px;min-height:18px}.is-playing .qte-call{top:49px}}
@media(max-height:450px) and (min-aspect-ratio:4/3){.is-playing .play-panel{width:min(760px,calc(100% - 28px));inset:6px 14px 12px;max-height:none}.is-playing .ritual-stage{padding:5px 15px 0}.is-playing .ritual-top{min-height:37px}.is-playing .ritual-top .bbl-kicker{display:none}.is-playing .step-track{position:absolute;top:52px;bottom:65px;left:15px;display:flex;flex-direction:column;width:53px;border:0;padding:0;z-index:2}.is-playing .step-track li{flex-direction:row}.is-playing .step-track small{font-size:10px}.is-playing .phase-body{margin-left:57px}.is-playing .fong-bubble{min-height:47px;margin-top:4px}.is-playing .fong-bubble .fong-art{width:31px;flex-basis:31px}.is-playing .phase-panel{padding:3px 0;gap:5px}.is-playing .beat-panel{padding:0 0 18px}.is-playing .beat-stats{position:absolute;left:5px;top:16px;flex-direction:column;align-items:flex-start;gap:10px}.is-playing .beat-stats b{font-size:19px}.is-playing .beat-stats small{font-size:10px}.is-playing .hit-zone{max-height:190px;width:180px;flex:1}.is-playing .beat-panel .phase-instruction{position:absolute;bottom:0;font-size:10px}.is-playing .hit-feedback{position:absolute;right:0;bottom:27px;width:90px;font-size:12px}.is-playing .rhythm-rail{position:absolute;right:4px;top:15px}.is-playing .qte-call{left:auto;right:0;top:42px;transform:none;padding:5px;font-size:10px}.is-playing .incense-panel{flex-direction:row;flex-wrap:wrap;gap:5px}.is-playing .incense-panel>.phase-instruction{flex:1 0 100%;font-size:10px}.is-playing .incense-zone{height:120px;width:180px}.is-playing .incense-stick{height:110px}.is-playing .incense-stick{--incense-length:82px}.is-playing .incense-bowl{height:35px;font-size:18px}.is-playing .incense-panel .phase-actions{max-width:180px;flex-direction:column}.is-playing .incense-panel .quiet-note{flex-basis:100%;text-align:center}.is-playing .name-panel{flex-direction:row;gap:30px}.is-playing .paper-name{width:180px;padding:10px}.is-playing .paper-name p{font-size:20px;margin:11px 0}.is-playing .name-panel>.bbl-button{max-width:170px}.is-playing .tiger-panel{gap:0}.is-playing .tiger-tray{height:145px;width:235px}.is-playing .tiger-panel>.soft-button{position:absolute;right:0;bottom:5px;font-size:10px;min-height:37px;max-width:110px}.is-playing .blessing-panel{flex-direction:row;gap:40px}.is-playing .blessing-panel .phase-instruction{max-width:135px}.is-playing .blessing-paper{width:100px;max-height:95%;padding:7px}.is-playing .blessing-paper>span{font-size:29px}.is-playing .blessing-paper b{font-size:10px;margin-top:3px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.tram{left:12%;translate:0}.spark{display:none}.rhythm-rail i{transform:none}.blessing-paper.is-burning{opacity:.25;transform:none}}
/* The shared page-transition name would otherwise trap the fixed ritual below its scrim. */
main#app{view-transition-name:none}.play-panel{view-transition-name:bbl-stage}
.paper-name p{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.bbl-skip{opacity:0;pointer-events:none}.bbl-skip:focus{opacity:1;pointer-events:auto}.ritual-top h2:focus-visible,.bbl-results h2:focus-visible{outline:none}

.has-incense .incense-bowl{border-color:#ffe2a0;background:linear-gradient(#d4b277,#a57549);box-shadow:inset 0 0 0 3px #f4d49b66,0 0 20px #efcb7f33}

/* A traditional yellow ritual hat and robe dress the shared website logo. */
.fong-intro .fong-logo{position:relative;aspect-ratio:8/9;align-self:center;isolation:isolate}
.fong-logo>img{position:absolute;left:5%;top:13.89%;width:90%;height:auto;user-select:none;pointer-events:none}
.fong-costume{position:absolute;inset:0;pointer-events:none}
.fong-costume svg{overflow:visible}

.lucky-pinwheel-blades{transform-origin:62px 42px;animation:lucky-pinwheel-spin 5s linear infinite}
@keyframes lucky-pinwheel-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.lucky-pinwheel-blades{animation:none}}

.decor-icon svg{display:block;width:100%;height:100%}
.stall-tiger,.stall-aquarium{position:absolute;bottom:32%;width:66px;filter:drop-shadow(0 4px 2px #17323155)}
.stall-tiger{left:14px}.stall-aquarium{right:13px;width:76px}
.stall-tiger svg,.stall-aquarium svg{display:block;width:100%;height:auto}

/* Staggered, fine wisps drift upward from each lit incense tip. */
.smoke-wisp{fill:none;stroke:#f3edd6;stroke-width:2.2;stroke-linecap:round;opacity:0;transform-origin:23px 80px;filter:blur(.3px)}
.is-lit .smoke-wisp{animation:incense-wisp-rise 3.8s ease-in-out infinite;animation-delay:var(--smoke-delay,0s)}
.incense-stick:nth-child(2){--smoke-delay:-.8s}.incense-stick:nth-child(3){--smoke-delay:-1.5s}
.is-lit .smoke-wisp:nth-child(2){stroke-width:1.8;animation-duration:4.3s;animation-delay:calc(var(--smoke-delay,0s) - 1.4s);filter:blur(.5px)}
.is-lit .smoke-wisp:nth-child(3){stroke-width:1.4;animation-duration:4.8s;animation-delay:calc(var(--smoke-delay,0s) - 2.8s);filter:blur(.7px)}
@keyframes incense-wisp-rise{0%{opacity:0;transform:translate(0,12px) scale(.6,.65)}20%{opacity:.34;transform:translate(-3px,3px) scale(.8,.9)}55%{opacity:.28;transform:translate(6px,-9px) scale(1.05,1.12)}100%{opacity:0;transform:translate(-7px,-26px) scale(1.35,1.35)}}
@media(prefers-reduced-motion:reduce){.is-lit .smoke-wisp{animation:none;opacity:.24;transform:none}.is-lit .smoke-wisp:nth-child(n+2){opacity:0}}

/* Gesture hints stay outside the paper target; the trail never captures input. */
.gesture-tools{display:flex;justify-content:center;gap:6px;flex:0 0 auto;width:100%;max-width:360px}
.gesture-tools .gesture-hint{cursor:default;user-select:none;touch-action:manipulation;flex:1;min-width:0;min-height:44px;padding:6px 8px;border:1px solid #a8bc9766;border-radius:11px;background:#1b3533;color:#e4e3c3;font-size:12.1px;line-height:1.2;transition:transform .15s,background .2s,border-color .2s}
.gesture-tools .gesture-hint span{display:inline-block;margin-right:4px;font-size:19px;vertical-align:middle;color:var(--gold)}

.gesture-tools .gesture-hint.is-prompted{border-color:var(--gold);background:#705c35;box-shadow:0 0 12px #edc77e33;color:#fff0cc}
.gesture-trail{position:absolute;inset:0;width:100%;height:100%;overflow:hidden;pointer-events:none;opacity:.55}
.gesture-trail path{fill:none;stroke:#f6d88f;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.gesture-charge{position:absolute;right:-12px;top:5px;display:grid;place-items:center;width:36px;height:36px;opacity:0;border-radius:50%;background:#1b3533e8;color:var(--gold);font-size:19px;pointer-events:none}
.gesture-charge:before{content:'';position:absolute;inset:0;border-radius:50%;background:conic-gradient(#f5cf80 var(--charge,0%),#d9e5bb33 0);padding:3px;-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask-composite:exclude}
.is-gesturing .gesture-charge{opacity:1}
.beat-panel .phase-instruction{max-width:420px;text-align:center;line-height:1.5}
@media(max-height:650px){.is-playing .beat-panel{gap:4px}.is-playing .beat-panel .hit-zone{min-height:96px}.gesture-tools{gap:5px}.gesture-tools .gesture-hint{padding:5px;font-size:10px}}
@media(max-height:450px) and (min-aspect-ratio:4/3){.is-playing .beat-panel{padding-bottom:48px}.is-playing .beat-panel .hit-zone{min-height:80px;max-height:160px}.is-playing .gesture-tools{position:absolute;bottom:0;left:50%;translate:-50% 0;width:280px;max-width:100%}.is-playing .beat-panel .phase-instruction{bottom:50px;right:0;max-width:130px}.is-playing .hit-feedback{bottom:100px}.is-playing .qte-call{max-width:180px;white-space:normal}}
@media(prefers-reduced-motion:reduce){.gesture-trail{display:none}.gesture-tools .gesture-hint{transition:none}}

.kit-shortcuts{display:flex;gap:8px;margin:-4px 0 17px}
.kit-shortcuts button{display:flex;align-items:center;justify-content:space-between;gap:7px;flex:1;min-width:0;min-height:44px;padding:9px 11px;border:1px solid #c5c99a66;border-radius:10px;background:#203b35;color:#f0ddb0;font-size:12.1px;line-height:1.5;transition:background .2s,transform .15s}
.kit-shortcuts button span{flex-shrink:0;color:var(--gold);font-size:17px}
.kit-shortcuts button:hover{background:#3b5543;border-color:var(--gold)}.kit-shortcuts button:active{transform:scale(.97)}
.stall-tabs{scroll-margin-top:16px}
.stall-three-stars{position:absolute;bottom:31%;left:50%;translate:-50% 0;width:90px;filter:drop-shadow(0 4px 2px #17323155)}
.stall-three-stars svg{display:block;width:100%;height:auto}

/* Damage accumulates throughout the round; scattering a worry never repairs it. */
.paper-doll{filter:drop-shadow(2px 7px 0 #172d3255) brightness(calc(1 - var(--paper-wear,0)*.06))}
.paper-deep-crease{opacity:var(--paper-tear,0)}
.paper-flap{opacity:var(--edge-loss,0)}
.paper-edge-loss,.paper-punch{transform-box:fill-box;transform-origin:center;transform:scale(var(--edge-loss,0))}
.paper-punch{transform:scale(var(--paper-punch,0))}
.paper-condition{padding-left:8px;border-left:1px solid #c6d2ac55;color:#ead5a1;font-size:10px}

.decor-icon{flex-basis:44px;width:44px;height:44px}

/* Crying is brief hit feedback; calm faces return between strikes. */
.paper-doll.is-crying{--cry-display:inline;--neutral-display:none}
.paper-cry-face .paper-teardrop{animation:paper-tear-fall .65s ease-in infinite}
.paper-cry-face .paper-teardrop:last-child{animation-delay:-.3s}
@keyframes paper-tear-fall{0%,15%{opacity:1;transform:translateY(0)}100%{opacity:0;transform:translateY(8px)}}

/* A flame meets the incense tip; blowing leaves a glowing ember and smoke. */
.incense-stick i{position:relative}
.incense-stick.is-lit i{background:linear-gradient(#d3c6a3 0 2%,#df7b42 2% 5%,#a17342 5% 77%,#b84f3e 78%);filter:drop-shadow(0 -2px 5px #efac5355)}
.incense-stick.is-lit i:before{content:'';position:absolute;top:-1px;left:50%;width:6px;height:5px;translate:-50% 0;border-radius:50%;background:#ffc06d;box-shadow:0 0 5px #f5a34d,0 0 13px #eb8a4255}
.incense-stick.is-lit:before{content:'';position:absolute;left:50%;bottom:calc(var(--incense-length,124px) + 1px);width:27px;height:32px;translate:-50% 0;background:radial-gradient(ellipse,#edb46d66,transparent 70%);pointer-events:none}
.incense-stick.is-lit:after{top:auto;bottom:calc(var(--incense-length,124px) + 7px);left:50%;width:11px;height:22px;translate:-50% 0;border-radius:65% 35% 48% 52% / 78% 72% 28% 22%;background:radial-gradient(ellipse at 50% 78%,#fff5bd 0 16%,#ffdc87 34%,#efa04e 68%,#df7d4300 100%);filter:drop-shadow(0 0 4px #ffc66d88);transform-origin:center bottom;animation:incense-ignite .3s ease-out,incense-flutter .55s .3s ease-in-out infinite alternate}
.incense-panel.is-blown .incense-stick.is-lit:before{opacity:.3}
.incense-panel.is-blown .incense-stick.is-lit i:before{background:#e98e50;box-shadow:0 0 4px #eb8a4277}
@keyframes incense-ignite{0%{opacity:.2;transform:scale(.4,.3)}65%{opacity:1;transform:scale(1.15,1.12)}100%{transform:scale(1)}}
@keyframes incense-flutter{from{transform:rotate(-5deg) scale(.94,1)}to{transform:rotate(6deg) scale(1.04,.88)}}

.gesture-controls{display:flex;flex-direction:column;align-items:center;gap:5px;flex:0 0 auto;width:100%;max-width:360px}
.gesture-tools{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:5px;max-width:none}
.gesture-tools .gesture-hint{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:3px;min-height:50px;padding:5px 2px;font-size:10px}
.gesture-tools .gesture-hint span{display:block;margin:0;font-size:18px;line-height:1}
@media(max-height:450px) and (min-aspect-ratio:4/3){
 .is-playing .beat-panel{--control-space:48px;padding-bottom:var(--control-space)}
 .is-playing .beat-panel:has(.gesture-tools:not([hidden])){--control-space:104px}
 .is-playing .gesture-controls{position:absolute;bottom:0;left:50%;translate:-50% 0;width:330px;max-width:100%}
 .is-playing .gesture-tools{position:static;translate:none;width:100%;max-width:none}
 .is-playing .beat-panel .phase-instruction{bottom:calc(var(--control-space) + 2px)}
 .is-playing .hit-feedback{bottom:calc(var(--control-space) + 50px)}
}
@media(prefers-reduced-motion:reduce){.paper-teardrop,.incense-stick.is-lit:after{animation:none!important}.paper-cry-face .paper-teardrop{opacity:1;transform:none}}
.paper-head{transform-origin:70px 70px}.paper-arm-left{transform-origin:49px 74px}.paper-arm-right{transform-origin:89px 74px}.paper-leg-left{transform-origin:53px 137px}.paper-leg-right{transform-origin:83px 137px}
.paper-cry-mouth{transform-box:fill-box;transform-origin:center;transform:scaleY(calc(1 + var(--hit-strength,.2)*.45))}
.paper-cry-face .paper-teardrop{animation-duration:calc(.7s - var(--hit-strength,.2)*.25s)}
.paper-bit{position:absolute;left:50%;top:45%;width:10px;height:13px;background:#eddbac;clip-path:polygon(0 10%,70% 0,100% 40%,60% 65%,85% 100%,10% 85%);animation:paper-bit-fly .75s ease-out forwards}
@keyframes paper-bit-fly{to{transform:translate(var(--dx),var(--dy)) rotate(var(--turn));opacity:0}}
.impact-word{position:absolute;left:50%;top:44%;translate:-50% 0;padding:5px 12px;border:2px solid #f4dc9d;border-radius:12px;background:#a25a49;color:#fff0c3;font:500 22px var(--display);animation:impact-word-pop .7s ease-out forwards;white-space:nowrap}
@keyframes impact-word-pop{0%{scale:.4;opacity:0}25%{scale:1.15;opacity:1}65%{scale:1;opacity:1}100%{translate:-50% -25px;opacity:0}}
.tram{width:73px;height:92px;border:0;background:none;top:37%;opacity:.42;filter:drop-shadow(0 4px 0 #18392d66)}.tram svg{display:block;width:100%;height:100%;animation:tram-wobble .6s ease-in-out infinite alternate}
@keyframes tram-wobble{to{transform:translateY(2px) rotate(2deg)}}
/* Text always has its own opaque surface above the moving background. */
.phase-panel .phase-instruction{position:relative;z-index:6;margin:0;padding:6px 9px;border:1px solid #b9c49d66;border-radius:8px;background:#1a3334;color:#fff0cf;font-size:12.1px;line-height:1.5;text-shadow:none;max-width:100%}
.hit-feedback{position:relative;z-index:6;background:#193234;border:1px solid #b7bd8b66;border-radius:9px;padding:5px 10px;max-width:100%;color:#ffe1a0;font-size:14px;line-height:1.3;min-height:29px;text-align:center}
.qte-call{z-index:8;pointer-events:none;background:#a94d3d;border:2px solid #f5dba0;color:#fff5d8;box-shadow:0 3px 0 #533d2e;font-size:12px;line-height:1.3}
.is-fed .pork-piece{scale:1}.is-ready .tiger-mouth{transform:scale(1.85,1.65)}
.gesture-controls{gap:0}.gesture-tools{display:grid}
@media(max-height:650px){.is-playing .phase-panel .phase-instruction{font-size:10px;padding:4px 6px}.is-playing .hit-feedback{font-size:12px;min-height:25px;padding:4px 8px}}
@media(max-height:450px) and (min-aspect-ratio:4/3){.is-playing .beat-panel,.is-playing .beat-panel:has(.gesture-tools:not([hidden])){--control-space:56px}.is-playing .beat-panel .phase-instruction{position:absolute;font-size:10px;max-width:160px;right:0}.is-playing .hit-feedback{position:absolute;max-width:155px;width:auto;right:0;font-size:12px}.is-playing .qte-call{font-size:12.1px;max-width:170px}}
@media(prefers-reduced-motion:reduce){.paper-bit,.impact-word{display:none}.tram svg{animation:none}}

/* A dedicated, unobscured shop window keeps every purchase visible. */
.stall-showcase{margin:0 0 18px;border:1px solid #b6bc9166;border-radius:16px;overflow:hidden;background:#203b39;box-shadow:0 8px 18px #10292940}
.stall-showcase figcaption{padding:12px 13px 9px;color:var(--gold);font-size:12px;font-weight:600}
.stall-diorama{position:relative;aspect-ratio:.85;isolation:isolate;overflow:hidden;background:radial-gradient(ellipse at 55% 24%,#e5bd6c22,transparent 66%),repeating-linear-gradient(0deg,transparent 0 38px,#d2d4aa0a 39px 40px),linear-gradient(110deg,#395450,#233d3b);border-block:1px solid #c3bd8d33}
.stall-diorama::before{content:'';position:absolute;inset:0;border-inline:10px solid #19333088;box-shadow:inset 0 0 22px #102d2c66;pointer-events:none}
.stall-diorama::after{content:'';position:absolute;inset:90% 0 0;background:linear-gradient(#a4825d,#785e46);z-index:-1;box-shadow:0 -4px 0 #d0aa73}
.stall-shelf{position:absolute;left:5%;width:90%;height:9px;border-radius:3px;background:linear-gradient(#d9b77b 0 35%,#98724b 36%);box-shadow:0 7px 8px #10282377}
.shelf-upper{top:40%}.shelf-middle{top:66%}.shelf-lower{top:91%}
.stall-furnishings{list-style:none;margin:0;padding:0;position:absolute;inset:0}
.stall-piece{position:absolute;filter:drop-shadow(0 4px 2px #10292980);transform-origin:50% 90%}
.furnishing-art,.furnishing-art svg{display:block;width:100%;height:auto}
.furnishing-art{transform-origin:50% 90%}
.furnishing-level{position:absolute;bottom:0;right:0;min-width:17px;height:17px;display:grid;place-items:center;border:1px solid #eed7a4;border-radius:50%;background:#304d44;color:#ffe5b2;font-size:10px;line-height:1}
.piece-neon{left:8%;top:3%;width:22%}.piece-neon .furnishing-art{filter:drop-shadow(0 0 6px #eead7a99)}
.piece-three-stars{left:34%;bottom:60%;width:32%}
.piece-incense{left:8%;bottom:34%;width:22%}
.piece-cat{left:37%;bottom:34%;width:26%}
.piece-radio{left:7%;bottom:9%;width:28%}
.piece-tiger{left:36%;bottom:9%;width:28%}
.piece-aquarium{right:5%;bottom:9%;width:28%}
.stall-empty{position:absolute;top:22%;left:15%;right:15%;margin:0;padding:12px;border:1px dashed #d3c49388;border-radius:8px;background:#253d3be8;color:#dedac0;font-size:12.1px;text-align:center;transform:rotate(-3deg)}
.stall-display-note{margin:0;padding:9px 12px;font-size:12.1px;line-height:1.7;color:#cbd5b9}
.piece-radio::after{content:'♪';position:absolute;top:-12%;right:0;color:var(--gold);font-size:19px;animation:stall-radio-note 2.6s ease-out infinite;pointer-events:none}
.piece-tiger::after{content:'z Z';position:absolute;right:1%;top:-5%;font-size:12px;letter-spacing:2px;color:#ecdebb;animation:stall-radio-note 3.6s ease-out infinite;pointer-events:none}
.piece-incense .furnishing-art{animation:stall-incense-glow 3s ease-in-out infinite}
.piece-cat .decor-cat-paw{transform-origin:30px 78px;animation:stall-cat-hello 3.8s ease-in-out infinite}
.piece-aquarium .decor-fish{animation:stall-fish-bob 4s ease-in-out infinite}.piece-aquarium .decor-bubbles{animation:stall-bubbles-rise 3.5s ease-in-out infinite}.piece-tiger .decor-tiger-belly{transform-origin:65px 100px;animation:stall-tiger-breathe 3.6s ease-in-out infinite}
.piece-three-stars .furnishing-art{animation:stall-stars-nod 6s ease-in-out infinite}
@keyframes stall-radio-note{0%{opacity:0;translate:0 5px;rotate:-12deg}25%{opacity:1}100%{opacity:0;translate:6px -18px;rotate:14deg}}
@keyframes stall-cat-hello{0%,65%,100%{transform:rotate(0)}72%{transform:rotate(-6deg)}80%{transform:rotate(5deg)}88%{transform:rotate(-4deg)}}
@keyframes stall-fish-bob{0%,100%{transform:translate(0,0) rotate(0)}50%{transform:translate(-5px,-2px) rotate(-2deg)}}
@keyframes stall-bubbles-rise{0%{opacity:.1;transform:translateY(5px)}45%{opacity:.9}100%{opacity:0;transform:translateY(-7px)}}
@keyframes stall-tiger-breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.06,1.12)}}
@keyframes stall-stars-nod{0%,75%,100%{transform:rotate(0)}83%{transform:rotate(-2deg)}91%{transform:rotate(2deg)}}
@keyframes stall-incense-glow{0%,100%{filter:drop-shadow(0 -2px 2px #edba6233)}50%{filter:drop-shadow(0 -3px 4px #edba6266)}}
/* The ritual backdrop uses the same illustrations as the stall display. */
.stall-cat,.stall-radio,.stall-incense{position:absolute;padding:0;border:0;background:none;border-radius:0;width:58px;filter:drop-shadow(0 4px 2px #17323155)}
.stall-cat{right:15px;bottom:23%;transform:rotate(6deg)}.stall-radio{left:14px;bottom:22%;width:64px}.stall-incense{left:16px;bottom:42%;width:52px}
.stall-cat svg,.stall-radio svg,.stall-incense svg{display:block;width:100%;height:auto}
@media(min-width:701px){.stall-showcase figcaption{font-size:12.1px}.stall-display-note{font-size:10px}}
@media(prefers-reduced-motion:reduce){.stall-piece::after,.stall-piece .furnishing-art,.stall-piece svg *{animation:none}}

.piece-money-tree{right:5%;bottom:60%;width:27%}.piece-amethyst{right:5%;bottom:34%;width:27%}
.piece-money-tree .decor-tree-crown{transform-origin:57px 70px;animation:stall-stars-nod 5s ease-in-out infinite}
.piece-amethyst .decor-crystal-sparkle{animation:stall-crystal-shimmer 2.8s ease-in-out infinite}
@keyframes stall-crystal-shimmer{0%,100%{opacity:.35}50%{opacity:1;filter:drop-shadow(0 0 3px #fff2d2)}}
.stall-money-tree,.stall-amethyst{position:absolute;width:55px;filter:drop-shadow(0 4px 2px #17323155)}.stall-money-tree{left:12px;bottom:57%}.stall-amethyst{right:15px;bottom:50%}.stall-money-tree svg,.stall-amethyst svg{display:block;width:100%;height:auto}
@media(prefers-reduced-motion:reduce){.piece-money-tree .decor-tree-crown,.piece-amethyst .decor-crystal-sparkle{animation:none}}

/* Paper keeps its silhouette while staggered, fibrous tears and folded layers wear in. */
.paper-head-pose{transform-origin:70px 68px;transform:translateY(var(--head-drop,0px)) rotate(var(--head-slump,0deg))}
.paper-loose-corner{transform-origin:85px 124px;filter:drop-shadow(1px 2px 1px #3e342944)}
.paper-doll.is-crying .paper-loose-corner{animation:paper-corner-flutter .38s ease-in-out infinite alternate}
@keyframes paper-corner-flutter{from{transform:rotate(-5deg)}to{transform:rotate(12deg)}}
#sound[aria-pressed=false]{background:#684b46;color:#ffe0ca;border-color:#d7a68b}

/* Thirty-day furnishings: wear is visible, while controls remain crisp. */
.decor-row{flex-wrap:wrap;align-items:flex-start}.decor-row>.decor-icon{margin-top:5px}.decor-row>button{align-self:center}
.decor-row>.decor-controls{flex:0 0 100%;display:flex;justify-content:flex-end;gap:8px;padding-left:54px}
.decor-controls button{min-height:44px;flex:1}.decor-controls [data-discard]{color:#edb6a5;background:#3e4540;border-color:#ad827866}
.decor-row .decor-health-label{display:block;font-size:10px;color:#ead9ac;margin-top:7px}
.decor-durability{display:block;appearance:none;-webkit-appearance:none;width:100%;height:7px;margin-top:4px;background:#122d2d;border:1px solid #8ea88d66;border-radius:8px;overflow:hidden}
.decor-durability::-webkit-meter-bar{background:#122d2d;border:0;border-radius:8px}.decor-durability::-webkit-meter-optimum-value{background:#a8c58e;border-radius:8px}.decor-durability::-webkit-meter-suboptimum-value{background:#e6bd73;border-radius:8px}.decor-durability::-webkit-meter-even-less-good-value{background:#e69982;border-radius:8px}.decor-durability::-moz-meter-bar{background:#a8c58e;border-radius:8px}
.decor-care-note{font-size:12.1px;line-height:1.8;padding:11px 12px;border:1px dashed #c5bd8b66;border-radius:10px;color:#d5d4b4;margin:10px 0 14px}
.furnishing-art{position:relative}.furnishing-art>svg{filter:sepia(calc(var(--decor-wear,0)*.55)) saturate(calc(1 - var(--decor-wear,0)*.45)) brightness(calc(1 - var(--decor-wear,0)*.12))}
.furnishing-art::after{content:'';position:absolute;inset:12% 10% 8%;pointer-events:none;opacity:calc(var(--decor-wear,0)*.9);background:radial-gradient(ellipse at 20% 25%,#d8d0ab 0 2px,transparent 3px),radial-gradient(ellipse at 70% 65%,#56645288 0 2px,transparent 3px),linear-gradient(31deg,transparent 47%,#e8d6aa88 48% 49%,#71614b77 50%,transparent 51%);border-radius:10px}
.is-weathered .furnishing-art::after{box-shadow:inset 0 -4px 5px #4e4b3438}.is-fragile .furnishing-level{background:#75493c;border-color:#e7a082}.is-fragile .furnishing-art::after{border:1px dashed #c5b59677}
.discard-dialog{width:min(360px,calc(100% - 32px));border:1px solid #c6bb8d;border-radius:19px;padding:23px;background:#243e3b;color:var(--cream);box-shadow:0 20px 60px #071d27aa}.discard-dialog::backdrop{background:#10272cd9;backdrop-filter:blur(5px)}.discard-dialog h2{font-size:24px;line-height:1.25}.discard-dialog p{font-size:12px;line-height:1.8}.discard-dialog>div{display:flex;gap:10px;margin-top:20px}.discard-dialog button{flex:1}

/* Master Yip gently bobs, nods, and gives the yellow hat a little wobble. */
.fong-logo{position:relative;display:block;aspect-ratio:8/9;isolation:isolate;transform-origin:50% 90%;animation:master-yip-greeting 5s ease-in-out infinite}
.master-avatar{width:100%}.master-avatar .fong-costume{display:block}.fong-mage-hat{transform-origin:80px 64px;animation:master-yip-hat 5s ease-in-out infinite}.fong-mage-robe{transform-origin:80px 166px;animation:master-yip-robe 5s ease-in-out infinite}
@keyframes master-yip-greeting{0%,55%,100%{transform:translateY(0) rotate(0)}15%{transform:translateY(-3px) rotate(-3deg)}30%{transform:translateY(0) rotate(2deg)}42%{transform:translateY(-1px) rotate(-1deg)}}
@keyframes master-yip-hat{0%,55%,100%{transform:rotate(0)}18%{transform:rotate(5deg)}32%{transform:rotate(-4deg)}44%{transform:rotate(2deg)}}
@keyframes master-yip-robe{0%,55%,100%{transform:scaleX(1)}16%{transform:scaleX(1.04)}32%{transform:scaleX(.98)}}

/* Harmless little ghosts drift past, peek out, and surprise themselves. */
.ghost-parade{position:absolute;inset:0;pointer-events:none;visibility:hidden}.little-ghost{position:absolute;display:block;width:66px;opacity:0;filter:drop-shadow(0 5px 3px #132f3744);animation-play-state:paused!important}.little-ghost svg{display:block;width:100%;height:auto}
.ghost-drift{top:34%;left:-80px;animation:ghost-drift 19s linear infinite}.ghost-peek{top:49%;right:1%;width:53px;animation:ghost-peek 14s ease-in-out infinite;animation-delay:-5s}.ghost-oops{top:24%;left:24%;width:45px;animation:ghost-oops 23s ease-in-out infinite;animation-delay:-11s}
.play-panel[data-phase=beat] .ghost-parade{visibility:visible}.play-panel[data-phase=beat] .little-ghost{animation-play-state:running!important}
@keyframes ghost-drift{0%,8%{opacity:0;transform:translate(0,0) rotate(-8deg)}12%{opacity:.75}30%{transform:translate(170px,-18px) rotate(7deg)}55%{transform:translate(340px,9px) rotate(-6deg)}78%{opacity:.75;transform:translate(550px,-12px) rotate(5deg)}88%,100%{opacity:0;transform:translate(780px,0) rotate(-4deg)}}
@keyframes ghost-peek{0%,53%,100%{opacity:0;transform:translate(30px,20px) scale(.35)}59%{opacity:.85;transform:translate(-9px,-3px) scale(1.13) rotate(-12deg)}64%,73%{opacity:.75;transform:translate(0,0) scale(1) rotate(6deg)}80%{opacity:.6;transform:translate(3px,9px) scale(.88) rotate(-8deg)}88%{opacity:0;transform:translate(30px,30px) scale(.4)}}
@keyframes ghost-oops{0%,68%,100%{opacity:0;transform:translateY(20px) scale(.2)}72%{opacity:.9;transform:translateY(-7px) scale(1.2) rotate(12deg)}77%{opacity:.75;transform:translateY(0) scale(.96) rotate(-8deg)}84%{opacity:.65;transform:translate(12px,-10px) scale(1) rotate(6deg)}91%{opacity:0;transform:translate(25px,-45px) scale(.6)}}
@media(max-width:700px){.bbl-brand{font-size:clamp(13px,3.8vw,18px)}}
@media(prefers-reduced-motion:reduce){.fong-logo,.fong-mage-hat,.fong-mage-robe,.little-ghost{animation:none!important}.play-panel[data-phase=beat] .ghost-drift{left:10%;opacity:.45}.ghost-peek,.ghost-oops{display:none}}

.furnishing-condition{position:absolute;left:8%;bottom:2px;width:63%;height:4px;border:1px solid #d3d2ac88;border-radius:5px;overflow:hidden;background:#203b39}
.furnishing-condition i{display:block;width:100%;height:100%;transform-origin:left;transform:scaleX(var(--decor-health,1));background:#b7cf96}.is-weathered .furnishing-condition i{background:#edc77e}.is-fragile .furnishing-condition i{background:#ef9d88}

.bare-hands-button{display:block;width:100%;min-height:36px;margin:-8px 0 6px;color:#d2c797}.bare-hands-button:disabled{opacity:.5}

/* Newly collected curios live on extra shelves, leaving the original diorama intact. */
.stall-extension{list-style:none;margin:0;padding:12px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px 12px;background:linear-gradient(110deg,#395450,#233d3b);border-bottom:1px solid #c3bd8d33}
.stall-extension[hidden]{display:none}
.stall-extension .stall-piece{position:relative;inset:auto;width:100%;min-width:0;padding:0 4px 8px;border-bottom:7px solid #a68152;border-radius:3px;box-shadow:0 3px 0 #70573e;align-self:end}
.stall-extension .stall-piece::after{content:attr(data-label);display:block;font-size:10px;line-height:1.4;text-align:center;color:#f1dfb5;min-height:2.8em;overflow-wrap:anywhere}
.stall-extension .furnishing-level{right:1px;top:1px;bottom:auto}
.kit-row>div,.decor-row>div{min-width:0}.kit-row b,.decor-row b{overflow-wrap:anywhere}

/* The stall's own logo keeps the shared face, with its scar on the right. */
.bbl-brand>.header-logo{position:relative;display:block;flex:0 0 49px;width:49px;height:47px;background:none;border:0;transform:none;border-radius:0}
.header-logo>img{display:block;width:48px;height:48px;transform:scaleX(-1)}
.header-horn{position:absolute;inset:0;width:48px;height:48px;overflow:visible;pointer-events:none}
.bbl-brand .fortune-seal{position:absolute;right:-3px;bottom:0;display:grid;place-items:center;width:18px;height:20px;border:1px solid #e5ad74;border-radius:3px;background:#ba5749;color:#ffe1a0;font:700 12px/1 system-ui;transform:rotate(168deg)}
.fong-logo>img{transform:scaleX(-1)}
.intro-note>.intro-slipper{display:block;width:60px;height:60px;margin-left:auto;line-height:0}
.intro-slipper svg{display:block;width:100%;height:100%;overflow:visible}
.slipper-grin{transform-origin:45px 72px;animation:slipper-giggle 3.4s ease-in-out infinite}
.slipper-sweat{animation:slipper-sweat 3.4s ease-in-out infinite}
@keyframes slipper-giggle{0%,60%,100%{transform:rotate(-5deg)}68%,84%{transform:rotate(8deg) translateY(-3px)}76%,92%{transform:rotate(-9deg)}}
@keyframes slipper-sweat{0%,60%,100%{opacity:.5;translate:0 0}85%{opacity:1;translate:1px 5px}}
@media(max-width:700px){.intro-note>.intro-slipper{width:46px;height:46px}}
@media(prefers-reduced-motion:reduce){.slipper-grin,.slipper-sweat{animation:none}}

@media(max-width:700px){.ritual-top h2{font-size:17px;line-height:1.2;white-space:normal;text-overflow:clip}}

.purchase-shortfall{display:block;color:#f0c6a2!important;font-size:12.1px;line-height:1.5;margin-top:4px}

/* iOS zooms focused text fields below 16px; retain user-controlled page zoom. */
@media(pointer:coarse){#worry-input{font-size:16px}}

.worry-select{display:block;width:100%;max-width:100%;min-width:0;min-height:48px;margin:0 0 16px;padding:11px 36px 11px 12px;border:1px solid #c7cba788;border-radius:12px;background-color:#173b36;color:#fff0ce;font:500 14px/1.5 'DM Sans',system-ui,sans-serif;touch-action:manipulation;overflow:hidden;text-overflow:ellipsis}.worry-select optgroup{font-weight:700;color:#f7d38d;background:#173b36}.worry-select option{font-weight:400;color:#fff0ce;background:#173b36}@media(pointer:coarse){.worry-select{font-size:16px}}
