/* layout.css split from legacy.css on 2026-07-13T14:30:34.695Z. */

.app {
      width: 100%;
      height: 100%;
      padding: 14px;
      display: grid;
      grid-template-columns: var(--sidebar-w) minmax(0, 1fr);
      gap: 14px;
      transition: grid-template-columns 0.18s ease;
    }

.app.sidebar-collapsed {
      grid-template-columns: var(--sidebar-collapsed-w) minmax(0, 1fr);
    }

.sidebar, .main {
      min-height: 0;
      min-width: 0;
      background: var(--panel);
      border: 1px solid var(--line);
      border-radius: 16px;
      box-shadow: 0 8px 26px rgb(15 23 42 / 0.06);
      overflow: hidden;
      display: flex;
      flex-direction: column;
    }

.sidebar {
      transition: width 0.18s ease, min-width 0.18s ease;
    }

.sidebar-top {
      padding: 16px 14px 12px;
      border-bottom: 1px solid var(--line);
      background: #fff;
      flex-shrink: 0;
    }

.brand-row {
      display: flex;
      align-items: center;
      justify-content: space-between;
      margin-bottom: 14px;
      gap: 10px;
    }

.brand-left {
      display: flex;
      align-items: center;
      gap: 10px;
      min-width: 0;
    }

