/* Identidad del CRM aplicada a la App móvil. Los valores base están en crm-tokens.css. */
@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url('/assets/geist-latin.woff2') format('woff2')}
@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url('/assets/geist-latin-ext.woff2') format('woff2');unicode-range:U+0100-02FF,U+0300-036F,U+1E00-1EFF,U+20A0-20CF}
:root{
  font-family:var(--font-ui);color:var(--text-primary);background:var(--app-background);
  --navy:var(--brand-primary);--gold:var(--brand-accent);--muted:var(--text-secondary);
  --green:var(--success);--radius:var(--radius-panel);
}
body{background:var(--app-background);color:var(--text-primary);font-size:var(--text-body);line-height:1.5}
::selection{background:var(--selection-background);color:var(--brand-primary)}
button:disabled{cursor:not-allowed;opacity:var(--disabled-opacity)}
button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,[role=button]:focus-visible{outline:2px solid var(--brand-primary);outline-offset:3px}
h1{font-size:clamp(1.6rem,4.5vw,1.875rem);letter-spacing:var(--tracking-title);line-height:1.2;font-weight:var(--weight-bold)}
h2{font-size:1.125rem;font-weight:var(--weight-semibold);letter-spacing:-.025em}
h3{font-weight:var(--weight-semibold)}
.shell{padding:0 16px 116px;max-width:1080px}
.top{margin:0 -16px;padding:16px;gap:12px;min-height:88px;background:linear-gradient(110deg,var(--premium-nav-light),var(--premium-nav));color:var(--nav-text-active)}
.brand{min-width:0;gap:12px;font-weight:var(--weight-semibold);letter-spacing:normal}
.brand img{width:140px;height:auto;aspect-ratio:2081/687;object-fit:contain;border-radius:0;flex:none}
.brand-label{display:grid;gap:1px;font-size:16px;line-height:1.35;border-left:1px solid rgb(255 255 255 / 20%);padding-left:12px;white-space:nowrap}
.brand-label small{font-size:10px;color:var(--crm-heading-muted);font-weight:400}
.top .sync-button{border-color:rgb(255 255 255 / 22%);border-radius:var(--radius-control);background:rgb(255 255 255 / 7%);color:var(--crm-heading-accent);font-size:12px;padding:0 10px;min-height:44px}
.top .sync-button:hover:not(:disabled){background:rgb(255 255 255 / 12%)}
.top :focus-visible{outline-color:var(--crm-heading-accent)}
.sync-bar{margin:0 -16px 20px;padding:12px 16px;background:var(--surface);border:1px solid var(--border);border-top:0;border-radius:0 0 var(--radius-panel) var(--radius-panel);font-size:11px;line-height:1.5}
.sync-info{gap:4px 12px}
.sync-info a{color:var(--brand-primary)}
.dot{background:var(--success)}
.dot.offline{background:var(--warning)}
.heading{margin:22px 0 20px}
.heading p{font-size:var(--text-body);color:var(--premium-ink)}
.eyebrow{color:var(--brand-primary);font-size:11px;letter-spacing:.1em;font-weight:var(--weight-semibold)}
.back{font-size:13px;color:var(--brand-primary)}
.card{border-color:var(--border);border-radius:var(--radius-panel);box-shadow:var(--shadow-card);background:var(--surface);padding:18px}
.card-link{min-height:80px;transition:background-color var(--motion-fast),border-color var(--motion-fast)}
.card-link:hover{background:var(--row-hover);border-color:var(--border-strong);transform:none}
.card-link small,.building-access small{font-size:12px;color:var(--text-secondary)}
.icon-box{background:var(--record-active-background);color:var(--brand-primary);border-radius:var(--radius-control)}
.section-title{background:var(--crm-heading-background);color:var(--crm-heading-text);border-radius:var(--radius-control);padding:12px 16px;min-height:48px;margin:24px 0 12px}
.section-title h2{font-size:14px;font-weight:var(--weight-semibold)}
.section-title small{color:var(--crm-heading-muted);font-size:11px}
.stack{gap:12px}
.grid{gap:12px}
.row{border-color:var(--border)}
.button{min-height:var(--touch-height);border-radius:var(--radius-control);background:var(--button-primary-background);color:var(--button-primary-text);font-size:14px;font-weight:var(--weight-semibold);padding:10px 14px;box-shadow:none;line-height:1.4}
.button:hover:not(:disabled){background:var(--brand-primary-hover)}
.button.secondary{border-color:var(--border-strong);background:var(--button-secondary-background);color:var(--button-secondary-text)}
.button.secondary:hover:not(:disabled){background:var(--surface-secondary)}
.button.danger{background:var(--danger);color:var(--nav-text-active)}
.text-button{color:var(--brand-primary);border-radius:var(--radius-control);font-size:13px;font-weight:var(--weight-semibold);min-height:44px}
.text-button:hover{background:var(--interaction-wash)}
.visit-action{border-radius:var(--radius-control);box-shadow:var(--shadow-card);font-size:14px;font-weight:var(--weight-semibold);min-height:52px}
.visit-action[data-accion="ausente"]{background:var(--danger);color:var(--nav-text-active);border-color:var(--danger)}
.visit-action[data-accion="ausente"]:hover{background:color-mix(in srgb,var(--danger) 85%,var(--brand-primary))}
.visit-action.visitado{background:var(--brand-primary);color:var(--crm-heading-accent);border-color:var(--brand-primary)}
.visit-action.visitado:hover{background:var(--brand-primary-hover)}
.visit-actions{background:var(--app-background)}
.acciones-rapidas .visit-action{font-size:13px}
.acciones-ficha .button{font-size:13px;min-height:48px}
.status-card{border-left:3px solid var(--brand-accent)}
.status-card h2{font-size:24px;color:var(--brand-primary)}
.status-card p{font-size:13px}
.badge{border-radius:var(--radius-badge);font-size:11px;padding:var(--badge-padding);font-weight:var(--weight-semibold);background:var(--status-inactive-background);color:var(--status-inactive-text)}
.badge.AUSENTE{background:var(--status-pending-background);color:var(--status-pending-text)}
.badge.VISITADO,.badge.CONTACTADO{background:var(--status-active-background);color:var(--status-active-text)}
.badge.PENDIENTE{background:var(--status-inactive-background);color:var(--status-inactive-text)}
.badge.ERROR,.badge.RECHAZADO,.badge.CONFLICTO{background:var(--status-danger-background);color:var(--danger)}
.barra{background:var(--record-active-background);height:5px}
.barra i{background:var(--success)}
.field{font-size:var(--text-label);color:var(--text-primary);font-weight:var(--weight-semibold);gap:7px}
.input{border-color:var(--border-strong);border-radius:var(--radius-control);min-height:48px;padding:10px 14px;color:var(--text-primary);background:var(--surface);font-family:var(--font-ui);font-size:16px;font-weight:400;line-height:1.5}
.input:focus-visible{border-color:var(--brand-primary)}
.input::placeholder{color:var(--text-secondary);opacity:1}
textarea.input{line-height:1.6}
input[type=checkbox],input[type=radio]{accent-color:var(--brand-primary)}
.notice{background:var(--status-pending-background);border-color:var(--brand-accent);color:var(--status-pending-text);border-radius:var(--radius-control);font-size:13px}
.notice.error{background:var(--status-danger-background);color:var(--danger)}
.notice.success{background:var(--status-active-background);color:var(--status-active-text)}
.timeline li{border-color:var(--border-strong)}
.timeline li::before{box-shadow:0 0 0 3px var(--app-background)}
.timeline li:first-child::before{background:var(--brand-accent)}
.timeline .when{font-size:12px;color:var(--text-primary)}
.timeline .notes{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-control);padding:12px;font-size:14px}
.timeline .author{font-size:11px;color:var(--text-secondary)}
.nav{background:linear-gradient(110deg,var(--premium-nav-light),var(--premium-nav));border-color:var(--premium-nav);box-shadow:var(--shadow-navigation);padding-top:7px;gap:6px}
.nav a{color:var(--nav-text);font-size:12px;min-height:48px;border-radius:var(--radius-control);align-content:center;flex:1;padding:8px}
.nav a.active{color:var(--crm-heading-accent);background:rgb(255 255 255 / 10%);box-shadow:inset 0 0 0 1px rgb(255 255 255 / 10%)}
.nav a:focus-visible{outline-color:var(--crm-heading-accent)}
.nav-badge{background:var(--brand-accent);color:var(--on-accent)}
dialog{border-radius:var(--radius-panel);box-shadow:var(--shadow-dialog);color:var(--text-primary);border:1px solid var(--border);max-width:560px}
dialog::backdrop{background:var(--backdrop);backdrop-filter:blur(2px)}
.dialog-head{background:var(--crm-heading-background);color:var(--crm-heading-text);padding:14px 18px;border-bottom:0;gap:12px}
.dialog-head h2{font-size:16px;font-weight:var(--weight-semibold)}
.close{width:44px;height:44px;flex:none;border-radius:var(--radius-control);color:var(--nav-text-active);background:rgb(255 255 255 / 10%)}
.dialog-head :focus-visible{outline-color:var(--crm-heading-accent)}
.dialog-body{padding:20px}
.dialog-error{font-size:13px;color:var(--danger)}
.dialog-body p.muted{font-size:13px;line-height:1.6;margin:8px 0 16px}
.building-options>summary,.building-options-body,.propuesta li{border-radius:var(--radius-control)}
.building-options-body{box-shadow:var(--shadow-dialog)}
.building-options>summary:hover,.building-options[open]>summary{background:var(--record-active-background)}
.door-card{border-radius:var(--radius-panel)}
.datos-vivienda dt,.datos-vivienda dd{font-size:14px}
.account-row{font-size:14px;border-color:var(--border)}
.otras-opciones>summary,.street-tools>summary{font-size:13px;color:var(--brand-primary)}
#toast{border-radius:var(--radius-control);background:var(--brand-primary);color:var(--nav-text-active);font-size:13px}
.onboarding{padding:28px 24px;max-width:440px;margin:7vh auto 28px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-panel);box-shadow:var(--shadow-login);width:calc(100% - 32px)}
.onboarding .brand{justify-content:center;margin:0 0 28px}
.onboarding .brand img{width:244px;max-width:100%;height:auto}
.onboarding h1{font-size:26px;text-align:center;color:var(--brand-primary)}
.onboarding>p{text-align:center;font-size:14px;margin:12px 0 24px}
.onboarding form.card{padding:0;border:0;box-shadow:none}
.loading{font-family:var(--font-ui)}
@media(min-width:760px){
  .shell{padding:24px 24px 124px}
  .top{margin:0;padding:18px 24px;border-radius:var(--radius-panel) var(--radius-panel) 0 0}
  .sync-bar{margin:0 0 24px;padding:12px 24px}
  .brand img{width:172px}
  .brand-label{font-size:18px}
  .brand-label small{font-size:11px}
  .card{padding:22px}
  .nav{width:470px;border-radius:var(--radius-panel);padding:7px 10px}
  .onboarding{padding:32px;margin-top:8vh}
  .onboarding .brand img{width:260px}
}
@media(max-width:359px){
  .brand{gap:8px}
  .brand img{width:122px}
  .brand-label{padding-left:8px;font-size:14px}
  .brand-label small{display:none}
  .top{gap:8px}
  .top .sync-button{font-size:11px;padding:0 8px}
  .dialog-body{padding:16px}
}
