:root{font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.6;font-weight:400;color:#0f172a;background-color:#f1f5f9;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;min-height:100vh;background-color:#e2e8f0}a{color:inherit;text-decoration:none}button{font:inherit}.table-wrapper{width:100%;overflow:auto;border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-surface);box-shadow:var(--shadow-light)}.table-wrapper table{width:100%;border-collapse:collapse;font-size:.94rem;min-width:640px;table-layout:fixed}.table-wrapper th,.table-wrapper td{padding:.75rem .95rem;text-align:left;border-bottom:1px solid rgba(208,216,230,.5);vertical-align:middle;position:relative}.table-wrapper th{background:linear-gradient(135deg,#e2e8f0bf,#e2e8f073);color:var(--color-text);font-weight:700;text-transform:uppercase;font-size:.78rem;letter-spacing:.06em;white-space:nowrap}.table-wrapper td{color:var(--color-text-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.table-wrapper tbody tr:nth-child(2n) td{background:#f8fafccc}.table-wrapper tbody tr:hover td{background:#e2e8f066;transition:background var(--transition)}.table-wrapper tr:last-child td{border-bottom:none}.table-wrapper.dense th,.table-wrapper.dense td{padding:.5rem .7rem;font-size:.87rem}.table-wrapper th.align-center,.table-wrapper td.align-center{text-align:center}.table-wrapper th.align-right,.table-wrapper td.align-right{text-align:right}.paginated-table-container{display:flex;flex-direction:column;gap:1rem}.pagination{display:flex;gap:.5rem;align-items:center;justify-content:center;flex-wrap:wrap}.pagination-btn{min-width:2.5rem;padding:.5rem .75rem;font-size:1rem;font-weight:600}.pagination-info{color:var(--color-text-soft);font-size:.9rem;padding:0 .75rem;white-space:nowrap;font-weight:500}.pagination button{min-width:2.8rem}.table-empty{padding:1.5rem;border-radius:var(--radius-md);border:1px dashed rgba(148,163,184,.5);text-align:center;color:var(--color-muted);background:var(--color-surface-muted)}@media (max-width: 720px){.pagination{gap:.35rem}.pagination-btn{min-width:2rem;padding:.4rem .6rem;font-size:.9rem}.pagination-info{font-size:.85rem;flex-basis:100%;text-align:center;order:-1;margin-bottom:.5rem}.table-wrapper table{font-size:.85rem;min-width:500px}.table-wrapper th,.table-wrapper td{padding:.6rem .7rem}}:root{color-scheme:light;--color-background: #f1f5f9;--color-surface: #ffffff;--color-surface-muted: #f8fafc;--color-border: #d0d8e6;--color-border-strong: #c4cede;--color-text: #0f172a;--color-text-soft: #475569;--color-muted: #64748b;--color-primary: #1d4ed8;--color-primary-strong: #2563eb;--color-primary-soft: rgba(37, 99, 235, .12);--color-success: #047857;--color-success-soft: rgba(34, 197, 94, .12);--color-error: #b91c1c;--color-error-soft: rgba(248, 113, 113, .16);--color-warning: #b45309;--color-warning-soft: rgba(251, 191, 36, .18);--shadow-card: 0 24px 56px -32px rgba(15, 23, 42, .35);--shadow-soft: 0 18px 32px -28px rgba(15, 23, 42, .32);--shadow-light: 0 10px 24px -20px rgba(15, 23, 42, .22);--radius-lg: 22px;--radius-md: 16px;--radius-sm: 10px;--transition: .2s ease;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.6;font-size:16px;font-weight:400}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;min-height:100%;background:var(--color-background);color:var(--color-text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{min-height:100vh}a{color:var(--color-primary-strong);text-decoration:none;transition:color var(--transition)}a:hover{color:var(--color-primary)}button{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;padding:.65rem 1.6rem;border-radius:var(--radius-sm);border:1px solid transparent;background:linear-gradient(135deg,var(--color-primary-strong),#1e40af);color:#fff;font-weight:600;font-size:.95rem;cursor:pointer;transition:transform var(--transition),box-shadow var(--transition),background var(--transition),filter var(--transition);box-shadow:var(--shadow-light)}button:hover{transform:translateY(-1px);box-shadow:0 16px 28px -24px #2563eb99}button:active{transform:translateY(0)}button:disabled{background:#cbd5f5;color:var(--color-muted);box-shadow:none;cursor:not-allowed}button.secondary{background:var(--color-surface-muted);color:var(--color-text);border:1px solid var(--color-border);box-shadow:none}button.secondary:hover{background:#e2e8f0}button.danger{background:linear-gradient(135deg,#ef4444,#b91c1c);box-shadow:0 16px 32px -26px #dc262699}button.danger:hover{box-shadow:0 18px 34px -26px #dc2626a6}input,select,textarea{font:inherit;color:var(--color-text);padding:.65rem .85rem;border-radius:var(--radius-sm);border:1px solid var(--color-border);background:#fff;transition:border-color var(--transition),box-shadow var(--transition),background var(--transition)}input:focus,select:focus,textarea:focus{outline:none;border-color:#2563eb8c;box-shadow:0 0 0 3px #2563eb26}input[type=file]{padding:.5rem .75rem;border:1px dashed var(--color-border-strong);background:var(--color-surface-muted);cursor:pointer}input[type=file]::file-selector-button{margin-right:.75rem;padding:.45rem .9rem;border:none;border-radius:var(--radius-sm);background:linear-gradient(135deg,var(--color-primary-strong),#1e40af);color:#fff;font-weight:600;cursor:pointer;transition:filter var(--transition)}input[type=file]::file-selector-button:hover{filter:brightness(1.05)}label{font-weight:600;color:var(--color-text)}code{font-family:Fira Code,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.85em;background:var(--color-surface-muted);padding:.1rem .35rem;border-radius:6px}.app-shell{max-width:1220px;margin:0 auto;padding:2.8rem 1.75rem 4rem;min-height:100vh;display:flex;flex-direction:column;gap:2.5rem}.error-boundary{padding:2rem;text-align:center;background-color:#f8f9fa;border:1px solid #dee2e6;border-radius:.375rem;margin:1rem}.error-content h2{color:#dc3545;margin-bottom:1rem}.error-content p{margin-bottom:1.5rem;color:#6c757d}.error-details{margin:1rem 0;text-align:left}.error-details pre{background-color:#f1f3f4;padding:1rem;border-radius:.25rem;font-size:.875rem;overflow-x:auto;white-space:pre-wrap;word-break:break-word}.retry-button{background-color:#007bff;color:#fff;border:none;padding:.5rem 1rem;border-radius:.25rem;cursor:pointer;font-size:1rem}.retry-button:hover{background-color:#0056b3}.app-header{display:flex;flex-direction:column;gap:1.6rem}.header-top{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;flex-wrap:wrap}.header-actions{display:flex;align-items:center;justify-content:flex-end;gap:.75rem;margin-left:auto}.branding h1{margin:0;font-size:clamp(2.15rem,2.6vw,2.85rem);line-height:1.1;color:var(--color-text)}.hint{margin:0;color:var(--color-muted);font-size:.95rem}.branding .hint{max-width:58ch}.locale-toggle{position:static;padding:.45rem 1.2rem;border-radius:999px;background:var(--color-surface);color:var(--color-primary-strong);border:1px solid rgba(37,99,235,.35);font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;box-shadow:var(--shadow-light);transition:color var(--transition),border-color var(--transition),box-shadow var(--transition),background var(--transition)}.locale-toggle:hover{background:var(--color-primary-soft);border-color:var(--color-primary-strong);box-shadow:0 18px 34px -28px #2563eb73}.main-nav{display:inline-flex;gap:.4rem;background:#94a3b82e;padding:.45rem;border-radius:999px;border:1px solid rgba(148,163,184,.3);box-shadow:0 16px 32px -28px #94a3b873}.nav-link{display:inline-flex;align-items:center;justify-content:center;padding:.55rem 1.45rem;border-radius:999px;font-weight:600;color:var(--color-text);transition:background var(--transition),color var(--transition),box-shadow var(--transition),transform var(--transition)}.nav-link:hover{background:#2563eb1f;color:var(--color-primary-strong);transform:translateY(-1px)}.nav-link.active{background:linear-gradient(135deg,var(--color-primary-strong),#1e40af);color:#fff;box-shadow:0 16px 32px -24px #2563ebb3}.app-main{flex:1;display:flex;flex-direction:column;gap:1.5rem}.app-footer{display:flex;justify-content:center;padding-top:1.5rem;font-size:.9rem;color:var(--color-muted)}.page{display:flex;flex-direction:column;gap:1.5rem}.card{background:var(--color-surface);border-radius:var(--radius-lg);border:1px solid rgba(255,255,255,.4);box-shadow:var(--shadow-card);padding:1.75rem 1.9rem;display:flex;flex-direction:column;gap:1.15rem}.card.hero{position:relative;overflow:hidden;color:#fff;background:linear-gradient(135deg,#1d4ed8,#1e293b 80%);box-shadow:0 32px 64px -32px #1d4ed88c}.card.hero:after{content:"";position:absolute;inset:0;background:url('data:image/svg+xml,%3Csvg width="340" height="340" viewBox="0 0 340 340" xmlns="http://www.w3.org/2000/svg"%3E%3Cdefs%3E%3ClinearGradient id="g" x1="0" x2="1" y1="1" y2="0"%3E%3Cstop stop-color="%23ffffff" stop-opacity="0.08"/%3E%3Cstop offset="1" stop-color="%23ffffff" stop-opacity="0"/%3E%3C/linearGradient%3E%3C/defs%3E%3Crect width="340" height="340" fill="url(%23g)"/%3E%3C/svg%3E') center/cover no-repeat;opacity:.35;pointer-events:none}.card.hero>*{position:relative;z-index:1}.card.hero h2{margin:0;font-size:clamp(2rem,2.6vw,2.6rem)}.card.hero p{margin:0;font-size:1.05rem;color:#ffffffd9}.hero-actions{display:flex;flex-wrap:wrap;gap:.8rem}.cta{display:inline-flex;align-items:center;justify-content:center;padding:.7rem 1.75rem;border-radius:999px;font-weight:600;background:var(--color-surface);color:var(--color-primary-strong);transition:transform var(--transition),box-shadow var(--transition);box-shadow:0 18px 32px -26px #0f172a8c}.cta:hover{transform:translateY(-1px)}.cta.ghost{background:#ffffff29;color:#fff;border:1px solid rgba(255,255,255,.3);box-shadow:none}.grid.two{display:grid;gap:1.6rem;grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.feature-list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:.5rem;color:var(--color-text-soft)}.feature-list li:before{content:"•";color:var(--color-primary-strong);margin-right:.45rem}.link{font-weight:600;color:var(--color-primary-strong);display:inline-flex;align-items:center;gap:.35rem}.link:after{content:"›";font-size:1rem;transform:translateY(-1px)}.sub-nav{display:flex;flex-wrap:wrap;gap:.65rem;margin-bottom:.4rem}.sub-nav-link{border:1px solid var(--color-border);background:var(--color-surface-muted);color:var(--color-text);font-weight:600;padding:.55rem 1.35rem;border-radius:var(--radius-sm);cursor:pointer;transition:background var(--transition),color var(--transition),transform var(--transition),box-shadow var(--transition)}.sub-nav-link:hover{transform:translateY(-1px);background:#2563eb1f;color:var(--color-primary-strong)}.sub-nav-link.active{background:linear-gradient(135deg,var(--color-primary-strong),#1e40af);color:#fff;border-color:transparent;box-shadow:var(--shadow-light)}.banner{display:flex;gap:1rem;align-items:flex-start;border-radius:var(--radius-md);border:1px solid transparent;padding:1rem 1.1rem;background:var(--color-surface-muted);color:var(--color-text)}.banner.info{border-color:#2563eb40;background:#2563eb1f;color:var(--color-primary-strong)}.banner.success{border-color:#16a34a40;background:var(--color-success-soft);color:var(--color-success)}.banner.error{border-color:#f8717159;background:var(--color-error-soft);color:var(--color-error)}.banner .tag{display:inline-flex;align-items:center;justify-content:center;padding:.35rem .8rem;border-radius:999px;background:#2563eb29;color:var(--color-primary-strong);font-size:.8rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;flex-wrap:wrap;white-space:normal;word-break:break-word;line-height:1.2;max-width:100%}.profile{display:flex;justify-content:space-between;align-items:center;gap:1.5rem;padding:1.1rem 1.35rem;border-radius:var(--radius-md);background:var(--color-surface-muted);border:1px solid rgba(148,163,184,.25)}.form-grid{display:grid;gap:1rem;align-items:end}.form-grid.two{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.form-grid.three{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.form-grid.four{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.form-grid label{display:flex;flex-direction:column;gap:.45rem;color:var(--color-text)}.form-grid .hint{font-size:.85rem}.form-actions{display:flex;flex-wrap:wrap;gap:.75rem;justify-content:flex-end;align-items:center;grid-column:1 / -1;align-self:end;margin-top:.5rem}.checkbox{display:inline-flex;align-items:center;gap:.5rem;cursor:pointer;font-weight:600;color:var(--color-text)}.checkbox input{width:18px;height:18px}.inline-form{display:flex;flex-wrap:wrap;gap:.8rem;align-items:flex-end}.inline-form button{flex-shrink:0}.status{padding:.85rem 1.1rem;border-radius:var(--radius-md);background:#2563eb1f;color:var(--color-primary-strong);border:1px solid rgba(37,99,235,.25);font-weight:600}.card.nested{background:var(--color-surface-muted);border:1px dashed rgba(148,163,184,.4);box-shadow:none}.card-header{display:flex;align-items:center;justify-content:space-between;gap:1rem}.card-header h4{margin:0}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.75rem;padding:1rem;border-radius:var(--radius-md);background:#fff;border:1px solid var(--color-border);box-shadow:var(--shadow-light)}.stats-grid strong{display:block;color:var(--color-text);margin-bottom:.15rem}.upload-progress{margin-top:1rem;display:flex;flex-direction:column;gap:.45rem;padding:1rem;background:var(--color-surface-muted);border-radius:var(--radius-md);border:1px solid var(--color-border)}.upload-progress-track{width:100%;height:12px;border-radius:999px;background:#94a3b840;overflow:hidden;position:relative}.upload-progress strong{font-size:.92rem;color:var(--color-text);font-weight:600}.upload-progress-fill{height:100%;background:linear-gradient(135deg,var(--color-primary-strong),#1e40af);transition:width .3s ease;position:relative;box-shadow:0 2px 4px #2563eb4d}.upload-progress-fill.processing{background:linear-gradient(135deg,#10b981,#059669);animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.8}}.stats-highlight{padding:.75rem;background:#2563eb1a;border-radius:var(--radius-sm);border:1px solid rgba(37,99,235,.25);margin-bottom:1rem;font-size:1.1rem;color:var(--color-primary-strong)}.job-card{border-radius:var(--radius-md);border:1px solid rgba(148,163,184,.35);padding:1.25rem 1.35rem;background:#fff;display:flex;flex-direction:column;gap:.9rem;box-shadow:var(--shadow-light)}.job-meta{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}.job-meta h4{margin:0}.job-heading{display:flex;flex-direction:column;gap:.25rem}.job-heading .job-id{font-size:.8rem;color:var(--color-muted);letter-spacing:.04em}.job-status{display:inline-flex;align-items:center;gap:.6rem;flex-wrap:wrap;justify-content:flex-end;text-align:right}.job-status.job-status-active .badge{box-shadow:0 0 0 3px #2563eb1f}.job-countdown{display:inline-flex;align-items:center;gap:.4rem;font-size:.85rem;color:var(--color-muted);background:var(--color-surface-muted);padding:.25rem .55rem;border-radius:999px}.job-spinner{width:.7rem;height:.7rem;border-radius:50%;border:2px solid rgba(59,130,246,.28);border-top-color:var(--color-primary-strong);animation:spin .9s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.job-timestamps{display:flex;flex-wrap:wrap;gap:.75rem}.badge{display:inline-flex;align-items:center;justify-content:center;padding:.25rem .9rem;border-radius:999px;font-size:.8rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase}.badge.success,.badge.status-completed{background:#10b9812e;color:#047857}.badge.warning,.badge.status-pending{background:#facc1533;color:var(--color-warning)}.badge.status-processing{background:#3b82f633;color:var(--color-primary-strong)}.badge.status-failed,.badge.status-error{background:#f8717138;color:var(--color-error)}.job-actions{display:flex;flex-wrap:wrap;gap:.65rem}.job-result{display:flex;flex-direction:column;gap:.7rem}.job-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.6rem 1.1rem;margin:0;padding:0;list-style:none}.job-summary-label{display:block;color:var(--color-muted);font-size:.82rem;letter-spacing:.04em;text-transform:uppercase}.job-summary-value{font-size:1.05rem;font-weight:600;color:var(--color-text)}.job-result-actions{display:flex;justify-content:flex-end}.task-list{display:flex;flex-direction:column;gap:1rem}.pagination{display:flex;gap:.85rem;align-items:center;justify-content:flex-end}.pagination span{color:var(--color-muted);font-size:.9rem}.table-empty{border:1px dashed rgba(148,163,184,.6);border-radius:var(--radius-md);padding:1.1rem;background:var(--color-surface-muted);text-align:center;color:var(--color-muted)}.home .card{gap:1.1rem}@media (max-width: 1024px){.app-shell{padding:2.4rem 1.4rem 3.2rem}.main-nav{width:100%;justify-content:center;flex-wrap:wrap}.form-grid.two,.form-grid.three,.form-grid.four{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.profile{flex-direction:column;align-items:flex-start}}@media (max-width: 720px){.banner{flex-direction:column;align-items:stretch;gap:.75rem}.banner .tag{align-self:flex-start;text-align:left;word-break:break-word;overflow-wrap:break-word;-webkit-hyphens:auto;hyphens:auto;max-width:100%;box-sizing:border-box}.app-shell{padding:2rem 1.1rem 3rem;gap:2rem}.header-top{flex-direction:column;align-items:stretch;gap:1.25rem}.header-actions{margin-left:0;width:100%;justify-content:flex-end}button,.form-actions button,.inline-form button{width:100%}.form-actions{justify-content:stretch}.hero-actions{flex-direction:column;align-items:stretch}.job-meta{flex-direction:column;align-items:flex-start;gap:.75rem}.job-status{justify-content:flex-start;text-align:left}.job-timestamps{flex-direction:column;gap:.5rem}.job-summary{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}}
