:root{--color-bg:#0f172a;--color-surface:#1e293b;--color-surface-hover:#334155;--color-border:#334155;--color-text:#e2e8f0;--color-text-muted:#94a3b8;--color-primary:#3b82f6;--color-primary-hover:#2563eb;--color-success:#22c55e;--color-warning:#f59e0b;--color-error:#ef4444;--radius:8px;--spacing:16px}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--color-bg);color:var(--color-text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.6}.app{max-width:960px;padding:var(--spacing);flex-direction:column;min-height:100vh;margin:0 auto;display:flex}.app__header{padding:var(--spacing) 0;border-bottom:1px solid var(--color-border);margin-bottom:calc(var(--spacing) * 2);align-items:center;gap:12px;display:flex}.app__header h1{font-size:1.4rem;font-weight:600}.app__header p{color:var(--color-text-muted);font-size:.85rem}.app__main{flex:1}.app__section{margin-bottom:calc(var(--spacing) * 2)}.app__section h2{margin-bottom:var(--spacing);color:var(--color-text-muted);font-size:1.1rem;font-weight:600}.app__uploaders{gap:var(--spacing);grid-template-columns:1fr 1fr;display:grid}@media (width<=640px){.app__uploaders{grid-template-columns:1fr}}.app__error{border:1px solid var(--color-error);border-radius:var(--radius);padding:var(--spacing);margin-bottom:var(--spacing);color:var(--color-error);background:#ef44441a}.app__hint{color:var(--color-text-muted);margin-top:8px;font-size:.85rem}.app__footer{padding:var(--spacing) 0;border-top:1px solid var(--color-border);text-align:center;color:var(--color-text-muted);margin-top:auto;font-size:.8rem}.file-uploader{border-radius:var(--radius);padding:var(--spacing);transition:all .2s}.file-uploader--dropzone{border:2px dashed var(--color-border);cursor:pointer;min-height:140px;color:var(--color-text-muted);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:8px;display:flex}.file-uploader--dropzone:hover,.file-uploader--dragging{border-color:var(--color-primary);color:var(--color-primary);background:#3b82f60d}.file-uploader--selected{background:var(--color-surface);border:1px solid var(--color-border);justify-content:space-between;align-items:center;display:flex}.file-uploader__input{display:none}.file-uploader__label{font-size:.9rem;font-weight:600}.file-uploader__desc{font-size:.8rem}.file-uploader__info{align-items:center;gap:12px;display:flex}.file-uploader__name{font-size:.9rem;font-weight:500}.file-uploader__size{color:var(--color-text-muted);font-size:.8rem}.file-uploader__clear{color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:4px}.file-uploader__clear:hover{color:var(--color-error);background:#ef44441a}.file-uploader__badge{text-transform:uppercase;letter-spacing:.5px;vertical-align:middle;border:1px solid;border-radius:12px;align-items:center;gap:4px;margin-left:8px;padding:2px 8px;font-size:.72rem;font-weight:600;display:inline-flex}.data-preview__summary{background:var(--color-surface);border-radius:var(--radius);padding:var(--spacing);margin-bottom:var(--spacing)}.data-preview__summary h3{margin-bottom:12px;font-size:1rem}.data-preview__meta{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:4px 16px;margin-bottom:12px;font-size:.85rem;display:grid}.data-preview__meta strong{color:var(--color-text-muted)}.data-preview__companies{margin-bottom:12px;font-size:.85rem}.data-preview__companies h4{margin-bottom:4px;font-size:.9rem}.data-preview__coverage{margin-top:12px}.data-preview__coverage-bar{background:var(--color-border);border-radius:3px;height:6px;margin-bottom:4px;overflow:hidden}.data-preview__coverage-fill{background:var(--color-primary);border-radius:3px;height:100%;transition:width .3s}.data-preview__coverage p{font-size:.85rem}.data-preview__warning{color:var(--color-warning);align-items:center;gap:6px;margin-top:4px;display:flex}.data-preview__forms h3{margin-bottom:12px;font-size:1rem}.data-preview__form{background:var(--color-surface);border-radius:var(--radius);margin-bottom:8px;overflow:hidden}.data-preview__form-header{width:100%;color:var(--color-text);cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:8px;padding:10px 14px;font-size:.9rem;display:flex}.data-preview__form-header:hover{background:var(--color-surface-hover)}.data-preview__form-title{flex:1;font-weight:600}.data-preview__form-stats{gap:8px;display:flex}.data-preview__form-body{padding:0 14px 14px}.data-preview__table{border-collapse:collapse;width:100%;font-size:.8rem}.data-preview__table th{text-align:left;border-bottom:1px solid var(--color-border);color:var(--color-text-muted);padding:6px 8px;font-weight:500}.data-preview__table td{border-bottom:1px solid #33415580;padding:5px 8px}.data-preview__value{font-variant-numeric:tabular-nums;text-align:right}.data-preview__unmapped{color:var(--color-text-muted);margin-top:8px;font-size:.8rem}.data-preview__unmapped summary{cursor:pointer;color:var(--color-warning);margin-bottom:4px}.data-preview__unmapped ul{padding-left:12px;list-style:none}.data-preview__unmapped li{padding:2px 0}.badge{background:var(--color-surface-hover);border-radius:10px;align-items:center;gap:4px;padding:2px 8px;font-size:.75rem;display:inline-flex}.badge--success{color:var(--color-success);background:#22c55e26}.badge--warning{color:var(--color-warning);background:#f59e0b26}.badge--error{color:var(--color-error);background:#ef444426}.template-selector{gap:var(--spacing);grid-template-columns:1fr 1fr;display:grid}@media (width<=640px){.template-selector{grid-template-columns:1fr}}.template-selector__item{background:var(--color-surface);border:2px solid var(--color-border);border-radius:var(--radius);color:var(--color-text);cursor:pointer;text-align:left;align-items:flex-start;gap:12px;padding:14px;transition:all .2s;display:flex}.template-selector__item:hover{border-color:var(--color-primary)}.template-selector__item--active{border-color:var(--color-primary);background:#3b82f614}.template-selector__name{margin-bottom:2px;font-size:.9rem;font-weight:600}.template-selector__file{color:var(--color-text-muted);word-break:break-all;font-size:.75rem}.template-selector__count{color:var(--color-text-muted);margin-top:4px;font-size:.75rem}.data-preview__stats{gap:8px;margin-top:12px;display:flex}.data-preview__section{background:var(--color-surface);border-radius:var(--radius);padding:var(--spacing);margin-top:var(--spacing)}.data-preview__section h4{margin-bottom:12px;font-size:.95rem}.data-preview__hint{color:var(--color-text-muted);margin-bottom:12px;font-size:.8rem}.data-preview__manual-fields{grid-template-columns:1fr 1fr;gap:12px;display:grid}@media (width<=640px){.data-preview__manual-fields{grid-template-columns:1fr}}.data-preview__manual-field{flex-direction:column;gap:4px;display:flex}.data-preview__manual-field label{font-size:.85rem;font-weight:500}.data-preview__cell-ref{color:var(--color-text-muted);margin-left:6px;font-size:.75rem}.data-preview__manual-field input{background:var(--color-bg);border:1px solid var(--color-border);color:var(--color-text);border-radius:6px;padding:8px 10px;font-size:.9rem}.data-preview__manual-field input:focus{border-color:var(--color-primary);outline:none}.data-preview__missing{color:var(--color-text-muted);font-size:.85rem}.data-preview__missing summary{cursor:pointer;color:var(--color-warning)}.data-preview__missing ul{padding:8px 0 0 12px;list-style:none}.data-preview__missing li{padding:3px 0}.btn{border-radius:var(--radius);cursor:pointer;border:none;align-items:center;gap:8px;padding:10px 20px;font-size:.95rem;font-weight:500;transition:all .2s;display:inline-flex}.btn--primary{background:var(--color-primary);color:#fff}.btn--primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn--secondary{background:var(--color-surface-hover);color:var(--color-text);border:1px solid var(--color-border)}.btn--secondary:hover:not(:disabled){background:var(--color-border)}.app__export-buttons{flex-wrap:wrap;gap:12px;display:flex}.btn:disabled{opacity:.6;cursor:not-allowed}code{background:var(--color-surface-hover);border-radius:3px;padding:1px 5px;font-size:.85em}.spin{animation:1s linear infinite spin}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.app__admin-btn{margin-left:auto}.app__info-banner{border-radius:var(--radius);margin-bottom:var(--spacing);color:var(--color-text-muted);background:#3b82f614;border:1px solid #3b82f640;align-items:flex-start;gap:10px;padding:12px 14px;font-size:.85rem;line-height:1.5;display:flex}.app__info-banner svg{color:var(--color-primary);flex-shrink:0;margin-top:2px}.app__info-banner strong{color:var(--color-text)}.app__warning{border-radius:var(--radius);padding:var(--spacing);margin-bottom:calc(var(--spacing) * 2);background:#f59e0b14;border:1px solid #f59e0b4d;align-items:flex-start;gap:12px;display:flex}.app__warning svg{color:var(--color-warning);flex-shrink:0;margin-top:2px}.app__warning strong{color:var(--color-warning);margin-bottom:4px;display:block}.app__warning p{color:var(--color-text-muted);font-size:.9rem}.app__warning a{color:var(--color-primary);text-decoration:underline}.app__hint--warning{color:var(--color-warning);align-items:center;gap:6px;margin-top:10px;font-size:.85rem;display:flex}.app__hint--success{color:var(--color-success);margin-top:10px;font-size:.85rem}.btn--small{gap:5px;padding:6px 12px;font-size:.8rem}.btn--outline{border:1px solid var(--color-border);color:var(--color-text);background:0 0}.btn--outline:hover{border-color:var(--color-primary);color:var(--color-primary)}.btn--danger{color:var(--color-error);background:#ef44441f;border:1px solid #0000}.btn--danger:hover{border-color:var(--color-error);background:#ef444433}.admin{max-width:720px;padding:var(--spacing);margin:0 auto}.admin__header{margin-bottom:calc(var(--spacing) * 2);justify-content:space-between;align-items:center;display:flex}.admin__back{color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;align-items:center;gap:6px;padding:6px 0;font-size:.9rem;display:inline-flex}.admin__back:hover{color:var(--color-primary)}.admin__badge{color:var(--color-primary);background:#3b82f626;border-radius:12px;align-items:center;gap:4px;padding:4px 10px;font-size:.75rem;font-weight:600;display:inline-flex}.admin__title{margin-bottom:8px;font-size:1.3rem;font-weight:600}.admin__subtitle{color:var(--color-text-muted);margin-bottom:calc(var(--spacing) * 2);font-size:.9rem}.admin__login{text-align:center;max-width:400px;margin:60px auto}.admin__login-icon{color:var(--color-primary);margin-bottom:var(--spacing)}.admin__login h2{margin-bottom:8px;font-size:1.2rem}.admin__hint{color:var(--color-text-muted);margin-bottom:var(--spacing);font-size:.85rem}.admin__form{text-align:left;margin-top:calc(var(--spacing) * 1.5);flex-direction:column;gap:14px;display:flex}.admin__field{flex-direction:column;gap:4px;display:flex}.admin__field label{color:var(--color-text-muted);font-size:.85rem;font-weight:500}.admin__field input{background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-text);border-radius:6px;padding:10px 12px;font-size:.95rem}.admin__field input:focus{border-color:var(--color-primary);outline:none}.admin__error{color:var(--color-error);font-size:.85rem}.admin__success{border-radius:var(--radius);margin-bottom:var(--spacing);color:var(--color-success);background:#22c55e1a;border:1px solid #22c55e4d;align-items:center;gap:8px;padding:10px 14px;font-size:.9rem;display:flex}.admin__templates{gap:var(--spacing);flex-direction:column;display:flex}.admin__template-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:calc(var(--spacing) * 1.25)}.admin__template-card h3{margin-bottom:4px;font-size:1rem}.admin__template-desc{color:var(--color-text-muted);margin-bottom:var(--spacing);font-size:.85rem}.admin__template-status{justify-content:space-between;align-items:center;gap:var(--spacing);border-radius:6px;padding:10px 14px;display:flex}.admin__template-status--ok{background:#22c55e0f;border:1px solid #22c55e33}.admin__template-info{color:var(--color-success);align-items:center;gap:10px;display:flex}.admin__template-info div{flex-direction:column;display:flex}.admin__template-name{color:var(--color-text);font-size:.9rem;font-weight:500}.admin__template-date{color:var(--color-text-muted);font-size:.75rem}.admin__template-actions{align-items:center;gap:8px;display:flex}.admin__template-actions .btn,.admin__template-actions label{cursor:pointer}
