/* ============================================================================
   SCHEDULES PAGE
   ========================================================================== */
/* stat cards */
.sch-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-4);margin-bottom:var(--space-5)}
.sch-card{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-4) var(--space-5);box-shadow:var(--shadow-xs)}
.sch-card__hd{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-3)}
.sch-card__icon{width:34px;height:34px;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.sch-card__icon--green{background:var(--success-bg);color:var(--success)}
.sch-card__icon--slate{background:var(--surface-2);color:var(--text-secondary)}
.sch-card__icon--blue{background:var(--info-bg);color:var(--info)}
.sch-card__icon--red{background:var(--error-bg);color:var(--error)}
.sch-card__label{font-size:var(--text-md);color:var(--text-secondary);font-weight:var(--weight-medium)}
.sch-card__value{font-size:var(--text-3xl);font-weight:var(--weight-bold);color:var(--text-primary);line-height:1;letter-spacing:-.03em}
.sch-card__value--dash{font-size:var(--text-xl)}
.sch-card__value--dash{color:var(--text-muted)}

/* toolbar */
.sch-toolbar{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-4);flex-wrap:wrap}
.sch-toolbar__spacer{flex:1}
.sch-searchwrap{position:relative;display:flex;align-items:center;min-width:240px;flex:0 1 320px}
.sch-searchwrap svg{position:absolute;left:var(--space-3);color:var(--text-muted);pointer-events:none}
.sch-search{width:100%;padding:var(--space-2) var(--space-3) var(--space-2) calc(var(--space-3) + 22px);
  border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-1);
  color:var(--text-primary);font-size:var(--text-md);font-family:inherit}
.sch-search:focus{outline:none;border-color:var(--brand)}
.sch-filter{padding:var(--space-2) var(--space-3);border:1px solid var(--border);border-radius:var(--radius-md);
  background:var(--surface-1);color:var(--text-secondary);font-size:var(--text-base);font-family:inherit;cursor:pointer}
.sch-filter:focus{outline:none;border-color:var(--brand)}
.sch-clear{background:none;border:none;color:var(--brand);font-size:var(--text-base);font-weight:var(--weight-medium);cursor:pointer;padding:var(--space-2)}
.sch-clear:hover{text-decoration:underline}

/* buttons */
.sch-btn{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);
  border-radius:var(--radius-md);font-size:var(--text-md);font-weight:var(--weight-semibold);font-family:inherit;
  cursor:pointer;border:1px solid transparent;transition:background var(--duration-fast) var(--ease),opacity var(--duration-fast)}
.sch-btn--primary{background:var(--brand);color:var(--text-inverse)}
.sch-btn--primary:hover{background:var(--brand-alt)}
.sch-btn--ghost{background:var(--surface-1);border-color:var(--border);color:var(--text-secondary)}
.sch-btn--ghost:hover{background:var(--surface-2);color:var(--text-primary)}

/* table */
.sch-table{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius-lg);overflow-x:auto;box-shadow:var(--shadow-xs)}
.sch-thead,.sch-row{display:grid;grid-template-columns:1.4fr 1.6fr 1fr 1.3fr 1.2fr .85fr .9fr .75fr;align-items:center;min-width:860px}
.sch-thead{background:var(--surface-2);border-bottom:1px solid var(--border)}
.sch-th{padding:var(--space-3) var(--space-4);font-size:var(--text-xs);font-weight:var(--weight-semibold);
  text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted)}
.sch-row{border-bottom:1px solid var(--border);cursor:pointer;transition:background var(--duration-fast)}
.sch-row:last-child{border-bottom:none}
.sch-row:hover{background:var(--surface-2)}
.sch-row--sel{background:var(--brand-muted)}
.sch-row--sel:hover{background:var(--brand-muted)}
.sch-cell{padding:var(--space-3) var(--space-4);font-size:var(--text-md);color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sch-cell--name{display:flex;flex-direction:column;gap:2px;white-space:normal}
.sch-name{font-weight:var(--weight-semibold);color:var(--text-primary)}
/* expandable name toggle */
.sch-nametoggle{display:inline-flex;align-items:center;gap:6px;background:none;border:none;padding:0;margin:0;cursor:pointer;text-align:left;color:inherit;font:inherit;width:fit-content;max-width:100%}
.sch-nametoggle:hover .sch-name{color:var(--brand)}
.sch-caret{display:inline-flex;color:var(--text-muted);flex-shrink:0;transition:transform var(--duration-fast) var(--ease-default,ease)}
.sch-caret--open{transform:rotate(90deg);color:var(--brand)}
.sch-nametoggle:focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-radius:var(--radius-sm)}
.sch-row--expanded{background:var(--surface-2)}

