.pattern-lab-page {
  --pl-accent: var(--ui-primary, #e36b63);
  --pl-blue: var(--ui-blue, #66a7ff);
  min-height: calc(100vh - 88px);
  padding: 14px;
  color: var(--ui-text);
}

.pattern-lab-page[hidden] { display: none !important; }

.pattern-lab-shell {
  width: min(100%, 1540px);
  min-height: calc(100vh - 116px);
  margin: 0 auto;
}

.pattern-lab-page:not(.has-reference):not(.has-results) .pattern-lab-shell {
  display: grid;
  place-items: start center;
  padding-top: clamp(72px, 8vh, 110px);
}

.pattern-query-dialog {
  position: relative;
  width: min(100%, 1240px);
  margin: 0 auto;
  transition: min-height .26s ease, width .26s ease;
}

.pattern-lab-page.has-reference .pattern-query-dialog,
.pattern-lab-page.has-results .pattern-query-dialog { width: 100%; }

.pattern-query-toggle {
  width: 100%;
  min-height: 34px;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--pl-accent);
  cursor: pointer;
}

.pattern-query-toggle[hidden] { display: none !important; }
.pattern-query-toggle:hover,
.pattern-query-toggle:focus-visible { outline: none; }

.pattern-query-toggle-action {
  width: 42px;
  height: 30px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--pl-accent);
  filter: drop-shadow(0 0 7px color-mix(in srgb, var(--pl-accent) 34%, transparent));
}

.pattern-query-toggle:focus-visible .pattern-query-toggle-action {
  border-radius: 999px;
  outline: 1px solid currentColor;
  outline-offset: 1px;
}

.pattern-query-toggle-action i,
.pattern-query-toggle-action svg {
  width: 18px;
  height: 18px;
  display: block;
}

.pattern-query-toggle-action i { transition: transform .2s ease; }
.pattern-query-toggle-action svg {
  overflow: visible;
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.6;
}

.pattern-query-dialog.is-collapsed .pattern-query-toggle-action i {
  animation: pattern-query-expand-bob 1.45s ease-in-out infinite;
}

.pattern-query-dialog:not(.is-collapsed) .pattern-query-toggle-action i {
  animation: pattern-query-collapse-bob 1.45s ease-in-out infinite;
}

@keyframes pattern-query-expand-bob {
  0%, 100% { opacity: .52; transform: translateY(-2px) rotate(180deg); }
  50% { opacity: 1; transform: translateY(3px) rotate(180deg); }
}

@keyframes pattern-query-collapse-bob {
  0%, 100% { opacity: .52; transform: translateY(2px); }
  50% { opacity: 1; transform: translateY(-3px); }
}

.pattern-query-composer {
  max-height: 1400px;
  overflow: visible;
  opacity: 1;
  transition: max-height .3s ease, opacity .18s ease, margin .3s ease;
}

.pattern-lab-page.pattern-query-collapsed .pattern-query-dialog { min-height: 34px; }
.pattern-lab-page.pattern-query-collapsed .pattern-query-composer {
  max-height: 0;
  margin: 0;
  overflow: hidden;
  opacity: 0;
  pointer-events: none;
  visibility: hidden;
}

.pattern-stock-picker {
  position: relative;
  min-height: 230px;
  display: grid;
  place-content: center;
  justify-items: center;
  gap: 14px;
  padding: 36px 0;
  border: 0;
  border-radius: 0;
  background: transparent;
}

.pattern-stock-picker-copy {
  text-align: center;
}

.pattern-stock-picker-copy strong {
  color: var(--ui-text);
  font-size: 18px;
  font-weight: 850;
  letter-spacing: -.02em;
}

.pattern-stock-search {
  position: relative;
  width: min(100%, 720px);
}

.pattern-search-icon {
  position: absolute;
  z-index: 2;
  top: 50%;
  left: 17px;
  width: 20px;
  height: 20px;
  color: var(--ui-faint);
  transform: translateY(-50%);
  pointer-events: none;
}

.pattern-search-icon svg {
  width: 100%;
  height: 100%;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.7;
  stroke-linecap: round;
}

