*,*:before,*:after{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,sans-serif;-webkit-font-smoothing:antialiased}#root{display:flex;min-height:100vh}.login-page{display:flex;align-items:center;justify-content:center;min-height:100vh;width:100%;background:#f1f5f9}.login-card{background:#fff;border-radius:12px;padding:2.5rem 2rem;width:100%;max-width:380px;box-shadow:0 1px 3px #00000014,0 8px 24px #0000000a;display:flex;flex-direction:column;gap:1rem}.login-card h1{margin:0;font-size:1.35rem;font-weight:700;color:#0f172a;text-align:center}.login-subtitle{margin:-.25rem 0 .5rem;font-size:.85rem;color:#64748b;text-align:center}.login-card label{display:flex;flex-direction:column;gap:.3rem;font-size:.8rem;font-weight:600;color:#475569}.login-card input{padding:.55rem .75rem;border:1px solid #e2e8f0;border-radius:8px;font-size:.9rem;outline:none;transition:border-color .15s;color:#1e293b}.login-card input:focus{border-color:#818cf8;box-shadow:0 0 0 3px #818cf826}.login-card button{margin-top:.5rem;padding:.6rem;background:#4f46e5;color:#fff;border:none;border-radius:8px;font-size:.9rem;font-weight:600;cursor:pointer;transition:background .15s}.login-card button:hover{background:#4338ca}.login-error{background:#fef2f2;color:#991b1b;border:1px solid #fecaca;border-radius:8px;padding:.6rem .75rem;font-size:.8rem}.login-success{background:#f0fdf4;color:#166534;border:1px solid #bbf7d0;border-radius:8px;padding:.6rem .75rem;font-size:.8rem}.login-toggle{text-align:center;font-size:.8rem;color:#64748b;margin:0}.login-toggle span{color:#4f46e5;cursor:pointer;font-weight:600}.login-toggle span:hover{text-decoration:underline}.dashboard{display:flex;min-height:100vh;width:100%}.sidebar{width:220px;background:#0f172a;color:#cbd5e1;padding:1.25rem 1rem;display:flex;flex-direction:column;flex-shrink:0;position:sticky;top:0;height:100vh;overflow-y:auto}.sidebar h2{margin:0 0 1.5rem .5rem;font-size:1.1rem;font-weight:700;color:#f8fafc;letter-spacing:.02em}.sidebar nav{display:flex;flex-direction:column;gap:2px;flex:1}.sidebar a{color:#94a3b8;text-decoration:none;padding:.5rem .75rem;border-radius:6px;font-size:.875rem;font-weight:500;transition:background .15s,color .15s}.sidebar a:hover{background:#ffffff0f;color:#e2e8f0}.sidebar a.active{background:#6366f126;color:#818cf8}.sidebar-footer{display:flex;align-items:center;gap:.5rem;padding:.75rem .5rem 0;border-top:1px solid rgba(255,255,255,.06);margin-top:auto}.status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.status-dot.ok{background:#22c55e;box-shadow:0 0 6px #22c55e66}.status-dot.err{background:#ef4444;box-shadow:0 0 6px #ef444466}.status-label{font-size:.75rem;color:#64748b}.content{flex:1;display:flex;flex-direction:column;background:#f8fafc;color:#1e293b;min-width:0}header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.5rem;background:#fff;border-bottom:1px solid #e2e8f0}header h1{margin:0;font-size:1.25rem;font-weight:600;color:#0f172a}.header-right{display:flex;align-items:center;gap:.75rem}.user-label{font-size:.8rem;color:#64748b;font-weight:500}.logout-btn{padding:.35rem .75rem;background:transparent;color:#64748b;border:1px solid #e2e8f0;border-radius:6px;font-size:.8rem;cursor:pointer;transition:background .15s,color .15s}.logout-btn:hover{background:#f1f5f9;color:#334155}.page{padding:1.5rem;flex:1;overflow:auto}.loading{display:flex;align-items:center;justify-content:center;padding:3rem;color:#64748b;font-size:.9rem}.error-banner{background:#fef2f2;color:#991b1b;border:1px solid #fecaca;border-radius:8px;padding:.75rem 1rem;font-size:.875rem;margin-bottom:1rem}.table-container{background:#fff;border:1px solid #e2e8f0;border-radius:10px;overflow:hidden}.table-meta{padding:.75rem 1rem;font-size:.8rem;color:#64748b;border-bottom:1px solid #f1f5f9}.table-scroll{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:.875rem;table-layout:fixed}thead{background:#f8fafc}th{text-align:left;padding:.65rem 1rem;font-weight:600;color:#475569;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid #e2e8f0;white-space:nowrap}td{padding:.6rem 1rem;color:#334155;border-bottom:1px solid #f1f5f9;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}tbody tr:hover{background:#f8fafc}tbody tr:last-child td{border-bottom:none}.paths-page{display:flex;flex-direction:column;gap:1rem}.paths-summary{display:flex;gap:1rem}.summary-item{background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:1rem 1.5rem;display:flex;flex-direction:column;gap:.15rem;min-width:140px}.summary-value{font-size:1.5rem;font-weight:700;color:#0f172a}.summary-label{font-size:.75rem;color:#64748b;text-transform:uppercase;letter-spacing:.04em;font-weight:600}.product-group{background:#fff;border:1px solid #e2e8f0;border-radius:10px;overflow:hidden}.product-header{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;border-bottom:1px solid #f1f5f9}.product-name-row{display:flex;align-items:center;gap:.5rem}.product-name{font-weight:600;font-size:.9rem;color:#0f172a}.product-count{font-size:.75rem;color:#64748b}.path-cell{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,monospace;font-size:.8rem;color:#475569;white-space:normal;overflow:visible;text-overflow:unset;word-break:break-word;vertical-align:top}.path-preview{margin-top:.3rem;font-size:.7rem;color:#94a3b8;word-break:break-all;line-height:1.35}.badge{display:inline-block;padding:.15rem .55rem;border-radius:4px;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em}.badge-jsonl{background:#ede9fe;color:#6d28d9}.badge-parquet{background:#e0f2fe;color:#0369a1}.badge-delivery{background:#fef3c7;color:#92400e}.badge-incremental{background:#dbeafe;color:#1e40af}.badge-full{background:#f1f5f9;color:#475569}.badge-setup{background:#fef3c7;color:#b45309;border:1px solid #fcd34d}.row-needs-setup{background:#fffbeb}.row-needs-setup:hover{background:#fef3c7!important}.needs-setup{display:inline-flex;align-items:center;gap:.5rem;flex-wrap:wrap}.needs-setup-text{font-size:.75rem;color:#92400e;font-family:system-ui,sans-serif}.btn-edit-primary{background:#4f46e5;color:#fff;border-color:#4f46e5}.btn-edit-primary:hover{background:#4338ca;border-color:#4338ca}code{background:#f1f5f9;padding:.15rem .4rem;border-radius:4px;font-size:.8rem;color:#334155}.inline-edit{width:100%;padding:.3rem .5rem;border:1px solid #818cf8;border-radius:6px;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,monospace;font-size:.8rem;color:#1e293b;outline:none;box-shadow:0 0 0 2px #818cf826;box-sizing:border-box}.inline-edit-sm{max-width:140px}.actions-cell{text-align:center;overflow:visible;white-space:nowrap}.btn-edit{padding:.25rem .6rem;background:transparent;color:#4f46e5;border:1px solid #e2e8f0;border-radius:6px;font-size:.75rem;font-weight:600;cursor:pointer;transition:background .15s,border-color .15s}.btn-edit:hover{background:#eef2ff;border-color:#c7d2fe}.edit-actions{display:inline-flex;gap:.35rem;white-space:nowrap}.btn-save{padding:.25rem .55rem;background:#4f46e5;color:#fff;border:none;border-radius:6px;font-size:.75rem;font-weight:600;cursor:pointer;transition:background .15s}.btn-save:hover{background:#4338ca}.btn-save:disabled,.btn-cancel:disabled{opacity:.5;cursor:not-allowed}.btn-cancel{padding:.25rem .55rem;background:#fff;color:#334155;border:1px solid #cbd5e1;border-radius:6px;font-size:.75rem;font-weight:600;cursor:pointer;transition:background .15s,border-color .15s}.btn-cancel:hover{background:#f1f5f9;border-color:#94a3b8}.inline-error{padding:.5rem 1rem;font-size:.8rem;color:#991b1b;background:#fef2f2;border-top:1px solid #fecaca}.inline-edit-error{border-color:#f87171;box-shadow:0 0 0 2px #f8717126}.field-error{margin-top:.25rem;font-size:.7rem;color:#991b1b;line-height:1.3;white-space:normal;overflow:visible}td:has(.field-error){white-space:normal;overflow:visible}.muted{color:#94a3b8}.empty-state{background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:2.5rem 1.5rem;text-align:center;color:#64748b}.empty-state h3{margin:0 0 .5rem;font-size:1rem;font-weight:600;color:#0f172a}.empty-state p{margin:0;font-size:.85rem}.paths-top-row{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.field-guide-toggle{padding:.4rem .75rem;background:#fff;color:#475569;border:1px solid #e2e8f0;border-radius:8px;font-size:.8rem;font-weight:500;cursor:pointer;transition:background .15s,color .15s,border-color .15s;white-space:nowrap;flex-shrink:0;margin-top:.25rem}.field-guide-toggle:hover{background:#f1f5f9;color:#1e293b;border-color:#cbd5e1}.field-guide{background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:.75rem 1rem;display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:.5rem 1.5rem}.field-guide-item{display:flex;flex-direction:column;gap:.1rem}.field-guide-label{font-size:.75rem;font-weight:700;color:#0f172a;text-transform:uppercase;letter-spacing:.03em}.field-guide-desc{font-size:.8rem;color:#64748b;line-height:1.4}.field-guide-placeholder{font-size:.7rem;font-style:italic;color:#b45309;margin-top:.15rem}.account-page{display:flex;flex-direction:column;gap:1rem;max-width:480px}.account-card{background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:1.25rem 1.5rem}.account-card h3{margin:0 0 .25rem;font-size:1rem;font-weight:600;color:#0f172a}.account-hint{margin:0 0 1rem;font-size:.8rem;color:#64748b}.account-info{display:flex;align-items:center;gap:1rem}.account-avatar{width:40px;height:40px;border-radius:50%;background:#4f46e5;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:1.1rem;flex-shrink:0}.account-username{font-weight:600;color:#0f172a}.account-card form{display:flex;flex-direction:column;gap:.75rem}.account-card label{display:flex;flex-direction:column;gap:.3rem;font-size:.8rem;font-weight:600;color:#475569}.account-card input{padding:.55rem .75rem;border:1px solid #e2e8f0;border-radius:8px;font-size:.9rem;outline:none;transition:border-color .15s;color:#1e293b}.account-card input:focus{border-color:#818cf8;box-shadow:0 0 0 3px #818cf826}.account-card button{margin-top:.25rem;background:#4f46e5;color:#fff;border:none;border-radius:8px;font-size:.9rem;font-weight:600;cursor:pointer;transition:background .15s;align-self:flex-start;padding:.6rem 1.25rem}.account-card button:hover{background:#4338ca}
