/* torus-select.css — custom dropdown that replaces the native <select> popup.
   The native <select> is hidden (kept for value/form logic); the button + portal
   panel below are what the user sees. Glass + cosmic palette; theme-aware. */

/* hide the real select but keep it in the layout's flow via the wrapper */
.torus-select { position: relative; display: block; width: 100%; }
select.torus-select-native {
  position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px;
  opacity: 0; pointer-events: none; overflow: hidden; clip: rect(0 0 0 0); border: 0;
}

.torus-select-btn {
  width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 8px;
  padding: 9px 12px; font: inherit; text-align: left; cursor: pointer;
  background: var(--glass-1); border: 1px solid var(--glass-border); border-radius: 10px;
  color: var(--text-primary); transition: border-color .15s ease, box-shadow .15s ease;
}
.torus-select-btn:hover { border-color: var(--glass-border-2, var(--glass-border)); }
.torus-select-btn:focus-visible, .torus-select.is-open .torus-select-btn {
  outline: none; border-color: var(--accent-cyan); box-shadow: 0 0 0 3px rgba(56,189,248,.14);
}
.torus-select.is-disabled { opacity: .55; pointer-events: none; }
.torus-select-label { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.torus-select-label.is-placeholder { color: var(--text-dim); }
.torus-select-caret { flex: 0 0 auto; display: inline-flex; color: var(--text-muted); transition: transform .18s ease; }
.torus-select.is-open .torus-select-caret { transform: rotate(180deg); color: var(--accent-cyan); }

/* portal panel — appended to <body>, position:fixed set in JS */
.torus-select-panel {
  z-index: 2147483400; overflow-y: auto; padding: 5px;
  background: var(--col-indigo, #0f1535); border: 1px solid var(--glass-border-2, rgba(255,255,255,.14));
  border-radius: 12px; box-shadow: 0 24px 60px rgba(2,4,14,.62), 0 0 0 1px rgba(255,255,255,.03);
  animation: torus-select-in .16s ease;
}
@keyframes torus-select-in { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }
.torus-select-opt {
  padding: 9px 11px; border-radius: 8px; cursor: pointer; font-size: 13px; line-height: 1.3;
  color: var(--text-secondary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  transition: background .12s ease, color .12s ease;
}
.torus-select-opt:hover, .torus-select-opt.is-active { background: var(--glass-2); color: var(--text-primary); }
.torus-select-opt.is-selected { background: color-mix(in srgb, var(--accent-cyan) 22%, transparent); color: var(--text-primary); font-weight: 600; }
.torus-select-opt.is-disabled { color: var(--text-dim); cursor: default; font-style: italic; }
.torus-select-opt.is-disabled:hover { background: transparent; }

@media (prefers-reduced-motion: reduce) {
  .torus-select-caret, .torus-select-btn { transition: none; }
  .torus-select-panel { animation: none; }
}
/* Light theme: panel on a light surface */
html[data-theme="light"] .torus-select-panel { background: #ffffff; border-color: rgba(0,0,0,.1); box-shadow: 0 24px 60px rgba(30,40,90,.18); }