.pattern-lab-page input[type="search"],
.pattern-lab-page select {
  width: 100%;
  border: 1px solid var(--ui-border);
  border-radius: var(--ui-radius-sm, 8px);
  outline: none;
  background: var(--ui-surface);
  color: var(--ui-text);
  font: inherit;
}

#patternStockSearch {
  min-height: 58px;
  padding: 12px 18px 12px 50px;
  border-radius: 999px;
  background: var(--ui-surface-raised);
  font-size: 16px;
  box-shadow: 0 12px 32px rgba(0, 0, 0, .08);
}

.pattern-lab-page input:focus,
.pattern-lab-page select:focus {
  border-color: var(--pl-accent);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--pl-accent) 12%, transparent);
}

.pattern-stock-suggestions {
  position: absolute;
  z-index: 30;
  top: calc(100% + 7px);
  right: 0;
  left: 0;
  max-height: 280px;
  overflow-y: auto;
  padding: 5px;
  border: 1px solid var(--ui-border);
  border-radius: var(--ui-radius-sm, 9px);
  background: var(--ui-surface-raised);
  box-shadow: 0 18px 46px rgba(0, 0, 0, .22);
}

.pattern-stock-suggestions[hidden] { display: none !important; }
.pattern-stock-suggestions button {
  width: 100%;
  min-height: 44px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 8px 11px;
  border: 0;
  border-radius: 7px;
  background: transparent;
  color: var(--ui-text-soft);
  text-align: left;
  cursor: pointer;
}

.pattern-stock-suggestions button:hover,
.pattern-stock-suggestions button:focus-visible,
.pattern-stock-suggestions button.is-active {
  outline: none;
  background: var(--ui-primary-soft);
}

.pattern-stock-suggestions small { color: var(--ui-muted); font-size: 10px; }

.pattern-lab-page.has-reference .pattern-stock-picker {
  min-height: 0;
  grid-template-columns: auto minmax(260px, 680px);
  place-content: stretch;
  align-items: center;
  justify-items: stretch;
  gap: 16px;
  padding: 13px 15px;
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
  background: var(--ui-surface);
}

.pattern-lab-page.has-reference .pattern-stock-picker-copy {
  text-align: left;
}

.pattern-lab-page.has-reference .pattern-stock-picker-copy strong { font-size: 13px; }
.pattern-lab-page.has-reference #patternStockSearch { min-height: 42px; border-radius: 999px; font-size: 12px; box-shadow: none; }

.pattern-reference-workspace {
  padding: 13px;
  border: 1px solid var(--ui-border);
  border-top: 0;
  border-bottom-right-radius: var(--ui-radius-sm, 10px);
  border-bottom-left-radius: var(--ui-radius-sm, 10px);
  background: var(--ui-surface-raised);
}

.pattern-reference-workspace[hidden] { display: none !important; }
.pattern-reference-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  min-height: 42px;
  padding: 0 2px 10px;
  border-bottom: 1px solid var(--ui-border-soft);
}

.pattern-stock-meta {
  min-width: 0;
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 4px 12px;
  color: var(--ui-muted);
  font-size: 10px;
}

.pattern-stock-meta strong { color: var(--ui-text); font-size: 14px; }
.pattern-reference-tools { display: flex; gap: 7px; }
.pattern-period-tabs,
.pattern-chart-modes,
.pattern-result-period-tabs {
  display: flex;
  gap: 3px;
  padding: 3px;
  border: 1px solid var(--ui-border);
  border-radius: 8px;
  background: var(--ui-surface);
}

.pattern-period-tabs button,
.pattern-chart-modes button,
.pattern-result-period-tabs button {
  min-height: 30px;
  padding: 5px 10px;
  border: 0;
  border-radius: 6px;
  background: transparent;
  color: var(--ui-muted);
  font-size: 10px;
  cursor: pointer;
}

.pattern-period-tabs button.is-active,
.pattern-chart-modes button.is-active,
.pattern-result-period-tabs button.is-active {
  background: var(--ui-primary-soft);
  color: var(--ui-text);
}

