:root{--color-bg:#f8f9fa;--color-surface:#fff;--color-border:#e0e0e0;--color-border-focus:#2563eb;--color-primary:#2563eb;--color-primary-hover:#1d4ed8;--color-text:#1a1a1a;--color-text-muted:#6b7280;--color-positive:#1d9e75;--color-negative:#d85a30;--color-row-hover:#f0f4ff;--color-sum-row:#f3f4f6;--color-dropzone:#f0f4ff;--color-success:#16a34a;--color-error:#dc2626;--font:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif;--radius:6px;--shadow:0 1px 3px #00000014}*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font);background:var(--color-bg);color:var(--color-text);font-size:14px;line-height:1.5}#app{min-height:100vh}.text-muted{color:var(--color-text-muted)}.text-error{color:var(--color-error)}.btn{border-radius:var(--radius);font:inherit;cursor:pointer;border:none;align-items:center;gap:6px;padding:8px 18px;font-size:14px;transition:background .15s;display:inline-flex}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:not(:disabled):hover{background:var(--color-primary-hover)}.btn-secondary{background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border)}.btn-secondary:hover{background:var(--color-bg)}.badge{white-space:nowrap;border-radius:20px;padding:2px 7px;font-size:11px;font-weight:600;display:inline-block}.badge-required{color:#b91c1c;background:#fee2e2}.badge-optional{color:var(--color-text-muted);background:#f3f4f6}.badge-type{color:#1d4ed8;background:#dbeafe}.spinner{border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;width:28px;height:28px;margin:0 auto;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}#toast-container{z-index:1000;pointer-events:none;flex-direction:column;gap:8px;display:flex;position:fixed;top:20px;right:20px}.toast{border-radius:var(--radius);pointer-events:all;align-items:flex-start;gap:10px;max-width:360px;padding:12px 16px;animation:.2s slideIn;display:flex;box-shadow:0 4px 12px #00000026}.toast-success{background:var(--color-success);color:#fff}.toast-error{background:var(--color-error);color:#fff}.toast-message{flex:1;font-size:13px}.toast-close{color:inherit;cursor:pointer;opacity:.8;background:0 0;border:none;padding:0;font-size:18px;line-height:1}.toast-close:hover{opacity:1}.toast-fade{animation:.3s forwards fadeOut}@keyframes slideIn{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}@keyframes fadeOut{to{opacity:0;transform:translate(20px)}}.upload-view{max-width:1100px;margin:0 auto;padding:40px 24px}.upload-header{text-align:center;margin-bottom:40px}.upload-header .app-title{color:var(--color-text);margin-bottom:8px;font-size:28px;font-weight:700}.upload-subtitle{color:var(--color-text-muted);font-size:15px}.dropzone-grid{grid-template-columns:repeat(3,1fr);gap:20px;margin-bottom:32px;display:grid}.dropzone{background:var(--color-surface);border:2px dashed var(--color-border);border-radius:var(--radius);text-align:center;cursor:pointer;-webkit-user-select:none;user-select:none;padding:32px 20px;transition:border-color .15s,background .15s;position:relative}.dropzone:hover{border-color:var(--color-primary)}.dropzone-dragover{border-color:var(--color-primary);background:var(--color-dropzone)}.dropzone-loading{cursor:wait}.dropzone-success{border-color:var(--color-success);cursor:default;background:#f0fdf4;border-style:solid}.dropzone-error{border-color:var(--color-error);background:#fef2f2;border-style:solid}.dropzone-input{display:none}.dropzone-icon{color:var(--color-text-muted);margin-bottom:12px}.dropzone-success .dropzone-icon{color:var(--color-success)}.dropzone-error .dropzone-icon{color:var(--color-error)}.dropzone-label{word-break:break-all;margin-bottom:8px;font-size:15px;font-weight:600}.dropzone-hint{margin-bottom:12px}.dropzone-status{color:var(--color-text-muted);font-size:12px}.dropzone-zeilen{margin-top:4px;display:block}.dropzone-fehler{color:var(--color-negative);margin-top:2px;display:block}.fehler-list{text-align:left;margin-top:6px;list-style:none;display:inline-block}.fehler-list li:before{content:"✗ ";color:var(--color-error)}.upload-actions{text-align:center;margin-bottom:48px}.upload-actions .btn{padding:12px 32px;font-size:15px}.protokoll-section{margin-top:8px}.section-title{color:var(--color-text-muted);margin-bottom:16px;font-size:16px;font-weight:600}.protokoll-table{border-collapse:collapse;background:var(--color-surface);border-radius:var(--radius);width:100%;box-shadow:var(--shadow);overflow:hidden}.protokoll-table th,.protokoll-table td{text-align:left;border-bottom:1px solid var(--color-border);padding:10px 14px;font-size:13px}.protokoll-table th{background:var(--color-bg);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em;font-size:12px;font-weight:600}.protokoll-table tr:last-child td{border-bottom:none}.auswertung-view{flex-direction:column;height:100vh;display:flex;overflow:hidden}.app-header{z-index:100;background:var(--color-surface);border-bottom:1px solid var(--color-border);box-shadow:var(--shadow);justify-content:space-between;align-items:center;padding:12px 24px;display:flex;position:sticky;top:0}.app-title{font-size:20px;font-weight:700}.header-meta{align-items:center;gap:16px;font-size:13px;display:flex}.filter-bar{background:var(--color-surface);border-bottom:1px solid var(--color-border);flex-wrap:wrap;align-items:flex-end;gap:16px;padding:16px 24px;display:flex}.filter-group{flex-direction:column;gap:4px;display:flex}.filter-label{text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);font-size:11px;font-weight:600}.filter-select,.filter-input{border:1px solid var(--color-border);border-radius:var(--radius);height:34px;font:inherit;background:var(--color-surface);color:var(--color-text);outline:none;min-width:140px;padding:0 10px;font-size:13px}.filter-select:focus,.filter-input:focus{border-color:var(--color-border-focus);box-shadow:0 0 0 3px #2563eb26}.filter-group-suche .filter-input{min-width:200px}.radio-group{align-items:center;gap:12px;height:34px;display:flex}.radio-label{cursor:pointer;align-items:center;gap:5px;font-size:13px;display:flex}.radio-label input{cursor:pointer}.checkbox-label{cursor:pointer;align-items:center;gap:6px;height:34px;font-size:13px;display:flex}.checkbox-label input{cursor:pointer;width:15px;height:15px}.metrics-grid{border-bottom:1px solid var(--color-border);background:var(--color-surface);grid-template-columns:repeat(6,1fr);gap:0;display:grid}.metric-card{border-right:1px solid var(--color-border);padding:16px 20px}.metric-card:last-child{border-right:none}.metric-label{text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);margin-bottom:6px;font-size:11px;font-weight:600}.metric-value{white-space:nowrap;font-size:20px;font-weight:700}.metric-muted{color:var(--color-text-muted)}.metric-positive{color:var(--color-positive)}.metric-negative{color:var(--color-negative)}.table-section,#table-container{flex-direction:column;flex:1;min-height:0;display:flex}.table-loading{color:var(--color-text-muted);align-items:center;gap:12px;padding:40px 24px;display:flex}.table-wrap{flex:1;min-height:0;overflow:auto}.main-table{border-collapse:collapse;background:var(--color-surface);width:100%;min-width:1024px}.main-table thead{z-index:10;position:sticky;top:0}.main-table th{background:var(--color-bg);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);border-bottom:2px solid var(--color-border);white-space:nowrap;padding:10px 16px;font-size:12px;font-weight:600}.main-table td{border-bottom:1px solid var(--color-border);white-space:nowrap;padding:9px 16px;font-size:13px}.th-sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.th-sortable:hover{color:var(--color-text);background:#edeff2}.th-active{color:var(--color-primary)}.align-left{text-align:left}.align-right{text-align:right}.data-row{cursor:pointer;transition:background .1s}.data-row:hover,.row-expanded{background:var(--color-row-hover)}.delta-pos{color:var(--color-positive);font-weight:500}.delta-neg{color:var(--color-negative);font-weight:500}.sum-row td{background:var(--color-sum-row);border-top:2px solid var(--color-border);border-bottom:none;font-weight:700}.sum-label{color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em;font-size:12px}.empty-state{text-align:center;color:var(--color-text-muted);padding:48px 24px;font-size:15px}.detail-row td{padding:0}.detail-container{border-left:3px solid var(--color-primary);background:#f8faff;padding:20px 24px}.detail-loading{color:var(--color-text-muted);align-items:center;gap:12px;padding:24px;display:flex}.detail-header{color:var(--color-text-muted);margin-bottom:14px;font-size:13px}.detail-header strong{color:var(--color-text)}.detail-chart-wrap{height:220px;position:relative}@media (width<=1200px){.metrics-grid{grid-template-columns:repeat(3,1fr)}.metric-card:nth-child(3){border-right:none}.metric-card:nth-child(3),.metric-card:nth-child(4),.metric-card:nth-child(5),.metric-card:nth-child(6){border-top:1px solid var(--color-border)}}@media (width<=900px){.dropzone-grid{grid-template-columns:1fr}.filter-bar{flex-direction:column;align-items:stretch}.filter-select,.filter-input{width:100%}}.filters-loading{color:var(--color-text-muted);padding:20px 24px}.login-wrapper{background:var(--color-bg);justify-content:center;align-items:center;min-height:100vh;display:flex}.login-form{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;gap:1.25rem;width:100%;max-width:360px;padding:2.5rem 2rem;display:flex}.login-title{text-align:center;color:var(--color-text);margin:0;font-size:1.25rem;font-weight:700}.login-field{flex-direction:column;gap:.375rem;display:flex}.login-label{color:var(--color-text-muted);font-size:.8125rem;font-weight:500}.login-input{border:1px solid var(--color-border);border-radius:var(--radius);font:inherit;outline:none;padding:.5rem .75rem;font-size:14px;transition:border-color .15s}.login-input:focus{border-color:var(--color-border-focus)}.login-btn{justify-content:center;width:100%}.erweitert-toggle{color:var(--color-text-muted);font:inherit;cursor:pointer;background:0 0;border:none;align-items:center;gap:6px;margin:0 auto 24px;padding:4px 0;font-size:13px;display:flex}.erweitert-toggle:hover{color:var(--color-text)}.erweitert-toggle .toggle-arrow{transition:transform .2s}.erweitert-toggle.open .toggle-arrow{transform:rotate(90deg)}.erweitert-zonen{grid-template-columns:repeat(2,1fr);gap:20px;margin-bottom:24px;display:none}.erweitert-zonen.visible{display:grid}.upload-summary{background:var(--color-surface);border:1px solid var(--color-success);border-radius:var(--radius);box-shadow:var(--shadow);justify-content:space-between;align-items:center;gap:24px;margin-bottom:32px;padding:20px 24px;display:flex}.upload-summary-info{flex-direction:column;gap:4px;display:flex}.upload-summary-title{color:var(--color-success);font-size:15px;font-weight:600}.upload-summary-detail{color:var(--color-text-muted);font-size:13px}.vertreterprofil{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:24px;padding:20px 24px}.vp-header{margin-bottom:16px}.vp-title{font-size:16px;font-weight:700}.vp-metrics{grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px;display:grid}.vp-label{text-transform:uppercase;color:var(--color-text-muted);margin-bottom:4px;font-size:11px}.vp-value{font-size:18px;font-weight:600}.vp-topkunden-title{text-transform:uppercase;color:var(--color-text-muted);margin-bottom:8px;font-size:12px}.vp-topkunden-list{flex-direction:column;gap:6px;list-style:none;display:flex}.vp-kunde{cursor:pointer;border-radius:4px;align-items:center;gap:12px;padding:6px 8px;transition:background .1s;display:flex}.vp-kunde:hover{background:var(--color-row-hover)}.vp-kunde-name{flex:1;font-size:13px}.vp-kunde-umsatz{white-space:nowrap;font-size:13px;font-weight:600}.vp-kunde-delta{white-space:nowrap;text-align:right;min-width:56px;font-size:12px}.load-more{text-align:center;padding:20px 0 8px}
