/* Inline course explorer: stays in the timetable page instead of opening as a modal. */
.top-primary { min-width: 0; display: flex; flex-direction: column; gap: 8px; }
.top-primary .heading { margin: 0; }
.top-primary .toolbar { margin: 0; justify-content: flex-start; }
.top-primary .statistics { margin-left: 0; }
.top { align-items: flex-start; }

dialog.query-inline {
  position: static;
  inset: auto;
  width: 100%;
  max-width: none;
  max-height: none;
  margin: 0 0 10px;
  padding: 12px 16px 10px;
  border: 1px solid var(--line);
  border-radius: 7px;
  box-shadow: none;
  overflow: visible;
  background: #fbfcfe;
  flex: none;
}

dialog.query-inline::backdrop { display: none; }
dialog.query-inline .dialog-head { margin-bottom: 9px; }
dialog.query-inline [data-close="query-dialog"] { display: none; }
dialog.query-inline .query-scope { margin: 2px 0 0; }

dialog.query-inline .query-filter-toggle {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:auto;
  min-width:0;
  min-height:30px;
  padding:4px 9px;
  margin:0 0 6px;
  border:1px solid #d8e2ec;
  border-radius:6px;
  background:#fff;
  color:#40556b;
  font-size:12px;
  font-weight:600;
  line-height:1;
  white-space:nowrap;
}
dialog.query-inline .query-filter-toggle > span { display:none; }
dialog.query-inline .query-filter-toggle::before { content:'筛选'; }
dialog.query-inline .query-filter-toggle[aria-expanded="false"]::after { content:' ›'; margin-left:4px; }
dialog.query-inline .query-filter-toggle[aria-expanded="true"]::after { content:' ⌄'; margin-left:4px; }
dialog.query-inline .query-filter-toggle:hover { background:#eef3f7; }

dialog.query-inline .query-controls,
dialog.query-inline .query-scope-row,
dialog.query-inline #query-form > .campus-filter { display:none; }
dialog.query-inline.query-filters-expanded .query-controls { display:grid; }
dialog.query-inline.query-filters-expanded .query-scope-row { display:grid; }
dialog.query-inline.query-filters-expanded #query-form > .campus-filter { display:block; }

dialog.query-inline .query-controls {
  grid-template-columns: minmax(170px,1.05fr) minmax(190px,1.2fr) minmax(180px,1fr) auto;
  gap: 10px;
}

dialog.query-inline .query-search-row {
  display:grid;
  grid-template-columns:max-content minmax(0,1fr) max-content;
  gap:7px;
  align-items:center;
  width:100%;
  min-width:0;
  margin-top:7px;
  padding-top:8px;
  border-top:1px solid var(--line);
}

dialog.query-inline .query-search-row > div { min-width:0; }
dialog.query-inline .query-search-row input { width:100%; min-width:0; }
dialog.query-inline .query-search-row label,
dialog.query-inline .query-controls label,
dialog.query-inline .campus-filter legend { display:none!important; }

dialog.query-inline .query-search-row button[type="submit"] {
  width:52px;
  min-width:52px;
  max-width:52px;
  min-height:34px;
  padding:3px 8px;
  align-self:center;
  font-size:12px;
  white-space:nowrap;
  flex:none;
}

dialog.query-inline .query-unlimited-toggle {
  min-width:44px;
  min-height:34px;
  padding:3px 7px;
  border-color:#aab8c7;
  background:#fff;
  color:#40556b;
  font-size:12px;
  white-space:nowrap;
}

dialog.query-inline .query-unlimited-toggle[aria-pressed="true"] {
  border-color: #365e89;
  background: #365e89;
  color: #fff;
}

dialog.query-inline #query-now {
  min-width:58px;
  min-height:38px;
  padding:5px 10px;
  align-self:end;
  font-size:13px;
}

/* Discovery mode still exposes filters. Date/period/current-time controls stay hidden by JS;
   expanding the filter shows the relevant department, weekday, level and campus controls. */
dialog.query-inline.query-unlimited.query-filters-expanded .query-controls { display:grid; }
dialog.query-inline.query-unlimited.query-filters-expanded .query-scope-row { display:grid; }
dialog.query-inline.query-unlimited.query-filters-expanded #query-form > .campus-filter { display:block; }
dialog.query-inline.query-unlimited .query-search-row { border-top:0; padding-top:0; }