.pattern-kline-chart { height: 420px; min-height: 300px; }
.pattern-range-controls {
  display: grid;
  grid-template-columns: minmax(150px, 190px) 24px minmax(150px, 190px) 1fr;
  align-items: end;
  gap: 8px;
  padding: 10px 12px;
  border: 1px solid var(--ui-border-soft);
  border-radius: 9px;
  background: var(--ui-surface);
}

.pattern-range-controls label > span,
.pattern-range-footer label > span {
  display: block;
  margin-bottom: 5px;
  color: var(--ui-muted);
  font-size: 9px;
  font-weight: 750;
}

.pattern-range-controls select,
.pattern-range-footer select { min-height: 36px; padding: 6px 9px; font-size: 11px; }
.pattern-range-arrow { align-self: center; color: var(--ui-faint); text-align: center; }
.pattern-range-controls output { align-self: center; color: var(--pl-accent); font-size: 10px; }
.pattern-range-footer {
  display: grid;
  grid-template-columns: minmax(180px, 1fr) 110px auto auto;
  align-items: end;
  gap: 10px;
  margin-top: 10px;
}

.pattern-check {
  min-height: 36px;
  display: flex !important;
  align-items: center;
  gap: 7px;
  padding: 0 4px;
  color: var(--ui-muted);
  font-size: 10px;
}

