:root{--opacity-subtle: .08;--opacity-dimmed: .2;--opacity-hover: .3;--z-panel: 40;--space-xs: 4px;--space-sm: 8px;--space-md: 12px;--space-lg: 16px;--space-xl: 24px;--dur-fast: .2s;--dur-base: .25s;--dur-slow: .35s;--shadow-panel: -2px 0 12px rgba(0, 0, 0, var(--opacity-subtle))}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:-apple-system,BlinkMacSystemFont,Helvetica Neue,Helvetica,sans-serif;background:#f4f1ea;color:#1a1a1a}.app{display:flex;flex-direction:column;height:100vh}#main-surface{flex:1;min-height:0;padding:var(--space-lg);overflow:auto}.error-screen{padding:32px;max-width:500px;margin:0 auto}.feed{list-style:none;margin:0;padding:0;max-width:760px;margin-inline:auto}.feed-sort{max-width:760px;margin:0 auto var(--space-md) auto;display:flex;gap:var(--space-lg);padding:var(--space-sm) var(--space-md);font-size:13px;color:#1a1a1a}.feed-sort-option{display:inline-flex;align-items:center;gap:6px;cursor:pointer}.feed-sort-option input[type=radio]{accent-color:#1a1a1a}.feed-row-item{margin:0;padding:0}.feed-row{display:flex;align-items:center;gap:var(--space-md);min-height:44px;width:100%;padding:var(--space-sm) var(--space-md);border:none;border-bottom:1px solid #e6e1d2;cursor:pointer;background:#fff;color:inherit;font:inherit;text-align:left;-webkit-appearance:none;-moz-appearance:none;appearance:none}.feed-row:hover{background:#fbf8f0}.feed-row:focus-visible{outline:2px solid #1a1a1a;outline-offset:-2px}.feed-row-notable{background:#fff8e1;border-left:3px solid #b8860b}.feed-row-notable:hover{background:#fff3c4}.feed-row-badge{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;background:#b8860b;color:#fff;font-size:12px;font-weight:700;line-height:1}.feed-row-name{flex:1;min-width:0;font-weight:600;font-size:14px;color:#1a1a1a;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.feed-row-count{flex-shrink:0;font-variant-numeric:tabular-nums;font-size:13px;color:#444;background:#f0ebe0;padding:2px 6px;border-radius:10px}.feed-row-count-unknown{background:transparent;color:#666}.feed-row-loc{flex-shrink:1;min-width:0;font-size:13px;color:#555;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.feed-row-time{flex-shrink:0;font-size:12px;color:#5c5c5c;font-variant-numeric:tabular-nums}.feed-empty{padding:var(--space-xl);text-align:center;color:#555;font-size:14px;max-width:480px;margin-inline:auto}.species-search-surface{max-width:760px;margin-inline:auto}.species-autocomplete{position:relative;margin:0 0 var(--space-lg) 0}.species-autocomplete-input{width:100%;box-sizing:border-box;padding:10px 14px;font-size:15px;border:1px solid #d8d3c3;border-radius:6px;background:#fff;color:#1a1a1a;-webkit-appearance:none;-moz-appearance:none;appearance:none}.species-autocomplete-input:focus-visible{outline:2px solid #1a1a1a;outline-offset:-2px}.species-autocomplete-listbox{list-style:none;margin:0;padding:4px 0;position:absolute;left:0;right:0;background:#fff;border:1px solid #d8d3c3;border-radius:6px;box-shadow:0 4px 12px rgba(0,0,0,var(--opacity-subtle));max-height:280px;overflow-y:auto;z-index:var(--z-panel)}.species-autocomplete[data-position=below] .species-autocomplete-listbox{top:calc(100% + 4px);bottom:auto}.species-autocomplete[data-position=above] .species-autocomplete-listbox{bottom:calc(100% + 4px);top:auto}.species-autocomplete-option{padding:8px 14px;font-size:14px;color:#1a1a1a;cursor:pointer;line-height:1.3}.species-autocomplete-option.is-highlighted,.species-autocomplete-option:hover{background:#f0ebe0}.species-autocomplete-no-matches{position:absolute;left:0;right:0;top:calc(100% + 4px);padding:10px 14px;background:#fff;border:1px solid #d8d3c3;border-radius:6px;color:#555;font-size:13px}.species-search-prompt,.species-search-empty{padding:var(--space-xl) var(--space-lg);text-align:center;color:#555;font-size:14px;margin:0}.migration-banner{display:flex;align-items:center;gap:var(--space-md);padding:var(--space-sm) var(--space-lg);background:#fff8e1;border-bottom:1px solid #ffe082;font-size:13px;color:#5d4037}.migration-banner-text{flex:1}.migration-banner-dismiss{flex-shrink:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:none;font-size:20px;line-height:1;cursor:pointer;color:#5d4037;border-radius:4px;padding:2px 6px}.migration-banner-dismiss:hover,.migration-banner-dismiss:focus-visible{background:#ffecb3}.filters-bar{display:flex;gap:var(--space-lg);padding:var(--space-md) var(--space-lg);background:#fff;border-bottom:1px solid #d8d3c3;align-items:center;flex-wrap:wrap}.filters-bar label{display:flex;gap:6px;align-items:center;font-size:13px}.filters-bar select,.filters-bar input{padding:4px 8px}.surface-nav{display:flex;gap:var(--space-xs);padding:var(--space-sm) var(--space-lg);background:#fff;border-bottom:1px solid #d8d3c3}.surface-nav-tab{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:1px solid transparent;border-radius:4px;padding:6px 14px;font:inherit;font-size:13px;color:#1a1a1a;cursor:pointer;line-height:1.2}.surface-nav-tab:hover{background:#f0ebe0}.surface-nav-tab:focus-visible{outline:2px solid #1a1a1a;outline-offset:2px}.surface-nav-tab.is-active{background:#1a1a1a;color:#fff;border-color:#1a1a1a}.species-panel{position:fixed;top:0;right:0;height:100vh;background:#fff;border-left:1px solid #d8d3c3;box-shadow:var(--shadow-panel);padding:var(--space-xl) 20px var(--space-lg) 20px;overflow-y:auto;z-index:var(--z-panel)}.species-panel[data-layout=sidebar]{width:320px;max-width:100vw}.species-panel[data-layout=drawer]{width:100vw;max-width:100vw;left:0;right:0;top:auto;bottom:0;height:auto;max-height:85vh;border-left:none;border-top:1px solid #d8d3c3;box-shadow:0 -2px 12px rgba(0,0,0,var(--opacity-subtle));border-top-left-radius:12px;border-top-right-radius:12px}.species-panel-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,var(--opacity-hover));z-index:calc(var(--z-panel) - 1)}.species-panel-close{position:absolute;top:var(--space-sm);right:var(--space-sm);width:32px;height:32px;border:none;background:transparent;font-size:24px;line-height:1;cursor:pointer;color:#1a1a1a;border-radius:4px}.species-panel-close:hover,.species-panel-close:focus-visible{background:#f0ebe0}.species-panel-body{margin-top:var(--space-sm)}.species-panel-common-name{margin:0 0 4px;font-size:20px;font-weight:700}.species-panel-sci-name{margin:0 0 12px;font-size:14px;color:#555}.species-panel-family{margin:0;font-size:13px;color:#444}.species-panel-loading{color:#555;font-size:13px;margin:8px 0 0}.species-panel-error{margin-top:8px;padding:8px 12px;background:#fdecec;border:1px solid #d48e8e;border-radius:4px;color:#8a1f1f;font-size:13px}.species-panel-sr-heading{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.hotspot-list-wrap{max-width:760px;margin-inline:auto}.hotspot-list-toolbar{display:flex;justify-content:flex-end;padding:var(--space-sm) var(--space-md)}.hotspot-list-sort{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:1px solid #d8d3c3;border-radius:4px;padding:6px 12px;font:inherit;font-size:13px;color:#1a1a1a;cursor:pointer;line-height:1.2}.hotspot-list-sort:hover{background:#f0ebe0}.hotspot-list-sort:focus-visible{outline:2px solid #1a1a1a;outline-offset:2px}.hotspot-list{list-style:none;margin:0;padding:0}.hotspot-row{display:flex;flex-wrap:wrap;align-items:center;column-gap:var(--space-md);row-gap:4px;min-height:44px;width:100%;padding:var(--space-sm) var(--space-md);border-bottom:1px solid #e6e1d2;background:#fff;color:inherit;font:inherit;text-align:left}.hotspot-row-name{flex:1 1 60%;min-width:0;font-weight:600;font-size:14px;color:#1a1a1a;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hotspot-row-count{flex-shrink:0;font-variant-numeric:tabular-nums;font-size:13px;color:#444;background:#f0ebe0;padding:2px 6px;border-radius:10px}.hotspot-row-coords{flex:1 1 100%;font-size:12px;color:#555;font-variant-numeric:tabular-nums;letter-spacing:.01em}.hotspot-row-time{flex-shrink:0;margin-left:auto;font-size:12px;color:#5c5c5c;font-variant-numeric:tabular-nums}.hotspot-row-stale{background:#faf7ee;color:#6b6b6b}.hotspot-row-stale .hotspot-row-name{color:#5c5c5c;font-weight:500}.hotspot-row-stale .hotspot-row-count{background:#efeadd;color:#555}.hotspot-list-empty{padding:var(--space-xl);text-align:center;color:#555;font-size:14px;max-width:480px;margin-inline:auto}
