/* Shared filter system: one visual contract for Django list and dashboard screens. */
[data-filter-panel] {
  border: 1px solid var(--color-slate-200, #e2e8f0);
  border-radius: var(--radius-lg);
  background: var(--color-white, #fff);
  box-shadow: 0 1px 2px color-mix(in srgb, var(--color-slate-900, #0f172a) 4%, transparent);
  min-width: 0;
  max-width: 100%;
  overflow: visible;
}

/* Legacy module GET forms are normalized to this stable runtime contract. */
form[data-filter-panel].ui-filter-form {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 12rem), 1fr));
  align-items: end;
  gap: 0.75rem;
  margin-bottom: 1rem;
  padding: 1rem;
}

form[data-filter-panel].ui-filter-form > [data-filter-field] { min-width: 0; }
form[data-filter-panel].ui-filter-form > [data-filter-actions] { grid-column: 1 / -1; flex-wrap: wrap; }

[data-filter-panel] .select2-container { width: 100% !important; max-width: 100%; }
[data-filter-panel] .select2-selection {
  min-height: 2.5rem;
  border-color: var(--color-slate-200, #e2e8f0) !important;
  border-radius: 9px !important;
}

/* Canonical skin for shared and runtime-normalized module actions. */
#app-main #app-content [data-ui-button] {
  display: inline-flex;
  min-height: 2.5rem;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  border: 1px solid var(--color-slate-200, #e2e8f0);
  border-radius: 0.625rem;
  padding: 0.5rem 1rem;
  font-size: 0.875rem;
  font-weight: 600;
  line-height: 1.25rem;
  text-decoration: none;
  box-shadow: 0 1px 2px color-mix(in srgb, var(--color-slate-900, #0f172a) 6%, transparent);
  transition: border-color 150ms ease, background-color 150ms ease, color 150ms ease, box-shadow 150ms ease, transform 150ms ease;
}

#app-main #app-content [data-ui-button='primary'] { border-color: var(--brand-primary); background: var(--brand-primary); color: var(--brand-on-primary, white); }
#app-main #app-content [data-ui-button='secondary'] { background: var(--color-white, #fff); color: var(--color-slate-700, #334155); }
#app-main #app-content [data-ui-button='ghost'] { border-color: transparent; background: transparent; color: var(--color-slate-700, #334155); box-shadow: none; }
#app-main #app-content [data-ui-button='danger'] { border-color: var(--color-danger-600, #dc2626); background: var(--color-danger-600, #dc2626); color: white; }
#app-main #app-content [data-ui-button]:hover { transform: translateY(-1px); }
#app-main #app-content [data-ui-button]:active { transform: translateY(0); }
#app-main #app-content [data-ui-button]:focus-visible { outline: 0; box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-interactive-focus, var(--brand-focus, #334155)) 18%, transparent); }
#app-main #app-content [data-ui-button]:disabled,
#app-main #app-content [data-ui-button][aria-disabled='true'] { cursor: not-allowed; opacity: 0.5; transform: none; }

/* Checklist list/report filters deliberately mirror the Tasks advanced panel. */
.checklist-filter-panel input:not([type='hidden']):not([type='checkbox']):not([type='radio']),
.checklist-filter-panel select,
.checklist-filter-panel button:not([data-ui-button]) {
  min-height: 2.75rem;
  border-radius: 0.5rem;
}

.checklist-filter-panel label { color: var(--color-slate-500, #64748b); }
.checklist-filter-panel label > input,
.checklist-filter-panel label > select { color: var(--color-slate-800, #1e293b); font-size: 0.875rem; text-transform: none; }
html.dark .checklist-filter-panel label { color: var(--color-slate-400, #94a3b8); }
html.dark .checklist-filter-panel label > input,
html.dark .checklist-filter-panel label > select { color: var(--color-slate-100, #f1f5f9); }

/* The card owns the surface; the filter region must not draw a second card. */
.filter-panel-shell [data-filter-panel] {
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}

[data-filter-panel] [data-filter-grid],
[data-filter-panel] form,
[data-filter-panel] [data-filter-grid] > *,
[data-filter-panel] form > * {
  min-width: 0;
}

[data-filter-panel] form {
  align-items: end;
}

[data-filter-panel] label {
  display: block;
  margin-bottom: 6px;
  color: var(--color-slate-700, #334155);
  font-size: var(--font-size-compact);
  font-weight: 600;
  line-height: 1.25rem;
  text-transform: uppercase;
  letter-spacing: 0.025em;
}

[data-filter-panel] input:not([type='hidden']):not([type='checkbox']):not([type='radio']),
[data-filter-panel] select,
[data-filter-panel] textarea,
[data-filter-panel] [data-filter-control],
[data-filter-panel] [data-week-trigger],
[data-filter-panel] [data-dashboard-category-toggle],
[data-filter-panel] [data-dashboard-subcategory-toggle] {
  width: 100%;
  min-width: 0;
  max-width: 100%;
  min-height: 2.75rem;
  border: 1px solid var(--color-slate-200, #e2e8f0);
  border-radius: 9px;
  background: var(--color-white, #fff);
  color: var(--color-slate-800, #1e293b);
  box-shadow: 0 1px 2px color-mix(in srgb, var(--color-slate-900, #0f172a) 4%, transparent);
  transition: border-color 150ms ease, box-shadow 150ms ease, background-color 150ms ease;
}

[data-filter-panel] input:not([type='hidden']):not([type='checkbox']):not([type='radio']),
[data-filter-panel] select,
[data-filter-panel] textarea {
  padding: 9px 12px;
}

[data-filter-panel] textarea {
  min-height: 5rem;
  resize: vertical;
}

[data-filter-panel] select:not([multiple]),
[data-filter-panel] input:not([type='hidden']):not([type='checkbox']):not([type='radio']) {
  height: 2.75rem;
}

[data-filter-panel] input:not([type='hidden']):not([type='checkbox']):not([type='radio']):focus,
[data-filter-panel] select:focus,
[data-filter-panel] textarea:focus,
[data-filter-panel] [data-filter-control]:focus,
[data-filter-panel] [data-week-trigger]:focus,
[data-filter-panel] [data-dashboard-category-toggle]:focus,
[data-filter-panel] [data-dashboard-subcategory-toggle]:focus {
  border-color: var(--color-interactive-focus, var(--brand-focus, #334155));
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-interactive-focus, var(--brand-focus, #334155)) 14%, transparent);
  outline: 0;
}

[data-filter-panel] input::placeholder,
[data-filter-panel] textarea::placeholder {
  color: var(--color-slate-400, #94a3b8);
}

[data-filter-panel] p,
[data-filter-panel] .filter-help {
  color: var(--color-slate-500, #64748b);
  font-size: var(--font-size-xs);
  line-height: 1rem;
}

[data-filter-panel] .filter-actions,
[data-filter-panel] form > .col-span-full:last-child,
[data-filter-panel] form > .filter-actions:last-child {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 10px;
  margin-top: 0;
  padding-top: 12px;
  border-top: 1px solid var(--color-slate-200, #e2e8f0);
}

[data-filter-panel] .filter-actions a,
[data-filter-panel] .filter-actions button,
[data-filter-panel] form > .col-span-full:last-child a,
[data-filter-panel] form > .col-span-full:last-child button {
  width: auto;
  min-height: 2.5rem;
}

/* Task-style quick ranges wrap tightly instead of reserving empty columns. */
[data-filter-panel] .dashboard-date-presets,
[data-filter-panel] [data-filter-quick-periods],
[data-filter-panel] [role='group'][data-period-presets] {
  display: flex;
  grid-column: 1 / -1;
  flex-wrap: nowrap;
  gap: 0.375rem;
  margin: 0;
  max-width: 100%;
  overflow-x: auto;
  scrollbar-width: thin;
}

[data-filter-panel] .dashboard-date-preset,
[data-filter-panel] [data-filter-quick-periods] button,
[data-filter-panel] [data-period-presets] button {
  width: auto;
  min-height: 2rem;
  border-radius: 999px;
  padding: 0.25rem 0.625rem;
  white-space: nowrap;
}

[data-filter-panel] [data-week-menu],
[data-filter-panel] [data-dashboard-category-menu],
[data-filter-panel] [data-dashboard-subcategory-menu] {
  right: 0;
  left: auto;
  width: max(100%, 16rem);
  max-width: min(26rem, calc(100vw - 2rem));
  max-height: min(18rem, calc(100vh - 2rem));
  max-height: min(18rem, calc(100dvh - 2rem));
  overflow-y: auto;
  overscroll-behavior: contain;
  border-color: var(--color-slate-200, #e2e8f0);
  border-radius: 9px;
  background: var(--color-white, #fff);
  box-shadow: 0 10px 24px color-mix(in srgb, var(--color-slate-900, #0f172a) 12%, transparent);
}

[data-filter-panel] [data-dashboard-category-menu] label,
[data-filter-panel] [data-dashboard-subcategory-menu] label {
  display: flex;
  min-height: 2.25rem;
  align-items: center;
  gap: 0.5rem;
  margin-bottom: 0;
  text-transform: none;
  letter-spacing: normal;
}

[data-filter-panel] [data-dashboard-category-menu] input[type='checkbox'],
[data-filter-panel] [data-dashboard-subcategory-menu] input[type='checkbox'] {
  width: 1rem;
  min-width: 1rem;
  height: 1rem;
  min-height: 1rem;
  padding: 0;
  box-shadow: none;
}

[data-filter-panel] [data-dashboard-category-menu] label > span,
[data-filter-panel] [data-dashboard-subcategory-menu] label > span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

html.dark [data-filter-panel] {
  border-color: var(--color-slate-700, #334155);
  background: var(--color-slate-900, #0f172a);
}

html.dark #app-main #app-content [data-ui-button='secondary'],
html.dark #app-main #app-content [data-ui-button='ghost'] { border-color: var(--color-slate-700, #334155); background: var(--color-slate-900, #0f172a); color: var(--color-slate-100, #f1f5f9); }
html.dark #app-main #app-content [data-ui-button='ghost'] { border-color: transparent; background: transparent; }

html.dark .filter-panel-shell [data-filter-panel] {
  border: 0;
  background: transparent;
}

html.dark [data-filter-panel] label { color: var(--color-slate-200, #e2e8f0); }

html.dark [data-filter-panel] input:not([type='hidden']):not([type='checkbox']):not([type='radio']),
html.dark [data-filter-panel] select,
html.dark [data-filter-panel] textarea,
html.dark [data-filter-panel] [data-filter-control],
html.dark [data-filter-panel] [data-week-trigger],
html.dark [data-filter-panel] [data-dashboard-category-toggle],
html.dark [data-filter-panel] [data-dashboard-subcategory-toggle] {
  border-color: var(--color-slate-600, #475569);
  background: var(--color-black, #09090b);
  color: var(--color-slate-100, #f1f5f9);
}

html.dark [data-filter-panel] .filter-actions,
html.dark [data-filter-panel] form > .col-span-full:last-child { border-color: var(--color-slate-700, #334155); }

html.dark [data-filter-panel] [data-dashboard-category-menu],
html.dark [data-filter-panel] [data-dashboard-subcategory-menu] {
  border-color: var(--color-slate-700, #334155);
  background: var(--color-slate-900, #0f172a);
}

@media (max-width: 639px) {
  .filter-panel-shell > div { padding: 0.75rem; }
  [data-filter-panel] [data-filter-grid],
  [data-filter-panel] form { grid-template-columns: minmax(0, 1fr) !important; }
  [data-filter-panel] .filter-actions,
  [data-filter-panel] form > .col-span-full:last-child { flex-direction: column-reverse; }
  [data-filter-panel] .filter-actions a,
  [data-filter-panel] .filter-actions button,
  [data-filter-panel] form > .col-span-full:last-child a,
  [data-filter-panel] form > .col-span-full:last-child button { width: 100%; }
  [data-filter-panel] [data-week-menu],
  [data-filter-panel] [data-dashboard-category-menu],
  [data-filter-panel] [data-dashboard-subcategory-menu] {
    right: auto;
    left: 0;
    width: 100%;
    max-width: calc(100vw - 2rem);
  }
  form[data-filter-panel].ui-filter-form { grid-template-columns: minmax(0, 1fr); padding: 0.75rem; }
  form[data-filter-panel].ui-filter-form > [data-filter-actions] { flex-direction: column-reverse; }
  form[data-filter-panel].ui-filter-form > [data-filter-actions] [data-ui-button] { width: 100%; }
}

@media (prefers-reduced-motion: reduce) {
  [data-filter-panel] input,
  [data-filter-panel] select,
  [data-filter-panel] textarea,
  [data-filter-panel] button { transition: none !important; }
}