.pattern-check input { accent-color: var(--pl-accent); }
.pattern-check span { margin: 0 !important; }
.pattern-primary-action,
.pattern-secondary-action {
  min-height: 38px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  padding: 7px 14px;
  border: 1px solid var(--ui-button-primary-border, var(--pl-accent));
  border-radius: var(--ui-radius-sm, 8px);
  background: var(--ui-button-primary-bg, var(--pl-accent));
  color: var(--ui-button-primary-text, #fff);
  font-size: 11px;
  cursor: pointer;
}

.pattern-primary-action:disabled {
  border-color: var(--ui-border);
  background: var(--ui-surface-muted);
  color: var(--ui-muted);
  cursor: progress;
  opacity: 1;
}

.pattern-button-spinner {
  width: 15px;
  height: 15px;
  flex: 0 0 auto;
  border: 2px solid color-mix(in srgb, var(--ui-muted) 35%, transparent);
  border-top-color: var(--pl-accent);
  border-radius: 50%;
  animation: pattern-job-spin .72s linear infinite;
}
.pattern-secondary-action {
  min-height: 34px;
  border-color: var(--ui-border);
  background: var(--ui-surface);
  color: var(--ui-text-soft);
}

.pattern-job-panel {
  margin-top: 10px;
  padding: 13px 16px 12px;
  border: 1px solid color-mix(in srgb, var(--pl-blue) 26%, var(--ui-border));
  border-radius: var(--ui-radius-sm, 9px);
  background:
    linear-gradient(90deg, color-mix(in srgb, var(--pl-blue) 8%, var(--ui-surface-raised)), var(--ui-surface-raised) 62%),
    var(--ui-surface-raised);
  box-shadow: 0 9px 28px rgba(0, 0, 0, .09);
}

.pattern-job-panel[hidden] { display: none !important; }
.pattern-progress-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.pattern-job-identity { min-width: 0; display: flex; align-items: center; gap: 11px; }
.pattern-job-identity > div { min-width: 0; display: grid; gap: 2px; }
.pattern-job-identity small { color: var(--pl-blue); font-size: 8px; font-weight: 800; letter-spacing: .08em; }
.pattern-job-identity strong { overflow: hidden; color: var(--ui-text); font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.pattern-job-spinner {
  width: 25px;
  height: 25px;
  flex: 0 0 auto;
  border: 2px solid color-mix(in srgb, var(--pl-blue) 24%, transparent);
  border-top-color: var(--pl-blue);
  border-radius: 50%;
  animation: pattern-job-spin .8s linear infinite;
}

@keyframes pattern-job-spin { to { transform: rotate(360deg); } }
.pattern-job-panel[data-status="done"] .pattern-job-spinner,
.pattern-job-panel[data-status="failed"] .pattern-job-spinner,
.pattern-job-panel[data-status="canceled"] .pattern-job-spinner { animation: none; border-color: var(--ui-border); border-top-color: var(--ui-border); }
.pattern-job-metrics { display: flex; align-items: center; gap: 7px; }
.pattern-job-metrics > span {
  min-width: 76px;
  display: grid;
  gap: 1px;
  padding: 5px 10px;
  border-left: 1px solid var(--ui-border-soft);
}
.pattern-job-metrics b { color: var(--ui-text); font-size: 13px; font-variant-numeric: tabular-nums; }
.pattern-job-metrics small { color: var(--ui-faint); font-size: 7px; }
.pattern-progress-head button { min-height: 30px; padding: 4px 9px; border: 1px solid var(--ui-border); border-radius: 6px; background: var(--ui-surface); color: var(--ui-muted); font-size: 9px; cursor: pointer; }
.pattern-progress-track { height: 4px; overflow: hidden; margin: 10px 0 8px; border-radius: 99px; background: var(--ui-border-soft); }
.pattern-progress-track i { display: block; width: 0; height: 100%; background: linear-gradient(90deg, var(--pl-blue), var(--pl-accent)); transition: width .35s ease; }
.pattern-market-progress {
  display: grid;
  gap: 5px;
  margin: 9px 0 10px;
  padding: 8px 10px;
  border: 1px solid color-mix(in srgb, var(--pl-blue) 18%, var(--ui-border-soft));
  border-radius: 7px;
  background: color-mix(in srgb, var(--pl-blue) 4%, var(--ui-surface));
}
.pattern-market-progress[hidden] { display: none !important; }
.pattern-market-progress-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.pattern-market-progress-head span { color: var(--ui-muted); font-size: 9px; }
.pattern-market-progress-head strong { color: var(--ui-text); font-size: 10px; font-variant-numeric: tabular-nums; }
.pattern-market-progress-track { height: 6px; overflow: hidden; border-radius: 99px; background: var(--ui-border-soft); }
.pattern-market-progress-track i { display: block; width: 0; height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--pl-blue), var(--pl-accent)); transition: width .25s ease; }
.pattern-market-progress small { overflow: hidden; color: var(--ui-faint); font-size: 8px; text-overflow: ellipsis; white-space: nowrap; }
.pattern-job-foot { display: grid; grid-template-columns: minmax(420px, 1fr) minmax(240px, auto); align-items: end; gap: 16px; }
.pattern-job-panel ol { min-width: 0; display: flex; margin: 0; padding: 0; list-style: none; }
.pattern-job-panel li { position: relative; flex: 1; padding-top: 13px; color: var(--ui-faint); font-size: 9px; }
.pattern-job-panel li::before { content: ""; position: absolute; top: 2px; left: 0; width: 6px; height: 6px; border-radius: 50%; background: var(--ui-border); }
.pattern-job-panel li.is-active,
.pattern-job-panel li.is-done { color: var(--ui-text-soft); }
.pattern-job-panel li.is-active::before,
.pattern-job-panel li.is-done::before { background: var(--pl-accent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--pl-accent) 12%, transparent); }
.pattern-job-panel p { margin: 0; overflow: hidden; color: var(--ui-muted); font-size: 9px; text-align: right; text-overflow: ellipsis; white-space: nowrap; }

.pattern-results-workspace {
  height: calc(100vh - 210px);
  min-height: 650px;
  display: flex;
  align-items: stretch;
  gap: 10px;
  margin-top: 11px;
  transition: height .25s ease, margin .25s ease;
}

.pattern-results-workspace.hidden { display: none !important; }
.pattern-lab-page.has-results:not(.pattern-query-collapsed) .pattern-results-workspace {
  height: max(650px, calc(100vh - 690px));
}

.pattern-result-list-panel {
  width: 306px !important;
  min-width: 270px !important;
  flex: 0 0 306px !important;
  height: 100%;
}

.pattern-result-list-head {
  display: grid;
  gap: 6px;
  border-bottom: 1px solid var(--ui-border-soft);
}

