/* Nova UI primitives — adapted to Nova's existing design tokens and geometry. */

.nova-loading {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.85rem;
  min-height: 96px;
  width: 100%;
  padding: 1.25rem;
  color: var(--text-primary);
}

.nova-loading.is-compact { min-height: 48px; padding: 0.5rem; }
.nova-loading-grid { display: grid; grid-template-columns: repeat(3, 6px); gap: 3px; }
.nova-loading-grid i {
  width: 6px;
  height: 6px;
  border-radius: 2px;
  background: var(--secondary);
  opacity: 0.22;
  animation: nova-loader-pulse 1.15s ease-in-out infinite;
  animation-delay: calc(var(--nova-loader-index) * 70ms);
}
.nova-loading-copy { display: grid; gap: 0.16rem; }
.nova-loading-copy strong { font: 600 0.875rem/1.3 'Inter', sans-serif; }
.nova-loading-copy small { font-size: 0.75rem; color: var(--text-muted); }
@keyframes nova-loader-pulse { 35% { opacity: 1; transform: scale(1.18); } }

.nova-task-list { list-style: none; margin: 0; padding: 0; }
.nova-task-row { display: grid; grid-template-columns: 26px minmax(0,1fr) auto; gap: 0.65rem; align-items: start; position: relative; padding: 0.72rem 0; }
.nova-task-row + .nova-task-row { border-top: 1px solid var(--border-light); }
.nova-task-marker { display: grid; place-items: center; width: 24px; height: 24px; border-radius: 8px; color: var(--text-muted); background: var(--bg-hover); font-size: 0.65rem; }
.nova-task-row.is-done .nova-task-marker { color: #047857; background: rgba(16,185,129,.13); }
.nova-task-row.is-current .nova-task-marker { color: #1d4ed8; background: rgba(59,130,246,.14); box-shadow: inset 0 0 0 1px rgba(59,130,246,.22); }
.nova-task-row.is-blocked .nova-task-marker { color: #b45309; background: rgba(245,158,11,.14); }
.nova-task-copy { display: grid; gap: 0.14rem; min-width: 0; }
.nova-task-copy strong { font-size: 0.8125rem; line-height: 1.35; color: var(--text-primary); }
.nova-task-copy small { font-size: 0.75rem; line-height: 1.45; color: var(--text-secondary); }
.nova-task-meta { padding-top: 0.15rem; font-size: 0.6875rem; font-weight: 700; color: var(--text-muted); }
.nova-task-list.is-compact .nova-task-row { padding: 0.52rem 0; }

.nova-context-panel { margin: 2.5rem 0 0; padding: 1.1rem; border: 1px solid var(--border-light); border-radius: var(--radius-xl); background: var(--bg-card); box-shadow: var(--shadow-sm); }
.nova-context-heading { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: 0.85rem; }
.nova-context-heading > span { display: inline-flex; align-items: center; gap: 0.55rem; color: var(--text-primary); }
.nova-context-heading i { color: var(--secondary); }
.nova-context-heading strong { font-family: 'Poppins','Inter',sans-serif; font-size: 1rem; }
.nova-context-heading b { display: grid; place-items: center; min-width: 24px; height: 24px; padding: 0 0.35rem; border-radius: 999px; color: var(--secondary); background: rgba(59,130,246,.1); font-size: 0.75rem; }
.nova-context-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 0.65rem; }
.nova-context-card { display: block; min-width: 0; padding: 0.8rem; color: inherit; text-decoration: none; border: 1px solid var(--border-light); border-radius: var(--radius-lg); background: color-mix(in srgb, var(--bg-card) 92%, var(--secondary)); transition: border-color .16s ease, transform .16s ease, box-shadow .16s ease; }
a.nova-context-card:hover { border-color: rgba(59,130,246,.38); transform: translateY(-1px); box-shadow: var(--shadow-sm); }
.nova-context-card-copy { display: grid; gap: 0.18rem; min-width: 0; }
.nova-context-card-copy small { font-size: 0.75rem; font-weight: 700; color: var(--text-muted); text-transform: uppercase; letter-spacing: .035em; }
.nova-context-card-copy strong { font-size: 0.8125rem; line-height: 1.35; color: var(--text-primary); }
.nova-context-card-copy > span { display: -webkit-box; overflow: hidden; font-size: 0.8125rem; line-height: 1.45; color: var(--text-secondary); -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.nova-context-empty { display: flex; align-items: center; gap: .75rem; padding: .85rem; border: 1px dashed var(--border-medium); border-radius: var(--radius-lg); color: var(--text-secondary); }
.nova-context-empty > i { color: var(--text-muted); }
.nova-context-empty > span { display: grid; gap: .18rem; }
.nova-context-empty strong { font-size: .8125rem; color: var(--text-primary); }
.nova-context-empty small { font-size: .75rem; line-height: 1.4; }
.nova-context-more { margin-top: .75rem; }
.nova-context-more summary { display: inline-flex; align-items: center; gap: .45rem; min-height: 34px; padding: .45rem .7rem; border: 1px solid var(--border-medium); border-radius: 9px; color: var(--secondary); background: var(--bg-card); font-size: .8125rem; font-weight: 800; cursor: pointer; list-style: none; }
.nova-context-more summary::-webkit-details-marker { display: none; }
.nova-context-more summary > i { margin-left: .1rem; font-size: .75rem; transition: transform .16s ease; }
.nova-context-more[open] summary > i { transform: rotate(180deg); }
.nova-context-more summary span { display: grid; place-items: center; min-width: 20px; height: 20px; padding: 0 .3rem; border-radius: 999px; background: rgba(59,130,246,.1); font-size: .75rem; }
.nova-context-more .nova-context-grid { margin-top: .7rem; }

.nova-recommendation { display: grid; grid-template-columns: 38px minmax(0,1fr); gap: .75rem; padding: .95rem; border: 1px solid rgba(59,130,246,.22); border-radius: var(--radius-xl); background: linear-gradient(145deg, rgba(59,130,246,.09), rgba(255,255,255,.02)); }
.nova-recommend-icon { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 11px; color: #2563eb; background: rgba(59,130,246,.14); }
.nova-recommendation.is-violet { border-color: rgba(139,92,246,.24); background: linear-gradient(145deg,rgba(139,92,246,.1),rgba(255,255,255,.02)); }
.nova-recommendation.is-violet .nova-recommend-icon { color:#7c3aed;background:rgba(139,92,246,.14); }
.nova-recommendation.is-amber { border-color: rgba(245,158,11,.28); background: linear-gradient(145deg,rgba(245,158,11,.11),rgba(255,255,255,.02)); }
.nova-recommendation.is-amber .nova-recommend-icon { color:#b45309;background:rgba(245,158,11,.15); }
.nova-recommend-copy { display: grid; gap: .25rem; min-width: 0; }
.nova-recommend-copy > small { font-size: .65rem; font-weight: 800; text-transform: uppercase; letter-spacing: .06em; color: var(--secondary); }
.nova-recommend-copy > strong { font-size: .875rem; line-height: 1.35; color: var(--text-primary); }
.nova-recommend-copy p { margin: 0; font-size: .75rem; line-height: 1.5; color: var(--text-secondary); }
.nova-recommend-actions { display: flex; flex-wrap: wrap; gap: .45rem; margin-top: .35rem; }
.nova-recommend-action { display: inline-flex; align-items: center; justify-content: center; gap: .35rem; min-height: 32px; padding: .42rem .68rem; border: 1px solid var(--border-medium); border-radius: 8px; color: var(--text-primary); background: var(--bg-card); font: 700 .72rem/1 'Inter',sans-serif; text-decoration: none; cursor: pointer; }
.nova-recommend-action.is-primary { color: #fff; border-color: #2563eb; background: #2563eb; }

.nova-insight-strip { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: .65rem; margin: .9rem 0 1rem; }
.nova-insight-card { display: grid; gap: .16rem; padding: .72rem .8rem; border: 1px solid var(--border-light); border-radius: var(--radius-lg); background: var(--bg-card); }
.nova-insight-card > span { display: inline-flex; align-items: center; gap: .35rem; font-size: .65rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--text-muted); }
.nova-insight-card > span i { color: var(--secondary); }
.nova-insight-card > strong { font: 700 .9rem/1.35 'Poppins','Inter',sans-serif; color: var(--text-primary); }
.nova-insight-card > small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .7rem; color: var(--text-secondary); }

.nova-ui-dialog { position: fixed; inset: 50% auto auto 50%; width: min(680px,calc(100vw - 2rem)); max-height: min(760px,calc(100dvh - 2rem)); margin: 0; padding: 0; overflow: auto; transform: translate(-50%,-50%); color: var(--text-primary); border: 1px solid var(--border-light); border-radius: 18px; background: var(--bg-card); box-shadow: 0 28px 80px rgba(15,23,42,.28); }
.nova-ui-dialog::backdrop { background: rgba(15,23,42,.56); backdrop-filter: blur(4px); }
.nova-approval-card { display: grid; grid-template-columns: 44px minmax(0,1fr); gap: .9rem; padding: 1.25rem; }
.nova-approval-icon { display:grid;place-items:center;width:44px;height:44px;border-radius:13px;color:#2563eb;background:rgba(59,130,246,.12); }
.nova-approval-icon.is-danger { color:#dc2626;background:rgba(239,68,68,.12); }
.nova-approval-copy { display:grid;gap:.24rem; }
.nova-approval-copy small,.nova-diff-card header small { font-size:.68rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted); }
.nova-approval-copy h2,.nova-diff-card h2 { margin:0;font:700 1.15rem/1.3 'Poppins','Inter',sans-serif;color:var(--text-primary); }
.nova-approval-copy p { margin:.2rem 0 0;font-size:.82rem;line-height:1.55;color:var(--text-secondary); }
.nova-approval-actions { grid-column:1/-1;display:flex;justify-content:flex-end;gap:.55rem;margin-top:.35rem; }
.nova-approval-actions button,.nova-diff-card footer button { min-height:38px;padding:.55rem .9rem;border:1px solid var(--border-medium);border-radius:9px;background:var(--bg-card);color:var(--text-primary);font:700 .78rem 'Inter',sans-serif;cursor:pointer; }
.nova-dialog-confirm { color:#fff!important;border-color:#2563eb!important;background:#2563eb!important; }
.nova-dialog-confirm.is-danger { border-color:#dc2626!important;background:#dc2626!important; }
.nova-diff-card { padding:1.15rem; }
.nova-diff-card header { display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1rem; }
.nova-diff-card header button { display:grid;place-items:center;width:34px;height:34px;border:0;border-radius:999px;background:var(--bg-hover);color:var(--text-secondary);cursor:pointer; }
.nova-diff-table { overflow:hidden;border:1px solid var(--border-light);border-radius:var(--radius-lg); }
.nova-diff-head,.nova-diff-row { display:grid;grid-template-columns:120px repeat(2,minmax(0,1fr)); }
.nova-diff-head { background:var(--bg-hover);font-size:.66rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted); }
.nova-diff-head span,.nova-diff-row > * { padding:.65rem .7rem; }
.nova-diff-row + .nova-diff-row { border-top:1px solid var(--border-light); }
.nova-diff-row strong { font-size:.75rem;color:var(--text-primary); }
.nova-diff-row span { font-size:.75rem;line-height:1.45;overflow-wrap:anywhere; }
.nova-diff-row .is-before { color:#991b1b;background:rgba(239,68,68,.06);text-decoration:line-through;text-decoration-color:rgba(153,27,27,.35); }
.nova-diff-row .is-after { color:#047857;background:rgba(16,185,129,.07); }
.nova-diff-card footer { display:flex;justify-content:flex-end;margin-top:1rem; }
.nova-diff-empty { display:flex;align-items:center;gap:.6rem;padding:1rem;border:1px dashed var(--border-medium);border-radius:var(--radius-lg);color:#047857; }

html.dark .nova-context-card,
html.dark .nova-recommend-action { background: rgba(15,23,42,.38); }
html.dark .nova-diff-row .is-before { color:#fca5a5; }
html.dark .nova-diff-row .is-after { color:#6ee7b7; }

@media (max-width: 700px) {
  .nova-context-grid { grid-template-columns: 1fr; }
  .nova-insight-strip { grid-template-columns: repeat(3,minmax(0,1fr)); gap:.45rem; }
  .nova-insight-card { padding:.6rem; }
  .nova-insight-card > span { font-size:.6rem; }
  .nova-insight-card > strong { font-size:.8rem; }
  .nova-insight-card > small { font-size:.64rem; }
  .nova-diff-head,.nova-diff-row { grid-template-columns: 82px repeat(2,minmax(0,1fr)); }
}

@media (max-width: 460px) {
  .nova-insight-strip { grid-template-columns: 1fr; }
}

@media (prefers-reduced-motion: reduce) {
  .nova-loading-grid i { animation: none; opacity: .8; }
  .nova-context-card { transition: none; }
}
