*{box-sizing:border-box;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#f5f5f5;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.header{background-color:#2d2d2d;box-shadow:0 2px 4px #0000001a;color:#fff;padding:1rem 2rem}.header-content{align-items:center;display:flex;justify-content:space-between;margin:0 auto;max-width:1400px}.header-logo{color:#fff;text-decoration:none;transition:opacity .2s}.header-logo:hover{opacity:.9}.header h1{color:#fff;font-size:1.5rem;font-weight:600;margin:0}.header-user-section{align-items:center;display:flex;gap:1.5rem}.user-info{align-items:flex-end;display:flex;flex-direction:column;gap:.25rem}.user-name{color:#fff;font-size:.95rem;font-weight:600}.user-meta{align-items:center;display:flex;gap:.75rem}.user-email{color:#a0a0a0;font-size:.75rem}.role-badge{border-radius:12px;display:inline-block;font-size:.7rem;font-weight:700;letter-spacing:.5px;padding:2px 10px;text-transform:uppercase}.role-admin{background-color:#e8f5e9;color:#2e7d32}.role-standard{background-color:#e3f2fd;color:#1565c0}.logout-button{background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:5px;box-shadow:0 2px 5px #0003;color:#fff;cursor:pointer;font-size:.9rem;font-weight:500;padding:.5rem 1.5rem;transition:all .3s ease}.logout-button:hover{box-shadow:0 4px 10px #0000004d;transform:translateY(-2px)}.logout-button:active{transform:translateY(0)}@media (max-width:768px){.header{padding:1rem}.header h1{font-size:1.25rem}.header-content{align-items:flex-start;flex-direction:column;gap:1rem}.header-user-section{justify-content:space-between;width:100%}.user-info{align-items:flex-start}}.footer{background-color:#e8e8e8;border-top:1px solid #d0d0d0;color:#666;margin-top:auto;padding:1.5rem 2rem}.footer-content{margin:0 auto;max-width:1400px;text-align:center}.footer p{font-size:.9rem;margin:0}@media (max-width:768px){.footer{padding:1rem}.footer p{font-size:.8rem}}.sidebar{background-color:#f0f0f0;border-right:1px solid #d0d0d0;padding:1rem 0;width:250px}.sidebar-nav{position:-webkit-sticky;position:sticky;top:1rem}.sidebar-menu{list-style:none;margin:0;padding:0}.sidebar-menu-item{margin-bottom:.25rem}.sidebar-link{align-items:center;border-left:3px solid #0000;color:#4d4d4d;display:flex;padding:.75rem 1.5rem;text-decoration:none;transition:background-color .2s,color .2s}.sidebar-link:hover{background-color:#e0e0e0;color:#2d2d2d}.sidebar-link.active{background-color:#d8d8d8;border-left-color:#666;color:#2d2d2d;font-weight:500}.sidebar-icon{font-size:1.25rem;margin-right:.75rem}.sidebar-label{font-size:.95rem}@media (max-width:768px){.sidebar{border-bottom:1px solid #d0d0d0;border-right:none;width:100%}.sidebar-nav{position:static}.sidebar-menu{display:flex;overflow-x:auto}.sidebar-menu-item{flex-shrink:0;margin-bottom:0}.sidebar-link{border-bottom:3px solid #0000;border-left:none;flex-direction:column;padding:.75rem 1rem;text-align:center}.sidebar-link.active{border-bottom-color:#666;border-left:none}.sidebar-icon{margin-bottom:.25rem;margin-right:0}.sidebar-label{font-size:.85rem}}.layout{background-color:#fafafa;display:flex;flex-direction:column;min-height:100vh}.layout-body{display:flex;flex:1 1;min-height:calc(100vh - 120px)}.layout-content{background-color:#fff;border-radius:4px;box-shadow:0 1px 3px #0000001a;flex:1 1;margin:1rem;padding:2rem}@media (max-width:768px){.layout-body{flex-direction:column}.layout-content{margin:.5rem;padding:1rem}}.home-page{margin:0 auto;max-width:1200px}.home-header{border-bottom:2px solid #e0e0e0;margin-bottom:3rem;padding-bottom:2rem;text-align:center}.home-header h1{color:#2d2d2d;font-size:2.2rem;margin-bottom:.75rem}.home-subtitle{color:#666;font-size:1.05rem;margin:0 auto 1rem;max-width:600px}.home-role-indicator{margin-top:.5rem}.home-role-badge{border-radius:16px;display:inline-block;font-size:.8rem;font-weight:700;letter-spacing:.5px;padding:4px 16px;text-transform:uppercase}.home-role-admin{background-color:#e8f5e9;border:1px solid #c8e6c9;color:#2e7d32}.home-role-standard{background-color:#e3f2fd;border:1px solid #bbdefb;color:#1565c0}.features-grid{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));margin-bottom:3rem}.feature-card{background-color:#fafafa;border:2px solid #e0e0e0;border-radius:8px;color:inherit;overflow:hidden;padding:2rem;position:relative;text-decoration:none;transition:all .3s ease}.feature-card:hover{border-color:var(--feature-color);box-shadow:0 4px 12px #00000026;transform:translateY(-4px)}.feature-card:before{background-color:var(--feature-color);content:"";height:100%;left:0;position:absolute;top:0;transform:scaleY(0);transition:transform .3s ease;width:4px}.feature-card:hover:before{transform:scaleY(1)}.feature-card-disabled{cursor:default;opacity:.7}.feature-card-disabled:hover{border-color:#e0e0e0;box-shadow:none;transform:none}.feature-card-disabled:before{display:none}.feature-icon{font-size:2.5rem;margin-bottom:.75rem}.feature-title{color:#2d2d2d;font-size:1.3rem;margin-bottom:.5rem}.feature-description{color:#666;font-size:.9rem;line-height:1.6;margin-bottom:.75rem}.feature-arrow{color:var(--feature-color);display:inline-block;font-size:1.5rem;transition:transform .3s ease}.feature-card:hover .feature-arrow{transform:translateX(8px)}.coming-soon-badge{background-color:#fff3e0;border:1px solid #ffe0b2;border-radius:12px;color:#e65100;display:inline-block;font-size:.75rem;font-weight:600;padding:3px 12px}.home-info{border-top:2px solid #e0e0e0;margin-top:3rem;padding-top:2rem}.home-info h2{color:#2d2d2d;font-size:1.3rem;margin-bottom:1.5rem;text-align:center}.info-grid{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.info-card{background-color:#f5f5f5;border:1px solid #d0d0d0;border-radius:6px;padding:1.25rem}.info-card h3{color:#888;font-size:.85rem;letter-spacing:.5px;margin-bottom:.5rem;text-transform:uppercase}.info-card p{color:#333;font-size:1rem;font-weight:500;line-height:1.5;margin:0}@media (max-width:768px){.home-header h1{font-size:1.6rem}.home-subtitle{font-size:.95rem}.features-grid{gap:1rem;grid-template-columns:1fr}.feature-card{padding:1.5rem}.info-grid{grid-template-columns:1fr 1fr}}.setup-page{margin:0 auto;max-width:1000px}.page-header{align-items:flex-start;border-bottom:2px solid #e0e0e0;display:flex;justify-content:space-between;margin-bottom:2rem;padding-bottom:1.5rem}.page-header h1{margin-bottom:.5rem}.page-subtitle{color:#666;font-size:1rem}.btn{border:none;border-radius:4px;cursor:pointer;display:inline-block;font-size:1rem;font-weight:500;padding:.75rem 1.5rem;text-decoration:none;transition:all .2s}.btn-primary{background-color:#7cb342;color:#fff}.btn-primary:hover:not(:disabled){background-color:#689f38;box-shadow:0 2px 8px #7cb3424d;transform:translateY(-1px)}.btn-primary:disabled{background-color:#b0b0b0;cursor:not-allowed}.btn-secondary{background-color:#e0e0e0;color:#2d2d2d}.btn-secondary:hover{background-color:#d0d0d0}.mode-tabs{border-bottom:2px solid #e0e0e0;display:flex;gap:.5rem;margin-bottom:2rem}.tab-button{background-color:initial;border:none;border-bottom:3px solid #0000;color:#666;cursor:pointer;font-size:1rem;font-weight:500;padding:1rem 2rem;transition:all .2s}.tab-button:hover{background-color:#f5f5f5;color:#2d2d2d}.tab-button.active{background-color:#fafafa;border-bottom-color:#7cb342;color:#2d2d2d}.form-container{background-color:#fafafa;border:1px solid #d0d0d0;border-radius:6px;padding:2rem}.setup-form{max-width:800px}.form-section{border-bottom:1px solid #e0e0e0;margin-bottom:2rem;padding-bottom:2rem}.form-section:last-of-type{border-bottom:none}.form-section h3{color:#2d2d2d;font-size:1.25rem;margin-bottom:1.5rem}.form-row{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));margin-bottom:1rem}.form-group{display:flex;flex-direction:column;margin-bottom:1.5rem}.form-group label{color:#2d2d2d;font-size:.95rem;font-weight:500;margin-bottom:.5rem}.form-group input,.form-group select,.form-group textarea{background-color:#fff;border:2px solid #d0d0d0;border-radius:4px;font-size:1rem;padding:.75rem;transition:border-color .2s}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:#7cb342;outline:none}.form-group small{color:#666;font-size:.85rem;margin-top:.25rem}.form-group textarea{font-family:inherit;resize:vertical}.form-actions{border-top:2px solid #e0e0e0;display:flex;gap:1rem;margin-top:2rem;padding-top:2rem}.info-box{background-color:#f5f5f5;border:2px solid #d0d0d0;border-radius:6px;margin-bottom:2rem;padding:1.5rem}.info-box h3{color:#2d2d2d;font-size:1.1rem;margin-bottom:1rem}.info-box p{color:#666;line-height:1.6;margin-bottom:.75rem}.info-box code{background-color:#e8e8e8;border-radius:4px;display:block;font-size:.9rem;margin:.75rem 0;overflow-x:auto;padding:1rem}.loading-spinner{align-items:center;display:flex;flex-direction:column;justify-content:center;padding:3rem;text-align:center}.spinner{animation:spin 1s linear infinite;border:4px solid #e0e0e0;border-radius:50%;border-top-color:#7cb342;height:50px;width:50px}.loading-spinner p{color:#666;margin-top:1rem}.alert{border:2px solid;border-radius:6px;margin-top:2rem;padding:1.5rem}.alert h4{font-size:1.1rem;margin-bottom:.75rem}.alert p{margin-bottom:.5rem}.alert-success{background-color:#e8f5e9;border-color:#7cb342;color:#2e7d32}.alert-success h4{color:#1b5e20}.alert-error{background-color:#ffebee;border-color:#ef5350;color:#c62828}.alert-error h4{color:#b71c1c}.alert-info{background-color:#e3f2fd;border-color:#42a5f5}.alert-info,.alert-info h4{color:#0d47a1}.alert-warning{background-color:#fff8e1;border-color:#ffb300;color:#e65100}.alert-warning h4{color:#bf360c}.alert details{cursor:pointer;margin-top:1rem}.alert summary{font-weight:500;padding:.5rem}.alert pre,.alert summary{background-color:#0000000d;border-radius:4px}.alert pre{font-size:.85rem;margin-top:.75rem;overflow-x:auto;padding:1rem}@media (max-width:768px){.page-header{flex-direction:column;gap:1rem}.form-container{padding:1rem}.form-row{grid-template-columns:1fr}.mode-tabs{overflow-x:auto}.tab-button{padding:.75rem 1.5rem;white-space:nowrap}}input[type=file]{background-color:#fafafa;border:2px dashed #d0d0d0;border-radius:4px;cursor:pointer;padding:.5rem;transition:all .2s;width:100%}input[type=file]:hover{background-color:#f5f5f5;border-color:#7cb342}input[type=file]:focus{background-color:#fff;border-color:#7cb342;outline:none}.file-selected{color:#7cb342;display:block;font-weight:500;margin-top:.5rem}.validation-errors{background-color:#fff3cd;border:2px solid #ffc107;border-radius:6px;margin:1.5rem 0;padding:1rem}.validation-errors h4{color:#856404;font-size:1.1rem;margin:0 0 1rem}.error-list{max-height:400px;overflow-y:auto;padding:.5rem}.error-item,.error-list{background-color:#fff;border-radius:4px}.error-item{border-left:4px solid #dc3545;font-size:.9rem;margin-bottom:.5rem;padding:.75rem}.error-row{color:#dc3545;font-weight:700;margin-right:.25rem}.error-field{color:#856404;font-weight:600;margin-right:.25rem}.error-message{color:#333}.error-truncated{background-color:#ffc1071a;border-radius:4px;color:#856404;font-style:italic;margin-top:1rem;padding:.5rem;text-align:center}code{background-color:#f5f5f5;border-radius:3px;font-family:Courier New,monospace;font-size:.9em;padding:.2rem .4rem}.btn-download-sample{align-items:center;background-color:#2196f3;border:none;border-radius:4px;box-shadow:0 2px 4px #0000001a;color:#fff;cursor:pointer;display:inline-flex;font-size:1rem;font-weight:500;gap:.5rem;padding:.75rem 1.5rem;transition:all .2s}.btn-download-sample:hover{background-color:#1976d2;box-shadow:0 4px 12px #2196f34d;transform:translateY(-2px)}.btn-download-sample:active{box-shadow:0 2px 4px #0000001a;transform:translateY(0)}.login-page{align-items:center;background:linear-gradient(135deg,#1a237e,#0d47a1 50%,#01579b);display:flex;justify-content:center;min-height:100vh;padding:20px}.login-container{animation:slideUp .4s ease-out;background:#fff;border-radius:12px;box-shadow:0 20px 60px #0000004d;max-width:420px;padding:40px;text-align:center;width:100%}@keyframes slideUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.login-header{margin-bottom:32px}.login-logo{align-items:center;display:flex;gap:10px;justify-content:center;margin-bottom:8px}.login-logo-icon{font-size:2.2rem}.login-header h1{color:#1a237e;font-size:22px;font-weight:700;margin:0}.login-header p{color:#718096;font-size:14px;margin-top:8px}.login-loading{padding:40px 0}.login-spinner{animation:spin 1s linear infinite;border:4px solid #e0e0e0;border-radius:50%;border-top-color:#1a237e;height:48px;margin:0 auto 20px;width:48px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.login-loading-message{color:#333;font-size:1rem;font-weight:600;margin:0 0 6px}.login-loading-subtitle{color:#888;font-size:.85rem;margin:0}.login-error{padding:24px 0}.login-error-icon{color:#e53e3e;font-size:2.5rem;margin-bottom:12px}.login-error-message{background:#fff5f5;border:1px solid #fed7d7;border-radius:8px;color:#e53e3e;font-size:.95rem;line-height:1.5;margin:0 0 20px;padding:12px 16px;text-align:left}.login-retry-btn{background:linear-gradient(135deg,#1a237e,#283593);border:none;border-radius:8px;box-shadow:0 4px 12px #1a237e4d;color:#fff;cursor:pointer;font-size:15px;font-weight:600;padding:12px 32px;transition:all .3s ease}.login-retry-btn:hover{background:linear-gradient(135deg,#283593,#3949ab);box-shadow:0 6px 20px #1a237e66;transform:translateY(-2px)}.login-retry-btn:active{transform:translateY(0)}.login-footer{border-top:1px solid #eee;margin-top:32px;padding-top:16px}.login-footer p{color:#aaa;font-size:.8rem;margin:0}@media (max-width:480px){.login-container{padding:28px 20px}.login-header h1{font-size:18px}}.logoff-page{align-items:center;background:linear-gradient(135deg,#37474f,#455a64 50%,#546e7a);display:flex;justify-content:center;min-height:100vh;padding:20px}.logoff-container{animation:fadeIn .4s ease-out;background:#fff;border-radius:12px;box-shadow:0 20px 60px #0000004d;max-width:440px;padding:48px 40px;text-align:center;width:100%}@keyframes fadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.logoff-icon{font-size:4rem;margin-bottom:20px}.logoff-loading{padding:20px 0}.logoff-spinner{animation:logoff-spin 1s linear infinite;border:4px solid #e0e0e0;border-radius:50%;border-top-color:#1a237e;height:48px;margin:0 auto 20px;width:48px}@keyframes logoff-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.logoff-loading h2{color:#333;font-size:1.4rem;margin:0 0 8px}.logoff-loading p{color:#888;font-size:.9rem;margin:0}.logoff-complete{padding:10px 0}.logoff-complete h2{color:#2e7d32;font-size:1.5rem;margin:0 0 8px}.logoff-complete>p{color:#666;font-size:.95rem;margin:0 0 24px}.logoff-info{background:#f5f5f5;border-radius:8px;margin-bottom:24px;padding:14px 18px}.logoff-info p{color:#777;font-size:.85rem;line-height:1.5;margin:0}.btn-login-redirect{background:linear-gradient(135deg,#1a237e,#283593);border:none;border-radius:8px;box-shadow:0 4px 12px #1a237e4d;color:#fff;cursor:pointer;font-size:15px;font-weight:600;margin-bottom:16px;padding:12px 32px;transition:all .3s ease}.btn-login-redirect:hover{background:linear-gradient(135deg,#283593,#3949ab);box-shadow:0 6px 20px #1a237e66;transform:translateY(-2px)}.btn-login-redirect:active{transform:translateY(0)}.redirect-notice{color:#999;font-size:.85rem;margin:0}.logoff-footer{border-top:1px solid #eee;margin-top:32px;padding-top:16px}.logoff-footer p{color:#aaa;font-size:.8rem;margin:0}@media (max-width:480px){.logoff-container{padding:32px 20px}}.app-container{display:flex;flex-direction:column;min-height:100vh}h1,h2,h3,h4,h5,h6{color:#2d2d2d;margin-bottom:1rem}h1{font-size:2rem}h1,h2{font-weight:600}h2{font-size:1.5rem}h3{font-size:1.25rem;font-weight:500}.text-muted{color:#666}.text-success{color:#4caf50}.text-error{color:#f44336}.mt-1{margin-top:.5rem}.mt-2{margin-top:1rem}.mt-3{margin-top:1.5rem}.mt-4{margin-top:2rem}.mb-1{margin-bottom:.5rem}.mb-2{margin-bottom:1rem}.mb-3{margin-bottom:1.5rem}.mb-4{margin-bottom:2rem}.p-1{padding:.5rem}.p-2{padding:1rem}.p-3{padding:1.5rem}.p-4{padding:2rem}
/*# sourceMappingURL=main.4a0c5156.css.map*/