@font-face{font-family:Unifont;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/unifont-latin-400-normal-CsmNS33N.woff2)format("woff2"),url(/assets/unifont-latin-400-normal-Ce3XHO-M.woff)format("woff")}@font-face{font-family:"Cubic 11";src:url(/assets/Cubic_11-Cgo53PBI.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}:root{color:#3f2e23;font-synthesis:none;text-rendering:geometricprecision;-webkit-font-smoothing:none;-moz-osx-font-smoothing:unset;--motion-smooth:cubic-bezier(.2, .8, .2, 1);--motion-pop:cubic-bezier(.22, 1.2, .36, 1);background:#f6d79b;font-family:Unifont,"Cubic 11",Zpix,Fusion Pixel,PixelMplus10,PixelMplus12,Ark Pixel,Minecraft AE,Microsoft YaHei UI,Microsoft YaHei,monospace;font-size:20px}*{box-sizing:border-box;letter-spacing:0}::selection{color:#3f2e23;background:#f5b85a}html,body,#root{width:100%;min-height:100vh;margin:0}body{overflow-x:hidden}body,button,input,textarea,select{font-family:inherit}button{cursor:pointer;border:0}button,input,textarea,select{font:inherit}img{max-width:100%;display:block}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}.map-view,.records-view,.birds-view,.profile-view{min-height:100%;padding:14px 14px 22px}.map-view{height:100%;min-height:0;padding:0;overflow:hidden}.pixel-campus-map{width:100%;height:100%;min-height:0;box-shadow:none;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;animation:map-panel-in .32s var(--motion-smooth) both;background:#f1cf8b;border:0;border-radius:0;position:relative;overflow:hidden}.pixel-campus-map:active{cursor:grabbing}.pixel-campus-map.picking-location,.pixel-campus-map.picking-location:active{cursor:crosshair}.map-world{height:100%;aspect-ratio:var(--map-aspect-ratio,.6667);transform-origin:0 0;transition:transform .22s var(--motion-smooth);backface-visibility:hidden;will-change:transform;background:0 0;position:absolute;top:0;left:0}.map-world.is-interacting{transition:none}.campus-map-image{object-fit:contain;width:100%;height:100%;image-rendering:pixelated;pointer-events:none;-webkit-user-select:none;user-select:none;display:block;position:absolute;inset:0}.bird-marker{z-index:5;width:72px;height:72px;transform:translate(-50%, -50%) scale(var(--marker-scale,1));background:var(--marker-bg,#f4c866);color:#3f2e23;cursor:pointer;transition:transform .19s var(--motion-pop), box-shadow .18s var(--motion-smooth), background-color .18s var(--motion-smooth);animation:marker-drop-in .3s var(--motion-pop) both;border:4px solid #fff2c8;border-radius:50%;place-items:center;font-weight:900;display:grid;position:absolute;box-shadow:0 0 0 3px #513428,0 5px #5b3a2559}.selected-location-marker{z-index:6;width:48px;height:48px;transform:translate(-50%, -100%) scale(var(--marker-scale,1));transform-origin:50% 100%;pointer-events:none;filter:drop-shadow(0 5px #51342847);animation:marker-drop-in .26s var(--motion-pop) both;position:absolute}.selected-location-marker:before{content:"";clip-path:polygon(50% 100%,12% 38%,12% 14%,88% 14%,88% 38%);background:#f2684a;position:absolute;inset:0;box-shadow:inset 0 0 0 5px #fff2c8}.selected-location-marker:after{content:"";background:#513428;width:12px;height:12px;position:absolute;top:14px;left:50%;transform:translate(-50%)}.bird-marker:hover{transform:translate(-50%, -56%) scale(var(--marker-scale,1));box-shadow:0 0 0 3px #513428,0 9px #5b3a2547}.cluster-marker{background:var(--marker-bg,#f0a85b)}.cluster-marker.active{transform:translate(-50%, -50%) scale(var(--marker-scale,1));background:var(--marker-bg,#f7c75f);animation:cluster-pulse .52s var(--motion-pop) both;box-shadow:0 0 0 4px #513428,0 10px #5b3a254d}.bird-marker-avatar{background:0 0;border:0;border-radius:50%;place-items:center;width:58px;height:58px;font-size:31px;line-height:1;display:grid;position:relative;overflow:hidden}.bird-marker-avatar img{object-fit:contain;object-position:left top;width:122px;max-width:none;height:122px;image-rendering:pixelated;transform:translate(-6px,-6px)}.expanded-cluster-birds{z-index:12;pointer-events:none;width:1px;height:1px;position:absolute;top:0;left:0}.expanded-bird-marker{--orbit-radius:calc((94px + var(--orbit-ring,0) * 78px) * var(--marker-scale,1));--orbit-angle:calc((360deg / var(--bird-count,1)) * var(--bird-index,0) * var(--orbit-direction));--orbit-direction:1;--orbit-delay:calc(var(--bird-index,0) * 32ms + var(--orbit-ring,0) * 90ms);--orbit-spread-duration:.52s;--orbit-start-pause:.18s;width:74px;height:74px;transform:translate(-50%, -50%) rotate(var(--orbit-angle)) translateY(calc(var(--orbit-radius) * -1)) rotate(calc(var(--orbit-angle) * -1)) scale(var(--marker-scale,1));transform-origin:50%;background:var(--marker-bg,#f4c866);color:#3f2e23;pointer-events:auto;animation:orbit-spread var(--orbit-spread-duration) var(--motion-pop) both, orbit-bird 34s linear infinite;animation-delay:var(--orbit-delay), calc(var(--orbit-delay) + var(--orbit-spread-duration) + var(--orbit-start-pause));border:4px solid #fff2c8;border-radius:50%;place-items:center;font-weight:900;transition:transform .16s,box-shadow .16s;display:grid;position:absolute;top:0;left:0;box-shadow:0 0 0 3px #513428,0 5px #5b3a2559}.expanded-bird-marker.outer-ring{--orbit-direction:-1;animation-duration:var(--orbit-spread-duration), 46s}.expanded-bird-marker:hover{box-shadow:0 0 0 3px #513428,0 9px #5b3a2547}.expanded-cluster-birds.closing .expanded-bird-marker{pointer-events:none;transform:translate(-50%, -50%) rotate(var(--collapse-angle,var(--orbit-angle))) translateY(calc(var(--orbit-radius) * -1)) rotate(calc(var(--collapse-angle,var(--orbit-angle)) * -1)) scale(var(--marker-scale,1));animation:orbit-collapse .28s var(--motion-smooth) both;animation-delay:calc((var(--bird-count,1) - var(--bird-index,0)) * 18ms)}@keyframes orbit-collapse{0%{opacity:1;transform:translate(-50%, -50%) rotate(var(--collapse-angle,var(--orbit-angle))) translateY(calc(var(--orbit-radius) * -1)) rotate(calc(var(--collapse-angle,var(--orbit-angle)) * -1)) scale(var(--marker-scale,1))}to{opacity:0;transform:translate(-50%, -50%) rotate(var(--collapse-angle,var(--orbit-angle))) translateY(0) rotate(calc(var(--collapse-angle,var(--orbit-angle)) * -1)) scale(calc(var(--marker-scale,1) * .5));filter:saturate(.8)}}@keyframes orbit-spread{0%{opacity:0;transform:translate(-50%, -50%) rotate(var(--orbit-angle)) translateY(0) rotate(calc(var(--orbit-angle) * -1)) scale(calc(var(--marker-scale,1) * .56));filter:saturate(.78)}72%{opacity:1;transform:translate(-50%, -50%) rotate(var(--orbit-angle)) translateY(calc(var(--orbit-radius) * -1.08)) rotate(calc(var(--orbit-angle) * -1)) scale(calc(var(--marker-scale,1) * 1.04))}to{opacity:1;transform:translate(-50%, -50%) rotate(var(--orbit-angle)) translateY(calc(var(--orbit-radius) * -1)) rotate(calc(var(--orbit-angle) * -1)) scale(var(--marker-scale,1));filter:saturate()}}@keyframes orbit-bird{0%{transform:translate(-50%, -50%) rotate(var(--orbit-angle)) translateY(calc(var(--orbit-radius) * -1)) rotate(calc(var(--orbit-angle) * -1)) scale(var(--marker-scale,1))}to{transform:translate(-50%, -50%) rotate(calc(var(--orbit-angle) + 360deg * var(--orbit-direction))) translateY(calc(var(--orbit-radius) * -1)) rotate(calc((var(--orbit-angle) + 360deg * var(--orbit-direction)) * -1)) scale(var(--marker-scale,1))}}.expanded-bird-avatar{color:#3f2e23;border-radius:50%;place-items:center;width:60px;height:60px;font-size:31px;display:grid;overflow:hidden}.expanded-bird-avatar img{object-fit:contain;object-position:left top;width:126px;max-width:none;height:126px;image-rendering:pixelated;transform:translate(-7px,-7px)}.map-error-action,.page-state{color:#3f2e23;background:#fff3c7;border:3px solid #513428;border-radius:8px;justify-content:center;align-items:center;gap:7px;padding:10px 12px;font-weight:900;display:inline-flex;position:absolute;inset:8px 72px auto 18px}.map-control-stack{z-index:10;gap:8px;display:grid;position:absolute;bottom:14px;right:14px}.map-control-stack button{color:#3f2e23;width:52px;height:52px;transition:transform .15s var(--motion-pop), box-shadow .15s var(--motion-smooth), background-color .18s var(--motion-smooth);background:#fff3c7;border:3px solid #513428;border-radius:8px;place-items:center;display:grid;box-shadow:0 4px #5b3a2547}.map-control-stack button:active{transform:translateY(2px);box-shadow:0 2px #3f5f2a47}.map-pick-hint{z-index:12;color:#3f2e23;pointer-events:none;animation:notice-in .18s var(--motion-pop) both;background:#fff3c7;border:3px solid #513428;border-radius:8px;padding:10px 14px;font-weight:900;position:absolute;bottom:18px;left:50%;transform:translate(-50%);box-shadow:4px 4px #5b3a253d}.page-state{text-align:center;place-items:center;min-height:240px;display:grid;position:static;inset:auto}.section-heading{justify-content:space-between;align-items:end;gap:10px;margin:4px 2px 12px;display:flex}.section-heading h2,.section-heading p{margin:0}.section-heading h2{font-size:29px}.section-heading p{color:#8d6b2f;font-size:18px;font-weight:800}.record-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;padding-bottom:12px;display:grid}.load-more-button{color:#3f2e23;width:100%;min-height:48px;transition:transform .15s var(--motion-pop), box-shadow .15s var(--motion-smooth), background-color .18s var(--motion-smooth);background:#f7c75f;border:3px solid #513428;border-radius:8px;place-items:center;margin-top:8px;font-weight:900;display:grid;box-shadow:0 4px #9a5a2c}.auto-load-sentinel{color:#8d6b2f;min-height:46px;animation:notice-in .22s var(--motion-pop) both;place-items:center;margin-top:10px;font-weight:900;display:grid}.record-card{color:#3f2e23;text-align:left;animation:card-rise .26s var(--motion-smooth) both;transition:transform .17s var(--motion-pop), box-shadow .17s var(--motion-smooth), background-color .18s var(--motion-smooth);background:#fff2c8 url(/assets/bird_card-3khpMpXQ.webp) 50%/100% 100% no-repeat;border:4px solid #70442d;border-radius:8px;gap:7px;padding:9px;display:grid;box-shadow:5px 5px #5b3a2533}.record-card:hover{transform:translateY(-4px);box-shadow:6px 9px #5b3a252b}.record-card:active{transform:translateY(2px);box-shadow:3px 3px #5b3a2533}.record-thumb{aspect-ratio:1.25;color:#466f36;background:#d9edb6;border:3px solid #70442d;border-radius:5px;place-items:center;font-size:34px;font-weight:900;display:grid;position:relative;overflow:hidden}.record-thumb img{object-fit:cover;object-position:center;image-rendering:auto;width:100%;height:100%;transition:transform .26s var(--motion-smooth), filter .26s var(--motion-smooth);display:block;position:absolute;inset:0}.record-card:hover .record-thumb img{transform:scale(1.035)}.record-thumb.pixel-bird-thumb{background:linear-gradient(45deg,#fff8db66 25%,#0000 25% 75%,#fff8db66 75%) 0 0/18px 18px,#d9edb6}.record-thumb.pixel-bird-thumb img{object-fit:cover;width:calc(100% - 16px);height:calc(100% - 16px);image-rendering:pixelated;inset:8px}.bird-guide-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding-bottom:14px;display:grid}.bird-guide-card{color:#3f2e23;text-align:left;min-height:118px;transition:transform .17s var(--motion-pop), box-shadow .17s var(--motion-smooth), background-color .18s var(--motion-smooth);animation:bird-card-enter .32s var(--motion-smooth) both;animation-delay:calc(min(var(--bird-index,0), 8) * 36ms);background:#fff2c8;border:4px solid #70442d;border-radius:8px;grid-template-columns:82px minmax(0,1fr);gap:10px;padding:9px;display:grid;box-shadow:5px 5px #5b3a2533}.bird-guide-card:hover{transform:translateY(-4px)scale(1.01);box-shadow:6px 9px #5b3a252b}.bird-guide-card.uncollected{color:#6f6659;filter:saturate(.72);background:#efe6cf}.bird-guide-card.uncollected .bird-guide-image{background:linear-gradient(45deg,#fff8db47 25%,#0000 25% 75%,#fff8db47 75%) 0 0/18px 18px,#d8d2bf}.bird-guide-card.uncollected .bird-guide-image img,.bird-detail-hero.uncollected .bird-detail-image img{opacity:.5;filter:grayscale()brightness(.52)contrast(1.25)}.bird-guide-card.collected{background:#fff2c8 url(/assets/bird_handbook_back-D_ogQuBb.webp) 50%/cover}.bird-guide-card:active,.bird-back-button:active,.bird-record-row:active{transform:translateY(2px);box-shadow:3px 3px #5b3a2533}.bird-guide-image,.bird-detail-image,.bird-record-thumb{color:#466f36;background:linear-gradient(45deg,#fff8db66 25%,#0000 25% 75%,#fff8db66 75%) 0 0/18px 18px,#d9edb6;border:3px solid #70442d;place-items:center;font-weight:900;display:grid;overflow:hidden}.bird-guide-image{border-radius:7px;width:82px;height:82px}.bird-guide-image img,.bird-detail-image img,.bird-record-thumb img{object-fit:contain;width:100%;height:100%;image-rendering:pixelated;transition:transform .26s var(--motion-smooth)}.bird-guide-card:hover .bird-guide-image img{transform:translateY(-2px)scale(1.06)}.bird-guide-content{align-content:start;gap:7px;min-width:0;display:grid}.bird-guide-title{gap:4px;display:grid}.bird-guide-title h3{margin:0;font-size:22px}.bird-guide-content p,.bird-detail-note{color:#755b43;margin:0;line-height:1.35}.bird-guide-content p{align-items:center;gap:4px;font-size:17px;display:inline-flex}.rarity-badge{color:#466f36;width:fit-content;animation:badge-pop .26s var(--motion-pop) both;background:#e6f5c8;border:2px solid #6d984b;border-radius:6px;padding:3px 7px;font-size:16px;font-weight:900;display:inline-flex}.rarity-偶见{color:#8d6122;background:#fff0bd;border-color:#c18a2e}.rarity-少见{color:#994532;background:#ffe1cf;border-color:#b96c57}.bird-detail-view{align-content:start;gap:12px;display:grid}.bird-back-button{color:#3f2e23;min-height:40px;transition:transform .15s var(--motion-pop), box-shadow .15s var(--motion-smooth), background-color .18s var(--motion-smooth);animation:bird-detail-step .26s var(--motion-smooth) both;background:#fff8db;border:3px solid #70442d;border-radius:8px;justify-self:start;align-items:center;gap:6px;padding:6px 12px;font-weight:900;display:inline-flex;box-shadow:0 4px #5b3a2538}.bird-back-button:hover{background:#fff2c8;transform:translateY(-2px);box-shadow:0 6px #5b3a2533}.bird-detail-hero{animation:bird-detail-hero-in .34s var(--motion-pop) both;background-color:#fff2c8;background-image:linear-gradient(90deg,#70442d0d 1px,#0000 1px),none;background-position:0 0,0 0;background-repeat:repeat,repeat;background-size:12px 12px;background-attachment:scroll,scroll;background-origin:padding-box,padding-box;background-clip:border-box,border-box;border:0;border-radius:0;grid-template-columns:136px minmax(0,1fr);align-items:center;gap:14px;padding:14px;display:grid;box-shadow:inset 0 0 0 4px #ffeaa79e,5px 5px #5b3a2538}.bird-detail-hero.uncollected{filter:saturate(.78);background:linear-gradient(90deg,#70442d0d 1px,#0000 1px),#eee5d2}.bird-detail-image{border-width:4px;border-radius:10px;width:136px;height:136px}.bird-detail-image img{animation:bird-image-bob .46s var(--motion-pop) both}.bird-detail-hero h2{margin:0 0 8px;font-size:36px}.collection-status{color:#755b43;margin:9px 0 0;font-weight:900}.bird-info-panel{animation:bird-detail-step .32s var(--motion-smooth) both;background:#fff8db;border:4px solid #70442d;border-radius:8px;gap:9px;padding:12px;display:grid;box-shadow:4px 4px #5b3a2529}.bird-detail-view .bird-info-panel:nth-of-type(2){animation-delay:55ms}.bird-detail-view .bird-info-panel:nth-of-type(3){animation-delay:95ms}.bird-detail-view .bird-info-panel:nth-of-type(4){animation-delay:.135s}.bird-detail-view .bird-info-panel:nth-of-type(5){animation-delay:.175s}.bird-info-panel h3{margin:0;font-size:23px}.bird-info-panel p{color:#5c573f;align-items:center;gap:6px;margin:0;line-height:1.45;display:inline-flex}.bird-info-panel ul{color:#5c573f;gap:6px;margin:0;padding-left:22px;line-height:1.45;display:grid}.bird-tag-row{flex-wrap:wrap;gap:7px;display:flex}.bird-tag-row span{color:#66523d;animation:badge-pop .24s var(--motion-pop) both;background:#fff2c8;border:2px solid #d19b5a;border-radius:7px;padding:5px 8px;font-weight:900}.book-stats.compact{justify-content:start}.bird-record-list{gap:8px;display:grid}.bird-record-row{color:#3f2e23;text-align:left;transition:transform .15s var(--motion-pop), box-shadow .15s var(--motion-smooth), background-color .18s var(--motion-smooth);animation:bird-record-enter .26s var(--motion-smooth) both;background:#fff2c8;border:3px solid #70442d;border-radius:8px;grid-template-columns:58px minmax(0,1fr);align-items:center;gap:9px;padding:7px;display:grid}.bird-record-row:hover{background:#fff7d8;transform:translateY(-3px);box-shadow:4px 6px #5b3a2526}.bird-record-thumb{border-radius:7px;width:58px;height:58px}.bird-record-row strong,.bird-record-row time{display:block}.bird-record-row strong{font-size:19px}.bird-record-row time{color:#755b43;margin-top:3px;font-size:16px}.record-card h3,.record-card p{margin:0}.record-card h3{font-size:23px}.record-card p,.record-card time{color:#755b43;align-items:center;gap:4px;font-size:18px;display:inline-flex}.empty-book,.window-scene{text-align:center;animation:card-rise .3s var(--motion-smooth) both;background:linear-gradient(#fff2c8 0 56%,#d49a62 57%),#fff2c8;border:5px solid #513428;border-radius:12px;place-items:center;gap:10px;margin:8px 0 16px;padding:24px 18px;display:grid;box-shadow:inset 0 0 0 4px #ffeaa79e,5px 5px #5b3a2538}.empty-book h2,.empty-book p,.window-scene h2,.window-scene p{margin:0}.book-stats,.profile-stats{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.book-stats span,.profile-stats span{background:#fff8db;border:3px solid #70442d;border-radius:7px;align-items:center;gap:5px;padding:6px 9px;font-weight:900;display:inline-flex}.profile-info-box{text-align:center;flex-direction:column;justify-self:start;align-items:center;gap:4px;width:50%;display:flex}.profile-info-box .profile-stats{justify-content:center;margin-top:4px}.profile-name-edit{color:#3f2e23;background:0 0;justify-content:center;align-items:center;gap:6px;display:inline-flex}.profile-name-edit h2{margin:0}.profile-edit-form{width:min(100%,230px);animation:profile-edit-in .22s var(--motion-pop) both;gap:5px;display:grid}.profile-edit-form input,.profile-edit-form textarea{color:#3f2e23;width:100%;font:inherit;background:#fff8db;border:3px solid #70442d;border-radius:7px;font-weight:900}.profile-edit-form input{text-align:center;height:32px;min-height:32px;padding:4px 8px}.profile-edit-form textarea{resize:none;text-align:center;height:44px;min-height:44px;padding:5px 8px;line-height:1.25}.profile-error{color:#9a3d22;margin:0;font-size:17px;font-weight:900}.profile-edit-actions{justify-content:center;gap:8px;display:flex}.profile-edit-actions button{color:#3f2e23;background:#f4c866;border:3px solid #70442d;border-radius:7px;place-items:center;width:36px;height:30px;display:grid}.window-scene{background:#fff2c8 url(/assets/window-CfbjO_r8.webp) 50%/cover;height:230px;min-height:230px;position:relative;overflow:hidden}.profile-records{min-width:0}@media (width>=760px){.profile-view{grid-template-rows:auto 1fr;grid-template-columns:minmax(280px,360px) minmax(0,1fr);align-items:start;gap:16px 20px;display:grid}.profile-view .window-scene{grid-row:1/span 2;height:calc(100vh - 260px);min-height:calc(100vh - 260px);margin:0;position:sticky;top:12px}.profile-view .section-heading{margin-top:0}.profile-records .record-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}}.profile-icon-button{color:#3f2e23;width:38px;height:38px;transition:transform .15s var(--motion-pop), box-shadow .15s var(--motion-smooth), background-color .18s var(--motion-smooth);background:#fff8db;border:3px solid #70442d;border-radius:7px;place-items:center;display:grid;position:absolute;top:12px}.profile-icon-button:hover,.small-action:hover,.load-more-button:hover{transform:translateY(-3px)}.profile-icon-button.settings{right:58px}.profile-icon-button.logout{right:12px}.avatar-pixel{background:#f4c866;border:4px solid #513428;border-radius:10px;place-items:center;width:72px;height:72px;font-size:28px;font-weight:900;display:grid;box-shadow:5px 5px #b77942}.small-action{color:#3f2e23;transition:transform .15s var(--motion-pop), box-shadow .15s var(--motion-smooth), background-color .18s var(--motion-smooth);background:#f8c94c;border:3px solid #70442d;border-radius:8px;padding:9px 16px;font-weight:900;box-shadow:0 4px #9a5a2c}@keyframes map-panel-in{0%{opacity:0;transform:scale(.985)}to{opacity:1;transform:scale(1)}}@keyframes map-deco-in{0%{opacity:0;transform:translateY(8px)scale(.92)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes marker-drop-in{0%{opacity:0;transform:translate(-50%, -70%) scale(calc(var(--marker-scale,1) * .72))}to{opacity:1;transform:translate(-50%, -50%) scale(var(--marker-scale,1))}}@keyframes cluster-pulse{0%{filter:brightness()}45%{filter:brightness(1.1)}to{filter:brightness()}}@keyframes orbit-pop{0%{opacity:0;filter:saturate(.8)}to{opacity:1;filter:saturate()}}@keyframes card-rise{0%{opacity:0;transform:translateY(12px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes bird-card-enter{0%{opacity:0;filter:saturate(.82);transform:translateY(14px)scale(.96)}to{opacity:1;filter:saturate();transform:translateY(0)scale(1)}}@keyframes bird-detail-hero-in{0%{opacity:0;filter:saturate(.82);transform:translateY(16px)scale(.96)}72%{opacity:1;transform:translateY(-2px)scale(1.01)}to{opacity:1;filter:saturate();transform:translateY(0)scale(1)}}@keyframes bird-detail-step{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes bird-record-enter{0%{opacity:0;transform:translate(10px)}to{opacity:1;transform:translate(0)}}@keyframes bird-image-bob{0%{transform:translateY(6px)scale(.92)}70%{transform:translateY(-3px)scale(1.04)}to{transform:translateY(0)scale(1)}}@keyframes badge-pop{0%{opacity:0;transform:scale(.82)}to{opacity:1;transform:scale(1)}}@keyframes profile-edit-in{0%{opacity:0;transform:translateY(8px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}.app-layout{color:#3f2e23;background:linear-gradient(90deg,#5c3e240d 1px,#0000 1px) 0 0/12px 12px,linear-gradient(0deg,#5c3e240d 1px,#0000 1px) 0 0/12px 12px,linear-gradient(#fff0c6 0%,#ffe1a8 42%,#f7c982 100%);width:100%;height:100%;position:relative;overflow:hidden}@media (width<=520px),(height<=760px){.app-layout{transform-origin:0 0;width:200%;height:200%;transform:scale(.5)}}.search-strip{z-index:19;animation:search-drop .36s var(--motion-pop) both;background:#fff0c6;grid-template-columns:1fr auto;gap:10px;padding:12px 16px 14px;display:grid;position:absolute;top:0;left:0;right:0;box-shadow:0 4px #7b4e2b1f}.pixel-input{color:#6d8f4f;background-color:#fff8db;background-image:linear-gradient(90deg,#ffe69d61 1px,#0000 1px),none;background-position:0 0,0 0;background-repeat:repeat,repeat;background-size:8px 8px;background-attachment:scroll,scroll;background-origin:padding-box,padding-box;background-clip:border-box,border-box;border:4px solid #70442d;border-radius:8px;align-items:center;gap:8px;min-width:0;height:48px;padding:0 12px;font-size:23px;display:flex;box-shadow:inset 0 -5px #d5914d3b}.pixel-input input{color:#3f2e23;background:0 0;border:0;outline:0;width:100%;min-width:0}.pixel-input input::placeholder{color:#9b7d5b}.search-clear{color:#3f2e23;width:28px;height:28px;animation:pixel-pop .16s var(--motion-pop) both;background:#fff0c6;border:2px solid #70442d;border-radius:6px;flex:none;place-items:center;padding:0;line-height:1;display:grid}.search-clear svg{display:block}.filter-chip{color:#3f2e23;height:48px;transition:transform .16s var(--motion-smooth), background-color .18s var(--motion-smooth), box-shadow .16s var(--motion-smooth);background:#f7c75f;border:4px solid #70442d;border-radius:8px;align-items:center;gap:5px;padding:0 12px;font-size:23px;font-weight:900;display:inline-flex;box-shadow:4px 4px #8c603b}.filter-chip.active{background:#e5a65f;transform:translateY(2px);box-shadow:2px 2px #8c603b}.filter-panel,.filter-section{gap:12px;display:grid}.filter-section h3{margin:0;font-size:22px}.segmented-control.three{grid-template-columns:repeat(3,1fr)}.option-chip-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.option-chip-grid button{color:#3f2e23;min-height:40px;transition:transform .15s var(--motion-pop), background-color .18s var(--motion-smooth), box-shadow .18s var(--motion-smooth);background:#fff8db;border:3px solid #70442d;border-radius:8px;padding:8px 10px;font-weight:900}.option-chip-grid button.active{background:#f4c866;transform:translateY(2px);box-shadow:inset 0 -4px #9a5a2c3d}.option-chip-grid p{color:#756f5c;grid-column:1/-1;margin:0}.app-content{overscroll-behavior:contain;background-color:#f9d995;background-image:linear-gradient(90deg,#603d250e 1px,#0000 1px),linear-gradient(0deg,#603d250e 1px,#0000 1px),none;background-position:0 0,0 0,0 0;background-repeat:repeat,repeat,repeat;background-size:14px 14px;background-attachment:scroll,scroll,scroll;background-origin:padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box;position:absolute;inset:74px 0 82px;overflow-y:auto}.app-content>*{animation:view-enter .26s var(--motion-smooth) both}.floating-create{z-index:25;color:#fff8df;width:88px;height:88px;transition:transform .18s var(--motion-pop), box-shadow .18s var(--motion-smooth);animation:create-rise .42s var(--motion-pop) both;background:linear-gradient(#f7c75f 0 52%,#d99845 53% 100%);border:5px solid #513428;border-radius:50%;place-items:center;display:grid;position:absolute;bottom:28px;left:50%;transform:translate(-50%);box-shadow:0 0 0 12px #fff2c8,0 8px #5a3a29}.floating-create:hover{transform:translate(-50%)translateY(-4px)}.floating-create:active{transform:translate(-50%)translateY(3px);box-shadow:0 0 0 10px #fff2c8,0 4px #5a3a29}.floating-create span{font-size:25px;font-weight:900;position:absolute;top:9px;right:18px}.bottom-nav{z-index:21;background:#fff1bf;border-top:4px solid #513428;grid-template-columns:minmax(58px,1fr) minmax(58px,1fr) 138px minmax(58px,1fr) minmax(58px,1fr);height:82px;padding:7px 10px 9px;display:grid;position:absolute;bottom:0;left:0;right:0;box-shadow:0 -5px #7b4e2b29}.nav-action:first-child{grid-column:1}.nav-action:nth-child(2){grid-column:2}.nav-action:nth-child(3){grid-column:4}.nav-action:nth-child(4){grid-column:5}.nav-action{color:#7a6049;min-height:62px;transition:transform .16s var(--motion-pop), background-color .18s var(--motion-smooth), box-shadow .18s var(--motion-smooth), color .18s var(--motion-smooth), border-color .18s var(--motion-smooth);background:0 0;border:3px solid #0000;border-radius:10px;align-content:center;place-items:center;gap:4px;font-size:20px;font-weight:900;display:grid}.nav-action.active{color:#513428;animation:nav-bounce .26s var(--motion-pop) both;background:#f4c866;border-color:#513428;transform:translateY(-4px);box-shadow:4px 4px #b77942}.nav-action.active span{box-shadow:none;background:0 0;border:0;border-radius:0;padding:0}.drawer-layer{z-index:50;animation:drawer-layer-in .22s var(--motion-smooth) both;position:absolute;inset:0}.drawer-layer.closing{animation:drawer-layer-out .26s var(--motion-smooth) both}.drawer-scrim{width:100%;transition:background-color .22s var(--motion-smooth);background:#3f2e2347;position:absolute;inset:0}.drawer-layer.closing .drawer-scrim{background:#3f2e2300}.bottom-drawer{height:var(--drawer-height,auto);max-height:calc(100% - 12px);animation:drawer-slide-in .28s var(--motion-pop) both;transition:max-height .26s var(--motion-smooth), height .26s var(--motion-smooth), border-radius .26s var(--motion-smooth), box-shadow .26s var(--motion-smooth);background:#fff0c6 url(/assets/drawer_back-CJn0rMu8.webp) 50%/100% 100% no-repeat;border:5px solid #513428;border-bottom:0;border-radius:18px 18px 0 0;flex-direction:column;padding:8px 16px 0;display:flex;position:absolute;bottom:0;left:0;right:0;overflow:hidden;box-shadow:0 -8px #70442d47}.drawer-layer.closing .bottom-drawer{animation:drawer-slide-out .26s var(--motion-smooth) both}.bottom-drawer.expanded{border-radius:16px 16px 0 0}.drawer-sticky-top{z-index:2;background:0 0;flex:none;margin:-8px -16px 14px;padding:8px 16px 2px;position:relative;box-shadow:0 4px #70442d14}.drawer-body{overscroll-behavior:contain;min-height:0;padding-bottom:22px;overflow-y:auto}.drawer-handle{touch-action:none;cursor:ns-resize;background:0 0;place-items:center;width:100%;height:24px;margin:0 0 8px;display:grid}.drawer-handle span{width:58px;height:7px;transition:width .18s var(--motion-smooth), background-color .18s var(--motion-smooth);background:#e5a65f;border-radius:2px;box-shadow:0 3px #70442d}.drawer-handle:hover span{background:#f4c866;width:72px}.drawer-header{justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.drawer-header h2{margin:0;font-size:30px}.drawer-close{color:#3f2e23;background:#fff7d8;border:3px solid #513428;border-radius:8px;place-items:center;width:38px;height:38px;display:grid}.drawer-form{gap:12px;display:grid}.drawer-form label{color:#4a5c32;gap:6px;font-weight:900;display:grid}.drawer-form input,.drawer-form textarea{color:#3f2e23;background:#fff8db;border:3px solid #70442d;border-radius:8px;outline:0;width:100%;padding:11px 12px;font-size:20px}.drawer-form textarea{resize:vertical;min-height:84px}.segmented-control,.visibility-toggle{grid-template-columns:repeat(2,1fr);gap:8px;display:grid}.segmented-control button,.visibility-toggle button,.candidate-list button,.location-tools button{color:#3f2e23;min-height:42px;transition:transform .15s var(--motion-pop), background-color .18s var(--motion-smooth), box-shadow .18s var(--motion-smooth);background:#fff8db;border:3px solid #70442d;border-radius:8px;font-weight:900}.segmented-control .active,.visibility-toggle .active,.candidate-list .selected{background:#f4c866;transform:translateY(2px);box-shadow:inset 0 -4px #9a5a2c3d}.primary-action{color:#3f2e23;min-height:52px;transition:transform .15s var(--motion-pop), box-shadow .15s var(--motion-smooth);background:#f7c24c;border:4px solid #70442d;border-radius:8px;font-size:23px;font-weight:900;box-shadow:0 5px #9a5a2c}.primary-action:active,.settings-action:active,.load-more-button:active,.small-action:active{transform:translateY(3px);box-shadow:0 2px #9a5a2c}.drawer-note,.drawer-error{animation:notice-in .22s var(--motion-pop) both;border-radius:8px;margin:0;padding:10px 12px;line-height:1.5}.drawer-note{color:#466f36;background:#eaf7d7}.drawer-error{color:#9a3d22;background:#ffe6d5}.image-picker{text-align:center;background:#fff8db;border:3px dashed #70442d;border-radius:10px;place-items:center;min-height:152px;padding:16px}.image-picker input{display:none}.image-picker img{object-fit:cover;border-radius:10px;width:100%;max-height:180px}.candidate-section h3{margin:0 0 8px}.candidate-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.candidate-list button span{color:#6b8d42;font-size:18px;display:block}.candidate-list p{color:#756f5c;grid-column:1/-1;margin:0}.location-tools{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.location-tools button{justify-content:center;align-items:center;gap:6px;display:inline-flex}.location-tools button:disabled{opacity:.72}.location-readout{color:#66523d;background:#fff8db;border:3px solid #d19b5a;border-radius:8px;align-items:center;gap:6px;margin:-2px 0 0;padding:8px 10px;font-size:18px;font-weight:900;display:inline-flex}.detail-card{gap:12px;display:grid}.detail-image{color:#8d6b2f;background:#f8e2a4;border:4px solid #70442d;border-radius:8px;place-items:center;font-size:48px;font-weight:900;display:grid;overflow:hidden}.detail-image img{object-fit:contain;object-position:center;background:#f6f1d8;width:100%;height:auto;max-height:min(68vh,720px)}.detail-title-row{justify-content:space-between;align-items:center;gap:12px;display:flex}.detail-title-row h3{margin:0;font-size:31px}.detail-title-row span{background:#e6f5c8;border:2px solid #6d984b;border-radius:8px;padding:5px 10px;font-size:20px;font-weight:900}.detail-meta p,.detail-description{color:#5c573f;margin:0 0 6px;font-size:21px;line-height:1.55}.confidence-bar{background:#fff0c6;border:3px solid #70442d;border-radius:8px;grid-template-columns:1fr auto;gap:8px;padding:10px;font-size:20px;display:grid;position:relative;overflow:hidden}.confidence-bar i{background:#7dbb51;height:5px;position:absolute;bottom:0;left:0}.detail-danger-zone{border-top:3px dashed #d49a62;gap:8px;margin-top:4px;padding-top:12px;display:grid}.detail-danger-zone p{color:#9a3d22;margin:0;font-weight:900;line-height:1.45}.settings-action:disabled,.primary-action:disabled{cursor:wait;opacity:.7;transform:none}.toast-message{z-index:60;color:#3f2e23;text-align:center;animation:toast-in .26s var(--motion-pop) both;background:#fff3c7;border:4px solid #70442d;border-radius:8px;padding:12px 14px;font-weight:900;position:absolute;top:78px;left:16px;right:16px;box-shadow:5px 5px #53342547}.settings-panel{gap:12px;display:grid}.settings-card{background:#fff8db;border:3px solid #70442d;border-radius:8px;grid-template-columns:auto 1fr;align-items:center;gap:12px;padding:12px;display:grid}.settings-card h3,.settings-card p{margin:0}.settings-card p{color:#756f5c;margin-top:3px;line-height:1.45}.settings-action{color:#3f2e23;min-height:48px;transition:transform .15s var(--motion-pop), box-shadow .15s var(--motion-smooth), background-color .18s var(--motion-smooth);background:#f4c866;border:3px solid #70442d;border-radius:8px;justify-content:center;align-items:center;gap:8px;font-weight:900;display:inline-flex;box-shadow:0 4px #8c603b}@keyframes search-drop{0%{opacity:0;transform:translateY(-14px)}to{opacity:1;transform:translateY(0)}}@keyframes view-enter{0%{opacity:0;transform:translateY(10px)scale(.99)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes create-rise{0%{opacity:0;transform:translate(-50%)translateY(18px)scale(.84)}to{opacity:1;transform:translate(-50%)translateY(0)scale(1)}}@keyframes nav-bounce{0%{transform:translateY(0)scale(1)}70%{transform:translateY(-5px)scale(1.04)}to{transform:translateY(-4px)scale(1)}}@keyframes drawer-layer-in{0%{opacity:0}to{opacity:1}}@keyframes drawer-layer-out{0%{opacity:1}to{opacity:0}}@keyframes drawer-slide-in{0%{transform:translateY(105%)}to{transform:translateY(0)}}@keyframes drawer-slide-out{0%{transform:translateY(0)}to{transform:translateY(105%)}}@keyframes toast-in{0%{opacity:0;transform:translateY(-12px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes pixel-pop{0%{opacity:0;transform:scale(.72)}to{opacity:1;transform:scale(1)}}@keyframes notice-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.settings-action.danger{background:#ffd9b8;border-color:#9a6b35;box-shadow:0 4px #c58c51}.app-shell{color:#3f2e23;background:linear-gradient(90deg,#633d2314 1px,#0000 1px) 0 0/18px 18px,linear-gradient(0deg,#633d2314 1px,#0000 1px) 0 0/18px 18px,radial-gradient(circle at 20% 16%,#fff9c4f2 0 10%,#0000 11%),radial-gradient(circle at 82% 78%,#98c17094 0 14%,#0000 15%),linear-gradient(135deg,#f8d895 0%,#f3c579 45%,#dba36a 100%);place-items:center;min-height:100vh;padding:18px;display:grid}.mobile-frame{width:min(100%,667px);height:min(1279px,100dvh - 36px);min-height:680px;image-rendering:pixelated;background:#fff2c8;border:6px solid #513428;border-radius:28px;position:relative;overflow:hidden;box-shadow:0 0 0 6px #f7e1ab,0 18px #53342561,0 28px 38px #53342540}@media (width<=520px),(height<=760px){.app-shell{padding:0}.mobile-frame{width:100%;height:100dvh;min-height:100dvh;box-shadow:none;border:0;border-radius:0}}
