:root{color:#1a1a1a;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#f5f7fa;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,sans-serif;font-weight:400;line-height:1.5}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;margin:0}#root{min-height:100vh}h1,h2,h3,h4,h5,h6{margin:0;font-weight:600}button,select{font-family:inherit}.app{flex-direction:column;max-width:900px;min-height:100vh;margin:0 auto;padding:2rem;display:flex}.app-header{text-align:center;margin-bottom:2rem}.app-header h1{color:#1a1a1a;margin:0;font-size:2rem}.app-header .subtitle{color:#666;margin:.5rem 0 0;font-size:.9rem}.app-main{flex-direction:column;flex:1;gap:1.5rem;display:flex}.app-footer{text-align:center;color:#888;border-top:1px solid #e0e0e0;margin-top:2rem;padding-top:1rem;font-size:.85rem}.file-uploader{text-align:center;cursor:pointer;background:#fafafa;border:2px dashed #ccc;border-radius:12px;padding:3rem 2rem;transition:all .2s}.file-uploader:hover{background:#f0f7ff;border-color:#4a90d9}.file-uploader.drag-over{background:#e6f0ff;border-color:#4a90d9;transform:scale(1.01)}.file-uploader.disabled{opacity:.6;cursor:not-allowed}.file-uploader-content{flex-direction:column;align-items:center;gap:.5rem;display:flex}.file-uploader .file-icon{font-size:3rem}.file-uploader p{color:#555;margin:0}.file-info{background:#f0f7ff;border:1px solid #d0e3f7;border-radius:8px;align-items:center;gap:1rem;padding:.75rem 1rem;display:flex}.file-name{color:#1a1a1a;font-weight:600}.row-count{color:#666;font-size:.9rem}.reset-button{cursor:pointer;background:#fff;border:1px solid #ccc;border-radius:6px;margin-left:auto;padding:.5rem 1rem;font-size:.85rem;transition:all .2s}.reset-button:hover{background:#f5f5f5;border-color:#999}.date-selector{background:#fff;border:1px solid #e0e0e0;border-radius:8px;align-items:center;gap:1rem;padding:1rem;display:flex}.date-selector label{color:#333;align-items:center;gap:.5rem;font-weight:500;display:flex}.date-selector .calendar-icon{font-size:1.25rem}.date-selector select{cursor:pointer;background:#fff;border:1px solid #ccc;border-radius:6px;flex:1;max-width:300px;padding:.75rem 1rem;font-size:1rem}.date-selector select:focus{border-color:#4a90d9;outline:none;box-shadow:0 0 0 3px #4a90d926}.data-preview{background:#fff;border:1px solid #e0e0e0;border-radius:8px;overflow:hidden}.data-preview h3{background:#f5f5f5;border-bottom:1px solid #e0e0e0;margin:0;padding:1rem;font-size:1rem}.preview-stats{color:#666;border-bottom:1px solid #e0e0e0;gap:2rem;padding:.75rem 1rem;font-size:.85rem;display:flex}.no-changes{text-align:center;color:#888;padding:1.5rem}.preview-table-wrapper{overflow-x:auto}.preview-table{border-collapse:collapse;width:100%;font-size:.9rem}.preview-table th,.preview-table td{text-align:left;border-bottom:1px solid #e0e0e0;padding:.75rem 1rem}.preview-table th{color:#333;background:#f9f9f9;font-weight:600}.preview-table tr:last-child td{border-bottom:none}.preview-table tr:hover{background:#fafafa}.preview-table .original-value{color:#999;text-decoration:line-through}.preview-table .transformed-value{color:#2d8a3e;font-weight:500}.download-button{color:#fff;cursor:pointer;background:#4a90d9;border:none;border-radius:8px;justify-content:center;align-items:center;gap:.5rem;width:100%;padding:1rem 2rem;font-size:1.1rem;font-weight:600;transition:all .2s;display:flex}.download-button:hover:not(:disabled){background:#3a7bc8;transform:translateY(-1px);box-shadow:0 4px 12px #4a90d94d}.download-button:disabled{cursor:not-allowed;background:#ccc}.download-button .download-icon{font-size:1.25rem}.error-message{color:#c00;background:#fff5f5;border:1px solid #fcc;border-radius:8px;align-items:center;gap:.5rem;padding:1rem;display:flex}.loading-overlay{z-index:1000;background:#ffffffe6;flex-direction:column;justify-content:center;align-items:center;gap:1rem;display:flex;position:fixed;inset:0}.loading-spinner{border:3px solid #e0e0e0;border-top-color:#4a90d9;border-radius:50%;width:40px;height:40px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (max-width:600px){.app{padding:1rem}.file-info{flex-wrap:wrap}.reset-button{width:100%;margin-left:0}.date-selector{flex-direction:column;align-items:stretch}.date-selector select{max-width:none}.preview-table th,.preview-table td{padding:.5rem;font-size:.8rem}}
