:root{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,sans-serif;line-height:1.5;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;min-width:320px;min-height:100vh}#root{min-height:100vh}*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,sans-serif;background:#f5f5f5;color:#333;line-height:1.6}.app{max-width:1000px;margin:0 auto;padding:2rem}header{text-align:center;margin-bottom:2rem}.header-top{display:flex;justify-content:space-between;align-items:center;padding:0 .5rem}.header-top h1{margin:0;flex:1;text-align:center}header h1{font-size:2rem;color:#1a1a2e}header p{color:#666;margin-top:.25rem}.reset-btn{display:flex;align-items:center;gap:.35rem;padding:.4rem .75rem;background:transparent;border:1px solid #dc2626;border-radius:8px;color:#dc2626;font-size:.8rem;font-weight:500;cursor:pointer;transition:all .2s;white-space:nowrap}.reset-btn:hover{background:#fef2f2;border-color:#b91c1c}.theme-toggle{background:#fff;border:1px solid #ddd;border-radius:8px;padding:.5rem;cursor:pointer;color:#333;display:flex;align-items:center;justify-content:center;transition:all .2s;box-shadow:0 2px 4px #0000000d}.theme-toggle:hover{background:#f5f5f5;border-color:#ccc}.save-indicator{display:inline-block;margin-top:.5rem;padding:.25rem .75rem;background:#d1fae5;color:#059669;border-radius:12px;font-size:.75rem;font-weight:500;animation:fadeInOut 1.5s ease-in-out}@keyframes fadeInOut{0%{opacity:0;transform:translateY(-5px)}20%{opacity:1;transform:translateY(0)}80%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-5px)}}.controls-bar{display:flex;gap:1rem;margin-bottom:1.5rem;padding:1rem 1.25rem;background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000000d;flex-wrap:wrap}.control-group{display:flex;align-items:center;gap:.75rem;flex:1;min-width:220px}.control-group label{font-size:.9rem;color:#555;white-space:nowrap}.control-group select{flex:1;padding:.5rem .75rem;border:1px solid #ddd;border-radius:6px;font-size:.9rem;cursor:pointer;background:#fff}.control-group select:focus{outline:none;border-color:#1a1a2e}main{display:grid;grid-template-columns:1fr 300px;gap:2rem}.form-section{display:flex;flex-direction:column;gap:1.5rem}.form-card{background:#fff;padding:1.5rem;border-radius:12px;box-shadow:0 2px 8px #0000000d}.form-card h2{font-size:1.25rem;margin-bottom:1rem;color:#1a1a2e}.form-group{margin-bottom:1rem}.form-group label{display:block;font-size:.875rem;color:#555;margin-bottom:.25rem}.form-group input{width:100%;padding:.625rem;border:1px solid #ddd;border-radius:6px;font-size:1rem}.form-group input:focus{outline:none;border-color:#1a1a2e}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.helper{font-size:.8rem;color:#666;margin-top:.4rem}.upload-zone.compact{margin-bottom:1rem}.file-input{display:none}.upload-label.compact{display:flex;align-items:center;gap:.6rem;padding:.6rem 1rem;border:1.5px dashed #d1d5db;border-radius:8px;cursor:pointer;transition:all .2s;background:#fafafa}.upload-label.compact:hover{border-color:#1a1a2e;background:#f5f5f5}.upload-label.compact svg{color:#9ca3af;flex-shrink:0}.upload-label.compact span{color:#6b7280;font-size:.875rem}.upload-progress.compact{margin-bottom:1rem;padding:.75rem 1rem;background:#f8f9fa;border-radius:8px}.progress-info{display:flex;justify-content:space-between;margin-bottom:.4rem;font-size:.8rem}.progress-info span:first-child{color:#374151;font-weight:500}.progress-info span:last-child{color:#1a1a2e;font-weight:600}.progress-bar{height:6px;background:#e5e7eb;border-radius:3px;overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,#1a1a2e,#4f46e5);border-radius:3px;transition:width .3s ease}.upload-success.compact{margin-bottom:1rem;padding:.6rem .875rem;background:linear-gradient(135deg,#f0fdf4,#ecfeff);border:1px solid #bbf7d0;border-radius:8px}.success-header{display:flex;align-items:center;gap:.5rem}.success-header svg{color:#16a34a}.success-header span{color:#16a34a;font-weight:600;font-size:.875rem;flex:1}.clear-btn{background:none;border:none;font-size:1.25rem;color:#9ca3af;cursor:pointer;padding:0;line-height:1}.clear-btn:hover{color:#dc2626}.file-name{font-family:SF Mono,Monaco,Courier New,monospace;font-size:.75rem;color:#374151;margin-top:.35rem}.upload-error{display:flex;align-items:center;gap:.5rem;margin-bottom:1rem;padding:.6rem .875rem;background:#fef2f2;border:1px solid #fecaca;border-radius:8px;color:#dc2626;font-size:.875rem}.upload-error svg{flex-shrink:0}.upload-error span{flex:1}.summary{background:#fff;padding:1.5rem;border-radius:12px;box-shadow:0 2px 8px #0000000d;height:fit-content;position:sticky;top:2rem}.summary h2{font-size:1.25rem;margin-bottom:1rem;color:#1a1a2e}.summary-row{display:flex;justify-content:space-between;padding:.4rem 0;font-size:.875rem}.summary-row.total{font-weight:600;font-size:.95rem}.summary-row.sub-row{font-size:.8rem;color:#888;padding-left:.5rem}.summary-row.overtime{color:#16a34a;background:#16a34a14;padding:.25rem .5rem;border-radius:4px;margin:.15rem 0}.summary-row.balance{color:#e74c3c;font-weight:600}.summary-row.balance.refund{color:#16a34a}.summary hr{border:none;border-top:1px solid #eee;margin:.5rem 0}.effective-rate-section{margin-top:.75rem;padding:.75rem;background:#f8f9fa;border-radius:8px}.effective-rate-row{display:flex;justify-content:space-between;font-size:.8rem;color:#555;padding:.2rem 0}.effective-rate-row span:last-child{font-weight:600;color:#1a1a2e}.quarterly-section{margin-top:.75rem;padding:.875rem;background:linear-gradient(135deg,#eff6ff,#f0f9ff);border:1px solid #bfdbfe;border-radius:8px}.quarterly-section h3{font-size:.8rem;text-transform:uppercase;letter-spacing:.05em;color:#3b82f6;margin-bottom:.5rem;font-weight:600}.quarterly-amount{font-size:1.4rem;font-weight:700;color:#1d4ed8}.quarterly-period{font-size:.8rem;font-weight:400;color:#3b82f6}.quarterly-dates{font-size:.75rem;color:#60a5fa;margin-top:.25rem}.export-btn{width:100%;display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.875rem 1rem;margin-top:1rem;background:linear-gradient(135deg,#1a1a2e,#2d2d4a);color:#fff;border:none;border-radius:8px;font-size:.9rem;font-weight:600;cursor:pointer;transition:all .2s}.export-btn:hover{transform:translateY(-1px);box-shadow:0 4px 12px #1a1a2e4d}.disclaimer{font-size:.72rem;color:#999;margin-top:.875rem;line-height:1.4}@media(max-width:768px){main{grid-template-columns:1fr}.summary{position:static}.form-row{grid-template-columns:1fr}.controls-bar{flex-direction:column;gap:.75rem}.control-group{flex-direction:column;align-items:flex-start}.control-group select{width:100%}}body.dark{background:#0d1117;color:#e6edf3}body.dark .app{background:#0d1117}body.dark header{background:#161b22;padding:1.5rem;border-radius:12px;margin-bottom:1.5rem}body.dark header h1{color:#e6edf3}body.dark header p{color:#8b949e}body.dark .header-top{display:flex;justify-content:space-between;align-items:center;padding:0 .5rem}body.dark .header-top h1{margin:0;flex:1;text-align:center}body.dark .theme-toggle{background:#21262d;border:1px solid #30363d;border-radius:8px;padding:.5rem;cursor:pointer;color:#e6edf3;display:flex;align-items:center;justify-content:center;transition:all .2s}body.dark .theme-toggle:hover{background:#30363d;border-color:#484f58}body.dark .reset-btn{border-color:#f85149;color:#f85149}body.dark .reset-btn:hover{background:#2d1b1b;border-color:#da3633}body.dark .controls-bar{background:#161b22;border:1px solid #30363d}body.dark .control-group label{color:#8b949e}body.dark .control-group select{background:#21262d;border-color:#30363d;color:#e6edf3}body.dark .control-group select:focus{border-color:#238636}body.dark .form-card{background:#161b22;border:1px solid #30363d}body.dark .form-card h2{color:#e6edf3}body.dark .form-group label,body.dark .helper{color:#8b949e}body.dark .form-group input{background:#21262d;border-color:#30363d;color:#e6edf3}body.dark .form-group input:focus{border-color:#238636}body.dark .upload-label.compact{background:#21262d;border-color:#30363d}body.dark .upload-label.compact:hover{background:#30363d}body.dark .upload-label.compact span,body.dark .upload-label.compact svg{color:#8b949e}body.dark .upload-progress.compact{background:#21262d}body.dark .progress-info span:first-child{color:#e6edf3}body.dark .progress-bar{background:#30363d}body.dark .upload-success.compact{background:linear-gradient(135deg,#0d1a10,#0c1a1c);border-color:#238636}body.dark .file-name{color:#e6edf3}body.dark .upload-error{background:#2d1b1b;border-color:#da3633;color:#f85149}body.dark .summary{background:#161b22;border:1px solid #30363d}body.dark .summary h2{color:#e6edf3}body.dark .summary-row{color:#8b949e}body.dark .summary hr{border-color:#30363d}body.dark .summary-row.overtime{background:#23863626;color:#3fb950}body.dark .summary-row.total{color:#e6edf3}body.dark .summary-row.balance{color:#f85149}body.dark .summary-row.balance.refund{color:#3fb950}body.dark .effective-rate-section{background:#21262d}body.dark .effective-rate-row{color:#8b949e}body.dark .effective-rate-row span:last-child{color:#e6edf3}body.dark .quarterly-section{background:linear-gradient(135deg,#0d1b2e,#0d1f2e);border-color:#1d4ed8}body.dark .quarterly-section h3{color:#60a5fa}body.dark .quarterly-amount{color:#93c5fd}body.dark .quarterly-period{color:#60a5fa}body.dark .quarterly-dates{color:#3b82f6}body.dark .export-btn{background:linear-gradient(135deg,#238636,#1a7f37)}body.dark .disclaimer{color:#6e7681}
