/* Native controls and feedback. Header icon geometry belongs to shell.css. */
/* Form and text-button family: intrinsic height grows with text. Icon family is separate. */
.btn,.form-control,.form-select { min-height:var(--control-min); border-radius:var(--radius-sm); font-size:1rem; line-height:1.5; }
.btn { --bs-btn-font-weight:500; padding:var(--control-pad-y) 18px; box-shadow:none; transition:background-color .18s,color .18s,border-color .18s; }
.btn-sm { font-size:.875rem; padding:10.5px 14px; }
.btn-link { --bs-btn-color:var(--editorial-forest); --bs-btn-hover-color:var(--editorial-ink); --bs-btn-active-color:var(--editorial-ink); --bs-btn-disabled-color:var(--editorial-muted); }
.text-forest { color:var(--editorial-forest); }
.btn-primary,.btn-forest { --bs-btn-bg:var(--editorial-forest); --bs-btn-border-color:var(--editorial-forest); --bs-btn-color:#fff; --bs-btn-hover-bg:var(--editorial-ink); --bs-btn-hover-border-color:var(--editorial-ink); --bs-btn-hover-color:#fff; --bs-btn-active-bg:var(--editorial-ink); --bs-btn-active-border-color:var(--editorial-ink); --bs-btn-active-color:#fff; --bs-btn-disabled-bg:var(--editorial-forest); --bs-btn-disabled-border-color:var(--editorial-forest); --bs-btn-disabled-color:#fff; }
.btn-outline-primary,.btn-outline-forest,.btn-outline-sand { --bs-btn-color:var(--editorial-forest); --bs-btn-border-color:var(--editorial-line); --bs-btn-hover-bg:var(--editorial-ink); --bs-btn-hover-color:#fff; --bs-btn-hover-border-color:var(--editorial-ink); --bs-btn-active-bg:var(--editorial-ink); --bs-btn-active-color:#fff; --bs-btn-active-border-color:var(--editorial-ink); --bs-btn-disabled-color:var(--editorial-muted); --bs-btn-disabled-border-color:var(--editorial-line); }
.btn-amber { --bs-btn-bg:var(--forest-gold); --bs-btn-color:var(--forest-night); --bs-btn-border-color:var(--forest-gold); --bs-btn-hover-bg:var(--amber-300); --bs-btn-hover-color:var(--forest-night); --bs-btn-hover-border-color:var(--amber-300); }
.btn:focus-visible { box-shadow:none; outline:2px solid var(--editorial-ink); outline-offset:3px; }
.form-control,.form-select { border:1px solid var(--editorial-line); padding:var(--control-pad-y) var(--control-pad-x); color:var(--editorial-ink); background-color:var(--editorial-white); }
.form-select { padding-inline-end:2.5rem; }
.form-control:focus,.form-select:focus { border-color:var(--editorial-ink); box-shadow:none; outline:2px solid var(--editorial-ink); outline-offset:2px; }
.form-label { font-weight:500; font-size:.875rem; color:var(--editorial-ink); margin-bottom:.35rem; }
.form-check-input:checked { background-color:var(--editorial-forest); border-color:var(--editorial-forest); }
.form-check-input:focus { box-shadow:none; outline:2px solid var(--editorial-ink); outline-offset:3px; }
/* Semantic color must never change typography. */
.alert { padding:.85rem 1.1rem; border:0; border-left:3px solid; border-radius:0; font-size:1rem; overflow-wrap:anywhere; }
.alert.success,.alert-success { background:var(--surface-sage); color:var(--editorial-success); border-color:var(--editorial-success); }
.alert.warning,.alert-warning { background:var(--surface-ochre); color:var(--amber-text); border-color:var(--editorial-amber); }
.alert.error,.alert-danger { background:var(--surface-clay); color:var(--editorial-danger); border-color:var(--editorial-danger); }
.alert-dismissible { padding-inline-end:3.5rem; }
.alert-dismissible .btn-close { width:44px; height:44px; padding:0; box-sizing:border-box; background-size:16px; }
.alert ul { margin:0; padding-left:1.2rem; }
.hint { font-size:.875rem; color:var(--editorial-muted); margin-top:.3rem; }
/* Native states use the same paper palette without changing their meaning. */
.alert-info { --bs-alert-color:var(--editorial-forest); --bs-alert-bg:var(--surface-sage); --bs-alert-border-color:var(--editorial-forest); }
.offcanvas,.modal-content { --bs-offcanvas-bg:var(--editorial-white); --bs-modal-bg:var(--editorial-white); color:var(--editorial-ink); }
.dropdown-menu { --bs-dropdown-bg:var(--editorial-white); --bs-dropdown-color:var(--editorial-ink); --bs-dropdown-link-color:var(--editorial-ink); --bs-dropdown-link-hover-bg:var(--surface-sage); --bs-dropdown-link-hover-color:var(--editorial-ink); --bs-dropdown-link-active-bg:var(--editorial-forest); }
.accordion { --bs-accordion-bg:var(--editorial-white); --bs-accordion-active-bg:var(--surface-sage); --bs-accordion-active-color:var(--editorial-forest); --bs-accordion-btn-focus-box-shadow:none; }
.nav-tabs { --bs-nav-tabs-border-color:var(--editorial-line); --bs-nav-tabs-link-active-bg:var(--editorial-white); --bs-nav-tabs-link-active-color:var(--editorial-forest); }
.form-control::placeholder { color:var(--editorial-muted); opacity:1; }
.form-control:disabled,.form-select:disabled { background-color:var(--surface-sage); }
.form-control.is-invalid,.form-select.is-invalid { border-color:var(--editorial-danger); }
.form-control.is-valid,.form-select.is-valid { border-color:var(--editorial-success); }
.text-main { color:var(--editorial-ink); } .bg-surface { background:var(--editorial-white); }

/* Semantic actions share geometry; color never changes font size. */
.btn-success { --action-color:var(--editorial-success); }
.btn-danger { --action-color:var(--editorial-danger); }
.btn-info { --action-color:var(--editorial-forest); }
.btn-success,.btn-danger,.btn-info { --bs-btn-color:var(--editorial-white); --bs-btn-bg:var(--action-color); --bs-btn-border-color:var(--action-color); --bs-btn-hover-color:var(--editorial-white); --bs-btn-hover-bg:var(--editorial-ink); --bs-btn-hover-border-color:var(--editorial-ink); --bs-btn-active-bg:var(--editorial-ink); --bs-btn-active-color:var(--editorial-white); }
.btn-warning { --bs-btn-bg:var(--forest-gold); --bs-btn-border-color:var(--forest-gold); --bs-btn-color:var(--forest-night); --bs-btn-hover-bg:var(--amber-300); --bs-btn-hover-color:var(--forest-night); }
.btn-outline-warning { --action-color:var(--amber-text); }
.btn-outline-danger,.btn-danger-outline { --action-color:var(--editorial-danger); }
.btn-outline-success { --action-color:var(--editorial-success); }
.btn-outline-warning,.btn-outline-danger,.btn-danger-outline,.btn-outline-success { --bs-btn-color:var(--action-color); --bs-btn-border-color:var(--action-color); --bs-btn-hover-bg:var(--action-color); --bs-btn-hover-border-color:var(--action-color); --bs-btn-hover-color:var(--editorial-white); --bs-btn-active-bg:var(--action-color); --bs-btn-active-color:var(--editorial-white); }
/* Contribution markup retains its existing class/API; controls have one owner. */
.c-button,.c-outline { display:inline-flex; align-items:center; justify-content:center; gap:12px; min-height:var(--control-min); padding:var(--control-pad-y) 18px; border:1px solid var(--editorial-forest); border-radius:var(--radius-sm); font:500 1rem/1.5 var(--font-sans); text-decoration:none; cursor:pointer; }
.c-button { background:var(--editorial-forest); color:var(--editorial-white); }
.c-button:hover { background:var(--editorial-ink); border-color:var(--editorial-ink); color:var(--editorial-white); }
.c-outline { color:var(--editorial-forest); background:transparent; }
.c-outline:hover { background:var(--surface-sage); color:var(--editorial-ink); }
.c-panel .c-check { display:block; min-height:44px; font-weight:400; }
.c-check input { accent-color:var(--editorial-forest); width:17px; height:17px; margin:0 9px 0 0; vertical-align:middle; }
.c-notice { margin:24px 0; padding:16px 20px; border:0; border-left:3px solid var(--editorial-success); background:var(--surface-sage); color:var(--editorial-success); border-radius:0; }
.c-error { background:var(--surface-clay); border-color:var(--editorial-danger); color:var(--editorial-danger); }
.contribution-site .input-validation-error { border-color:var(--editorial-danger); }
.contribution-site .field-validation-error,.contribution-site .validation-summary-errors { color:var(--editorial-danger); }
.validation-summary-valid { display:none; }

/* Hero search is the approved translucent compact variant. */
.forest-search { display:flex; align-items:center; gap:12px; width:100%; max-width:420px; min-height:54px; padding:4px 8px 4px 18px; border:1px solid rgba(214,201,152,.6); border-radius:28px; background:rgba(9,24,15,.55); color:var(--forest-gold); }
.forest-search > .bi { flex:0 0 20px; width:20px; line-height:1; font-size:20px; }
.forest-search input { min-width:0; flex:1; width:100%; padding:8px 0; border:0; border-radius:0; background:transparent; color:var(--forest-cream); font:400 14px/1.5 var(--font-sans); }
.forest-search input::placeholder { color:#d2d0b9; opacity:1; }
.forest-search button { display:grid; place-items:center; flex:0 0 44px; width:44px; height:44px; padding:0; border:0; border-radius:50%; background:transparent; color:var(--forest-gold); }
.forest-search button:hover { background:rgba(214,201,152,.12); }
.forest-search:focus-within { border-color:var(--forest-cream); }

@media(max-width:575.98px) {
 .forest-search { max-width:320px; min-height:44px; gap:8px; padding:2px 4px 2px 12px; border-radius:22px; }
 .forest-search > .bi { flex-basis:16px; width:16px; font-size:16px; }
 .forest-search button { flex-basis:36px; width:36px; height:36px; font-size:16px; }
 .forest-search input { padding-block:6px; font-size:13px; }
}

/* Community actions retain their active labels/icons and share control dimensions. */
.btn-action-like,.btn-action-fav { display:inline-flex; align-items:center; gap:.4rem; min-height:var(--control-min); padding:var(--control-pad-y) 14px; border:1px solid var(--editorial-line); border-radius:2px; color:var(--editorial-ink); background:transparent; font:400 .9rem/1.5 var(--font-sans); cursor:pointer; transition:color .15s,background-color .15s,border-color .15s; }
.btn-action-like.active { background:var(--surface-clay); color:var(--editorial-danger); border-color:var(--editorial-danger); }
.btn-action-fav.active { background:var(--surface-ochre); color:var(--amber-text); border-color:var(--editorial-amber); }

.btn-google { background:#fff; color:#3c4043; border:1px solid #dadce0; font-weight:500; }
.btn-google:hover { background:#f8fafd; border-color:#c2c7d0; color:#202124; }

/* Contribution-specific control variants; page CSS owns only field layout. */
.c-text-button { min-height:44px; border:0; background:transparent; padding:3px 0; color:var(--editorial-forest); text-decoration:underline; text-underline-offset:4px; }
.contribution-site [data-species-results] button { display:block; text-align:left; width:100%; border:1px solid var(--editorial-line); background:var(--editorial-white); color:var(--editorial-ink); padding:12px; margin:6px 0; border-radius:var(--radius-sm); font-family:var(--font-sans); }
.contribution-site [data-species-results] small { display:block; color:var(--editorial-muted); }
