*{margin:0;padding:0;box-sizing:border-box}:root{font-family:Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;line-height:1.5;font-weight:400;--color-bg-primary: #f5f6fa;--color-bg-secondary: #ffffff;--color-text-primary: #2c3e50;--color-text-secondary: #7f8c8d;--color-border: #dfe6e9;--color-primary: #3498db;--color-success: #27ae60;--color-danger: #e74c3c;--color-warning: #f39c12;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html,body{width:100%;height:100%;overflow:hidden}body{margin:0;padding:0;background-color:var(--color-bg-primary);color:var(--color-text-primary);font-size:14px;line-height:1.6}#root{width:100%;height:100vh;overflow:hidden}h1{font-size:2rem;font-weight:700;line-height:1.2;color:var(--color-text-primary)}h2{font-size:1.5rem;font-weight:600;line-height:1.3;color:var(--color-text-primary)}h3{font-size:1.25rem;font-weight:600;line-height:1.4;color:var(--color-text-primary)}::-webkit-scrollbar{width:12px;height:12px}::-webkit-scrollbar-track{background:#f1f1f1;border-radius:6px}::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:6px}::-webkit-scrollbar-thumb:hover{background:#a8a8a8}*:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}::selection{background-color:var(--color-primary);color:#fff}@media(max-width:768px){body{font-size:14px}h1{font-size:1.75rem}h2{font-size:1.35rem}h3{font-size:1.15rem}}@media(min-width:769px)and (max-width:1024px){body{font-size:14px}}@media(min-width:1025px){body{font-size:14px}}@media(min-width:1440px){body{font-size:15px}}.App{width:100vw;height:100vh;overflow:hidden;display:flex;flex-direction:column;background:#f5f6fa}.desktop-container{width:100%;height:100%;display:flex;flex-direction:column;overflow:hidden}.desktop-header{background:#2c3e50;color:#fff;padding:16px 24px;display:flex;justify-content:space-between;align-items:center;box-shadow:0 2px 8px #0000001a;flex-shrink:0;z-index:100}.desktop-content{flex:1;overflow-y:auto;overflow-x:hidden;padding:24px;background:#f5f6fa}.desktop-sidebar{width:280px;background:#34495e;color:#fff;flex-shrink:0;overflow-y:auto;box-shadow:2px 0 8px #0000001a}.desktop-main{flex:1;display:flex;overflow:hidden}.btn-desktop{padding:12px 24px;border:none;border-radius:6px;font-size:.95rem;font-weight:600;cursor:pointer;transition:all .2s;text-transform:uppercase;letter-spacing:.5px;font-family:inherit}.btn-desktop-primary{background:#3498db;color:#fff;box-shadow:0 4px 12px #3498db4d}.btn-desktop-primary:hover{background:#2980b9;transform:translateY(-2px);box-shadow:0 6px 16px #3498db66}.btn-desktop-danger{background:#e74c3c;color:#fff;box-shadow:0 4px 12px #e74c3c4d}.btn-desktop-danger:hover{background:#c0392b;transform:translateY(-2px);box-shadow:0 6px 16px #e74c3c66}.card-desktop{background:#fff;border-radius:8px;padding:24px;box-shadow:0 2px 8px #00000014;border:1px solid #dfe6e9;margin-bottom:20px}.input-desktop{width:100%;padding:12px 16px;border:2px solid #dfe6e9;border-radius:6px;font-size:.95rem;transition:all .2s;font-family:inherit}.input-desktop:focus{outline:none;border-color:#3498db;box-shadow:0 0 0 3px #3498db1a}.table-desktop{width:100%;border-collapse:collapse;background:#fff;border-radius:8px;overflow:hidden;box-shadow:0 2px 8px #00000014}.table-desktop th{background:#34495e;color:#fff;padding:14px 16px;text-align:left;font-weight:600;text-transform:uppercase;font-size:.85rem;letter-spacing:.5px}.table-desktop td{padding:14px 16px;border-bottom:1px solid #ecf0f1;color:#2c3e50}.table-desktop tr:hover{background:#f8f9fa}.table-desktop tr:last-child td{border-bottom:none}@media(min-width:769px)and (max-width:1024px){.desktop-sidebar{width:240px}.desktop-content{padding:20px}.desktop-header{padding:14px 20px}.desktop-header h1{font-size:1.35rem}}@media(max-width:768px){.desktop-container,.desktop-main{flex-direction:column}.desktop-sidebar{width:100%;max-height:0;overflow:hidden;transition:max-height .3s ease}.desktop-sidebar.mobile-open{max-height:400px;border-bottom:2px solid #2c3e50}.desktop-header{padding:12px 16px;flex-wrap:wrap;gap:10px}.desktop-header h1{font-size:1.25rem;flex:1;min-width:200px}.desktop-header p{font-size:.8rem;width:100%;margin-top:4px}.desktop-content{padding:16px}.card-desktop{padding:20px;margin-bottom:16px}.btn-desktop{padding:10px 18px;font-size:.9rem}.table-desktop{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-desktop thead,.table-desktop tbody,.table-desktop tr{display:block}.table-desktop thead{position:sticky;top:0;z-index:10}.table-desktop th,.table-desktop td{display:block;width:100%;padding:12px;text-align:left}.table-desktop th{border-bottom:2px solid rgba(255,255,255,.2)}.table-desktop td{border-bottom:1px solid #ecf0f1;padding-left:16px}.table-desktop td:before{content:attr(data-label) ": ";font-weight:600;display:inline-block;width:120px;color:#7f8c8d}}@media(max-width:480px){.desktop-header{padding:10px 12px}.desktop-header h1{font-size:1.1rem}.desktop-content{padding:12px}.card-desktop{padding:16px}.btn-desktop{padding:10px 16px;font-size:.85rem;width:100%;margin-top:8px}.input-desktop{padding:10px 14px;font-size:16px}}.mobile-only{display:none}.desktop-only{display:block}@media(max-width:768px){.mobile-only{display:block}.desktop-only{display:none}}.mobile-menu-toggle{display:none;background:transparent;border:2px solid white;color:#fff;padding:8px 12px;border-radius:4px;cursor:pointer;font-size:1.2rem}@media(max-width:768px){.mobile-menu-toggle{display:block}}.login-container{width:100vw;height:100vh;display:flex;justify-content:center;align-items:center;background:linear-gradient(135deg,#2c3e50,#34495e);padding:0;overflow:hidden}.login-box{background:#fff;border-radius:8px;box-shadow:0 8px 32px #0000004d;padding:50px 60px;width:100%;max-width:550px;border:1px solid rgba(255,255,255,.1)}.login-header{text-align:center;margin-bottom:40px;padding-bottom:20px;border-bottom:2px solid #ecf0f1}.login-header h1{color:#2c3e50;font-size:2.2rem;margin-bottom:8px;font-weight:700;letter-spacing:-.5px}.login-header h2{color:#7f8c8d;font-size:1rem;font-weight:400;text-transform:uppercase;letter-spacing:2px}.login-form{display:flex;flex-direction:column;gap:24px}.form-group{display:flex;flex-direction:column;gap:10px}.form-group label{font-weight:600;color:#2c3e50;font-size:.95rem;text-transform:uppercase;letter-spacing:.5px}.form-group input{padding:14px 18px;border:2px solid #dfe6e9;border-radius:6px;font-size:1rem;transition:all .2s;outline:none;background:#fff;color:#2c3e50;font-family:inherit}.form-group input:focus{border-color:#3498db;box-shadow:0 0 0 3px #3498db1a}.form-group input::placeholder{color:#bdc3c7}.error-message{background:#fee;border:2px solid #fcc;color:#c0392b;padding:14px 18px;border-radius:6px;font-size:.95rem;text-align:center;font-weight:500}.btn-login{background:linear-gradient(135deg,#3498db,#2980b9);color:#fff;border:none;padding:16px 24px;border-radius:6px;font-size:1.05rem;font-weight:600;cursor:pointer;transition:all .2s;margin-top:10px;text-transform:uppercase;letter-spacing:1px;box-shadow:0 4px 12px #3498db4d}.btn-login:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 16px #3498db66;background:linear-gradient(135deg,#2980b9,#1f6391)}.btn-login:active:not(:disabled){transform:translateY(0)}.btn-login:disabled{opacity:.6;cursor:not-allowed;transform:none}.login-footer{margin-top:30px;text-align:center;padding-top:20px;border-top:1px solid #ecf0f1}.login-footer p{color:#95a5a6;font-size:.9rem}@media(min-width:769px)and (max-width:1024px){.login-box{max-width:500px;padding:45px 50px}.login-header h1{font-size:2rem}}@media(max-width:768px){.login-container{padding:20px;align-items:flex-start;padding-top:10vh}.login-box{max-width:100%;padding:30px 24px;border-radius:12px;margin:0 auto}.login-header{margin-bottom:30px;padding-bottom:15px}.login-header h1{font-size:1.75rem}.login-header h2{font-size:.9rem}.login-form{gap:20px}.form-group input{padding:12px 16px;font-size:16px}.btn-login{padding:14px 20px;font-size:1rem}}@media(max-width:480px){.login-container{padding:15px;padding-top:5vh}.login-box{padding:24px 20px}.login-header h1{font-size:1.5rem}}.role-selector-container{width:100vw;height:100vh;display:flex;justify-content:center;align-items:center;background:linear-gradient(135deg,#2c3e50,#34495e);padding:40px;overflow:auto}.role-selector-box{background:#fff;border-radius:8px;box-shadow:0 8px 32px #0000004d;padding:50px 60px;width:100%;max-width:1200px;border:1px solid rgba(255,255,255,.1)}.role-selector-header{text-align:center;margin-bottom:40px;padding-bottom:25px;border-bottom:2px solid #ecf0f1}.role-selector-header h1{color:#2c3e50;font-size:2.5rem;margin-bottom:15px;font-weight:700;letter-spacing:-.5px}.user-welcome{color:#34495e;font-size:1.2rem;margin-bottom:8px;font-weight:500}.user-welcome strong{color:#2c3e50;font-weight:700}.user-email{color:#7f8c8d;font-size:1rem;font-style:italic}.roles-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:24px;margin-bottom:40px}.role-card{background:#f8f9fa;border:2px solid #dfe6e9;border-radius:8px;padding:35px 30px;text-align:center;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden}.role-card:before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(90deg,#3498db,#2980b9);transform:scaleX(0);transition:transform .3s}.role-card:hover{border-color:#3498db;background:#fff;transform:translateY(-8px);box-shadow:0 12px 32px #3498db33}.role-card:hover:before{transform:scaleX(1)}.role-icon{font-size:4rem;margin-bottom:15px;display:block;filter:drop-shadow(0 2px 4px rgba(0,0,0,.1))}.role-name{font-size:1.3rem;font-weight:700;color:#2c3e50;margin-bottom:10px;line-height:1.3}.role-code{font-size:.9rem;color:#7f8c8d;margin-bottom:15px;font-family:Courier New,monospace;background:#e8e8e8;padding:6px 12px;border-radius:4px;display:inline-block;font-weight:600;letter-spacing:1px}.role-description{font-size:.95rem;color:#555;line-height:1.6;margin-top:10px}.role-selector-footer{text-align:center;padding-top:25px;border-top:2px solid #ecf0f1}.btn-logout{background:#e74c3c;color:#fff;border:none;padding:12px 28px;border-radius:6px;font-size:.95rem;font-weight:600;cursor:pointer;transition:all .2s;text-transform:uppercase;letter-spacing:.5px;box-shadow:0 4px 12px #e74c3c4d}.btn-logout:hover{background:#c0392b;transform:translateY(-2px);box-shadow:0 6px 16px #e74c3c66}.btn-logout:active{transform:translateY(0)}.role-card-disabled{opacity:.6;cursor:not-allowed!important;background:#f8f9fa!important}.role-card-disabled:hover{transform:none!important;border-color:#dfe6e9!important;box-shadow:none!important}.municipality-dropdown{width:100%;padding:12px 40px 12px 16px;font-size:.95rem;border:2px solid #dfe6e9;border-radius:6px;background:#fff;color:#2c3e50;cursor:pointer;transition:all .2s;font-family:inherit;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23333333' d='M6 9L1 4h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center}.municipality-dropdown:hover{border-color:#3498db;box-shadow:0 2px 8px #3498db26}.municipality-dropdown:focus{outline:none;border-color:#3498db;box-shadow:0 0 0 3px #3498db1a}.municipality-dropdown:disabled{background-color:#f8f9fa;cursor:not-allowed;opacity:.6}.municipality-dropdown option{padding:10px}@media(min-width:769px)and (max-width:1024px){.role-selector-box{max-width:900px;padding:45px 50px}.roles-grid{grid-template-columns:repeat(2,1fr);gap:20px}.role-selector-header h1{font-size:2.2rem}}@media(max-width:768px){.role-selector-container{padding:20px;align-items:flex-start;padding-top:5vh}.role-selector-box{max-width:100%;padding:30px 24px;border-radius:12px}.role-selector-header{margin-bottom:30px;padding-bottom:20px}.role-selector-header h1{font-size:1.75rem}.user-welcome{font-size:1.05rem}.roles-grid{grid-template-columns:1fr;gap:16px;margin-bottom:30px}.role-card{padding:25px 20px}.role-icon{font-size:3rem}.role-name{font-size:1.15rem}.role-description{font-size:.9rem}}@media(max-width:480px){.role-selector-container{padding:15px;padding-top:3vh}.role-selector-box{padding:24px 20px}.role-selector-header h1{font-size:1.5rem}.role-card{padding:20px 16px}.role-icon{font-size:2.5rem}}
