@import "https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700&display=swap";:root{--primary:#00a859;--primary-hover:#008b49;--primary-light:#e6f7ef;--primary-glow:#00a85933;--dark:#0f172a;--slate:#1e293b;--muted:#64748b;--border:#e2e8f0;--bg-main:#f1f5f9;--bg-card:#fff;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--shadow-sm:0 1px 3px #0000000d;--shadow-md:0 4px 12px #00000014;--shadow-lg:0 10px 25px #0000001f}[data-theme=dark]{--primary:#10b981;--primary-hover:#059669;--primary-light:#10b98126;--primary-glow:#10b98140;--dark:#f8fafc;--slate:#cbd5e1;--muted:#94a3b8;--border:#334155;--bg-main:#0f172a;--bg-card:#1e293b;--shadow-sm:0 1px 3px #0006;--shadow-md:0 4px 12px #00000080;--shadow-lg:0 10px 25px #0009}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg-main);color:var(--slate);-webkit-font-smoothing:antialiased;min-height:100vh;font-family:Plus Jakarta Sans,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;overflow-x:hidden}.app-main-layout{flex-direction:column;width:100%;min-height:100vh;display:flex;overflow-x:hidden}.app-header{background:var(--bg-card);border-bottom:1px solid var(--border);z-index:100;box-shadow:var(--shadow-sm);width:100%;position:sticky;top:0}.header-container{justify-content:space-between;align-items:center;max-width:1500px;height:72px;margin:0 auto;padding:0 24px;display:flex}.header-brand{align-items:center;gap:12px;display:flex}.brand-icon-wrapper{background-color:var(--primary-light);width:44px;height:44px;color:var(--primary);border-radius:var(--radius-md);justify-content:center;align-items:center;display:flex}.app-title{color:var(--dark);font-size:18px;font-weight:700;line-height:1.2}.app-subtitle{color:var(--muted);font-size:12px;font-weight:500}.header-tabs{border-radius:var(--radius-md);border:1px solid var(--border);background-color:#f8fafc;gap:8px;padding:4px;display:flex}.tab-button{border-radius:var(--radius-sm);color:var(--muted);cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;padding:8px 16px;font-size:14px;font-weight:600;transition:all .2s;display:flex}.tab-button:hover{color:var(--dark)}.tab-button.active{background-color:var(--bg-card);color:var(--primary);box-shadow:var(--shadow-sm)}.status-badge{background-color:var(--primary-light);color:var(--primary);border-radius:20px;align-items:center;gap:6px;padding:6px 12px;font-size:12px;font-weight:600;display:inline-flex}.app-content-body{box-sizing:border-box;flex:1;width:100%;max-width:1500px;margin:0 auto;padding:24px}.single-generator-layout{grid-template-columns:400px minmax(0,1fr);align-items:start;gap:24px;width:100%;display:grid}@media (width<=1100px){.single-generator-layout{grid-template-columns:1fr}}.form-panel{background:var(--bg-card);border-radius:var(--radius-lg);border:1px solid var(--border);box-shadow:var(--shadow-md);padding:24px}.panel-header{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.panel-header h2{color:var(--dark);font-size:18px;font-weight:700}.form-content{flex-direction:column;gap:16px;display:flex}.form-group{flex-direction:column;gap:6px;display:flex}.form-row{gap:12px;display:flex}.flex-1{flex:1}.form-label{color:var(--slate);align-items:center;gap:6px;font-size:13px;font-weight:600;display:flex}.form-sublabel{color:var(--muted);font-size:12px;font-weight:600}.form-input,.form-select,.form-textarea{border-radius:var(--radius-md);border:1px solid var(--border);width:100%;color:var(--dark);background-color:#fff;padding:10px 14px;font-family:inherit;font-size:14px;transition:all .2s}.clearable-input-wrapper{align-items:center;width:100%;display:flex;position:relative}.clearable-input-wrapper .form-input{padding-right:36px}.btn-clear-input{color:#64748b;cursor:pointer;background-color:#e2e8f0;border:none;border-radius:50%;justify-content:center;align-items:center;width:22px;height:22px;transition:all .15s;display:flex;position:absolute;right:10px}.form-input.input-invalid{background-color:#fef2f2;border-color:#ef4444}.form-input.input-invalid:focus{border-color:#ef4444;box-shadow:0 0 0 3px #ef444433}.field-required{color:#ef4444;font-weight:700}.field-error-msg{color:#dc2626;margin-top:2px;font-size:11px;font-weight:600}.validation-warning-toast{color:#991b1b;border-radius:var(--radius-md);background-color:#fef2f2;border:1px solid #fca5a5;align-items:flex-start;gap:10px;padding:12px 14px;font-size:13px;animation:4s forwards fadeInOut;display:flex}.validation-error-list{margin-top:4px;padding-left:16px;font-size:12px;line-height:1.4}@keyframes fadeInOut{0%{opacity:0;transform:translateY(6px)}10%{opacity:1;transform:translateY(0)}80%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-4px)}}.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-glow);outline:none}.input-sm{padding:7px 10px;font-size:13px}.text-uppercase{text-transform:uppercase}.margin-top-xs{margin-top:4px}.margin-bottom-sm{margin-bottom:12px}.margin-top-md{margin-top:16px}.preset-chips-wrapper{margin-top:6px}.chips-label{color:var(--muted);margin-bottom:4px;font-size:11px;font-weight:600;display:block}.preset-chips{flex-wrap:wrap;gap:6px;display:flex}.chip{border:1px solid var(--border);color:var(--slate);cursor:pointer;background-color:#f8fafc;border-radius:14px;padding:4px 10px;font-size:11px;font-weight:600;transition:all .15s}.chip:hover{border-color:var(--primary);color:var(--primary)}.chip.active{background-color:var(--primary-light);border-color:var(--primary);color:var(--primary)}.accordion-section{border:1px solid var(--border);border-radius:var(--radius-md);background-color:#f8fafc;overflow:hidden}.accordion-summary{color:var(--slate);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;padding:10px 14px;font-size:13px;font-weight:600;display:flex}.accordion-body{border-top:1px solid var(--border);background-color:#fff;padding:14px}.form-checkbox-wrapper{color:var(--slate);cursor:pointer;align-items:center;gap:8px;margin-top:10px;font-size:12px;display:flex}.filename-preview-box{border:1px dashed var(--border);border-radius:var(--radius-md);background-color:#f8fafc;flex-direction:column;gap:4px;padding:10px 14px;display:flex}.filename-label{color:var(--muted);font-size:11px;font-weight:600}.filename-code{color:var(--primary);word-break:break-all;font-family:monospace;font-size:13px;font-weight:700}.btn-primary-lg{background-color:var(--primary);color:#fff;border-radius:var(--radius-md);cursor:pointer;width:100%;box-shadow:0 4px 14px var(--primary-glow);border:none;justify-content:center;align-items:center;gap:10px;padding:14px 20px;font-size:15px;font-weight:700;transition:all .2s;display:flex}.btn-primary-lg:hover:not(:disabled){background-color:var(--primary-hover);transform:translateY(-1px)}.btn-primary-lg:disabled{opacity:.7;cursor:not-allowed}.btn-secondary-sm{border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--slate);cursor:pointer;background-color:#f1f5f9;align-items:center;gap:6px;padding:6px 12px;font-size:12px;font-weight:600;display:inline-flex}.btn-secondary-sm:hover{background-color:#e2e8f0}.btn-icon{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);width:32px;height:32px;color:var(--slate);cursor:pointer;justify-content:center;align-items:center;display:flex}.btn-icon:hover{background-color:var(--primary-light);color:var(--primary)}.preview-container-card{background:var(--bg-card);border-radius:var(--radius-lg);border:1px solid var(--border);box-shadow:var(--shadow-md);flex-direction:column;display:flex;overflow:hidden}.preview-toolbar{border-bottom:1px solid var(--border);background-color:#fafafa;justify-content:space-between;align-items:center;padding:14px 20px;display:flex}.preview-title{color:var(--dark);font-size:14px;font-weight:700}.zoom-controls{align-items:center;gap:8px;display:flex}.zoom-level{color:var(--muted);text-align:center;min-width:40px;font-size:12px;font-weight:600}.preview-viewport{box-sizing:border-box;background-color:#cbd5e1;justify-content:center;align-items:center;width:100%;min-height:520px;padding:24px;display:flex;overflow:hidden}.preview-scaler{border-radius:4px;box-shadow:0 15px 35px #00000040}.batch-generator-container{width:100%}.batch-grid{grid-template-columns:440px 1fr;gap:24px;display:grid}@media (width<=1100px){.batch-grid{grid-template-columns:1fr}}.batch-card{background:var(--bg-card);border-radius:var(--radius-lg);border:1px solid var(--border);box-shadow:var(--shadow-md);padding:24px}.card-header{border-bottom:1px solid var(--border);align-items:center;gap:10px;margin-bottom:20px;padding-bottom:12px;display:flex}.card-header.space-between{justify-content:space-between}.header-title{align-items:center;gap:10px;display:flex}.header-icon{color:var(--primary)}.card-header h3{color:var(--dark);font-size:16px;font-weight:700}.badge-pill{background-color:var(--primary-light);color:var(--primary);border-radius:12px;padding:4px 10px;font-size:12px;font-weight:700}.upload-header{justify-content:space-between;align-items:center;margin-bottom:6px;display:flex}.btn-upload{cursor:pointer}.form-textarea{resize:vertical;font-family:monospace}.form-hint{color:var(--muted);font-size:11px}.table-responsive{border:1px solid var(--border);border-radius:var(--radius-md);max-height:480px;overflow-y:auto}.batch-table{border-collapse:collapse;text-align:left;width:100%;font-size:13px}.batch-table th{color:var(--slate);border-bottom:1px solid var(--border);z-index:10;background-color:#f8fafc;padding:10px 14px;font-weight:700;position:sticky;top:0}.batch-table td{border-bottom:1px solid var(--border);color:var(--dark);padding:10px 14px}.font-semibold{font-weight:600}.text-muted{color:var(--muted);font-size:12px}.tag-initials{color:var(--primary);background-color:#f1f5f9;border-radius:4px;padding:2px 8px;font-size:11px;font-weight:700}.btn-table-action{background:var(--primary-light);color:var(--primary);border-radius:var(--radius-sm);cursor:pointer;border:none;align-items:center;gap:4px;padding:4px 8px;font-size:11px;font-weight:700;display:inline-flex}.btn-table-action:hover{background:var(--primary);color:#fff}.progress-box{background-color:var(--primary-light);border:1px solid var(--primary-glow);border-radius:var(--radius-md);margin-bottom:16px;padding:14px}.progress-info{color:var(--primary);justify-content:space-between;margin-bottom:8px;font-size:13px;font-weight:700;display:flex}.progress-track{background-color:#fff;border-radius:4px;height:8px;overflow:hidden}.progress-bar-fill{background-color:var(--primary);height:100%;transition:width .2s}.toast-notification{background-color:var(--dark);color:#fff;border-radius:var(--radius-md);box-shadow:var(--shadow-lg);z-index:1000;align-items:center;gap:12px;padding:14px 20px;font-size:14px;font-weight:600;animation:.3s slideUp;display:flex;position:fixed;bottom:24px;right:24px}.toast-icon{color:#10b981}@keyframes slideUp{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}.spin-icon{animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.app-footer{text-align:center;color:var(--muted);border-top:1px solid var(--border);background-color:var(--bg-card);margin-top:40px;padding:20px;font-size:12px}.header-actions{align-items:center;gap:12px;display:flex}.btn-logout{color:#dc2626;border-radius:var(--radius-sm);cursor:pointer;background-color:#fef2f2;border:1px solid #fca5a5;align-items:center;gap:6px;padding:6px 12px;font-size:12px;font-weight:700;transition:all .15s;display:inline-flex}.btn-logout:hover{color:#fff;background-color:#dc2626;border-color:#dc2626}.login-overlay{z-index:9999;background:linear-gradient(135deg,#0f172a 0%,#1e293b 100%);justify-content:center;align-items:center;width:100vw;height:100vh;padding:20px;display:flex;position:fixed;top:0;left:0}.login-card{border-radius:var(--radius-lg);background:#fff;flex-direction:column;gap:24px;width:100%;max-width:420px;padding:32px;display:flex;box-shadow:0 20px 50px #00000059}.login-header{text-align:center;flex-direction:column;align-items:center;gap:6px;display:flex}.login-brand-icon{background-color:var(--primary-light);width:60px;height:60px;color:var(--primary);border-radius:50%;justify-content:center;align-items:center;margin-bottom:8px;display:flex}.login-title{color:var(--dark);font-size:22px;font-weight:800}.login-subtitle{color:var(--muted);font-size:13px;font-weight:500}.login-security-badge{color:var(--slate);background-color:#f1f5f9;border-radius:12px;align-items:center;gap:6px;margin-top:6px;padding:4px 10px;font-size:11px;font-weight:700;display:inline-flex}.login-form{flex-direction:column;gap:16px;display:flex}.login-error-alert{color:#991b1b;border-radius:var(--radius-md);background-color:#fef2f2;border:1px solid #fca5a5;align-items:center;gap:8px;padding:10px 14px;font-size:13px;font-weight:600;display:flex}.password-input-wrapper{align-items:center;display:flex;position:relative}.btn-toggle-password{color:var(--muted);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:4px;display:flex;position:absolute;right:10px}.btn-toggle-password:hover{color:var(--dark)}.user-profile-badge{border:1px solid var(--border);color:var(--slate);background-color:#f8fafc;border-radius:20px;align-items:center;gap:6px;padding:4px 10px;font-size:12px;font-weight:600;display:inline-flex}.user-profile-badge .user-icon{color:var(--primary)}.user-name{color:var(--dark);font-weight:700}.user-role-pill{text-transform:uppercase;border-radius:10px;padding:2px 6px;font-size:10px;font-weight:800}.role-admin{color:#d97706;background-color:#fef3c7}.role-operator{background-color:var(--primary-light);color:var(--primary)}.btn-header-action{border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--slate);cursor:pointer;background-color:#f8fafc;align-items:center;gap:6px;padding:6px 12px;font-size:12px;font-weight:600;transition:all .15s;display:inline-flex}.btn-header-action:hover{background-color:var(--primary-light);border-color:var(--primary);color:var(--primary)}.btn-admin-users{color:#b45309;background-color:#fffbeb;border-color:#fde68a}.btn-admin-users:hover{color:#92400e;background-color:#fef3c7;border-color:#f59e0b}.modal-backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:9000;background-color:#0f172aa6;justify-content:center;align-items:center;width:100vw;height:100vh;padding:20px;display:flex;position:fixed;top:0;left:0}.modal-card{border-radius:var(--radius-lg);width:100%;max-width:480px;box-shadow:var(--shadow-lg);background-color:#fff;flex-direction:column;gap:20px;padding:24px;animation:.2s slideUp;display:flex}.modal-card.modal-lg{max-width:680px}.modal-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding-bottom:14px;display:flex}.modal-title-group{align-items:center;gap:10px;display:flex}.modal-title-group h3{color:var(--dark);font-size:18px;font-weight:700}.modal-subtitle{color:var(--muted);font-size:12px;display:block}.modal-icon{color:var(--primary)}.btn-close-modal{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:4px}.btn-close-modal:hover{color:var(--dark);background-color:#f1f5f9}.modal-form{flex-direction:column;gap:16px;display:flex}.modal-actions{align-items:center;gap:10px;display:flex}.btn-cancel{padding:12px 18px}.modal-subtabs{border-bottom:1px solid var(--border);gap:8px;padding-bottom:8px;display:flex}.subtab-btn{border-radius:var(--radius-sm);color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;align-items:center;gap:6px;padding:6px 12px;font-size:13px;font-weight:600;display:flex}.subtab-btn.active{background-color:var(--primary-light);color:var(--primary);border-color:var(--primary)}.role-badge{border-radius:12px;align-items:center;gap:4px;padding:3px 8px;font-size:11px;font-weight:700;display:inline-flex}.action-buttons-group{gap:6px;display:flex}.action-key:hover{color:#d97706;background-color:#fef3c7}.action-delete{color:#dc2626;background-color:#fef2f2}.action-delete:hover{color:#fff;background-color:#dc2626}.reset-password-inline-box{border:1px solid var(--border);border-radius:var(--radius-md);background-color:#f8fafc;padding:14px}.reset-password-inline-box h4{color:var(--dark);margin-bottom:8px;font-size:13px;font-weight:700}.btn-sm{padding:10px 16px;font-size:13px}.btn-theme-toggle{background-color:var(--bg-main);border:1px solid var(--border);width:36px;height:36px;color:var(--slate);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;transition:all .2s;display:inline-flex}.btn-theme-toggle:hover{background-color:var(--primary-light);border-color:var(--primary);color:var(--primary);transform:rotate(15deg)}.theme-icon.sun{color:#f59e0b}.theme-icon.moon{color:#6366f1}[data-theme=dark] .form-input,[data-theme=dark] .form-select,[data-theme=dark] .form-textarea{color:#f8fafc;background-color:#0f172a;border-color:#334155}[data-theme=dark] .user-profile-badge,[data-theme=dark] .btn-header-action{color:#cbd5e1;background-color:#0f172a;border-color:#334155}[data-theme=dark] .user-profile-badge .user-name{color:#f8fafc}[data-theme=dark] .modal-card{color:#f8fafc;background-color:#1e293b}[data-theme=dark] .modal-card h3{color:#f8fafc}[data-theme=dark] .batch-table-container,[data-theme=dark] .filename-preview-box,[data-theme=dark] .reset-password-inline-box{background-color:#0f172a;border-color:#334155}[data-theme=dark] table th{color:#94a3b8;background-color:#0f172a;border-bottom-color:#334155}[data-theme=dark] table td{color:#e2e8f0;border-bottom-color:#334155}[data-theme=dark] .btn-close-modal:hover{color:#f8fafc;background-color:#334155}[data-theme=dark] .app-header{background-color:#1e293b;border-bottom-color:#334155}[data-theme=dark] .app-title{color:#f8fafc}[data-theme=dark] .app-subtitle{color:#94a3b8}[data-theme=dark] .header-tabs{background-color:#0f172a;border-color:#334155}[data-theme=dark] .tab-button{color:#94a3b8}[data-theme=dark] .tab-button:hover{color:#f8fafc}[data-theme=dark] .tab-button.active{color:#fff;background-color:#10b981}[data-theme=dark] .form-panel,[data-theme=dark] .preview-panel,[data-theme=dark] .batch-card,[data-theme=dark] .login-card{background-color:#1e293b;border-color:#334155}[data-theme=dark] .panel-header,[data-theme=dark] .preview-toolbar,[data-theme=dark] .modal-header{border-bottom-color:#334155}[data-theme=dark] .panel-header h2,[data-theme=dark] .preview-title,[data-theme=dark] .login-title{color:#f8fafc}[data-theme=dark] .form-label{color:#e2e8f0}[data-theme=dark] .form-sublabel{color:#94a3b8}[data-theme=dark] .btn-secondary-sm,[data-theme=dark] .btn-icon{color:#cbd5e1;background-color:#0f172a;border-color:#334155}[data-theme=dark] .btn-secondary-sm:hover,[data-theme=dark] .btn-icon:hover{color:#f8fafc;background-color:#334155}[data-theme=dark] .chip{color:#94a3b8;background-color:#0f172a;border-color:#334155}[data-theme=dark] .chip:hover{color:#f8fafc;background-color:#334155}[data-theme=dark] .chip.active{color:#fff;background-color:#10b981;border-color:#10b981}[data-theme=dark] .accordion-section{background-color:#0f172a;border-color:#334155}[data-theme=dark] .accordion-summary{color:#f8fafc}[data-theme=dark] .accordion-summary:hover{background-color:#1e293b}[data-theme=dark] .btn-clear-input{color:#94a3b8;background-color:#334155}[data-theme=dark] .btn-clear-input:hover{color:#f8fafc;background-color:#475569}[data-theme=dark] .filename-preview-box{background-color:#0f172a;border-color:#334155}[data-theme=dark] .filename-label{color:#94a3b8}[data-theme=dark] .filename-code{color:#34d399;background-color:#1e293b}[data-theme=dark] .upload-dropzone{color:#cbd5e1;background-color:#0f172a;border-color:#334155}[data-theme=dark] .upload-dropzone:hover{background-color:#1e293b;border-color:#10b981}[data-theme=dark] .modal-subtabs{border-bottom-color:#334155}[data-theme=dark] .subtab-btn{color:#94a3b8}[data-theme=dark] .subtab-btn.active{color:#34d399;background-color:#10b98133;border-color:#10b981}[data-theme=dark] .btn-admin-users{color:#fde68a;background-color:#451a03;border-color:#78350f}[data-theme=dark] .btn-admin-users:hover{color:#fef3c7;background-color:#78350f}[data-theme=dark] .btn-logout{color:#fca5a5;background-color:#451a1a;border-color:#7f1d1d}[data-theme=dark] .btn-logout:hover{color:#fff;background-color:#7f1d1d}[data-theme=dark] .btn-cancel{color:#cbd5e1;background-color:#0f172a;border-color:#334155}[data-theme=dark] .btn-cancel:hover{color:#f8fafc;background-color:#334155}[data-theme=dark] .app-footer{color:#94a3b8;background-color:#0f172a;border-top-color:#334155}.footer-developer-link{color:var(--primary);font-weight:700;text-decoration:none;transition:all .15s}.footer-developer-link:hover{color:var(--primary-hover);text-decoration:underline}[data-theme=dark] .footer-developer-link{color:#34d399}[data-theme=dark] .footer-developer-link:hover{color:#6ee7b7}
