:root{--g:#2f4a3a;--g2:#3f6b4f;--tan:#e9e1cd;--rust:#8a4b14}*{box-sizing:border-box}
body{margin:0;font:17px/1.55 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:#1f2a24;background:#f6f3ec}
header{background:var(--g);color:#fff}header .w{display:flex;flex-wrap:wrap;align-items:center;gap:.3rem 1rem;padding:.7rem 1rem}
header a{color:#f1e7cf;text-decoration:none;font-size:.95rem}header .brand{font-weight:800;font-size:1.25rem;color:#fff;margin-right:auto}
.w{max-width:1050px;margin:0 auto;padding:1rem}h1{color:var(--g);margin:.3rem 0 .6rem;line-height:1.2}h2{color:#6b4a2b}a{color:var(--rust)}
.lead{font-size:1.15rem}.animals{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.8rem}
.animal{display:block;background:#fff;border-radius:12px;overflow:hidden;text-decoration:none;color:var(--g);box-shadow:0 1px 3px #0002;transition:transform .15s}
.animal:hover{transform:translateY(-3px)}.animal img{width:100%;aspect-ratio:3/2;object-fit:cover;display:block;background:#ccc}.animal b{display:block;padding:.5rem .7rem;font-size:1.05rem}
.step{background:#fff;border-radius:12px;padding:1rem;margin:.8rem 0;box-shadow:0 1px 3px #0001}.step h2{margin:.1rem 0 .6rem;font-size:1.1rem;color:var(--g)}
.seg{display:flex;gap:.5rem;flex-wrap:wrap}.seg button{flex:1;min-width:130px;padding:.8rem;font-size:1.05rem;border:2px solid var(--g2);background:#fff;color:var(--g);border-radius:10px;cursor:pointer}
.seg button.on{background:var(--g2);color:#fff}.pts{display:flex;align-items:center;gap:.6rem}.pts button{width:48px;height:48px;font-size:1.5rem;border-radius:50%;border:2px solid var(--g2);background:#fff;color:var(--g);cursor:pointer}
.pts output{font-size:2rem;font-weight:800;min-width:2.5ch;text-align:center}
details{margin:.6rem 0}summary{cursor:pointer;color:var(--rust);font-weight:600}label{display:block;font-weight:600;margin:.5rem 0 .1rem}select,input[type=text]{font-size:1rem;padding:.45rem;width:100%;max-width:340px}
.res{list-style:none;padding:0;margin:0}.res li{background:#fff;border-radius:10px;padding:.7rem .9rem;margin:.45rem 0;display:flex;gap:.8rem;align-items:center;box-shadow:0 1px 2px #0001}
.res .pct{font-size:1.4rem;font-weight:800;min-width:4.2ch;text-align:right}.res .t{flex:1}.res small{color:#555}
.badge{display:inline-block;padding:.1rem .55rem;border-radius:99px;font-size:.8rem;font-weight:700;color:#fff;white-space:nowrap}
.b4{background:#2e7d32}.b3{background:#7cb342}.b2{background:#f9a825;color:#222}.b1{background:#c62828}.b0{background:#4a4a4a}
#map{height:440px;border-radius:12px;margin:.6rem 0;z-index:0}.legend{display:flex;flex-wrap:wrap;gap:.4rem;font-size:.85rem}
table{border-collapse:collapse;width:100%;background:#fff;font-size:.9rem}th,td{padding:.35rem .5rem;border-bottom:1px solid #e4ddcc;text-align:left}th{background:var(--tan)}
.tw{overflow-x:auto}.card{background:#fff;border:1px solid #e4ddcc;border-radius:10px;padding:1rem;margin:.8rem 0}
.est{background:#fff3cd;padding:0 .3rem;border-radius:4px;font-size:.8rem;font-weight:600}.warn{background:#fff3cd;border-left:4px solid #c98a12;padding:.6rem .8rem;border-radius:4px}
.summary{font-size:1.2rem;background:#fff;border-left:6px solid var(--g2);padding:.8rem 1rem;border-radius:6px}
svg.chart{width:100%;max-width:700px;height:auto;background:#fff;border-radius:8px}footer{background:var(--tan);font-size:.85rem;margin-top:2rem}
.leaflet-interactive:focus,path:focus,.leaflet-container :focus{outline:none!important}.backbtn{font-size:1rem;padding:.6rem 1rem;border-radius:10px;border:2px solid var(--g2);background:#fff;color:var(--g);font-weight:700;cursor:pointer}.leaflet-bar a.wy{width:auto!important;line-height:30px;padding:0 .5rem;font-size:.8rem;font-weight:700;white-space:nowrap}
.filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:.6rem;background:#fff;border-radius:12px;padding:.8rem;box-shadow:0 1px 3px #0001}.fl{display:block;font-weight:700;font-size:.85rem;color:var(--g);margin-bottom:.25rem}
.seg.sm{flex-wrap:wrap}.seg.sm button{flex:0 1 auto;min-width:0;padding:.45rem .7rem;font-size:.9rem;white-space:nowrap}.filters .f.wide{grid-column:1/-1}.pts button{width:40px;height:40px}.pts output{font-size:1.6rem}
.mapgrid{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,2fr);gap:1rem;align-items:start;margin-top:.6rem}.mapgrid .res{max-height:640px;overflow:auto}
.tag{font-size:.72rem;padding:0 .35rem;border-radius:4px;background:#e9e1cd;color:#333}.t-other{background:#fde2c8}
.maplibregl-canvas:focus,.maplibregl-canvas-container:focus{outline:none!important}.maplibregl-ctrl button.wy{width:auto;padding:0 .7rem;font-weight:700;font-size:.85rem;height:32px}.maplibregl-ctrl button.wy.active{background:#2f4a3a;color:#fff;box-shadow:0 0 0 3px #f9a82588}.maplibregl-ctrl button.wy.active:hover{background:#3f6b4f}.areainfo{background:#2f4a3a;color:#fff;border-radius:10px;padding:.55rem .8rem;margin-bottom:.4rem}.areainfo small{color:#d6e5da}.tip .maplibregl-popup-content{padding:.3rem .5rem;font-size:.85rem;pointer-events:none}.tip{pointer-events:none}
.applybtn{display:inline-block;background:#8a4b14;color:#fff!important;text-decoration:none;font-weight:700;padding:.35rem .7rem;border-radius:8px;font-size:.85rem;margin-top:.3rem}.applybtn:hover{background:#a65c1a}
button.copy{font-size:.85rem;padding:.35rem .7rem;border-radius:8px;border:2px solid var(--g2);background:#fff;color:var(--g);font-weight:700;cursor:pointer;margin-top:.3rem}button.copy.sm,.res .applybtn{font-size:.78rem;padding:.25rem .55rem}
.areainfo .applybtn{background:#f9a825;color:#222!important}.areainfo a{color:#fff}.appgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:.7rem}.appcard{background:#fff;border:1px solid #e4ddcc;border-radius:10px;padding:.8rem}.appcard pre{white-space:pre-wrap;font-size:.82rem;background:#f6f3ec;padding:.5rem;border-radius:6px;margin:.4rem 0}
pre.reg{white-space:pre;overflow:auto;font-size:.78rem;background:#fff;border:1px solid #e4ddcc;border-radius:8px;padding:.6rem;max-height:520px}
.thr{display:inline-block;background:#eef3ec;border-left:3px solid #3f6b4f;padding:.1rem .45rem;margin:.15rem 0;font-size:.88rem}
@media(max-width:860px){.mapgrid{grid-template-columns:1fr}.mapgrid .res{max-height:none}}
@media(max-width:600px){body{font-size:16px}#map{height:320px}.res .pct{font-size:1.15rem}}