/* expanded detail panel */
.sch-detail{border-bottom:1px solid var(--border);background:var(--surface-0);padding:var(--space-4) var(--space-5) var(--space-5);min-width:860px}
.sch-dt__label{display:flex;align-items:center;gap:6px;font-size:var(--text-xs);font-weight:var(--weight-semibold);text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary);margin-bottom:var(--space-3)}
.sch-dt__label svg{color:var(--brand)}
.sch-dt__group{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-2)}
.sch-dt__group:last-child{margin-bottom:0}
.sch-dt__ghead{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-md);font-weight:var(--weight-semibold);color:var(--text-primary)}
.sch-dt__gname{flex:1;min-width:0}
.sch-dt__count{font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--text-secondary);background:var(--surface-2);border-radius:var(--radius-full);padding:1px var(--space-2)}
.sch-dt__idx{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 5px;border-radius:var(--radius-full);background:var(--brand-muted);color:var(--brand);font-size:11px;font-weight:var(--weight-semibold);flex-shrink:0}
.sch-dt__cases{list-style:none;margin:var(--space-2) 0 0;padding:0;display:flex;flex-direction:column;gap:2px}
.sch-dt__cases--flat{margin-top:0;background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-2)}
.sch-dt__case{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);font-size:var(--text-md);color:var(--text-primary)}
.sch-dt__cases--flat .sch-dt__case:hover{background:var(--surface-2)}
.sch-dt__cname{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sch-dt__no{font-family:var(--font-mono,monospace);font-size:var(--text-xs);color:var(--brand);background:var(--brand-muted);border-radius:var(--radius-sm);padding:1px var(--space-2);flex-shrink:0}
.sch-dt__empty{font-size:var(--text-sm);color:var(--text-secondary);padding:var(--space-2) 0}
.sch-muted{color:var(--text-secondary)}
.sch-modechip{display:inline-flex;align-items:center;gap:4px;font-size:var(--text-xs);font-weight:var(--weight-medium);
  color:var(--text-secondary);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-full);
  padding:1px var(--space-2);width:fit-content}
.sch-modechip--cal{color:var(--info);background:var(--info-bg);border-color:transparent}

/* status badge */
.sch-badge{display:inline-flex;align-items:center;font-size:var(--text-xs);font-weight:var(--weight-semibold);
  padding:2px var(--space-3);border-radius:var(--radius-full)}
.sch-badge--active{background:var(--success-bg);color:var(--success)}
.sch-badge--paused{background:var(--surface-3);color:var(--text-secondary)}
.sch-badge--failed{background:var(--error-bg);color:var(--error)}
.sch-badge--running{background:var(--info-bg);color:var(--info);animation:sch-pulse 1.2s ease-in-out infinite}
.sch-badge--queuing{background:var(--warning-bg);color:var(--warning)}
.sch-badge--passed{background:var(--success-bg);color:var(--success)}
.sch-badge--neverrun{background:var(--surface-3);color:var(--text-secondary)}
@keyframes sch-pulse{0%,100%{opacity:1}50%{opacity:.45}}

/* clickable project/test cell → opens the project's Test page */
.sch-cell--link{display:flex;align-items:center;gap:4px;color:var(--brand);cursor:pointer;font-weight:var(--weight-medium)}
.sch-cell--link svg{opacity:0;transition:opacity var(--duration-fast)}
.sch-cell--link:hover{text-decoration:underline}
.sch-row:hover .sch-cell--link svg{opacity:.7}