.pattern-result-list-head small {
  display: block;
  overflow: hidden;
  color: var(--ui-faint);
  font-size: 8px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.pattern-results { min-height: 0; }
.pattern-result-card .watchlist-stock-card-main { gap: 7px; border: 0; background: transparent; font: inherit; cursor: pointer; }
.pattern-result-card-rank { color: var(--ui-faint); font-size: 9px; font-variant-numeric: tabular-nums; }
.pattern-result-card .watchlist-stock-card-heading { justify-content: space-between; }
.pattern-result-card .watchlist-stock-card-heading > span { min-width: 0; display: flex; align-items: baseline; gap: 8px; }
.pattern-result-card .watchlist-stock-card-heading em { color: var(--ui-muted); font-size: 9px; font-style: normal; }
.pattern-card-score-row { display: grid; grid-template-columns: 58px minmax(0, 1fr); gap: 7px; align-items: center; }
.pattern-card-score { display: grid; justify-items: center; gap: 1px; padding: 6px; border-radius: 7px; background: var(--ui-primary-soft); }
.pattern-card-score b { color: var(--pl-accent); font-size: 18px; line-height: 1; }
.pattern-card-score small { color: var(--ui-faint); font-size: 7px; }
.pattern-card-mini { width: 100%; height: 40px; overflow: visible; }
.pattern-card-range { display: flex; justify-content: space-between; gap: 5px; color: var(--ui-muted); font-size: 8px; }
.pattern-card-parts { color: var(--ui-faint); font-size: 8px; }
.pattern-card-explanation { display: -webkit-box; overflow: hidden; color: var(--ui-muted); font-size: 9px; line-height: 1.45; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }

.pattern-result-detail-panel {
  min-width: 0;
  flex: 1 1 auto;
  height: 100%;
  overflow-x: hidden;
  overflow-y: auto;
  border: 1px solid var(--ui-border);
  border-radius: 11px;
  background: var(--ui-surface-raised);
}

.pattern-result-placeholder {
  min-height: 100%;
  display: grid;
  place-content: center;
  justify-items: center;
  gap: 7px;
  padding: 30px;
  color: var(--ui-muted);
  text-align: center;
}

.pattern-result-placeholder > span { color: var(--pl-accent); font-size: 36px; }
.pattern-result-placeholder strong { color: var(--ui-text-soft); font-size: 14px; }
.pattern-result-placeholder small { font-size: 10px; }
.pattern-result-content { min-height: 100%; padding: 12px; }
.pattern-result-content[hidden] { display: none !important; }
.pattern-detail-head {
  min-height: 45px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 0 2px 10px;
  border-bottom: 1px solid var(--ui-border-soft);
}

.pattern-detail-head > div { min-width: 0; display: flex; align-items: baseline; gap: 9px; }
.pattern-detail-head strong { overflow: hidden; color: var(--ui-text); font-size: 15px; text-overflow: ellipsis; white-space: nowrap; }
.pattern-detail-head span { color: var(--ui-muted); font-size: 10px; }
.pattern-detail-market { min-height: 42px; display: flex; align-items: baseline; gap: 12px; padding: 9px 2px 7px; color: var(--ui-muted); font-size: 10px; }
.pattern-detail-market strong { color: var(--ui-text); font-size: 20px; }
.pattern-detail-match {
  display: grid;
  grid-template-columns: auto minmax(190px, .8fr) minmax(230px, 1.2fr);
  align-items: center;
  gap: 15px;
  padding: 11px 13px;
  border: 1px solid color-mix(in srgb, var(--pl-accent) 28%, var(--ui-border));
  border-radius: 9px;
  background: color-mix(in srgb, var(--pl-accent) 5%, var(--ui-surface));
}

.pattern-detail-score { display: grid; justify-items: center; min-width: 78px; }
.pattern-detail-score b { color: var(--pl-accent); font-size: 30px; line-height: 1; }
.pattern-detail-score small { color: var(--ui-muted); font-size: 8px; }
.pattern-detail-match-copy { display: grid; gap: 5px; color: var(--ui-muted); font-size: 9px; }
.pattern-detail-match-copy strong { color: var(--ui-text-soft); font-size: 11px; }
.pattern-detail-score-parts { display: grid; grid-template-columns: repeat(4, 1fr); gap: 5px; }
.pattern-detail-score-parts span { display: grid; gap: 3px; padding: 6px; border-radius: 6px; background: var(--ui-surface-raised); color: var(--ui-faint); font-size: 7px; }
.pattern-detail-score-parts b { color: var(--ui-text-soft); font-size: 11px; }
.pattern-detail-chart-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 11px 2px 2px; }
.pattern-detail-chart-head > strong { color: var(--ui-text-soft); font-size: 11px; }
.pattern-result-kline-chart { height: 430px; min-height: 320px; }
.pattern-detail-explanation { padding: 11px 13px; border-top: 1px solid var(--ui-border-soft); color: var(--ui-muted); font-size: 10px; line-height: 1.65; }