dialog.query-inline .query-results {
  max-height:min(560px,58dvh);
  overflow-y:auto;
  overscroll-behavior-x:contain;
  overscroll-behavior-y:auto;
  scrollbar-gutter:auto;
  scrollbar-width:none;
}
dialog.query-inline .query-results::-webkit-scrollbar { display:none; }

dialog.query-inline .query-suggestion-note {
  grid-column:1 / -1;
  margin:8px 0 2px;
  padding:9px 10px;
  border:1px solid #d8e2ec;
  border-radius:5px;
  background:#f3f7fb;
  color:#52677d;
  font-size:13px;
  line-height:1.55;
}

dialog.query-inline .query-skeleton {
  min-height:88px;
  padding:11px 0;
  border-bottom:1px solid var(--line);
  display:flex;
  flex-direction:column;
  gap:8px;
}

dialog.query-inline .query-skeleton span {
  display:block;
  border-radius:4px;
  background:linear-gradient(90deg,#edf1f5 25%,#f7f9fb 50%,#edf1f5 75%);
  background-size:200% 100%;
  animation:query-loading 1.15s ease-in-out infinite;
}

dialog.query-inline .query-skeleton-title { width:52%; height:17px; }
dialog.query-inline .query-skeleton-line { width:78%; height:12px; }
dialog.query-inline .query-skeleton-line.short { width:42%; }

@keyframes query-loading {
  from { background-position:200% 0; }
  to { background-position:-200% 0; }
}

#open-query[aria-expanded="true"] { box-shadow:inset 0 0 0 2px rgba(255,255,255,.3); }

@media (max-width:650px) {
  .top { gap:10px; }
  .top-primary { width:100%; gap:6px; }
  .top-primary .toolbar { display:flex; gap:5px 7px; align-items:center; }
  .top-primary .semester { width:100%; font-size:12px; }
  .top-primary .week-control #open-calendar { min-width:168px; font-size:12px; }
  .top-primary .statistics { width:100%; }

  dialog.query-inline {
    max-height:none;
    margin:0 0 8px;
    padding:10px 10px 8px;
    border-radius:6px;
    overflow:visible;
  }
  dialog.query-inline .dialog-head { margin-bottom:7px; }
  dialog.query-inline .query-controls {
    grid-template-columns:minmax(0,1fr) minmax(0,1fr);
    gap:8px;
  }
  dialog.query-inline .query-controls > div,
  dialog.query-inline .query-controls select,
  dialog.query-inline .query-controls input { min-width:0; width:100%; }
  dialog.query-inline #query-now {
    width:auto;
    justify-self:start;
    min-height:34px;
    padding:4px 9px;
  }

  /* Mobile search contract: auxiliary controls get their own row; the actual
     search input and submit button must always consume one complete row. */
  dialog.query-inline .query-search-row {
    grid-template-columns:minmax(0,1fr) 52px;
    gap:6px;
    margin-top:5px;
    padding-top:7px;
  }
  dialog.query-inline .query-unlimited-toggle {
    grid-column:1 / -1;
    justify-self:start;
    width:auto;
    min-width:44px;
    min-height:34px;
    padding:3px 7px;
    font-size:12px;
  }
  dialog.query-inline .query-search-row > div {
    grid-column:1;
    min-width:0;
  }
  dialog.query-inline .query-search-row input {
    width:100%;
    min-width:0;
    min-height:40px;
    font-size:14px;
    padding-left:10px;
    padding-right:10px;
  }
  dialog.query-inline .query-search-row button[type="submit"] {
    grid-column:2;
    width:52px;
    min-width:52px;
    max-width:52px;
    min-height:40px;
    padding:4px 7px;
    font-size:12px;
    line-height:1;
    white-space:nowrap;
  }
  dialog.query-inline .campus-filter { margin-top:9px; }
  dialog.query-inline .campus-options { gap:5px; }
  dialog.query-inline .campus-options label { display:inline-flex!important; padding:4px 7px; font-size:12px; }
  dialog.query-inline .query-summary { margin:9px 0 5px; font-size:13px; }
  dialog.query-inline .query-results { max-height:64dvh; grid-template-columns:1fr; }
}

@media (prefers-reduced-motion:reduce) {
  dialog.query-inline { scroll-behavior:auto; }
  dialog.query-inline .query-skeleton span { animation:none; }
}
