@font-face {
  font-family: 'Poppins';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('fuentes/poppins-latin-400-normal.woff2') format('woff2');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face {
  font-family: 'Poppins';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('fuentes/poppins-latin-ext-400-normal.woff2') format('woff2');
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face {
  font-family: 'Poppins';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('fuentes/poppins-latin-500-normal.woff2') format('woff2');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face {
  font-family: 'Poppins';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('fuentes/poppins-latin-ext-500-normal.woff2') format('woff2');
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face {
  font-family: 'Poppins';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('fuentes/poppins-latin-600-normal.woff2') format('woff2');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face {
  font-family: 'Poppins';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('fuentes/poppins-latin-ext-600-normal.woff2') format('woff2');
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face {
  font-family: 'Poppins';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('fuentes/poppins-latin-700-normal.woff2') format('woff2');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face {
  font-family: 'Poppins';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('fuentes/poppins-latin-ext-700-normal.woff2') format('woff2');
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('fuentes/inter-latin-400-normal.woff2') format('woff2');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('fuentes/inter-latin-ext-400-normal.woff2') format('woff2');
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('fuentes/inter-latin-500-normal.woff2') format('woff2');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('fuentes/inter-latin-ext-500-normal.woff2') format('woff2');
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('fuentes/inter-latin-600-normal.woff2') format('woff2');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('fuentes/inter-latin-ext-600-normal.woff2') format('woff2');
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('fuentes/inter-latin-700-normal.woff2') format('woff2');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('fuentes/inter-latin-ext-700-normal.woff2') format('woff2');
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

:root {
  --fondo:      #FAFAFA;
  --papel:      #FFFFFF;
  --papel-2:    #F1F3F6;
  --tinta:      #10141A;
  --gris:       #78828E;
  --linea:      #E8EBEF;
  --linea-2:    #DDE2E8;

  --uno:        #FF7A2F;
  --dos:        #F0286E;
  --tres:       #8A38F5;
  --cuatro:     #3B5BFF;

  --acento:     #F0286E;
  --acento-2:   #8A38F5;
  --menta:      #17BF8A;
  --ocre:       #FFB020;
  --ladrillo:   #F0286E;
  --pizarra:    #10141A;
  --pizarra-2:  #232A34;
  --tiza:       #FFFFFF;

  --degradado:  linear-gradient(135deg, var(--uno) 0%, var(--dos) 38%, var(--tres) 70%, var(--cuatro) 100%);
  --degradado-suave: linear-gradient(135deg, rgba(255,122,47,.14), rgba(240,40,110,.14) 40%, rgba(138,56,245,.14) 72%, rgba(59,91,255,.14));

  --r-xl:  28px;
  --r:     20px;
  --r-sm:  14px;
  --r-xs:  10px;
  --pill:  999px;

  --sombra:    0 1px 2px rgba(16,20,26,.04), 0 10px 30px rgba(16,20,26,.06);
  --sombra-2:  0 18px 50px rgba(16,20,26,.16);
  --sombra-color: 0 10px 26px rgba(240,40,110,.28);

  --display: 'Poppins', 'Segoe UI Variable Display', 'Segoe UI', system-ui, -apple-system, 'SF Pro Display', Roboto, sans-serif;
  --texto:   'Inter', 'Segoe UI', system-ui, -apple-system, 'SF Pro Text', Roboto, Helvetica, Arial, sans-serif;
  --dato:    'SF Mono', 'Cascadia Mono', Consolas, Menlo, monospace;

  --alto-hora: 72px;

  --seg-arriba: env(safe-area-inset-top, 0px);
  --seg-abajo:  env(safe-area-inset-bottom, 0px);
  --seg-izq:    env(safe-area-inset-left, 0px);
  --seg-der:    env(safe-area-inset-right, 0px);

  --barra-abajo: 0px;
  --toque: 46px;
}

@media (prefers-color-scheme: dark) {
  :root {
    --fondo:     #0B0D11;
    --papel:     #14181F;
    --papel-2:   #1C2129;
    --tinta:     #F2F4F7;
    --gris:      #98A2B0;
    --linea:     #242A33;
    --linea-2:   #2E353F;
    --tiza:      #F2F4F7;
    --sombra:    0 1px 2px rgba(0,0,0,.4), 0 10px 30px rgba(0,0,0,.35);
    --sombra-2:  0 18px 50px rgba(0,0,0,.6);
  }
}

* { box-sizing: border-box; }

html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  max-width: 100%; overflow-x: clip;
}

body {
  margin: 0; padding: 0;
  max-width: 100%; overflow-x: clip;
  font-family: var(--texto);
  font-size: 16px; line-height: 1.5;
  color: var(--tinta); background: var(--fondo);
  overscroll-behavior-y: none;
  -webkit-font-smoothing: antialiased;
}

h1, h2, h3, h4 {
  font-family: var(--display);
  font-weight: 700; margin: 0 0 .4em; letter-spacing: -.02em;
}
h1 { font-size: 1.6rem; } h2 { font-size: 1.25rem; } h3 { font-size: 1.05rem; } h4 { font-size: .95rem; }
a { color: var(--acento); }

.degradado-texto {
  background: var(--degradado);
  -webkit-background-clip: text; background-clip: text;
  color: transparent;
}

[hidden] { display: none !important; }

button, .btn {
  font: inherit; font-family: var(--display); font-size: .95rem; font-weight: 600;
  border: 1.5px solid transparent; border-radius: var(--pill);
  background: var(--tinta); color: var(--papel);
  padding: .6rem 1.1rem;
  min-height: var(--toque);
  cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center; gap: .45rem;
  transition: transform .12s cubic-bezier(.3,1.4,.5,1), filter .15s ease, background .15s ease, box-shadow .15s ease;
  text-decoration: none;
  touch-action: manipulation;
  -webkit-tap-highlight-color: transparent;
}
button:active, .btn:active { transform: scale(.94); }
button:focus-visible, a:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible {
  outline: 3px solid var(--acento-2); outline-offset: 2px;
}
button[disabled], .btn[disabled] {
  cursor: not-allowed;
  opacity: 1;
  background: #5C6572; color: #fff; border-color: transparent;
  box-shadow: none; filter: none;
}
button[disabled].btn-claro { background: #7A828E; color: #fff; }
@media (prefers-color-scheme: dark) {
  button[disabled], .btn[disabled] { background: #39414D; color: #C6CDD7; }
  button[disabled].btn-claro { background: #39414D; color: #C6CDD7; }
}

.btn-claro {
  background: var(--papel-2); color: var(--tinta); border-color: transparent;
}
.btn-claro:active { background: var(--linea-2); }
.btn-ocre {
  background: var(--degradado); color: #fff; border-color: transparent;
  box-shadow: var(--sombra-color);
}
.btn-riesgo { background: var(--dos); color: #fff; }

.btn-mini { padding: .4rem .85rem; font-size: .85rem; min-height: 38px; position: relative; }
.btn-mini::after {
  content: ''; position: absolute; left: 0; right: 0;
  top: 50%; transform: translateY(-50%); height: var(--toque);
}

input, select, textarea {
  font: inherit;
  font-size: 16px;
  width: 100%;
  padding: .8rem 1rem;
  min-height: var(--toque);
  border: 1.5px solid transparent; border-radius: var(--r-sm);
  background: var(--papel-2); color: var(--tinta);
  -webkit-appearance: none; appearance: none;
  transition: border-color .15s ease, background .15s ease;
}
input::placeholder, textarea::placeholder { color: var(--gris); }
input:focus, select:focus, textarea:focus { border-color: var(--acento); background: var(--papel); }
select {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%2378828E' stroke-width='2' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right .9rem center; padding-right: 2.2rem;
}
textarea { min-height: 100px; border-radius: var(--r-sm); }
label { display: block; font-size: .74rem; font-weight: 700; color: var(--gris); margin-bottom: .35rem; text-transform: uppercase; letter-spacing: .07em; }
.campo { margin-bottom: 1rem; }

.cuerpo > section, .cuerpo > .tarjeta { min-width: 0; }
.tarjeta {
  background: var(--papel); border: 1px solid var(--linea);
  border-radius: var(--r); box-shadow: var(--sombra); padding: 1.1rem;
}

.ingreso {
  min-height: 100dvh; display: grid; place-items: center;
  padding: calc(1.2rem + var(--seg-arriba)) calc(1.1rem + var(--seg-der)) calc(1.2rem + var(--seg-abajo)) calc(1.1rem + var(--seg-izq));
  background:
    radial-gradient(120% 60% at 10% 0%, rgba(255,122,47,.35), transparent 60%),
    radial-gradient(110% 60% at 90% 10%, rgba(138,56,245,.4), transparent 62%),
    radial-gradient(120% 70% at 50% 100%, rgba(59,91,255,.35), transparent 60%),
    var(--pizarra);
  position: relative; overflow: hidden;
}
.ingreso-caja {
  width: 100%; max-width: 380px;
  background: var(--papel);
  border-radius: var(--r-xl);
  padding: 1.1rem 1.05rem;
  box-shadow: 0 30px 70px rgba(0,0,0,.45);
  animation: entrar .4s cubic-bezier(.2,.9,.3,1.2);
}
@keyframes entrar { from { opacity: 0; transform: translateY(18px) scale(.97); } to { opacity: 1; transform: none; } }

.marca { display: flex; align-items: center; gap: .7rem; margin-bottom: 1.4rem; }
.marca-icono {
  width: 46px; height: 46px; border-radius: 16px; flex: 0 0 46px;
  background: var(--degradado); color: #fff;
  display: grid; place-items: center;
  font-family: var(--display); font-size: 1.15rem; font-weight: 800; letter-spacing: -.03em;
  box-shadow: var(--sombra-color);
}
.marca-texto { font-family: var(--display); font-size: 1.35rem; font-weight: 800; line-height: 1.05; letter-spacing: -.03em; }
.marca-texto small {
  display: block; font-family: var(--texto); font-size: .68rem; font-weight: 600;
  letter-spacing: .12em; text-transform: uppercase; color: var(--gris); margin-top: .15rem;
}

.separador { display: flex; align-items: center; gap: .9rem; color: var(--gris); font-size: .8rem; margin: 1.2rem 0; text-transform: uppercase; letter-spacing: .1em; }
.separador::before, .separador::after { content: ''; flex: 1; height: 1px; background: var(--linea); }

.aviso { border-radius: var(--r-sm); padding: .75rem .95rem; font-size: .9rem; margin-bottom: .9rem; font-weight: 500; }
.aviso-error { background: rgba(240,40,110,.12); color: var(--dos); }
.aviso-ok    { background: rgba(23,191,138,.14); color: #0E8C66; }
.aviso-info  { background: rgba(255,176,32,.16); color: #9A6A00; }

.pantalla { min-height: 100dvh; display: flex; flex-direction: column; min-width: 0; max-width: 100%; }

.cabecera {
  position: sticky; top: 0; z-index: 40;
  background: color-mix(in srgb, var(--papel) 86%, transparent);
  backdrop-filter: saturate(180%) blur(18px);
  -webkit-backdrop-filter: saturate(180%) blur(18px);
  border-bottom: 1px solid var(--linea);
  color: var(--tinta);
  padding: calc(.55rem + var(--seg-arriba)) calc(.9rem + var(--seg-der)) .55rem calc(.9rem + var(--seg-izq));
  display: grid;
  grid-template-columns: 1fr auto auto;
  grid-template-areas:
    "marca campana salir"
    "medio medio  medio";
  align-items: center;
  gap: .5rem .5rem;
}
.cabecera .marca { grid-area: marca; margin: 0; gap: .55rem; min-width: 0; }
.cabecera .marca-icono { width: 36px; height: 36px; flex-basis: 36px; border-radius: 12px; font-size: .95rem; }
.cabecera .marca-texto { font-size: 1.15rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cabecera .marca-texto small { color: var(--gris); }
.cabecera-medio { grid-area: medio; display: flex; gap: .45rem; align-items: center; min-width: 0; }
.cabecera-medio > * { min-width: 0; }
.cabecera-medio select { flex: 1 1 0; min-width: 0; max-width: 210px; }
.cabecera-medio #proxima { flex: 1 1 auto; min-width: 0; display: flex; }

.proxima {
  display: flex; align-items: center; gap: .55rem;
  min-width: 0; max-width: 100%;
  padding: .3rem .8rem .3rem .3rem;
  background: var(--papel-2); border-radius: var(--pill);
  cursor: pointer; text-align: left;
}
.proxima:hover { background: var(--linea); }
.proxima .avatar { width: 34px; height: 34px; flex: 0 0 34px; font-size: .75rem; }
.proxima-datos { min-width: 0; display: grid; line-height: 1.25; }
.proxima-datos b, .proxima-datos small {
  min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.proxima-datos b { font-size: .82rem; }
.proxima-datos small { font-size: .72rem; color: var(--gris); }
.proxima.en-curso { background: color-mix(in srgb, var(--menta) 18%, var(--papel)); }
.proxima.en-curso .proxima-datos small { color: #0E8C66; font-weight: 700; }
.cabecera select { background: var(--papel-2); color: var(--tinta); border-color: transparent; font-size: .9rem; padding: .55rem .9rem; min-height: 40px; border-radius: var(--pill); }
.cabecera select[multiple] {
  box-sizing: border-box; height: 40px; min-height: 40px; max-height: 40px;
  padding: .3rem .9rem; line-height: 1.2; overflow: hidden; background-image: none;
}
.cabecera select[multiple] option { padding: .2rem .4rem; }
.cabecera select[multiple] option:checked {
  background: var(--acento) linear-gradient(0deg, var(--acento), var(--acento));
  color: #fff; font-weight: 700;
}
#zonaCampana { grid-area: campana; }
#btnSalir {
  grid-area: salir; background: var(--papel-2); color: var(--dos);
  width: var(--toque); height: var(--toque); min-height: var(--toque); padding: 0;
  font-size: 1.2rem; border-radius: 50%; flex: 0 0 var(--toque);
}

.cabecera .persona { display: none; }

.persona { display: flex; align-items: center; gap: .65rem; min-width: 0; }
.avatar {
  width: 42px; height: 42px; border-radius: 50%; flex: 0 0 42px; object-fit: cover;
  background: var(--degradado); color: #fff;
  display: grid; place-items: center; font-weight: 800; font-size: .85rem;
  font-family: var(--display);
  box-shadow: 0 0 0 2px var(--papel), 0 0 0 4px transparent;
}
.persona-datos { line-height: 1.25; font-size: .95rem; font-weight: 600; min-width: 0; }
.cabecera .persona-datos > * , .cabecera .persona-datos { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.persona-datos small { color: var(--gris); font-size: .78rem; display: block; font-weight: 500; }

.cuerpo {
  flex: 1; min-width: 0;
  display: grid; grid-template-columns: minmax(0, 1fr); gap: .9rem;
  padding: .9rem calc(.9rem + var(--seg-der)) calc(1rem + var(--barra-abajo) + var(--seg-abajo)) calc(.9rem + var(--seg-izq));
  align-content: start;
}

.pestanas {
  display: flex; gap: .3rem;
  background: color-mix(in srgb, var(--papel) 86%, transparent);
  backdrop-filter: saturate(180%) blur(18px);
  -webkit-backdrop-filter: saturate(180%) blur(18px);
  border-bottom: 1px solid var(--linea);
  padding: .5rem calc(.9rem + var(--seg-der)) .55rem calc(.9rem + var(--seg-izq));
  position: sticky; top: 0; z-index: 39;
}
.pestanas button {
  flex: 1; background: transparent; border-color: transparent;
  color: var(--gris); font-size: .9rem; min-height: 40px; padding: .4rem;
  border-radius: var(--pill);
}
.pestanas button.activa { background: var(--degradado); color: #fff; box-shadow: var(--sombra-color); }
.pestanas .cuenta {
  min-width: 18px; height: 18px; border-radius: var(--pill); background: var(--dos);
  color: #fff; font-size: .68rem; font-weight: 700;
  display: grid; place-items: center; padding: 0 5px; margin-left: .3rem;
}
.pestanas button.activa .cuenta { background: rgba(255,255,255,.28); }
.panel-movil { display: none; }
.panel-movil.activo { display: block; animation: aparecer .22s ease-out; }
@keyframes aparecer { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }

.pie {
  background: var(--papel); color: var(--gris);
  border-top: 1px solid var(--linea);
  padding: 1.2rem calc(1.1rem + var(--seg-der)) calc(1.2rem + var(--barra-abajo) + var(--seg-abajo)) calc(1.1rem + var(--seg-izq));
  font-size: .85rem;
}
.pie-enlaces { display: grid; grid-template-columns: 1fr 1fr; gap: .1rem .9rem; margin-bottom: .9rem; }
.pie a {
  color: var(--tinta); text-decoration: none; cursor: pointer; font-weight: 500;
  padding: .6rem 0; min-height: var(--toque);
  display: flex; align-items: center;
  border-bottom: 1px solid var(--linea);
}
.pie a:active { color: var(--acento); }

.mes-cabecera { display: flex; align-items: center; justify-content: space-between; gap: .4rem; margin-bottom: .8rem; }
.mes-titulo { font-family: var(--display); font-size: 1.15rem; font-weight: 700; text-transform: capitalize; letter-spacing: -.02em; }
#mesAnterior, #mesSiguiente { width: 38px; padding: 0; border-radius: 50%; flex: 0 0 38px; font-size: 1.1rem; }
.mes-envoltura { overflow-x: auto; -webkit-overflow-scrolling: touch; max-width: 100%; }
.mes-envoltura::-webkit-scrollbar { height: 4px; }
.mes-grilla { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 3px; min-width: 0; }
.mes-grilla span.dow { text-align: center; font-size: .68rem; font-weight: 700; color: var(--gris); padding: .3rem 0; text-transform: uppercase; letter-spacing: .05em; }
.dia {
  aspect-ratio: 1; min-height: 0; min-width: 0;
  border: 0; background: transparent; color: var(--tinta);
  border-radius: 50%; font-size: .95rem; font-weight: 600; padding: 0;
  display: grid; place-items: center; position: relative;
}
.dia::after { content: none; }
.dia:active { background: var(--papel-2); }
.dia.fuera { color: var(--linea-2); font-weight: 400; }
.dia.hoy { box-shadow: inset 0 0 0 2px var(--acento); color: var(--acento); }
.dia.activo { background: var(--degradado); color: #fff; box-shadow: var(--sombra-color); }
.dia.con-clases .puntos { bottom: 5px; }

.agenda-barra { display: flex; align-items: center; justify-content: space-between; gap: .5rem; margin-bottom: .7rem; flex-wrap: wrap; }
.agenda-barra h2 { font-size: 1.15rem; }
#diaAnterior, #diaSiguiente { width: 38px; padding: 0; border-radius: 50%; flex: 0 0 38px; font-size: 1.1rem; }
.agenda-scroll {
  overflow: auto;
  max-height: calc(100dvh - 280px);
  min-height: 340px;
  border: 1px solid var(--linea); border-radius: var(--r); background: var(--papel);
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
}
.agenda { position: relative; display: grid; grid-template-columns: 54px 1fr; }
.franja-hora { height: var(--alto-hora); border-bottom: 1px solid var(--linea); font-size: .7rem; color: var(--gris); padding: 3px 8px; text-align: right; font-family: var(--dato); }
.franja-caja { height: var(--alto-hora); border-bottom: 1px solid var(--linea); position: relative; }
.franja-caja::before {
  content: ''; position: absolute; left: 0; right: 0; top: 50%;
  border-top: 1px dashed var(--linea); pointer-events: none;
}
.franja-caja.destino { background: rgba(138,56,245,.09); }
.franja-caja.destino-media { background: linear-gradient(180deg, transparent 50%, rgba(138,56,245,.09) 50%); }

.linea-ahora { position: absolute; left: 54px; right: 0; height: 2px; background: var(--dos); z-index: 5; pointer-events: none; }
.linea-ahora::before { content: ''; position: absolute; left: -5px; top: -4px; width: 10px; height: 10px; border-radius: 50%; background: var(--dos); box-shadow: 0 0 0 4px rgba(240,40,110,.2); }

.clase {
  position: absolute; left: 6px; right: 6px; z-index: 3;
  border-radius: var(--r-xs); border-left: 4px solid; padding: .45rem .6rem;
  font-size: .84rem; font-weight: 500; text-align: left; overflow: hidden;
  min-height: 0;
  background: var(--papel); color: var(--tinta);
  border-top: 0; border-right: 0; border-bottom: 0;
  box-shadow: 0 2px 10px rgba(16,20,26,.1);
  display: block;
  touch-action: none;
  align-items: initial;
  transition: box-shadow .15s ease;
}
.clase::after { content: none; }
.clase:active { transform: none; }
.clase strong { display: block; font-family: var(--display); font-weight: 700; font-size: .87rem; line-height: 1.25; }
.clase small { color: var(--gris); font-family: var(--dato); font-size: .7rem; }
.clase.arrastrando { opacity: .55; box-shadow: var(--sombra-2); }
.clase.pendiente { border-left-color: var(--ocre);   background: color-mix(in srgb, var(--ocre) 10%, var(--papel)); }
.clase.aceptada  { border-left-color: var(--menta);  background: color-mix(in srgb, var(--menta) 10%, var(--papel)); }
.clase.realizada { border-left-color: var(--gris);   background: var(--papel-2); color: var(--gris); }
.clase.cancelada { border-left-color: var(--dos);    background: color-mix(in srgb, var(--dos) 8%, var(--papel)); text-decoration: line-through; color: var(--gris); }
.clase.no-realizada { border-left-color: var(--dos); background: color-mix(in srgb, var(--dos) 14%, var(--papel)); color: var(--gris); }
.clase.en-vivo   { box-shadow: 0 0 0 2px var(--dos), 0 2px 12px rgba(240,40,110,.35); }

.marcador { position: absolute; right: 6px; top: 5px; font-size: .8rem; }

.clase-check {
  position: absolute; right: 5px; bottom: 5px; z-index: 4;
  width: 32px; height: 32px; min-height: 32px; padding: 0; border-radius: 50%;
  background: var(--menta); border-color: var(--menta); color: #fff;
  font-size: .85rem; line-height: 1;
  box-shadow: 0 2px 8px rgba(23,191,138,.4);
}
.clase-check::after { content: none; }

.tirador {
  position: absolute; left: 0; right: 0; bottom: 0; height: 18px;
  cursor: ns-resize; touch-action: none;
  display: grid; place-items: end center; padding-bottom: 4px;
}
.tirador::after { content: ''; width: 32px; height: 4px; border-radius: var(--pill); background: var(--linea-2); }
.clase.realizada .tirador, .clase.cancelada .tirador, .clase.no-realizada .tirador { display: none; }

.badges-dinero { display: grid; gap: .6rem; margin-top: .9rem; grid-template-columns: 2fr 1fr; align-items: stretch; }
.badge-dinero {
  text-align: left; border: 1px solid var(--linea); border-radius: var(--r);
  background: var(--papel-2); padding: .75rem .9rem; display: grid; gap: .55rem; cursor: pointer;
}
.badge-dinero:hover { border-color: var(--acento); }
.badge-dinero.apagada { opacity: .5; cursor: default; }
.badge-titulo { font-family: var(--display); font-weight: 800; letter-spacing: -.02em; text-transform: uppercase; font-size: .82rem; color: var(--tinta); }

.badge-cifras { display: flex; flex-wrap: wrap; gap: .5rem 1.4rem; }
.badge-cifra b { display: block; font-family: var(--display); font-size: 1.25rem; font-weight: 800; letter-spacing: -.03em; color: var(--tinta); }
.badge-cifra span { font-size: .72rem; text-transform: uppercase; letter-spacing: .04em; color: var(--tinta); opacity: .75; }
.badge-cifra.en-verde b { color: color-mix(in srgb, var(--menta) 80%, var(--tinta)); }
.badge-cifra.en-rojo b { color: var(--ladrillo); }
@media (max-width: 899px) { .badges-dinero { grid-template-columns: 1fr; } }

.totales {
  display: flex; gap: .55rem; margin-top: .9rem;
  overflow-x: auto; -webkit-overflow-scrolling: touch; padding-bottom: .3rem;
  scroll-snap-type: x proximity;
}
.totales::-webkit-scrollbar { height: 4px; }
.total-caja {
  flex: 0 0 auto; min-width: 122px; scroll-snap-align: start;
  background: var(--papel-2); border: 0; border-radius: var(--r-sm); padding: .7rem .8rem;
}
.total-caja span { white-space: nowrap; }
.total-caja b { display: block; font-family: var(--display); font-size: 1.3rem; font-weight: 800; letter-spacing: -.03em; }
.total-caja span { font-size: .68rem; color: var(--gris); text-transform: uppercase; letter-spacing: .06em; font-weight: 600; }
.total-caja.destacado { background: color-mix(in srgb, var(--menta) 12%, var(--papel)); }
.total-caja.destacado b { color: #0E8C66; }
.total-caja.alerta { background: color-mix(in srgb, var(--ladrillo) 10%, var(--papel)); }
.total-caja.alerta b { color: var(--ladrillo); }

.acciones { display: grid; gap: .55rem; }
.acciones button { width: 100%; }
.dato-linea { display: flex; justify-content: space-between; gap: .7rem; padding: .65rem 0; border-bottom: 1px solid var(--linea); font-size: .93rem; }
.dato-linea:last-child { border-bottom: 0; }
.dato-linea span { color: var(--gris); }
.etiqueta {
  display: inline-block; font-size: .7rem; font-weight: 700; text-transform: uppercase; letter-spacing: .06em;
  padding: .25rem .7rem; border-radius: var(--pill); background: var(--degradado-suave); color: var(--acento-2); border: 0;
}

.barra-abajo {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 45;
  display: flex; gap: .3rem;
  background: color-mix(in srgb, var(--papel) 88%, transparent);
  backdrop-filter: saturate(180%) blur(18px);
  -webkit-backdrop-filter: saturate(180%) blur(18px);
  border-top: 1px solid var(--linea);
  padding: .45rem calc(.6rem + var(--seg-der)) calc(.45rem + var(--seg-abajo)) calc(.6rem + var(--seg-izq));
}
.barra-abajo button {
  flex: 1; min-width: 0; font-size: 0; padding: .3rem .15rem;
  background: transparent; color: var(--gris); border-radius: var(--r-sm);
  flex-direction: column; gap: .1rem; min-height: 54px;
}
.barra-abajo button .ico { font-size: 1.35rem; line-height: 1; }
.barra-abajo button .rotulo {
  font-size: .62rem; line-height: 1.1; font-weight: 600; letter-spacing: .01em;
  max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.barra-abajo button.btn-ocre .rotulo { color: #fff; }
.barra-abajo button.btn-ocre {
  background: var(--degradado); color: #fff; box-shadow: var(--sombra-color);
}

.velo {
  position: fixed; inset: 0; z-index: 80;
  background: rgba(8,10,14,.55);
  backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
  display: flex; align-items: flex-end;
  justify-content: center;
  padding: 0;
  animation: velar .2s ease-out;
}
@keyframes velar { from { opacity: 0; } to { opacity: 1; } }
.velo[hidden] { display: none; }

.ventana-ancha { max-width: 720px; }

.blog-lista { display: grid; gap: 1.4rem; }
.blog-entrada { border-bottom: 1px solid var(--linea); padding-bottom: 1.2rem; }
.blog-entrada:last-child { border-bottom: none; padding-bottom: 0; }
.blog-foto {
  width: 100%; max-height: 260px; object-fit: cover;
  border-radius: var(--r-md); margin-bottom: .7rem; display: block;
}
.blog-entrada h4 { margin: 0 0 .25rem; font-size: 1.05rem; }
.blog-meta { margin: 0 0 .5rem; font-size: .78rem; color: var(--gris); text-transform: uppercase; letter-spacing: .04em; }
.blog-texto { margin: 0; white-space: pre-wrap; line-height: 1.55; }

.ventana {
  background: var(--papel);
  width: 100%;
  height: 100dvh;
  max-height: 100dvh;
  border-radius: 0;
  overflow: auto;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
  box-shadow: var(--sombra-2);
  padding-bottom: var(--seg-abajo);
  animation: subir .3s cubic-bezier(.2,.9,.3,1.1);
}
@keyframes subir { from { transform: translateY(100%); } to { transform: translateY(0); } }

.ventana::before {
  content: ''; display: block; width: 44px; height: 5px; border-radius: var(--pill);
  background: var(--linea-2); margin: .6rem auto .1rem;
}
.ventana-cab {
  display: flex; align-items: center; justify-content: space-between; gap: .6rem;
  padding: .7rem 1.1rem .9rem; border-bottom: 1px solid var(--linea);
  position: sticky; top: 0; background: var(--papel); z-index: 10;
}
.ventana-cab h3 { margin: 0; }
.ventana-cuerpo { padding: 1.1rem; }
.ventana-pie {
  padding: .9rem 1.1rem calc(.9rem + var(--seg-abajo));
  border-top: 1px solid var(--linea);
  display: flex; gap: .5rem; flex-direction: row; flex-wrap: wrap; justify-content: flex-end;
  position: sticky; bottom: 0; background: var(--papel); z-index: 10;
}
.ventana-pie button, .ventana-pie .btn { width: 100%; }
.ventana-pie > button:not(:only-child), .ventana-pie > .btn:not(:only-child) {
  width: auto; flex: 1 1 calc((100% - 1.5rem) / 4); max-width: calc((100% - 1.5rem) / 4);
}
.cerrar {
  background: var(--papel-2); border: 0; color: var(--gris);
  font-size: 1.4rem; padding: 0; width: 38px; height: 38px; min-height: 38px;
  flex: 0 0 38px; border-radius: 50%;
}

.campana { position: relative; }
.campana > button {
  background: var(--papel-2); border-color: transparent;
  color: var(--tinta); padding: 0; width: var(--toque); height: var(--toque); font-size: 1.2rem;
  border-radius: 50%;
}
.campana .cuenta {
  position: absolute; top: -2px; right: -2px; min-width: 19px; height: 19px;
  border-radius: var(--pill); background: var(--dos); color: #fff;
  font-size: .68rem; font-weight: 700; display: grid; place-items: center; padding: 0 5px;
  box-shadow: 0 0 0 2px var(--papel);
}
.campana .cuenta[hidden] { display: none; }

.buzon {
  position: fixed; left: 0; right: 0; bottom: 0; top: auto; z-index: 60;
  width: auto; max-height: 72dvh; overflow: auto;
  background: var(--papel); color: var(--tinta);
  border: 0; border-radius: var(--r-xl) var(--r-xl) 0 0;
  box-shadow: var(--sombra-2);
  padding-bottom: var(--seg-abajo);
  animation: subir .26s cubic-bezier(.2,.9,.3,1.1);
}
.buzon[hidden] { display: none; }
.buzon-velo {
  position: fixed; inset: 0; z-index: 59;
  background: rgba(0,0,0,.35);
}
.buzon-velo[hidden] { display: none; }
.buzon-cab {
  display: flex; align-items: center; justify-content: space-between; gap: .5rem;
  padding: .9rem 1.1rem; border-bottom: 1px solid var(--linea);
  position: sticky; top: 0; background: var(--papel);
}
.buzon-cab h4 { margin: 0; font-size: 1.05rem; }
.aviso-fila {
  display: flex; align-items: center; gap: .4rem;
  border-bottom: 1px solid var(--linea); padding-right: .7rem;
}
.aviso-fila.sin-leer { background: var(--degradado-suave); }
.aviso-fila .aviso-leer { flex: 0 0 auto; background: var(--papel); }
.aviso-fila .aviso-enlace {
  flex: 0 0 auto; align-self: center; white-space: nowrap;
  color: var(--acento); font-size: .82rem; font-weight: 600; text-decoration: underline;
}
.aviso-item {
  display: block; width: 100%; min-width: 0; text-align: left; background: transparent;
  border: 0; border-radius: 0;
  padding: .85rem 1.1rem; color: var(--tinta); font-weight: 400; min-height: var(--toque);
  font-family: var(--texto);
}
.aviso-item:active { transform: none; background: var(--papel-2); }
.btn-todos {
  width: auto; min-width: 0; padding: .35rem .8rem;
  font-size: .78rem; white-space: nowrap; border-radius: var(--pill);
}
.aviso-item strong { display: block; font-size: .93rem; font-family: var(--display); }
.aviso-item p { margin: .2rem 0 0; font-size: .85rem; color: var(--gris); }
.aviso-item time { font-size: .72rem; color: var(--gris); font-family: var(--dato); }

.video-rejilla { display: grid; grid-template-columns: 1fr; gap: .5rem; position: relative; }
.video-marco { position: relative; background: #05070A; border-radius: var(--r); overflow: hidden; aspect-ratio: 3/4; }
.video-marco video { width: 100%; height: 100%; object-fit: cover; display: block; }
.video-marco figcaption {
  position: absolute; left: 10px; bottom: 10px; color: #fff; font-size: .76rem; font-weight: 600;
  background: rgba(0,0,0,.45); backdrop-filter: blur(8px);
  padding: .25rem .7rem; border-radius: var(--pill);
}
.video-rejilla figure:first-child {
  position: absolute; right: 12px; top: 12px; width: 32%; aspect-ratio: 3/4; z-index: 2;
  border-radius: var(--r-sm); overflow: hidden; box-shadow: var(--sombra-2);
}
.video-rejilla figure:first-child .video-marco { border-radius: var(--r-sm); }

.ventana.ventana-ancha-90 { width: 90vw; max-width: 90vw; }

.ventana-video .ventana-cab { z-index: 3; background: var(--papel); }
.ventana-video .ventana-pie { z-index: 3; background: var(--papel); }
.solo-ancho { display: none; }
.solo-ancho-b { display: none; }

.ventana.ventana-video {
  height: 100dvh; max-height: 100dvh; border-radius: 0;
  display: grid; grid-template-rows: auto minmax(0, 1fr) auto;
  overflow: hidden; padding-bottom: 0; animation: none;
}
.ventana.ventana-video .ventana-cab { padding-bottom: .5rem; }
.ventana.ventana-video .ventana-pie {
  padding: .5rem .9rem calc(.5rem + var(--seg-abajo));
  display: flex; flex-direction: row; flex-wrap: nowrap; gap: .5rem;
  align-items: stretch; justify-content: stretch;
  height: 10dvh; min-height: 54px;
}
.ventana.ventana-video .ventana-pie button {
  flex: 1 1 0; width: auto; min-width: 0; height: 100%; min-height: 0;
}

.video-escena {
  display: grid; grid-template-rows: 5fr 1fr 3fr;
  gap: .5rem; min-height: 0; overflow: hidden; padding: 0 .9rem .5rem;
}
.video-escena .video-nota { grid-row: 1; align-self: start; }
.video-zona { grid-row: 1; min-height: 0; position: relative; display: flex; flex-direction: column; }
.video-escena .video-controles { grid-row: 2; margin-top: 0; align-content: center; min-height: 0; }
.video-escena .chat-clase { grid-row: 3; min-height: 0; margin-top: 0; padding-top: .5rem;
  display: grid; grid-template-rows: auto minmax(0, 1fr) auto; }
.video-escena .chat-clase-hilo { max-height: none; height: 100%; min-height: 0; }
.video-escena #vEstado { position: absolute; left: 10px; bottom: 8px; z-index: 2;
  margin: 0; color: #fff; background: rgba(0,0,0,.5); padding: .15rem .55rem;
  border-radius: var(--pill); font-size: .7rem; }

.ventana-video .video-rejilla { flex: 1; min-height: 0; grid-template-columns: 1fr; }
.ventana-video .video-marco { aspect-ratio: auto; height: 100%; }
.ventana-video .video-marco video { object-fit: contain; background: #05070A; }
.ventana-video .video-rejilla figure:first-child {
  position: absolute; right: 10px; top: 10px; width: 30%; max-width: 160px;
  aspect-ratio: 3/4; height: auto; z-index: 2;
  border-radius: var(--r-sm); overflow: hidden; box-shadow: var(--sombra-2);
}
.ventana-video .video-rejilla figure:first-child .video-marco {
  border-radius: var(--r-sm); height: 100%; aspect-ratio: auto;
}
.ventana-video .video-rejilla figure:first-child video { object-fit: cover; }

.video-controles { display: grid; grid-template-columns: 1fr 1fr; gap: .45rem; margin-top: .9rem; }
.video-controles button { font-size: .85rem; padding: .55rem .4rem; }
.cronometro { font-family: var(--dato); font-size: .95rem; white-space: nowrap; }
.punto-grabando { display: inline-block; width: 9px; height: 9px; border-radius: 50%; background: var(--dos); margin-right: .35rem; animation: latir 1.6s infinite; }
@keyframes latir { 0%,100% { opacity: 1 } 50% { opacity: .2 } }

.paquetes { display: grid; gap: .55rem; }
.paquete {
  display: block; position: relative; cursor: pointer;
  border: 1.5px solid transparent; border-radius: var(--r); padding: .95rem 1rem;
  background: var(--papel-2); min-height: var(--toque);
  transition: border-color .15s ease, background .15s ease;
}
.paquete.elegido { border-color: var(--acento); background: color-mix(in srgb, var(--acento) 8%, var(--papel)); }
.paquete input { position: absolute; opacity: 0; pointer-events: none; }
.paquete b { display: block; font-family: var(--display); font-size: 1.02rem; }
.paquete span { font-family: var(--dato); font-size: .92rem; color: var(--acento); font-weight: 600; }
.paquete small { display: block; color: var(--gris); font-size: .8rem; margin-top: .2rem; }

.medios { display: grid; grid-template-columns: repeat(3, 1fr); gap: .4rem; }
.medio { background: var(--papel-2); color: var(--tinta); border-color: transparent; font-size: .88rem; padding: .55rem .3rem; border-radius: var(--r-sm); }
.medio.elegido { background: var(--degradado); color: #fff; box-shadow: var(--sombra-color); }

.qr-caja { display: grid; gap: .9rem; justify-items: center; }
.qr-caja img, .qr-vacio {
  width: 200px; height: 200px; border-radius: var(--r); border: 1px solid var(--linea);
  object-fit: contain; background: var(--papel-2);
}
.qr-vacio { display: grid; place-items: center; text-align: center; font-size: .82rem; color: var(--gris); padding: .6rem; }
.qr-caja > div { width: 100%; }

.chat-marco { display: grid; grid-template-columns: 1fr; height: 72dvh; }
.chat-salas { border-bottom: 1px solid var(--linea); overflow: auto; background: var(--papel); max-height: 32%; }
.chat-sala {
  display: block; position: relative; width: 100%; text-align: left;
  background: transparent; border: 0; border-bottom: 1px solid var(--linea); border-radius: 0;
  padding: .8rem 1.1rem; color: var(--tinta); font-weight: 400; min-height: var(--toque);
  font-family: var(--texto);
}
.chat-sala.activa { background: var(--degradado-suave); box-shadow: inset 3px 0 0 var(--acento); }
.chat-sala b { display: block; font-size: .94rem; font-family: var(--display); }
.chat-sala small { color: var(--gris); font-size: .8rem; }
.chat-sala .cuenta {
  position: absolute; right: 1.1rem; top: .9rem; min-width: 19px; height: 19px;
  border-radius: var(--pill); background: var(--dos); color: #fff;
  font-size: .68rem; font-weight: 700; display: grid; place-items: center; padding: 0 5px;
}

.chat-hilo { display: flex; flex-direction: column; min-height: 0; }
.chat-mensajes {
  flex: 1; overflow: auto; padding: 1rem;
  display: flex; flex-direction: column; gap: .4rem;
  overscroll-behavior: contain;
  background: var(--fondo);
}
.chat-msg {
  max-width: 82%; padding: .55rem .9rem; border-radius: 22px;
  font-size: .93rem; line-height: 1.4; word-break: break-word;
  animation: aparecer .18s ease-out;
}
.chat-msg b { display: block; font-size: .74rem; opacity: .7; font-weight: 700; }
.chat-msg time { display: block; font-size: .68rem; opacity: .6; font-family: var(--dato); margin-top: .15rem; }
.chat-msg.mio { align-self: flex-end; background: var(--degradado); color: #fff; border-bottom-right-radius: 6px; }
.chat-msg.suyo { align-self: flex-start; background: var(--papel-2); color: var(--tinta); border-bottom-left-radius: 6px; }

.chat-barra {
  display: flex; gap: .45rem; align-items: center;
  padding: .6rem .7rem calc(.6rem + var(--seg-abajo));
  border-top: 1px solid var(--linea); background: var(--papel);
}
.chat-barra input { flex: 1; border-radius: var(--pill); }
.chat-barra button { flex: 0 0 auto; border-radius: var(--pill); }

.crud-barra { display: grid; gap: .55rem; margin-bottom: .8rem; }
.crud-barra h2 { margin: 0; }
.crud-barra .crece { width: 100%; }
#filtro { border-radius: var(--pill); padding-left: 2.6rem;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='%2378828E' stroke-width='2'%3E%3Ccircle cx='7' cy='7' r='5'/%3E%3Cpath d='M11 11l4 4' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: left 1rem center;
}

.tabla-scroll { display: none; }
.grilla-forzada .tabla-scroll {
  display: block; overflow: auto; max-height: 62dvh;
  border: 1px solid var(--linea); border-radius: var(--r); background: var(--papel);
  -webkit-overflow-scrolling: touch;
}
.grilla-forzada .fichas { display: none; }
.tabla-scroll.tabla-siempre {
  display: block; overflow: auto; max-height: 62dvh;
  border: 1px solid var(--linea); border-radius: var(--r); background: var(--papel);
  -webkit-overflow-scrolling: touch;
}
table.grilla th.num, table.grilla td.num { text-align: right; font-family: var(--dato); }
table.grilla td.num.negativo { color: var(--ladrillo); }
table.grilla.grilla-margen thead th { cursor: default; }
.fichas { display: grid; gap: .7rem; }
.ficha {
  background: var(--papel); border: 1px solid var(--linea);
  border-radius: var(--r); padding: .95rem; box-shadow: var(--sombra);
}
.ficha-titulo { font-family: var(--display); font-weight: 700; font-size: 1rem; margin-bottom: .5rem; display: flex; align-items: center; justify-content: space-between; gap: .5rem; }
.ficha-titulo span { color: var(--gris); font-family: var(--dato); font-size: .78rem; font-weight: 400; }
.ficha-datos { display: grid; gap: .1rem; margin-bottom: .7rem; }
.ficha-datos div { display: flex; justify-content: space-between; gap: .8rem; font-size: .89rem; padding: .35rem 0; border-bottom: 1px solid var(--linea); }
.ficha-datos div:last-child { border-bottom: 0; }
.ficha-datos dt { color: var(--gris); font-size: .8rem; }
.ficha-datos dd { margin: 0; text-align: right; word-break: break-word; font-weight: 500; }
.ficha-acciones { display: flex; gap: .45rem; }
.ficha-acciones button { flex: 1; }

table.grilla { border-collapse: separate; border-spacing: 0; width: 100%; font-size: .88rem; white-space: nowrap; }
table.grilla th, table.grilla td { padding: .75rem .9rem; border-bottom: 1px solid var(--linea); text-align: left; }
table.grilla thead th {
  position: sticky; top: 0; z-index: 2; background: var(--papel-2);
  white-space: nowrap;
  cursor: pointer; user-select: none; font-size: .72rem; text-transform: uppercase; letter-spacing: .07em; color: var(--gris);
}
table.grilla tbody tr:hover { background: var(--papel-2); }
table.grilla td.acciones-col { position: sticky; right: 0; background: var(--papel); }
table.grilla tbody tr:hover td.acciones-col { background: var(--papel-2); }
.orden-marca { color: var(--acento); }

.orden-movil { display: flex; gap: .45rem; }
.orden-movil select { flex: 1; }
#ordenDir { flex: 0 0 var(--toque); width: var(--toque); padding: 0; border-radius: 50%; }

.paginador {
  display: flex; flex-wrap: nowrap; align-items: center; justify-content: flex-end;
  gap: .35rem; margin-top: .9rem; font-size: .9rem;
  overflow-x: auto; padding-bottom: .2rem;
  -webkit-overflow-scrolling: touch;
}
.paginador::-webkit-scrollbar { display: none; }
.paginador .por-pagina { display: flex; align-items: center; gap: .4rem; flex: 0 0 auto; margin-right: auto; }
.paginador .por-pagina input { width: 68px; padding: .5rem .6rem; min-height: 40px; text-align: center; }
.paginador .por-pagina label { margin: 0; white-space: nowrap; font-size: .68rem; }
.paginador select {
  flex: 0 0 auto; width: auto; min-width: 108px;
  padding: .5rem 2rem .5rem .8rem; min-height: 40px; border-radius: var(--pill);
  background-position: right .7rem center;
}
.paginador button { width: 40px; min-width: 40px; padding: 0; border-radius: 50%; flex: 0 0 40px; }
.paginador .info { flex: 0 0 auto; color: var(--gris); font-family: var(--dato); font-size: .78rem; white-space: nowrap; margin-left: .5rem; }

.menu-admin {
  display: flex; gap: .4rem; overflow-x: auto; scroll-snap-type: x proximity;
  padding: .6rem calc(.9rem + var(--seg-der)) .6rem calc(.9rem + var(--seg-izq));
  background: var(--papel); border-bottom: 1px solid var(--linea);
  -webkit-overflow-scrolling: touch;
  position: sticky; top: 0; z-index: 38;
}
.menu-admin::-webkit-scrollbar { display: none; }
.menu-admin button {
  background: var(--papel-2); border-color: transparent; color: var(--gris);
  scroll-snap-align: start; font-size: 1.2rem;
  width: var(--toque); min-width: var(--toque); height: var(--toque); min-height: var(--toque);
  padding: 0; border-radius: 50%; flex: 0 0 var(--toque);
}
.menu-admin button.activo { background: var(--degradado); color: #fff; box-shadow: var(--sombra-color); }

.miniatura { width: 60px; height: 46px; object-fit: cover; border-radius: var(--r-xs); border: 1px solid var(--linea); background: var(--papel-2); cursor: zoom-in; display: block; }
.lupa { max-width: 100%; border-radius: var(--r); display: block; }

.foto-mini {
  width: 46px; height: 46px; border-radius: 50%; object-fit: cover;
  border: 0; background: var(--papel-2);
  box-shadow: 0 0 0 2px var(--papel), 0 0 0 4px var(--acento);
  cursor: zoom-in; display: block;
}
.foto-vacia {
  width: 46px; height: 46px; border-radius: 50%;
  background: var(--papel-2); color: var(--gris);
  display: grid; place-items: center; font-size: .8rem; font-weight: 700;
  box-shadow: 0 0 0 2px var(--papel), 0 0 0 3px var(--linea-2);
}
.muestra-color {
  display: inline-block; width: 14px; height: 14px; border-radius: 4px;
  border: 1px solid var(--linea); vertical-align: -2px; margin-right: .35rem;
}

.foto-campo {
  border: 2px dashed var(--linea-2); border-radius: var(--r);
  padding: 1rem; display: grid; gap: .7rem; justify-items: center;
  background: var(--papel-2); transition: border-color .15s, background .15s;
}
.foto-campo:focus-visible, .foto-campo.encima { border-color: var(--acento); background: color-mix(in srgb, var(--acento) 7%, var(--papel)); outline: none; }
.foto-vista {
  width: 132px; height: 132px; border-radius: var(--r);
  background: var(--papel); border: 1px solid var(--linea);
  display: grid; place-items: center; overflow: hidden;
}
.foto-vista img { width: 100%; height: 100%; object-fit: cover; }
.foto-vista span { color: var(--gris); font-size: .82rem; }
.foto-acciones { display: flex; gap: .45rem; flex-wrap: wrap; justify-content: center; }
.foto-campo small { color: var(--gris); font-size: .76rem; text-align: center; }

.ficha-titulo .foto-mini, .ficha-titulo .foto-vacia { width: 38px; height: 38px; flex: 0 0 38px; }
.ficha-datos .foto-mini, .ficha-datos .foto-vacia { margin-left: auto; }

#avisos {
  position: fixed; left: .7rem; right: .7rem;
  bottom: calc(.8rem + var(--barra-abajo) + var(--seg-abajo));
  z-index: 200; height: 0; pointer-events: none;
}
.globo {
  position: absolute; left: 0; right: 0; bottom: 0;
  background: var(--pizarra); color: #fff;
  padding: .85rem 1.1rem; border-radius: var(--pill);
  box-shadow: var(--sombra-2); font-size: .92rem; font-weight: 500;
  animation: subir .24s cubic-bezier(.2,.9,.3,1.1);
  text-align: center;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  transform-origin: 50% 100%;
  transition: transform .22s ease, opacity .22s ease;
  transform: translateY(calc(var(--pila, 0) * -8px)) scale(calc(1 - var(--pila, 0) * .045));
  opacity: calc(1 - var(--pila, 0) * .22);
  z-index: calc(20 - var(--pila, 0));
}
.globo[style*="--pila: 0"] { white-space: normal; }
.globo.error { background: var(--dos); }
.globo.ok { background: var(--menta); }

.cargando { padding: 2.4rem; text-align: center; color: var(--gris); }
.vacio { padding: 1.8rem; text-align: center; color: var(--gris); }

.ancho { width: 100%; }
.pista { font-size: .8rem; color: var(--gris); margin: 1.1rem 0 0; line-height: 1.5; }
.agenda-barra + .agenda-scroll + .pista { margin-top: .7rem; }
.google-caja { margin-top: .7rem; display: grid; justify-items: stretch; }
.grupo-botones { display: flex; gap: .35rem; }
.cuerpo-admin {
  flex: 1;
  padding: .9rem calc(.9rem + var(--seg-der)) calc(1rem + var(--seg-abajo)) calc(.9rem + var(--seg-izq));
}
.persona-grande .avatar { width: 60px; height: 60px; flex-basis: 60px; font-size: 1.1rem; }
.persona-grande .persona-datos { font-size: 1.05rem; }
#panelMas > .tarjeta { margin-bottom: .9rem; }
#panelMas > .tarjeta:last-child { margin-bottom: 0; }
.pestanas .ico { font-size: 1.25rem; line-height: 1; }
.pestanas button { font-size: 0; }

.ico-svg {
  width: 1.15em; height: 1.15em; display: block;
  fill: none; stroke: currentColor; stroke-width: 2.1;
  stroke-linecap: round; stroke-linejoin: round;
}
.btn-ico {
  gap: 0; padding: 0;
  width: var(--toque); min-width: var(--toque); height: var(--toque);
  font-size: 1.15rem; line-height: 1; border-radius: 50%;
}
.btn-ico.btn-mini { width: 38px; min-width: 38px; height: 38px; min-height: 38px; font-size: 1rem; }
.btn-ico.ancho, .ventana-pie .btn-ico { width: 100%; border-radius: var(--pill); }
.btn-ico.con-monto { width: auto; padding: 0 1.1rem; gap: .5rem; font-family: var(--dato); font-size: 1rem; }
.medio.btn-ico { width: auto; border-radius: var(--r-sm); height: var(--toque); font-size: 1.3rem; }
.acciones .btn-ico, .ficha-acciones .btn-ico { width: 100%; border-radius: var(--pill); }
.video-controles .btn-ico { width: 100%; border-radius: var(--pill); }
.foto-acciones .btn-ico { border-radius: 50%; }

[data-tip] { position: relative; }
[data-tip]::before {
  content: attr(data-tip);
  position: absolute; bottom: calc(100% + 8px); left: 50%; transform: translateX(-50%) translateY(4px);
  background: var(--pizarra); color: #fff;
  font-family: var(--texto); font-size: .74rem; font-weight: 600; letter-spacing: .01em;
  padding: .3rem .6rem; border-radius: var(--r-xs);
  white-space: nowrap; pointer-events: none;
  opacity: 0; visibility: hidden; z-index: 300;
  transition: opacity .12s ease, transform .12s ease, visibility .12s;
  box-shadow: var(--sombra);
}
[data-tip]:focus-visible::before { opacity: 1; visibility: visible; transform: translateX(-50%) translateY(0); }
.barra-abajo [data-tip]::before, .pestanas [data-tip]::before { bottom: auto; top: calc(100% + 8px); }
.cabecera [data-tip]::before, .menu-admin [data-tip]::before { bottom: auto; top: calc(100% + 8px); }
.ventana-cab [data-tip]::before { bottom: auto; top: calc(100% + 8px); }
.paginador [data-tip]::before { bottom: auto; top: calc(100% + 8px); }
.tabla-scroll [data-tip]::before, .fichas [data-tip]::before { content: none; }

#marcaInicio { cursor: pointer; border-radius: var(--r-sm); }
#marcaInicio:active { transform: scale(.97); }
#marcaInicio:focus-visible { outline: 3px solid var(--acento-2); outline-offset: 3px; }

.ficha-nombre { display: flex; align-items: center; gap: .6rem; font-weight: 700; min-width: 0; }
.ventana.angosta { max-width: 440px; }

.campo-clave { display: flex; gap: .45rem; align-items: center; }
.campo-clave input { flex: 1; }
.campo-clave .ojo { flex: 0 0 var(--toque); }

.modos {
  display: flex; gap: .35rem; padding: .3rem;
  background: var(--papel-2); border-radius: var(--pill); margin-bottom: 1.1rem;
}
.modos button {
  flex: 1; background: transparent; color: var(--gris);
  border-color: transparent; font-size: 1.2rem; min-height: 42px;
}
.modos button.activo { background: var(--degradado); color: #fff; box-shadow: var(--sombra-color); }

.patron { display: grid; gap: .6rem; position: relative; z-index: 0; }
.patron-grilla {
  position: relative;
  display: grid; grid-template-columns: repeat(4, 1fr); gap: .45rem;
  background: var(--papel-2); border-radius: var(--r); padding: .6rem;
  width: min(220px, 100%); margin: 0;
  touch-action: none; user-select: none;
}
.patron-trazo {
  position: absolute; inset: .6rem; width: calc(100% - 1.2rem); height: calc(100% - 1.2rem);
  pointer-events: none; z-index: 1; overflow: visible;
}
.patron-punto {
  aspect-ratio: 1; min-height: 0; min-width: 0; padding: 0; border-radius: 50%;
  background: var(--papel); color: var(--gris);
  border: 2px solid var(--linea-2);
  font-family: var(--dato); font-size: .68rem; font-weight: 700;
  position: relative; z-index: 2;
}
.patron-grilla.trazando .patron-punto { cursor: crosshair; }
.patron-punto span { pointer-events: none; }
.patron-punto.elegido {
  background: var(--degradado); color: #fff; border-color: transparent;
  box-shadow: var(--sombra-color);
}
.patron-pie { display: flex; align-items: center; justify-content: space-between; gap: .6rem; }
.patron-estado { font-size: .78rem; color: var(--gris); font-weight: 600; }

.marca-ingreso { margin-bottom: .9rem; gap: .6rem; }
.marca-ingreso .marca-icono { width: 40px; height: 40px; flex-basis: 40px; border-radius: 13px; font-size: 1rem; }
.marca-ingreso .marca-texto { font-size: 1.2rem; }

.ingreso-caja .modos { margin-bottom: .75rem; }
.ingreso-caja .modos button { min-height: 38px; font-size: 1.05rem; }
.ingreso-caja .campo { margin-bottom: .7rem; }
.ingreso-caja .separador { margin: .8rem 0; }
.ingreso-caja .aviso { margin-bottom: .7rem; padding: .6rem .8rem; font-size: .85rem; }

.enlace-suave {
  background: none; border: none; padding: .35rem 0 0; min-height: 0;
  color: var(--acento-2); font-size: .8rem; font-weight: 600;
  text-decoration: underline; text-underline-offset: 2px;
  align-self: flex-start; width: auto;
}
.enlace-suave:active { opacity: .6; }

.fila-acceso { display: flex; gap: .5rem; margin-top: .8rem; }
.fila-acceso button { flex: 1; min-width: 0; }
.fila-acceso button[hidden] { display: none; }

.ayuda-ingreso { margin-top: .9rem; border-top: 1px solid var(--linea); padding-top: .7rem; }
.ayuda-ingreso summary {
  cursor: pointer; list-style: none; min-height: var(--toque);
  display: flex; align-items: center; gap: .4rem;
  font-size: .8rem; text-transform: uppercase; letter-spacing: .08em;
  font-weight: 700; color: var(--gris);
}
.ayuda-ingreso summary::-webkit-details-marker { display: none; }
.ayuda-ingreso summary::after { content: '▾'; margin-left: auto; transition: transform .2s; }
.ayuda-ingreso[open] summary::after { transform: rotate(180deg); }
.ayuda-ingreso dl { margin: .3rem 0 .2rem; display: grid; gap: .7rem; }
.ayuda-ingreso dt {
  font-family: var(--display); font-weight: 700; font-size: .82rem;
  color: var(--acento-2); text-transform: uppercase; letter-spacing: .05em;
}
.ayuda-ingreso dd { margin: .15rem 0 0; font-size: .84rem; color: var(--gris); line-height: 1.5; }

.editable { cursor: pointer; border-radius: var(--r-sm); }
.editable:active { transform: scale(.97); }
.editable:focus-visible { outline: 3px solid var(--acento-2); outline-offset: 3px; }

.ventana-cuerpo h4 {
  margin: 1.4rem 0 .3rem; font-size: .8rem; text-transform: uppercase;
  letter-spacing: .08em; color: var(--gris);
}
.ventana-cuerpo h4:first-child { margin-top: 0; }
.ventana-cuerpo .pista { margin: 0 0 .8rem; }

.cursos-editor { display: grid; gap: .45rem; }
.curso-linea {
  display: flex; align-items: center; gap: .6rem;
  background: var(--papel-2); border: 1.5px solid transparent;
  border-radius: var(--r-sm); padding: .5rem .7rem;
  transition: border-color .15s ease, background .15s ease;
}
.curso-linea.elegido { border-color: var(--acento); background: color-mix(in srgb, var(--acento) 7%, var(--papel)); }
.curso-check { display: flex; align-items: center; gap: .5rem; flex: 1; margin: 0; cursor: pointer;
  font-size: .92rem; text-transform: none; letter-spacing: 0; color: var(--tinta); min-height: var(--toque); }
.curso-check input { width: 22px; height: 22px; min-height: 0; flex: 0 0 22px; accent-color: var(--acento); appearance: auto; }
.curso-linea [data-tarifa] { width: 104px; flex: 0 0 104px; min-height: 40px; padding: .45rem .6rem;
  text-align: right; font-family: var(--dato); }
.curso-linea [data-tarifa]:disabled { opacity: .4; }

.vacio-linea { color: var(--gris); font-size: .85rem; }
table.grilla th.sin-orden { cursor: default; }
table.grilla td .etiqueta { margin: 1px 2px 1px 0; }

.matricula-editor { display: grid; gap: .4rem; }
.matricula-cab {
  display: none; font-size: .66rem; font-weight: 700; color: var(--gris);
  text-transform: uppercase; letter-spacing: .07em; padding: 0 .7rem;
}
.matricula-linea {
  display: grid; grid-template-columns: 1fr; gap: .4rem;
  background: var(--papel-2); border: 1.5px solid transparent;
  border-radius: var(--r-sm); padding: .55rem .7rem;
  transition: border-color .15s ease, background .15s ease;
}
.pastilla-clases {
  font-size: .6rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em;
  color: var(--ocre); background: color-mix(in srgb, var(--ocre) 16%, var(--papel));
  padding: .1rem .45rem; border-radius: var(--pill); white-space: nowrap;
}
.matricula-linea.elegido { border-color: var(--acento); background: color-mix(in srgb, var(--acento) 7%, var(--papel)); }
.matricula-docente { font-size: .88rem; padding: .45rem .8rem; display: flex; align-items: center; }
.matricula-linea [data-venta], .matricula-linea [data-margen] {
  min-height: 40px; padding: .45rem .6rem; text-align: right; font-family: var(--dato);
}
.matricula-linea [data-venta]:disabled,
.matricula-linea [data-margen]:disabled { opacity: .4; }
.matricula-costo {
  font-family: var(--dato); font-size: .88rem; color: var(--gris);
  display: flex; align-items: center; gap: .4rem;
}
.matricula-costo::before { content: 'Costo'; font-family: var(--texto); font-size: .66rem; text-transform: uppercase; letter-spacing: .07em; }

.precio-clase b.en-rojo { color: var(--ladrillo); }
.a-favor { color: var(--menta); font-weight: 600; }
tr.fila-consumo td, tr.fila-consumo td a { color: #606060; }
tr.fila-consumo td.en-rojo { color: var(--ladrillo); }
tr.fila-por-confirmar td { background: color-mix(in srgb, var(--ocre) 12%, transparent); }
tr.fila-abono td { color: #000000; background: color-mix(in srgb, var(--menta) 7%, transparent); }
tr.fila-abono td b, tr.fila-abono td strong { color: #000000; }
.enlaces-detalle { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: .4rem; }
.enlaces-detalle a {
  color: var(--acento); font-size: .85rem; font-weight: 600;
  text-decoration: underline; word-break: break-all;
}
.glosa-col { white-space: normal; }
.badge-estado {
  display: inline-block; padding: .12rem .5rem; border-radius: var(--pill);
  font-size: .74rem; font-weight: 600; color: var(--sobre-estado);
  background: var(--estado-no-realizada);
}
.badge-estado.est-pendiente { background: var(--estado-pendiente); }
.badge-estado.est-pagado, .badge-estado.est-aplicado { background: var(--estado-aceptada); }
.badge-estado.est-rechazado { background: var(--estado-cancelada); }
.badge-amortiza {
  display: inline-block; margin: 1px 2px 1px 0; padding: .12rem .45rem;
  border-radius: var(--pill); background: var(--estado-aceptada); color: var(--sobre-estado);
  font-family: var(--dato); font-size: .74rem; white-space: nowrap; cursor: default;
}
.precio-clase {
  display: flex; align-items: center; justify-content: space-between;
  background: var(--degradado-suave); border-radius: var(--r-sm);
  padding: .7rem .9rem; margin-bottom: 1rem;
}
.precio-clase span { font-size: .72rem; font-weight: 700; color: var(--gris); text-transform: uppercase; letter-spacing: .07em; }
.precio-clase b { font-family: var(--display); font-size: 1.1rem; color: var(--acento-2); }

.semana-marco { display: grid; grid-template-columns: 1fr; gap: .9rem; }
.semana-tabla { min-width: 0; }
.semana-cab {
  display: grid; grid-template-columns: 46px repeat(7, 1fr); gap: 1px;
  position: sticky; top: 0; z-index: 3; background: var(--papel); padding-bottom: .3rem;
}
.semana-dia { text-align: center; font-size: .68rem; color: var(--gris); font-weight: 700; letter-spacing: .05em; }
.semana-scroll {
  max-height: 52dvh; overflow: auto; overscroll-behavior: contain;
  border: 1px solid var(--linea); border-radius: var(--r); background: var(--papel);
}
.semana-rejilla {
  display: grid; grid-template-columns: 46px repeat(7, 1fr); gap: 1px;
  background: var(--linea); --curso: var(--acento);
  touch-action: none; user-select: none;
}
.semana-horas { display: grid; grid-template-rows: repeat(24, 1fr); background: var(--papel); }
.semana-horas span {
  font-family: var(--dato); font-size: .62rem; color: var(--gris);
  text-align: right; padding: 2px 5px 0 0; border-bottom: 1px solid var(--linea);
}
.semana-col { display: grid; grid-template-rows: repeat(48, 1fr); background: var(--papel); }
.ranura {
  min-height: 15px; height: 15px; padding: 0; border: 0; border-radius: 0;
  background: var(--papel); box-shadow: none;
}
.ranura.media { border-bottom: 1px solid var(--linea); }
.ranura:not(.media) { border-bottom: 1px dashed color-mix(in srgb, var(--linea) 70%, transparent); }
.ranura:active { transform: none; }
.ranura[disabled] { background: transparent; opacity: 1; box-shadow: none; }
.ranura.elegida { background: var(--curso); }
.ranura.dividida { box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .55); }
.ranura.propia { box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .75); }
.ranura.tomada {
  cursor: not-allowed;
  box-shadow: inset 0 0 0 1px var(--tinta);
}
.ranura.tomada.dividida { box-shadow: inset 0 0 0 1px var(--tinta); }
.leyenda-item .m-ocupado { box-shadow: inset 0 0 0 1px var(--tinta); }
.ranura.fuera { background: var(--papel-2); opacity: .55; cursor: not-allowed; }

.semana-lado { min-width: 0; display: grid; gap: .2rem; align-content: start; }
.semana-lado h4 { margin: 1rem 0 .4rem; }
.leyenda { display: grid; gap: .3rem; margin-bottom: .3rem; }
.leyenda-item { display: flex; align-items: center; gap: .45rem; font-size: .76rem; color: var(--gris); }
.leyenda-item i { width: 15px; height: 15px; border-radius: 4px; flex: 0 0 15px; }
.leyenda-item .m-propio { background: var(--acento); }
.leyenda-item .m-libre { background: color-mix(in srgb, var(--acento) 85%, transparent); }
.leyenda-item .m-ocupado { background: repeating-linear-gradient(45deg, color-mix(in srgb, var(--acento) 85%, transparent), color-mix(in srgb, var(--acento) 85%, transparent) 3px, color-mix(in srgb, var(--acento) 40%, transparent) 3px, color-mix(in srgb, var(--acento) 40%, transparent) 6px); }
.leyenda-item .m-propio { background: var(--acento); box-shadow: inset 0 0 0 1px rgba(255,255,255,.75); }

.resumen-dia { padding: .45rem 0; border-bottom: 1px solid var(--linea); font-size: .82rem; }
.resumen-dia b { display: block; font-family: var(--display); font-size: .78rem; }
.resumen-dia span { display: inline-block; font-family: var(--dato); color: var(--gris); margin-right: .5rem; }
.resumen-total {
  margin-top: .5rem; font-family: var(--display); font-weight: 700;
  color: var(--acento-2); font-size: .9rem;
}

.mini-semana { display: grid; gap: 0; --mini-alto: 9px; }
.mini-cab, .mini-fila { display: grid; grid-template-columns: 18px repeat(7, 1fr); column-gap: 1px; row-gap: 0; }
.mini-cab { margin-bottom: 2px; }
.mini-cab span { font-size: .54rem; color: var(--gris); text-align: center; font-weight: 700; }
.mini-fila { height: var(--mini-alto); }
.mini-hora {
  font-family: var(--dato); font-size: .5rem; color: var(--gris);
  text-align: right; padding-right: 3px;
  line-height: var(--mini-alto); height: var(--mini-alto);
}
.mini-celda {
  height: var(--mini-alto); background: var(--papel-2);
  border-radius: 0; display: block;
}
.mini-fila:first-of-type .mini-celda { border-radius: 2px 2px 0 0; }
.mini-fila:last-of-type .mini-celda { border-radius: 0 0 2px 2px; }

.marca-multiple {
  display: inline-block; margin-left: .6rem; vertical-align: middle;
  background: var(--dos); color: #fff;
  font-family: var(--texto); font-size: .62rem; font-weight: 800;
  text-transform: uppercase; letter-spacing: .09em;
  padding: .22rem .6rem; border-radius: var(--pill);
}
.marca-multiple[hidden] { display: none; }

.lista-check {
  max-height: 132px; overflow: auto; overscroll-behavior: contain;
  background: var(--papel-2); border-radius: var(--r-sm); padding: .25rem;
  display: grid; gap: 1px;
}
.lista-check.bloqueada { opacity: .75; }
.check-linea {
  display: flex; align-items: center; gap: .5rem; margin: 0; cursor: pointer;
  font-size: .84rem; font-weight: 500; text-transform: none; letter-spacing: 0;
  color: var(--tinta); padding: .3rem .45rem; border-radius: var(--r-xs);
  min-height: 34px;
}
.check-linea:active { background: var(--linea); }
.check-linea input {
  width: 18px; height: 18px; min-height: 0; flex: 0 0 18px;
  accent-color: var(--acento); appearance: auto; margin: 0;
}
.check-linea span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.check-linea input:checked + span { font-weight: 700; color: var(--acento-2); }

.semana-rejilla.solo-lectura .ranura { cursor: default; }
.semana-rejilla.solo-lectura { opacity: .96; }

.semana-lado select,
.semana-lado select[multiple] {
  width: 100%; box-sizing: border-box;
  height: 40px; min-height: 40px; max-height: 40px;
  padding: .3rem .6rem; font-size: .85rem; line-height: 1.2;
  overflow: hidden; background-image: none;
  border: 1.5px solid var(--linea-2); border-radius: var(--r-sm);
}
.semana-lado select[multiple] option { padding: .25rem .45rem; border-radius: var(--r-xs); }
.semana-lado select[multiple] option:checked {
  background: var(--acento) linear-gradient(0deg, var(--acento), var(--acento));
  color: #fff; font-weight: 700;
}
.semana-lado .campo { margin-bottom: .6rem; }
.alumno-fijo {
  margin: 0; box-sizing: border-box;
  height: 40px; display: flex; align-items: center;
  padding: .3rem .6rem; border-radius: var(--r-sm);
  border: 1.5px solid transparent;
  background: var(--papel-2); font-size: .85rem; font-weight: 700;
  overflow: hidden; white-space: nowrap; text-overflow: ellipsis;
}
.semana-lado .aviso { font-size: .78rem; padding: .5rem .7rem; margin: .2rem 0 .4rem; }

.tablero {
  flex: 1; display: grid; grid-template-columns: 1fr; gap: .9rem;
  padding: .9rem calc(.9rem + var(--seg-der)) calc(1rem + var(--barra-abajo) + var(--seg-abajo)) calc(.9rem + var(--seg-izq));
  align-content: start;
}
.panel-tablero { display: flex; flex-direction: column; min-width: 0; padding: .9rem; }
.panel-cab { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; margin-bottom: .7rem; }
.panel-cab h2 { margin: 0; font-size: 1.05rem; flex: 1 1 auto; }
.panel-cuerpo { flex: 1; min-height: 0; }
.filtros-tablero { display: flex; gap: .35rem; flex-wrap: wrap; align-items: center; }
.filtros-tablero select, .filtros-tablero input {
  width: auto; min-width: 108px; max-width: 150px;
  min-height: 36px; height: 36px; padding: .2rem .5rem; font-size: .8rem;
  border-radius: var(--r-sm); background-image: none;
}
.filtros-tablero select[multiple] option { padding: .2rem .4rem; }
select[multiple] option.opcion-mando {
  font-weight: 700; color: var(--acento-2);
  border-bottom: 1px solid var(--linea);
}
.filtros-tablero select[multiple] option:checked {
  background: var(--acento) linear-gradient(0deg, var(--acento), var(--acento));
  color: #fff; font-weight: 700;
}

.semana-tabla.compacta .semana-scroll { max-height: 300px; }
.semana-tabla.compacta .ranura { height: 9px; min-height: 9px; }
.semana-tabla.compacta .semana-horas span { font-size: .55rem; }
.semana-rejilla span.ranura { display: block; border: 0; }

.lista-hoy { list-style: none; margin: 0; padding: 0; display: grid; gap: .3rem; max-height: 320px; overflow: auto; }
.fila-hoy {
  display: flex; align-items: center; gap: .6rem;
  background: var(--papel-2); border-radius: var(--r-sm); padding: .5rem .7rem;
}
.fila-hoy.cancelada { opacity: .5; text-decoration: line-through; }
.hora-hoy { font-family: var(--dato); font-size: .82rem; font-weight: 700; line-height: 1.1; text-align: right; flex: 0 0 46px; }
.hora-hoy small { display: block; font-weight: 400; color: var(--gris); font-size: .7rem; }
.punto-curso { width: 8px; height: 34px; border-radius: var(--pill); flex: 0 0 8px; }
.datos-hoy { flex: 1; min-width: 0; line-height: 1.25; }
.datos-hoy b { display: block; font-size: .9rem; }
.datos-hoy small { color: var(--gris); font-size: .78rem; }

.posts-marco { display: grid; gap: .8rem; }
.posts-cal .mes-grilla { grid-template-columns: repeat(7, 1fr); gap: 2px; }
.dia-post.recibe { outline: 2px dashed var(--acento); outline-offset: -2px; background: color-mix(in srgb, var(--acento) 12%, var(--papel)); }
.post-abrir { cursor: grab; }
.post-abrir.arrastrando { opacity: .45; cursor: grabbing; }

.adjuntos {
  border: 1.5px dashed var(--linea-2); border-radius: var(--r-sm);
  padding: .6rem .7rem; display: grid; gap: .45rem; background: var(--papel-2);
}
.adjuntos.encima { border-color: var(--acento); background: color-mix(in srgb, var(--acento) 10%, var(--papel)); }
.adjuntos small { color: var(--gris); font-size: .7rem; }
.adjuntos-lista { display: flex; flex-wrap: wrap; gap: .4rem; }
.adjunto {
  display: inline-flex; align-items: center; gap: .35rem;
  background: var(--papel); border: 1px solid var(--linea);
  border-radius: var(--pill); padding: .2rem .3rem .2rem .7rem; font-size: .78rem; max-width: 100%;
}
.adjunto a { color: var(--acento-2); text-decoration: none; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 190px; }
.adjunto small { color: var(--gris); font-size: .66rem; font-family: var(--dato); }
.adjunto.nuevo { border-style: dashed; border-color: var(--acento); }
.adjunto .btn-mini { width: 26px; min-width: 26px; height: 26px; min-height: 26px; font-size: .7rem; }
.dia-post {
  aspect-ratio: 1; min-height: 34px; padding: 0; border: 0; border-radius: var(--r-xs);
  background: var(--papel-2); color: var(--tinta);
  display: grid; place-items: center; gap: 1px; font-size: .78rem; font-weight: 600;
}
.dia-post.fuera { opacity: .35; }
.dia-post.hoy { box-shadow: inset 0 0 0 2px var(--acento); color: var(--acento); }
.dia-post.elegido { background: color-mix(in srgb, var(--acento) 18%, var(--papel)); box-shadow: inset 0 0 0 2px var(--acento); }
.dia-post .puntos { display: flex; gap: 2px; height: 5px; }
.dia-post .puntos i { width: 5px; height: 5px; border-radius: 50%; display: block; }
.posts-lista { display: grid; gap: .3rem; align-content: start; }
.posts-lista .post-borrar { flex: 0 0 auto; }
.post-item {
  display: flex; align-items: center; gap: .55rem; width: 100%; text-align: left;
  background: var(--papel-2); border: 0; border-radius: var(--r-sm);
  padding: .5rem .7rem; color: var(--tinta); font-weight: 400; font-family: var(--texto);
  min-height: var(--toque);
}
.post-item i { width: 8px; height: 28px; border-radius: var(--pill); flex: 0 0 8px; }
.post-item b { display: block; font-size: .88rem; font-family: var(--display); }
.post-item small { color: var(--gris); font-size: .76rem; font-family: var(--dato); }

.totales button.total-caja {
  text-align: left; border: 0; cursor: pointer; font-family: var(--texto);
  color: var(--tinta); background: var(--papel-2);
  flex-direction: column; align-items: flex-start; gap: 0; min-height: 0; padding: .7rem .8rem;
  border-radius: var(--r-sm);
}
.totales button.total-caja b { color: var(--tinta); }
.totales button.total-caja span { color: var(--gris); }
.totales button.total-caja.destacado { background: color-mix(in srgb, var(--menta) 14%, var(--papel)); }
.totales button.total-caja.destacado b { color: #0B7A59; }
.totales button.total-caja.alerta { background: color-mix(in srgb, var(--ladrillo) 12%, var(--papel)); }
.totales button.total-caja.alerta b { color: var(--ladrillo); }
.totales button.total-caja:active { transform: scale(.97); }
.totales button.total-caja.apagada { background: var(--papel-2); cursor: default; }
.totales button.total-caja.apagada b, .totales button.total-caja.apagada span { color: var(--gris); }
.totales button.total-caja.apagada:active { transform: none; }

.detalle-hora { display: grid; gap: .4rem; }
.detalle-fila {
  display: flex; align-items: center; gap: .6rem;
  background: var(--papel-2); border-radius: var(--r-sm); padding: .55rem .7rem;
}
.detalle-fila i { width: 8px; height: 34px; border-radius: var(--pill); flex: 0 0 8px; }
.detalle-fila span { flex: 1; min-width: 0; line-height: 1.3; }
.detalle-fila b { display: block; font-size: .9rem; }
.detalle-fila small { display: block; color: var(--gris); font-size: .76rem; }

.post-item.atendido { opacity: .55; }
.post-item.atendido .post-abrir b { text-decoration: line-through; }
.post-check { margin: 0; display: flex; align-items: center; }
.post-check input { width: 20px; height: 20px; min-height: 0; flex: 0 0 20px; accent-color: var(--menta); appearance: auto; margin: 0; }
.post-abrir {
  flex: 1; min-width: 0; text-align: left; background: transparent; border: 0;
  color: var(--tinta); font-family: var(--texto); font-weight: 400;
  padding: 0; min-height: 0; display: block;
}
.semana-rejilla button.ranura:disabled { cursor: default; }
table.grilla tfoot th { background: var(--papel-2); font-family: var(--dato); }

@media (min-width: 600px) {
  .totales { flex-wrap: wrap; overflow-x: visible; }
  .total-caja { flex: 1 1 118px; }
  .video-rejilla { grid-template-columns: 1fr 1fr; }
  .video-rejilla figure:first-child { position: static; width: auto; box-shadow: none; }
  .video-marco { aspect-ratio: 4/3; }
  .video-controles { grid-template-columns: repeat(3, 1fr); }
  .ventana-pie { flex-direction: row; justify-content: flex-end; flex-wrap: wrap; }
  .ventana-pie button, .ventana-pie .btn { width: auto; }
  .ventana-pie > button:not(:only-child), .ventana-pie > .btn:not(:only-child) {
    flex: 0 1 auto; max-width: none;
  }
  .pie-enlaces { grid-template-columns: repeat(3, 1fr); }
  .qr-caja { grid-template-columns: auto 1fr; justify-items: start; align-items: start; }
}

@media (min-width: 900px) {

  :root { --alto-hora: 58px; --barra-abajo: 0px; }

  body { font-size: 15px; }

  .cabecera {
    grid-template-columns: auto 1fr auto auto auto;
    grid-template-areas: "marca medio persona campana salir";
    gap: .8rem;
    padding: .7rem 1.2rem;
  }
  .cabecera .persona { display: flex; grid-area: persona; min-width: 0; }
  .cabecera .persona .persona-datos { min-width: 0; }
  .cabecera-medio { justify-content: flex-start; flex-wrap: nowrap; overflow: hidden; }

  .pestanas { display: none; }
  .panel-movil { display: block !important; animation: none; }
  .barra-abajo { display: none; }

  .tablero { grid-template-columns: 1fr 1fr; grid-auto-rows: minmax(0, auto); padding: 1.1rem; gap: 1.1rem; }
  .posts-marco { grid-template-columns: 1fr 1fr; align-items: start; }
  .posts-lista {
    overflow-y: auto; padding-right: .3rem;
    align-content: start; grid-auto-rows: min-content;
  }
  .posts-lista h4 { position: sticky; top: 0; background: var(--papel); z-index: 1; margin: 0; padding: .2rem 0 .4rem; }

  .cuerpo { grid-template-columns: 22% 56% 22%; align-items: start; padding: 1.1rem; gap: 1.1rem; }

  .agenda { grid-template-columns: 60px 1fr; }
  .linea-ahora { left: 60px; }
  .agenda-scroll { max-height: 70vh; }
  .clase { font-size: .8rem; }
  .clase strong { font-size: .82rem; }

  button:hover, .btn:hover { filter: brightness(1.06); }
  [data-tip]:hover::before { opacity: 1; visibility: visible; transform: translateX(-50%) translateY(0); }
  .btn-claro:hover { background: var(--linea-2); }
  .dia:hover { background: var(--papel-2); }
  .pie a:hover { color: var(--acento); }

  .velo { align-items: center; padding: 1.2rem; }
  .ventana {
    max-width: 580px; border-radius: var(--r-xl); height: auto; max-height: 92dvh;
    box-shadow: var(--sombra-2); animation: entrar .22s ease-out;
  }
  .ventana::before { content: none; }
  .ventana.ancha { max-width: 1100px; }
  .ventana.ventana-90 { max-width: 90vw; width: 90vw; }
  .ventana.grande { max-width: 90vw; width: 90vw; height: 90dvh; max-height: 90dvh; }
  .ventana.grande .ventana-cuerpo { overflow: hidden; }
  .ventana.grande .semana-scroll { max-height: calc(90dvh - 230px); }

  .solo-ancho { display: inline-flex; }

  .ventana.ventana-video {
    width: min(1180px, 92vw); max-width: 96vw; height: min(780px, 88dvh); max-height: 94dvh;
    min-width: 520px; min-height: 380px;
    resize: both; overflow: hidden;
    border-radius: var(--r-xl);
    grid-template-rows: auto minmax(0, 1fr) auto;
  }
  .ventana.ventana-video.maximizada {
    width: 98vw; max-width: 98vw; height: 96dvh; max-height: 96dvh;
    resize: none;
  }
  .ventana.ventana-video .ventana-pie {
    padding: .6rem .9rem; height: auto; min-height: 0;
    flex-direction: row; flex-wrap: nowrap; justify-content: stretch;
  }
  .ventana.ventana-video .ventana-pie button { flex: 1 1 0; width: auto; min-width: 0; }

  .video-escena {
    grid-template-rows: minmax(0, 1fr) auto;
    grid-template-columns: minmax(0, 1fr) minmax(260px, 32%);
    gap: .8rem; padding: .2rem .9rem .6rem;
  }
  .video-escena .video-nota { grid-row: 1; grid-column: 1 / -1; }
  .video-zona { grid-row: 1; grid-column: 1; }
  .video-escena .video-controles {
    grid-row: 2; grid-column: 1;
    grid-template-columns: repeat(auto-fit, minmax(64px, 1fr));
  }
  .video-escena .chat-clase {
    grid-row: 1 / span 2; grid-column: 2;
    border-top: 0; border-left: 1px solid var(--linea); padding: 0 0 0 .8rem;
  }
  .video-escena .solo-ancho-b {
    display: block; position: absolute; right: 10px; bottom: 8px; z-index: 2;
    max-width: 60%; margin: 0; text-align: right;
    color: #fff; background: rgba(0,0,0,.5);
    padding: .15rem .55rem; border-radius: var(--pill); font-size: .68rem;
  }

  .buzon {
    position: fixed; left: auto; bottom: auto;
    right: calc(.9rem + var(--seg-der));
    top: calc(3.6rem + var(--seg-arriba));
    width: 360px; max-height: 62vh; border-radius: var(--r);
    box-shadow: var(--sombra-2); animation: entrar .18s ease-out;
  }
  .buzon-velo { background: transparent; }

  .tabla-scroll {
    display: block; overflow: auto; max-height: 64vh;
    border: 1px solid var(--linea); border-radius: var(--r); background: var(--papel);
  }
  .fichas, .orden-movil { display: none; }

  .matricula-cab,
  .matricula-linea { grid-template-columns: minmax(0, 1fr) 190px 110px 110px 120px; }
  .matricula-cab { display: grid; gap: .5rem; padding: 0 .7rem; align-items: end; }
  .matricula-cab span { padding: 0 .6rem; }
  .matricula-cab span:first-child { padding-left: 0; }
  .matricula-cab span:nth-child(2) { text-align: left; padding-left: .8rem; }
  .matricula-linea:not(.elegido) .matricula-docente { opacity: .55; }
  .matricula-cab span:nth-child(n+3) { text-align: right; }
  .matricula-linea { align-items: center; }
  .matricula-costo { justify-content: flex-end; padding-right: .6rem; }
  .matricula-costo::before { content: none; }

  .crud-barra { display: flex; gap: .55rem; align-items: center; flex-wrap: wrap; }
  .crud-barra .crece { flex: 1 1 200px; width: auto; }

  .pie { padding: 1.4rem 1.2rem; }
  .pie-enlaces { display: flex; flex-wrap: wrap; gap: .5rem 1.3rem; }
  .pie a { display: inline; padding: 0; min-height: 0; border-bottom: 0; }

  .semana-marco { grid-template-columns: 85% 15%; gap: 1.1rem; align-items: start; }
  .semana-scroll { max-height: 58vh; }
  .ranura { min-height: 13px; height: 13px; }

  .chat-marco { height: min(64vh, 520px); }
  .chat-marco.con-salas { grid-template-columns: 250px 1fr; }
  .chat-salas { border-right: 1px solid var(--linea); border-bottom: 0; max-height: none; }

  #avisos { left: 50%; right: auto; transform: translateX(-50%); width: min(92vw, 440px); bottom: 1.2rem; }

  .medios { display: flex; }
  .medio { flex: 1 1 90px; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
}

.fila-fechas { display: flex; flex-wrap: wrap; gap: .7rem; margin-bottom: .9rem; }
.fila-fechas .campo { flex: 1 1 150px; min-width: 0; margin: 0; }
.fila-fechas select[multiple] {
  box-sizing: border-box; width: 100%;
  height: 40px; min-height: 40px; max-height: 40px;
  padding: .3rem .6rem; line-height: 1.2; overflow: hidden; background-image: none;
}
.fila-fechas select[multiple] option { padding: .2rem .4rem; }
.fila-fechas select[multiple] option:checked {
  background: var(--acento) linear-gradient(0deg, var(--acento), var(--acento));
  color: #fff; font-weight: 700;
}

.lista-titulo { margin: 0 0 .7rem; font-size: .95rem; }

.tabla-marco { overflow-x: auto; }
.tabla-lista { width: 100%; border-collapse: collapse; font-size: .86rem; }
.tabla-lista th, .tabla-lista td {
  padding: .45rem .6rem; text-align: left; border-bottom: 1px solid var(--linea);
  vertical-align: top;
}
.tabla-lista th {
  font-size: .74rem; text-transform: uppercase; letter-spacing: .06em;
  color: var(--gris); border-bottom: 2px solid var(--linea-2); white-space: nowrap;
}
.ventana-pie .pista-pie { flex: 1; font-size: .78rem; color: var(--gris); align-self: center; text-align: left; }
.tabla-lista td .etiqueta { font-size: .62rem; padding: .18rem .5rem; white-space: nowrap; }
.etiqueta-realizada     { background: color-mix(in srgb, var(--menta) 18%, var(--papel)); color: var(--menta); }
.etiqueta-aceptada      { background: color-mix(in srgb, var(--acento) 14%, var(--papel)); color: var(--acento); }
.etiqueta-pendiente     { background: color-mix(in srgb, var(--ocre) 18%, var(--papel)); color: var(--ocre); }
.etiqueta-no-realizada  { background: color-mix(in srgb, var(--dos) 18%, var(--papel)); color: var(--dos); }
.etiqueta-por-definir   { background: var(--papel-2); color: var(--gris); }
.etiqueta-cancelada     { background: var(--papel-2); color: var(--gris); text-decoration: line-through; }
.tabla-lista th.th-orden { cursor: pointer; user-select: none; }
.tabla-lista th.th-orden:hover { color: var(--tinta); background: var(--papel-2); }
.tabla-lista th.th-ordenada { color: var(--acento); }
.tabla-lista th.th-orden .orden-marca { margin-left: .25rem; font-size: .7em; }
@media print { .tabla-lista th.th-orden { cursor: auto; } }
.tabla-lista td:first-child, .tabla-lista td:nth-child(2) { white-space: nowrap; font-variant-numeric: tabular-nums; }
.tabla-lista .fila-libre td { color: var(--gris); font-style: italic; }

.lista-totales-titulo { margin-top: 1.4rem; padding-top: 1rem; border-top: 2px solid var(--linea-2); }

.totales-rejilla {
  display: grid; gap: 1rem;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  align-items: start;
}
.totales-bloque h5 {
  margin: 0 0 .4rem; font-size: .74rem; text-transform: uppercase;
  letter-spacing: .06em; color: var(--gris);
}
.tabla-totales td.num, .tabla-totales th:not(:first-child) {
  text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap;
}

.totales-general {
  display: flex; flex-wrap: wrap; gap: .7rem; margin-top: 1.1rem;
}
.totales-general > div {
  flex: 1 1 140px; padding: .7rem .9rem; border-radius: var(--r-md);
  background: var(--papel-2); text-align: center;
}
.totales-general b { display: block; font-size: 1.15rem; }
.totales-general span {
  font-size: .72rem; text-transform: uppercase; letter-spacing: .06em; color: var(--gris);
}
.totales-general .destacado { background: color-mix(in srgb, var(--menta) 12%, var(--papel)); }
.totales-general .destacado b { color: #0E8C66; }

.mes-marco { min-width: 0; }
.mes-cab {
  display: grid; grid-template-columns: 46px repeat(7, 1fr); gap: 1px;
  background: var(--papel); padding-bottom: .3rem;
}
.mes-esquina { display: block; }
.mes-scroll {
  max-height: 56dvh; overflow: auto; overscroll-behavior: contain;
  border: 1px solid var(--linea); border-radius: var(--r); background: var(--papel);
}
.mes-semana { border-bottom: 3px solid var(--linea-2); }
.mes-semana:last-child { border-bottom: none; }
.mes-fechas {
  display: grid; grid-template-columns: 46px repeat(7, 1fr); gap: 1px;
  position: sticky; top: 0; z-index: 2;
  background: var(--papel-2); padding: .2rem 0;
  border-bottom: 1px solid var(--linea-2);
}
.mes-fecha {
  text-align: center; font-size: .72rem; font-weight: 700;
  font-variant-numeric: tabular-nums; color: var(--tinta);
}
.mes-fecha.fuera-mes { color: var(--linea-2); }
.mes-fecha.hoy {
  color: #fff; background: var(--acento-2); border-radius: var(--pill);
}
.celda.pintando { outline: 2px solid var(--acento); outline-offset: -2px; }
.mes-fila { display: grid; grid-template-columns: 46px repeat(7, 1fr); gap: 1px; }
.mes-hora {
  font-size: .58rem; color: var(--gris); text-align: right; padding-right: .3rem;
  font-variant-numeric: tabular-nums; line-height: 12px;
}
.mes-fila .celda {
  display: block; height: 12px; background: var(--papel-2);
  border: 1px solid transparent; box-sizing: border-box;
}
.celda.sin-disp { background: var(--papel); }
.celda.fuera-mes { background: transparent; }
.celda.pasada { filter: grayscale(1) opacity(.45); background: var(--linea); }
.celda.mia { border: 1px solid #000; }
.celda.ajena { border: 1px solid #1F6FEB; cursor: pointer; }
.celda.clicable { cursor: pointer; }
.celda.clicable:hover { outline: 2px solid var(--acento); outline-offset: -2px; }

.leyenda-mes { list-style: none; margin: 0; padding: 0; display: grid; gap: .35rem; font-size: .78rem; }
.leyenda-mes li { display: flex; align-items: center; gap: .5rem; }
.leyenda-mes .lg {
  width: 18px; height: 12px; border-radius: 3px; flex: 0 0 18px;
  border: 1px solid transparent; box-sizing: border-box;
}
.lg-disp { background: rgba(138,56,245,.75); }
.lg-mia { background: #8A38F5; border-color: #000; }
.lg-ajena { background: rgba(138,56,245,.75); border-color: #1F6FEB; }
.lg-pasada { background: var(--linea); }

.resumen-total {
  padding: .6rem .8rem; border-radius: var(--r-md); margin-bottom: .5rem;
  background: color-mix(in srgb, var(--menta) 12%, var(--papel)); text-align: center;
}
.resumen-total b { display: block; font-size: 1.15rem; color: #0E8C66; }
.resumen-total span { font-size: .72rem; text-transform: uppercase; letter-spacing: .06em; color: var(--gris); }
.resumen-linea {
  display: flex; justify-content: space-between; gap: .6rem;
  padding: .3rem 0; border-bottom: 1px solid var(--linea); font-size: .82rem;
}
.resumen-linea:last-child { border-bottom: none; }
.resumen-linea b { font-variant-numeric: tabular-nums; white-space: nowrap; }

@media (min-width: 900px) {
  .semana-marco:has(.mes-marco) { grid-template-columns: 1fr 260px; }
}

.pie-horario { flex-direction: row; align-items: center; flex-wrap: nowrap; gap: 1%; }
.pie-horario .cerrar { flex: 0 0 38px; width: 38px; }
.pie-horario #hoGuardar { flex: 1 1 auto; width: auto; }
.pie-horario .angosto {
  flex: 0 0 5%; width: 5%; min-width: 38px; padding: 0;
}

.resumen-grupo { margin-bottom: .5rem; }
.resumen-detalle {
  list-style: none; margin: .15rem 0 .4rem; padding: 0 0 0 .2rem;
  display: grid; gap: .1rem; font-size: .74rem; color: var(--gris);
}
.resumen-detalle li { display: flex; justify-content: space-between; gap: .5rem; }
.resumen-detalle b { font-variant-numeric: tabular-nums; color: var(--tinta); font-weight: 600; }

.tabla-lista tfoot th { border-top: 2px solid var(--linea-2); padding-top: .5rem; }

.et-cerrado { background: color-mix(in srgb, var(--menta) 20%, var(--papel)); color: #0E8C66; }
.et-abierto { background: color-mix(in srgb, var(--dos) 14%, var(--papel)); color: var(--dos); }
.tabla-lista td.num, .tabla-lista th.num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
td.num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
td.en-rojo { color: var(--ladrillo); font-weight: 700; }
.en-rojo { color: var(--ladrillo); }
b.en-rojo, strong.en-rojo { color: var(--ladrillo); font-weight: 700; }
.totales-general .alerta { background: color-mix(in srgb, var(--ladrillo) 10%, var(--papel)); }
.totales-general .alerta b { color: var(--ladrillo); }
#volverResumen { margin: .2rem 0 .6rem; }

.etiqueta-boton {
  border: 0; cursor: pointer; width: auto;
  min-height: 0; padding: .16rem .55rem;
  font-family: inherit; font-size: .62rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: .05em;
  line-height: 1.4;
}
.etiqueta-boton:hover { filter: brightness(.94); }
.lista-hoy .etiqueta-boton { flex: 0 0 auto; }

.relato-clase {
  margin: .8rem 0 .5rem; padding: .7rem .85rem;
  background: var(--papel-2); border-radius: var(--r-md);
  font-size: .88rem; line-height: 1.5;
}
.resumen-ia {
  margin: 0 0 .5rem; padding: .6rem .85rem; border-radius: var(--r-md);
  background: var(--tiza); font-size: .86rem; line-height: 1.5;
}
.capturas-tira {
  display: grid; gap: .5rem; margin-top: .3rem;
  grid-template-columns: repeat(auto-fill, minmax(96px, 1fr));
}
.captura-enlace {
  display: block; position: relative; border-radius: var(--r-sm);
  overflow: hidden; border: 1px solid var(--linea-2); text-decoration: none;
}
.captura-enlace img { width: 100%; aspect-ratio: 4/3; object-fit: cover; display: block; }
.captura-enlace span {
  position: absolute; left: 0; right: 0; bottom: 0;
  background: rgba(8,10,14,.62); color: #fff;
  font-size: .68rem; text-align: center; padding: .12rem 0;
  font-variant-numeric: tabular-nums;
}
.captura-enlace:hover { border-color: var(--acento); }

.chat-clase { margin-top: 1rem; border-top: 1px solid var(--linea); padding-top: .8rem; }
.chat-clase h4 {
  margin: 0 0 .5rem; font-size: .78rem; text-transform: uppercase;
  letter-spacing: .06em; color: var(--gris);
}
.chat-clase-hilo {
  max-height: 180px; overflow-y: auto; overscroll-behavior: contain;
  display: grid; gap: .4rem; padding: .5rem;
  background: var(--papel-2); border-radius: var(--r-md);
}
.chat-clase-hilo.guardado { max-height: 260px; }
.chat-clase-msg {
  display: grid; grid-template-columns: 1fr auto; gap: .1rem .5rem;
  padding: .4rem .6rem; border-radius: var(--r-sm);
  background: var(--papel); font-size: .84rem; line-height: 1.35;
}
.chat-clase-msg b {
  grid-column: 1; font-size: .72rem; color: var(--acento-2); font-weight: 700;
}
.chat-clase-msg time {
  grid-column: 2; grid-row: 1; font-size: .68rem; color: var(--gris);
  font-variant-numeric: tabular-nums;
}
.chat-clase-msg span { grid-column: 1 / -1; overflow-wrap: anywhere; }
.chat-clase-msg.mio { background: color-mix(in srgb, var(--acento) 10%, var(--papel)); }
.chat-clase-msg.docente b { color: var(--dos); }

.chat-clase-envio { display: flex; gap: .5rem; margin-top: .5rem; }
.chat-clase-envio input { flex: 1; min-width: 0; }
.chat-clase-envio button { flex: 0 0 auto; width: auto; padding: 0 1rem; }

.invitaciones-hoy { display: flex; gap: .3rem; flex: 0 0 auto; }
.invitaciones-hoy .invita {
  width: auto; min-width: 0; padding: .16rem .5rem; min-height: 0;
  font-size: .62rem; font-weight: 700; text-transform: uppercase;
  letter-spacing: .04em; border-radius: var(--pill);
}
#invUrl, #inEnlace, #fichaUrl { font-size: .78rem; font-family: var(--dato); }
.enlace-alumno { margin: .8rem 0 .2rem; }
.enlace-alumno label { display: block; font-size: .74rem; text-transform: uppercase; letter-spacing: .06em; color: var(--gris); margin-bottom: .3rem; }
.enlace-fila { display: flex; gap: .4rem; align-items: center; }
.enlace-fila input { flex: 1; min-width: 0; }
.enlace-fila .btn-ico { flex: 0 0 auto; width: auto; }
.enlace-alumno .pista { margin-top: .35rem; }

.et-sin-dictar {
  background: color-mix(in srgb, var(--dos) 16%, var(--papel));
  color: var(--dos);
}
.fila-hoy.sin-dictar { background: color-mix(in srgb, var(--dos) 7%, var(--papel-2)); }

.volver-flotante {
  position: fixed; z-index: 60;
  left: 50%; transform: translateX(-50%);
  bottom: calc(var(--barra-abajo, 0px) + .7rem);
  display: flex; align-items: center; gap: .55rem;
  width: auto; max-width: min(92vw, 420px);
  padding: .55rem .7rem .55rem .8rem;
  border: 0; border-radius: var(--pill);
  background: var(--tinta); color: #fff;
  box-shadow: var(--sombra-2);
  font-size: .84rem; font-weight: 600;
  animation: asomar .3s cubic-bezier(.2,.9,.3,1.1);
}
@keyframes asomar {
  from { transform: translate(-50%, 120%); }
  to   { transform: translate(-50%, 0); }
}
.volver-flotante .volver-texto {
  min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.volver-flotante .volver-accion {
  flex: 0 0 auto; background: var(--acento); color: #fff;
  padding: .2rem .7rem; border-radius: var(--pill);
  font-size: .76rem; text-transform: uppercase; letter-spacing: .05em;
}
.volver-flotante .punto-vivo {
  flex: 0 0 8px; width: 8px; height: 8px; border-radius: 50%;
  background: var(--dos); box-shadow: 0 0 0 4px rgba(240,40,110,.25);
  animation: latir 1.6s ease-in-out infinite;
}
@keyframes latir { 50% { opacity: .35; } }

@media (min-width: 900px) {
  .volver-flotante { bottom: calc(var(--seg-abajo, 0px) + 1rem); }
}

.foco-video {
  position: fixed; left: calc(24px + var(--seg-izq, 0px)); bottom: calc(24px + var(--seg-abajo, 0px)); z-index: 95;
  width: 80px; height: 80px; min-height: 80px; padding: 0;
  border: 0; border-radius: 50%; cursor: grab; touch-action: none;
  background: rgba(224, 36, 36, .8);
  box-shadow: var(--sombra-2);
  display: flex; align-items: center; justify-content: center;
}
.foco-video svg { width: 40px; height: 40px; }
.foco-video:active { cursor: grabbing; }
.foco-video[hidden] { display: none; }

.ventana.ventana-video.inmersivo {
  position: fixed; inset: 0; width: 100vw; height: 100dvh;
  max-width: none; max-height: none; border-radius: 0; margin: 0;
  display: block; overflow: hidden; background: #05070A;
}
.ventana-video.inmersivo .ventana-cab,
.ventana-video.inmersivo .ventana-pie,
.ventana-video.inmersivo .video-controles,
.ventana-video.inmersivo .chat-clase,
.ventana-video.inmersivo .video-nota,
.ventana-video.inmersivo .pista { display: none; }

.ventana-video.inmersivo .ventana-cuerpo {
  position: absolute; inset: 0; padding: 0; margin: 0;
  display: block; overflow: hidden; gap: 0; background: #05070A;
}
.ventana-video.inmersivo .video-zona {
  position: absolute; inset: 0; display: block; min-height: 0;
}
.ventana-video.inmersivo .video-rejilla {
  position: absolute; inset: 0; display: block; gap: 0;
  background: #05070A; min-height: 0;
}
.ventana-video.inmersivo .video-rejilla figure {
  position: absolute; inset: 0; margin: 0; width: auto; height: auto;
  max-width: none; aspect-ratio: auto; border-radius: 0; box-shadow: none;
}
.ventana-video.inmersivo .video-rejilla figure video {
  width: 100%; height: 100%; object-fit: contain; background: #05070A;
}
.ventana-video.inmersivo .video-rejilla figure figcaption {
  position: absolute; left: 10px; bottom: 10px; z-index: 2;
}
.ventana-video.inmersivo .video-rejilla figure:first-child {
  top: auto; left: auto;
  right: calc(14px + var(--seg-der, 0px));
  bottom: calc(14px + var(--seg-abajo, 0px));
  width: min(32vw, 240px); height: auto; aspect-ratio: 4 / 3;
  border-radius: var(--r-sm); overflow: hidden;
  box-shadow: var(--sombra-2); z-index: 4;
}
.ventana-video.inmersivo .video-rejilla figure:first-child video { object-fit: cover; }
.ventana-video.inmersivo .video-rejilla figure:first-child figcaption {
  left: 8px; bottom: 6px; font-size: .68rem;
}
.ventana-video.inmersivo #vEstado {
  display: block; position: absolute; left: 12px; top: 12px; bottom: auto; z-index: 3;
}

.lista-subtitulo {
  margin: .8rem 0 .45rem; font-size: .8rem; text-transform: uppercase;
  letter-spacing: .07em; color: var(--gris); font-family: var(--display);
}

.fila-hoy.en-curso {
  background: color-mix(in srgb, var(--menta) 18%, var(--papel));
  box-shadow: inset 3px 0 0 var(--menta);
}

.foto-vista.recortable { cursor: grab; touch-action: none; overflow: hidden; position: relative; }
.foto-vista.recortable:active { cursor: grabbing; }
.foto-vista.recortable img { position: absolute; max-width: none; max-height: none; }
.foto-pista-recorte { margin: .35rem 0 0; font-size: .74rem; color: var(--gris); }

.enlace-persona {
  background: none; border: 0; padding: 0; min-height: 0;
  font: inherit; color: var(--acento-2); text-decoration: underline;
  text-underline-offset: 2px; cursor: pointer;
}
.enlace-persona:hover { color: var(--acento); }

.foto-zoom {
  display: flex; gap: .35rem; justify-content: center;
  margin: .5rem 0 .2rem; flex-wrap: wrap;
}
.foto-vista.recortable { outline-offset: 2px; }
.foto-vista.recortable:focus-visible { outline: 2px solid var(--acento); }

.foto-vista.recortable img {
  -webkit-user-drag: none; user-select: none; -webkit-user-select: none; pointer-events: none;
}
.foto-zoom button { padding: .3rem .5rem; }

.filtros-pd { display: flex; gap: .4rem; flex-wrap: wrap; align-items: center; }
.filtros-pd select { min-height: var(--toque); border-radius: var(--pill); padding: .3rem .8rem; max-width: 12rem; }
.filtros-pd[hidden] { display: none; }

@media (min-width: 900px) {
  .crud-barra { flex-wrap: nowrap; }
  .crud-barra h2 { flex: 0 0 auto; white-space: nowrap; }
  .crud-barra .crece { flex: 1 1 140px; min-width: 110px; }
  .crud-barra > button { flex: 0 0 auto; }
  .filtros-pd { flex: 0 1 auto; flex-wrap: nowrap; min-width: 0; }
  .filtros-pd select { flex: 0 1 auto; min-width: 6.5rem; max-width: 10rem; text-overflow: ellipsis; }
}

.fila-fechas {
  display: grid; align-items: end;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
}
.fila-fechas .campo { display: flex; flex-direction: column; gap: .25rem; }
.fila-fechas .campo > label { margin: 0; }
.fila-fechas .campo > input,
.fila-fechas .campo > select {
  box-sizing: border-box; width: 100%; min-width: 0;
  height: 40px; min-height: 40px; line-height: 1.2;
}
.fila-fechas input[type="date"] { padding-right: .6rem; }

.filtros-pd select[multiple] {
  box-sizing: border-box; height: 40px; min-height: 40px; max-height: 40px;
  padding: .3rem .8rem; line-height: 1.2; overflow: hidden;
  background-image: none; border-radius: var(--pill);
}
.filtros-pd select[multiple] option { padding: .2rem .4rem; }
.filtros-pd select[multiple] option:checked {
  background: var(--acento) linear-gradient(0deg, var(--acento), var(--acento));
  color: #fff; font-weight: 700;
}
.filtros-pd .opcion-mando { font-style: italic; }

.fila-entrar { display: flex; gap: .5rem; align-items: stretch; }
.fila-entrar > .btn-ocre { flex: 1 1 auto; }
.fila-entrar > [data-limpiar] { flex: 0 0 auto; min-width: 3rem; }

#patronIngreso .patron-grilla { margin-inline: auto; }

.ventana .patron-grilla { margin-inline: auto; }
.ventana .patron-pie { justify-content: center; }

.ingreso-caja { padding: .9rem .95rem; }
.ingreso-caja .marca-ingreso { margin-bottom: .6rem; }
.ingreso-caja .modos { margin-bottom: .5rem; }
.ingreso-caja .campo { margin-bottom: .45rem; }
.ingreso-caja .campo > label { margin-bottom: .15rem; }
.ingreso-caja .separador { margin: .55rem 0; }
.ingreso-caja .aviso { margin-bottom: .5rem; }
.ingreso-caja .fila-acceso { margin-top: .5rem; }
.ingreso-caja .ayuda-ingreso { margin-top: .55rem; }
.ingreso-caja #campoPatron { margin-bottom: .55rem; }

.leyenda-semana {
  display: flex; flex-wrap: wrap; gap: .35rem .9rem;
  justify-content: flex-end; align-items: center;
  margin-top: .5rem; font-size: .72rem; color: var(--gris);
}
.leyenda-semana span { display: inline-flex; align-items: center; gap: .3rem; }
.leyenda-semana .muestra {
  width: 16px; height: 11px; border-radius: 3px; flex: 0 0 16px;
  border: 1px solid var(--linea);
}
.leyenda-semana .muestra-libre { background: color-mix(in srgb, var(--acento) 30%, transparent); }
.leyenda-semana .muestra-tomada {
  background: color-mix(in srgb, var(--acento) 85%, transparent);
  box-shadow: inset 0 0 0 1px var(--tinta);
}
.leyenda-semana .muestra-dividida {
  background: linear-gradient(90deg,
    color-mix(in srgb, var(--acento) 70%, transparent) 0 50%,
    color-mix(in srgb, var(--menta) 70%, transparent) 50% 100%);
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .55);
}
.leyenda-semana .muestra-vacia { background: transparent; }


.menu-admin .btn-claro.btn-mini.btn-ico {
  width: var(--toque); min-width: var(--toque); height: var(--toque); min-height: var(--toque);
  flex: 0 0 var(--toque); padding: 0; border-radius: 50%; font-size: 1.2rem;
  background: var(--papel-2); border-color: transparent; color: var(--gris);
}
.menu-admin > button:first-child { margin-right: .25rem; }
.menu-admin > button:first-child::after {
  content: ''; position: absolute; right: -.32rem; top: 20%; height: 60%;
  border-right: 1px solid var(--linea);
}
.menu-admin > button:first-child { position: relative; }

:root {
  --estado-realizada: #FCFFD4;
  --estado-aceptada: #d7efe2;
  --estado-pendiente: #e4f0fb;
  --estado-cancelada: #FF8989;
  --estado-no-realizada: #e9edf2;
  --sobre-estado: #10243D;
  --sobre-estado-2: #4A5C72;
}
.fila-hoy.realizada { background: var(--estado-realizada); }
.fila-hoy.aceptada { background: var(--estado-aceptada); }
.fila-hoy.pendiente { background: var(--estado-pendiente); }
.fila-hoy.cancelada { background: var(--estado-cancelada); }
.fila-hoy.sin-dictar,
.fila-hoy.no_realizada { background: var(--estado-no-realizada); }
.fila-hoy.realizada, .fila-hoy.aceptada, .fila-hoy.pendiente,
.fila-hoy.cancelada, .fila-hoy.sin-dictar, .fila-hoy.no_realizada,
.fila-hoy.en-curso { color: var(--sobre-estado); }
.fila-hoy.realizada small, .fila-hoy.aceptada small, .fila-hoy.pendiente small,
.fila-hoy.cancelada small, .fila-hoy.sin-dictar small, .fila-hoy.no_realizada small,
.fila-hoy.en-curso small { color: var(--sobre-estado-2); }
.fila-hoy.en-curso {
  background: var(--estado-aceptada);
  box-shadow: inset 3px 0 0 var(--menta);
}

#zonaHerramienta { padding: 0; overflow: hidden; }
#zonaHerramienta .velo.incrustado {
  position: static; inset: auto; display: block; padding: 0;
  background: none; backdrop-filter: none; -webkit-backdrop-filter: none;
  overflow: visible; z-index: auto; animation: none;
}
#zonaHerramienta .velo.incrustado > .ventana {
  width: 100%; max-width: none; max-height: none; height: auto;
  border-radius: var(--r-xl); box-shadow: none; border: 0; animation: none;
}
#zonaHerramienta .velo.incrustado > .ventana > .ventana-cuerpo { max-height: none; }
#zonaHerramienta .marco-agenda {
  display: block; width: 100%; height: 74dvh; border: 0; border-radius: var(--r-xl);
}

main.tablero[hidden], #zonaTabla[hidden], #zonaHerramienta[hidden] { display: none; }
#zonaHerramienta { margin: 1rem; padding: 0; overflow: hidden; }
@media (min-width: 900px) { #zonaHerramienta { margin: 1.1rem; } }

.agenda-filtros {
  display: flex; gap: .5rem; flex-wrap: wrap; align-items: center;
  padding: .7rem 1rem 0;
}
.agenda-filtros select { flex: 1 1 160px; min-width: 0; max-width: 240px; }
.agenda-filtros #proxima { flex: 1 1 auto; min-width: 0; }
.panel-incrustado { display: block; }
.panel-incrustado .pestanas { position: static; }
.panel-incrustado .cuerpo { padding-top: .8rem; }

.pase { display: grid; grid-template-columns: auto 1fr auto; gap: .5rem; align-items: center; }
.pase-marco { margin: 0; position: relative; background: var(--papel-2); border-radius: var(--r); overflow: hidden; }
.pase-marco img { display: block; width: 100%; max-height: 58dvh; object-fit: contain; background: #05070A; }
.pase-marco figcaption {
  padding: .45rem .7rem; font-size: .8rem; color: var(--gris);
  font-family: var(--dato); text-align: center;
}
.pase-ir { width: var(--toque); height: var(--toque); min-height: var(--toque); padding: 0; border-radius: 50%; font-size: 1.3rem; }
.pase-tiras { display: flex; gap: .4rem; overflow-x: auto; padding: .6rem 0 .2rem; }
.pase-mini {
  flex: 0 0 auto; border: 2px solid transparent; border-radius: var(--r-sm);
  position: relative; overflow: hidden;
}
.pase-ver {
  display: block; padding: 0; border: 0; border-radius: 0; min-height: 0;
  background: none; cursor: pointer; position: relative;
}
.pase-ver img { display: block; width: 74px; height: 56px; object-fit: cover; }
.pase-ver span {
  position: absolute; left: 0; right: 0; bottom: 0; font-size: .62rem;
  background: rgba(8,10,14,.6); color: #fff; font-family: var(--dato);
}
.pase-marca {
  position: absolute; top: 2px; left: 2px; z-index: 2; margin: 0;
  background: rgba(255,255,255,.85); border-radius: 5px; line-height: 0; padding: 1px;
}
.pase-marca input[type="checkbox"] {
  appearance: auto; -webkit-appearance: checkbox;
  box-sizing: border-box; display: block;
  width: 15px; min-width: 15px; max-width: 15px;
  height: 15px; min-height: 15px; max-height: 15px;
  margin: 0; padding: 0; border: 0; border-radius: 0;
  background: none; box-shadow: none; flex: none;
  accent-color: var(--acento); cursor: pointer;
}
.pase-mini.activa { border-color: var(--acento); }
.pase-mini.marcada { border-color: var(--ladrillo); }

.pase-cab {
  display: flex; align-items: center; justify-content: space-between;
  gap: .6rem; margin-top: .7rem;
}
.pase-cab .pista { margin: 0; }
.pase-cab button[hidden] { display: none; }

.paginador[hidden] { display: none; }

.pase-marco .pase-borrar {
  position: absolute; top: .5rem; right: .5rem; z-index: 2;
  width: 34px; height: 34px; min-height: 34px; padding: 0; border-radius: 50%;
  box-shadow: var(--sombra);
}

.fila-hoy { flex-wrap: nowrap; overflow: hidden; }
.datos-hoy { overflow: hidden; }
.datos-hoy b,
.datos-hoy small {
  display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.datos-hoy small { display: flex; gap: .25rem; align-items: baseline; min-width: 0; }
.datos-hoy small .enlace-persona {
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; flex: 0 1 auto;
}
.invitaciones-hoy, .fila-hoy .etiqueta-boton { flex: 0 0 auto; }

#zonaHerramienta .velo.incrustado .ventana-cab .cerrar,
#zonaHerramienta .velo.incrustado .ventana::before { display: none; }

@media (max-width: 899px) {
  .fila-hoy { gap: .4rem; padding: .45rem .5rem; }
  .hora-hoy { flex: 0 0 40px; font-size: .74rem; }
  .datos-hoy b { font-size: .84rem; }
  .datos-hoy small { font-size: .72rem; }
  .invitaciones-hoy { gap: .2rem; }
  .invitaciones-hoy .invita,
  .invitaciones-hoy .btn-mini {
    font-size: .6rem; padding: .2rem .35rem; min-height: 26px; letter-spacing: 0;
  }
  .fila-hoy .etiqueta-boton { font-size: .58rem; padding: .15rem .4rem; }
}

@media (max-width: 899px) {
  .crud-barra {
    display: flex; flex-wrap: wrap; align-items: center; gap: .45rem;
  }
  .crud-barra h2 { flex: 1 1 100%; }
  .crud-barra .crece { flex: 1 1 100%; width: auto; }
  .crud-barra > select,
  .crud-barra .filtros-pd > select {
    flex: 0 1 auto; width: auto; min-width: 8.5rem; max-width: 100%;
  }
  .crud-barra > button,
  .crud-barra .filtros-pd { flex: 0 0 auto; }
  .crud-barra .filtros-pd { display: flex; flex-wrap: wrap; gap: .45rem; }
  .crud-barra #ordenDir,
  .crud-barra #btnVista,
  .crud-barra #btnGenerar,
  .crud-barra #btnVerificar,
  .crud-barra #btnNuevo {
    width: var(--toque); min-width: var(--toque); height: var(--toque);
  }
}

@media (max-width: 899px) {
  .crud-barra .orden-movil {
    display: flex; gap: .4rem; align-items: center;
    flex: 1 1 12rem; min-width: 0; margin: 0;
  }
  .crud-barra .orden-movil select { flex: 1 1 auto; min-width: 0; }
  .crud-barra .orden-movil #ordenDir { flex: 0 0 var(--toque); }
}

@media (max-width: 899px) {
  .crud-barra .crece { flex: 1 1 auto; width: auto; max-width: 50%; min-width: 8rem; }
}

#zonaHerramienta .crud-barra { margin: 1rem 1rem 0; }
#zonaHerramienta .tabla-scroll { margin: .8rem 1rem; }
#zonaHerramienta #lgCuerpo { padding: 0 1rem 1rem; }
#zonaHerramienta .paginador { padding: 0 1rem 1rem; }
.log-barra { display: flex; align-items: center; gap: .6rem; margin: .2rem 0 .6rem; }
.log-barra .pista { margin: 0; }
.log-texto {
  margin: 0; padding: .8rem; max-height: 62dvh; overflow: auto;
  background: var(--pizarra-2, #10243D); color: var(--tiza, #fff);
  border-radius: var(--r); font-family: var(--dato); font-size: .76rem;
  line-height: 1.45; white-space: pre-wrap; word-break: break-word;
}
tr.fila-log:hover td { background: var(--papel-2); }

.etiqueta.et-correcto { background: var(--estado-aceptada); color: var(--sobre-estado); }
.etiqueta.et-fallido { background: var(--estado-cancelada); color: var(--sobre-estado); }
tr.fila-fallida td { background: color-mix(in srgb, var(--estado-cancelada) 22%, transparent); }

.dia .puntos {
  position: absolute; left: 0; right: 0; bottom: 5px;
  display: flex; gap: 2px; justify-content: center; pointer-events: none;
}
.dia .puntos .punto {
  position: static; display: block;
  width: 5px; height: 5px; border-radius: 50%;
  border: 1px solid #000000;
}
.dia .puntos .punto-aceptada { background: var(--estado-aceptada); }
.dia .puntos .punto-pendiente { background: var(--estado-pendiente); }
.dia .puntos .punto-realizada { background: var(--estado-realizada); }
.dia .puntos .punto-no_realizada { background: var(--estado-no-realizada); }
.dia .puntos .punto-cancelada { background: var(--estado-cancelada); }


.etiqueta.et-libre { background: var(--papel-2); color: var(--gris); }
tr.fila-libre td { font-style: italic; }
@media (max-width: 899px) {
  .tabla-lista .col-tema { display: none; }
}

.tabla-lista td.acciones-col, table.grilla td.acciones-col {
  white-space: nowrap;
}
.tabla-lista td.acciones-col > *, table.grilla td.acciones-col > * {
  display: inline-flex; vertical-align: middle; margin: 0 .12rem;
}
.tabla-lista td.acciones-col .btn-mini, table.grilla td.acciones-col .btn-mini {
  width: 34px; min-width: 34px; height: 34px; min-height: 34px; padding: 0; border-radius: 50%;
}

.clase.pendiente { background: var(--estado-pendiente); border-left-color: var(--ocre); }
.clase.aceptada { background: var(--estado-aceptada); border-left-color: var(--menta); }
.clase.realizada { background: var(--estado-realizada); border-left-color: var(--gris); }
.clase.no-realizada { background: var(--estado-no-realizada); border-left-color: var(--dos); }
.clase.cancelada { background: var(--estado-cancelada); border-left-color: var(--ladrillo); }
.clase.pendiente, .clase.aceptada, .clase.realizada,
.clase.no-realizada, .clase.cancelada { color: var(--sobre-estado); }
.clase.pendiente strong, .clase.aceptada strong, .clase.realizada strong,
.clase.no-realizada strong, .clase.cancelada strong { color: var(--sobre-estado); }
.clase.pendiente small, .clase.aceptada small, .clase.realizada small,
.clase.no-realizada small, .clase.cancelada small { color: var(--sobre-estado-2); }
.clase.pendiente .marcador, .clase.aceptada .marcador, .clase.realizada .marcador,
.clase.no-realizada .marcador, .clase.cancelada .marcador { color: var(--sobre-estado-2); }


.soltadero {
  border: 2px dashed var(--linea-2); border-radius: var(--r);
  padding: 1rem; text-align: center; display: grid; gap: .5rem; justify-items: center;
  background: var(--papel-2); margin-bottom: .8rem;
}
.soltadero.activo { border-color: var(--acento); background: color-mix(in srgb, var(--acento) 8%, var(--papel-2)); }
.soltadero p { margin: 0; }
tr.fila-arch { cursor: grab; }
tr.fila-arch:active { cursor: grabbing; }

.video-zona.recibiendo { outline: 3px dashed var(--acento); outline-offset: -6px; }
.archivo-en-sala { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.archivo-mandos {
  position: absolute; left: 50%; bottom: 14px; transform: translateX(-50%); z-index: 6;
  display: flex; align-items: center; gap: .6rem;
  padding: .35rem .35rem .35rem .8rem; border-radius: var(--pill);
  background: rgba(8,10,14,.72); color: #fff; font-size: .82rem;
  max-width: min(90%, 30rem);
}
.archivo-mandos span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

@media (min-width: 900px) {
  .ventana.ventana-alta { height: 90dvh; max-height: 90dvh; }
}
.ventana.ventana-alta .ventana-cuerpo { max-height: none; overflow: auto; }
.ventana.ventana-alta .filtros-tablero { position: sticky; top: 0; z-index: 2; background: var(--papel); padding-bottom: .5rem; }
.ventana.ventana-alta .lista-hoy { gap: .45rem; }

#selloFondo {
  position: fixed; inset: 0; z-index: -1; pointer-events: none;
  opacity: .3; background-repeat: repeat; background-position: top left;
}

.celda-nombre .nombre-editable {
  width: 60%; min-width: 8rem; height: 30px; min-height: 30px;
  padding: .1rem .4rem; font: inherit;
}
.celda-nombre .pista { margin: 0 0 0 .2rem; }

.pestanas-sala { display: flex; gap: .3rem; margin-bottom: .5rem; flex: 0 0 auto; }
.pestanas-sala button {
  flex: 1 1 0; min-height: 34px; padding: .3rem .5rem; font-size: .78rem;
  border-radius: var(--pill); background: var(--papel-2); border: 1px solid transparent; color: var(--gris);
}
.pestanas-sala button.activa { background: var(--acento); color: #fff; }
.hoja-sala { display: none; min-height: 0; flex: 1 1 auto; overflow: auto; flex-direction: column; }
.hoja-sala.activa { display: flex; }
.chat-clase { display: flex; flex-direction: column; min-height: 0; }

.lista-sala { list-style: none; margin: 0; padding: 0; display: grid; gap: .3rem; }
.lista-sala li {
  display: flex; align-items: center; justify-content: space-between; gap: .4rem;
  padding: .35rem .5rem; border-radius: var(--r-sm); background: var(--papel-2); font-size: .82rem;
}
.lista-sala label { display: flex; align-items: center; gap: .4rem; margin: 0; cursor: pointer; }
.lista-sala input[type="radio"] {
  width: 15px; min-width: 15px; height: 15px; min-height: 15px; margin: 0; padding: 0;
  appearance: auto; accent-color: var(--acento); flex: none;
}
.lista-sala .nombre-cat { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.acciones-sala {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: center;
  gap: .5rem; margin-top: .6rem; flex: 0 0 auto;
}
.acciones-sala .btn-ico { font-size: 1.05rem; }

.video-escena .chat-clase {
  display: flex; flex-direction: column; min-height: 0;
  grid-template-rows: none;
}
@media (max-width: 899px) {
  .video-escena .chat-clase { min-height: 46dvh; }
}
.pestanas-sala {
  flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none;
}
.pestanas-sala::-webkit-scrollbar { display: none; }
.pestanas-sala button { flex: 1 0 auto; min-width: 5.5rem; white-space: nowrap; }
.video-escena .chat-clase-hilo { height: auto; }

.pestanas-sala button.con-novedad { background: var(--ocre); color: var(--tinta); font-weight: 700; }

.fila-saldada, .fila-saldada td, .fila-saldada dd, .fila-saldada dt,
.ficha.fila-saldada, .ficha.fila-saldada .ficha-nombre { color: var(--gris); }
.fila-pendiente, .fila-pendiente td, .fila-pendiente dd,
.ficha.fila-pendiente, .ficha.fila-pendiente .ficha-nombre { color: #000; }
.fila-saldada .etiqueta, .fila-pendiente .etiqueta { color: inherit; }

.bk-pasos { list-style: none; margin: .6rem 0 1rem; padding: 0; display: grid; gap: .4rem; }
.bk-paso { display: flex; align-items: center; gap: .6rem; padding: .55rem .8rem;
  border-radius: var(--pill); background: var(--suave); font-size: .85rem; }
.bk-paso .bk-marca { width: 1.2rem; text-align: center; }
.bk-paso .bk-texto { flex: 1 1 auto; }
.bk-paso .bk-detalle { color: var(--gris); font-family: var(--dato); font-size: .74rem; text-align: right; }
.bk-espera { opacity: .55; }
.bk-curso .bk-marca { animation: latir 1s infinite; }
.bk-hecho .bk-marca { color: #1c7c4a; }
.bk-falla { background: #ffe3e3; }
.bk-falla .bk-marca { color: #b52020; }
.bk-arbol { list-style: none; margin: 0; padding-left: 1rem; display: grid; gap: .25rem; }
.bk-arbol > li { display: block; }
.bk-archivo { display: flex; align-items: center; gap: .6rem; padding: .3rem 0; }
.bk-archivo a { text-decoration: none; flex: 1 1 auto; }
.bk-carpeta summary { display: flex; align-items: center; gap: .6rem; cursor: pointer; padding: .3rem 0; }
.bk-nombre { font-weight: 500; }
.bk-dato { color: var(--gris); font-family: var(--dato); font-size: .74rem; margin-left: auto; }

.crud-barra [data-tip]::before, .ventana-pie [data-tip]::before {
  bottom: auto; top: calc(100% + 8px);
  left: auto; right: 0; transform: translateX(0) translateY(4px);
  max-width: min(60vw, 260px); white-space: normal; text-align: right;
}
.crud-barra [data-tip]:hover::before, .crud-barra [data-tip]:focus-visible::before,
.ventana-pie [data-tip]:hover::before, .ventana-pie [data-tip]:focus-visible::before {
  transform: translateX(0) translateY(0);
}

.pase-mandos { display: flex; align-items: center; gap: .4rem; margin-left: auto; }

@media (min-width: 900px) {
  .tarjeta-persona { display: none; }
}

.cur-bloque { margin-bottom: .9rem; }
.cur-cab { display: flex; align-items: center; gap: .7rem; flex-wrap: wrap; margin-bottom: .6rem; }
.cur-cab h3 { margin: 0; }
.cur-cab small { color: var(--gris); font-size: .78rem; }
.cur-cab .cur-mandos { margin-left: auto; display: flex; gap: .4rem; }
.cur-venta { display: flex; align-items: center; gap: .4rem; font-size: .72rem; color: var(--gris); margin-left: auto; }
.cur-venta input { width: 110px; }
.cur-barra { display: inline-block; width: 90px; height: 7px; border-radius: 4px;
  background: var(--suave); overflow: hidden; vertical-align: middle; margin-right: .4rem; }
.cur-barra span { display: block; height: 100%; background: var(--degradado); }
.cur-sesion { border: 1px solid var(--linea); border-radius: var(--r-sm); padding: .6rem .8rem; margin: .5rem 0; }
.cur-sesion header { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; }
.cur-sesion header .bk-dato { margin-left: auto; }
.cur-contenidos { margin: .4rem 0 0; padding-left: 1.1rem; display: grid; gap: .25rem; }
.cur-ruta { font-family: var(--dato); font-size: .82rem; word-break: break-all; }
.cur-contenidos li { display: flex; align-items: center; gap: .5rem; }
.cur-contenidos li span { flex: 1 1 auto; }
.cur-agregar { margin-top: .5rem; }
.cur-agregar select { width: 100%; }

.paginador-sala { display: flex; align-items: center; justify-content: center; gap: .5rem; margin: .5rem 0; }
.paginador-sala .info { color: var(--gris); font-family: var(--dato); font-size: .74rem; }
.lista-sala li small { color: var(--gris); font-family: var(--dato); font-size: .72rem; margin-left: auto; }
.lista-sala li { display: flex; align-items: center; gap: .5rem; }

.lista-matriculas { list-style: none; margin: 0 0 .7rem; padding: 0; display: grid; gap: .4rem; }
.fila-matricula { display: flex; align-items: center; gap: .7rem; padding: .6rem .8rem;
  border-radius: var(--r-sm); background: var(--suave); border-left: 4px solid #1c7c4a; }
.fila-matricula .datos-hoy { flex: 1 1 auto; min-width: 0; }
.fila-matricula .datos-hoy small { display: block; color: var(--gris); font-size: .76rem; }

@media (min-width: 900px) {
  .menu-admin { scrollbar-width: thin; scrollbar-color: var(--linea) transparent; padding-bottom: .35rem; }
  .menu-admin::-webkit-scrollbar { display: block; height: 8px; }
  .menu-admin::-webkit-scrollbar-thumb { background: var(--linea); border-radius: 4px; }
  .menu-admin::-webkit-scrollbar-track { background: transparent; }
}

.cur-avance li { flex-wrap: wrap; gap: .4rem; }
.cur-avance .cur-sesion-nombre { flex: 1 1 40%; min-width: 140px; }
.cur-avance .bk-dato { flex: 0 0 auto; }
.etiqueta.est-pendiente { background: var(--estado-pendiente); }
.etiqueta.est-iniciado { background: var(--estado-realizada); }
.etiqueta.est-aprobado { background: var(--estado-aceptada); }

.btn-texto { width: auto; min-width: 0; flex: 0 0 auto;
  font-family: var(--texto); font-size: .7rem; font-weight: 700; letter-spacing: .06em;
  text-transform: uppercase; white-space: nowrap;
  padding: .25rem .7rem; border-radius: var(--pill); }

.cur-sesiones-fila { display: flex; flex-wrap: wrap; gap: .25rem; }
.cur-pin { display: inline-flex; align-items: center; justify-content: center;
  width: 26px; height: 26px; border-radius: 50%; font-size: .72rem; font-weight: 700;
  font-family: var(--dato); cursor: help; border: 1px solid var(--linea); }
.cur-pin.est-pendiente { background: var(--estado-pendiente); }
.cur-pin.est-iniciado { background: var(--estado-realizada); }
.cur-pin.est-aprobado { background: var(--estado-aceptada); }

.ventana-visor { width: 90vw; max-width: 90vw; height: 90vh; max-height: 90vh;
  display: flex; flex-direction: column; }
.ventana-visor .visor-lista { display: flex; gap: .4rem; flex-wrap: wrap;
  padding: .6rem 1rem; border-bottom: 1px solid var(--linea); }
.ventana-visor .visor-lista button.activo { background: var(--degradado); color: #fff; }
.ventana-visor .visor-cuerpo { flex: 1 1 auto; min-height: 0; display: flex;
  align-items: center; justify-content: center; background: #111; overflow: auto; }
.ventana-visor .visor-cuerpo video,
.ventana-visor .visor-cuerpo img { max-width: 100%; max-height: 100%; object-fit: contain; }
.ventana-visor .visor-cuerpo audio { width: 80%; }
.ventana-visor .visor-cuerpo iframe { width: 100%; height: 100%; border: 0; }
.ventana-visor .visor-cuerpo .vacio { color: #fff; }
.ventana-visor .visor-mandos { display: flex; gap: .5rem; justify-content: center;
  flex-wrap: wrap; padding: .7rem 1rem; border-top: 1px solid var(--linea); }
.visor-reloj { margin-left: auto; margin-right: .6rem; font-family: var(--dato);
  font-size: .84rem; color: var(--gris); }

#curDetAdm .cur-cab { flex-wrap: nowrap; align-items: center; gap: .8rem; }
#curDetAdm .cur-cab > div:first-child { flex: 1 1 auto; min-width: 0; }
#curDetAdm .cur-cab > div:first-child small { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: block; }
#curDetAdm .cur-venta { flex: 0 0 auto; margin-left: 0; }
#curDetAdm .cur-venta input { width: 110px; }
#curDetAdm .cur-cab select { flex: 0 0 auto; width: auto; min-width: 130px; }
@media (max-width: 700px) {
  #curDetAdm .cur-cab { flex-wrap: wrap; }
  #curDetAdm .cur-cab > div:first-child { flex-basis: 100%; }
}

a.enlace-crud { color: inherit; text-decoration: underline; text-decoration-style: dotted;
  text-underline-offset: 2px; }
a.enlace-crud:hover { color: var(--acento-2); text-decoration-style: solid; }

.ficha-foto { max-width: 140px; max-height: 140px; border-radius: var(--r-sm); display: block; }
