.shell{--bp-phone: 768px;--bp-tablet: 1024px;--topbar-h: 52px;display:grid;grid-template-columns:250px 1fr;min-height:100vh;min-height:100dvh}.topbar,.drawer-backdrop{display:none}.sidebar{background:linear-gradient(180deg,var(--navy) 0%,var(--navy-dark) 100%);color:#fff;padding:1.25rem 1rem;display:flex;flex-direction:column;gap:1.25rem;z-index:40}.brand{display:flex;gap:.75rem;align-items:center;padding:.25rem .4rem}.brand-logo{width:52px;height:auto;object-fit:contain;flex-shrink:0;border-radius:8px;background:#fff;padding:.25rem}.brand strong{display:block;font-size:1rem}.brand small{color:#afc0da;font-size:.78rem}.nav{display:flex;flex-direction:column;gap:.25rem;flex:1}.nav-group{margin-top:.85rem;margin-bottom:.25rem;padding:0 .65rem;font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:#afc0da;font-weight:700}.nav-link{color:#e8eef8;text-decoration:none;padding:.55rem .7rem;border-radius:8px;font-weight:500;font-size:.92rem;min-height:44px;display:flex;align-items:center}.nav-link:hover,.nav-link.active{background:#f6a5322e;color:#fff;text-decoration:none}.sidebar-footer{display:flex;flex-direction:column;gap:.6rem}.user-chip{padding:.55rem .65rem;border-radius:8px;background:#ffffff0f}.user-chip strong{display:block;font-size:.9rem}.user-chip span{color:#afc0da;font-size:.78rem;text-transform:capitalize}.sidebar .btn-ghost{color:#fff;border-color:#ffffff40;min-height:44px}.main{padding:1.5rem 1.75rem 2rem;min-width:0}.shell-bi .main{padding:0;overflow:hidden}.page-title{margin:0 0 .25rem;color:var(--navy);font-size:1.45rem}.page-sub{margin:0 0 1.25rem;color:var(--muted);font-size:.92rem}.card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:1.25rem;box-shadow:var(--shadow)}.menu-toggle{width:44px;height:44px;border:1px solid rgba(255,255,255,.25);border-radius:10px;background:#ffffff14;color:#fff;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0;flex-shrink:0}.menu-toggle-bars,.menu-toggle-bars:before,.menu-toggle-bars:after{display:block;width:18px;height:2px;background:#fff;border-radius:1px;position:relative}.menu-toggle-bars:before,.menu-toggle-bars:after{content:"";position:absolute;left:0}.menu-toggle-bars:before{top:-6px}.menu-toggle-bars:after{top:6px}.topbar-title{font-weight:700;font-size:1rem;color:#fff}@media (max-width: 1024px){.shell{grid-template-columns:1fr;grid-template-rows:var(--topbar-h) 1fr}.topbar{display:flex;align-items:center;gap:.75rem;height:var(--topbar-h);padding:0 .75rem;background:var(--navy);color:#fff;position:sticky;top:0;z-index:50}.sidebar{position:fixed;top:0;left:0;bottom:0;width:min(280px,86vw);transform:translate(-105%);transition:transform .2s ease;overflow-y:auto;box-shadow:none}.shell.drawer-open .sidebar{transform:translate(0);box-shadow:8px 0 28px #0f172a59}.drawer-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a73;opacity:0;pointer-events:none;transition:opacity .2s ease;z-index:35}.shell.drawer-open .drawer-backdrop{opacity:1;pointer-events:auto}.main{padding:1rem 1rem 1.5rem;min-height:calc(100dvh - var(--topbar-h))}.shell-bi .main{height:calc(100dvh - var(--topbar-h));max-height:calc(100dvh - var(--topbar-h));padding:0;overflow:hidden}}@media (min-width: 1025px){.topbar,.drawer-backdrop{display:none!important}.sidebar{position:relative;transform:none!important;width:auto}}.login-page{min-height:100vh;display:grid;place-items:center;padding:1.5rem}.login-card{width:min(400px,100%);background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:1.75rem 1.5rem 1.6rem;box-shadow:var(--shadow);animation:slideUp .2s ease}.login-brand{text-align:center;margin-bottom:1.25rem}.login-logo{display:block;width:min(260px,100%);height:auto;margin:0 auto .9rem;object-fit:contain}.login-brand h1{margin:0;color:var(--navy);font-size:1.4rem}.login-brand p{margin:.35rem 0 0;color:var(--muted);font-size:.9rem}.login-captcha{display:flex;justify-content:center;margin:.25rem 0 1rem;min-height:78px}.bi-embed{margin:-1.5rem -1.75rem -2rem;height:100vh;height:100dvh;background:#f3f5f9}.shell-bi .bi-embed{margin:0;height:100%;max-height:100%}.bi-embed-wait{display:grid;place-items:center;color:#64748b;font-size:.95rem}.bi-iframe{display:block;width:100%;height:100%;border:0}@media (max-width: 1024px){.bi-embed{margin:0;height:100%}}:root{--navy: #1e3056;--navy-dark: #15233f;--navy-muted: #2a4068;--orange: #f6a532;--orange-hover: #e8941f;--bg: #f3f5f9;--surface: #ffffff;--border: #d8dee9;--text: #1e3056;--muted: #64748b;--danger: #c0392b;--danger-bg: #fdecea;--ok: #1f7a4d;--shadow: 0 8px 24px rgba(30, 48, 86, .08);font-family:Manrope,system-ui,sans-serif;color:var(--text);background:var(--bg);line-height:1.45}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{background:radial-gradient(ellipse 80% 50% at 0% 0%,rgba(246,165,50,.12),transparent 50%),radial-gradient(ellipse 60% 40% at 100% 0%,rgba(30,48,86,.08),transparent 45%),var(--bg)}a{color:var(--orange);text-decoration:none}a:hover{text-decoration:underline}button,input,select{font:inherit}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;border:none;border-radius:8px;padding:.55rem 1rem;cursor:pointer;font-weight:600;transition:background .15s ease,transform .1s ease}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--orange);color:var(--navy-dark)}.btn-primary:hover:not(:disabled){background:var(--orange-hover)}.btn-secondary{background:var(--navy);color:#fff}.btn-secondary:hover:not(:disabled){background:var(--navy-muted)}.btn-ghost{background:transparent;color:var(--navy);border:1px solid var(--border)}.btn-danger{background:var(--danger);color:#fff}.field{display:flex;flex-direction:column;gap:.35rem;margin-bottom:.9rem}.field label{font-size:.82rem;font-weight:600;color:var(--muted)}.field input,.field select{border:1px solid var(--border);border-radius:8px;padding:.55rem .7rem;background:#fff}.field input:focus,.field select:focus{outline:2px solid rgba(246,165,50,.45);border-color:var(--orange)}.error-banner{background:var(--danger-bg);color:var(--danger);border-radius:8px;padding:.7rem .9rem;margin-bottom:1rem;font-size:.9rem}.success-banner{background:#e8f6ee;color:var(--ok);border-radius:8px;padding:.7rem .9rem;margin-bottom:1rem;font-size:.9rem}.table-wrap{overflow:auto;border:1px solid var(--border);border-radius:10px;background:var(--surface)}table{width:100%;border-collapse:collapse;font-size:.9rem}th,td{text-align:left;padding:.7rem .85rem;border-bottom:1px solid var(--border);white-space:nowrap}th{background:#eef2f8;color:var(--navy);font-weight:700;cursor:pointer;-webkit-user-select:none;user-select:none}th:hover{background:#e4ebf5}tr:last-child td{border-bottom:none}.badge{display:inline-block;padding:.15rem .5rem;border-radius:999px;font-size:.75rem;font-weight:700}.badge-admin{background:#dde7f7;color:var(--navy)}.badge-filial{background:#fff0d6;color:#8a5a00}.badge-on{background:#e5f6ec;color:var(--ok)}.badge-off{background:#eee;color:#666}.toolbar{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;justify-content:space-between;margin-bottom:1rem}.toolbar-left{display:flex;gap:.6rem;flex-wrap:wrap;align-items:center}.toolbar input[type=search]{min-width:220px;border:1px solid var(--border);border-radius:8px;padding:.5rem .7rem}.pagination{display:flex;gap:.5rem;align-items:center;justify-content:flex-end;margin-top:.9rem;color:var(--muted);font-size:.85rem}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#15233f73;display:flex;align-items:center;justify-content:center;padding:1rem;z-index:50;animation:fadeIn .15s ease}.modal{background:var(--surface);border-radius:12px;width:min(520px,100%);max-height:90vh;overflow:auto;box-shadow:var(--shadow);padding:1.25rem 1.35rem 1.4rem;animation:slideUp .18s ease}.modal h2{margin:0 0 1rem;font-size:1.15rem;color:var(--navy)}.modal-actions{display:flex;justify-content:flex-end;gap:.6rem;margin-top:.5rem}.row-actions{display:flex;gap:.4rem}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
