:root{--c-warm-50:#fafaf6;--c-warm-100:#f0ece4;--c-warm-200:#e6e0d4;--c-sky-500:#6ec5d9;--c-sand-500:#e8c060;--c-ember-500:#e87a4a;--c-orange-500:#f5853b;--c-cyan-500:#6db8d4;--c-deep-ember:#c43a1a;--c-navy-50:#f5f7fb;--c-navy-900:#0d1424;--type-xs:11px;--type-sm:13px;--type-base:15px;--type-md:17px;--type-lg:22px;--type-hero:34px;--font-stack:-apple-system, BlinkMacSystemFont, "Segoe UI Variable", "Helvetica Neue", "Inter", sans-serif;--font-weight-regular:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-heavy:800}:root[data-theme=light]{--color-bg-page:#f4f1ea;--color-bg-surface:#fff;--color-bg-tint:#f0ebe0;--color-bg-skeleton:#f0ebe0;--color-bg-skeleton-highlight:#f0ebe0;--color-text-strong:#1a1a1a;--color-text-body:#444;--color-text-muted:#555;--color-text-subtle:#5c5c5c;--color-border-ui:#d8d3c3;--color-decision-point:var(--c-orange-500);--color-density-low:var(--c-sky-500);--color-density-mid:var(--c-sand-500);--color-density-high:var(--c-ember-500);--color-density-text:#1a1a1a;--color-accent-notable-fg:#b8860b;--color-error-bg:#fdecec;--color-error-border:#d48e8e;--color-error-text:#8a1f1f}:root[data-theme=dark]{--color-bg-skeleton:#1c2640;--color-bg-skeleton-highlight:#253050;--color-decision-point:var(--c-cyan-500);--color-density-low:#4a8aa8;--color-density-mid:#c49850;--color-density-high:#c46038;--color-density-text:#f5f7fb}.feed-row{--feed-row-bg:var(--color-bg-surface);--feed-row-bg-hover:var(--color-bg-tint)}.lede{--lede-size:26px}: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));--shadow-listbox:0 4px 12px rgba(0, 0, 0, var(--opacity-subtle));--shadow-drawer:0 -2px 12px rgba(0, 0, 0, var(--opacity-subtle));--color-bg-page:#f4f1ea;--color-bg-surface:#fff;--color-bg-hover:#fbf8f0;--color-bg-tint:#f0ebe0;--color-bg-stale:#faf7ee;--color-bg-stale-chip:#efeadd;--color-accent-notable-bg:#fff8e1;--color-accent-notable-bg-hover:#fff3c4;--color-accent-notable-fg:#b8860b;--color-border-subtle:#e6e1d2;--color-border-ui:#d8d3c3;--color-text-strong:#1a1a1a;--color-text-body:#444;--color-text-muted:#555;--color-text-subtle:#5c5c5c;--color-text-faint:#666;--color-text-stale:#6b6b6b;--color-text-stale-name:#5c5c5c;--color-text-white:#fff;--color-error-bg:#fdecec;--color-error-border:#d48e8e;--color-error-text:#8a1f1f}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--color-bg-page);color:var(--color-text-strong);font-family:-apple-system,BlinkMacSystemFont,Helvetica Neue,Helvetica,sans-serif}.app{flex-direction:column;height:100vh;display:flex}#main-surface{min-height:0;padding:var(--space-lg);flex:1;overflow:auto}.error-screen{max-width:500px;margin:0 auto;padding:32px}.skip-link{clip:rect(0 0 0 0);background:var(--color-bg-surface);width:1px;height:1px;color:var(--color-text-strong);font:inherit;cursor:pointer;z-index:calc(var(--z-panel) + 10);border:0;margin:-1px;padding:0;position:absolute;top:0;left:0;overflow:hidden}.skip-link:focus,.skip-link:focus-visible{width:auto;height:auto;padding:var(--space-sm) var(--space-md);clip:auto;outline:2px solid var(--color-text-strong);outline-offset:2px;border-radius:4px;margin:0;overflow:visible}.feed{margin:0;max-width:760px;margin-inline:auto;padding:0;list-style:none}.feed-sort{max-width:760px;margin:0 auto var(--space-md) auto;gap:var(--space-lg);padding:var(--space-sm) var(--space-md);font-size:var(--type-sm);color:var(--color-text-strong);display:flex}.feed-sort-option{cursor:pointer;align-items:center;gap:6px;display:inline-flex}.feed-sort-option input[type=radio]{accent-color:var(--color-text-strong)}.feed-row-item{margin:0;padding:0}.feed-row{align-items:center;gap:var(--space-md);width:100%;min-height:44px;padding:var(--space-sm) var(--space-md);border:none;border-bottom:1px solid var(--color-border-subtle);cursor:pointer;background:var(--color-bg-surface);color:inherit;font:inherit;text-align:left;appearance:none;display:flex}.feed-row:hover{background:var(--color-bg-hover)}.feed-row:focus-visible{outline:2px solid var(--color-text-strong);outline-offset:-2px}.feed-row-notable{background:var(--color-accent-notable-bg);border-left:3px solid var(--color-accent-notable-fg)}.feed-row-notable:hover{background:var(--color-accent-notable-bg-hover)}.feed-row-badge{background:var(--color-accent-notable-fg);width:20px;height:20px;color:var(--color-text-white);font-size:var(--type-xs);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-weight:700;line-height:1;display:inline-flex}.feed-row-name{min-width:0;font-weight:600;font-size:var(--type-sm);color:var(--color-text-strong);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.feed-row-count{font-variant-numeric:tabular-nums;font-size:var(--type-sm);color:var(--color-text-body);background:var(--color-bg-tint);border-radius:10px;flex-shrink:0;padding:2px 6px}.feed-row-count-unknown{color:var(--color-text-faint);background:0 0}.feed-row-loc{min-width:0;font-size:var(--type-sm);color:var(--color-text-muted);text-overflow:ellipsis;white-space:nowrap;flex-shrink:1;overflow:hidden}.feed-row-time{font-size:var(--type-xs);color:var(--color-text-subtle);font-variant-numeric:tabular-nums;flex-shrink:0}.feed-empty{padding:var(--space-xl);text-align:center;color:var(--color-text-muted);font-size:var(--type-sm);max-width:480px;margin-inline:auto}.species-search-surface{max-width:760px;margin-inline:auto}.species-autocomplete{margin:0 0 var(--space-lg) 0;position:relative}.species-autocomplete-input{box-sizing:border-box;width:100%;font-size:var(--type-base);border:1px solid var(--color-border-ui);background:var(--color-bg-surface);color:var(--color-text-strong);appearance:none;border-radius:6px;padding:10px 14px}.species-autocomplete-input:focus-visible{outline:2px solid var(--color-text-strong);outline-offset:-2px}.species-autocomplete-listbox{background:var(--color-bg-surface);border:1px solid var(--color-border-ui);box-shadow:var(--shadow-listbox);max-height:280px;z-index:var(--z-panel);border-radius:6px;margin:0;padding:4px 0;list-style:none;position:absolute;left:0;right:0;overflow-y:auto}.species-autocomplete[data-position=below] .species-autocomplete-listbox{top:calc(100% + 4px);bottom:auto}.species-autocomplete[data-position=above] .species-autocomplete-listbox{top:auto;bottom:calc(100% + 4px)}.species-autocomplete-option{font-size:var(--type-sm);color:var(--color-text-strong);cursor:pointer;padding:8px 14px;line-height:1.3}.species-autocomplete-option.is-highlighted,.species-autocomplete-option:hover{background:var(--color-bg-tint)}.species-autocomplete-no-matches{background:var(--color-bg-surface);border:1px solid var(--color-border-ui);color:var(--color-text-muted);font-size:var(--type-sm);border-radius:6px;padding:10px 14px;position:absolute;top:calc(100% + 4px);left:0;right:0}.species-search-prompt,.species-search-empty{padding:var(--space-xl) var(--space-lg);text-align:center;color:var(--color-text-muted);font-size:var(--type-sm);margin:0}.filters-bar{gap:var(--space-lg);padding:var(--space-md) var(--space-lg);background:var(--color-bg-surface);border-bottom:1px solid var(--color-border-ui);flex-wrap:wrap;align-items:center;display:flex}.filters-bar label{font-size:var(--type-sm);align-items:center;gap:6px;display:flex}.filters-bar select,.filters-bar input{padding:4px 8px}.surface-nav{gap:var(--space-xs);padding:var(--space-sm) var(--space-lg);background:var(--color-bg-surface);border-bottom:1px solid var(--color-border-ui);display:flex}.surface-nav-tab{appearance:none;font:inherit;font-size:var(--type-sm);color:var(--color-text-strong);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:4px;padding:6px 14px;line-height:1.2}.surface-nav-tab:hover{background:var(--color-bg-tint)}.surface-nav-tab:focus-visible{outline:2px solid var(--color-text-strong);outline-offset:2px}.surface-nav-tab.is-active{background:var(--color-text-strong);color:var(--color-text-white);border-color:var(--color-text-strong)}.species-detail-surface{max-width:760px;margin-inline:auto}.species-detail-body{margin-top:var(--space-sm)}.species-detail-photo{aspect-ratio:4/3;object-fit:cover;border-radius:4px;width:100%;max-width:480px;margin:0 0 12px;display:block}.species-detail-silhouette{margin:0 0 12px;display:block}.species-detail-common-name{font-size:var(--type-lg);margin:0 0 4px;font-weight:700}.species-detail-sci-name{font-size:var(--type-sm);color:var(--color-text-muted);margin:0 0 12px}.species-detail-family{font-size:var(--type-sm);color:var(--color-text-body);margin:0}.species-detail-loading{color:var(--color-text-muted);font-size:var(--type-sm);margin:8px 0 0}.phenology-chart{width:100%;max-width:432px;height:auto;margin:12px 0 0;display:block;overflow:visible}.phenology-bar{fill:var(--color-text-strong)}.phenology-bar-empty{fill:var(--color-border-subtle)}.phenology-label{fill:var(--color-text-muted);font-family:inherit}.phenology-count{fill:var(--color-text-body);font-family:inherit}.phenology-count-on-bar{fill:#fff}.phenology-chart-loading{color:var(--color-text-muted);font-size:var(--type-sm);margin:12px 0 0}.species-detail-error{background:var(--color-error-bg);border:1px solid var(--color-error-border);color:var(--color-error-text);font-size:var(--type-sm);border-radius:4px;margin-top:8px;padding:8px 12px}.map-surface{width:100%;height:100%;position:relative}.app-footer{padding:var(--space-sm) var(--space-lg);background:var(--color-bg-surface);border-top:1px solid var(--color-border-ui);font-size:var(--type-xs);color:var(--color-text-muted);flex-shrink:0;justify-content:center;display:flex}.attribution-trigger{appearance:none;padding:var(--space-xs) var(--space-sm);color:var(--color-text-muted);font:inherit;font-size:var(--type-xs);cursor:pointer;background:0 0;border:none;border-radius:4px;min-height:32px;text-decoration:underline}.attribution-trigger:hover,.attribution-trigger:focus-visible{color:var(--color-text-strong)}.attribution-trigger:focus-visible{outline:2px solid var(--color-text-strong);outline-offset:2px}.attribution-modal{border:1px solid var(--color-border-ui);background:var(--color-bg-surface);color:var(--color-text-strong);max-width:560px;max-height:80vh;width:calc(100vw - 2 * var(--space-lg));box-shadow:0 12px 40px rgba(0, 0, 0, var(--opacity-hover));border-radius:8px;margin:auto;padding:0;inset:0}.attribution-modal::backdrop{background:#00000073}.attribution-modal-content{padding:var(--space-lg);max-height:80vh;overflow-y:auto}.attribution-modal-header{justify-content:space-between;align-items:center;gap:var(--space-md);margin-bottom:var(--space-md);padding-bottom:var(--space-sm);border-bottom:1px solid var(--color-border-subtle);display:flex}.attribution-modal-header h2{font-size:var(--type-md);color:var(--color-text-strong);margin:0;font-weight:700}.attribution-modal-close{appearance:none;border:1px solid var(--color-border-ui);font:inherit;font-size:var(--type-sm);color:var(--color-text-strong);cursor:pointer;background:0 0;border-radius:4px;min-height:32px;padding:4px 12px}.attribution-modal-close:hover{background:var(--color-bg-tint)}.attribution-modal-close:focus-visible{outline:2px solid var(--color-text-strong);outline-offset:2px}.attribution-modal-section{margin-top:var(--space-md)}.attribution-modal-section h3{margin:0 0 var(--space-xs) 0;font-size:var(--type-sm);color:var(--color-text-strong);font-weight:700}.attribution-modal-section p{margin:0 0 var(--space-xs) 0;font-size:var(--type-sm);color:var(--color-text-body);line-height:1.4}.attribution-modal-section a{color:var(--color-text-strong);text-decoration:underline}.attribution-modal-section a:focus-visible{outline:2px solid var(--color-text-strong);outline-offset:2px;border-radius:2px}.attribution-modal-loading,.attribution-modal-error,.attribution-modal-empty{color:var(--color-text-muted);font-style:italic}.attribution-modal-section-intro{margin-bottom:var(--space-sm)}.attribution-modal-phylopic-list{gap:var(--space-xs);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.attribution-modal-phylopic-row{font-size:var(--type-xs);color:var(--color-text-body);border-bottom:1px solid var(--color-border-subtle);padding:2px 0;line-height:1.4}.attribution-modal-phylopic-row:last-child{border-bottom:none}.attribution-modal-creator{color:var(--color-text-strong)}@media (width<=760px){.attribution-modal{max-width:100vw;width:calc(100vw - 2 * var(--space-md))}.attribution-modal-content{padding:var(--space-md)}}.family-legend{bottom:var(--space-md);left:var(--space-md);z-index:var(--z-panel);background:var(--color-bg-surface);border:1px solid var(--color-border-ui);box-shadow:var(--shadow-listbox);font-size:var(--type-sm);color:var(--color-text-strong);border-radius:6px;max-width:240px;position:absolute}.family-legend-toggle{align-items:center;gap:var(--space-sm);appearance:none;width:100%;padding:var(--space-sm) var(--space-md);font:inherit;color:inherit;cursor:pointer;text-align:left;background:0 0;border:none;border-radius:6px;display:flex}.family-legend-toggle:hover{background:var(--color-bg-hover)}.family-legend-toggle:focus-visible{outline:2px solid var(--color-text-strong);outline-offset:2px}.family-legend-title{flex:1;font-weight:600}.family-legend-chevron{font-size:var(--type-xs);color:var(--color-text-muted)}.family-legend-entries{padding:var(--space-xs) var(--space-xs) var(--space-sm) var(--space-xs);border-top:1px solid var(--color-border-subtle);grid-template-columns:1fr;gap:2px;max-height:400px;margin:0;list-style:none;display:grid;overflow-y:auto}.family-legend-entry-item{margin:0;padding:0}.family-legend-entry{appearance:none;width:100%;font:inherit;font-size:var(--type-xs);color:var(--color-text-strong);cursor:pointer;text-align:left;background:0 0;border:1px solid #0000;border-radius:4px;align-items:center;gap:6px;min-height:32px;padding:4px 6px;display:flex}.family-legend-entry:hover{background:var(--color-bg-tint)}.family-legend-entry:focus-visible{outline:2px solid var(--color-text-strong);outline-offset:-2px}.family-legend-entry.is-active{background:var(--color-bg-tint);border-color:var(--color-text-strong)}.family-legend-entry-label{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.family-legend-entry-count{font-variant-numeric:tabular-nums;font-size:var(--type-xs);color:var(--color-text-body);background:var(--color-bg-tint);border-radius:8px;flex-shrink:0;padding:1px 5px}.family-legend-entry.is-active .family-legend-entry-count{background:var(--color-bg-surface)}@media (width<=760px){.family-legend{max-width:calc(100vw - 2 * var(--space-md))}.family-legend-entries{max-height:240px}}.observation-popover{top:var(--space-md);left:var(--space-md);z-index:calc(var(--z-panel) + 1);background:var(--color-bg-surface);border:1px solid var(--color-border-ui);box-shadow:var(--shadow-listbox);padding:var(--space-sm) var(--space-md);font-size:var(--type-sm);color:var(--color-text-strong);border-radius:6px;max-width:280px;position:absolute}.observation-popover-header{align-items:center;gap:var(--space-sm);margin-bottom:var(--space-xs);display:flex}.observation-popover-name{flex:1;font-weight:600}.observation-popover-badge{background:var(--color-accent-notable-fg);color:var(--color-text-white);width:18px;height:18px;font-size:var(--type-xs);border-radius:999px;justify-content:center;align-items:center;font-weight:700;display:inline-flex}.observation-popover-close{appearance:none;font:inherit;font-size:var(--type-md);color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;padding:0 4px;line-height:1}.observation-popover-close:hover{color:var(--color-text-strong)}.observation-popover-location,.observation-popover-time,.observation-popover-count{font-size:var(--type-xs);color:var(--color-text-body);margin-top:2px}.observation-popover-detail-link{appearance:none;padding:var(--space-xs) 0 0 0;margin-top:var(--space-xs);font:inherit;font-size:var(--type-xs);color:var(--color-text-strong);cursor:pointer;text-align:left;background:0 0;border:none;text-decoration:underline}.observation-popover-detail-link:hover,.observation-popover-detail-link:focus-visible{color:var(--color-accent-notable-fg);outline:none}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:0s!important;animation-duration:0s!important;animation-iteration-count:1!important}}@keyframes ds-shimmer{0%{background-position:-200%}to{background-position:200%}}.status-block{--status-block-padding:var(--space-xl);--status-block-max-width:480px;justify-content:center;align-items:center;gap:var(--space-md);padding:var(--status-block-padding);max-width:var(--status-block-max-width);text-align:center;flex-direction:column;margin-inline:auto;display:flex}.status-block__progress{appearance:none;background:var(--color-bg-tint);width:100%;height:2px;color:var(--color-decision-point);border:none;border-radius:1px;display:block;overflow:hidden}.status-block__progress::-webkit-progress-bar{background:var(--color-bg-tint);border-radius:1px}.status-block__progress::-webkit-progress-value{background:var(--color-decision-point);border-radius:1px}.status-block__progress::-moz-progress-bar{background:var(--color-decision-point);border-radius:1px}.status-block__skeleton{background:linear-gradient(90deg, var(--color-bg-skeleton) 0%, var(--color-bg-skeleton-highlight) 40%, var(--color-bg-skeleton) 100%);background-size:200% 100%;border-radius:8px;width:100%;height:80px;animation:1.6s ease-in-out infinite ds-shimmer}.status-block__title{font-size:var(--type-base);font-weight:var(--font-weight-medium);color:var(--color-text-body);margin:0;line-height:1.4}.status-block__body{font-size:var(--type-sm);color:var(--color-text-muted);margin:0;line-height:1.5}.status-block__action{align-items:center;gap:var(--space-xs);padding:var(--space-sm) var(--space-lg);border:1px solid var(--color-border-ui);background:var(--color-bg-surface);color:var(--color-text-strong);font-family:var(--font-stack);font-size:var(--type-sm);font-weight:var(--font-weight-medium);cursor:pointer;transition:background var(--dur-fast), border-color var(--dur-fast);border-radius:20px;display:inline-flex}.status-block__action:hover{background:var(--color-bg-tint);border-color:var(--color-text-muted)}.status-block__action:focus-visible{outline:2px solid var(--color-text-strong);outline-offset:2px}.status-block--state-loading .status-block__title{color:var(--color-text-muted);font-weight:var(--font-weight-regular)}.status-block--state-empty .status-block__title{color:var(--color-text-body)}.status-block--state-empty .status-block__body{color:var(--color-text-muted)}.status-block--tone-alert{--status-block-error-bg:var(--color-error-bg);--status-block-error-border:var(--color-error-border);--status-block-error-text:var(--color-error-text)}.status-block--tone-alert .status-block__title{color:var(--status-block-error-text)}.status-block--tone-alert .status-block__body{color:var(--status-block-error-text);opacity:.85}.status-block--state-error{background:var(--color-error-bg);border:1px solid var(--color-error-border);padding:var(--space-lg);border-radius:8px}.family-silhouette{justify-content:center;align-items:center;display:inline-flex}.family-silhouette svg{fill:var(--family-fill,currentColor);display:block}.family-silhouette--masthead svg{width:120px;height:120px}.family-silhouette--inline svg{width:80px;height:80px}.family-silhouette--thumb svg{width:44px;height:44px}.family-silhouette--null-family svg{fill:var(--color-text-muted);opacity:.55}[data-theme=dark] .family-silhouette svg{opacity:.9}.photo{--photo-radius:8px;border-radius:var(--photo-radius);background:var(--color-bg-skeleton);width:100%;display:block;position:relative;overflow:hidden}.photo--masthead{aspect-ratio:16/10}.photo--inline{aspect-ratio:4/3}.photo--thumb{aspect-ratio:1}.photo__skeleton{background:linear-gradient(90deg, var(--color-bg-skeleton) 0%, var(--color-bg-skeleton-highlight) 40%, var(--color-bg-skeleton) 100%);border-radius:var(--photo-radius);background-size:200% 100%;animation:1.6s ease-in-out infinite ds-shimmer;position:absolute;inset:0}.photo__img{object-fit:cover;border-radius:var(--photo-radius);width:100%;height:100%;display:block}.photo__img--pending{opacity:0;position:absolute;inset:0}.photo--loaded .photo__img{opacity:1;position:static}.photo--silhouette{background:var(--color-bg-tint);justify-content:center;align-items:center;display:flex}.photo--silhouette .family-silhouette{width:60%;height:60%}.photo--silhouette .family-silhouette svg{width:100%;max-width:100%;height:100%}.photo__attribution{padding:2px var(--space-sm);background:rgba(0, 0, 0, var(--opacity-dimmed));border-radius:0 0 var(--photo-radius) 0;font-size:var(--type-xs);line-height:1.4;position:absolute;bottom:0;right:0}.photo__attribution-link{color:var(--color-text-white);text-decoration:none}.photo__attribution-link:hover{text-decoration:underline}.photo__attribution-link:focus-visible{outline-offset:1px;border-radius:2px;outline:2px solid #fff}.cluster-pill{appearance:none;font:inherit;cursor:pointer;color:inherit;text-align:center;line-height:1;font-family:var(--font-stack);font-weight:var(--font-weight-semibold);white-space:nowrap;transition:transform var(--dur-fast), box-shadow var(--dur-fast);background:0 0;border:none;border-radius:999px;justify-content:center;align-items:center;margin:0;padding:0;display:inline-flex}.cluster-pill:hover{transform:scale(1.08)}.cluster-pill:focus-visible{outline:2px solid var(--color-text-strong);outline-offset:2px}.cluster-pill:active{transform:scale(.96)}.cluster-pill--sky{font-size:var(--type-sm);background:var(--color-density-low);min-width:28px;color:var(--color-density-text);padding:4px 10px}.cluster-pill--sand{font-size:var(--type-base);background:var(--color-density-mid);min-width:34px;color:var(--color-density-text);padding:6px 13px}.cluster-pill--ember{font-size:var(--type-md);background:var(--color-density-high);min-width:40px;color:var(--color-density-text);padding:8px 16px}[data-theme=dark] .cluster-pill:focus-visible{outline-color:var(--c-warm-50)}.filter-sentence__visible{font-size:var(--type-sm);color:var(--color-text-muted);flex-wrap:wrap;align-items:baseline;gap:0 .25em;margin:0;line-height:1.5;display:inline-flex}.filter-bullet{font-weight:var(--font-weight-medium);color:var(--color-text-body);display:inline}.sort-label{font-size:var(--type-xs);font-weight:var(--font-weight-regular);color:var(--color-text-muted);letter-spacing:.01em;margin:0;line-height:1.4}
