:root{--bg-primary: #0f172a;--bg-secondary: #1e293b;--bg-card: #334155;--text-primary: #f1f5f9;--text-secondary: #94a3b8;--accent-cyan: #06b6d4;--accent-green: #22c55e;--accent-red: #ef4444;--accent-blue: #3b82f6;--border-color: #475569}*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,Segoe UI,Roboto,sans-serif;background:linear-gradient(135deg,var(--bg-primary) 0%,#1a1a2e 100%);min-height:100vh;color:var(--text-primary)}.container{max-width:1100px;margin:0 auto;padding:30px 20px}header{text-align:center;margin-bottom:40px;padding:30px;background:linear-gradient(135deg,#06b6d426,#22c55e1a);border-radius:20px;border:1px solid rgba(6,182,212,.3)}header h1{font-size:2.5rem;background:linear-gradient(135deg,var(--accent-cyan),var(--accent-green));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;font-weight:700}.controls{display:flex;gap:16px;justify-content:center;margin-bottom:30px;flex-wrap:wrap;padding:24px;background:var(--bg-secondary);border-radius:16px;border:1px solid var(--border-color)}.input-group{display:flex;flex-direction:column;gap:8px}.input-group label{font-weight:600;color:var(--text-secondary);font-size:.85rem;text-transform:uppercase;letter-spacing:.5px}.input-group input,.input-group select{padding:12px 16px;background:var(--bg-card);border:1px solid var(--border-color);border-radius:10px;color:var(--text-primary);font-size:1rem;min-width:160px;transition:all .2s}.input-group input:focus,.input-group select:focus{outline:none;border-color:var(--accent-cyan);box-shadow:0 0 0 3px #06b6d433}.input-group select option{background:var(--bg-secondary)}button{padding:12px 24px;border:none;border-radius:10px;cursor:pointer;font-size:1rem;font-weight:600;transition:all .2s;display:flex;align-items:center;gap:8px}button:disabled{opacity:.5;cursor:not-allowed}.controls button{background:linear-gradient(135deg,var(--accent-blue),#2563eb);color:#fff;align-self:flex-end}.controls button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 4px 12px #3b82f666}.data-source{background:var(--bg-secondary);border-radius:16px;padding:24px;margin-bottom:30px;border:1px solid var(--border-color)}.data-source h3{color:var(--text-primary);margin-bottom:20px;font-size:1.2rem;display:flex;align-items:center;gap:10px}.source-options{display:flex;gap:16px;margin-bottom:20px;flex-wrap:wrap}.source-option{display:flex;align-items:center;gap:10px;cursor:pointer;padding:16px 24px;background:var(--bg-card);border:2px solid var(--border-color);border-radius:12px;transition:all .2s;flex:1;min-width:200px}.source-option:hover{border-color:var(--accent-cyan)}.source-option:has(input:checked){border-color:var(--accent-cyan);background:#06b6d426}.source-option input{margin:0;width:18px;height:18px;accent-color:var(--accent-cyan)}.csv-controls{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:16px}.csv-controls input[type=file]{padding:10px;background:var(--bg-card);border:1px dashed var(--border-color);border-radius:8px;color:var(--text-secondary)}.csv-hint{font-size:.85rem;color:var(--text-secondary)}.button-row{display:flex;gap:12px;justify-content:center;margin-top:20px;flex-wrap:wrap}.generate-btn{background:linear-gradient(135deg,var(--accent-green),#16a34a);color:#fff;padding:14px 32px;font-size:1.1rem}.generate-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 4px 12px #22c55e66}.clear-btn{background:linear-gradient(135deg,var(--accent-red),#dc2626);color:#fff}.clear-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 4px 12px #ef444466}.import-result{margin-top:16px;padding:14px 18px;border-radius:10px;font-weight:500}.import-result.success{background:#22c55e26;border:1px solid rgba(34,197,94,.4);color:var(--accent-green)}.import-result.error{background:#ef444426;border:1px solid rgba(239,68,68,.4);color:var(--accent-red)}.status{text-align:center;padding:18px;border-radius:12px;margin-bottom:24px;font-weight:600;font-size:1.1rem}.status.ok{background:#22c55e26;border:1px solid rgba(34,197,94,.4);color:var(--accent-green)}.status.warning{background:#eab30826;border:1px solid rgba(234,179,8,.4);color:#eab308}.status.out_of_control{background:#ef444426;border:1px solid rgba(239,68,68,.4);color:var(--accent-red)}.status-label{margin-right:8px}.status .rules{font-size:.9rem;opacity:.8}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:16px;margin-bottom:24px}.stat{background:var(--bg-secondary);padding:20px;border-radius:12px;text-align:center;border:1px solid var(--border-color);transition:all .2s}.stat:hover{transform:translateY(-4px);border-color:var(--accent-cyan)}.stat .label{display:block;color:var(--text-secondary);font-size:.8rem;text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px}.stat .value{font-size:1.4rem;font-weight:700;color:var(--text-primary)}.chart-container{background:var(--bg-secondary);border-radius:16px;padding:24px;margin-bottom:30px;border:1px solid var(--border-color)}.chart{height:450px;width:100%}.data-table-container{background:var(--bg-secondary);border-radius:16px;padding:24px;margin-top:24px;border:1px solid var(--border-color);overflow-x:auto}.data-table-container h3{margin-bottom:20px;color:var(--text-primary);font-size:1.2rem}.data-table{width:100%;border-collapse:collapse;font-size:.95rem}.data-table th,.data-table td{padding:14px 16px;text-align:center;border-bottom:1px solid var(--border-color)}.data-table th{background:var(--bg-card);font-weight:600;color:var(--text-secondary);text-transform:uppercase;font-size:.8rem;letter-spacing:.5px}.data-table tbody tr:hover{background:#ffffff08}.data-table td{color:var(--text-primary);font-family:SF Mono,Monaco,monospace}.legacy-section{margin-top:40px;padding-top:24px;border-top:1px solid var(--border-color)}.legacy-section summary{cursor:pointer;font-weight:600;color:var(--text-secondary);padding:12px;border-radius:8px;transition:all .2s}.legacy-section summary:hover{background:var(--bg-secondary);color:var(--text-primary)}@media (max-width: 768px){.controls{flex-direction:column;align-items:stretch}.input-group input,.input-group select{width:100%}.source-options,.button-row{flex-direction:column}.button-row button{width:100%;justify-content:center}}