.brand-icon {
      width: 38px;
      height: 38px;
      background: linear-gradient(135deg, #6366f1, #3b82f6);
      border-radius: 12px;
      display: grid;
      place-items: center;
      color: white;
      font-size: 17px;
      font-weight: 700;
      flex-shrink: 0;
    }

.brand-text { min-width: 0; }

.brand-title {
      margin: 0;
      font-size: 16px;
      font-weight: 700;
      color: var(--heading);
      line-height: 1.15;
    }

.brand-subtitle {
      margin: 3px 0 0;
      font-size: 11px;
      color: var(--muted);
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis;
    }

.sidebar-content {
      transition: opacity 0.16s ease, visibility 0.16s ease;
    }

.app.sidebar-collapsed .sidebar-top {
      padding: 14px 10px;
    }

.app.sidebar-collapsed .brand-row {
      flex-direction: column;
      margin-bottom: 0;
    }

.app.sidebar-collapsed .brand-left {
      justify-content: center;
    }

.app.sidebar-collapsed .brand-text,
    .app.sidebar-collapsed .sidebar-content,
    .app.sidebar-collapsed .job-list {
      opacity: 0;
      visibility: hidden;
      pointer-events: none;
      height: 0;
      padding: 0;
      margin: 0;
      overflow: hidden;
    }

.app.sidebar-collapsed .brand-icon {
      width: 38px;
      height: 38px;
    }

.loader-row {
      display: grid;
      grid-template-columns: 1fr 1fr 1.1fr;
      gap: 8px;
      margin-bottom: 10px;
    }

.search-wrap { position: relative; }

.job-view-tabs {
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      gap: 6px;
      margin-top: 10px;
    }

.job-view-tab {
      height: 30px;
      border: 1px solid var(--line);
      border-radius: 999px;
      background: #fff;
      color: var(--muted);
      font-size: 11px;
      font-weight: 600;
      cursor: pointer;
      white-space: nowrap;
    }

.job-view-tab.active {
      background: var(--primary-soft);
      color: var(--primary);
      border-color: #c7d2fe;
    }

.search-icon {
      position: absolute;
      left: 11px;
      top: 50%;
      transform: translateY(-50%);
      color: var(--muted-2);
      font-size: 13px;
    }

.filters {
      display: flex;
      gap: 6px;
      margin-top: 10px;
      overflow-x: auto;
      padding-bottom: 1px;
    }

.filter-pill {
      padding: 6px 10px;
      border: 1px solid transparent;
      border-radius: 999px;
      font-size: 11px;
      font-weight: 500;
      color: var(--muted);
      white-space: nowrap;
      background: #f8fafc;
      cursor: pointer;
    }

.filter-pill.active {
      background: var(--primary-soft);
      color: var(--primary);
      border-color: #c7d2fe;
      font-weight: 600;
    }

.job-list {
      flex: 1;
      overflow-y: auto;
      padding: 12px;
      background:
        radial-gradient(circle at 16% 0%, rgb(99 102 241 / 0.055), transparent 30%),
        #fbfdff;
    }

.job-card {
      border: 1px solid var(--line);
      border-radius: 15px;
      background: rgba(255,255,255,0.92);
      padding: 11px;
      margin-bottom: 10px;
      cursor: pointer;
      position: relative;
      transition: 0.15s ease;
      overflow: hidden;
      box-shadow: 0 5px 14px rgb(15 23 42 / 0.035);
    }

.job-card::before {
      content: "";
      position: absolute;
      left: 0;
      top: 12px;
      bottom: 12px;
      width: 3px;
      border-radius: 0 999px 999px 0;
      background: transparent;
    }

.job-card:hover {
      border-color: #bfdbfe;
      box-shadow: 0 10px 22px rgb(37 99 235 / 0.07);
      transform: translateY(-1px);
    }

.job-card-inner {
      display: grid;
      grid-template-columns: 34px minmax(0, 1fr);
      gap: 10px;
      align-items: start;
    }

.job-avatar {
      width: 34px;
      height: 34px;
      border-radius: 12px;
      display: grid;
      place-items: center;
      color: white;
      font-size: 15px;
      font-weight: 700;
      background: linear-gradient(135deg, #6366f1, #3b82f6);
      box-shadow: 0 8px 16px rgb(59 130 246 / 0.16);
      flex-shrink: 0;
    }

.job-content { min-width: 0; }

.job-card-head {
      display: grid;
      grid-template-columns: minmax(0, 1fr) auto;
      align-items: start;
      gap: 8px;
    }

.job-id {
      font-size: 12px;
      font-weight: 600;
      color: var(--heading);
      line-height: 1.3;
      word-break: break-all;
    }

.job-title {
      font-size: 12px;
      color: #334155;
      margin: 5px 0 9px;
      font-weight: 400;
      line-height: 1.38;
      display: -webkit-box;
      -webkit-line-clamp: 2;
      -webkit-box-orient: vertical;
      overflow: hidden;
    }

.job-meta {
      display: flex;
      gap: 6px;
      flex-wrap: wrap;
      align-items: center;
    }

.job-time {
      font-size: 10.5px;
      color: var(--muted-2);
      display: inline-flex;
      align-items: center;
      gap: 3px;
      white-space: nowrap;
    }

.job-actions {
      display: flex;
      gap: 6px;
      flex-wrap: wrap;
      margin-top: 9px;
    }

.job-card-inner.with-checkbox {
      grid-template-columns: 22px 34px minmax(0, 1fr);
    }

.job-inline-actions {
      display: inline-flex;
      align-items: center;
      gap: 6px;
      margin-left: auto;
      padding-left: 10px;
      border-left: 1px solid var(--line-soft);
    }

.job-icon-action {
      width: 24px;
      height: 24px;
      padding: 0;
      border-radius: 999px;
      border: 1px solid var(--line);
      background: #fff;
      color: #64748b;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      cursor: pointer;
      font-size: 12px;
      line-height: 1;
    }

.job-icon-action svg {
      width: 13px;
      height: 13px;
      display: block;
      fill: none;
      stroke: currentColor;
      stroke-width: 1.9;
      stroke-linecap: round;
      stroke-linejoin: round;
    }

.job-icon-action:hover { background: #f8fafc; color: #334155; border-color: #cbd5e1; }

.job-icon-action.danger { color: #b91c1c; border-color: #fecaca; background: #fff7f7; }

.job-icon-action.danger:hover { background: #fee2e2; }

.bulk-action-bar {
      display: none;
      margin-top: 10px;
      padding: 9px;
      border: 1px solid #c7d2fe;
      background: #f8faff;
      border-radius: 13px;
      gap: 7px;
      align-items: center;
      flex-wrap: wrap;
    }

.bulk-action-bar.show { display: flex; }

.bulk-count {
      font-size: 11px;
      font-weight: 700;
      color: #4f46e5;
      margin-right: auto;
    }

.header-task-actions {
      display: flex;
      align-items: center;
      gap: 6px;
      flex-wrap: wrap;
      margin-top: 7px;
    }

.main {
      position: relative;
    }

.main-header {
      padding: 14px 22px;
      border-bottom: 1px solid var(--line);
      display: flex;
      justify-content: space-between;
      align-items: center;
      gap: 16px;
      background: #fff;
      flex-shrink: 0;
    }

.header-left {
      display: flex;
      align-items: center;
      gap: 12px;
      min-width: 0;
    }

.episode-avatar {
      width: 42px;
      height: 42px;
      border-radius: 12px;
      background: linear-gradient(135deg, #fef3c7, #dbeafe);
      display: grid;
      place-items: center;
      font-size: 23px;
      flex-shrink: 0;
      border: 1px solid #e2e8f0;
    }

.title-row {
      display: flex;
      align-items: center;
      gap: 8px;
      min-width: 0;
    }

.main-title {
      margin: 0;
      font-size: 18px;
      font-weight: 700;
      color: var(--heading);
      line-height: 1.15;
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;
    }

.meta-desc {
      font-size: 11.5px;
      color: var(--muted);
      margin-top: 4px;
      line-height: 1.35;
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis;
      max-width: 78vw;
    }

.header-actions {
      display: flex;
      align-items: center;
      gap: 8px;
      flex-shrink: 0;
    }

.stage-bar {
      padding: 10px 22px;
      border-bottom: 1px solid var(--line);
      background: #fff;
      display: flex;
      align-items: center;
      gap: 7px;
      overflow-x: auto;
      flex-shrink: 0;
    }

.stage-title {
      font-weight: 600;
      color: var(--heading);
      white-space: nowrap;
      margin-right: 5px;
      font-size: 11px;
    }

.stage-item {
      display: inline-flex;
      align-items: center;
      gap: 5px;
      padding: 5px 10px;
      background: #f8fafc;
      border: 1px solid var(--line);
      border-radius: 999px;
      color: #64748b;
      font-size: 10.5px;
      font-weight: 500;
      white-space: nowrap;
    }

.stage-item.completed { background: #eef2ff; color: #4f46e5; border-color: #c7d2fe; }

.stage-item.current { background: #f5f3ff; color: #6d28d9; border-color: #ddd6fe; font-weight: 600; }

.stage-item.pending { background: #f8fafc; color: #64748b; }

.stage-item.filter-active { background: #0f172a; color: #fff; border-color: #0f172a; font-weight: 700; }

.stage-item.clickable { cursor: pointer; }

.stage-chip-wrap {
      display: flex;
      align-items: center;
      gap: 7px;
      min-width: 0;
      overflow-x: auto;
      scrollbar-width: thin;
    }

.stage-arrow { color: var(--muted-2); font-size: 13px; line-height: 1; }

.date-divider {
      text-align: center;
      margin: 2px 0 4px;
    }

.date-divider span {
      background: #fff;
      border: 1px solid var(--line);
      padding: 4px 11px;
      border-radius: 999px;
      font-size: 10.5px;
      color: var(--muted);
      font-weight: 500;
    }

.compact-note { color: var(--muted); font-size: 10.5px; font-weight: 500; }

.grouped-count {
      color: var(--muted);
      font-size: 10.5px;
      font-weight: 600;
      margin-left: auto;
      white-space: nowrap;
    }

.grouped-summary {
      display: grid;
      gap: 6px;
    }

.grouped-summary-line {
      display: grid;
      grid-template-columns: 7px minmax(0, 1fr);
      gap: 8px;
      align-items: start;
    }

.grouped-summary-line::before {
      content: "";
      width: 7px;
      height: 7px;
      border-radius: 999px;
      background: currentColor;
      opacity: 0.45;
      margin-top: 6px;
    }

.grouped-summary-line {
      grid-template-columns: minmax(0, 1fr);
    }

.grouped-summary-line::before {
      display: none;
    }

.bottom-hint {
      font-size: 10.5px;
      color: var(--muted-2);
      margin-top: 7px;
    }

.main-title-wrap {
      min-width: 0;
      flex: 1;
    }

.header-left {
      flex: 1;
    }

.header-actions {
      margin-left: auto;
    }

.mobile-only { display: none; }
