:root{--ink:#173b34;--muted:#65776f;--paper:#f4f0e5;--accent:#d26c48;--panel:#faf8f0;--line:rgba(23,59,52,.15)}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:Inter,"PingFang SC","Microsoft YaHei",sans-serif;transition:.35s background,.35s color}.symbol-sprite{position:absolute;width:0;height:0;overflow:hidden}header{height:70px;padding:0 clamp(22px,4vw,62px);display:grid;grid-template-columns:1fr auto 1fr;align-items:center;border-bottom:1px solid var(--line)}.brand{display:flex;gap:10px;align-items:center;color:inherit;text-decoration:none;width:max-content}.brand>span{width:34px;height:34px;display:grid;place-items:center;border:1px solid;border-radius:50%}.brand b,.brand small,.title b,.title small{display:block}.brand b{font:600 19px "STKaiti","KaiTi",serif;letter-spacing:.1em}.brand small,.title small{font-size:8px;letter-spacing:.16em;opacity:.6}.title{text-align:center}.title b{font-size:12px}.back{justify-self:end;color:inherit;font-size:10px;text-underline-offset:5px}.chooser{max-width:1480px;margin:auto;padding:34px clamp(22px,4vw,62px) 22px;display:flex;align-items:end;justify-content:space-between;gap:30px}.chooser p{margin:0 0 7px;font-size:9px;font-weight:700;letter-spacing:.22em;color:#9a6d58}.chooser h1{margin:0;font:500 clamp(28px,3vw,42px) "STKaiti","KaiTi",serif}.style-tabs{display:flex;gap:7px}.style-tabs button{min-width:132px;padding:11px 13px;border:1px solid var(--line);border-radius:12px;background:rgba(255,255,255,.28);color:inherit;text-align:left;cursor:pointer}.style-tabs i{display:inline-grid;width:21px;height:21px;margin-right:5px;place-items:center;border-radius:50%;background:rgba(23,59,52,.09);font-style:normal;font-size:9px}.style-tabs b{font-size:11px}.style-tabs small{display:block;margin:4px 0 0 28px;font-size:8px;opacity:.6}.style-tabs button.active{background:var(--ink);color:white}.style-tabs button.active i{background:var(--accent)}main{max-width:1480px;margin:auto;padding:0 clamp(18px,4vw,62px) 50px;display:grid;grid-template-columns:minmax(0,1fr) 315px;gap:14px}.map-shell,.explain{border:1px solid var(--line);background:var(--panel)}.map-shell{min-width:0;padding:15px;border-radius:24px}.map-head{height:65px;padding:2px 8px 12px;display:flex;justify-content:space-between;align-items:start}.map-head span{font-size:9px;letter-spacing:.12em;opacity:.6}.map-head h2{margin:5px 0 0;font:600 23px "STKaiti","KaiTi",serif}.evidence-badge{text-align:right}.evidence-badge b,.evidence-badge small{display:block}.evidence-badge b{font-size:9px;color:#2e766d}.evidence-badge small{margin-top:5px;font-size:8px}.map-canvas{position:relative;overflow:hidden;border-radius:17px}.map-canvas svg{display:block;width:100%;height:auto;min-height:470px}.ocean{fill:url(#seaA)}.graticule path{fill:none;stroke:rgba(22,67,60,.1);stroke-width:1;stroke-dasharray:3 7}.country{fill:#f1ead8;stroke:rgba(55,75,66,.38);stroke-width:.55;vector-effect:non-scaling-stroke}.country.china{fill:#ecd6b6;stroke:#9e6648;stroke-width:1.15}.texture{pointer-events:none;opacity:.42}.research-route{fill:none;stroke:rgba(255,255,255,.8);stroke-width:1.7;stroke-dasharray:4 7}.flock-cluster{color:var(--accent);filter:none}.flock-cluster .halo{fill:rgba(255,251,232,.58);stroke:rgba(23,59,52,.1)}.flock-cluster use{filter:drop-shadow(0 2px 2px rgba(20,52,45,.22))}.map-key{position:absolute;left:14px;bottom:12px;display:flex;gap:12px;padding:7px 9px;border-radius:99px;background:rgba(250,248,240,.78);font-size:8px;color:#405e57}.map-key span{display:flex;align-items:center;gap:5px}.three-birds{font-style:normal;letter-spacing:-3px;color:var(--accent)}.dot{width:7px;height:7px;border-radius:50%;background:var(--accent)}.focus-label{display:none}.controls{padding:13px 4px 0}.species-tabs{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.species-tabs button{display:flex;align-items:center;gap:7px;min-width:0;padding:8px;border:1px solid var(--line);border-radius:9px;background:transparent;color:inherit;cursor:pointer}.species-tabs button.active{background:var(--ink);color:white}.species-tabs svg{width:24px;height:24px;flex:none}.species-tabs b,.species-tabs small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left}.species-tabs b{font-size:9px}.species-tabs small{font-size:7px;opacity:.58}.month-control{display:grid;grid-template-columns:34px 1fr;gap:9px;align-items:center;margin-top:10px}.month-control button{width:34px;height:34px;border:0;border-radius:50%;background:var(--ink);color:white;cursor:pointer}.month-control>div{grid-column:2}.month-control input{width:100%;accent-color:var(--accent)}.ticks{display:grid;grid-template-columns:repeat(6,1fr);font-size:7px;text-align:center;opacity:.55}.explain{overflow:hidden;border-radius:24px}.explain>img{width:100%;height:210px;display:block;object-fit:cover}.bird-title{display:flex;align-items:center;gap:10px;padding:17px 18px 0}.bird-title>span{width:43px;height:43px;display:grid;place-items:center;border-radius:50%;background:#e7e1d1;color:var(--accent)}.bird-title svg{width:28px;height:28px}.bird-title h3{margin:3px 0 0;font:600 23px "STKaiti","KaiTi",serif}.bird-title small{font:italic 9px Georgia,serif;opacity:.58}.explain>p{margin:14px 18px;color:var(--muted);font-size:10px;line-height:1.7}.quality-card{margin:16px 12px 10px;padding:14px;border-radius:13px;background:#e9eee5}.quality-card>b{font-size:10px}.quality-card p{margin:7px 0 11px;font-size:9px;line-height:1.65;color:#52665e}.quality-card dl{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;margin:0}.quality-card dl div{padding:7px;background:rgba(255,255,255,.55);border-radius:6px}.quality-card dt,.quality-card dd{margin:0;font-size:7px}.quality-card dt{opacity:.55}.quality-card dd{margin-top:3px;font-weight:700}.quality-card a{display:inline-block;margin-top:10px;color:inherit;font-size:8px;text-underline-offset:3px}.warning{padding:9px!important;border-top:1px solid var(--line);color:#9a593e!important}footer{max-width:1480px;margin:auto;padding:0 clamp(22px,4vw,62px) 35px;display:flex;justify-content:space-between;font-size:8px;opacity:.55}
/* B · 夜航星图 */.map-style-b{--paper:#081923;--ink:#e5f5ed;--muted:#a6beb6;--panel:#0c2430;--line:rgba(207,235,225,.14);--accent:#ffcc72}.map-style-b .ocean{fill:url(#seaB)}.map-style-b .country{fill:#163440;stroke:rgba(168,210,198,.28)}.map-style-b .country.china{fill:#28545a;stroke:#ffcc72}.map-style-b .graticule path{stroke:rgba(161,214,205,.1)}.map-style-b .flock-cluster{filter:url(#flockGlow)}.map-style-b .flock-cluster .halo{fill:rgba(255,204,114,.06);stroke:rgba(255,204,114,.18)}.map-style-b .texture{opacity:.08}.map-style-b .map-key{background:rgba(8,25,35,.78);color:#d9eee8}.map-style-b .quality-card{background:#14333c}.map-style-b .bird-title>span{background:#153740}.map-style-b .style-tabs button{background:rgba(255,255,255,.03)}.map-style-b .style-tabs button.active{background:#e8f4ed;color:#102d34}
/* C · 东亚折页 */.map-style-c{--paper:#eee6d8;--ink:#302f2a;--muted:#6e6a60;--panel:#f7f0e3;--line:rgba(48,47,42,.18);--accent:#b34d37}.map-style-c .map-shell{border-radius:3px;box-shadow:8px 8px 0 #d8c9b4}.map-style-c .map-canvas{border-radius:0}.map-style-c .ocean{fill:#c5d9d5}.map-style-c .country{fill:#ece4d1;stroke:#726e62}.map-style-c .country.china{fill:#e6c7a9;stroke:#9d382d;stroke-width:1.5}.map-style-c .texture{opacity:.6}.map-style-c .map-key{border-radius:2px;background:#f7f0e3}.map-style-c .focus-label{display:block;position:absolute;right:10px;top:9px;writing-mode:vertical-rl;font:700 8px Georgia,serif;letter-spacing:.18em}.map-style-c .explain{border-radius:3px}.map-style-c .quality-card{border-radius:2px;background:#e8decc}.map-style-c .species-tabs button,.map-style-c .style-tabs button{border-radius:2px}
/* D · 观测密度 */.map-style-d{--paper:#eceee9;--ink:#202d29;--muted:#66706b;--panel:#f7f8f5;--line:rgba(32,45,41,.18);--accent:#e05b3f}.map-style-d .map-shell,.map-style-d .explain{border-radius:8px}.map-style-d .map-canvas{border-radius:4px}.map-style-d .ocean{fill:#e8edeb}.map-style-d .country{fill:#f8f8f4;stroke:#7e8984}.map-style-d .country.china{fill:#e4e9e5;stroke:#263d36}.map-style-d .graticule path{stroke:rgba(20,40,34,.17);stroke-dasharray:1 0}.map-style-d .texture{opacity:.05}.map-style-d .flock-cluster .halo{fill:none;stroke:var(--accent);stroke-dasharray:2 2}.map-style-d .map-key{border:1px solid var(--line);border-radius:3px;background:#fff}.map-style-d .quality-card{border:1px solid var(--line);border-radius:4px;background:white}.map-style-d .style-tabs button,.map-style-d .species-tabs button{border-radius:4px}
@media(max-width:960px){header{grid-template-columns:1fr auto}.title{display:none}.chooser{display:block}.style-tabs{margin-top:18px;overflow-x:auto}.style-tabs button{min-width:135px}main{grid-template-columns:1fr}.explain{display:grid;grid-template-columns:220px 1fr}.explain>img{height:100%;grid-row:1/5}.quality-card{grid-column:2}.warning{grid-column:2}.map-canvas svg{min-height:390px}}
@media(max-width:600px){header{padding:0 15px}.chooser,main{padding-left:14px;padding-right:14px}.chooser h1{font-size:28px}.style-tabs{margin-right:-14px}.map-shell{padding:8px;border-radius:14px}.map-head{height:72px}.evidence-badge{max-width:135px}.map-canvas svg{width:700px;height:365px;min-height:0;transform:translateX(calc((100vw - 700px)*.78))}.species-tabs{display:flex;overflow-x:auto}.species-tabs button{min-width:135px}.explain{display:block}.explain>img{height:240px}.quality-card,.warning{grid-column:auto}footer{display:block}}
@media(max-width:600px){header .back{display:none}}

.brand-logo{width:47px;height:38px;display:block;flex:none}
.flock-cluster.is-fallback{opacity:.78}
.flock-cluster.is-fallback use{filter:drop-shadow(0 0 2px rgba(255,255,255,.9)) drop-shadow(0 2px 2px rgba(20,52,45,.28))}
.ticks{position:relative;display:block;height:12px;margin:0 8px;font-size:7px;text-align:left;opacity:.55}
.ticks span{position:absolute;left:calc(var(--month-index)*100%/11);transform:translateX(-50%);white-space:nowrap}
/* Keep every reference photo fully visible, including portrait-oriented species. */
.bird-photo-frame{position:relative;height:210px;overflow:hidden;background:radial-gradient(circle at 50% 42%,#f2f1e8 0,#dfe7df 72%,#d4ded8 100%)}
.bird-photo-frame>img{position:absolute;inset:0;width:100%;height:100%;display:block;object-fit:contain}
@media(max-width:960px) and (min-width:601px){.bird-photo-frame{height:100%;min-height:210px;grid-row:1/5}}
@media(max-width:600px){.bird-photo-frame{height:240px}}