@media (max-width: 980px) {
  .pattern-lab-page.has-reference .pattern-stock-picker { grid-template-columns: auto minmax(220px, 1fr); }
  .pattern-reference-head { align-items: flex-start; flex-direction: column; }
  .pattern-reference-tools { width: 100%; justify-content: space-between; }
  .pattern-range-footer { grid-template-columns: 1fr 110px auto; }
  .pattern-primary-action { grid-column: 1 / -1; }
  .pattern-job-foot { grid-template-columns: 1fr; gap: 8px; }
  .pattern-job-panel p { text-align: left; }
  .pattern-detail-match { grid-template-columns: auto 1fr; }
  .pattern-detail-score-parts { grid-column: 1 / -1; }
}

@media (max-width: 760px) {
  .pattern-lab-page { min-height: auto; padding: 8px; }
  .pattern-lab-shell { min-height: auto; }
  .pattern-lab-page:not(.has-reference):not(.has-results) .pattern-lab-shell { padding-top: 44px; }
  .pattern-stock-picker { min-height: 210px; padding: 26px 0; }
  .pattern-lab-page.has-reference .pattern-stock-picker { grid-template-columns: 1fr; gap: 8px; }
  .pattern-lab-page.has-reference .pattern-stock-picker-copy { text-align: left; }
  .pattern-progress-head { align-items: flex-start; flex-direction: column; }
  .pattern-job-metrics { width: 100%; }
  .pattern-job-metrics > span { flex: 1; }
  .pattern-job-metrics button { margin-left: auto; }
  .pattern-reference-tools { align-items: stretch; flex-direction: column; }
  .pattern-period-tabs,
  .pattern-chart-modes { justify-content: space-between; }
  .pattern-period-tabs button,
  .pattern-chart-modes button { flex: 1; }
  .pattern-kline-chart { height: 350px; }
  .pattern-range-controls { grid-template-columns: 1fr 18px 1fr; }
  .pattern-range-controls output { grid-column: 1 / -1; }
  .pattern-range-footer { grid-template-columns: 1fr 1fr; }
  .pattern-check { justify-content: flex-start; }
  .pattern-results-workspace,
  .pattern-lab-page.has-results:not(.pattern-query-collapsed) .pattern-results-workspace {
    height: auto;
    min-height: 0;
    flex-direction: column;
  }
  .pattern-result-list-panel {
    width: 100% !important;
    min-width: 0 !important;
    height: auto !important;
    max-height: none;
    flex: none !important;
  }
  .pattern-results {
    grid-template-columns: none;
    grid-auto-flow: column;
    grid-auto-columns: minmax(245px, 82vw);
    overflow-x: auto;
    overflow-y: hidden;
    scroll-snap-type: x proximity;
  }
  .pattern-result-card { scroll-snap-align: start; }
  .pattern-result-detail-panel { min-height: 620px; height: auto; }
  .pattern-result-content { padding: 9px; }
  .pattern-detail-head { align-items: flex-start; }
  .pattern-detail-head > div { display: grid; gap: 2px; }
  .pattern-detail-market { flex-wrap: wrap; }
  .pattern-detail-match { grid-template-columns: 1fr; }
  .pattern-detail-score { justify-items: start; }
  .pattern-detail-score-parts { grid-template-columns: repeat(2, 1fr); }
  .pattern-result-kline-chart { height: 350px; }
}

@media (prefers-reduced-motion: reduce) {
  .pattern-query-dialog,
  .pattern-query-composer,
  .pattern-results-workspace,
  .pattern-progress-track i { transition: none !important; }
  .pattern-market-progress-track i { transition: none !important; }
  .pattern-query-toggle-action i { animation: none !important; }
  .pattern-job-spinner,
  .pattern-button-spinner { animation-duration: 1.8s !important; }
}

