:root{--primary-color:#6366f1;--primary-hover:#4f46e5;--bg-color:#f3f4f6;--card-bg:#ffffffbf;--text-main:#1f2937;--text-muted:#6b7280;--border-color:#ffffff80}*{box-sizing:border-box;margin:0;padding:0}body{color:var(--text-main);background:linear-gradient(135deg,#a18cd1 0%,#fbc2eb 100%);justify-content:center;align-items:flex-start;min-height:100vh;padding:2rem;font-family:Inter,Pretendard,sans-serif;display:flex}#root{width:100%;max-width:1100px}.app-container{background:var(--card-bg);-webkit-backdrop-filter:blur(20px);border:1px solid var(--border-color);border-radius:24px;flex-direction:column;gap:2rem;padding:3rem;animation:.5s ease-out fadeIn;display:flex;box-shadow:0 20px 40px #0000001a}@keyframes fadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.header{flex-direction:column;gap:.5rem;display:flex}.title-row{justify-content:space-between;align-items:center;display:flex}.header h1{color:#1e1b4b;background:-webkit-linear-gradient(45deg,#3b82f6,#8b5cf6);-webkit-text-fill-color:transparent;-webkit-background-clip:text;font-size:2.2rem;font-weight:800}.header p{color:#4b5563;font-size:1.1rem;font-weight:500}.settings-btn{cursor:pointer;color:#374151;background:#fff;border:1px solid #d1d5db;border-radius:12px;padding:.5rem 1rem;font-weight:600;transition:all .2s;box-shadow:0 2px 5px #0000000d}.settings-btn:hover{background:#f9fafb;transform:translateY(-1px)}.settings-panel{background:#fffffff2;border:1px solid #e5e7eb;border-radius:16px;flex-direction:column;gap:.5rem;padding:1.5rem;animation:.3s ease-out fadeIn;display:flex;box-shadow:0 10px 15px -3px #0000001a}.settings-panel label{color:#111827;margin-top:.5rem;font-weight:700}.settings-panel .help-text{color:#6b7280;margin-bottom:.5rem;font-size:.85rem;line-height:1.5}.settings-panel a{color:var(--primary-color);font-weight:600;text-decoration:none}.settings-panel .divider{border:none;border-top:1px dashed #d1d5db;margin:1rem 0}.roster-textarea{width:100%;color:var(--text-main);resize:vertical;background:#fff;border:1px solid #cbd5e1;border-radius:12px;outline:none;min-height:80px;padding:.8rem 1rem;font-family:inherit;font-size:.95rem;transition:all .2s}.roster-textarea:focus{border-color:var(--primary-color);box-shadow:0 0 0 3px #6366f133}.basic-info-row{gap:1.5rem;margin-bottom:1.5rem;display:flex}.basic-info-row .control-group{flex:1}.control-group{flex-direction:column;gap:.5rem;display:flex}.control-group label{color:#374151;font-size:.95rem;font-weight:700}select,input[type=text],input[type=password]{width:100%;color:var(--text-main);background:#ffffffe6;border:1px solid #fff9;border-radius:12px;outline:none;padding:.8rem 1rem;font-family:inherit;font-size:1rem;transition:all .2s;box-shadow:0 2px 5px #00000005}select:disabled,input:disabled{color:#9ca3af;cursor:not-allowed;background:#f3f4f6cc}select:focus,input:focus,.roster-textarea:focus{border-color:var(--primary-color);box-shadow:0 0 0 3px #6366f133}.units-table-container{background:#fff;border:1px solid #e5e7eb;border-radius:16px;margin-bottom:1.5rem;overflow:hidden;box-shadow:0 4px 6px -1px #0000000d}.units-table{border-collapse:collapse;width:100%}.units-table th{text-align:left;color:#4b5563;background:#f9fafb;border-bottom:2px solid #e5e7eb;padding:1rem;font-size:.95rem;font-weight:700}.units-table td{vertical-align:middle;border-bottom:1px solid #e5e7eb;padding:1rem}.units-table tr:last-child td{border-bottom:none}.units-table tr{transition:background-color .2s}.units-table tr:hover{background-color:#f8fafc}.units-table tr.selected-row{background-color:#f0fdfa}.td-checkbox,.th-checkbox{width:50px;text-align:center!important}input[type=checkbox]{cursor:pointer;width:1.2rem;height:1.2rem;accent-color:var(--primary-color)}.td-unit{color:#1e293b;font-weight:600}.unit-no{color:#94a3b8;margin-right:.5rem}.td-select select{background:#fff;border:1px solid #d1d5db;border-radius:8px;padding:.5rem;font-size:.95rem}.empty-table{color:#9ca3af;text-align:center!important;padding:3rem!important}.action-buttons-row{gap:1rem;width:100%;display:flex}.generate-btn{color:#fff;cursor:pointer;border:none;border-radius:16px;flex:1;padding:1.2rem;font-size:1.05rem;font-weight:800;transition:all .3s}.batch-btn{background:linear-gradient(135deg,#6366f1,#4f46e5);box-shadow:0 8px 20px #6366f14d}.batch-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 10px 25px #6366f166}.comp-btn{background:linear-gradient(135deg,#f59e0b,#d97706);box-shadow:0 8px 20px #f59e0b4d}.comp-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 10px 25px #f59e0b66}.generate-btn:disabled{opacity:.6;cursor:not-allowed;box-shadow:none!important;background:linear-gradient(135deg,#9ca3af,#6b7280)!important;transform:none!important}.generate-btn.loading{background:linear-gradient(135deg,#9ca3af,#6b7280);animation:2s infinite pulse}@keyframes pulse{0%{opacity:.8}50%{opacity:.5}to{opacity:.8}}.result-section{background:#ffffffd9;border-radius:20px;flex-direction:column;gap:1.5rem;padding:2rem;display:flex;box-shadow:inset 0 2px 10px #00000008}.result-header{justify-content:space-between;align-items:center;display:flex}.result-header h2{color:#111827;font-size:1.4rem;font-weight:800}.copy-btn{color:#fff;cursor:pointer;background:#10b981;border:none;border-radius:10px;align-items:center;gap:.5rem;padding:.6rem 1.2rem;font-size:.95rem;font-weight:700;transition:all .2s;display:flex;box-shadow:0 4px 10px #10b98133}.copy-btn:hover:not(:disabled){background:#059669;transform:translateY(-2px)}.copy-btn:disabled{cursor:not-allowed;box-shadow:none;color:#9ca3af;background:#d1d5db}.results-list{flex-direction:column;gap:1rem;display:flex}.result-card{background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:1.5rem;transition:all .3s;box-shadow:0 2px 4px #00000005}.result-card.status-done{border-left:4px solid #10b981}.result-card.status-generating{border-left:4px solid #3b82f6;box-shadow:0 4px 12px #3b82f61a}.result-card.status-pending{opacity:.7;border-left:4px solid #cbd5e1}.result-card.status-error{border-left:4px solid #ef4444}.result-card.comprehensive-card{background:#fffbeb;border-left:4px solid #f59e0b}.result-card-header{justify-content:space-between;align-items:center;margin-bottom:1rem;display:flex}.tabs-container{background:#fff;border-radius:16px;gap:1rem;margin-bottom:1rem;padding:.5rem;display:flex;box-shadow:0 4px 6px -1px #0000000d}.tab-btn{color:#64748b;cursor:pointer;background:0 0;border:none;border-radius:12px;flex:1;padding:1rem;font-size:1.05rem;font-weight:700;transition:all .2s}.tab-btn:hover{background:#f1f5f9}.tab-btn.active{background:var(--primary-color);color:#fff;box-shadow:0 4px 12px #6366f14d}.excel-mode-container{flex-direction:column;gap:2rem;display:flex}.excel-upload-card{text-align:center;background:#fff;border-radius:20px;flex-direction:column;gap:1.5rem;padding:2.5rem;display:flex;box-shadow:0 10px 25px -5px #0000000d}.upload-header{justify-content:space-between;align-items:center;display:flex}.upload-header h2{color:#1e293b;font-size:1.5rem}.download-template-btn{color:#475569;cursor:pointer;background:#f1f5f9;border:1px solid #cbd5e1;border-radius:10px;padding:.6rem 1rem;font-weight:700;transition:all .2s}.download-template-btn:hover{background:#e2e8f0}.upload-desc{color:#64748b;line-height:1.6}.upload-zone{margin-top:1rem}.upload-zone input[type=file]{display:none}.upload-label{cursor:pointer;background:#f8fafc;border:2px dashed #cbd5e1;border-radius:16px;flex-direction:column;align-items:center;gap:1rem;padding:3rem;transition:all .2s;display:flex}.upload-label:hover{border-color:var(--primary-color);background:#eff6ff}.upload-icon{font-size:3rem}.upload-label span:last-child{color:var(--primary-color);font-weight:700}.corrector-mode-container{flex-direction:column;gap:1.5rem;max-width:800px;margin:0 auto;display:flex}.corrector-card{background:#fff;border-radius:20px;padding:2.5rem;box-shadow:0 10px 25px -5px #0000000d}.corrector-card h2{color:#1e293b;margin-bottom:.5rem;font-size:1.5rem}.corrector-textarea{resize:vertical;border:2px solid #e2e8f0;border-radius:12px;width:100%;height:200px;margin-top:1rem;padding:1.5rem;font-family:inherit;font-size:1.05rem;line-height:1.6;transition:border-color .2s}.corrector-textarea:focus{border-color:var(--primary-color);outline:none}.excel-process-card{background:#fff;border-radius:20px;flex-direction:column;gap:1.5rem;padding:2rem;display:flex;box-shadow:0 10px 25px -5px #0000000d}.process-header{border-bottom:1px solid #f1f5f9;justify-content:space-between;align-items:center;padding-bottom:1.5rem;display:flex}.process-header h3{color:#1e293b}.process-actions{gap:1rem;display:flex}.export-btn{color:#fff;cursor:pointer;background:#10b981;border:none;border-radius:12px;padding:.8rem 1.5rem;font-weight:700;transition:all .2s}.export-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 4px 12px #10b9814d}.export-btn:disabled{opacity:.5;cursor:not-allowed}.progress-container{background:#f8fafc;border-radius:12px;flex-direction:column;gap:.8rem;padding:1.5rem;display:flex}.progress-info{color:#475569;justify-content:space-between;font-weight:700;display:flex}.progress-bar-bg{background:#e2e8f0;border-radius:6px;width:100%;height:12px;overflow:hidden}.progress-bar-fill{background:linear-gradient(90deg,#6366f1,#8b5cf6);height:100%;transition:width .3s}.excel-preview-list{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.5rem;max-height:500px;padding-right:.5rem;display:grid;overflow-y:auto}.preview-group-card{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;padding:1rem}.group-card-header{border-bottom:1px solid #e2e8f0;justify-content:space-between;align-items:center;margin-bottom:1rem;padding-bottom:.5rem;display:flex}.group-card-header h4{color:#1e293b;font-size:1.05rem}.status-badge.done{color:#166534;background:#dcfce3}.group-unit-list{flex-direction:column;gap:.5rem;list-style:none;display:flex}.unit-item{background:#fff;border:1px solid #e2e8f0;border-radius:8px;justify-content:space-between;align-items:center;padding:.5rem;font-size:.9rem;display:flex}.unit-info{flex-direction:column;gap:.2rem;display:flex}.unit-name{color:#334155;font-weight:600}.unit-tags{color:#94a3b8;font-size:.8rem}.done-check{color:#10b981;font-weight:900}.loading-dots{color:#f59e0b;font-weight:900;animation:1s infinite pulse}.fade-in{animation:.3s ease-out fadeIn}.result-card-header h3{color:#1e293b;font-size:1.1rem;font-weight:700}.res-no{color:var(--primary-color);margin-right:.4rem}.status-badge{border-radius:20px;padding:.3rem .6rem;font-size:.85rem;font-weight:600}.status-badge.generating{color:#1d4ed8;background:#dbeafe}.status-badge.pending{color:#64748b;background:#f1f5f9}.status-badge.error{color:#b91c1c;background:#fee2e2}.char-counter{background:#f3f4f6;border-radius:12px;padding:.3rem .8rem;font-size:.9rem;font-weight:700}.char-counter.valid{color:#059669;background:#d1fae5}.char-counter.invalid{color:#dc2626;background:#fee2e2}.result-card-body p{color:#334155;word-break:keep-all;font-size:1.05rem;line-height:1.6}.result-card-body .pending-text{color:#94a3b8;font-style:italic}.result-card-body .error-text{color:#ef4444}.skeleton-loader{flex-direction:column;gap:.8rem;width:100%;display:flex}.skeleton-line{background:linear-gradient(90deg,#e2e8f0 4%,#f1f5f9 25%,#e2e8f0 36%) 0 0/1000px 100%;border-radius:8px;height:1.2rem;animation:1.5s linear infinite shimmer}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}@media (width<=768px){.basic-info-row{flex-direction:column;gap:1rem}}