/* owner */
.sch-owner{display:flex;align-items:center;gap:var(--space-2)}
.sch-avatar{width:24px;height:24px;border-radius:var(--radius-full);display:inline-flex;align-items:center;justify-content:center;
  font-size:var(--text-xs);font-weight:var(--weight-semibold);color:#fff;flex-shrink:0;background:var(--avatar-bg)}

/* row actions */
.sch-actions{display:flex;align-items:center;gap:var(--space-1);justify-content:flex-end}
.sch-iconbtn{width:28px;height:28px;border-radius:var(--radius-sm);border:1px solid transparent;background:none;
  color:var(--text-secondary);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;
  transition:background var(--duration-fast),color var(--duration-fast)}
.sch-iconbtn:hover{background:var(--surface-3);color:var(--text-primary)}
.sch-iconbtn--danger:hover{background:var(--error-bg);color:var(--error)}
.sch-iconbtn--run{color:var(--success)}
.sch-iconbtn--run:hover{background:var(--success-bg);color:var(--success)}

/* count + loading + empty */
.sch-count{margin-top:var(--space-3);font-size:var(--text-base);color:var(--text-muted)}
.sch-loading{padding:var(--space-12);text-align:center;color:var(--text-muted);font-size:var(--text-md);
  background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius-lg)}
.sch-empty{padding:var(--space-12) var(--space-6);text-align:center;background:var(--surface-1);
  border:1px solid var(--border);border-radius:var(--radius-lg);display:flex;flex-direction:column;align-items:center;gap:var(--space-2)}
.sch-empty svg{color:var(--text-muted);margin-bottom:var(--space-2)}
.sch-empty__t{font-size:var(--text-lg);font-weight:var(--weight-semibold);color:var(--text-primary)}
.sch-empty__s{font-size:var(--text-md);color:var(--text-secondary);margin-bottom:var(--space-3)}

/* ── modal ──────────────────────────────────────────────────────────────── */
.sch-modal-ov{position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:1000;
  display:flex;align-items:flex-start;justify-content:center;padding:var(--space-8) var(--space-4);overflow-y:auto}
.sch-modal{background:var(--surface-1);border-radius:var(--radius-xl);width:100%;max-width:520px;
  box-shadow:var(--shadow-lg);border:1px solid var(--border);margin:auto 0}
.sch-modal--sm{max-width:420px}
.sch-modal__hd{display:flex;align-items:center;justify-content:space-between;padding:var(--space-5) var(--space-6);
  border-bottom:1px solid var(--border)}
.sch-modal__title{font-size:var(--text-lg);font-weight:var(--weight-bold);color:var(--text-primary)}
.sch-modal__x{background:none;border:none;color:var(--text-muted);cursor:pointer;padding:var(--space-1);
  border-radius:var(--radius-sm);display:flex}
.sch-modal__x:hover{background:var(--surface-2);color:var(--text-primary)}
.sch-modal__body{padding:var(--space-5) var(--space-6);display:flex;flex-direction:column;gap:var(--space-4)}
.sch-modal__ft{display:flex;justify-content:flex-end;gap:var(--space-3);padding:var(--space-4) var(--space-6);
  border-top:1px solid var(--border)}

.sch-fld{display:flex;flex-direction:column;gap:var(--space-2)}
.sch-row2{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4)}
.sch-lbl{font-size:var(--text-md);font-weight:var(--weight-semibold);color:var(--text-primary)}
.sch-req{color:var(--error)}
.sch-opt{color:var(--text-muted);font-weight:var(--weight-regular);font-size:var(--text-sm)}
.sch-input{width:100%;padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius-md);
  background:var(--surface-1);color:var(--text-primary);font-size:var(--text-md);font-family:inherit;box-sizing:border-box}
.sch-input:focus{outline:none;border-color:var(--brand)}
.sch-input:disabled{background:var(--surface-2);color:var(--text-muted);cursor:not-allowed}
.sch-select{cursor:pointer;appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%2394A3B8' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right var(--space-3) center;padding-right:var(--space-8)}
.sch-hint{font-size:var(--text-sm);color:var(--text-muted)}
.sch-hint strong{color:var(--text-secondary);font-weight:var(--weight-semibold)}

/* segmented control */
.sch-seg{display:flex;gap:var(--space-2)}
.sch-seg__btn{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);
  padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-1);
  color:var(--text-secondary);font-size:var(--text-base);font-weight:var(--weight-medium);font-family:inherit;cursor:pointer;
  transition:all var(--duration-fast) var(--ease)}
.sch-seg__btn:hover{border-color:var(--border-hi)}
.sch-seg__btn--on{background:var(--brand-muted);border-color:var(--brand);color:var(--brand)}

/* checkbox rows */
.sch-check{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-md);color:var(--text-primary);cursor:pointer}
.sch-check input{width:16px;height:16px;accent-color:var(--brand);cursor:pointer;flex-shrink:0}
.sch-check span{display:inline-flex;align-items:center;gap:var(--space-2)}
.sch-check svg{color:var(--text-muted)}
.sch-check strong{font-weight:var(--weight-semibold)}