/* Daily Pattern Mining board and scheduled-task workspace. */
.pattern-lab-page:not(.has-reference):not(.has-results) .pattern-lab-shell {
  display: block;
  place-items: normal;
  align-items: normal;
  justify-items: normal;
  padding-top: 0;
}

.pattern-daily-board {
  width: 100%;
  box-sizing: border-box;
  margin-bottom: 14px;
  padding: 16px;
  border: 1px solid var(--ui-border);
  border-radius: var(--ui-radius, 12px);
  background: var(--ui-surface-raised);
}

.pattern-daily-head,
.pattern-daily-actions,
.pattern-daily-card-top,
.pattern-schedule-head,
.pattern-schedule-item-actions {
  display: flex;
  align-items: center;
}

.pattern-daily-head { justify-content: space-between; gap: 18px; margin-bottom: 14px; }
.pattern-daily-heading { display: grid; gap: 2px; }
.pattern-daily-heading > span,
.pattern-schedule-head > div > span {
  color: var(--pl-accent);
  font-size: 9px;
  font-weight: 800;
  letter-spacing: .09em;
}
.pattern-daily-heading h2,
.pattern-schedule-head h3 { margin: 0; color: var(--ui-text); font-size: 19px; letter-spacing: -.025em; }
.pattern-daily-heading small { color: var(--ui-muted); font-size: 9px; }
.pattern-daily-actions { min-width: min(100%, 570px); justify-content: flex-end; gap: 9px; }

.pattern-stock-picker,
.pattern-lab-page.has-reference .pattern-stock-picker {
  min-height: 0;
  display: block;
  flex: 1;
  padding: 0;
  border: 0;
  background: transparent;
}
.pattern-stock-search { width: 100%; }
#patternStockSearch,
.pattern-lab-page.has-reference #patternStockSearch {
  min-height: 40px;
  padding: 8px 13px 8px 39px;
  border-radius: 8px;
  background: var(--ui-surface);
  font-size: 11px;
  box-shadow: none;
}
.pattern-search-icon { left: 12px; width: 16px; height: 16px; }
.pattern-task-list-button {
  min-height: 40px;
  display: inline-flex;
  align-items: center;
  gap: 9px;
  padding: 7px 11px;
  border: 1px solid var(--ui-border);
  border-radius: 8px;
  background: var(--ui-surface);
  color: var(--ui-text-soft);
  font-size: 10px;
  cursor: pointer;
}
.pattern-task-list-button small { color: var(--pl-accent); font-size: 8px; }

