/* Search Expand: a single icon grows into the input; results sit above it. */
.portal-search-reserve { display: none; }
body:has(.portal-search-reserve:not([hidden])) #portalWorkspace { padding-bottom: calc(var(--portal-fab-size) + var(--space-8) + env(safe-area-inset-bottom)); }
.portal-search-reserve[hidden], .portal-search[hidden], .portal-search__popover[hidden] { display: none; }
.portal-widget-dock {
  position: fixed; z-index: 1480; right: calc(max(var(--space-6), env(safe-area-inset-right)) + var(--portal-fab-size) + var(--space-2));
  width: max-content; display: flex; gap: var(--space-2); align-items: end;
  bottom: calc(max(var(--space-6), env(safe-area-inset-bottom)) + var(--search-keyboard-offset, 0px));
}
.portal-search {
  position: relative; width: var(--portal-fab-size);
  transition: width 260ms ease-in-out;
  color: var(--ink); font-size: var(--type-body);
}
.portal-search.is-open { width: min(320px, calc(100vw - 2 * var(--space-6) - 2 * var(--portal-fab-size) - 2 * var(--space-2))); }
.portal-search__bar {
  display: flex; align-items: center; width: 100%; height: var(--portal-fab-size); overflow: hidden;
  border: 1px solid var(--line-strong); border-radius: 999px;
  background: var(--card-surface); box-shadow: var(--shadow-soft);
  transition: transform var(--motion-fast);
}
.portal-search:not(.is-open) .portal-search__bar:active { transform: scale(.94); }
.portal-search__toggle, .portal-search__close {
  display: grid; place-items: center; flex: 0 0 calc(var(--portal-fab-size) - 2px); width: calc(var(--portal-fab-size) - 2px); height: calc(var(--portal-fab-size) - 2px);
  padding: 0; background: transparent; border: 0; color: var(--muted); cursor: pointer;
  border-radius: 999px;
}
.portal-search__toggle svg, .portal-search__close svg { width: var(--portal-fab-icon-size); height: var(--portal-fab-icon-size); fill: currentColor; stroke: none; }
.portal-search__bar input {
  width: 0; min-width: 0; flex: 1 1 0; height: calc(var(--portal-fab-size) - 2px); margin: 0; padding: 0; border: 0;
  background: transparent; color: var(--ink); font: inherit; font-size: 14px;
  opacity: 0; visibility: hidden; transition: opacity 200ms ease 60ms;
}
.portal-search.is-open input { opacity: 1; visibility: visible; }
.portal-search__bar input::placeholder { color: var(--muted); }
.portal-search__bar input::-webkit-search-cancel-button { display: none; }
.portal-search__close { flex-basis: 34px; width: 34px; margin-right: var(--space-1); opacity: 0; visibility: hidden; transition: opacity 200ms ease 60ms; }
.portal-search.is-open .portal-search__close { opacity: 1; visibility: visible; }
.portal-search__popover {
  position: absolute; bottom: calc(100% + var(--space-3)); right: 0;
  width: min(440px, calc(100vw - 2 * var(--space-6) - 2 * var(--portal-fab-size) - 2 * var(--space-2))); max-height: min(440px, calc(var(--search-viewport-height, 100dvh) - var(--portal-fab-size) - 2 * var(--space-6) - var(--space-3)));
  display: flex; flex-direction: column; overflow: hidden;
  background: var(--card-surface); border: 1px solid var(--line-strong); border-radius: var(--radius);
  box-shadow: var(--shadow); animation: portal-search-results 180ms ease-out 100ms both;
}
.portal-search__body { padding: var(--space-2); min-height: 0; overflow: auto; overscroll-behavior: contain; scroll-padding: var(--space-2); }
.portal-search__status { margin: var(--space-2); color: var(--muted); font-size: var(--type-caption); line-height: 1.5; }
.portal-search__results { display: grid; gap: var(--space-1); min-width: 0; }
.portal-search__result {
  display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--space-1) var(--space-3); width: 100%; min-width: 0;
  padding: var(--space-3); border: 1px solid transparent; border-radius: var(--radius-sm); background: transparent;
  color: var(--ink); text-align: left; font: inherit; cursor: pointer;
}
.portal-search__result[aria-selected="true"] { background: var(--surface-2); border-color: var(--line); }
.portal-search__result-title { grid-column: 1; grid-row: 1; font-size: var(--type-body); font-weight: var(--weight-medium); overflow-wrap: anywhere; }
.portal-search__kind { grid-column: 2; grid-row: 1; color: var(--muted); font-size: var(--type-caption); align-self: start; padding-top: 2px; }
.portal-search__subtitle { grid-column: 1 / -1; color: var(--muted); font-size: var(--type-caption); line-height: 1.45; overflow-wrap: anywhere; }
.portal-search__subtitle:empty { display: none; }
@keyframes portal-search-results { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: translateY(0); } }
@media (max-width: 700px) {
  .portal-widget-dock, .portal-search-reserve { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  .portal-search, .portal-search__bar, .portal-search__bar input, .portal-search__close { transition: none; }
  .portal-search__popover { animation: none; }
}
