html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{overflow-x:hidden}
img,svg{max-width:100%}
[hidden]{display:none!important}
button,a,input,select{touch-action:manipulation}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid rgba(242,138,0,.38);outline-offset:2px}
.sidebar-close,.sidebar-overlay,.login-mobile-brand{display:none}
.password-field{position:relative}
.password-field input{padding-right:48px}
.password-toggle{position:absolute;right:4px;top:4px;width:38px;height:38px;border:0;border-radius:7px;background:transparent;color:#006633;display:grid;place-items:center;cursor:pointer}
.password-toggle:hover{background:#eef6f0}
.is-submitting{pointer-events:none;opacity:.78}
.loading-spinner{display:inline-block;animation:responsive-spin .8s linear infinite}
.chart-legend:empty{display:none}
.legend-button{appearance:none;border:1px solid #d7e3dc;border-radius:999px;background:#fff;padding:7px 10px;color:#294f43;cursor:pointer;transition:background .16s,border-color .16s,opacity .16s,transform .16s}
.legend-button:hover{border-color:#006633;background:#f1f8f3;transform:translateY(-1px)}
.legend-button[aria-pressed="true"]{border-color:#006633;background:#e5f3e9;color:#004d27;font-weight:800;box-shadow:0 0 0 2px rgba(0,102,51,.08)}
.legend-button.muted{opacity:.48}
.legend-button .legend-dot{width:9px;height:9px;box-shadow:0 0 0 2px rgba(255,255,255,.85)}
@keyframes responsive-spin{to{transform:rotate(360deg)}}

@media(max-width:1100px){
  .login-layout{display:block;width:100%;min-width:0;min-height:100dvh;overflow-x:hidden;background:linear-gradient(160deg,#003d28 0,#00613a 34%,#f5f6f3 34%)}
  .login-panel{width:100%;min-width:0;min-height:100dvh;display:flex;flex-direction:column;justify-content:center;gap:24px;padding:clamp(28px,6vw,64px)}
  .login-mobile-brand{display:flex;flex-direction:column;align-items:center;gap:8px;width:min(430px,100%);min-width:0;max-width:100%;margin:0 auto;color:#fff;text-align:center}
  .login-mobile-brand img{width:min(330px,82vw);height:74px;object-fit:contain;filter:drop-shadow(0 7px 14px rgba(0,0,0,.14))}
  .login-mobile-brand small{text-transform:uppercase;letter-spacing:.12em;font-size:9px;color:#f5c353;font-weight:800}
  .login-card{width:min(430px,100%);min-width:0;max-width:100%;margin:0 auto;background:#fff;border:1px solid #dfe7e1;border-top:4px solid #d86d01;border-radius:16px;padding:clamp(24px,5vw,38px);box-shadow:0 22px 55px rgba(0,50,31,.18)}
  .login-card input,.login-card .password-field{width:100%;min-width:0;max-width:100%;box-sizing:border-box}
  .login-card .security-note{white-space:normal;overflow-wrap:anywhere;line-height:1.45}
}

@media(max-width:780px){
  body.nav-open{overflow:hidden;touch-action:none}
  .sidebar{z-index:1001;width:min(88vw,320px)!important;max-width:320px;padding:18px 14px max(18px,env(safe-area-inset-bottom));box-shadow:18px 0 50px rgba(0,35,22,.28);transform:translate3d(-105%,0,0);transition:transform .24s ease;will-change:transform}
  .sidebar.open{transform:translate3d(0,0,0)}
  .sidebar-close{display:grid;place-items:center;position:absolute;z-index:2;right:12px;top:max(12px,env(safe-area-inset-top));width:42px;height:42px;border:1px solid rgba(255,255,255,.24);border-radius:10px;background:rgba(0,34,22,.28);color:#fff;font-size:18px;cursor:pointer}
  .official-brand{padding-right:50px;height:auto;min-height:86px}
  .official-brand img{height:58px}
  .sidebar nav{overscroll-behavior:contain;padding-bottom:12px}
  .nav-link{min-height:46px;padding:9px 11px;font-size:13px}
  .nav-link.sub{padding-left:24px}
  .sidebar-user{padding-bottom:env(safe-area-inset-bottom)}
  .sidebar-overlay{display:block;position:fixed;z-index:1000;inset:0;width:100%;height:100%;border:0;background:rgba(2,28,18,.56);opacity:0;visibility:hidden;pointer-events:none;transition:opacity .2s,visibility .2s;backdrop-filter:blur(2px)}
  .sidebar-overlay.show{opacity:1;visibility:visible;pointer-events:auto}
  .app-shell{width:100%;min-width:0;margin-left:0!important}
  .topbar{z-index:900;height:62px;padding:0 max(12px,env(safe-area-inset-left)) 0 max(12px,env(safe-area-inset-right));gap:6px}
  .menu-button{display:grid;place-items:center;flex:0 0 44px;width:44px;height:44px;margin-right:2px;border-radius:10px;background:#edf5ef;font-size:0;cursor:pointer}
  .top-title{display:flex;align-items:center;gap:6px;min-width:0;font-size:12px;white-space:nowrap}
  .top-title span{overflow:hidden;text-overflow:ellipsis}
  .top-actions{gap:6px}
  .top-actions .base-status-label,.top-actions>.status-dot{display:none}
  .top-actions form{margin-left:0}
  .text-button{min-height:42px;padding:0 9px;border-radius:8px;font-size:11px;background:#fff7ee}
  .content{width:100%;padding:20px max(12px,env(safe-area-inset-right)) max(38px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));overflow:hidden}
  .page-head{gap:15px;margin-bottom:18px}
  .page-head>div:first-child{min-width:0;width:100%}
  .page-head h1{overflow-wrap:anywhere;line-height:1.16}
  .page-head p{line-height:1.5}
  .export-actions{width:100%;display:grid;grid-template-columns:repeat(auto-fit,minmax(105px,1fr));gap:7px}
  .export-actions .btn{width:100%;min-width:0;white-space:nowrap}
  .btn{min-height:44px;padding:10px 13px}
  .panel{padding:16px 14px;border-radius:11px}
  .panel-head{gap:10px;margin-bottom:14px}
  .panel-head>div{min-width:0}
  .panel-head h2{line-height:1.35;overflow-wrap:anywhere}
  .executive-summary{align-items:flex-start;padding:15px 14px}
  .summary-icon{flex:0 0 38px;width:38px;height:38px}
  .executive-summary p{font-size:12px;line-height:1.55}
  .cards-grid,.cards-grid.six{gap:10px}
  .metric-card{padding:15px 14px}
  .metric-card strong{overflow-wrap:anywhere}
  .metric-foot{align-items:flex-start;flex-wrap:wrap;line-height:1.4}
  .filter-bar{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px;padding:14px;margin-bottom:16px}
  .filter-bar>div{min-width:0}
  .filter-bar select,.filter-bar input{width:100%;min-width:0;height:44px}
  .filter-bar .btn{width:100%;align-self:end}
  .crossfilter-state{display:grid;grid-template-columns:1fr auto;gap:10px;padding:12px}
  .crossfilter-state>div:first-child{min-width:0}
  .filter-chips{grid-column:1/-1;order:initial;min-width:0}
  .clear-crossfilter{min-height:38px;padding:7px}
  .chart-wrap,.chart-wrap.large{height:270px;overflow-x:auto;overflow-y:hidden;overscroll-behavior-inline:contain;-webkit-overflow-scrolling:touch}
  .chart-wrap canvas.line-chart,.chart-wrap canvas.combo-chart{min-width:560px}
  .hbar-wrap{height:270px;overflow:auto;-webkit-overflow-scrolling:touch}
  .hbar-chart{min-width:430px}
  .chart-legend{row-gap:8px}
  .legend-button{min-height:40px;padding:8px 11px;font-size:10px}
  .table-panel{overflow:hidden}
  .table-scroll{max-width:100%;overflow:auto;overscroll-behavior-inline:contain;-webkit-overflow-scrolling:touch;border-radius:0 0 10px 10px}
  .table-scroll table:not(.heat-table){min-width:720px}
  .table-search{display:grid;grid-template-columns:minmax(0,1fr) auto;padding:12px}
  .table-search input{width:100%;min-width:0;height:44px}
  .preview-table{min-width:850px!important}
  .source-line{align-items:flex-start;flex-wrap:wrap;line-height:1.55;overflow-wrap:anywhere}
  .source-line .status-dot{margin-top:4px}
  .form-actions,.confirm-bar{gap:8px;flex-wrap:wrap}
  .form-actions>*{flex:1 1 160px}
  .confirm-bar>*{flex:1 1 190px}
  .confirm-bar form .btn,.mapping-action .btn{width:100%}
  .mapping-name{max-width:none}
  .stepper{margin-bottom:22px}
  .stepper span{width:auto;min-width:62px;flex:0 1 90px}
  .duplicate-warning{align-items:flex-start;padding:14px}
  .duplicate-warning>div{min-width:0}
  .detail-list>div,.sheet-list>div{gap:10px;align-items:flex-start}
  .detail-list code{max-width:60%;text-align:right}
  .funnel-step{min-width:62%;max-width:100%}
  .info-icon{width:40px!important;height:40px!important;flex-basis:40px}
  .hover-modal{left:10px!important;right:10px!important;top:auto!important;bottom:max(10px,env(safe-area-inset-bottom))!important;width:auto;padding:18px 48px 18px 17px;border-radius:14px;transform:translateY(24px)}
  .hover-modal.show{transform:none}
  .modal-close{width:36px;height:36px}
  .error-page{padding:70px 18px}
}

@media(max-width:620px){
  .cards-grid,.cards-grid.six,.analysis-cards{grid-template-columns:1fr}
  .filter-bar{grid-template-columns:1fr}
  .filter-bar>div,.filter-bar .btn{grid-column:1}
  .dashboard-grid,.ranking-grid{gap:12px}
  .panel.wide{min-height:0}
  .map-stage{height:52vh;min-height:340px}
  .map-state-summary{display:grid;grid-template-columns:1fr 1fr;gap:10px}
  .map-state-summary span{padding:9px;border-radius:8px;background:#f4f8f5}
  .map-profession-filter button{min-height:44px;font-size:11px}
  .map-zoom button{width:42px;height:42px}
  .map-scale span{font-size:0}
  .map-scale span:first-child:after{content:'Menor';font-size:7px}
  .map-scale span:last-child:after{content:'Maior';font-size:7px}
  .mapping-grid{grid-template-columns:1fr}
  .upload-panel{padding:17px 14px}
  .file-field{padding:14px}
  .form-actions{flex-direction:column-reverse}
  .form-actions>*{width:100%;flex:auto}
  .table-search{grid-template-columns:1fr}
  .table-search .btn{width:100%}
  .login-panel{justify-content:flex-start;padding:24px 14px 32px}
  .login-mobile-brand{margin-top:4vh}
  .login-card{padding:24px 19px}
  .login-card h2{font-size:27px}
  .login-card input{height:48px;font-size:16px}
  .password-toggle{width:40px;height:40px}
}

@media(max-width:380px){
  .top-title span{display:none}
  .content{padding-left:10px;padding-right:10px}
  .page-head h1{font-size:21px}
  .panel{padding:14px 11px}
  .export-actions{grid-template-columns:1fr}
  .crossfilter-state{grid-template-columns:1fr}
  .clear-crossfilter{justify-self:start}
  .stepper span{min-width:54px;font-size:9px}
  .stepper span small{font-size:6px}
}

@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}
