@import "https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700&display=swap";:root{--bg-primary:#f8fafc;--bg-secondary:#fff;--bg-card:#fff;--bg-card-hover:#f1f5f9;--border-color:#e2e8f0;--border-glow:#4f46e526;--text-primary:#0f172a;--text-secondary:#475569;--text-muted:#94a3b8;--accent-primary:#4f46e5;--accent-secondary:#6366f1;--accent-gradient:linear-gradient(135deg, #4f46e5 0%, #6366f1 100%);--accent-glow:0 4px 12px #4f46e533;--success:#059669;--success-bg:#d1fae5;--success-border:#a7f3d0;--error:#e11d48;--error-bg:#ffe4e6;--error-border:#fecdd3;--warning:#d97706;--font-sans:"Outfit", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--transition-fast:.2s ease;--transition-normal:.3s cubic-bezier(.4, 0, .2, 1);--border-radius-sm:8px;--border-radius-md:12px;--border-radius-lg:16px;--box-shadow:0 10px 25px -5px #0000000d, 0 8px 10px -6px #0000000d;--box-shadow-sm:0 1px 3px 0 #0000000d, 0 1px 2px 0 #00000008}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-sans);background-color:var(--bg-primary);color:var(--text-primary);background-image:radial-gradient(at 0 0,#6366f10a 0,#0000 50%),radial-gradient(at 100% 0,#8b5cf60a 0,#0000 50%);min-height:100vh;line-height:1.5;overflow-x:hidden}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-primary)}::-webkit-scrollbar-thumb{background:#0000001a;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--accent-primary)}.app-container{grid-template-columns:320px 1fr;min-height:100vh;display:grid}.sidebar{border-right:1px solid var(--border-color);background:#fff;flex-direction:column;height:100vh;padding:1.5rem;display:flex;position:sticky;top:0;overflow:hidden;box-shadow:2px 0 10px #00000005}.brand{align-items:center;gap:.75rem;margin-bottom:2rem;display:flex}.brand-icon{background:var(--accent-gradient);border-radius:var(--border-radius-md);color:#fff;width:40px;height:40px;box-shadow:var(--accent-glow);justify-content:center;align-items:center;font-size:1.25rem;font-weight:700;display:flex}.brand-name{letter-spacing:-.025em;background:var(--accent-gradient);-webkit-text-fill-color:transparent;-webkit-background-clip:text;font-size:1.25rem;font-weight:700}.sidebar-title{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:1rem;font-size:.75rem;font-weight:600}.history-list{flex-direction:column;flex:1;gap:.85rem;margin-top:.6rem;display:flex;overflow-y:auto}.history-item{border:1px solid var(--border-color);border-radius:var(--border-radius-md);cursor:pointer;transition:all var(--transition-normal);text-align:left;background:#fff;border-left:3px solid #0000;min-width:0;padding:.9rem 1.1rem;box-shadow:0 1px 3px #00000005}.history-item:hover{border-color:var(--border-color);background:#f8fafc;border-left-color:#4f46e573;transform:translate(3px)}.history-item.active{border-color:#d1d5db;border-left-color:var(--accent-primary);background:#f0f4ff;box-shadow:0 4px 12px #4f46e50d}.history-item-header{justify-content:space-between;align-items:center;margin-bottom:.75rem;display:flex}.history-status{text-transform:uppercase;letter-spacing:.03em;border-radius:6px;padding:.2rem .5rem;font-size:.65rem;font-weight:700}.status-success{background:var(--success-bg);color:var(--success);border:1px solid var(--success-border)}.status-failed{background:var(--error-bg);color:var(--error);border:1px solid var(--error-border)}.history-url{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;margin-top:.6rem;margin-bottom:.5rem;font-size:.8rem;font-weight:500;overflow:hidden}.history-meta{color:var(--text-secondary);justify-content:space-between;font-size:.7rem;display:flex}.empty-history{color:var(--text-muted);text-align:center;padding:2rem 0;font-size:.85rem}.main-content{flex-direction:column;gap:2rem;height:100vh;padding:2rem;display:flex;overflow-y:auto}.scraper-panel{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--border-radius-lg);box-shadow:var(--box-shadow);padding:1.75rem;position:relative;overflow:hidden}.scraper-panel:before{content:"";background:var(--accent-gradient);width:100%;height:4px;position:absolute;top:0;left:0}.form-title{color:var(--text-primary);margin-bottom:.35rem;font-size:1.2rem;font-weight:600}.form-subtitle{color:var(--text-secondary);margin-bottom:1.15rem;font-size:.8rem}.scraper-form{align-items:flex-end;gap:.75rem;display:flex}.input-group{flex-direction:column;flex:1;gap:.4rem;display:flex}.input-group.narrow{flex:0 0 110px}.input-label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.025em;font-size:.72rem;font-weight:600}.url-input,.pages-select{border:1px solid var(--border-color);border-radius:var(--border-radius-sm);color:var(--text-primary);font-family:var(--font-sans);transition:var(--transition-fast);box-shadow:var(--box-shadow-sm);background:#fff;outline:none;padding:.55rem .8rem;font-size:.85rem}.url-input:focus,.pages-select:focus{border-color:var(--accent-primary);box-shadow:0 0 0 3px #4f46e51f}.scrape-btn{background:var(--accent-gradient);border-radius:var(--border-radius-sm);color:#fff;cursor:pointer;transition:var(--transition-normal);box-shadow:var(--accent-glow);border:none;justify-content:center;align-items:center;gap:.4rem;height:38px;padding:.55rem 1.35rem;font-size:.85rem;font-weight:600;display:flex}.scrape-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 20px #4f46e559}.scrape-btn:active:not(:disabled){transform:translateY(0)}.scrape-btn:disabled{opacity:.6;cursor:not-allowed;box-shadow:none}.spinner{border:2px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:18px;height:18px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.status-card{border:1px dashed var(--accent-primary);border-radius:var(--border-radius-md);background:#f5f3ff;align-items:center;gap:1rem;padding:1.25rem;animation:2s ease-in-out infinite pulse;display:flex}.status-card .spinner{border-color:#4f46e533;border-top-color:var(--accent-primary)}@keyframes pulse{0%,to{opacity:.8}50%{opacity:1}}.status-info{flex-direction:column;display:flex}.status-title{color:var(--accent-primary);font-size:.95rem;font-weight:600}.status-desc{color:var(--text-secondary);font-size:.8rem}.error-card{background:var(--error-bg);border:1px solid var(--error-border);border-radius:var(--border-radius-md);color:var(--error);box-shadow:var(--error-glow);flex-direction:column;gap:.25rem;padding:1.25rem;font-size:.9rem;display:flex}.error-title{text-transform:uppercase;letter-spacing:.05em;font-size:.75rem;font-weight:700}.results-container{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--border-radius-lg);box-shadow:var(--box-shadow);flex-direction:column;flex:1;padding:1.75rem;display:flex;overflow:hidden}.results-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.5rem;display:flex}.results-title-group{flex-direction:column;display:flex}.results-title{font-size:1.25rem;font-weight:600}.results-count{color:var(--text-secondary);font-size:.8rem}.results-actions{gap:.75rem;display:flex}.btn{border:1px solid var(--border-color);border-radius:var(--border-radius-sm);color:var(--text-secondary);cursor:pointer;transition:var(--transition-fast);box-shadow:var(--box-shadow-sm);background:#fff;align-items:center;gap:.4rem;height:34px;padding:.45rem 1rem;font-size:.78rem;font-weight:500;display:flex}.btn:hover:not(:disabled){color:var(--text-primary);border-color:var(--text-muted);background:#f8fafc}.btn-primary{background:var(--accent-gradient);color:#fff;box-shadow:var(--accent-glow);border:none}.btn-primary:hover:not(:disabled){background:var(--accent-gradient);transform:translateY(-1px);box-shadow:0 4px 15px #4f46e54d}.search-bar{margin-bottom:.85rem;position:relative}.search-input{border:1px solid var(--border-color);border-radius:var(--border-radius-sm);width:100%;color:var(--text-primary);font-family:var(--font-sans);transition:var(--transition-fast);box-shadow:var(--box-shadow-sm);background:#fff;outline:none;padding:.45rem .8rem .45rem 2rem;font-size:.8rem}.search-input:focus{border-color:var(--accent-primary);box-shadow:0 0 0 3px #4f46e51a}.search-icon{color:var(--text-muted);pointer-events:none;font-size:.8rem;position:absolute;top:50%;left:.75rem;transform:translateY(-50%)}.table-wrapper{border:1px solid var(--border-color);border-radius:var(--border-radius-md);max-height:520px;box-shadow:var(--box-shadow-sm);transition:max-height var(--transition-normal);background:#fff;flex:1;margin-bottom:1rem;overflow-x:auto}.table-wrapper.expanded{max-height:72vh}.data-table{border-collapse:collapse;text-align:left;width:100%;font-size:.78rem;line-height:1.4}.data-table th{color:var(--text-secondary);white-space:nowrap;z-index:10;text-transform:uppercase;letter-spacing:.03em;background:#f8fafc;border-bottom:2px solid #e2e8f0;padding:.6rem .85rem;font-size:.72rem;font-weight:600;position:sticky;top:0}.data-table td{border-bottom:1px solid var(--border-color);color:var(--text-primary);vertical-align:middle;padding:.6rem .85rem}.data-table tbody tr{transition:var(--transition-fast)}.data-table tbody tr:nth-child(2n){background:#f8fafc}.data-table tbody tr:hover{background:#f1f5f9}.col-s-no-{text-align:center;width:50px;color:var(--text-secondary);white-space:nowrap;font-weight:600}th.col-s-no-{text-align:center}.col-description{min-width:300px;max-width:480px;color:var(--text-primary);white-space:normal!important}.col-name-of-contractor{min-width:200px;max-width:300px;font-weight:500;white-space:normal!important}.col-nit-number,.col-location,.col-classification{white-space:nowrap}.col-value-of-contract{text-align:right;color:var(--accent-primary);white-space:nowrap;font-size:.82rem;font-weight:600}th.col-value-of-contract{text-align:right}.col-award-date{text-align:center;white-space:nowrap}th.col-award-date{text-align:center}.col-details-link{text-align:center;white-space:nowrap}th.col-details-link{text-align:center}.detail-link{color:var(--accent-primary);transition:var(--transition-fast);background:#eef2ff;border:1px solid #4f46e526;border-radius:4px;align-items:center;gap:.25rem;padding:.25rem .55rem;font-size:.72rem;font-weight:600;text-decoration:none;display:inline-flex}.detail-link:hover{background:var(--accent-primary);color:#fff;border-color:var(--accent-primary);text-decoration:none;box-shadow:0 2px 6px #4f46e526}.no-data{text-align:center;color:var(--text-muted);padding:4rem 2rem}.no-data-icon{opacity:.5;margin-bottom:1rem;font-size:2.5rem}.pagination{border-top:1px solid var(--border-color);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding-top:1rem;display:flex}.pagination-info{color:var(--text-secondary);font-size:.8rem}.pagination-controls{gap:.35rem;display:flex}.page-btn{border:1px solid var(--border-color);border-radius:var(--border-radius-sm);width:32px;height:32px;color:var(--text-secondary);cursor:pointer;transition:var(--transition-fast);box-shadow:var(--box-shadow-sm);background:#fff;justify-content:center;align-items:center;font-size:.8rem;display:flex}.page-btn:hover:not(:disabled){border-color:var(--text-muted);color:var(--text-primary);background:#f1f5f9}.page-btn.active{background:var(--accent-gradient);border-color:var(--accent-primary);color:#fff;box-shadow:var(--accent-glow)}.page-btn:disabled{opacity:.4;cursor:not-allowed;box-shadow:none}@media (width<=900px){.app-container{grid-template-rows:auto 1fr;grid-template-columns:1fr}.sidebar{border-right:none;border-bottom:1px solid var(--border-color);height:auto;max-height:300px}.main-content{height:auto}}@media (width<=600px){.scraper-form{flex-direction:column;align-items:stretch}.input-group.narrow{flex:1}.scrape-btn{justify-content:center;width:100%}}.logout-btn{border-radius:var(--border-radius-sm);color:var(--error);cursor:pointer;transition:var(--transition-fast);box-shadow:var(--box-shadow-sm);background:#fff5f5;border:1px solid #fed7d7;justify-content:center;align-items:center;gap:.5rem;margin-top:auto;padding:.6rem 1rem;font-size:.8rem;font-weight:600;display:flex}.logout-btn:hover{background:var(--error);color:#fff;border-color:var(--error);box-shadow:0 4px 12px #e11d4826}.login-container{background-color:var(--bg-primary);background-image:radial-gradient(at 0 0,#6366f114 0,#0000 50%),radial-gradient(at 100% 0,#8b5cf614 0,#0000 50%);justify-content:center;align-items:center;width:100vw;min-height:100vh;display:flex}.login-card{border:1px solid var(--border-color);border-radius:var(--border-radius-lg);background:#fff;flex-direction:column;width:100%;max-width:400px;padding:2.5rem;display:flex;box-shadow:0 20px 40px -15px #00000014}.login-brand{justify-content:center;margin-bottom:1.5rem}.login-title{color:var(--text-primary);text-align:center;margin-bottom:.25rem;font-size:1.5rem;font-weight:700}.login-subtitle{color:var(--text-secondary);text-align:center;margin-bottom:1.75rem;font-size:.82rem}.login-error-badge{background:var(--error-bg);border:1px solid var(--error-border);color:var(--error);border-radius:var(--border-radius-sm);text-align:center;margin-bottom:1.25rem;padding:.75rem 1rem;font-size:.8rem;font-weight:500}.login-form{flex-direction:column;gap:1.25rem;display:flex}.login-input-group{flex-direction:column;gap:.4rem;display:flex}.login-label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.025em;font-size:.75rem;font-weight:600}.login-input{border:1px solid var(--border-color);border-radius:var(--border-radius-sm);color:var(--text-primary);font-family:var(--font-sans);transition:var(--transition-fast);box-shadow:var(--box-shadow-sm);background:#fff;outline:none;padding:.7rem .9rem;font-size:.875rem}.login-input:focus{border-color:var(--accent-primary);box-shadow:0 0 0 3px #4f46e51f}.login-submit-btn{background:var(--accent-gradient);border-radius:var(--border-radius-sm);color:#fff;cursor:pointer;transition:var(--transition-normal);box-shadow:var(--accent-glow);text-align:center;border:none;height:42px;margin-top:.5rem;padding:.75rem 1.5rem;font-size:.9rem;font-weight:600}.login-submit-btn:hover{transform:translateY(-1px);box-shadow:0 6px 18px #4f46e559}.login-submit-btn:active{transform:translateY(0)}.delete-history-btn{color:var(--text-muted);cursor:pointer;transition:opacity var(--transition-fast), background var(--transition-fast), color var(--transition-fast);opacity:0;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;padding:.25rem;display:flex}.history-item:hover .delete-history-btn,.history-item.active .delete-history-btn{opacity:1}.delete-history-btn:hover{color:var(--error);background:#fff5f5}
