/* prettier-ignore */
/*# sourceMappingURL=user.css.map */

/* ==========================================
   Estilos específicos por vista
   ========================================== */

/* ===== auth/login.php ===== */
/* ── Layout de pantalla completa ── */
    body { min-height: 100vh; background: var(--phoenix-body-bg); }

    .auth-wrapper {
      min-height: 100vh;
      display: grid;
      grid-template-columns: 1fr 1fr;
    }
    @media (max-width: 991px) {
      .auth-wrapper { grid-template-columns: 1fr; }
      .auth-hero    { display: none; }
    }

    /* ── Panel hero izquierdo ── */
    .auth-hero {
      background: linear-gradient(150deg, #0a3d6b 0%, #1565c0 60%, #1e88e5 100%);
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      padding: 3rem;
      color: #fff;
      position: relative;
      overflow: hidden;
    }
    .auth-hero::before {
      content: '';
      position: absolute;
      inset: 0;
      background: url('/assets/img/laboratorista_hero.png') center/cover no-repeat;
      opacity: .18;
    }
    .auth-hero-content { position: relative; z-index: 1; text-align: center; }
    .auth-hero h1 { font-size: 2.2rem; font-weight: 700; margin-bottom: .5rem; }
    .auth-hero p  { opacity: .85; font-size: 1.05rem; max-width: 360px; }

    /* ── Panel formulario derecho ── */
    .auth-form-panel {
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      padding: 3rem 2rem;
    }
    .auth-card {
      width: 100%;
      max-width: 440px;
    }

    /* ── Tabs de perfil ── */
    .nav-pills-perfil .nav-link {
      border-radius: .5rem;
      padding: .45rem 1.1rem;
      font-size: .875rem;
      color: var(--phoenix-secondary-color);
      border: 1px solid transparent;
      transition: all .2s;
    }
    .nav-pills-perfil .nav-link.active {
      background: var(--phoenix-primary);
      color: #fff;
      border-color: transparent;
    }
    .nav-pills-perfil .nav-link:not(.active):hover {
      border-color: var(--phoenix-border-color);
      background: var(--phoenix-body-bg);
    }

    /* ── Íconos de perfil ── */
    .perfil-icon {
      width: 44px; height: 44px;
      border-radius: 50%;
      display: flex; align-items: center; justify-content: center;
      font-size: 1.3rem;
      margin: 0 auto .75rem;
    }
    .perfil-icon.lab      { background: #e3f0ff; color: #1565c0; }
    .perfil-icon.clinica  { background: #e8f5e9; color: #2e7d32; }
    .perfil-icon.mensajero{ background: #fff3e0; color: #e65100; }

    /* ── Indicador de campo ── */
    .form-control:focus { box-shadow: 0 0 0 .2rem rgba(21,101,192,.18); border-color: #1565c0; }

    /* ── Separador ── */
    .divider-text {
      position: relative; text-align: center; margin: 1.2rem 0;
    }
    .divider-text::before {
      content: ''; position: absolute; top: 50%; left: 0; right: 0;
      height: 1px; background: var(--phoenix-border-color);
    }
    .divider-text span {
      position: relative; background: var(--phoenix-body-bg);
      padding: 0 .75rem; font-size: .8rem;
      color: var(--phoenix-secondary-color);
    }

/* ===== auth/registro.php ===== */
body { min-height: 100vh; background: var(--phoenix-body-bg); }

    .register-wrapper {
      min-height: 100vh;
      display: grid;
      grid-template-columns: 1fr 1fr;
    }
    @media (max-width: 991px) {
      .register-wrapper  { grid-template-columns: 1fr; }
      .register-hero     { display: none; }
    }

    .register-hero {
      background: linear-gradient(150deg, #004d40 0%, #00796b 60%, #26a69a 100%);
      display: flex; flex-direction: column;
      align-items: center; justify-content: center;
      padding: 3rem; color: #fff;
      position: relative; overflow: hidden;
    }
    .register-hero::before {
      content: ''; position: absolute; inset: 0;
      background: url('/assets/img/laboratorista_hero_register.png') center/cover no-repeat;
      opacity: .15;
    }
    .register-hero-content { position: relative; z-index: 1; text-align: center; }
    .register-hero h1 { font-size: 2rem; font-weight: 700; }

    .register-form-panel {
      display: flex; flex-direction: column;
      align-items: center; justify-content: flex-start;
      padding: 2.5rem 2rem; overflow-y: auto;
    }
    .register-card { width: 100%; max-width: 520px; }

    /* Stepper visual */
    .step-indicator { display: flex; gap: 0; margin-bottom: 2rem; }
    .step-item {
      flex: 1; text-align: center; position: relative;
      font-size: .78rem; font-weight: 600; color: var(--phoenix-secondary-color);
    }
    .step-item::before {
      content: attr(data-step);
      display: flex; align-items: center; justify-content: center;
      width: 30px; height: 30px; border-radius: 50%;
      background: var(--phoenix-tertiary-bg);
      border: 2px solid var(--phoenix-border-color);
      margin: 0 auto .4rem;
      font-size: .85rem; transition: all .3s;
    }
    .step-item::after {
      content: ''; position: absolute;
      top: 15px; left: 50%; right: -50%;
      height: 2px; background: var(--phoenix-border-color);
      z-index: -1;
    }
    .step-item:last-child::after { display: none; }
    .step-item.active { color: var(--phoenix-primary); }
    .step-item.active::before {
      background: var(--phoenix-primary); color: #fff;
      border-color: var(--phoenix-primary);
    }
    .step-item.done { color: var(--phoenix-success); }
    .step-item.done::before {
      content: '✓'; background: var(--phoenix-success); color: #fff;
      border-color: var(--phoenix-success);
    }
    .step-item.done::after { background: var(--phoenix-success); }

    /* Pasos */
    .step-pane { display: none; }
    .step-pane.active { display: block; animation: fadeIn .25s ease; }
    @keyframes fadeIn { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }

    .section-label {
      font-size: .7rem; font-weight: 700; text-transform: uppercase;
      letter-spacing: .08em; color: var(--phoenix-secondary-color);
      margin-bottom: .75rem; padding-bottom: .4rem;
      border-bottom: 1px solid var(--phoenix-border-color);
    }

/* ===== laboratorio/arancel.php ===== */
.cat-header {
      background: var(--phoenix-tertiary-bg);
      border-radius: .5rem; padding: .75rem 1rem;
      display: flex; align-items: center; justify-content: space-between;
      cursor: pointer; user-select: none;
      border: 1px solid var(--phoenix-border-color);
    }
    .cat-header:hover { border-color: var(--phoenix-primary); }
    .cat-body { border: 1px solid var(--phoenix-border-color); border-top: 0; border-radius: 0 0 .5rem .5rem; }
    .trabajo-row { display: flex; align-items: center; gap: .5rem; padding: .6rem 1rem; border-bottom: 1px solid var(--phoenix-border-color); }
    .trabajo-row:last-child { border: none; }
    .trabajo-row.inactivo { opacity: .5; }
    .stat-pill { background: var(--phoenix-primary); color: #fff; border-radius: 2rem; padding: .15rem .6rem; font-size: .72rem; font-weight: 600; }

/* ===== laboratorio/clinicas.php ===== */
.clinica-row { cursor:pointer; transition: background .1s; }
    .clinica-row:hover { background: var(--phoenix-tertiary-bg) !important; }
    .panel-detalle { background: var(--phoenix-tertiary-bg); border-radius: .6rem; padding: 1.25rem; }
    .info-row { display:flex; justify-content:space-between; padding:.35rem 0; border-bottom:1px solid var(--phoenix-border-color); font-size:.875rem; }
    .info-row:last-child { border:none; }
    .info-label { color:var(--phoenix-secondary-color); }

/* ===== laboratorio/configuracion.php ===== */
.config-section { border-radius: .65rem; margin-bottom: 1.25rem; }
    .section-label  { font-size:.72rem; font-weight:700; text-transform:uppercase; letter-spacing:.07em; color:var(--phoenix-secondary-color); margin-bottom:1rem; padding-bottom:.5rem; border-bottom:1px solid var(--phoenix-border-color); }
    .logo-preview   { width:120px; height:80px; object-fit:contain; border-radius:.4rem; border:1px solid var(--phoenix-border-color); background:var(--phoenix-tertiary-bg); padding:4px; }
    .logo-placeholder { width:120px; height:80px; border-radius:.4rem; border:2px dashed var(--phoenix-border-color); display:flex; align-items:center; justify-content:center; color:var(--phoenix-secondary-color); font-size:.8rem; cursor:pointer; }
    .logo-placeholder:hover { border-color:var(--phoenix-primary); color:var(--phoenix-primary); }
    .color-swatch   { width:36px; height:36px; border-radius:.4rem; border:2px solid var(--phoenix-border-color); cursor:pointer; }
    .nav-config-link { display:flex; align-items:center; gap:.6rem; padding:.6rem .9rem; border-radius:.5rem; color:var(--phoenix-body-color); text-decoration:none; font-size:.875rem; transition:background .15s; }
    .nav-config-link:hover, .nav-config-link.active { background:var(--phoenix-tertiary-bg); color:var(--phoenix-primary); }
    .nav-config-link .fas { width:18px; text-align:center; }

/* ===== laboratorio/dashboard.php ===== */
/* Stat card accent */
    .stat-card { border-left: 3px solid transparent; transition: transform .15s; }
    .stat-card:hover { transform: translateY(-2px); }
    .stat-card.accent-primary  { border-color: var(--phoenix-primary); }
    .stat-card.accent-success  { border-color: var(--phoenix-success); }
    .stat-card.accent-warning  { border-color: var(--phoenix-warning); }
    .stat-card.accent-info     { border-color: var(--phoenix-info); }

    .stat-icon {
      width: 44px; height: 44px; border-radius: .6rem;
      display: flex; align-items: center; justify-content: center;
      font-size: 1.2rem;
    }

    /* Kanban estados */
    .estados-bar { height: 6px; border-radius: 3px; overflow: hidden; display: flex; gap: 2px; }
    .estados-bar div { border-radius: 3px; transition: flex .4s ease; }

/* ===== laboratorio/equipo.php ===== */
.miembro-card { border-radius: .65rem; transition: box-shadow .15s; }
    .miembro-card:hover { box-shadow: 0 6px 20px rgba(0,0,0,.08); }
    .avatar-circle {
      width: 56px; height: 56px; border-radius: 50%;
      display: flex; align-items: center; justify-content: center;
      font-size: 1.2rem; font-weight: 700; flex-shrink: 0;
    }
    .avatar-img { width: 56px; height: 56px; border-radius: 50%; object-fit: cover; flex-shrink: 0; }
    .cargo-badge-Administrador { background:#dbeafe;color:#1e40af; }
    .cargo-badge-Técnico       { background:#d1fae5;color:#065f46; }
    .cargo-badge-Asistente     { background:#fef3c7;color:#92400e; }
    .cargo-badge-default       { background:#f3f4f6;color:#374151; }
    .soy-yo-ring { outline: 3px solid #0d6efd; outline-offset: 2px; }

/* ===== laboratorio/estadisticas.php ===== */
.kpi-card { border-radius: .6rem; padding: 1.25rem; position: relative; overflow: hidden; }
    .kpi-card .kpi-value { font-size: 1.8rem; font-weight: 700; line-height: 1; }
    .kpi-card .kpi-label { font-size: .8rem; margin-top: .3rem; opacity: .85; }
    .kpi-card .kpi-var   { font-size: .75rem; margin-top: .4rem; }
    .kpi-card .kpi-icon  { position: absolute; right: 1rem; top: 50%; transform: translateY(-50%); font-size: 2.5rem; opacity: .15; }
    .var-pos { color: #d4edda; } .var-neg { color: #f8d7da; }
    .chart-wrap { position: relative; height: 260px; }

/* ===== laboratorio/nueva-orden.php ===== */
.form-section { background: var(--phoenix-body-bg); border: 1px solid var(--phoenix-border-color); border-radius: .6rem; padding: 1.25rem; margin-bottom: 1rem; }
    .form-section-title { font-size: .72rem; font-weight: 700; text-transform: uppercase; letter-spacing: .07em; color: var(--phoenix-secondary-color); margin-bottom: 1rem; padding-bottom: .5rem; border-bottom: 1px solid var(--phoenix-border-color); }
    .precio-preview { background: var(--phoenix-primary); color: #fff; border-radius: .5rem; padding: .75rem 1rem; font-size: 1.1rem; font-weight: 700; }
    .autocomplete-list { position: absolute; z-index: 1000; width: 100%; background: var(--phoenix-body-bg); border: 1px solid var(--phoenix-border-color); border-radius: .4rem; box-shadow: 0 4px 12px rgba(0,0,0,.1); max-height: 220px; overflow-y: auto; }
    .autocomplete-list li { padding: .5rem .75rem; cursor: pointer; font-size: .875rem; list-style: none; }
    .autocomplete-list li:hover { background: var(--phoenix-tertiary-bg); }
    /* Pieza dental */
    .pieza-grid { display: grid; grid-template-columns: repeat(8, 1fr); gap: 3px; }
    .pieza-btn  { border: 1px solid var(--phoenix-border-color); border-radius: 3px; padding: 3px 0; font-size: .7rem; text-align: center; cursor: pointer; transition: all .15s; background: transparent; }
    .pieza-btn:hover  { border-color: var(--phoenix-primary); color: var(--phoenix-primary); }
    .pieza-btn.active { background: var(--phoenix-primary); color: #fff; border-color: var(--phoenix-primary); }
    .pieza-divider { grid-column: span 8; height: 4px; }

/* ===== laboratorio/orden-detalle.php ===== */
/* ── Timeline de estados ── */
    .estado-timeline { display: flex; gap: 0; overflow-x: auto; padding-bottom: .5rem; }
    .estado-step {
      flex: 1; min-width: 100px;
      display: flex; flex-direction: column; align-items: center; position: relative;
    }
    .estado-step::before {
      content: ''; position: absolute;
      top: 15px; left: 50%; right: -50%;
      height: 2px; background: var(--phoenix-border-color); z-index: 0;
    }
    .estado-step:last-child::before { display: none; }
    .estado-step.done::before, .estado-step.active::before { background: var(--phoenix-primary); }
    .estado-dot {
      width: 30px; height: 30px; border-radius: 50%; border: 2px solid var(--phoenix-border-color);
      background: var(--phoenix-body-bg); display: flex; align-items: center; justify-content: center;
      font-size: .8rem; position: relative; z-index: 1; transition: all .3s;
    }
    .estado-step.done   .estado-dot { background: var(--phoenix-primary); border-color: var(--phoenix-primary); color: #fff; }
    .estado-step.active .estado-dot { background: var(--phoenix-primary); border-color: var(--phoenix-primary); color: #fff; box-shadow: 0 0 0 4px rgba(13,110,253,.2); }
    .estado-label { font-size: .72rem; margin-top: .4rem; text-align: center; color: var(--phoenix-secondary-color); }
    .estado-step.active .estado-label { color: var(--phoenix-primary); font-weight: 600; }

    /* ── Movimiento timeline (vertical) ── */
    .movimiento-item { display: flex; gap: .75rem; padding: .5rem 0; }
    .movimiento-dot  { width: 10px; height: 10px; border-radius: 50%; margin-top: 4px; flex-shrink: 0; }
    .movimiento-line { width: 1px; background: var(--phoenix-border-color); margin: 0 auto; flex-grow: 1; }

    /* ── Info row ── */
    .info-row { display: flex; justify-content: space-between; padding: .4rem 0; border-bottom: 1px solid var(--phoenix-border-color); font-size: .875rem; }
    .info-row:last-child { border: none; }
    .info-label { color: var(--phoenix-secondary-color); }
    .info-valor { font-weight: 500; text-align: right; }

    /* ── Botones estado ── */
    .btn-estado-accion {
      border-radius: 2rem; padding: .35rem 1rem; font-size: .8rem;
      border: 2px solid; cursor: pointer; transition: all .15s;
      background: transparent; font-weight: 600;
    }
    .btn-estado-accion:hover { filter: brightness(1.1); }

/* ===== laboratorio/ordenes.php ===== */
/* ── Vista toggle ── */
    .view-toggle .btn.active { background: var(--phoenix-primary); color: #fff; border-color: var(--phoenix-primary); }

    /* ── Kanban ── */
    .kanban-col {
      min-width: 240px; flex: 1;
      background: var(--phoenix-tertiary-bg);
      border-radius: .6rem; padding: .75rem;
    }
    .kanban-col-header {
      font-size: .75rem; font-weight: 700; text-transform: uppercase;
      letter-spacing: .06em; margin-bottom: .75rem;
      display: flex; align-items: center; justify-content: space-between;
    }
    .kanban-card {
      background: var(--phoenix-body-bg);
      border: 1px solid var(--phoenix-border-color);
      border-radius: .5rem; padding: .75rem; margin-bottom: .5rem;
      cursor: pointer; transition: box-shadow .15s, transform .15s;
      text-decoration: none; color: inherit; display: block;
    }
    .kanban-card:hover { box-shadow: 0 4px 12px rgba(0,0,0,.1); transform: translateY(-1px); }
    .kanban-card .paciente { font-weight: 600; font-size: .85rem; }
    .kanban-card .clinica  { font-size: .75rem; color: var(--phoenix-secondary-color); }
    .kanban-card .codigo   { font-size: .72rem; color: var(--phoenix-primary); }
    .kanban-scroll { overflow-x: auto; display: flex; gap: .75rem; padding-bottom: .5rem; }

    /* ── Tabla ── */
    .badge-urgente { animation: pulse-red 1.5s infinite; }
    @keyframes pulse-red { 0%,100%{opacity:1} 50%{opacity:.6} }

    /* ── Estado color accent ── */
    .row-recepcionado { border-left: 3px solid #17a2b8; }
    .row-proceso      { border-left: 3px solid #ffc107; }
    .row-enviado      { border-left: 3px solid #0d6efd; }
    .row-recibido     { border-left: 3px solid #198754; }
    .row-devuelto     { border-left: 3px solid #dc3545; }

    /* ── Filtros collapse ── */
    #filtrosCollapse { background: var(--phoenix-tertiary-bg); border-radius: .5rem; padding: 1rem; }

/* ===== laboratorio/perfil.php ===== */
.avatar-wrap { position: relative; width: 100px; height: 100px; margin: 0 auto; }
    .avatar-wrap img, .avatar-wrap .avatar-def {
      width: 100px; height: 100px; border-radius: 50%; object-fit: cover;
    }
    .avatar-wrap .avatar-def {
      background: #0d6efd22; color: #0d6efd; font-size: 2rem; font-weight: 700;
      display: flex; align-items: center; justify-content: center;
    }
    .avatar-overlay {
      position: absolute; inset: 0; border-radius: 50%;
      background: rgba(0,0,0,.45); color: #fff; font-size: .75rem;
      display: flex; align-items: center; justify-content: center;
      opacity: 0; transition: opacity .2s; cursor: pointer;
    }
    .avatar-wrap:hover .avatar-overlay { opacity: 1; }
    .section-card { border-radius: .65rem; }

/* ===== clinica/cuentas.php ===== */
.cuenta-card { border-radius:.65rem; cursor:pointer; transition:box-shadow .15s, transform .15s; }
    .cuenta-card:hover { box-shadow:0 6px 20px rgba(0,0,0,.08); transform:translateY(-2px); }
    .periodo-badge { background:#0d6efd; color:#fff; border-radius:2rem; padding:.2rem .8rem; font-size:.75rem; font-weight:600; }
    .info-row { display:flex; justify-content:space-between; padding:.35rem 0; border-bottom:1px solid var(--phoenix-border-color); font-size:.875rem; }
    .info-row:last-child { border:none; }

/* ===== clinica/mis-ordenes.php ===== */
.badge-estado-recepcionado { background:#17a2b8;color:#fff; }
    .badge-estado-proceso      { background:#ffc107;color:#212529; }
    .badge-estado-enviado      { background:#0d6efd;color:#fff; }
    .badge-estado-recibido     { background:#198754;color:#fff; }
    .badge-estado-devuelto     { background:#dc3545;color:#fff; }

/* ===== clinica/nueva-orden.php ===== */
.form-section { background: var(--phoenix-body-bg); border: 1px solid var(--phoenix-border-color); border-radius: .6rem; padding: 1.25rem; margin-bottom: 1rem; }
    .form-section-title { font-size: .72rem; font-weight: 700; text-transform: uppercase; letter-spacing: .07em; color: var(--phoenix-secondary-color); margin-bottom: 1rem; padding-bottom: .5rem; border-bottom: 1px solid var(--phoenix-border-color); }
    .pieza-grid { display: grid; grid-template-columns: repeat(8, 1fr); gap: 3px; }
    .pieza-btn  { border: 1px solid var(--phoenix-border-color); border-radius: 3px; padding: 4px 0; font-size: .7rem; text-align: center; cursor: pointer; transition: all .15s; background: transparent; }
    .pieza-btn:hover  { border-color: #198754; color: #198754; }
    .pieza-btn.active { background: #198754; color: #fff; border-color: #198754; }
    .pieza-divider { grid-column: span 8; height: 4px; }
    .arancel-card { border: 1px solid var(--phoenix-border-color); border-radius: .5rem; padding: .75rem; cursor: pointer; transition: all .15s; }
    .arancel-card:hover  { border-color: #198754; }
    .arancel-card.selected { border-color: #198754; background: #d1e7dd; }

/* ===== clinica/orden-detalle.php ===== */
.estado-timeline { display:flex; gap:0; overflow-x:auto; padding-bottom:.5rem; }
    .estado-step { flex:1; min-width:90px; display:flex; flex-direction:column; align-items:center; position:relative; }
    .estado-step::before { content:''; position:absolute; top:15px; left:50%; right:-50%; height:2px; background:var(--phoenix-border-color); z-index:0; }
    .estado-step:last-child::before { display:none; }
    .estado-step.done::before, .estado-step.active::before { background:#0d6efd; }
    .estado-dot { width:30px; height:30px; border-radius:50%; border:2px solid var(--phoenix-border-color); background:var(--phoenix-body-bg); display:flex; align-items:center; justify-content:center; font-size:.8rem; position:relative; z-index:1; }
    .estado-step.done   .estado-dot { background:#0d6efd; border-color:#0d6efd; color:#fff; }
    .estado-step.active .estado-dot { background:#0d6efd; border-color:#0d6efd; color:#fff; box-shadow:0 0 0 4px rgba(13,110,253,.2); }
    .estado-label { font-size:.7rem; margin-top:.4rem; text-align:center; color:var(--phoenix-secondary-color); }
    .estado-step.active .estado-label { color:#0d6efd; font-weight:600; }
    .info-row { display:flex; justify-content:space-between; padding:.4rem 0; border-bottom:1px solid var(--phoenix-border-color); font-size:.875rem; }
    .info-row:last-child { border:none; }

/* ===== mensajero/dashboard.php ===== */
/* App móvil — layout sin sidebar */
    .mensajero-header {
      background: linear-gradient(135deg, #e65100 0%, #f57c00 100%);
      color: #fff; padding: 1.5rem 1rem 3rem;
    }
    .mensajero-card-float {
      margin: -2rem 1rem 0;
      border-radius: .75rem;
      box-shadow: 0 4px 20px rgba(0,0,0,.1);
    }
    .accion-btn {
      border-radius: .75rem; padding: 1.2rem;
      text-align: center; cursor: pointer;
      border: 2px solid transparent; transition: all .2s;
      text-decoration: none; display: block;
    }
    .accion-btn:hover { transform: translateY(-2px); filter: brightness(1.05); }
    .accion-btn .fas { font-size: 1.8rem; display: block; margin-bottom: .5rem; }

/* ===== mensajero/registrar-movimiento.php ===== */
body { background: var(--phoenix-body-bg); }
    .mov-header {
      background: <?= $color ?>;
      color: #fff; padding: 1.25rem 1rem 2rem;
    }
    .mov-card-float {
      margin: -1.5rem 1rem 0;
      border-radius: .75rem;
      box-shadow: 0 4px 20px rgba(0,0,0,.1);
    }
    .orden-card {
      border: 2px solid transparent; border-radius: .6rem; padding: 1rem;
      cursor: pointer; transition: all .2s; background: var(--phoenix-body-bg);
      border-color: var(--phoenix-border-color);
    }
    .orden-card.selected { border-color: <?= $color ?>; background: <?= $color ?>18; }
    #preview-foto { width: 100%; border-radius: .5rem; max-height: 220px; object-fit: cover; display: none; }
    .btn-main { background: <?= $color ?>; color: #fff; border: none; padding: .85rem; border-radius: .6rem; font-weight: 700; font-size: 1rem; width: 100%; }
    .btn-main:disabled { opacity: .6; }
    .gps-indicator { display: flex; align-items: center; gap: .4rem; font-size: .78rem; }
    .gps-dot { width: 8px; height: 8px; border-radius: 50%; background: #ccc; }
    .gps-dot.ok { background: #198754; animation: pulse-gps 1.5s infinite; }
    @keyframes pulse-gps { 0%,100%{opacity:1}50%{opacity:.4} }