* { box-sizing: border-box; }
::placeholder { color: var(--nooode-text-muted); }
::-webkit-scrollbar { width: 6px; height: 6px; }
::-webkit-scrollbar-track { background: var(--nooode-bg-sub); }
::-webkit-scrollbar-thumb { background: rgba(0,0,0,0.15); border-radius: 3px; }
.file-row:hover { background: var(--nooode-bg-hover) !important; }
.table-row:hover { background: var(--nooode-bg-sub) !important; }
.nav-tab { transition: all 0.15s; }
.nav-tab:hover { color: var(--nooode-text) !important; }
.chip { transition: all 0.15s; }
.chip:hover { opacity: 0.88; }
.btn-cta { transition: transform 0.12s, background 0.3s, color 0.3s, border-color 0.3s, box-shadow 0.12s; }
.btn-cta:hover:not(:disabled) { background: var(--nooode-pink-dark) !important; }
@keyframes pulsePink {
  0%   { transform: scale(1)    rotate(0deg);    box-shadow: 0 0 0 0    rgba(230,23,115,0.7); }
  15%  { transform: scale(1.09) rotate(-1.2deg); box-shadow: 0 0 0 6px  rgba(230,23,115,0.35); }
  30%  { transform: scale(0.94) rotate(0.8deg);  box-shadow: 0 0 0 12px rgba(230,23,115,0.18); }
  45%  { transform: scale(1.06) rotate(-0.5deg); box-shadow: 0 0 0 18px rgba(230,23,115,0.12); }
  60%  { transform: scale(0.98) rotate(0.3deg);  box-shadow: 0 0 0 22px rgba(230,23,115,0.06); }
  80%  { transform: scale(1.02) rotate(0deg);    box-shadow: 0 0 0 26px rgba(230,23,115,0.03); }
  100% { transform: scale(1)    rotate(0deg);    box-shadow: 0 8px 24px rgba(230,23,115,0.28); }
}
@keyframes idleGlow {
  0%, 100% { box-shadow: 0 6px 20px rgba(230,23,115,0.22), 0 0 0 0  rgba(230,23,115,0.3); transform: translateY(0); }
  50%      { box-shadow: 0 10px 28px rgba(230,23,115,0.38), 0 0 0 6px rgba(230,23,115,0.08); transform: translateY(-2px); }
}
@keyframes arrowShift {
  0%, 100% { transform: translateX(0); }
  50%      { transform: translateX(4px); }
}
.btn-cta-ready { animation: pulsePink 1.4s cubic-bezier(.34,1.56,.64,1) 1, idleGlow 2.6s ease-in-out 1.4s infinite; }
.btn-cta-ready .cta-arrow { display: inline-block; animation: arrowShift 1.2s ease-in-out 1.4s infinite; }
.btn-outline:hover { background: var(--nooode-bg-sub) !important; }
.icon-btn:hover { background: var(--nooode-bg-hover) !important; }
.row-icon-btn { transition: background 0.12s, color 0.12s, border-color 0.12s; }
.row-icon-btn:hover { background: var(--nooode-bg-sub) !important; color: var(--nooode-text) !important; }
.row-icon-danger:hover { background: var(--nooode-warn-bg) !important; color: var(--nooode-pink) !important; border-color: var(--nooode-warn-border) !important; }
textarea:focus { outline: none; border-color: var(--nooode-pink) !important; box-shadow: 0 0 0 3px rgba(230,23,115,0.12); }
.col-resize-handle { background: transparent; transition: background 0.12s; pointer-events: auto; }
.col-resize-handle:hover { background: var(--nooode-pink); }
.col-resize-handle.active { background: var(--nooode-pink); }
@keyframes spin { to { transform: rotate(360deg); } }
.spinner-arc { animation: spin 0.9s linear infinite; transform-origin: center; }
.col-hide-btn { opacity: 0; transition: opacity 0.12s, background 0.12s, color 0.12s; }
.col-th:hover .col-hide-btn { opacity: 0.85; }
.col-hide-btn:hover { opacity: 1 !important; background: rgba(230,23,115,0.18) !important; color: var(--nooode-pink) !important; }
