/* ===== Radar Nube: sesión, sincronización y administración ===== */
.logged-out .app { visibility: hidden; }

.login-screen {
  position: fixed; inset: 0; z-index: 50;
  display: grid; place-items: center; padding: 16px;
  background: radial-gradient(circle at 30% 20%, #17404c 0, var(--deep) 60%);
}
.login-screen[hidden] { display: none; }
.login-card {
  width: min(380px, 100%);
  display: grid; gap: 8px;
  padding: 28px 26px;
  background: #0f2f3a; color: #effff8;
  border: 1px solid rgba(255,255,255,.1);
  border-radius: 18px;
  box-shadow: 0 25px 70px rgba(0,0,0,.35);
}
.login-card .brand { margin-bottom: 14px; }
.login-card .field-label { color: #9fc4ba; margin-top: 6px; }
.login-card input {
  width: 100%; padding: 11px 12px; border-radius: 10px;
  border: 1px solid rgba(255,255,255,.18); background: rgba(255,255,255,.06);
  color: white; font: inherit;
}
.login-card input:focus { outline: 2px solid var(--mint); outline-offset: 1px; }
.login-card .add { margin-top: 10px; }
.login-error { min-height: 1.1em; margin: 2px 0 0; color: #ff9d8f; font-size: .82rem; }
.login-help { margin: 6px 0 0; font-size: .75rem; color: #8fb3a9; text-align: center; }

.user-bar {
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
  padding: 9px 11px; border-radius: 12px; background: rgba(255,255,255,.07);
}
.user-id { min-width: 0; }
.user-id b { display: block; font-size: .84rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.user-id small { font-size: .68rem; color: #9fd9c4; text-transform: uppercase; letter-spacing: .05em; font-weight: 800; }
.user-actions { display: flex; gap: 5px; flex: none; }
.user-actions button {
  border: 1px solid rgba(255,255,255,.2); border-radius: 7px; padding: 5px 7px;
  background: transparent; color: #dff8f0; font-size: .68rem; font-weight: 750; cursor: pointer;
}
.user-actions button:hover { border-color: var(--mint); }
.user-actions button[hidden] { display: none; }

.sync-status { display: flex; align-items: center; gap: 6px; font-size: .74rem !important; }
.sync-status i { width: 8px; height: 8px; border-radius: 50%; background: #9aa9ad; flex: none; }
.sync-status[data-state="online"] i { background: #1fc97c; }
.sync-status[data-state="offline"] i { background: #e5484d; }
.sync-status[data-state="offline"] span { color: #b4232a; }

.view-user {
  display: flex; align-items: center; gap: 6px;
  padding: 4px 4px 4px 12px; border-radius: 11px;
  background: rgba(13,41,51,.88); color: white; font-size: .78rem; font-weight: 700;
  box-shadow: 0 6px 18px rgba(13,41,51,.22);
}
.view-actions .view-user button { padding: 7px 10px; font-size: .74rem; box-shadow: none; background: rgba(255,255,255,.1); }

.role-lector .mode,
.role-lector #showAdd,
.role-lector #editSelected,
.role-lector #workForm { display: none !important; }
.role-lector .marker { cursor: pointer; }

.form-actions .history-button { grid-column: 1 / -1; font-size: .8rem; }
.form-actions .history-button[hidden] { display: none; }
.add:disabled { opacity: .65; cursor: progress; }

.card-updated {
  margin: 10px 0 0; padding-top: 8px; border-top: 1px solid rgba(255,255,255,.12);
  font-size: .68rem; color: #9fc4ba;
}
.color-swatch { width: 18px; height: 18px; flex: none; border-radius: 50%; border: 2px solid rgba(255,255,255,.7); }

.cloud-notice {
  position: fixed; left: 50%; bottom: 22px; transform: translateX(-50%); z-index: 60;
  max-width: min(560px, calc(100vw - 32px));
  padding: 11px 16px; border-radius: 12px;
  background: var(--deep); color: white; font-size: .86rem; font-weight: 600;
  box-shadow: 0 12px 30px rgba(3,32,38,.35);
}
.cloud-notice.error { background: #8f1d22; }
.cloud-notice[hidden] { display: none; }

.wide-dialog { width: min(680px, calc(100vw - 30px)); }
.import-dialog input, .import-dialog select {
  width: 100%; padding: 9px 10px; border-radius: 9px; border: 1px solid #c8d8d3; font: inherit; font-size: .86rem; background: white; color: var(--ink);
}
.import-dialog .field-label { display: block; margin: 12px 0 5px; color: #587078; }
.history-list { list-style: none; margin: 14px 0 0; padding: 0; max-height: min(60vh, 520px); overflow: auto; display: grid; gap: 8px; }
.history-item { padding: 10px 12px; border-radius: 10px; background: #eaf2ef; font-size: .84rem; }
.history-head { display: flex; gap: 10px; align-items: baseline; flex-wrap: wrap; }
.history-date { font-size: .74rem; color: #587078; font-variant-numeric: tabular-nums; font-weight: 700; }
.history-item ul { margin: 6px 0 0; padding-left: 18px; color: #36525a; font-size: .8rem; line-height: 1.45; }
.history-empty { color: #587078; font-size: .86rem; padding: 10px 0; }

.table-wrap { margin-top: 14px; max-height: 40vh; overflow: auto; border-radius: 10px; border: 1px solid #d7e4e0; }
.user-table { width: 100%; border-collapse: collapse; font-size: .84rem; }
.user-table td { padding: 8px 10px; border-bottom: 1px solid #e3ece9; vertical-align: middle; }
.user-table tr:last-child td { border-bottom: 0; }
.user-table small { display: block; color: #587078; font-size: .74rem; }
.user-table select { width: auto; padding: 5px 6px; }
.user-active { display: flex; align-items: center; gap: 5px; white-space: nowrap; }
.user-active input { width: auto; }
.link-button { border: 0; background: none; color: #0f6b4b; font-weight: 800; cursor: pointer; padding: 4px; }
.new-user { display: grid; grid-template-columns: 1.3fr 1fr auto auto; gap: 7px; margin-top: 14px; }
.new-user button { border: 0; border-radius: 10px; padding: 9px 12px; font-weight: 800; cursor: pointer; background: var(--mint); color: var(--deep); }
.credential-box { margin-top: 12px; padding: 12px; border-radius: 10px; background: #fff6d8; color: #5b4500; font-size: .82rem; line-height: 1.4; }
.credential-box code { display: block; margin-top: 6px; white-space: pre; font-size: .9rem; user-select: all; }
.user-status { min-height: 1.2em; margin-top: 8px !important; }

@media (max-width: 640px) {
  .new-user { grid-template-columns: 1fr; }
  .user-table td { display: block; border-bottom: 0; padding: 4px 10px; }
  .user-table tr { display: block; padding: 6px 0; border-bottom: 1px solid #e3ece9; }
}

/* ===== Pulso: modo liviano para equipos sin aceleración gráfica =====
   Misma curva que el pulso original, pero muestreada a 20 cuadros por segundo
   (el navegador redibuja 20 veces por segundo en vez de 60). */
@keyframes pulseLite{0.000%{transform:scale(0.7000);opacity:0.8500}2.174%{transform:scale(0.7579);opacity:0.8090}4.348%{transform:scale(0.8139);opacity:0.7693}6.522%{transform:scale(0.8685);opacity:0.7306}8.696%{transform:scale(0.9219);opacity:0.6928}10.870%{transform:scale(0.9740);opacity:0.6559}13.043%{transform:scale(1.0251);opacity:0.6197}15.217%{transform:scale(1.0750);opacity:0.5844}17.391%{transform:scale(1.1238);opacity:0.5498}19.565%{transform:scale(1.1715);opacity:0.5160}21.739%{transform:scale(1.2182);opacity:0.4830}23.913%{transform:scale(1.2637);opacity:0.4507}26.087%{transform:scale(1.3081);opacity:0.4193}28.261%{transform:scale(1.3513);opacity:0.3887}30.435%{transform:scale(1.3934);opacity:0.3589}32.609%{transform:scale(1.4342);opacity:0.3299}34.783%{transform:scale(1.4739);opacity:0.3019}36.957%{transform:scale(1.5122);opacity:0.2747}39.130%{transform:scale(1.5492);opacity:0.2485}41.304%{transform:scale(1.5849);opacity:0.2232}43.478%{transform:scale(1.6191);opacity:0.1990}45.652%{transform:scale(1.6518);opacity:0.1758}47.826%{transform:scale(1.6830);opacity:0.1537}50.000%{transform:scale(1.7126);opacity:0.1327}52.174%{transform:scale(1.7405);opacity:0.1130}54.348%{transform:scale(1.7666);opacity:0.0945}56.522%{transform:scale(1.7908);opacity:0.0774}58.696%{transform:scale(1.8130);opacity:0.0617}60.870%{transform:scale(1.8330);opacity:0.0474}63.043%{transform:scale(1.8508);opacity:0.0348}65.217%{transform:scale(1.8662);opacity:0.0239}67.391%{transform:scale(1.8790);opacity:0.0149}69.565%{transform:scale(1.8890);opacity:0.0078}71.739%{transform:scale(1.8959);opacity:0.0029}73.913%{transform:scale(1.8995);opacity:0.0003}76.087%{transform:scale(1.9000);opacity:0.0000}78.261%{transform:scale(1.9000);opacity:0.0000}80.435%{transform:scale(1.9000);opacity:0.0000}82.609%{transform:scale(1.9000);opacity:0.0000}84.783%{transform:scale(1.9000);opacity:0.0000}86.957%{transform:scale(1.9000);opacity:0.0000}89.130%{transform:scale(1.9000);opacity:0.0000}91.304%{transform:scale(1.9000);opacity:0.0000}93.478%{transform:scale(1.9000);opacity:0.0000}95.652%{transform:scale(1.9000);opacity:0.0000}97.826%{transform:scale(1.9000);opacity:0.0000}100.000%{transform:scale(1.9000);opacity:0.0000}}
.pulse-lite .marker:before,.pulse-lite .marker:after{animation:pulseLite 2.3s steps(1,end) infinite}
.pulse-lite .marker:after{animation-delay:1.15s}
.pulse-lite .marker.loop-focus:before{animation-duration:1.65s}

/* ===== Programa trisemanal ===== */
.program-load { display: grid; gap: 8px; padding: 12px; border-radius: 12px; background: rgba(32,220,137,.08); border: 1px solid rgba(32,220,137,.25); }
.program-load-head { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; }
.program-load .field-label { margin: 0; color: #9ff0c9; }
.program-week { font-size: .72rem; color: #cfe7e0; text-align: right; }
.program-load-button, .program-resume { border: 0; border-radius: 10px; padding: 10px; font-weight: 800; cursor: pointer; font-size: .84rem; }
.program-load-button { background: var(--mint); color: var(--deep); }
.program-load-button:disabled { opacity: .7; cursor: progress; }
.program-resume { background: #f5a700; color: #2b1d00; }
.program-resume[hidden] { display: none; }
.role-lector .program-load { display: none; }

.week-badge { display: flex; flex-wrap: wrap; gap: 4px 10px; align-items: baseline; margin: 6px 0 0 !important; font-size: .8rem !important; }
.week-badge[hidden] { display: none; }
.week-badge b { color: #0f6b4b; }
.week-badge span { color: var(--muted); }

.program-week-pick { margin-top: 12px; }
.program-week-row { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.program-week-row input { width: auto; }
.program-week-row span { font-weight: 700; font-size: .86rem; }
.program-week-pick small { display: block; margin-top: 4px; color: #587078; font-size: .76rem; }
.program-preview { margin-top: 12px; font-size: .86rem; }
.program-preview p { margin: 0 0 8px; }
.program-table { width: 100%; border-collapse: collapse; font-size: .82rem; }
.program-table th { text-align: left; background: #e6efec; padding: 6px 8px; }
.program-table td { padding: 5px 8px; border-bottom: 1px solid #e3ece9; }
.program-table td + td, .program-table th + th { text-align: right; width: 90px; }
.program-note { color: #7a5b00 !important; background: #fff6d8; padding: 7px 10px; border-radius: 8px; margin-top: 8px !important; }
.program-warnings { margin: 8px 0 0; padding-left: 18px; color: #7a5b00; font-size: .8rem; }
.program-archive-note { margin-top: 10px !important; font-weight: 700; color: #36525a !important; }
#programDialog .import-dialog-actions { grid-template-columns: 1fr auto; }
#programDialog .import-dialog-actions .cancel { grid-column: auto; }

/* Asistente */
.wizard-mode .mode, .wizard-mode #workForm, .wizard-mode .works, .wizard-mode .program-load { display: none !important; }
.wizard { display: grid; gap: 10px; }
.wizard[hidden] { display: none; }
.wizard-top { display: flex; justify-content: space-between; align-items: center; }
.wizard-step { font-size: .74rem; font-weight: 900; letter-spacing: .06em; text-transform: uppercase; color: #9ff0c9; }
.wizard-exit { border: 1px solid rgba(255,255,255,.25); background: transparent; color: #dff8f0; border-radius: 8px; padding: 5px 10px; font-size: .74rem; font-weight: 800; cursor: pointer; }
.wizard-bar { height: 6px; border-radius: 99px; background: rgba(255,255,255,.12); overflow: hidden; }
.wizard-bar i { display: block; height: 100%; width: 0; background: var(--mint); transition: width .3s ease; }
.wizard-counts { margin: 0; font-size: .72rem; color: #b9d2cb; }
.wizard-body { display: grid; gap: 12px; }
.wz-chips { display: flex; flex-wrap: wrap; gap: 5px; }
.wz-chip { padding: 3px 8px; border-radius: 99px; background: rgba(32,220,137,.18); color: #9ff0c9; font-size: .66rem; font-weight: 800; letter-spacing: .03em; }
.wz-chip.soft { background: rgba(255,255,255,.1); color: #d4e7e1; }
.wz-chip.warn { background: rgba(245,167,0,.2); color: #ffd27a; }
.wz-front { margin: 0; font-size: 1.15rem; line-height: 1.25; }
.wz-tasks { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; max-height: 34vh; overflow: auto; }
.wz-tasks li { padding: 8px 10px; border-radius: 9px; background: rgba(255,255,255,.07); display: grid; gap: 2px; }
.wz-task { font-size: .82rem; font-weight: 700; }
.wz-meta { font-size: .72rem; color: #aad0c6; }
.wz-muted { color: #8fb3a9; }
.wz-fields { display: grid; gap: 10px; }
.wz-hint { margin: 0; font-size: .78rem; color: #ffd27a; line-height: 1.4; }
.wz-actions { display: grid; grid-template-columns: 1fr auto; gap: 8px; }
.wz-actions.single { grid-template-columns: 1fr; }
.wz-nav { display: flex; justify-content: space-between; gap: 6px; flex-wrap: wrap; }
.link-light { border: 0; background: none; color: #9ff0c9; font-weight: 800; font-size: .76rem; cursor: pointer; padding: 4px 2px; }
.link-light:disabled { opacity: .35; cursor: default; }
.wz-bulk { border: 1px dashed rgba(32,220,137,.6); background: rgba(32,220,137,.08); color: #9ff0c9; border-radius: 10px; padding: 9px; font-weight: 800; font-size: .78rem; cursor: pointer; }
.wizard-mode #empty { display: none !important; }
.wizard-mode .pin-preview { z-index: 6; }

/* Semana anterior tenue durante el asistente: clic para usar su ubicación */
.wizard-mode .marker.ghost { opacity: .35; filter: saturate(.35); box-shadow: none; cursor: copy; z-index: 1; }
.wizard-mode .marker.ghost:before, .wizard-mode .marker.ghost:after { display: none !important; animation: none !important; }
.wizard-mode .marker.ghost:hover, .wizard-mode .marker.ghost:focus-visible { opacity: .95; filter: none; outline: 2px dashed var(--deep); outline-offset: 3px; }
.marker.ghost.ref { border-style: dashed; }
.wz-leftovers { display: grid; gap: 8px; padding-top: 10px; border-top: 1px solid rgba(255,255,255,.12); }
.wz-leftovers small { font-size: .7rem; color: #9fc4ba; line-height: 1.35; }

/* Modo carga trisemanal: indicador visible */
.wizard-mode-chip { justify-self: start; padding: 5px 10px; border-radius: 8px; background: #f5a700; color: #2b1d00; font-size: .72rem; font-weight: 900; letter-spacing: .05em; text-transform: uppercase; }
.wizard-map-banner { display: none; position: absolute; left: 50%; top: 16px; transform: translateX(-50%); z-index: 7; padding: 8px 14px; border-radius: 100px; background: #f5a700; color: #2b1d00; font-size: .78rem; font-weight: 800; box-shadow: 0 8px 20px rgba(0,0,0,.16); pointer-events: none; white-space: nowrap; max-width: calc(100% - 180px); overflow: hidden; text-overflow: ellipsis; }
.wizard-mode .wizard-map-banner { display: block; }
.wizard-mode .map-shell { outline: 3px solid #f5a700; outline-offset: -3px; }
.wizard-mode .marker.ghost { cursor: pointer; }
.wizard-mode .add-hint { display: none !important; }
@media (max-width: 880px) { .wizard-map-banner { top: 10px; font-size: .7rem; max-width: calc(100% - 20px); } }
.wizard-map-banner[hidden] { display: none !important; }

/* v3.4.2 — editar y eliminar cuentas */
.user-actions-cell { white-space: nowrap; }
.user-actions-cell .link-button { display: block; padding: 2px 4px; font-size: .78rem; text-align: left; }
.user-actions-cell .link-button[hidden] { display: none; }
.danger-link { color: #ff9a8f !important; }
.user-name-input { width: 100%; padding: 6px 8px; border: 1px solid #b9d2cb; border-radius: 8px; font-weight: 700; }
.user-edit-actions { display: flex; gap: 6px; margin-top: 4px; }
