  :is(#clientes-grilla, #calendario, #reportes) .grilla-card {
    position: relative;
    background: var(--cal-card, var(--card));
    border: 1px solid var(--cal-border, var(--border));
    border-radius: 16px;
    padding: 22px 18px;
    box-shadow: 0 2px 10px rgba(0,0,0,.04);
  }
  :is(#clientes-grilla, #calendario, #reportes) .grilla-stripe {
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 4px;
    border-radius: 16px 16px 0 0;
    background: var(--cal-gold-gradient, var(--gold-gradient));
  }
  :is(#clientes-grilla, #calendario, #reportes) .grilla-mes-titulo {
    position: relative;
    font-size: 0.75rem;
    font-weight: 700;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: var(--cal-gold-strong, var(--gold-strong));
    margin: 6px 0 16px;
  }
  :is(#clientes-grilla, #calendario, #reportes) .cal-scroll {
    position: relative;
    overflow-x: auto;
    padding-bottom: 4px;
    margin-bottom: 28px;
  }
  :is(#clientes-grilla, #calendario, #reportes) .cal-inner { min-width: 560px; }
  :is(#clientes-grilla, #calendario, #reportes) .cal-dow-row {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 7px;
    margin-bottom: 7px;
  }
  :is(#clientes-grilla, #calendario, #reportes) .cal-dow {
    font-size: 0.625rem;
    font-weight: 700;
    letter-spacing: .06em;
    text-transform: uppercase;
    color: var(--cal-text-muted, var(--text-muted));
    text-align: center;
  }
  :is(#clientes-grilla, #calendario, #reportes) .cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 7px; }
  :is(#clientes-grilla, #calendario, #reportes) .cal-day {
    background: var(--cal-bg-soft, var(--bg-soft));
    border: 1px solid var(--cal-border, var(--border));
    border-radius: 10px;
    min-height: 76px;
    padding: 7px 8px;
    display: flex;
    flex-direction: column;
    gap: 4px;
  }
  :is(#clientes-grilla, #calendario, #reportes) .cal-day.vacio { background: transparent; border-color: transparent; }
  :is(#clientes-grilla, #calendario, #reportes) .cal-day-num {
    font-size: 0.8125rem;
    font-weight: 800;
    color: var(--cal-text, var(--text));
  }
  :is(#clientes-grilla, #calendario, #reportes) .cal-pieza {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 0.625rem;
    padding: 3px 7px;
    border-radius: 7px;
    cursor: pointer;
    background: var(--cal-card, var(--card));
    border: 1px solid var(--cal-border, var(--border));
    color: var(--cal-text-soft, var(--text-soft));
    line-height: 1.3;
  }
  :is(#clientes-grilla, #calendario, #reportes) .cal-pieza:hover { border-color: var(--cal-gold, var(--gold)); }
  :is(#clientes-grilla, #calendario, #reportes) .cal-dot {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    flex-shrink: 0;
  }
  /* Colores fijos por estado (no dependen del acento de cada cliente): gris pendiente, amarillo aprobado, verde publicado. */
  :is(#clientes-grilla, #calendario, #reportes) .cal-dot.pendiente { background: #9AA0A6; }
  :is(#clientes-grilla, #calendario, #reportes) .cal-dot.aprobado { background: #E8C531; }
  :is(#clientes-grilla, #calendario, #reportes) .cal-dot.publicado { background: var(--cal-verde, var(--verde, #4caf6e)); }
  :is(#clientes-grilla, #calendario, #reportes) .cal-dot.rechazado { background: var(--cal-cambios, var(--cambios)); }
  :is(#clientes-grilla, #calendario, #reportes) .temas-titulo {
    position: relative;
    font-size: 0.71875rem;
    font-weight: 700;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: var(--cal-gold-strong, var(--gold-strong));
    margin-bottom: 12px;
    display: flex;
    align-items: center;
    gap: 8px;
  }
  :is(#clientes-grilla, #calendario, #reportes) .temas-titulo::after {
    content: '';
    flex: 1;
    height: 1px;
    background: var(--cal-border, var(--border));
  }
  :is(#clientes-grilla, #calendario, #reportes) .temas-lista {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: 8px;
  }
  @media (min-width: 640px) {
    :is(#clientes-grilla, #calendario, #reportes) .grilla-card { padding: 30px 30px 28px; }
    :is(#clientes-grilla, #calendario, #reportes) .cal-inner { min-width: 100%; }
    :is(#clientes-grilla, #calendario, #reportes) .cal-day { min-height: 92px; padding: 9px 10px; }
    :is(#clientes-grilla, #calendario, #reportes) .cal-day-num { font-size: 0.9375rem; }
    :is(#clientes-grilla, #calendario, #reportes) .cal-pieza { font-size: 0.6875rem; }
  }
  #calendario .cal-propuesta,
  #calendario .tema-propuesta {
    border: 1px dashed var(--pilar-color, var(--gold-strong));
  }
  #calendario .tema-propuesta { cursor: default; align-items: flex-start; }
  #calendario .tema-propuesta .tema-body { min-width: 0; flex: 1; }
  #calendario .tema-propuesta .tema-formato { flex-wrap: wrap; }
  #calendario .tema-propuesta .tema-texto,
  #calendario .propuesta-comentario { overflow-wrap: anywhere; white-space: pre-wrap; }
  #calendario .propuesta-pilar { color: var(--text-muted); font-size: .75rem; margin: 5px 0; }
  #calendario .propuesta-comentario { font-size: .875rem; margin: 8px 0; }
  #calendario .propuesta-acciones { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
  #calendario .propuesta-form { margin-top: 12px; }
  #calendario .propuesta-form label { display: block; font-size: .875rem; }
  #calendario .propuesta-form textarea {
    display: block; width: 100%; box-sizing: border-box; resize: vertical;
    margin: 8px 0; padding: 10px; font: inherit; color: var(--text);
    background: var(--bg-soft); border: 1px solid var(--border); border-radius: 8px;
  }
  #calendario .propuesta-acciones button,
  #calendario .propuesta-form button,
  #calendario .grilla-aprobar button {
    min-height: 44px; padding: 10px 14px; border-radius: 8px; font: inherit;
    border: 1px solid var(--gold-strong); background: var(--card); color: var(--text); cursor: pointer;
  }
  #calendario button:disabled { opacity: .55; cursor: wait; }
  #calendario .grilla-aprobar { position: relative; margin-bottom: 16px; }
  #calendario .propuesta-mensaje { font-size: .875rem; }
  #calendario .propuesta-mensaje:empty { display: none; }
