/* =====================================================
   Theme Safety Rule
   - Colours must use CSS variables from appdb.tokens.css.
   - Do not introduce new hex/rgb/rgba colours here.
   - If a new colour is needed, add a semantic token in appdb.tokens.css
     (light + dark).
   ===================================================== */
/* Core shared styles (includes lookup styles) */
/* =====================================================
   appDB dropdown (searchable lookup)
   ===================================================== */
.appdb-dropdown{position:relative;}
.appdb-dropdown .dropdown-display{display:flex;align-items:center;cursor:pointer;}
.appdb-dropdown .dropdown-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.appdb-dropdown .dropdown-caret{margin-left:auto;opacity:0.7;padding-left:0.5rem;}
.appdb-dropdown .dropdown-panel{position:absolute;z-index:1050;left:0;right:0;top:100%;margin-top:2px;max-height:320px;overflow:auto;}
.appdb-dropdown .dropdown-results .list-group-item{cursor:pointer;}
.appdb-field-link-wrap{display:flex;align-items:stretch;gap:0;}
.appdb-field-link-wrap > .form-control,
.appdb-field-link-wrap > .appdb-dropdown{flex:1 1 auto;min-width:0;}
.appdb-field-link-btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:2.15rem;
  border:1px solid var(--app-control-border);
  background:var(--app-action-ghost-bg);
  color:var(--app-action-ghost-text);
  border-radius:var(--app-radius-sm);
  line-height:1;
  padding:0;
  margin-right:0;
  border-right:0;
  border-top-right-radius:0;
  border-bottom-right-radius:0;
}
.appdb-field-link-btn:hover{
  background:var(--app-action-ghost-bg-hover);
  color:var(--app-action-secondary-text);
}
.appdb-field-link-btn:focus,
.appdb-field-link-btn:focus-visible{
  outline:2px solid var(--app-focus-ring);
  outline-offset:1px;
}
.appdb-field-link-btn[disabled]{
  background:var(--app-action-disabled-bg);
  border-color:var(--app-action-disabled-border);
  color:var(--app-action-disabled-text);
  cursor:not-allowed;
}
.appdb-field-link-icon{font-size:0.95rem;}
.appdb-field-link-wrap > .appdb-field-link-btn + .form-control{
  margin-left:0;
  border-left:0;
  border-top-left-radius:0;
  border-bottom-left-radius:0;
  padding-left:0.1rem;
}
.appdb-field-link-wrap > .appdb-field-link-btn + .appdb-dropdown .dropdown-display{
  margin-left:0;
  border-left:0;
  border-top-left-radius:0;
  border-bottom-left-radius:0;
  padding-left:0.1rem;
}

/* Dropdown chip UI (v1-style single select; multi-select ready) */
.appdb-dropdown .dropdown-placeholder{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1 1 auto;min-width:0;}
.appdb-dropdown .dropdown-chips{display:flex;flex-wrap:wrap;gap:0.25rem;flex:1 1 auto;min-width:0;}
.appdb-dropdown .dropdown-chip{display:inline-flex;align-items:center;gap:0.4rem;background:var(--app-chip-bg);border:1px solid var(--app-chip-border);color:var(--app-chip-text);border-radius:4px;padding:0.05rem 0.4rem;max-width:100%;overflow:hidden;}
.appdb-dropdown .dropdown-chip-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.2;flex:1 1 auto;min-width:0;}
.appdb-dropdown .dropdown-chip--loading{position:relative;min-width:5.5rem;overflow:hidden;}
.appdb-dropdown .dropdown-chip--loading .dropdown-chip-text{opacity:0.75;}
.appdb-dropdown .dropdown-chip--loading::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg, transparent, var(--app-surface), transparent);opacity:0.35;transform:translateX(-100%);animation:appdb-dropdown-chip-loading 1.1s ease-in-out infinite;pointer-events:none;}
.appdb-dropdown .dropdown-chip-x{display:inline-block;cursor:pointer;opacity:0.65;line-height:1;}
.appdb-dropdown .dropdown-chip-x:hover{opacity:1;}
.appdb-dropdown .dropdown-chip-x:focus-visible{outline:2px solid var(--app-focus-ring);outline-offset:1px;}
@keyframes appdb-dropdown-chip-loading{100%{transform:translateX(100%);}}
/* Keep caret visible when chip present */
.appdb-dropdown .dropdown-display{gap:0.5rem;}
.appdb-dropdown.disabled .dropdown-display,
.appdb-dropdown .dropdown-display:disabled{
  background:var(--app-control-bg-disabled);
  border-color:var(--app-control-border-disabled);
  color:var(--app-text-muted);
  cursor:not-allowed;
  opacity:1;
}
.appdb-dropdown.disabled .dropdown-caret,
.appdb-dropdown .dropdown-display:disabled .dropdown-caret{
  opacity:0.65;
}
/* Filter-field wrapper: match existing filter row alignment */
.appdb-filter-field{margin-bottom:0;}
.appdb-filter-field .invalid-feedback{display:none;}

/* Field labels: tighter vertical rhythm across generated forms */
.form-group > label,
.appdb-filter-field > label,
label.mb-1{margin-bottom:0.1rem !important;}
