/* Gnovate UI — shared design system. Kept in sync with Gnovate-DesignSystem/gnovate-ui.css. */
:root{
  --gn-font:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
  --gn-fs-xs:12px;--gn-fs-sm:14px;--gn-fs-base:16px;--gn-fs-lg:18px;--gn-fs-xl:24px;--gn-fs-2xl:32px;
  --gn-lh:1.5;--gn-fw-med:540;--gn-fw-bold:680;--gn-1:4px;--gn-2:8px;--gn-3:12px;--gn-4:16px;--gn-5:20px;--gn-6:24px;--gn-8:32px;
  --gn-r-sm:6px;--gn-r:8px;--gn-r-lg:12px;--gn-r-pill:999px;--gn-bg:#f6f7f9;--gn-surface:#fff;--gn-surface-2:#f1f3f7;--gn-border:#e4e7ec;
  --gn-text:#1a2233;--gn-muted:#667085;--gn-faint:#98a2b3;--gn-primary:#4f46e5;--gn-primary-hover:#4338ca;--gn-primary-soft:#eef2ff;
  --gn-verified:#16a34a;--gn-verified-soft:#e7f6ec;--gn-waiting:#b45309;--gn-waiting-soft:#fef3e2;--gn-failed:#dc2626;--gn-failed-soft:#fdecec;
  --gn-degraded:#5b6472;--gn-degraded-soft:#eceef2;--gn-info:#2563eb;--gn-info-soft:#e8f0fe;--gn-shadow:0 1px 2px rgba(16,24,40,.06);--gn-shadow-lg:0 6px 20px rgba(16,24,40,.10);--gn-focus:0 0 0 3px rgba(79,70,229,.35);--gn-motion:160ms;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--gn-bg:#0e1320;--gn-surface:#161b27;--gn-surface-2:#1e2533;--gn-border:#2a3142;--gn-text:#e6e9f0;--gn-muted:#9aa5bc;--gn-faint:#6b7589;--gn-primary:#818cf8;--gn-primary-hover:#a5b0ff;--gn-primary-soft:#1e2340;--gn-verified:#34d399;--gn-verified-soft:#113224;--gn-waiting:#fbbf24;--gn-waiting-soft:#36290c;--gn-failed:#f87171;--gn-failed-soft:#3a1b1b;--gn-degraded:#94a0b8;--gn-degraded-soft:#232a38;--gn-info:#60a5fa;--gn-info-soft:#13243d;--gn-shadow:0 1px 2px rgba(0,0,0,.4);--gn-shadow-lg:0 8px 24px rgba(0,0,0,.5);--gn-focus:0 0 0 3px rgba(129,140,248,.4)}}
:root[data-theme="dark"]{--gn-bg:#0e1320;--gn-surface:#161b27;--gn-surface-2:#1e2533;--gn-border:#2a3142;--gn-text:#e6e9f0;--gn-muted:#9aa5bc;--gn-faint:#6b7589;--gn-primary:#818cf8;--gn-primary-hover:#a5b0ff;--gn-primary-soft:#1e2340;--gn-verified:#34d399;--gn-verified-soft:#113224;--gn-waiting:#fbbf24;--gn-waiting-soft:#36290c;--gn-failed:#f87171;--gn-failed-soft:#3a1b1b;--gn-degraded:#94a0b8;--gn-degraded-soft:#232a38;--gn-info:#60a5fa;--gn-info-soft:#13243d;--gn-shadow:0 1px 2px rgba(0,0,0,.4);--gn-shadow-lg:0 8px 24px rgba(0,0,0,.5);--gn-focus:0 0 0 3px rgba(129,140,248,.4)}
.gn,.gn *{box-sizing:border-box}.gn{font-family:var(--gn-font);font-size:var(--gn-fs-base);line-height:var(--gn-lh);color:var(--gn-text);background:var(--gn-bg);-webkit-font-smoothing:antialiased}.gn-wrap{max-width:1040px;margin:0 auto;padding:var(--gn-6) var(--gn-4)}.gn h1{font-size:var(--gn-fs-2xl);font-weight:var(--gn-fw-bold);margin:0 0 var(--gn-2)}.gn h2{font-size:var(--gn-fs-xl);font-weight:var(--gn-fw-bold);margin:var(--gn-6) 0 var(--gn-3)}.gn h3{font-size:var(--gn-fs-lg);font-weight:var(--gn-fw-med);margin:0 0 var(--gn-2)}.gn a{color:var(--gn-primary);text-decoration:none}.gn a:hover{text-decoration:underline}.gn-muted{color:var(--gn-muted)}.gn-faint{color:var(--gn-faint)}.gn-sm{font-size:var(--gn-fs-sm)}
.gn-card{background:var(--gn-surface);border:1px solid var(--gn-border);border-radius:var(--gn-r-lg);padding:var(--gn-5);box-shadow:var(--gn-shadow);transition:box-shadow var(--gn-motion) ease,transform var(--gn-motion) ease}.gn-card+.gn-card{margin-top:var(--gn-3)}.gn-card-hover:hover{box-shadow:var(--gn-shadow-lg)}.gn-row{display:flex;align-items:center;gap:var(--gn-2);flex-wrap:wrap}.gn-between{display:flex;align-items:center;justify-content:space-between;gap:var(--gn-3);flex-wrap:wrap}
.gn-btn{display:inline-flex;align-items:center;gap:var(--gn-2);font:inherit;font-weight:var(--gn-fw-med);font-size:var(--gn-fs-sm);padding:9px 14px;border-radius:var(--gn-r-sm);border:1px solid var(--gn-border);background:var(--gn-surface);color:var(--gn-text);cursor:pointer;transition:background var(--gn-motion) ease,border-color var(--gn-motion) ease,transform var(--gn-motion) ease}.gn-btn:hover{background:var(--gn-surface-2)}.gn-btn:active{transform:translateY(1px)}.gn-btn:focus-visible{outline:none;box-shadow:var(--gn-focus)}.gn-btn-primary{background:var(--gn-primary);border-color:var(--gn-primary);color:#fff}.gn-btn-primary:hover{background:var(--gn-primary-hover);border-color:var(--gn-primary-hover)}.gn-btn-danger{background:var(--gn-failed);border-color:var(--gn-failed);color:#fff}.gn-btn-ghost{background:transparent;border-color:transparent;color:var(--gn-primary)}
.gn-badge{display:inline-flex;align-items:center;gap:6px;font-size:var(--gn-fs-xs);font-weight:var(--gn-fw-med);padding:3px 10px;border-radius:var(--gn-r-pill);line-height:1.4;white-space:nowrap}.gn-badge::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.9}.gn-badge.is-verified{color:var(--gn-verified);background:var(--gn-verified-soft)}.gn-badge.is-waiting{color:var(--gn-waiting);background:var(--gn-waiting-soft)}.gn-badge.is-failed{color:var(--gn-failed);background:var(--gn-failed-soft)}.gn-badge.is-degraded{color:var(--gn-degraded);background:var(--gn-degraded-soft)}.gn-badge.is-info{color:var(--gn-info);background:var(--gn-info-soft)}
.gn-input,.gn-select{font:inherit;font-size:var(--gn-fs-sm);width:100%;padding:9px 12px;border-radius:var(--gn-r-sm);border:1px solid var(--gn-border);background:var(--gn-surface);color:var(--gn-text);transition:border-color var(--gn-motion) ease,box-shadow var(--gn-motion) ease}.gn-input:focus,.gn-select:focus{outline:none;border-color:var(--gn-primary);box-shadow:var(--gn-focus)}.gn-chip{display:inline-flex;align-items:center;gap:6px;font-size:var(--gn-fs-sm);padding:6px 12px;border-radius:var(--gn-r-pill);border:1px solid var(--gn-border);background:var(--gn-surface);color:var(--gn-muted);cursor:pointer;transition:all var(--gn-motion) ease}.gn-chip:hover{border-color:var(--gn-primary);color:var(--gn-text)}.gn-chip.is-active{background:var(--gn-primary-soft);border-color:var(--gn-primary);color:var(--gn-primary);font-weight:var(--gn-fw-med)}
.gn-table{width:100%;border-collapse:collapse;font-size:var(--gn-fs-sm)}.gn-table th{text-align:left;color:var(--gn-muted);font-weight:var(--gn-fw-med);padding:10px 12px;border-bottom:1px solid var(--gn-border)}.gn-table td{padding:12px;border-bottom:1px solid var(--gn-border)}.gn-table tr:hover td{background:var(--gn-surface-2)}.gn-empty{text-align:center;color:var(--gn-muted);padding:var(--gn-8) var(--gn-4)}.gn-empty svg,.gn-empty .gn-emoji{opacity:.6;margin-bottom:var(--gn-3)}.gn-skeleton{background:linear-gradient(90deg,var(--gn-surface-2) 25%,var(--gn-border) 37%,var(--gn-surface-2) 63%);background-size:400% 100%;border-radius:var(--gn-r-sm);animation:gn-shimmer 1.4s ease infinite;height:14px}@keyframes gn-shimmer{0%{background-position:100% 0}100%{background-position:0 0}}.gn-error{color:var(--gn-failed);background:var(--gn-failed-soft);border:1px solid var(--gn-failed);border-radius:var(--gn-r);padding:var(--gn-3) var(--gn-4);font-size:var(--gn-fs-sm)}.gn-toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:var(--gn-text);color:var(--gn-bg);padding:12px 18px;border-radius:var(--gn-r);font-size:var(--gn-fs-sm);box-shadow:var(--gn-shadow-lg);opacity:0;pointer-events:none;transition:opacity var(--gn-motion) ease,transform var(--gn-motion) ease;z-index:50}.gn-toast.is-show{opacity:1;transform:translateX(-50%) translateY(0)}
@media(max-width:560px){.gn-wrap{padding:var(--gn-4)}.gn h1{font-size:var(--gn-fs-xl)}.gn-card{padding:var(--gn-4)}.gn-between{gap:var(--gn-2)}}@media(prefers-reduced-motion:reduce){.gn *,.gn-card,.gn-btn,.gn-chip,.gn-toast{transition:none!important;animation:none!important}}
