@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap');
body { font-family: 'Inter', system-ui, sans-serif; }
.glass { background: rgba(255,255,255,0.7); backdrop-filter: blur(12px); }
.fade-in { animation: fadeIn .3s ease-out; }
@keyframes fadeIn { from{opacity:0;transform:translateY(8px)} to{opacity:1;transform:none} }
@keyframes pulse-dot { 0%,100%{opacity:1} 50%{opacity:.4} }
.pulse-dot { animation: pulse-dot 1.5s infinite; }
.stage-card { transition: all .2s ease; }
.stage-card:hover { transform: translateY(-2px); box-shadow: 0 8px 25px -5px rgba(0,0,0,.1); }
pre.json { max-height: 400px; overflow: auto; font-size: 12px; line-height: 1.5; }
.loader { border: 3px solid #e5e7eb; border-top: 3px solid #3b82f6; border-radius: 50%; width: 20px; height: 20px; animation: spin .8s linear infinite; display: inline-block; }
.loader-lg { width: 36px; height: 36px; border-width: 4px; }
@keyframes spin { to { transform: rotate(360deg); } }
.opt-radio { transition: all .15s; cursor: pointer; }
.opt-radio:hover { border-color: #93c5fd; background: #eff6ff; }
.opt-radio.selected { border-color: #2563eb; background: #eff6ff; box-shadow: 0 0 0 2px rgba(37,99,235,.15); }
.opt-radio.selected .radio-dot { background: #2563eb; }
.term-card { transition: all .15s; }
.term-accepted { border-left: 4px solid #10b981; }
.term-flagged { border-left: 4px solid #f59e0b; }

@keyframes slideInLog { from{opacity:0;transform:translateX(-12px)} to{opacity:1;transform:none} }
.log-entry { animation: slideInLog .25s ease-out; }
@keyframes breathe { 0%,100%{box-shadow:0 0 0 0 rgba(59,130,246,.3)} 50%{box-shadow:0 0 0 8px rgba(59,130,246,0)} }
.stage-active-ring { animation: breathe 2s ease-in-out infinite; }
@keyframes progressGrow { from{width:0} }
.progress-bar-animated { animation: progressGrow .6s ease-out; }
@keyframes typingDots { 0%{opacity:.2} 20%{opacity:1} 100%{opacity:.2} }
.typing-dot { animation: typingDots 1.4s infinite both; }
.typing-dot:nth-child(2) { animation-delay: .2s; }
.typing-dot:nth-child(3) { animation-delay: .4s; }
.stage-timeline-line { transition: background-color .5s ease, height .3s ease; }
.stage-node { transition: all .4s ease; }
@keyframes checkPop { from{transform:scale(0)} to{transform:scale(1)} }
.check-pop { animation: checkPop .3s cubic-bezier(.175,.885,.32,1.275); }
@keyframes shimmer { to{background-position:200% center} }
.shimmer-text { background: linear-gradient(90deg, #334155 40%, #60a5fa 50%, #334155 60%); background-size: 200% auto; -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; color: transparent; animation: shimmer 2s linear infinite; }

#toastHost { position: fixed; top: 1rem; right: 1rem; z-index: 9999; display: flex; flex-direction: column; gap: .5rem; pointer-events: none; }
.toast { pointer-events: auto; min-width: 260px; max-width: 420px; padding: .75rem 1rem; border-radius: .75rem; font-size: 13px; font-weight: 500; box-shadow: 0 8px 25px -5px rgba(0,0,0,.15), 0 4px 10px -2px rgba(0,0,0,.08); display: flex; align-items: flex-start; gap: .5rem; animation: toastIn .25s cubic-bezier(.175,.885,.32,1.275); }
.toast-success { background: #ecfdf5; color: #065f46; border: 1px solid #6ee7b7; }
.toast-error { background: #fef2f2; color: #991b1b; border: 1px solid #fca5a5; }
.toast-info { background: #eff6ff; color: #1e40af; border: 1px solid #93c5fd; }
.toast-warning { background: #fffbeb; color: #92400e; border: 1px solid #fcd34d; }
.toast.hide { animation: toastOut .2s ease-in forwards; }
@keyframes toastIn { from { opacity: 0; transform: translateX(20px); } to { opacity: 1; transform: none; } }
@keyframes toastOut { to { opacity: 0; transform: translateX(20px); } }