/* test-suite selector button + chips */
.sch-suitebtn{display:flex;align-items:center;justify-content:space-between;text-align:left;cursor:pointer;
  color:var(--text-primary);background:var(--surface-1)}
.sch-suitebtn:hover:not(:disabled){border-color:var(--border-hi)}
.sch-suitebtn:disabled{cursor:not-allowed;color:var(--text-muted);background:var(--surface-2)}
.sch-suitebtn svg{color:var(--text-muted);flex-shrink:0}
.sch-suitebtn--has{border-color:var(--brand);color:var(--brand);font-weight:var(--weight-semibold)}
.sch-suitechips{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-2)}
.sch-suitechip{display:inline-flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);
  background:var(--brand-muted);color:var(--brand);border-radius:var(--radius-full);padding:2px var(--space-3) 2px 2px;font-weight:var(--weight-medium)}
.sch-suitechip__n{width:18px;height:18px;border-radius:var(--radius-full);background:var(--brand);color:#fff;
  display:inline-flex;align-items:center;justify-content:center;font-size:10px;font-weight:var(--weight-bold)}

/* suite picker popup */
.sch-pk-ov{position:fixed;inset:0;background:rgba(15,23,42,.5);z-index:1010;display:flex;align-items:center;justify-content:center;padding:var(--space-4)}
.sch-pk{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius-xl);width:100%;max-width:460px;
  max-height:80vh;display:flex;flex-direction:column;box-shadow:var(--shadow-lg);overflow:hidden}
.sch-pk__hd{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--border)}
.sch-pk__title{font-size:var(--text-lg);font-weight:var(--weight-bold);color:var(--text-primary)}
.sch-pk__sub{padding:var(--space-3) var(--space-5) 0;font-size:var(--text-sm);color:var(--text-muted)}
.sch-pk__list{padding:var(--space-3) var(--space-4);overflow-y:auto;display:flex;flex-direction:column;gap:var(--space-2)}
.sch-pk__row{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3);border:1px solid var(--border);
  border-radius:var(--radius-md);cursor:pointer;transition:all var(--duration-fast)}
.sch-pk__row:hover{border-color:var(--border-hi);background:var(--surface-2)}
.sch-pk__row--on{border-color:var(--brand);background:var(--brand-muted)}
.sch-pk__cb{width:16px;height:16px;accent-color:var(--brand);cursor:pointer;flex-shrink:0}
.sch-pk__main{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}
.sch-pk__name{font-size:var(--text-md);font-weight:var(--weight-semibold);color:var(--text-primary)}
.sch-pk__meta{font-size:var(--text-sm);color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sch-pk__order{font-size:var(--text-xs);font-weight:var(--weight-bold);color:var(--brand);background:var(--surface-1);
  border:1px solid var(--brand);border-radius:var(--radius-full);padding:2px var(--space-2);flex-shrink:0}
.sch-pk__empty{padding:var(--space-8);text-align:center;color:var(--text-muted);font-size:var(--text-md)}
.sch-pk__ft{display:flex;justify-content:space-between;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-top:1px solid var(--border)}

/* toast */
.sch-toast{position:fixed;bottom:var(--space-6);left:50%;transform:translateX(-50%) translateY(20px);
  background:var(--text-primary);color:var(--surface-1);padding:var(--space-3) var(--space-5);border-radius:var(--radius-md);
  font-size:var(--text-md);font-weight:var(--weight-medium);box-shadow:var(--shadow-lg);z-index:1100;opacity:0;
  transition:opacity var(--duration-base),transform var(--duration-base) var(--ease);pointer-events:none}
.sch-toast--show{opacity:1;transform:translateX(-50%) translateY(0)}
.sch-toast--success{background:var(--success)}
.sch-toast--error{background:var(--error)}

@media (max-width:1100px){
  .sch-cards{grid-template-columns:repeat(2,1fr)}
  .sch-thead{display:none}
  .sch-row{grid-template-columns:1fr;gap:var(--space-1);padding:var(--space-3) 0}
  .sch-cell{white-space:normal}
  .sch-actions{justify-content:flex-start;padding-top:0}
  .sch-detail{min-width:0;padding:var(--space-3) var(--space-4)}
}
