:root{--blue-950:#052d6d;--blue-900:#063c91;--blue-800:#0753b8;--blue-600:#1877db;--blue-100:#e8f3ff;--ink:#102b52;--muted:#6c7e99;--line:#dce7f4;--white:#fff;--shadow:0 18px 50px rgba(6,60,145,.15)}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:Inter,Segoe UI,Arial,sans-serif;color:var(--ink);background:#f7fbff}button,input{font:inherit}.portrait-warning{display:none}
.login-page{min-height:100vh;display:grid;grid-template-columns:minmax(420px,1fr) minmax(480px,1.05fr);overflow:hidden;background:linear-gradient(135deg,#eef8ff 0%,#d8edff 50%,#f8fcff 100%)}
.login-visual{position:relative;display:grid;place-items:center;padding:44px;background:radial-gradient(circle at 26% 15%,rgba(255,255,255,.95),transparent 26%),linear-gradient(145deg,#dff1ff,#b9dcfa)}
.login-visual:after{content:"";position:absolute;inset:auto -9% -22% -9%;height:55%;background:rgba(255,255,255,.88);border-radius:50% 50% 0 0/24% 24% 0 0;transform:rotate(-4deg);filter:blur(1px)}
.brand-copy{position:relative;z-index:2;max-width:520px}.brand-copy img{width:min(330px,80%)}.brand-copy h1{font-size:clamp(34px,4vw,64px);margin:34px 0 16px;line-height:1.02}.brand-copy p{font-size:18px;line-height:1.65;color:#466785;max-width:500px}
.login-panel{display:grid;place-items:center;padding:48px}.login-card{width:min(500px,100%);background:rgba(255,255,255,.94);border:1px solid rgba(255,255,255,.8);border-radius:24px;padding:38px;box-shadow:var(--shadow);backdrop-filter:blur(14px)}.login-card .mobile-logo{display:none;width:220px;margin:0 auto 22px}.login-card h2{font-size:34px;margin:0 0 8px}.subtitle{color:var(--muted);margin:0 0 30px}.field{display:grid;gap:8px;margin:0 0 18px}.field label{font-weight:650}.input-wrap{display:flex;align-items:center;border:1px solid var(--line);border-radius:12px;background:#fff;overflow:hidden}.input-wrap:focus-within{border-color:var(--blue-600);box-shadow:0 0 0 4px rgba(24,119,219,.1)}.input-wrap span{padding:0 14px;color:var(--blue-800)}.input-wrap input{border:0;outline:0;width:100%;padding:15px 14px 15px 0;background:transparent}.password-toggle{border:0;background:transparent;padding:13px;cursor:pointer;color:var(--blue-800)}.login-options{display:flex;justify-content:space-between;align-items:center;gap:15px;font-size:14px;margin:4px 0 24px}.login-options a{color:var(--blue-800);text-decoration:none}.remember{display:flex;align-items:center;gap:8px}.primary-btn{width:100%;border:0;border-radius:12px;padding:15px 20px;color:white;font-weight:700;background:linear-gradient(90deg,var(--blue-800),var(--blue-600));cursor:pointer;box-shadow:0 10px 25px rgba(7,83,184,.22)}.primary-btn:disabled{opacity:.65;cursor:wait}.form-message{min-height:22px;margin:14px 0 0;font-size:14px}.form-message.error{color:#b42318}.form-message.success{color:#067647}.footer-note{text-align:center;color:#8190a5;font-size:12px;margin-top:24px}
.app-shell{min-height:100vh;display:grid;grid-template-columns:280px 1fr}.sidebar{height:100vh;position:sticky;top:0;background:linear-gradient(180deg,#06469f,#032f75);color:#fff;display:flex;flex-direction:column;transition:.25s}.sidebar.collapsed{width:88px}.sidebar-head{height:114px;display:flex;align-items:center;padding:20px;border-bottom:1px solid rgba(255,255,255,.12)}.sidebar-logo{width:210px;filter:brightness(0) invert(1)}.collapse-btn{margin-left:auto;border:0;background:rgba(255,255,255,.1);color:#fff;border-radius:10px;width:38px;height:38px;cursor:pointer}.menu{padding:14px 12px;display:grid;gap:7px}.menu-item{display:flex;align-items:center;gap:14px;color:#fff;text-decoration:none;padding:14px;border-radius:12px;font-weight:600;min-height:52px}.menu-item:hover,.menu-item.active{background:linear-gradient(90deg,#1d80e8,#2677d2)}.menu-icon{width:24px;text-align:center;font-size:20px}.sidebar-footer{margin-top:auto;border-top:1px solid rgba(255,255,255,.12);padding:14px}.user-card{display:flex;align-items:center;gap:12px;padding:8px}.avatar{width:46px;height:46px;border-radius:50%;object-fit:cover;background:#d7e9ff;border:2px solid rgba(255,255,255,.8)}.user-meta strong,.user-meta small{display:block}.user-meta small{opacity:.76;margin-top:3px}.logout-btn{margin-top:8px;width:100%;border:0;background:transparent;color:#fff;text-align:left;padding:12px;border-radius:10px;cursor:pointer}.logout-btn:hover{background:rgba(255,255,255,.1)}
.main{min-width:0}.topbar{height:82px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 30px;position:sticky;top:0;z-index:5}.mobile-menu{display:none}.topbar-title{font-weight:700}.notification{border:0;background:#edf5ff;color:var(--blue-900);width:42px;height:42px;border-radius:50%;font-size:18px}.content{padding:34px;max-width:1500px;margin:auto}.welcome h1{font-size:34px;margin:0 0 8px}.welcome p{margin:0;color:var(--muted)}.cards{display:grid;grid-template-columns:repeat(3,minmax(220px,1fr));gap:22px;margin-top:30px}.module-card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:28px;min-height:220px;text-decoration:none;color:var(--ink);box-shadow:0 10px 30px rgba(18,64,120,.06);transition:.2s}.module-card:hover{transform:translateY(-4px);box-shadow:var(--shadow);border-color:#bad8f7}.card-icon{width:72px;height:72px;border-radius:50%;display:grid;place-items:center;background:var(--blue-100);color:var(--blue-900);font-size:30px}.module-card h2{font-size:20px;margin:22px 0 10px}.module-card p{color:var(--muted);line-height:1.55;margin:0}.sidebar.collapsed .sidebar-logo,.sidebar.collapsed .menu-label,.sidebar.collapsed .user-meta{display:none}.sidebar.collapsed .sidebar-head{justify-content:center;padding:20px 10px}.sidebar.collapsed .collapse-btn{margin:0}.sidebar.collapsed .menu-item{justify-content:center}.sidebar.collapsed .user-card{justify-content:center}.sidebar.collapsed .logout-btn{text-align:center}.app-shell:has(.sidebar.collapsed){grid-template-columns:88px 1fr}
@media(max-width:1000px){.cards{grid-template-columns:repeat(2,minmax(220px,1fr))}.app-shell{grid-template-columns:88px 1fr}.sidebar{width:88px}.sidebar-logo,.menu-label,.user-meta{display:none}.sidebar-head,.menu-item,.user-card{justify-content:center}.collapse-btn{display:none}.logout-btn{text-align:center}.content{padding:26px}.login-page{grid-template-columns:1fr 1fr}.brand-copy h1{font-size:40px}}
@media(max-width:760px){.login-page{grid-template-columns:1fr}.login-visual{display:none}.login-panel{padding:22px}.login-card .mobile-logo{display:block}.app-shell{display:block}.sidebar{position:fixed;left:-290px;width:270px;z-index:20;transition:left .25s}.sidebar.open{left:0}.sidebar-logo,.menu-label,.user-meta{display:block}.sidebar-head,.menu-item,.user-card{justify-content:flex-start}.mobile-menu{display:inline-grid;place-items:center;border:0;background:#edf5ff;width:42px;height:42px;border-radius:10px}.cards{grid-template-columns:1fr}.content{padding:22px}.topbar{padding:0 18px}}
@media(orientation:portrait) and (min-width:700px){.portrait-warning{position:fixed;inset:0;z-index:100;display:grid;place-items:center;text-align:center;padding:40px;background:linear-gradient(145deg,#eef8ff,#cfe8ff);color:var(--blue-950)}.portrait-warning div{max-width:500px}.portrait-warning b{font-size:26px;display:block;margin-bottom:12px}.login-page,.app-shell{filter:blur(5px);pointer-events:none}}

/* Registro de usuários */
.no-scrollbar{scrollbar-width:none;-ms-overflow-style:none}.no-scrollbar::-webkit-scrollbar{display:none}.modal-open{overflow:hidden}.topbar-left{display:flex;align-items:center;gap:12px}.topbar-subtitle{display:block;color:var(--muted);font-size:12px;margin-top:3px}.back-link{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;text-decoration:none;background:#edf5ff;color:var(--blue-900);font-size:20px}.users-main{height:100vh;overflow:hidden}.users-content{height:calc(100vh - 82px);display:flex;flex-direction:column;max-width:none}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:22px}.page-heading h1{font-size:30px;margin:0 0 6px}.page-heading p{margin:0;color:var(--muted)}
.btn{border:0;border-radius:12px;min-height:42px;padding:0 18px;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:.18s;white-space:nowrap}.btn:hover{transform:translateY(-1px)}.btn-primary{color:#fff;background:linear-gradient(135deg,#0763ca,#1a84ed);box-shadow:0 8px 22px rgba(9,105,213,.25),0 0 17px rgba(41,148,255,.18)}.btn-secondary{color:#18528d;background:#edf5ff;border:1px solid #d4e7fa}.btn-ghost{color:var(--blue-800);background:transparent;border:1px solid #cfe3f8}.btn-danger{color:#fff;background:#c93131;box-shadow:0 8px 20px rgba(201,49,49,.2)}
.toolbar-card{display:grid;grid-template-columns:minmax(250px,1fr) 220px 200px auto;gap:12px;background:#fff;border:1px solid var(--line);padding:14px;border-radius:17px;box-shadow:0 8px 28px rgba(18,64,120,.06);margin-bottom:16px}.search-box{display:flex;align-items:center;border:1px solid var(--line);border-radius:12px;background:#fafdff}.search-box:focus-within{border-color:#7bb9f5;box-shadow:0 0 0 4px rgba(24,119,219,.08)}.search-box span{padding-left:14px;color:var(--blue-800);font-size:21px}.search-box input,.filter-select,.control{width:100%;border:1px solid var(--line);border-radius:12px;background:#fff;color:var(--ink);outline:0;padding:12px 14px}.search-box input{border:0;background:transparent}.filter-select:focus,.control:focus{border-color:#6daff0;box-shadow:0 0 0 4px rgba(24,119,219,.08)}
.table-card{min-height:0;flex:1;background:#fff;border:1px solid var(--line);border-radius:19px;box-shadow:0 10px 35px rgba(18,64,120,.07);overflow:hidden;display:flex;flex-direction:column}.table-scroll{overflow:auto;min-height:0;flex:1;position:relative}.users-table{width:100%;border-collapse:separate;border-spacing:0;min-width:850px}.users-table th{position:sticky;top:0;z-index:2;background:#edf6ff;color:#27557f;font-size:12px;text-transform:uppercase;letter-spacing:.045em;text-align:left;padding:16px 18px;border-bottom:1px solid #d5e5f5}.users-table td{padding:15px 18px;border-bottom:1px solid #edf2f7;vertical-align:middle}.users-table tbody tr:hover{background:#f8fbff}.actions-heading{text-align:center!important}.table-user{display:flex;align-items:center;gap:12px}.table-user strong,.table-user small{display:block}.table-user small{color:var(--muted);margin-top:4px}.table-avatar{width:42px;height:42px;border-radius:13px;display:grid;place-items:center;background:linear-gradient(145deg,#dcebff,#eff7ff);color:var(--blue-900);font-weight:800;border:1px solid #c9e2fb}.status-badge,.role-badge{display:inline-flex;align-items:center;gap:7px;border-radius:999px;padding:7px 11px;font-size:12px;font-weight:750}.status-badge i{width:7px;height:7px;border-radius:50%}.status-badge.active{color:#087443;background:#e8f8ef}.status-badge.active i{background:#10a761}.status-badge.inactive{color:#687386;background:#edf0f4}.status-badge.inactive i{background:#8791a0}.status-badge.pending{color:#95600a;background:#fff4d9}.status-badge.pending i{background:#e0a11b}.role-badge{color:#155aa3;background:#e9f3ff}.row-actions{display:flex;justify-content:center;gap:8px}.table-action{width:36px;height:36px;border:0;border-radius:10px;cursor:pointer;font-size:16px;transition:.18s}.table-action:hover{transform:translateY(-1px);filter:brightness(.98)}.view-action{background:#e9f4ff;color:#0a67c7}.edit-action{background:#e9f7f4;color:#087e67}.delete-action{background:#fff0f0;color:#c63838}.table-footer{height:50px;display:flex;align-items:center;justify-content:space-between;padding:0 18px;color:var(--muted);font-size:12px;border-top:1px solid var(--line);background:#fbfdff}.empty-state{position:absolute;inset:56px 0 0;display:grid;place-content:center;text-align:center;color:var(--muted)}.empty-state[hidden]{display:none}.empty-state div{font-size:40px}.empty-state h3{margin:12px 0 6px;color:var(--ink)}.empty-state p{margin:0}
.modal-backdrop,.confirm-backdrop{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:22px;background:rgba(4,31,67,.5);backdrop-filter:blur(5px)}.modal-backdrop[hidden],.confirm-backdrop[hidden]{display:none}.modal-card{width:min(920px,96vw);max-height:92vh;border-radius:22px;background:#fff;box-shadow:0 28px 80px rgba(4,31,67,.3);overflow:hidden}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:22px 25px;border-bottom:1px solid var(--line);background:linear-gradient(120deg,#f8fcff,#edf7ff)}.modal-header h2{margin:0 0 5px}.modal-header p{margin:0;color:var(--muted)}.icon-btn{width:38px;height:38px;border:0;border-radius:11px;background:#e8f2fc;color:#27557f;font-size:26px;cursor:pointer}.modal-body{max-height:calc(92vh - 156px);overflow:auto;padding:24px 25px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px 18px}.form-span-2{grid-column:span 2}.control:disabled{background:#f2f5f8;color:#6c7788}.field-help{color:var(--muted);margin-top:2px}.permissions-heading{display:flex;justify-content:space-between;align-items:center;gap:16px;margin:28px 0 12px}.permissions-heading h3{margin:0 0 5px}.permissions-heading p{margin:0;color:var(--muted);font-size:13px}.permissions-table-wrap{border:1px solid var(--line);border-radius:15px;overflow:hidden}.permissions-table{width:100%;border-collapse:collapse}.permissions-table th{background:#edf6ff;color:#315d85;font-size:12px;text-transform:uppercase;padding:13px;text-align:center}.permissions-table th:first-child,.permissions-table td:first-child{text-align:left}.permissions-table td{padding:13px;border-top:1px solid #edf2f7;text-align:center}.permission-switch{display:inline-flex;position:relative}.permission-switch input{position:absolute;opacity:0}.permission-switch span{width:42px;height:24px;border-radius:999px;background:#d6dde6;display:block;position:relative;cursor:pointer;transition:.2s}.permission-switch span:after{content:"";position:absolute;width:18px;height:18px;top:3px;left:3px;border-radius:50%;background:#fff;box-shadow:0 2px 5px rgba(0,0,0,.18);transition:.2s}.permission-switch input:checked+span{background:linear-gradient(90deg,#0873db,#1a91f5);box-shadow:0 0 12px rgba(22,139,239,.22)}.permission-switch input:checked+span:after{transform:translateX(18px)}.permission-switch input:disabled+span{cursor:not-allowed;opacity:.7}.modal-footer{display:flex;justify-content:flex-end;gap:10px;padding:16px 25px;border-top:1px solid var(--line);background:#fbfdff}.confirm-card{width:min(430px,94vw);background:#fff;border-radius:20px;padding:28px;text-align:center;box-shadow:0 28px 80px rgba(4,31,67,.3)}.confirm-icon{width:56px;height:56px;border-radius:50%;display:grid;place-items:center;margin:auto;background:#fff0f0;color:#c63838;font-size:30px;font-weight:800}.confirm-card h2{margin:18px 0 8px}.confirm-card p{color:var(--muted);line-height:1.5}.confirm-actions{display:flex;justify-content:center;gap:10px;margin-top:22px}.toast-container{position:fixed;right:24px;bottom:24px;z-index:150;display:grid;gap:10px}.toast{min-width:270px;padding:14px 18px;border-radius:12px;background:#087448;color:#fff;box-shadow:0 12px 30px rgba(0,0,0,.2);animation:toastIn .2s ease}.toast.error{background:#b42318}@keyframes toastIn{from{transform:translateY(10px);opacity:0}}
@media(max-width:1150px){.toolbar-card{grid-template-columns:1fr 180px 170px}.toolbar-card .btn-secondary{grid-column:3}.users-content{padding:24px}.users-table th,.users-table td{padding-left:13px;padding-right:13px}}

/* Ajustes estruturais: somente a área de conteúdo permitida deve rolar */
html,body{height:100%;overflow:hidden}.app-shell{height:100vh;min-height:0;overflow:hidden}.sidebar{position:sticky;top:0;height:100vh;min-height:100vh;overflow:hidden}.main{height:100vh;min-height:0;overflow:hidden}.users-content{overflow:hidden}.table-card{min-height:0}.table-scroll{overscroll-behavior:contain}

/* Foto de perfil no cadastro */
.profile-photo-field{grid-column:span 2;display:flex;align-items:center;gap:18px;padding:16px;border:1px solid var(--line);border-radius:16px;background:#f8fbff}.profile-photo-preview{width:82px;height:82px;min-width:82px;border-radius:22px;object-fit:cover;border:3px solid #fff;box-shadow:0 7px 22px rgba(21,92,166,.16);background:#e6f2ff}.profile-photo-actions{display:flex;flex-direction:column;align-items:flex-start;gap:8px}.profile-photo-actions p{margin:0;color:var(--muted);font-size:13px;line-height:1.4}.photo-buttons{display:flex;gap:9px;flex-wrap:wrap}.file-input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.btn-small{min-height:36px;padding:0 13px;font-size:12px}.table-avatar.has-photo{overflow:hidden;padding:0}.table-avatar.has-photo img{width:100%;height:100%;object-fit:cover}.avatar{object-fit:cover}

/* Modal com cabeçalho e rodapé fixos, sem cortar botões */
.user-modal-card{display:flex;flex-direction:column;max-height:min(92vh,850px)}.user-modal-card form{display:flex;flex-direction:column;min-height:0;flex:1}.user-modal-card .modal-body{max-height:none;min-height:0;flex:1;padding-bottom:30px}.user-modal-card .modal-footer{flex:0 0 auto;min-height:76px;padding:16px 25px 18px;position:relative;z-index:2}.user-modal-card .modal-footer .btn{min-width:135px}

@media(max-height:720px){.modal-backdrop{padding:12px}.user-modal-card{max-height:96vh}.modal-header{padding:16px 22px}.user-modal-card .modal-body{padding:18px 22px 26px}.user-modal-card .modal-footer{min-height:68px;padding:12px 22px 14px}.permissions-heading{margin-top:20px}}


/* Layout mestre: somente as linhas da tabela rolam */
.users-table-layout{display:grid;grid-template-rows:auto minmax(0,1fr) 50px;overflow:hidden}
.table-head-viewport{overflow:hidden;background:#edf6ff;border-bottom:1px solid #d5e5f5;flex:0 0 auto}
.table-body-viewport{min-height:0;overflow:auto;position:relative;overscroll-behavior:contain}
.users-table-head,.users-table-body{table-layout:fixed;min-width:850px}
.users-table-head th{position:static;border-bottom:0}
.users-table-body td{box-sizing:border-box}
.users-table .col-user{width:34%}
.users-table .col-phone{width:17%}
.users-table .col-status{width:18%}
.users-table .col-role{width:18%}
.users-table .col-actions{width:13%}
.table-body-viewport .empty-state{inset:0}
.avatar-initials{display:grid;place-items:center;font-weight:800;letter-spacing:.03em;background:linear-gradient(145deg,#e8f4ff,#cfe7ff);color:#0753b8;box-shadow:0 0 14px rgba(25,125,255,.18)}

.reset-action{background:#f1ecff;color:#6c43bd}.credentials-card{width:min(560px,94vw)}.credentials-body{padding:26px;display:grid;gap:14px}.success-mark{width:62px;height:62px;border-radius:50%;display:grid;place-items:center;margin:0 auto 6px;background:#e8f8ef;color:#087443;font-size:34px;font-weight:800;box-shadow:0 0 18px rgba(16,167,97,.16)}.credential-row{display:grid;gap:6px;padding:14px 16px;border:1px solid var(--line);border-radius:14px;background:#f8fbff}.credential-row span{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.credential-row strong,.credential-row code{font-size:16px;color:var(--ink);word-break:break-word}.credential-password{background:#eef7ff;border-color:#cfe4fb}.credential-password code{font-size:20px;font-weight:800;letter-spacing:.08em;color:var(--blue-900)}.credentials-copy{width:100%;margin-top:4px}.credentials-card .modal-footer{justify-content:space-between}.credentials-card .modal-footer .btn{min-width:130px}

.password-page{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 20% 15%,#eaf6ff 0,transparent 35%),linear-gradient(135deg,#d9eeff,#f8fcff)}
.password-card{width:min(470px,94vw);background:#fff;border:1px solid #d9e8f6;border-radius:24px;padding:30px;box-shadow:0 22px 60px rgba(11,76,145,.18),0 0 24px rgba(30,132,255,.1)}
.password-card>img{display:block;width:150px;max-height:75px;margin:0 auto 12px}.password-icon{width:64px;height:64px;border-radius:20px;display:grid;place-items:center;margin:0 auto 12px;background:#eaf5ff;font-size:30px;box-shadow:0 0 20px rgba(26,124,255,.15)}
.password-card h1{text-align:center;color:var(--ink);margin:0 0 8px}.password-card>p{text-align:center;color:var(--muted);margin:0 0 24px}.password-rules{display:grid;gap:6px;margin:-4px 0 18px;padding:14px;border-radius:14px;background:#f6faff;color:#687b91;font-size:13px}.password-rules .valid{color:#087443;font-weight:700}.link-button{display:block;margin:15px auto 0;border:0;background:transparent;color:var(--blue-700);cursor:pointer;font-weight:700}


.empty-state{
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:18px;
    min-height:420px;
    text-align:center;
    padding:40px;
}

.empty-state-image{
    width:260px;
    max-width:90%;
    opacity:.95;
    user-select:none;
    pointer-events:none;
}

.empty-state h3{
    margin:0;
    font-size:30px;
    font-weight:700;
    color:#0b2f63;
}

.empty-state p{
    margin:0;
    font-size:18px;
    color:#667a99;
    max-width:420px;
    line-height:1.5;
}