:root{color-scheme:light;--ink:#23382e;--muted:#78867c;--cream:#fbf8f1;--green:#426b51;--orange:#ef8b59;--line:#eee9df;font-family:-apple-system,BlinkMacSystemFont,Noto Sans TC,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}body,html{width:100%;min-height:100%;margin:0}html{overscroll-behavior-y:none}body{color:var(--ink);background:var(--cream);overscroll-behavior:none}button,input,select,textarea{font:inherit}button{color:inherit}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #91b79c;outline-offset:2px}.app-shell{position:relative;width:100%;height:100dvh;min-height:620px;overflow:hidden;background:#eff1e8}.map-canvas{position:absolute;inset:0;overflow:hidden}.map-canvas,.map-canvas.google-map{background:#e8ecdf}.google-map-host{position:absolute;inset:0}.fallback-map{position:absolute;z-index:1;inset:-5%;overflow:hidden;background:#e9ecdf}.map-water{position:absolute;right:-16%;bottom:-29%;width:61%;height:57%;border-radius:48% 0 0;transform:rotate(-16deg);background:#cce2e2}.map-park{position:absolute;border-radius:48% 52% 45% 55%;background:#d5e3cc}.park-one{left:-9%;top:29%;width:46%;height:23%;transform:rotate(-21deg)}.park-two{right:12%;top:13%;width:31%;height:19%;transform:rotate(24deg)}.park-three{left:32%;bottom:17%;width:27%;height:18%;transform:rotate(-9deg)}.map-road{position:absolute;height:12px;border:3px solid #fffdf7;border-left:0;border-right:0;background:#e8d9bf;border-radius:50%;opacity:.95}.road-one{left:-10%;top:26%;width:120%;transform:rotate(17deg)}.road-two{left:-13%;top:47%;width:125%;transform:rotate(-11deg)}.road-three{left:-10%;top:70%;width:120%;transform:rotate(24deg)}.road-four{left:4%;top:50%;width:95%;transform:rotate(78deg)}.road-five{left:30%;top:43%;width:82%;transform:rotate(-64deg)}.map-label{position:absolute;color:#778273;font-size:11px;letter-spacing:.04em;font-weight:600}.map-marker{position:absolute;z-index:2;transform:translate(-50%,-100%);border:0;background:transparent;cursor:pointer}.map-marker img{width:46px;height:46px;object-fit:cover;border:3px solid white;border-radius:50% 50% 50% 7px;transform:rotate(-45deg);box-shadow:0 3px 12px #263a3029}.map-marker img:after{content:""}.map-marker.selected img{border-color:#ef8b59}.fallback-user-location,.google-user-location{position:absolute;z-index:3;width:34px;height:34px;transform:translate(-50%,-50%);border-radius:50%;background:#4285f433;pointer-events:none}.google-user-location{z-index:1001}.fallback-user-location:after,.google-user-location:after{position:absolute;top:50%;left:50%;width:14px;height:14px;transform:translate(-50%,-50%);border:2px solid white;border-radius:50%;background:#4285f4;box-shadow:0 1px 4px #20362b55;content:""}.top-area{position:absolute;z-index:5;top:max(18px,env(safe-area-inset-top));left:16px;right:16px}.brand-button{display:flex;width:100%;height:49px;align-items:center;gap:10px;padding:4px 12px 4px 5px;border:1px solid #ffffffcf;border-radius:16px;background:#fffdf5f2;box-shadow:0 5px 18px #20362b12;cursor:pointer;text-align:left}.brand-mark{display:grid;width:39px;height:39px;flex:none;place-items:center;border-radius:12px;background:#d5a72e;color:white;transition:background .2s ease}.brand-button.status-green .brand-mark{background:#548461}.brand-button.status-red .brand-mark{background:#ce4f45}.brand-name{font-size:16px;font-weight:800;letter-spacing:-.03em}.brand-status-label{margin-left:auto;color:#78867c;font-size:11px;font-weight:700}.brand-button.status-red .brand-status-label{color:#bd4b40}.brand-button.status-green .brand-status-label{color:#4c7754}.app-menu{position:absolute;z-index:6;top:calc(max(18px, env(safe-area-inset-top)) + 58px);left:16px;right:16px;padding:17px;border:1px solid #ffffffd9;border-radius:20px;background:#fffdf8;box-shadow:0 12px 34px #20362b26;opacity:0;transform:translateY(-8px);visibility:hidden;pointer-events:none;transition:opacity .2s ease,transform .2s ease,visibility .2s}.app-menu.open{opacity:1;transform:translateY(0);visibility:visible;pointer-events:auto}.app-menu-title{display:flex;align-items:center;justify-content:space-between;font-size:15px}.app-menu-status{margin:6px 0 13px;color:#728077;font-size:11px}.app-menu-notes{display:grid;gap:9px;margin:0;padding:13px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);list-style:none;color:#65746a;font-size:11px;line-height:1.5}.app-menu-notes li{display:flex;align-items:center;gap:8px}.status-indicator{display:inline-block;width:9px;height:9px;flex:none;border-radius:50%;background:#d5a72e}.status-indicator.status-green{background:#548461}.status-indicator.status-red{background:#ce4f45}.permission-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:13px}.permission-actions button{min-height:38px;padding:8px;border:0;border-radius:11px;background:#eef3eb;color:#426b51;font-size:11px;font-weight:800;cursor:pointer}.account-panel{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;margin-top:12px;color:#637168;font-size:11px}.account-panel>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account-panel>button{min-height:34px;padding:7px 10px;border:0;border-radius:10px;background:#426b51;color:white;font-size:11px;font-weight:800;cursor:pointer}.legal-links{grid-column:1/-1;display:flex;gap:16px;padding-top:3px}.auth-modal a,.legal-links a,.legal-page a{color:#426b51;font-weight:700;text-decoration:underline;text-underline-offset:2px}.install-pwa-button{width:100%;min-height:38px;margin-top:8px;padding:8px;border:1px solid var(--line);border-radius:11px;background:#fffdf8;color:var(--ink);font-size:11px;font-weight:800;cursor:pointer}.search-wrap{display:flex;height:49px;align-items:center;gap:10px;padding:0 15px;border:1px solid #ffffffcf;border-radius:16px;background:#fffdf5f2;box-shadow:0 5px 18px #20362b12}.search-wrap input{width:100%;border:0;outline:0;background:transparent;color:var(--ink);font-size:14px}.search-wrap input::placeholder{color:#9a9e93}.locate-button{position:absolute;z-index:2;right:17px;bottom:calc(65px + env(safe-area-inset-bottom));display:grid;width:46px;height:46px;place-items:center;border:1px solid #fff;border-radius:16px;background:#f1f3f4;color:#5f6368;box-shadow:0 5px 18px #20362b20;cursor:pointer;transition:color .2s,background .2s,border-color .2s}.locate-button.following{border-color:#4285f4;background:#4285f4;color:#fff}.sheet-expanded .locate-button{bottom:calc(65dvh + 12px)}.sheet{position:absolute;z-index:3;right:0;bottom:0;left:0;height:calc(49px + env(safe-area-inset-bottom));max-height:70dvh;overflow:hidden;padding:4px 12px calc(5px + env(safe-area-inset-bottom));border-radius:27px 27px 0 0;background:#fffdf8;box-shadow:0 -8px 30px #273a3010;scrollbar-width:none;transition:height .38s cubic-bezier(.2,.75,.25,1),padding .38s ease,transform .3s ease}.sheet.expanded{height:65dvh;overflow-y:auto;padding:10px 18px calc(14px + env(safe-area-inset-bottom))}.sheet::-webkit-scrollbar{display:none}.sheet-heading{display:flex;align-items:center;gap:6px;margin-bottom:0}.sheet.expanded .sheet-heading{display:grid;grid-template-columns:minmax(0,1fr) 40px;grid-template-rows:40px auto;column-gap:10px;row-gap:8px;margin-bottom:8px}.sheet-content{animation:sheet-content-in .24s ease-out both}@keyframes sheet-content-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.app-menu,.locate-button,.location-picker-active .sheet,.location-picker-active .top-area,.sheet{transition:none}.location-picker-pin,.location-picker-ui,.modal-backdrop,.report-modal,.sheet-content{animation:none}}.sheet-expand{display:flex;min-width:0;height:40px;flex:1 1;align-items:center;justify-content:space-between;gap:8px;padding:0;border:0;background:transparent;cursor:pointer;text-align:left}.sheet.expanded .sheet-expand{grid-column:1;grid-row:1;width:100%;flex:initial}.sheet-title{display:flex;align-items:center;gap:5px;font-size:17px;font-weight:800;letter-spacing:-.035em;white-space:nowrap}.sheet-title-short{display:none}.sheet:not(.expanded) .sheet-expand{width:auto;flex:none;justify-content:flex-start;gap:0}.sheet:not(.expanded) .sheet-title{gap:3px;font-size:11px;letter-spacing:0}.sheet:not(.expanded) .report-count,.sheet:not(.expanded) .sheet-title-long{display:none}.sheet:not(.expanded) .sheet-title-short{display:inline}.add-report-button{display:grid;width:40px;height:40px;flex:none;place-items:center;border:0;border-radius:13px;background:#426b51;color:white;box-shadow:0 4px 10px #426b5129;cursor:pointer}.sheet.expanded .add-report-button{grid-column:2;grid-row:1}.filters{display:flex;gap:7px;min-width:0;margin:0 -18px;padding:0 18px 2px;overflow-x:auto;scrollbar-width:none}.sheet.expanded .filters{grid-column:1/-1;grid-row:2;margin:0 -18px;padding:0 18px 2px}.sheet:not(.expanded) .filters{flex:1 1;gap:4px;margin:0;padding:0}.filters::-webkit-scrollbar{display:none}.filter-chip{display:flex;flex:none;align-items:center;gap:6px;padding:7px 10px;border:1px solid #ecebe3;border-radius:99px;background:white;color:#69766b;font-size:11px;font-weight:700;cursor:pointer}.sheet:not(.expanded) .filter-chip{gap:3px;padding:6px;font-size:10px}.filter-chip span{display:grid;min-width:17px;height:17px;place-items:center;padding:0 4px;border-radius:99px;background:#f3f3e9;color:#63765e;font-size:9px}.sheet:not(.expanded) .filter-chip span{min-width:15px;height:15px;padding:0 3px;font-size:8px}.filter-chip.active{border-color:#426b51;background:#426b51;color:white}.filter-chip.active span{background:#ffffff30;color:white}.sheet-search{margin:13px 0 12px;box-shadow:none}.sheet-expanded .report-card:first-of-type{margin-top:12px}.app-shell.sheet-expanded .selected-card{display:none}.report-card{display:flex;flex-wrap:wrap;gap:13px;min-height:100px;margin-bottom:11px;padding:10px;border:1px solid #efede6;border-radius:18px;background:white;cursor:pointer;text-align:left;width:100%}.report-photo{flex:none;width:78px;height:78px;border-radius:13px;object-fit:cover;background:#eef0e9}.report-photo-gallery{display:flex;flex:0 0 100%;gap:8px;overflow-x:auto;scrollbar-width:none}.report-photo-gallery::-webkit-scrollbar{display:none}.report-photo-gallery img{flex:0 0 60px;width:60px;height:60px;border-radius:11px;object-fit:cover}.report-info{min-width:0;flex:1 1;padding:1px 0}.report-badges{display:flex;align-items:center;gap:6px;margin-bottom:5px}.category-tag{padding:4px 7px;border-radius:7px;font-size:9px;font-weight:800}.category-tag.own{background:#fce9dc;color:#bd6840}.category-tag.sighting{background:#e7f1e8;color:#4c7754}.category-tag.lost{background:#e8eef7;color:#59749d}.report-date{color:#a0a49b;font-size:10px}.report-title{margin:0 0 4px;color:var(--ink);font-size:14px;font-weight:800}.report-location,.report-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.report-location{display:flex;align-items:center;gap:3px;color:#8a9289;font-size:10px}.empty-state{display:grid;min-height:125px;place-content:center;justify-items:center;gap:6px;padding:17px;border:1px dashed #dfdfd4;border-radius:18px;color:#8a9289;text-align:center}.empty-state strong{color:#526455;font-size:13px}.empty-state span{font-size:11px}.primary-button{display:flex;width:100%;height:52px;align-items:center;justify-content:center;gap:9px;margin-top:13px;border:0;border-radius:16px;background:#426b51;color:white;font-size:14px;font-weight:800;box-shadow:0 6px 13px #426b5129;cursor:pointer}.primary-button:disabled{opacity:.62;cursor:wait}.toast{position:absolute;z-index:8;top:max(15px,env(safe-area-inset-top));left:50%;width:max-content;max-width:calc(100% - 32px);padding:12px 16px;border-radius:14px;transform:translateX(-50%);background:#263d31;color:white;box-shadow:0 8px 22px #12201633;font-size:12px;text-align:center}.install-help{display:flex;width:min(430px,calc(100% - 32px));align-items:flex-start;gap:12px;text-align:left;line-height:1.5}.install-help p{margin:0}.install-help button{flex:0 0 auto;padding:0;border:0;background:transparent;color:#cdebd5;font:inherit;font-weight:700;cursor:pointer}.location-picker-active .app-menu,.location-picker-active .locate-button,.location-picker-active .top-area{opacity:0;pointer-events:none;transition:opacity .2s ease}.location-picker-active .sheet{transform:translateY(110%)}.location-picker-pin{position:absolute;z-index:7;top:50%;left:50%;display:grid;width:44px;height:48px;place-items:center;transform:translate(-50%,-90%);color:#df654f;filter:drop-shadow(0 4px 6px #28362c55);pointer-events:none;animation:picker-pin-drop .38s cubic-bezier(.2,.8,.25,1.2) both}.location-picker-ui{position:absolute;z-index:8;right:16px;bottom:max(18px,env(safe-area-inset-bottom));left:16px;width:auto;max-width:430px;margin:0 auto;padding:14px;border:1px solid #ffffffdb;border-radius:18px;background:#fffdf8;box-shadow:0 8px 28px #20362b2b;animation:picker-controls-in .24s ease-out both}.location-picker-ui p{margin:0 0 11px;color:#55665b;font-size:12px;font-weight:700;text-align:center}.location-picker-ui>div{display:grid;grid-template-columns:1fr 1.5fr;gap:8px}.location-picker-ui button{min-height:44px;border:0;border-radius:12px;font-size:13px;font-weight:800;cursor:pointer}.picker-cancel{background:#f0f1eb;color:#59685e}.picker-confirm{background:#426b51;color:white}@keyframes picker-pin-drop{0%{opacity:0;transform:translate(-50%,-125%)}to{opacity:1;transform:translate(-50%,-90%)}}@keyframes picker-controls-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.selected-card{position:absolute;z-index:4;right:14px;bottom:min(51dvh,435px);left:14px;display:flex;gap:12px;padding:11px;border-radius:19px;background:white;box-shadow:0 8px 28px #1f362522;cursor:pointer}.selected-card img{width:67px;height:67px;flex:none;border-radius:13px;object-fit:cover}.selected-card-copy{min-width:0;align-self:center}.selected-card-copy strong{margin:5px 0;font-size:14px}.selected-card-copy span,.selected-card-copy strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.selected-card-copy span{color:#849087;font-size:10px}.modal-backdrop{position:absolute;z-index:9;inset:0;display:flex;align-items:flex-end;justify-content:center;background:#1c2c2488;animation:modal-backdrop-in .2s ease-out both}.report-modal{width:min(100%,540px);max-height:93dvh;overflow:auto;padding:10px 20px calc(23px + env(safe-area-inset-bottom));border-radius:26px 26px 0 0;background:#fffdf8;scrollbar-width:none;animation:report-modal-in .34s cubic-bezier(.2,.8,.25,1) both}.auth-backdrop{z-index:11}.auth-modal{width:min(100%,500px);max-height:90dvh;overflow-y:auto;padding:22px 20px calc(24px + env(safe-area-inset-bottom));border-radius:25px 25px 0 0;background:#fffdf8;animation:report-modal-in .28s cubic-bezier(.2,.8,.25,1) both}.auth-modal>p{color:#65746a;font-size:13px;line-height:1.6}.auth-provider-list{display:grid;gap:9px;margin-top:17px}.auth-provider-list button{min-height:48px;padding:10px 14px;border:1px solid #dfe6dd;border-radius:14px;background:#f5f7f2;color:#2d4033;font-size:14px;font-weight:800;cursor:pointer}.auth-provider-list button:active{background:#eaf0e8}.auth-modal .auth-legal-note{margin-bottom:0;font-size:11px}.terms-modal{padding-bottom:calc(24px + env(safe-area-inset-bottom))}.terms-checkbox{display:flex;align-items:flex-start;gap:10px;margin:15px 0 4px;color:#47584d;font-size:13px;line-height:1.6}.terms-checkbox input{width:19px;height:19px;flex:none;margin:1px 0 0;accent-color:#426b51}@keyframes modal-backdrop-in{0%{opacity:0}to{opacity:1}}@keyframes report-modal-in{0%{opacity:.8;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}.modal-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.modal-top h2{margin:0;font-size:19px}.modal-close{display:grid;width:36px;height:36px;place-items:center;border:0;border-radius:12px;background:#f2f1eb;cursor:pointer}.form-label{display:block;margin:13px 0 7px;color:#58665c;font-size:11px;font-weight:800}.category-options{display:grid;grid-template-columns:repeat(2,1fr);gap:7px}.category-option{min-height:54px;padding:8px 5px;border:1px solid #e9e8df;border-radius:12px;background:white;color:#68766b;font-size:10px;font-weight:700;line-height:1.4;cursor:pointer}.category-option.active{border-color:#426b51;background:#eff4ed;color:#426b51}.text-area,.text-input{width:100%;padding:12px 13px;border:1px solid #e9e8df;border-radius:12px;outline:0;background:white;color:var(--ink);font-size:13px}.text-area{min-height:76px;resize:vertical}.location-row{display:flex;align-items:center;gap:8px}.location-row .text-input{min-width:0;flex:1 1}.location-action{display:flex;flex:none;align-items:center;gap:6px;padding:11px;border:0;border-radius:11px;background:#eef3eb;color:#426b51;font-size:10px;font-weight:800;cursor:pointer}.location-hint{margin-top:6px;color:#969c92;font-size:10px;line-height:1.5}.photo-library-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}.photo-library-add,.photo-library-item{position:relative;aspect-ratio:1;min-width:0;overflow:hidden;border:1px solid #e4e7df;border-radius:13px;background:white}.photo-library-image{display:block;width:100%;height:100%;object-fit:cover}.photo-remove{position:absolute;top:4px;right:4px;display:grid;width:23px;height:23px;place-items:center;padding:0 0 2px;border:1px solid #fff;border-radius:50%;background:#23382e;color:white;font-size:17px;line-height:1;cursor:pointer}.photo-library-add{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;padding:4px;border-style:dashed;color:#58705e;cursor:pointer}.photo-library-add strong{font-size:10px;text-align:center}.photo-library-hint{margin:6px 0 0;color:#8a958b;font-size:10px}.form-error{margin:11px 0 0;color:#bd553f;font-size:11px}@media (min-width:700px){body{display:grid;place-items:center;background:#e8e5dd}.app-shell{width:430px;height:min(900px,100dvh);min-height:700px;border:7px solid #fff;border-radius:35px;box-shadow:0 22px 80px #26382b2e}.sheet{border-radius:24px 24px 27px 27px}}.legal-page{min-height:100dvh;padding:max(22px,env(safe-area-inset-top)) 18px max(30px,env(safe-area-inset-bottom));background:#f7f5ef;color:#293a2f}.legal-back{display:inline-block;margin-bottom:18px;color:#426b51;font-size:13px;font-weight:800;text-decoration:none}.legal-page article{width:min(100%,680px);margin:0 auto;padding:25px 23px;border:1px solid #e8e8df;border-radius:22px;background:#fffdf8;box-shadow:0 8px 28px #20362b0c}.legal-page h1{margin:0 0 6px;font-size:25px}.legal-page h2{margin:25px 0 8px;font-size:16px}.legal-page li,.legal-page p{color:#526158;font-size:14px;line-height:1.8}.legal-page ul{display:grid;gap:8px;padding-left:20px}.legal-updated{margin:0 0 20px;color:#899187!important;font-size:11px!important}@media (prefers-reduced-motion:reduce){.auth-modal{animation:none}}