.pattern-daily-list {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(215px, 1fr);
  gap: 9px;
  overflow-x: auto;
  padding-bottom: 2px;
  scrollbar-width: thin;
}
.pattern-daily-card {
  min-width: 0;
  min-height: 166px;
  display: grid;
  grid-template-rows: auto auto 44px 1fr;
  gap: 7px;
  padding: 11px;
  border: 1px solid var(--ui-border-soft);
  border-radius: 9px;
  background: var(--ui-surface);
  color: var(--ui-text);
  text-align: left;
  cursor: pointer;
  transition: border-color .18s ease, transform .18s ease, background .18s ease;
}
.pattern-daily-card:hover:not(:disabled),
.pattern-daily-card.is-active { border-color: var(--pl-accent); background: color-mix(in srgb, var(--pl-accent) 5%, var(--ui-surface)); transform: translateY(-1px); }
.pattern-daily-card:disabled { cursor: default; opacity: .74; }
.pattern-daily-card-top { justify-content: space-between; gap: 8px; }
.pattern-daily-card-top em { color: var(--pl-accent); font-size: 8px; font-style: normal; font-weight: 800; }
.pattern-daily-card-top small { color: var(--ui-muted); font-size: 8px; }
.pattern-daily-card-top small.is-done { color: #44c79c; }
.pattern-daily-card-top small.is-error { color: #ef6b78; }
.pattern-daily-card > strong { overflow: hidden; color: var(--ui-text); font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.pattern-daily-mini { width: 100%; height: 44px; }
.pattern-daily-reference { display: grid; place-items: center; height: 44px; border-radius: 6px; background: var(--ui-surface-muted); color: var(--ui-faint); font-size: 8px; }
.pattern-daily-description { color: var(--ui-muted); font-size: 9px; line-height: 1.5; }
.pattern-daily-empty { min-height: 100px; display: flex; align-items: center; justify-content: center; gap: 9px; color: var(--ui-muted); font-size: 10px; }

.pattern-query-dialog { margin-top: 0; }
.pattern-reference-workspace { border-top: 1px solid var(--ui-border); border-radius: var(--ui-radius-sm, 10px); }
.pattern-range-footer { grid-template-columns: minmax(160px, 1fr) 100px auto auto auto; }
.pattern-schedule-action {
  border-color: var(--ui-border);
  background: var(--ui-surface);
  color: var(--ui-text-soft);
}
.pattern-schedule-action:hover { border-color: var(--pl-accent); color: var(--pl-accent); }
.pattern-schedule-action:disabled { opacity: .55; cursor: wait; }

.pattern-schedule-dialog {
  width: min(720px, calc(100vw - 30px));
  max-height: min(78vh, 760px);
  overflow: hidden;
  border: 1px solid var(--ui-border);
  border-radius: 12px;
  background: var(--ui-surface-raised);
  box-shadow: 0 28px 80px rgba(0,0,0,.36);
}
.pattern-schedule-head { justify-content: space-between; gap: 16px; padding: 17px 18px; border-bottom: 1px solid var(--ui-border-soft); }
.pattern-schedule-head > div { display: grid; gap: 3px; }
.pattern-schedule-close { width: 36px; height: 36px; border: 1px solid var(--ui-border); border-radius: 8px; background: var(--ui-surface); color: var(--ui-muted); font-size: 20px; cursor: pointer; }
.pattern-schedule-list { max-height: calc(78vh - 76px); display: grid; gap: 8px; overflow-y: auto; padding: 12px; }
.pattern-schedule-item { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 14px; padding: 13px; border: 1px solid var(--ui-border-soft); border-radius: 9px; background: var(--ui-surface); }
.pattern-schedule-item.is-paused { opacity: .62; }
.pattern-schedule-item > div:first-child { display: grid; gap: 4px; min-width: 0; }
.pattern-schedule-item span { color: var(--pl-accent); font-size: 8px; font-weight: 750; }
.pattern-schedule-item strong { color: var(--ui-text); font-size: 12px; }
.pattern-schedule-item p { margin: 0; color: var(--ui-muted); font-size: 9px; line-height: 1.5; }
.pattern-schedule-item small { color: var(--ui-faint); font-size: 8px; }
.pattern-schedule-item-actions { align-self: center; gap: 5px; }
.pattern-schedule-item-actions button { padding: 6px 8px; border: 1px solid var(--ui-border); border-radius: 6px; background: transparent; color: var(--ui-text-soft); font-size: 9px; cursor: pointer; }
.pattern-schedule-item-actions button:hover { border-color: var(--pl-accent); }
.pattern-schedule-item-actions button.is-danger { color: #ef6b78; }
.pattern-schedule-empty { padding: 38px 20px; color: var(--ui-muted); font-size: 10px; text-align: center; }

@media (max-width: 980px) {
  .pattern-daily-head { align-items: flex-start; flex-direction: column; }
  .pattern-daily-actions { width: 100%; min-width: 0; }
  .pattern-range-footer { grid-template-columns: 1fr 110px auto; }
  .pattern-schedule-action,
  .pattern-primary-action { grid-column: auto; }
}

@media (max-width: 760px) {
  .pattern-daily-board { padding: 11px; }
  .pattern-daily-actions { align-items: stretch; flex-direction: column; }
  .pattern-task-list-button { justify-content: center; }
  .pattern-daily-list { grid-auto-columns: minmax(230px, 82vw); }
  .pattern-range-footer { grid-template-columns: 1fr 1fr; }
  .pattern-schedule-action,
  .pattern-primary-action { grid-column: 1 / -1; }
  .pattern-schedule-item { grid-template-columns: 1fr; }
  .pattern-schedule-item-actions { justify-content: flex-end; }
}
