/* Navegación y adaptación móvil unificadas para web y APK. */
.mobile-menu-button,.mobile-menu-close,.nav-backdrop{display:none}
.session-restoring #login{visibility:hidden}
.shell>aside nav button{display:flex;align-items:center;gap:11px}
.shell>aside .brand b{position:static!important;display:block;margin-top:6px;color:#16bceb;font-size:8px;letter-spacing:1px;text-align:center;white-space:normal}
.nav-icon{width:22px;min-width:22px;text-align:center;color:var(--blue);font-size:17px;line-height:1}
.builder-preview-panel{height:auto;border-right:0;padding:0;display:block;background:linear-gradient(145deg,#0f2947ee,#091d35ee)}
.ptt,.ptt *{-webkit-user-select:none!important;user-select:none!important;-webkit-touch-callout:none!important}
.ptt{touch-action:none!important;-webkit-tap-highlight-color:transparent;overscroll-behavior:contain}
.ptt:focus-visible{outline:3px solid #fff;outline-offset:5px}
.report-table-wrap{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
.active-speaker{position:fixed;z-index:1050;top:86px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:12px;max-width:min(620px,calc(100vw - 28px));padding:12px 18px;border:1px solid #1fc7ff80;border-radius:14px;background:#071a31f2;box-shadow:0 14px 48px #0009,0 0 28px #12bff433;color:#fff;backdrop-filter:blur(14px)}
.active-speaker.hidden{display:none}
.active-speaker small{display:block;color:#42d7ff;font-size:9px;letter-spacing:1.7px}
.active-speaker b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px}
.speaker-pulse{width:13px;height:13px;flex:0 0 13px;border-radius:50%;background:#20d8ff;box-shadow:0 0 0 0 #20d8ff99;animation:speakerPulse 1.15s infinite}
@keyframes speakerPulse{70%{box-shadow:0 0 0 12px #20d8ff00}100%{box-shadow:0 0 0 0 #20d8ff00}}

@media(max-width:850px){
  .shell>aside .brand b{position:static;display:block;margin-top:5px;text-align:center;white-space:normal;letter-spacing:1px}
  html,body{max-width:100%;overflow-x:hidden}
  .shell{display:block;min-height:100dvh}
  .shell>aside{position:fixed;z-index:1200;inset:0 auto 0 0;width:min(310px,86vw);height:100dvh;padding:26px 16px 20px;background:#061225;display:flex;transform:translateX(-105%);transition:transform .24s ease;box-shadow:18px 0 60px #000a;overflow-y:auto}
  .shell.menu-open>aside{transform:translateX(0)}
  .shell>aside .brand{width:190px;min-height:72px;margin:8px 0 22px}
  .shell>aside .brand img{display:block;width:190px;height:auto;object-fit:contain}
  .shell>aside .brand b{left:91px}
  .shell>aside nav{display:grid;overflow:visible;margin:0;gap:5px}
  .shell>aside nav button{font-size:13px!important;padding:13px 12px;white-space:normal;width:100%}
  .shell>aside nav button::first-letter{font-size:inherit}
  .shell>aside .user-card{position:static;margin-top:auto;border-top:1px solid var(--line);padding-top:15px}
  .shell>aside .user-card div,.shell>aside .user-card button{display:block}
  .mobile-menu-close{display:grid;place-items:center;position:absolute;right:12px;top:20px;width:42px;height:42px;border:1px solid var(--line);border-radius:10px;background:#0d2947;color:#fff;font-size:25px}
  .mobile-menu-button{display:grid;place-items:center;flex:0 0 42px;width:42px;height:42px;border:1px solid var(--line);border-radius:10px;background:#0d2947;color:#fff;font-size:20px}
  .nav-backdrop{position:fixed;display:block;z-index:1100;inset:0;border:0;background:#020912b8}
  header{position:sticky;z-index:900;top:0;min-height:72px;height:auto;padding:10px 12px;gap:10px;background:#07172bf5}
  .header-title{min-width:0;flex:1}
  header h2{font-size:17px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .header-actions{flex:0 1 auto;max-width:48%;gap:6px}
  .header-actions .sos{padding:10px 8px;font-size:8px}
  .active-speaker{top:80px;width:calc(100vw - 24px);padding:11px 14px}
  .company-context{max-width:120px;width:100%}
  .view{padding:10px}
  .metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .metrics article,.panel,.radio-card{border-radius:11px}
  .metrics article{padding:13px}
  .metrics strong{font-size:22px}
  .grid,.form-builder-layout{grid-template-columns:minmax(0,1fr)}
  .panel,.panel.wide,.map-panel{min-width:0;max-width:100%;grid-column:auto}
  .panel-title{padding:13px;flex-wrap:wrap}
  .panel-title>div{min-width:0;flex:1 1 180px}
  .panel-title button{max-width:100%}
  .map-shell{height:52vh;min-height:330px;max-height:520px}
  .radio-card{width:100%;max-width:440px;margin:12px auto;padding:20px 14px}
  .ptt{width:min(68vw,230px);height:min(68vw,230px);margin:28px auto 18px}
  .ptt span{font-size:50px}
  .detail-grid{grid-template-columns:1fr}
  .detail-history,.gps-tools,.gps-route{grid-column:auto;max-width:100%;overflow-x:auto}
  .list-row,.tx{align-items:flex-start;flex-wrap:wrap;padding:12px}
  .list-row>div,.tx>div{flex:1 1 calc(100% - 50px)}
  .operational-record{grid-template-columns:38px minmax(0,1fr);padding:13px;align-items:start}
  .record-evidence{grid-column:1/-1;flex-wrap:wrap;padding-left:50px}
  .evidence-photo{max-width:min(230px,100%)}
  .operational-form,.dynamic-fields,.user-form-grid,.user-editor-grid,.builder-settings,.builder-field-top,.builder-field-meta,.report-filter-grid{grid-template-columns:1fr!important}
  .operational-form .full,.dynamic-fields .full{grid-column:auto}
  .form-actions,.attendance-actions{flex-direction:column}
  .form-actions button,.attendance-actions button{width:100%}
  .builder-header{padding:14px}
  .builder-fields{padding:12px}
  .builder-toolbar{padding:12px}
  .builder-preview-panel{height:auto!important;padding:0!important}
  canvas{max-width:100%;height:auto}
  input,select,textarea,button{max-width:100%}
}

@media(max-width:430px){
  .metrics{grid-template-columns:1fr 1fr}
  .metrics span{font-size:9px}
  .header-actions{max-width:44%}
  .header-actions .company-context{display:none}
  .login-page{padding:10px}
  .login-card{border-radius:16px;padding:22px 16px}
}
.shell>aside{overflow:hidden}
.shell>aside>.brand{flex:0 0 auto;margin-bottom:20px}
.shell>aside>nav{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;padding-right:5px;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#1b668e #07172b}
.shell>aside>nav::-webkit-scrollbar{width:7px}
.shell>aside>nav::-webkit-scrollbar-track{background:#07172b;border-radius:8px}
.shell>aside>nav::-webkit-scrollbar-thumb{background:#1b668e;border-radius:8px}
.shell>aside>.user-card{flex:0 0 auto}
.user-editor-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.user-editor-grid label{display:flex;flex-direction:column;gap:7px;color:var(--muted);font-size:11px}
.user-editor-grid input,.user-editor-grid select{width:100%;background:#08182c;color:#fff;border:1px solid var(--line);border-radius:9px;padding:12px;outline:none}
.user-editor-grid .full{grid-column:1/-1}
