:root{--color-surface:oklch(98.5% 0.004 90);--color-surface-raised:oklch(100% 0 0);--color-border:oklch(90% 0.006 90);--color-text:oklch(24% 0.02 60);--color-text-muted:oklch(52% 0.02 60);--color-accent:oklch(58% 0.13 55);--color-accent-strong:oklch(48% 0.14 50);--color-danger:oklch(52% 0.19 25);--color-success:oklch(52% 0.13 150);--font-sans:ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--text-sm:0.875rem;--text-base:clamp(1rem,0.95rem + 0.2vw,1.0625rem);--text-lg:clamp(1.125rem,1rem + 0.5vw,1.375rem);--text-xl:clamp(1.5rem,1.2rem + 1.2vw,2.25rem);--space-1:0.25rem;--space-2:0.5rem;--space-3:0.75rem;--space-4:1rem;--space-6:1.5rem;--space-8:2rem;--space-section:clamp(1.5rem,1rem + 2vw,3rem);--radius:0.625rem;--shadow-card:0 1px 2px oklch(24% 0.02 60/0.06),0 8px 24px oklch(24% 0.02 60/0.05);--duration-fast:150ms;--ease-out-expo:cubic-bezier(0.16,1,0.3,1)}*,:after,:before{box-sizing:border-box}body,html{margin:0;padding:0}body{font-family:var(--font-sans);font-size:var(--text-base);color:var(--color-text);background:var(--color-surface);line-height:1.5;-webkit-font-smoothing:antialiased}a{color:var(--color-accent-strong);text-decoration:none}a:hover{text-decoration:underline}.app-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-6);padding:var(--space-4) var(--space-section);background:var(--color-surface-raised);border-bottom:1px solid var(--color-border)}.app-header .brand{font-weight:700;letter-spacing:-.01em}.app-header nav{display:flex;gap:var(--space-4)}.app-header nav a{color:var(--color-text-muted);font-weight:500;transition:color var(--duration-fast) var(--ease-out-expo)}.app-header nav a:hover{color:var(--color-text);text-decoration:none}.app-main{padding:var(--space-section);max-width:72rem;margin:0 auto}.page-title{font-size:var(--text-xl);font-weight:700;letter-spacing:-.02em;margin:0 0 var(--space-2)}.page-subtitle{color:var(--color-text-muted);margin:0 0 var(--space-6)}.stat-card{display:inline-flex;flex-direction:column;gap:var(--space-1);padding:var(--space-6) var(--space-8);background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-card)}.stat-card .stat-value{font-size:var(--text-xl);font-weight:700;color:var(--color-accent-strong);line-height:1}.stat-card .stat-label{color:var(--color-text-muted);font-size:var(--text-sm)}.data-table{width:100%;border-collapse:collapse;background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius);overflow:hidden}.data-table td,.data-table th{text-align:left;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border)}.data-table th{font-size:var(--text-sm);color:var(--color-text-muted);font-weight:600;background:var(--color-surface)}.data-table tbody tr:last-child td{border-bottom:none}.data-table tbody tr{transition:background var(--duration-fast) var(--ease-out-expo)}.data-table tbody tr:hover{background:var(--color-surface)}.login-wrap{min-height:100dvh;display:grid;place-items:center;padding:var(--space-6)}.login-card{width:min(24rem,100%);gap:var(--space-4);padding:var(--space-8);background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-card)}.field,.login-card{display:flex;flex-direction:column}.field{gap:var(--space-2)}.field label{font-size:var(--text-sm);font-weight:600}.field input{padding:var(--space-3);font-size:var(--text-base);border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface)}.field input:focus-visible{outline:2px solid var(--color-accent);outline-offset:1px}.btn-primary{padding:var(--space-3) var(--space-4);font-size:var(--text-base);font-weight:600;color:oklch(100% 0 0);background:var(--color-accent);border:none;border-radius:var(--radius);cursor:pointer;transition:background var(--duration-fast) var(--ease-out-expo)}.btn-primary:hover{background:var(--color-accent-strong)}.cell-input{width:100%;max-width:14rem;padding:var(--space-2) var(--space-3);font-size:var(--text-base);border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface)}.cell-input--narrow{max-width:5rem}.cell-input:focus-visible{outline:2px solid var(--color-accent);outline-offset:1px}.error-state,.form-error{color:var(--color-danger);font-size:var(--text-sm)}.empty-state{color:var(--color-text-muted);padding:var(--space-8);text-align:center}.bulk-bar{position:-webkit-sticky;position:sticky;top:0;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-3) 0;margin-bottom:var(--space-4);background:var(--color-surface)}.bulk-selectall{display:inline-flex;align-items:center;gap:var(--space-2);color:var(--color-text-muted);font-size:var(--text-sm)}.bulk-summary{margin:0 0 var(--space-4);font-weight:600}.col-check{width:1px;white-space:nowrap}.status-cell{font-size:var(--text-sm);transition:color var(--duration-fast) var(--ease-out-expo)}.status-success{color:var(--color-success)}.status-error{color:var(--color-danger)}.status-pending,.status-running{color:var(--color-text-muted)}.spinner{display:inline-block;width:.9em;height:.9em;margin-right:var(--space-2);vertical-align:-.1em;border:2px solid;border-top:2px solid transparent;border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.btn-primary:disabled{cursor:progress;opacity:.75}.btn-primary[aria-busy=true]{background:var(--color-accent-strong)}.lade-hinweis{display:flex;align-items:center;color:var(--color-text-muted);font-size:var(--text-sm)}.skeleton{display:block;border-radius:calc(var(--radius) / 2);background:linear-gradient(90deg,var(--color-border) 25%,var(--color-surface-raised) 50%,var(--color-border) 75%);background-size:200% 100%;animation:shimmer 1.4s var(--ease-out-expo) infinite}@keyframes shimmer{to{background-position:-200% 0}}.skeleton-table{display:flex;flex-direction:column;gap:var(--space-3);margin-top:var(--space-4)}.skeleton-row{display:flex;gap:var(--space-4)}.skeleton-cell{flex:1 1;height:1.25rem}.skeleton-cell:first-child{max-width:6rem}@media (prefers-reduced-motion:reduce){.spinner{animation-duration:2s}.skeleton{animation:none;background:var(--color-border)}}.fortschritt{height:.375rem;margin:0 0 var(--space-4);overflow:hidden;background:var(--color-border);border-radius:999px}.fortschritt-balken{height:100%;background:var(--color-accent);border-radius:inherit;transition:width var(--duration-fast) var(--ease-out-expo)}