:root{--color-pink-primary:#ff8e9e;--color-pink-secondary:#ffb7c5;--color-pink-light:#fff5f6;--color-blue-primary:#3b82f6;--color-blue-secondary:#93c5fd;--color-blue-light:#e0f2fe;--color-gold:#d4af37;--color-bg:#fff5f6;--color-text-primary:#1f2937;--color-text-secondary:#6b7280;--color-text-muted:#9ca3af;--radius-sm:.75rem;--radius-md:1rem;--radius-lg:1.5rem;--radius-xl:2rem;--radius-2xl:2.5rem;--radius-full:9999px;--shadow-xs:0 1px 2px #0000000a;--shadow-sm:0 2px 8px #0000000f;--shadow-md:0 4px 16px #00000014;--shadow-lg:0 8px 30px #0000001a;--shadow-xl:0 12px 40px #0000001f;--shadow-pink:0 8px 20px #ff8e9e4d;--shadow-blue:0 8px 20px #3b82f64d;--gradient-pink:linear-gradient(135deg, #ffb7c5 0%, #ff8e9e 100%);--gradient-pink-hover:linear-gradient(135deg, #ff8e9e 0%, #ff6b8b 100%);--gradient-blue:linear-gradient(135deg, #60a5fa 0%, #3b82f6 100%);--gradient-gold:linear-gradient(135deg, gold 0%, orange 100%);--ease-out-expo:cubic-bezier(.16, 1, .3, 1);--ease-spring:cubic-bezier(.175, .885, .32, 1.275);--duration-fast:.15s;--duration-normal:.25s;--duration-slow:.4s;--vh:1vh}html,body{overscroll-behavior-y:none}body{background:var(--color-bg);color:var(--color-text-primary);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;margin:0;font-family:Noto Sans TC,Noto Sans JP,Noto Sans KR,sans-serif}input,textarea,[contenteditable=true]{-webkit-user-select:text!important;-moz-user-select:text!important;-ms-user-select:text!important;user-select:text!important;-webkit-touch-callout:default!important}img{-webkit-user-drag:none;pointer-events:none}.no-scrollbar::-webkit-scrollbar{display:none}.app-shell{background:#fff;max-width:600px;min-height:100vh;margin:0 auto;position:relative;box-shadow:0 0 60px #ff8e9e14}.btn-sakura{background:var(--gradient-pink);box-shadow:var(--shadow-pink);transition:all var(--duration-normal) var(--ease-out-expo)}.btn-sakura:hover{background:var(--gradient-pink-hover);transform:translateY(-1px);box-shadow:0 10px 25px #ff8e9e66}.btn-disabled{color:#9ca3af!important;cursor:pointer!important;box-shadow:none!important;background:#e5e7eb!important}.btn-loading{pointer-events:none;opacity:.85;position:relative}.btn-loading>span[data-i18n]{visibility:hidden}.btn-spinner{justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.input-field.error{background-color:#fef2f2!important;border-color:#ef4444!important}.input-field.error:focus{border-color:#dc2626!important;box-shadow:0 0 0 3px #ef44441a!important}.error-message{color:#ef4444;align-items:center;gap:.25rem;margin-top:.25rem;font-size:.75rem;display:flex}.error-message:before{content:"⚠";font-size:.75rem}.label-error{color:#ef4444!important}.gender-btn.error{color:#dc2626!important;background-color:#fef2f2!important;border-color:#ef4444!important}.checkbox-custom.error{border-color:#ef4444!important}.cat-panel{transition:all .2s var(--ease-spring);border-radius:var(--radius-md);background:#fff;border:1.5px solid #e5e7eb;min-height:48px}.cat-panel:active{transform:scale(.95)}.cat-panel.active{border-color:var(--color-pink-primary);background:var(--gradient-pink);z-index:10;border-width:1.5px;transform:scale(1.03);box-shadow:0 4px 15px #ff8e9e26}.cat-panel.active[data-mode=community]{background:linear-gradient(135deg,#e0f2fe 0%,#bae6fd 100%);box-shadow:0 4px 15px #3b82f626}.cat-panel.active[data-mode=personal]{background:var(--gradient-pink);box-shadow:0 4px 15px #ff8e9e26}.cat-panel i{height:18px}.cat-panel span{line-height:1}.snap-item:hover{box-shadow:var(--shadow-md)}.rank-num{font-family:Georgia,serif}.rank-1{color:var(--color-gold);background:var(--gradient-gold)!important;border-color:gold!important}.rank-1 .rank-num{color:#8b4513!important}.rank-2{color:#696969;background:linear-gradient(135deg,silver 0%,#a9a9a9 100%)!important;border-color:silver!important}.rank-2 .rank-num{color:#696969!important}.rank-3{color:#fff8dc;background:linear-gradient(135deg,#cd7f32 0%,#8b4513 100%)!important;border-color:#cd7f32!important}.rank-3 .rank-num{color:#fff8dc!important}.rank-default{color:#fff;background:var(--gradient-pink)!important;border-color:var(--color-pink-primary)!important}.rank-default .rank-num{color:#fff!important}.rank-default-community{color:var(--color-blue-primary)}.pulse-sakura{animation:2s infinite pulse-pink;border-color:var(--color-pink-primary)!important}@keyframes pulse-pink{0%{box-shadow:0 0 #ff8e9e80}70%{box-shadow:0 0 0 15px #ff8e9e00}to{box-shadow:0 0 #ff8e9e00}}.pulse-blue{animation:2s infinite pulse-blue}@keyframes pulse-blue{0%{box-shadow:0 0 #3b82f680}70%{box-shadow:0 0 0 10px #3b82f600}to{box-shadow:0 0 #3b82f600}}.pulse-sparkle{animation:3s infinite pulse-sparkle}@keyframes pulse-sparkle{0%{opacity:.7;transform:scale(1)}50%{opacity:1;color:#ff4d6d;transform:scale(1.2)}to{opacity:.7;transform:scale(1)}}.pulse-text{animation:3s infinite pulse-text}@keyframes pulse-text{0%{color:#6b7280}50%{color:#ff4d6d}to{color:#6b7280}}.countdown-bar{background:linear-gradient(90deg, var(--color-pink-primary) 0%, var(--color-pink-secondary) 100%);border-radius:2px;height:4px;transition:width 1s linear}.lang-select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23FF69B4' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right 8px center;background-repeat:no-repeat;background-size:10px;min-width:100px;padding-left:8px;padding-right:22px;font-size:12px}.lang-select-compact{background-position:right 4px center;background-size:8px;min-width:80px;padding:4px 18px 4px 6px;font-size:11px}.ward-select{text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:180px;overflow:hidden}.personal-filter-toggle{border-radius:var(--radius-md);background-color:#fff1f2;border:1px solid #fecdd3cc;align-items:center;width:100%;padding:.25rem .4rem;display:flex;position:relative}.mode-personal-only{flex:1;margin:0 .5rem}#personal-filter-slider{width:calc(50% - .4rem);box-shadow:var(--shadow-xs);z-index:1;background-color:#fff;border-radius:.75rem;transition:transform .3s ease-in-out;position:absolute;top:.2rem;bottom:.2rem;left:.4rem}.personal-filter-toggle button{z-index:10;text-align:center;cursor:pointer;background:0 0;border:none;flex:1;padding:.3rem .4rem;transition:all .2s;position:relative}.personal-filter-toggle button span{font-size:.75rem;font-weight:700;transition:color .2s}.toggle-switch{flex-shrink:0;width:44px;height:24px;display:inline-block;position:relative}.toggle-switch input{opacity:0;width:0;height:0}.toggle-switch .toggle-track{cursor:pointer;background-color:#e5e7eb;border-radius:24px;transition:background-color .3s;position:absolute;inset:0}.toggle-switch .toggle-track:before{content:"";background-color:#fff;border-radius:50%;width:18px;height:18px;transition:transform .3s;position:absolute;bottom:3px;left:3px;box-shadow:0 1px 3px #00000026}.toggle-switch input:checked+.toggle-track{background-color:var(--color-pink-primary,#ec4899)}.toggle-switch input:checked+.toggle-track:before{transform:translate(20px)}.toggle-switch input:focus+.toggle-track{box-shadow:0 0 0 2px #ec48994d}.filter-toggle-btn{cursor:pointer;width:100%;color:var(--color-pink-primary,#ff8e9e);background:0 0;border:none;outline:none;justify-content:center;align-items:center;gap:8px;padding:6px 0 2px;transition:color .2s;animation:3s 1.5s 2 filter-hint;display:flex}.filter-toggle-btn:hover{color:#ec4899}.filter-toggle-btn svg{transition:transform .3s var(--ease-out,cubic-bezier(.16, 1, .3, 1))}.filter-toggle-btn.expanded svg{transform:rotate(180deg)}.filter-toggle-btn.expanded{animation:none}@keyframes filter-hint{0%,to{transform:translateY(0)}15%{transform:translateY(3px)}30%{transform:translateY(0)}45%{transform:translateY(3px)}60%{transform:translateY(0)}}.filter-collapsible{max-height:500px;transition:max-height .35s var(--ease-out,cubic-bezier(.16, 1, .3, 1)), opacity .25s ease;opacity:1;overflow:hidden}.filter-collapsible.collapsed{opacity:0;pointer-events:none;max-height:0}.saved-group-header{cursor:pointer;user-select:none;background:#fff0f3;border-radius:16px;align-items:center;gap:8px;padding:10px 14px;transition:background .2s;display:flex}.saved-group-header:active{background:#ffe0e6}.saved-group-header .saved-group-title{color:#374151;flex:1;font-size:14px;font-weight:700}.saved-group-header .saved-group-count{color:#f472b6;text-align:center;background:#fff;border-radius:999px;min-width:24px;padding:2px 8px;font-size:12px;font-weight:600}.saved-group-header .saved-chevron{color:#f472b6;transition:transform .3s cubic-bezier(.16,1,.3,1)}.saved-group-header.collapsed .saved-chevron{transform:rotate(-90deg)}.saved-group-content{opacity:1;transition:max-height .35s cubic-bezier(.16,1,.3,1),opacity .25s;overflow:hidden}.saved-group-content.collapsed{opacity:0;pointer-events:none;max-height:0}.saved-store-header{cursor:pointer;user-select:none;background:#f9fafb;border-radius:12px;align-items:center;gap:6px;margin:4px 0 0 12px;padding:8px 12px;transition:background .2s;display:flex}.saved-store-header:active{background:#f3f4f6}.saved-store-header .saved-store-title{color:#4b5563;flex:1;font-size:13px;font-weight:600}.saved-store-header .saved-store-count{color:#9ca3af;font-size:11px;font-weight:600}.saved-store-header .saved-chevron{color:#9ca3af;transition:transform .3s cubic-bezier(.16,1,.3,1)}.saved-store-header.collapsed .saved-chevron{transform:rotate(-90deg)}.saved-store-content{opacity:1;padding-left:8px;transition:max-height .35s cubic-bezier(.16,1,.3,1),opacity .25s;overflow:hidden}.saved-store-content.collapsed{opacity:0;pointer-events:none;max-height:0}.distance-slider-container,.distance-track{width:100%}.distance-marker{box-shadow:var(--shadow-sm);z-index:6}.distance-marker.active{transform:translate(-50%)translateY(-50%)scale(1.15);box-shadow:0 4px 12px #ff8e9e66}.distance-marker:first-of-type .distance-marker-label{left:0;transform:none}.distance-marker:last-of-type .distance-marker-label{left:100%;transform:translate(-100%)}.distance-dragger{z-index:10}.distance-dragger-line{z-index:5}#osm-preview{background-position:50%;background-repeat:no-repeat;background-size:cover;width:100%;height:200px}#osm-store-dots{pointer-events:none;z-index:5;position:absolute;inset:0}.osm-store-dot{pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;transform:translate(-50%,-50%)}#map-view-btn.scroll-collapsed{display:none}@media (height<=700px){#osm-preview{height:150px}}@media (width<=500px){.header-app-name{display:none}}#edit-map{z-index:1;touch-action:pan-x pan-y;-webkit-tap-highlight-color:transparent;width:100%;height:100%;min-height:400px;position:relative}#edit-map .leaflet-container{width:100%;height:100%;min-height:400px;font-family:inherit}#results-map{z-index:1;height:100%;min-height:300px;max-height:100%;position:relative;overflow:hidden}#results-map .leaflet-container{z-index:1;width:100%;height:100%;min-height:300px;font-family:inherit}#map-loading,#map-no-products{z-index:500}#edit-map .leaflet-control-container .leaflet-control{z-index:1000}.user-marker{background:0 0;border:none}.custom-pin-marker{cursor:pointer!important}.drawer{transition:transform var(--duration-slow) cubic-bezier(.32, .72, 0, 1);visibility:hidden;pointer-events:none;transform:translateY(100%)}.drawer-open{visibility:visible!important;pointer-events:auto!important;transform:translateY(0)!important}#product-detail{box-sizing:border-box}#product-detail.drawer-open{max-height:calc(var(--vh,1vh) * 90);flex-direction:column;display:flex;overflow:hidden}@supports (height:1dvh){#product-detail.drawer-open{max-height:90dvh}}@supports (padding:max(0px, env(safe-area-inset-top, 0px))){#product-detail.drawer-open{max-height:calc(90dvh - env(safe-area-inset-top,0px));padding-top:env(safe-area-inset-top,0px)!important}}#product-detail .image-wrapper{border-radius:var(--radius-md);background:#f9fafb;width:100%;height:12rem;position:relative}.detail-scroll-content{-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain}.detail-bottom-bar{background:#fff;border-top:1px solid #0000000a}#product-detail .price-box{background:linear-gradient(135deg,#3b82f60a 0%,#3b82f614 100%);border:1px solid #3b82f61a}#product-detail .price-box.community{background:linear-gradient(135deg,#3b82f614 0%,#3b82f61f 100%);border:1px solid #3b82f626}@media (height<=700px){#product-detail .image-wrapper{height:10rem}#product-detail .price-box{padding:.75rem}#detail-price-box .text-\[26px\]{font-size:22px}#product-detail .flex.items-center.justify-center.pt-4{padding-top:.5rem}.detail-scroll-content{padding-bottom:.75rem;padding-left:1rem;padding-right:1rem}#detail-name{margin-top:.5rem;font-size:1.25rem}#detail-price-box{margin-bottom:.75rem}#detail-stars{margin-bottom:.5rem;padding:.5rem .75rem}.detail-bottom-bar{padding-top:.5rem;padding-bottom:1rem}.detail-bottom-bar button{padding-top:.75rem;padding-bottom:.75rem}}@media (height<=600px){#product-detail .image-wrapper{height:8rem}#detail-price-box .text-\[26px\]{font-size:20px}#product-detail .flex.items-center.justify-center.pt-4{padding-top:.25rem}.detail-scroll-content{padding-bottom:.5rem}#detail-name{font-size:1.125rem}#detail-price-box{margin-bottom:.5rem}.detail-bottom-bar button{padding-top:.5rem;padding-bottom:.5rem;font-size:.75rem}}#detail-badge{cursor:default;transition:opacity var(--duration-fast)}#detail-badge[style*="cursor: pointer"]{cursor:pointer}#detail-badge:active{opacity:.7}.price-graph-container{border-left:1px solid #0000000f;padding-left:.75rem}.price-sparkline{overflow:visible}.price-sparkline .sparkline-line{fill:none;stroke:#3b82f6;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}.price-sparkline .sparkline-area{fill:url(#sparkline-gradient);opacity:.3}.price-sparkline .sparkline-dot{fill:#3b82f6;stroke:#fff;stroke-width:1.5px}.price-sparkline .sparkline-dot-first{fill:#9ca3af;stroke:#fff;stroke-width:1px}#detail-confirm-count{color:#60a5fa;margin-bottom:2px;font-size:1.125rem;font-weight:900;line-height:1}#detail-confirm-text{color:#60a5fa;font-size:.625rem;font-weight:500}#detail-saves-count{color:#f472b6;margin-bottom:2px;font-size:1.125rem;font-weight:900;line-height:1}#detail-saves-text{color:#f472b6;font-size:.6875rem;font-weight:500}#detail-badge.text-pink-400 #detail-confirm-count,#detail-badge.text-pink-400 #detail-confirm-text{color:#f472b6}#product-detail .line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}#product-detail .btn-tap:active{transition:transform var(--duration-fast);transform:scale(.96)}.star-rating-interactive{cursor:pointer;transition:transform .1s}.star-rating-interactive:hover{transform:scale(1.15)}.star-rating-interactive.disabled{cursor:default;opacity:.6;transform:none}#detail-avg-stars i,#detail-rate-area i{width:14px;height:14px}#detail-rate-area .star-clickable:active{transform:scale(.85)}#detail-timestamp{transition:opacity .3s}#detail-time-ago{letter-spacing:.05em}#detail-exact-time{letter-spacing:.03em;opacity:.7}.bg-pink-50\/50 #detail-timestamp{border-top:1px solid #ffb7c54d;margin-top:12px;padding-top:12px}.bg-pink-50\/50 #detail-time-ago{color:#9ca3af;font-weight:500}.bg-pink-50\/50 #detail-exact-time{color:#d1d5db;font-weight:400}#detail-comments-panel .comment-item{border-bottom:1px solid #0000000a;padding:.5rem 0}#detail-comments-panel .comment-item:last-child{border-bottom:none}#detail-comments-panel .comment-nickname{color:#6b7280;font-size:.75rem;font-weight:700}#detail-comments-panel .comment-points,#detail-comments-panel .comment-time{color:#d1d5db;font-size:.625rem}#detail-comments-panel .comment-text{color:#374151;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:.8125rem;line-height:1.4;display:-webkit-box;overflow:hidden}#detail-comments-panel .comment-actions{gap:.75rem;margin-top:.25rem;display:flex}#detail-comments-panel .comment-action-btn{color:#9ca3af;cursor:pointer;background:0 0;border:none;padding:0;font-size:.6875rem;font-weight:500}#detail-comments-panel .comment-action-btn:active{color:#f472b6}#detail-comments-panel .replies-container{border-left:2px solid #ff8e9e26;margin-top:.25rem;margin-left:1.5rem;padding-left:.5rem}#detail-comments-panel .reply-item{padding:.375rem 0}#detail-comments-panel .reply-item .comment-text{font-size:.75rem}#detail-comments-panel .reply-more{color:#f472b6;cursor:pointer;padding:.25rem 0;font-size:.6875rem;font-weight:500}#detail-comments-panel .comment-pending{opacity:.6}#detail-comments-panel .comment-deleted{color:#d1d5db;font-size:.75rem;font-style:italic}#detail-comments-panel .inline-reply-area{gap:.375rem;margin-top:.25rem;display:flex}#detail-comments-panel .inline-reply-area input{border:1px solid #e5e7eb;border-radius:.75rem;outline:none;flex:1;padding:.375rem .625rem;font-size:.75rem}#detail-comments-panel .inline-reply-area input:focus{border-color:#f9a8b8}#detail-comments-panel .inline-reply-area button{color:#ec4899;cursor:pointer;background:#fce7f3;border:none;border-radius:.75rem;padding:.375rem .75rem;font-size:.6875rem;font-weight:700}.main-comment-input{background:#fdf2f8;border-radius:1rem;align-items:flex-start;gap:.5rem;margin-bottom:.75rem;padding:.75rem;display:flex}.main-comment-input .input-wrapper{flex-direction:column;flex:1;gap:.25rem;min-width:0;display:flex}.main-comment-input input{background:#fff;border:1px solid #e5e7eb;border-radius:.75rem;outline:none;min-width:0;padding:.5rem .75rem;font-size:.875rem}.main-comment-input input:focus{border-color:#f9a8b8}.main-comment-input button{color:#fff;cursor:pointer;background:#ec4899;border:none;border-radius:.75rem;padding:.5rem 1rem;font-size:.875rem;font-weight:700}.main-comment-input button:disabled{opacity:.6;cursor:not-allowed}#detail-comments-list{scrollbar-width:auto;scrollbar-color:#cbd5e1 #f1f5f9}#detail-comments-list::-webkit-scrollbar{width:7px}#detail-comments-list::-webkit-scrollbar-track{background:#f1f5f9;border-radius:4px}#detail-comments-list::-webkit-scrollbar-thumb{background:#cbd5e1;border:1px solid #f8fafc;border-radius:4px;min-height:30px}#detail-comments-list::-webkit-scrollbar-thumb:hover{background:#94a3b8}#comments-scroll-down{cursor:pointer;z-index:10;color:#ff8e9e;background:#fffffff2;border:1px solid #fecdd3;border-radius:50%;justify-content:center;align-items:center;width:30px;height:30px;transition:opacity .3s;animation:1.8s ease-in-out infinite bounceIndicator;display:flex;position:absolute;bottom:44px;left:50%;transform:translate(-50%);box-shadow:0 2px 8px #00000014}#comments-scroll-down.hidden{display:none!important}@keyframes bounceIndicator{0%,to{transform:translate(-50%)translateY(0)}50%{transform:translate(-50%)translateY(4px)}}#product-detail .flex.items-center.justify-between.gap-4 button:first-child{color:#64748b;background:linear-gradient(90deg,#f8fafc,#f1f5f9);border-color:#e2e8f0;font-weight:700}#product-detail .flex.items-center.justify-between.gap-4 button:first-child:hover{color:#475569;background:linear-gradient(90deg,#f1f5f9,#e2e8f0);border-color:#cbd5e1}#product-detail .flex.items-center.justify-between.gap-4 button:last-child{background:linear-gradient(to right, var(--color-pink-primary), #ff6b8b);border:none;font-weight:700}#product-detail .flex.items-center.justify-between.gap-4 button:last-child:hover{background:linear-gradient(90deg,#ff6b8b,#ff477e);box-shadow:0 4px 12px #ff6b8b4d}.mode-community .card-soft{border-color:#e0f2fe!important}.mode-community .btn-sakura{background:var(--gradient-blue)!important;box-shadow:var(--shadow-blue)!important}#auth-overlay .btn-sakura,#guide-overlay .btn-sakura,#review-overlay .btn-sakura,#edit-overlay .btn-sakura,#success-interstitial .btn-sakura{background:var(--gradient-pink)!important;box-shadow:var(--shadow-pink)!important}#camera-button.btn-sakura{background:var(--gradient-pink)!important;box-shadow:var(--shadow-pink)!important;border-color:var(--color-pink-primary)!important}#camera-button.btn-sakura.pulse-sakura{border-color:var(--color-pink-primary)!important;animation:2s infinite pulse-pink!important}#camera-button.btn-sakura:hover{transform:translate(-50%)!important}#camera-button{bottom:calc(5rem + env(safe-area-inset-bottom,0px))}.camera-badge{bottom:calc(3rem + env(safe-area-inset-bottom,0px))}#share-button{background:var(--gradient-pink)!important;box-shadow:var(--shadow-pink)!important;border-color:var(--color-pink-primary)!important}#share-button:hover{background:var(--gradient-pink-hover)!important}.mode-community .pulse-sakura{border-color:var(--color-blue-primary)!important;animation:2s infinite pulse-blue!important}.mode-community .sort-btn.active{background-color:var(--color-blue-light)!important;color:var(--color-blue-primary)!important;border-color:var(--color-blue-secondary)!important}.mode-community .cat-panel.active{border-color:var(--color-blue-primary)!important;background:linear-gradient(135deg,#e0f2fe 0%,#bae6fd 100%)!important;box-shadow:0 4px 15px #3b82f626!important}.mode-community .cat-panel.active i,.mode-community .cat-panel.active span{color:var(--color-blue-primary)!important}.mode-community .mode-community-only{display:flex!important}.mode-community .mode-personal-only,body:not(.mode-community) .mode-community-only{display:none!important}body:not(.mode-community) .mode-personal-only{display:flex!important}.hidden{display:none!important}body.overlay-open{overscroll-behavior:none;-webkit-overflow-scrolling:auto;touch-action:none;width:100%;position:fixed;top:0;left:0;right:0}body.overlay-open main{pointer-events:none;overflow:hidden}body.overlay-open #product-detail,body.overlay-open #points-guide-drawer,body.overlay-open #points-guide-overlay,body.overlay-open #drawer-overlay,body.overlay-open #fullscreen-image-overlay,body.overlay-open #guide-overlay,body.overlay-open #scan-anim,body.overlay-open #camera-overlay,body.overlay-open #review-overlay,body.overlay-open #edit-overlay,body.overlay-open #auth-overlay,body.overlay-open footer{pointer-events:auto;touch-action:auto}#drawer-overlay{transition:opacity .3s}#fullscreen-image-overlay{cursor:pointer;transition:opacity .3s}#fullscreen-image-overlay:not(.hidden){animation:.3s fadeIn}#fullscreen-image-container{justify-content:center;align-items:center;padding:0;display:flex;position:absolute;inset:0}#fullscreen-image{object-fit:contain;cursor:pointer;max-width:100%;max-height:100%;transition:opacity .3s}#fullscreen-image:not(.hidden){animation:.3s zoomIn}#fullscreen-image-loading{background:#000;transition:opacity .3s}.img-skeleton{background:linear-gradient(110deg,#fce4ec 30%,#f8bbd0 50%,#fce4ec 70%) 0 0/200% 100%;animation:1.5s ease-in-out infinite skeleton-pulse}.img-thumb{opacity:0;transition:opacity .4s ease-in}.img-thumb.loaded{opacity:1}.detail-skeleton-bar{background:linear-gradient(110deg,#f3f4f6 30%,#e5e7eb 50%,#f3f4f6 70%) 0 0/200% 100%;border-radius:.5rem;animation:1.5s ease-in-out infinite skeleton-pulse}.detail-skeleton-bar-pink{background:linear-gradient(110deg,#fce4ec 30%,#f8bbd0 50%,#fce4ec 70%) 0 0/200% 100%;border-radius:.5rem;animation:1.5s ease-in-out infinite skeleton-pulse}@keyframes skeleton-pulse{0%{background-position:200% 0}to{background-position:-200% 0}}.profile-skeleton-name{background:linear-gradient(110deg,#f3f4f6 30%,#e5e7eb 50%,#f3f4f6 70%) 0 0/200% 100%;border-radius:.5rem;width:120px;height:24px;margin:0 auto;animation:1.5s ease-in-out infinite skeleton-pulse}.profile-skeleton-badge{background:linear-gradient(110deg,#fce4ec 30%,#f8bbd0 50%,#fce4ec 70%) 0 0/200% 100%;border-radius:9999px;width:60px;height:20px;animation:1.5s ease-in-out infinite skeleton-pulse}.profile-skeleton-points{background:linear-gradient(110deg,#fce4ec 30%,#f8bbd0 50%,#fce4ec 70%) 0 0/200% 100%;border-radius:.5rem;width:80px;height:20px;margin:0 auto;animation:1.5s ease-in-out infinite skeleton-pulse}.profile-skeleton-stat{background:linear-gradient(110deg,#f3f4f6 30%,#e5e7eb 50%,#f3f4f6 70%) 0 0/200% 100%;border-radius:.5rem;width:40px;height:24px;margin:0 auto 4px;animation:1.5s ease-in-out infinite skeleton-pulse}.profile-skeleton-label{background:linear-gradient(110deg,#f3f4f6 30%,#e5e7eb 50%,#f3f4f6 70%) 0 0/200% 100%;border-radius:.25rem;width:60px;height:10px;margin:0 auto;animation:1.5s ease-in-out infinite skeleton-pulse}#detail-img-box{cursor:pointer;-webkit-tap-highlight-color:#ffffff4d}#detail-img-box:active{opacity:.9}#search-clear{transition:opacity var(--duration-fast), transform var(--duration-fast)}#search-clear:active{transform:scale(.9)}@keyframes scan{0%{top:0}to{top:100%}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes zoomIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes slide-up-fade{0%{opacity:0;transform:translateY(50px)}to{opacity:1;transform:translateY(0)}}@keyframes float-petal{0%{opacity:.7;transform:translateY(0)rotate(45deg)scale(1)}50%{opacity:1;transform:translateY(-20px)rotate(45deg)scale(1.1)}to{opacity:.7;transform:translateY(0)rotate(45deg)scale(1)}}.sakura-petal{background:var(--gradient-pink);opacity:.7;border-radius:50% 50% 50% 0;width:24px;height:24px;animation:4s ease-in-out infinite float-petal;position:absolute;transform:rotate(45deg)}#success-interstitial{animation:.5s ease-out slide-up-fade}.safe-area-top{padding-top:env(safe-area-inset-top,0px)}.safe-area-bottom{padding-bottom:env(safe-area-inset-bottom,0px)}#map-view-btn{flex-direction:column;justify-content:center;align-items:center;width:100%;height:100%;display:flex}#view-map{z-index:auto;box-sizing:border-box;flex:1;height:100%;padding-bottom:112px;position:relative;overflow:hidden}#auth-overlay{-webkit-overflow-scrolling:touch}#step-email,#step-code,#step-register{-webkit-overflow-scrolling:touch;overscroll-behavior:contain}@media (width<=768px){.store-card{min-width:180px!important}button,.btn-sakura,.cat-panel{min-height:44px}input,textarea,select{font-size:16px!important}}@media (width<=390px){.sort-btn{padding:.2rem .35rem}.personal-filter-toggle{width:100%}.personal-filter-toggle button span{font-size:.65rem}#auth-overlay .p-8{padding:1.5rem}#auth-overlay h1{font-size:1.5rem}.input-field{padding:.875rem 1rem;font-size:.875rem}#review-overlay .max-w-\[85\%\]{max-width:95%}#edit-overlay button.py-3{padding-top:.75rem;padding-bottom:.75rem}#edit-overlay .grid{gap:.5rem}#success-interstitial .w-48{width:8rem;height:8rem}#success-interstitial .text-3xl{font-size:1.75rem}#success-interstitial .text-lg{font-size:1rem}#scan-anim .px-12{padding-left:1rem;padding-right:1rem}#scan-anim .rounded-\[3rem\]{border-radius:1.5rem}.gender-btn{padding-top:.5rem;padding-bottom:.5rem;font-size:.75rem}#auth-overlay{max-height:100vh}#step-email,#step-code,#step-register{max-height:calc(100vh - 120px)}.input-field{padding-top:.75rem;padding-bottom:.75rem;font-size:.875rem}button.py-4{padding-top:.75rem;padding-bottom:.75rem}#camera-overlay .absolute.bottom-4{bottom:3rem!important}#review-overlay .p-4{padding-bottom:4.5rem!important;padding-left:1rem!important;padding-right:1rem!important}#review-overlay button,#edit-overlay button{font-size:.875rem!important}}@media (height<=700px){#camera-overlay .flex-1{min-height:calc(100vh - 180px)}#camera-overlay .h-28{height:100px}#camera-overlay button[onclick="takePhoto()"]{width:60px;height:60px}#camera-overlay .absolute.bottom-8{bottom:4rem!important}#review-overlay .p-4{padding-bottom:5rem!important}#view-map{padding-bottom:80px}#results-map,#results-map .leaflet-container{min-height:250px}}@media (height<=600px){#camera-overlay .flex-1{min-height:calc(100vh - 140px)}#camera-overlay .h-28{height:80px}#camera-overlay button[onclick="takePhoto()"]{border-width:2px;width:50px;height:50px}#camera-overlay .absolute.inset-0.flex{padding:2rem}#camera-overlay .absolute.bottom-8{bottom:3.5rem!important}#review-overlay .p-4{padding-bottom:4.5rem!important}}@media (height<=500px){#camera-overlay .absolute.bottom-8{bottom:3rem!important}#review-overlay .p-4{padding-bottom:4rem!important}#review-overlay button,#edit-overlay button{padding-top:.75rem!important;padding-bottom:.75rem!important;font-size:.875rem!important}#edit-overlay .flex-1{padding-bottom:1rem}#edit-overlay .grid{margin-top:1rem}}@media (height<=650px) and (width<=375px){#camera-overlay .absolute.bottom-4{bottom:2.5rem!important}#review-overlay .p-4{padding-bottom:4rem!important}#review-overlay button,#edit-overlay button{padding-top:.625rem!important;padding-bottom:.625rem!important}#edit-overlay .flex-1{padding-bottom:.5rem}#edit-overlay .grid{gap:.5rem;margin-top:.5rem}}#camera-overlay .h-32,#review-overlay .p-4,#edit-overlay .p-4,#product-detail{padding-bottom:env(safe-area-inset-bottom,0px)!important}#camera-overlay .absolute.bottom-8,#review-overlay .p-4,#edit-overlay .p-4{margin-bottom:env(safe-area-inset-bottom,0px)!important}@media (width>=640px){body{background:linear-gradient(#fff5f6 0%,#fce4ec 30%,#fff5f6 100%)}.app-shell{border-left:1px solid #ffb7c526;border-right:1px solid #ffb7c526}.btn-sakura:hover{transform:translateY(-2px)}.card-soft:hover{box-shadow:var(--shadow-md)}.snap-item:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.cat-panel:hover{border-color:var(--color-pink-primary)}.sort-btn:hover{background-color:#ff8e9e14}#nav-home:hover,#nav-profile:hover{color:var(--color-pink-primary)!important}button:focus-visible,select:focus-visible,input:focus-visible{outline:2px solid var(--color-pink-primary);outline-offset:2px;border-radius:8px}}@media (width>=768px){#view-home,#view-profile{padding-bottom:8rem}}.view-transition-enter{animation:view-slide-in .35s var(--ease-out-expo) both}@keyframes view-slide-in{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}@keyframes toast-bounce-in{0%{opacity:0;transform:translateY(100%)scale(.9)}50%{transform:translateY(-8px)scale(1.02)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes toast-bounce-out{0%{opacity:1;transform:translateY(0)scale(1)}to{opacity:0;transform:translateY(100%)scale(.9)}}@keyframes heart-morph{0%{transform:scale(1)}15%{transform:scale(.6)}30%{transform:scale(1.3)}45%{transform:scale(.95)}60%{transform:scale(1.1)}to{transform:scale(1)}}@keyframes count-up{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes check-draw{0%{stroke-dashoffset:48px}to{stroke-dashoffset:0}}@keyframes check-circle-fill{0%{opacity:0;transform:scale(0)}50%{transform:scale(1.15)}to{opacity:1;transform:scale(1)}}@keyframes thumb-pulse{0%,to{box-shadow:0 0 #ff8e9e66}50%{box-shadow:0 0 0 10px #ff8e9e00}}@keyframes scroll-reveal{0%{opacity:0;transform:translateY(24px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}.anim-toast-in{animation:toast-bounce-in .5s var(--ease-spring) both}.anim-toast-out{animation:.3s ease-in both toast-bounce-out}.anim-heart-morph{animation:heart-morph .6s var(--ease-spring) both}.anim-count-up{animation:count-up .5s var(--ease-out-expo) both}.anim-scroll-reveal{opacity:0;transition:opacity .3s var(--ease-out-expo), transform .3s var(--ease-out-expo);transform:translateY(12px)}.anim-scroll-reveal.is-visible{opacity:1;transform:translateY(0)}.distance-dragger-pulse{animation:2s ease-in-out 3 thumb-pulse}.success-checkmark-circle{animation:check-circle-fill .5s var(--ease-spring) both}.success-checkmark-check{stroke-dasharray:48;stroke-dashoffset:48px;animation:.4s ease-out .3s both check-draw}.captcha-card{opacity:0;transition:transform .25s var(--ease-spring), opacity .25s ease-out;transform:scale(.95)}#captcha-overlay:not(.hidden) .captcha-card{opacity:1;transform:scale(1)}.store-popup-content{flex-direction:column;align-items:center;gap:12px;display:flex}.store-popup-name{color:#374151;text-align:center;max-width:160px;font-size:13px;font-weight:600;line-height:1.4}.store-popup-name b{font-weight:700;display:block}.store-popup-name .store-name-line{text-align:center;color:#6b7280;text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:400;display:block;overflow:hidden}.store-popup-actions{gap:24px;display:flex}.store-btn-search,.store-btn-nav{cursor:pointer;border:none;border-radius:50%;justify-content:center;align-items:center;width:36px;height:36px;transition:transform .15s;display:flex}.store-btn-search{color:#ec4899;background:#fdf2f8}.store-btn-nav{color:#3b82f6;background:#eff6ff}.store-btn-search:active,.store-btn-nav:active{transform:scale(.9)}