.game-panel.pn{width:min(880px,calc(100vw - 24px));max-height:calc(100vh - 24px);max-height:calc(100dvh - 24px);display:flex;flex-direction:column;overflow:hidden;padding:0}.game-panel.shop-panel,.game-panel.book-panel{height:min(800px,calc(100vh - 24px));height:min(800px,calc(100dvh - 24px))}.pn-head{position:relative;display:flex;align-items:center;gap:14px;padding:16px 18px 10px 26px;flex:none}.pn-title{flex:1;min-width:0}.game-panel .pn-title h2{margin:0;text-align:left;font-size:30px;line-height:1.1}.pn-sub{margin:3px 0 0;color:var(--g-ink-soft);font-size:15px;font-weight:700}.pn-balance{display:flex;align-items:center;gap:8px;min-height:48px;padding:6px 18px 6px 8px;border-radius:999px;background:#fff;box-shadow:0 0 0 2px #efe4c8 inset,0 3px #efe4c8;font-size:22px;font-weight:800;flex:none}.pn-balance .clover{width:32px;height:32px;margin:0;vertical-align:0}.pn-balance.spent .clover{animation:pn-coin .5s ease-out}.pn-close{flex:none;width:var(--g-target);height:var(--g-target);border-radius:50%;border:2px solid var(--g-line);background:var(--g-paper-2);color:var(--g-ink);display:grid;place-items:center;cursor:pointer}.pn-close svg{width:24px;height:24px}.pn-close:active,.pn-tab:active,.robe-item:active{transform:translateY(2px)}.pn-tabs{display:flex;gap:8px;padding:2px 20px 12px;flex:none}.pn-tab{flex:1;min-height:var(--g-target);padding:0 12px;border-radius:18px;border:2px solid var(--g-line);background:var(--g-paper-2);color:var(--g-ink-soft);font:inherit;font-size:18px;font-weight:800;display:flex;align-items:center;justify-content:center;gap:8px;cursor:pointer}.pn-tab[aria-selected=true]{background:#fff;color:var(--g-green-dark);border-color:var(--g-green);box-shadow:0 4px 0 var(--g-green)}.pn-tab-icon{display:grid}.pn-tab-icon svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.pn-body{position:relative;flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:6px 20px 22px}.clover{display:inline-block;width:1.1em;height:1.1em;margin-right:3px;vertical-align:-.18em}.clover svg,.pn-check svg{display:block;width:100%;height:100%}.pn-check{display:inline-block;width:1.1em;height:1.1em;vertical-align:-.2em}.pn-note{margin:10px 0;padding:10px 16px;border-radius:16px;background:#fff4c9;color:#6b5320;font-weight:700;font-size:18px}.pn-note.good{background:#e3f3e8;color:var(--g-pine)}.pn-note .pn-check{margin-right:6px}.pn-actions{display:flex;justify-content:center;flex-wrap:wrap;gap:14px;margin-top:8px}.item-art{display:grid;place-items:center}.item-art svg{width:76px;height:76px}.shop-panel:before{content:"";position:absolute;inset:0 0 auto;height:30px;background:repeating-linear-gradient(90deg,#79ad8c 0 32px,#fbf6e6 32px 64px);-webkit-mask:radial-gradient(16px 12px at 16px 18px,#000 97%,transparent) 0 0 / 32px 30px repeat-x,linear-gradient(#000,#000) 0 0 / 100% 18px no-repeat;mask:radial-gradient(16px 12px at 16px 18px,#000 97%,transparent) 0 0 / 32px 30px repeat-x,linear-gradient(#000,#000) 0 0 / 100% 18px no-repeat}.shop-panel .pn-head{padding-top:38px}.shop-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(178px,1fr));gap:14px;padding-top:4px}.shop-item{position:relative;display:flex;flex-direction:column;align-items:center;gap:2px;padding:12px;border-radius:22px;background:#fff;border:2px solid #efe4c8;box-shadow:0 4px #efe4c8;text-align:center}.shop-item.special{background:#fffcee;border-color:#f1d88c;box-shadow:0 4px #f1d88c}.shop-item .item-art{width:96px;height:96px;border-radius:50%;background:radial-gradient(circle at 50% 42%,#fffaf0 0 38%,#f6ecd4 72%)}.shop-item[data-kind=shirt] .item-art,.shop-item[data-kind=hat] .item-art{background:radial-gradient(circle at 50% 42%,#f7fbff 0 38%,#e5eff4 72%)}.game-panel .shop-name{margin:6px 0 0;font-size:17px;font-weight:800;line-height:1.2}.shop-price{margin:0 0 8px;font-size:20px;font-weight:800}.shop-price .clover{width:22px;height:22px;vertical-align:-4px}.shop-was{margin-left:6px;color:var(--g-ink-soft);font-size:15px;font-weight:600}.game-panel .btn.shop-buy{width:100%;min-width:0;margin-top:auto;padding:0 10px}.game-panel .btn.shop-need:disabled{opacity:1;background:#faf5e8;color:var(--g-ink-soft);border:2px dashed #d9ccaa;font-size:16px}.shop-owned{margin:auto 0 0;min-height:var(--g-target);width:100%;display:flex;align-items:center;justify-content:center;gap:6px;border-radius:18px;background:#e3f3e8;color:var(--g-pine);font-weight:800;font-size:18px}.shop-ribbon{position:absolute;top:12px;left:-7px;padding:4px 12px 4px 11px;border-radius:4px 12px 12px 4px;background:var(--g-gold);color:#5b3d00;font-size:13px;font-weight:800;letter-spacing:.3px;box-shadow:0 2px #c99a1f}.shop-ribbon:before{content:"";position:absolute;left:0;bottom:-6px;border-top:6px solid #b0831a;border-left:7px solid transparent}.shop-sheet{min-height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:4px;padding:18px 10px 12px;animation:g-pop .22s ease-out}.shop-sheet .item-art{width:168px;height:168px;border-radius:50%;background:radial-gradient(circle at 50% 42%,#fffaf0 0 40%,#f6ecd4 72%)}.shop-sheet .item-art svg{width:132px;height:132px}.shop-thanks .item-art{background:radial-gradient(circle at 50% 42%,#f5fbef 0 40%,#dcefd2 72%)}.shop-question{margin:14px 0 0;font-size:27px;font-weight:800;line-height:1.25}.shop-question .clover{width:26px;height:26px;vertical-align:-3px;margin:0 3px 0 2px}.shop-after{margin:2px 0 12px;color:var(--g-ink-soft);font-size:19px;font-weight:700}.till{min-height:100%;display:grid;grid-template-columns:minmax(200px,300px) 1fr;gap:26px;align-items:center;align-content:center;padding:8px 6px 20px}.till-art{padding:18px 14px 10px;border-radius:26px;background:radial-gradient(circle at 50% 38%,#fffaf0 0 35%,#f3e8cc 80%)}.till-art svg{display:block;width:100%;height:auto}.game-panel .till-text h3{margin:0 0 6px;font-family:Georgia,serif;font-size:26px}.till-text p{margin:0 0 10px;font-size:19px;line-height:1.35}.till-text .till-pay .clover{width:22px;height:22px;vertical-align:-4px}.till-coins{display:flex;gap:8px;margin:2px 0 10px}.till-dot{width:32px;height:32px;border-radius:50%;border:2px dashed #cdbf9c;display:grid;place-items:center}.till-dot.paid{border:none}.till-dot .clover{width:32px;height:32px;margin:0}.till-text .till-left{color:var(--g-ink-soft);font-weight:700;font-size:17px}.game-panel .btn.till-serve{margin-top:4px;padding:0 28px}.book-panel:before{content:"";position:absolute;top:0;right:104px;width:22px;height:46px;background:#ee7fa4;clip-path:polygon(0 0,100% 0,100% 100%,50% 80%,0 100%)}.book-panel .pn-body{display:flex;flex-direction:column;gap:8px}.book-caption{margin:0;text-align:center;color:var(--g-ink-soft);font-size:16px;font-weight:700}.book-page{position:relative;flex:1 1 auto;width:100%;min-height:230px;border-radius:18px;background:linear-gradient(90deg,transparent 48.6%,#6b523812 49.6%,#6b52381f 50%,#6b523812 50.4%,transparent 51.4%),radial-gradient(circle,#e7d9b6 1.2px,transparent 1.6px) 0 0 / 22px 22px,#fffdf6;box-shadow:0 0 0 2px #ece1c4 inset,0 5px #e9dcbc,0 10px 22px #5a4a2a1f;touch-action:manipulation}.book-page.placing{cursor:copy;outline:3px dashed #d9a441;outline-offset:-9px}.book-page-title{position:absolute;left:24px;top:14px;font-family:Georgia,serif;font-style:italic;font-size:22px;color:#b8a67c;pointer-events:none}.book-empty{position:absolute;inset:0;margin:0;display:grid;place-items:center;padding:0 16%;text-align:center;color:var(--g-ink-soft);font-size:19px;font-weight:700;line-height:1.4}.sticker{position:relative;width:80px;height:80px;padding:4px;border:none;border-radius:18px;background:none;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.book-page .sticker{position:absolute;width:96px;height:96px;transform:translate(-50%,-50%) rotate(var(--tilt, 0deg))}.sticker-art{display:block;width:100%;height:100%;pointer-events:none;filter:drop-shadow(2.5px 0 0 #fff) drop-shadow(-2.5px 0 0 #fff) drop-shadow(0 2.5px 0 #fff) drop-shadow(0 -2.5px 0 #fff) drop-shadow(0 3px 3px #5a4a2a44);transition:transform .15s}.sticker-art svg{display:block;width:100%;height:100%}.sticker.selected{background:#fff4c9cc;outline:3px dashed #d9a441;outline-offset:1px}.sticker.selected .sticker-art{transform:translateY(-4px) scale(1.08) rotate(-4deg)}.sticker.lifted{opacity:.3}.sticker.just-placed .sticker-art{animation:pn-stick .4s ease-out}.sticker-count{position:absolute;left:50%;bottom:-12px;transform:translate(-50%);white-space:nowrap;padding:1px 9px;border-radius:999px;background:#fffaf0;border:2px solid #ece1c4;color:var(--g-ink);font-size:12px;font-weight:800;pointer-events:none}.sticker-ghost{position:absolute;width:96px;height:96px;padding:4px;transform:translate(-50%,-50%);border-radius:50%;outline:3px dashed #d9a441;background:#fff4c966;opacity:.85;pointer-events:none}.sticker-ghost svg{width:100%;height:100%}.sticker-float{position:fixed;z-index:60;width:88px;height:88px;transform:translate(-50%,-62%) rotate(-6deg);pointer-events:none;filter:drop-shadow(2.5px 0 0 #fff) drop-shadow(-2.5px 0 0 #fff) drop-shadow(0 2.5px 0 #fff) drop-shadow(0 -2.5px 0 #fff) drop-shadow(0 12px 10px #3a2a1a40)}.sticker-float svg{width:100%;height:100%}.book-hint{min-height:1.4em;margin:4px 0 0;text-align:center;color:var(--g-ink-soft);font-size:17px;font-weight:700}.book-tray{flex:none;display:flex;flex-wrap:wrap;justify-content:center;gap:14px 16px;padding:12px 14px 20px;border-radius:20px;background:#f4ecd8;box-shadow:inset 0 2px #e9dcbc}.badge-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:14px}.badge-card{display:flex;flex-direction:column;align-items:center;text-align:center;padding:14px 12px;border-radius:22px;border:2px dashed #e4d9bd;background:#fffdf6}.badge-card.earned{border:2px solid #efe4c8;background:#fff;box-shadow:0 4px #efe4c8}.badge-art svg{display:block;width:104px;height:104px}.game-panel .badge-name{margin:6px 0 2px;font-size:17px;font-weight:800}.badge-card:not(.earned) .badge-name{color:var(--g-ink-soft)}.badge-note{margin:0;color:var(--g-ink-soft);font-size:15px;font-weight:600;line-height:1.3}.badge-card.earned .badge-note{color:var(--g-pine);font-weight:800}.robe-panel .pn-head{padding-top:20px}.robe{display:grid;grid-template-columns:220px 1fr;gap:24px;align-items:start;padding-top:4px}.robe-mirror{margin:0;display:flex;flex-direction:column;align-items:center;gap:10px}.robe-glass{width:204px;height:292px;display:grid;place-items:end center;padding-bottom:8px;overflow:hidden;border-radius:102px 102px 26px 26px;border:9px solid #c79a6b;background:linear-gradient(125deg,transparent 58%,#ffffff66 58% 64%,transparent 64% 70%,#ffffff44 70% 73%,transparent 73%),linear-gradient(180deg,#eef7f8,#d4e9ec);box-shadow:0 5px #a6734a,inset 0 0 0 3px #ffffff80}.robe-figure{width:166px;height:auto}.robe-mirror figcaption{max-width:210px;text-align:center;font-size:16px;font-weight:800;line-height:1.3}.robe-racks{display:flex;flex-direction:column;gap:16px;min-width:0}.game-panel .robe-rack h3{margin:0 0 4px;font-family:Georgia,serif;font-size:21px}.robe-rail{position:relative;display:flex;flex-wrap:wrap;gap:18px 10px;padding-top:22px;background:linear-gradient(#b98556,#b98556) 0 5px / 100% 7px no-repeat}.robe-shelf{display:flex;flex-wrap:wrap;gap:10px;padding:4px 0 16px;background:linear-gradient(#b98556,#b98556) 0 100% / 100% 9px no-repeat}.robe-item{position:relative;width:96px;min-height:124px;padding:8px 6px 10px;border-radius:18px;border:2px solid var(--g-line);background:#fff;color:var(--g-ink);font:inherit;display:flex;flex-direction:column;align-items:center;gap:2px;cursor:pointer;box-shadow:0 3px #efe4c8}.robe-item .item-art svg{width:66px;height:66px}.robe-name{font-size:14px;font-weight:800;line-height:1.15}.robe-item.worn{border-color:var(--g-pine);background:#eef7ea;box-shadow:0 0 0 2px var(--g-pine) inset,0 3px #b9d8b0}.robe-worn{position:absolute;top:-10px;right:-10px;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--g-pine);color:#fff;box-shadow:0 0 0 3px var(--g-paper)}.robe-worn .pn-check{width:18px;height:18px;vertical-align:0}.robe-hanger{position:absolute;top:-19px;left:50%;width:16px;height:18px;margin-left:-8px;border:3px solid #8a6a4a;border-bottom:none;border-radius:9px 9px 0 0}.robe-more{display:flex;align-items:center;gap:8px;margin:0;color:var(--g-ink-soft);font-size:17px;font-weight:700}.robe-more-icon svg{display:block;width:26px;height:26px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}@keyframes pn-stick{0%{transform:scale(1.35) rotate(-8deg)}70%{transform:scale(.96)}}@keyframes pn-coin{40%{transform:scale(1.25) rotate(-12deg)}}@media(max-width:700px){.pn-head{padding-left:18px}.game-panel .pn-title h2{font-size:24px}.pn-tab{font-size:16px}.pn-tab-icon{display:none}.till,.robe{grid-template-columns:1fr}.robe-glass{width:150px;height:214px}.robe-figure{width:120px}}@media(prefers-reduced-motion:reduce){.shop-sheet,.sticker.just-placed .sticker-art,.pn-balance.spent .clover{animation:none}.sticker-art{transition:none}}:root{font-family:ui-rounded,SF Pro Rounded,Avenir Next,Avenir,system-ui,sans-serif;color:#fcf9e9;--cream: #fffbea;--ink: #454a36;--green: #648653}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#92b766}button{font:inherit;cursor:pointer}button:focus-visible,canvas:focus-visible{outline:3px solid #ffe8a4;outline-offset:4px}#world{display:block;width:100%;height:100%;touch-action:none;outline:none;cursor:grab}#world.dragging{cursor:grabbing}#hud{position:absolute;inset:0;pointer-events:none;transition:opacity .5s}#hud button,#hud section,#mobile-stick{pointer-events:auto}.brand{position:absolute;top:25px;left:26px;display:flex;align-items:center;gap:12px;padding:10px 22px 10px 14px;background:#fffbeaee;color:#4c5140;border-radius:40px;box-shadow:0 3px 10px #3c522215;border:1px solid #ffffff80}.brand span{font:500 18px/1.3 Georgia,serif;letter-spacing:1.7px}.brand svg{width:32px;height:32px;fill:#96ad73;stroke:#596849;stroke-width:.8}.brand svg .vein{stroke-width:1.1;fill:none}.island-label{position:absolute;top:88px;left:44px;display:flex;align-items:center;gap:7px;font-size:11px;letter-spacing:.8px;text-shadow:0 1px 5px #263d41b0}.live-dot{height:5px;width:5px;border-radius:50%;background:#fff4c6;box-shadow:0 0 9px #fff4a099}.map-wrap{position:absolute;right:30px;top:25px;width:152px;height:152px;background:#c7d397d0;border:3px solid #fffceb;border-radius:50%;box-shadow:0 3px 15px #34492128;transform:rotate(-6deg)}#minimap{width:100%;height:100%;border-radius:50%}.map-north{position:absolute;top:7px;left:calc(50% - 4px);font:10px Georgia,serif;color:#fbf9e7;text-shadow:0 1px 2px #36512e}.map-caption{position:absolute;top:calc(100% + 12px);width:175px;text-align:center;left:-14px;font:italic 12px Georgia,serif;letter-spacing:.4px;color:#fffced;text-shadow:0 1px 6px #263d4160}.toolbar{display:flex;gap:7px;position:absolute;right:30px;top:222px}.icon-btn{display:grid;place-items:center;width:33px;height:33px;border-radius:50%;border:1px solid #fff5d9a0;background:#fffae4e6;color:#667248;box-shadow:0 2px 8px #2f442520;transition:transform .18s,background .18s}.icon-btn:hover{background:#fff;transform:translateY(-2px)}.icon-btn:disabled{opacity:.5;cursor:default}.icon-btn:focus-visible{outline:2px solid #fff8db;outline-offset:3px}.icon-btn[aria-pressed=true]{background:#668351;color:#fff8db;border-color:#799765}.icon-btn svg{width:17px;height:17px;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round;fill:none}#time-panel{position:absolute;bottom:29px;left:30px;text-shadow:0 2px 6px #31432870}.time{display:flex;align-items:baseline;gap:9px;padding-bottom:6px;border-bottom:1px solid #fffce6a0;letter-spacing:.2px}.time #clock-time{font:400 41px/1.15 Georgia,serif}.time #clock-period{font:17px Georgia,serif}.date{font-size:15px;letter-spacing:.2px;padding-top:8px}.date span{padding:0 3px}.controls-hint{display:flex;align-items:center;gap:13px;position:absolute;bottom:33px;left:50%;transform:translate(-50%);white-space:nowrap;font-size:12px;text-shadow:0 2px 5px #3b4b2980}.controls-hint span{display:flex;gap:7px;align-items:center}.controls-hint i{font-style:normal;opacity:.7}.controls-hint svg{width:14px;height:17px;fill:none;stroke:currentColor;stroke-width:1.2;stroke-linejoin:round}#toast{position:absolute;top:32px;left:50%;transform:translate(-50%,-14px);background:#fffbe9f2;color:#536143;border-radius:22px;padding:11px 20px;opacity:0;transition:opacity .4s,transform .4s;max-width:430px;text-align:center;font-size:13px;box-shadow:0 5px 20px #31472615}#toast.visible{opacity:1;transform:translate(-50%)}#neighbor-note{position:absolute;bottom:115px;left:50%;transform:translate(-50%,20px);border-radius:24px;background:#fff9e8f5;color:#586044;padding:25px 32px;max-width:450px;opacity:0;transition:.3s;box-shadow:0 8px 30px #34422730;text-align:center}#neighbor-note.visible{opacity:1;transform:translate(-50%)}#neighbor-note strong{position:absolute;top:-15px;left:25px;padding:6px 19px;background:#a7c88c;border-radius:30px;transform:rotate(-4deg);font-size:13px}#neighbor-note p{font-size:17px;margin:0 0 12px;line-height:1.55}#neighbor-note small{font-size:10px;opacity:.65}#help-panel{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) rotate(-1deg);width:375px;max-width:calc(100vw - 30px);background:#fff9e9fa;color:#536143;padding:28px 35px 23px;border-radius:30px;box-shadow:0 20px 80px #223a3150;text-align:center}#help-panel[hidden]{display:none}#close-help{position:absolute;right:15px;top:10px;font-size:28px;background:transparent;border:0;color:#83916d}.help-flower{font-size:42px;color:#8ca66a}#help-panel h1{font:24px Georgia,serif;margin:10px 0}#help-panel p{font-size:13px;line-height:1.65;color:#7d856d}#help-panel dl{display:grid;grid-template-columns:1fr 1fr;text-align:left;gap:12px 8px;margin:24px 0;font-size:11px}#help-panel dd{margin:0;opacity:.75}#help-panel dt{font-weight:650}#help-panel .help-footer{font:italic 12px Georgia,serif;border-top:1px solid #cdd2b9;padding-top:20px}.photo-hidden{opacity:0!important}#photo-flash{position:absolute;inset:0;background:#fffce8;opacity:0;pointer-events:none;transition:opacity .45s}#photo-flash.flash{opacity:.85;transition:none}#loading{position:absolute;inset:0;z-index:10;display:flex;align-items:center;justify-content:center;flex-direction:column;background:#eef1d9;color:#576c44;transition:opacity .9s}.loading-leaf{font-size:60px;animation:leaf 3s ease-in-out infinite;color:#87a46a}.loading-title{font:42px Georgia,serif;letter-spacing:1px;margin-top:12px}#loading p{font:italic 15px Georgia,serif;color:#85946e;margin-top:14px}.loading-track{width:145px;height:3px;background:#d8dfbe;border-radius:4px;margin:22px 0 12px;overflow:hidden}.loading-track span{display:block;height:100%;background:#8da76d;width:6%;transition:width .4s}#loading small{font-size:10px;color:#8a9679;letter-spacing:.3px}#loading.done{opacity:0;pointer-events:none;visibility:hidden;transition:opacity .9s,visibility 0s .9s}#loading.done .loading-leaf{animation:none}@keyframes leaf{50%{transform:translateY(-8px) rotate(8deg)}}#mobile-stick{display:none;position:absolute;bottom:130px;left:30px;width:90px;height:90px;border:1px solid #fffbe555;border-radius:50%;background:#fffbe51a;touch-action:none}#mobile-stick span{position:absolute;width:36px;height:36px;left:26px;top:26px;background:#fffbe599;border-radius:50%;border:1px solid #fffbe5aa}@media(pointer:coarse){#mobile-stick{display:block}.controls-hint{display:none}}@media(max-width:700px){.brand{left:15px;top:16px;padding:9px 14px 9px 10px;gap:7px}.brand span{font-size:13px;letter-spacing:1.2px}.brand svg{width:25px;height:25px}.island-label{top:73px;left:26px;font-size:9px}.map-wrap{right:15px;top:16px;width:100px;height:100px;border-width:2px}.map-caption{display:none}.toolbar{right:15px;top:129px;gap:5px;display:grid;grid-template-columns:repeat(2,30px)}.icon-btn{width:30px;height:30px}#time-panel{bottom:23px;left:22px}.time #clock-time{font-size:33px}.date{font-size:12px}#toast{top:auto;bottom:105px;font-size:11px;width:270px;max-width:80vw}#neighbor-note{width:85vw;padding:25px 22px;bottom:125px}#neighbor-note p{font-size:15px}.controls-hint{display:none}#mobile-stick{left:22px;bottom:135px}}@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}
