:root{--black:#0a0a0a;--black2:#141414;--black3:#1a1a1a;--white:#f5f5f0;--white2:#a0a0a0;--gold:#d4af37;--gold-light:#e8c560;--line:#2a2a2a;--line-dark:#1f1f1f;--ease:cubic-bezier(.4,0,.2,1);--danger:#e74c3c;--success:#2ecc71}*,*::before,*::after{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--black);color:var(--white);font-family:'DM Sans',sans-serif;font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}h1,h2,h3,h4{font-family:'Playfair Display',serif;margin:0;font-weight:600}a{color:inherit;text-decoration:none}button{font-family:inherit;cursor:pointer}.eyebrow{text-transform:uppercase;letter-spacing:.22em;font-size:.65rem;font-weight:700}.eyebrow.gold{color:var(--gold)}.btn-gold{display:inline-block;background:var(--gold);color:var(--black);padding:.8rem 1.6rem;border:none;font-family:'Playfair Display',serif;font-weight:600;font-size:.9rem;cursor:pointer;transition:all .3s var(--ease);border-radius:4px}.btn-gold:hover{background:var(--gold-light);transform:translateY(-2px);box-shadow:0 8px 24px rgba(212,175,55,.25)}.btn-gold:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-outline{display:inline-block;padding:.8rem 1.6rem;border:1px solid var(--line);color:var(--white2);font-size:.9rem;cursor:pointer;transition:all .3s var(--ease);background:transparent;border-radius:4px}.btn-outline:hover{border-color:var(--gold);color:var(--gold)}.btn-danger{background:transparent;border:1px solid var(--danger);color:var(--danger);padding:.6rem 1.2rem;border-radius:4px;font-size:.85rem;cursor:pointer;transition:all .3s var(--ease)}.btn-danger:hover{background:var(--danger);color:var(--white)}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:2rem 1rem}.login-card{max-width:400px;width:100%;background:var(--black2);border:1px solid var(--line);border-radius:10px;padding:2.5rem 2rem}.login-logo{text-align:center;margin-bottom:2rem}.login-logo h1{font-size:1.5rem;color:var(--gold);letter-spacing:.05em}.login-logo p{font-size:.6rem;color:var(--white2);letter-spacing:.2em;text-transform:uppercase;margin-top:.3rem}.login-field{margin-bottom:1.2rem}.login-field label{display:block;font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;color:var(--gold);font-weight:600;margin-bottom:.4rem}.login-input{width:100%;background:var(--black);border:1px solid var(--line-dark);border-radius:5px;padding:.7rem .9rem;font-family:inherit;font-size:.9rem;color:var(--white);transition:border-color .2s}.login-input:focus{outline:none;border-color:var(--gold)}.login-error{color:var(--danger);font-size:.8rem;margin-bottom:1rem;display:none}.login-error.show{display:block}.login-submit{width:100%;margin-top:.5rem}.admin-layout{display:flex;min-height:100vh}.admin-sidebar{width:240px;background:var(--black2);border-right:1px solid var(--line);position:fixed;top:0;left:0;bottom:0;overflow-y:auto;z-index:50}.admin-sidebar-logo{padding:1.5rem;text-align:center;border-bottom:1px solid var(--line)}.admin-sidebar-logo h2{font-size:1.1rem;color:var(--gold)}.admin-sidebar-logo p{font-size:.55rem;color:var(--white2);letter-spacing:.2em;text-transform:uppercase;margin-top:.2rem}.admin-nav{padding:1rem 0}.admin-nav a{display:flex;align-items:center;gap:.7rem;padding:.7rem 1.5rem;font-size:.85rem;color:var(--white2);transition:all .2s;border-left:3px solid transparent}.admin-nav a:hover{color:var(--gold);background:rgba(212,175,55,.05)}.admin-nav a.active{color:var(--gold);border-left-color:var(--gold);background:rgba(212,175,55,.05)}.admin-nav a.disabled{opacity:.3;cursor:not-allowed;pointer-events:none}.admin-nav .nav-section{font-size:.6rem;text-transform:uppercase;letter-spacing:.15em;color:var(--white2);opacity:.4;padding:1rem 1.5rem .3rem}.admin-content{flex:1;margin-left:240px;padding:2rem 3rem}.admin-topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:2rem}.admin-topbar h1{font-size:1.5rem;color:var(--white)}.admin-user-info{display:flex;align-items:center;gap:.8rem}.admin-user-info .user-email{font-size:.8rem;color:var(--white2)}.admin-logout{font-size:.8rem;color:var(--white2);cursor:pointer;transition:color .2s}.admin-logout:hover{color:var(--danger)}.stats-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1.5rem;margin-bottom:2rem}.stat-card{background:var(--black2);border:1px solid var(--line);border-radius:8px;padding:1.5rem}.stat-card .stat-label{font-size:.65rem;text-transform:uppercase;letter-spacing:.1em;color:var(--white2);margin-bottom:.5rem}.stat-card .stat-value{font-family:'Playfair Display',serif;font-size:2rem;color:var(--gold)}.activity-list{background:var(--black2);border:1px solid var(--line);border-radius:8px;padding:1.5rem}.activity-list h3{font-size:1rem;color:var(--white);margin-bottom:1rem}.activity-item{padding:.6rem 0;border-bottom:1px solid var(--line);font-size:.8rem;color:var(--white2)}.activity-item:last-child{border-bottom:none}.activity-item .activity-action{color:var(--gold);font-weight:600}.activity-item .activity-time{color:var(--white2);opacity:.5;font-size:.7rem;float:right}.data-table{width:100%;border-collapse:collapse}.data-table th{text-align:left;padding:.8rem 1rem;font-size:.65rem;text-transform:uppercase;letter-spacing:.1em;color:var(--gold);border-bottom:1px solid var(--line);font-weight:700}.data-table td{padding:.8rem 1rem;font-size:.85rem;color:var(--white);border-bottom:1px solid var(--line)}.data-table tr:hover td{background:rgba(212,175,55,.03)}.badge{display:inline-block;padding:.2rem .6rem;border-radius:3px;font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.badge-draft{background:rgba(160,160,160,.15);color:var(--white2)}.badge-confirmed{background:rgba(46,204,113,.15);color:var(--success)}.badge-completed{background:rgba(212,175,55,.15);color:var(--gold)}.badge-cancelled{background:rgba(231,76,60,.15);color:var(--danger)}.form-field{margin-bottom:1.2rem}.form-field label{display:block;font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;color:var(--gold);font-weight:600;margin-bottom:.4rem}.form-input,.form-select,.form-textarea{width:100%;background:var(--black);border:1px solid var(--line-dark);border-radius:5px;padding:.7rem .9rem;font-family:inherit;font-size:.9rem;color:var(--white);transition:border-color .2s}.form-input:focus,.form-select:focus,.form-textarea:focus{outline:none;border-color:var(--gold)}.form-textarea{resize:vertical;min-height:80px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.form-error{color:var(--danger);font-size:.75rem;margin-top:.3rem;display:none}.form-error.show{display:block}.empty-state{text-align:center;padding:3rem 1rem}.empty-state h3{font-size:1.2rem;color:var(--white);margin-bottom:.5rem}.empty-state p{font-size:.85rem;color:var(--white2);margin-bottom:1.5rem}.invite-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:2rem 1rem}.invite-card{max-width:450px;width:100%;background:var(--black2);border:1px solid var(--line);border-radius:10px;padding:2.5rem 2rem;text-align:center}.invite-card h2{font-size:1.3rem;color:var(--white);margin-bottom:.5rem}.invite-card p{font-size:.85rem;color:var(--white2);margin-bottom:1.5rem}@media(max-width:768px){.admin-sidebar{width:60px}.admin-sidebar-logo h2{font-size:0}.admin-sidebar-logo p{display:none}.admin-nav a span{display:none}.admin-nav .nav-section{display:none}.admin-content{margin-left:60px;padding:1rem 1.5rem}.form-row{grid-template-columns:1fr}.stats-grid{grid-template-columns:1fr 1fr}}
/* MiBodaPro — Formulario de clientes */
.client-form-card {
  margin-bottom: 2rem;
}

.client-form-header {
  margin-bottom: 1.5rem;
  align-items: flex-start;
}

.client-form-header h2 {
  font-size: 1.15rem;
  color: var(--white);
  margin-bottom: .3rem;
}

.client-form-header p {
  margin: 0;
  color: var(--white2);
  font-size: .8rem;
}

.client-form-grid {
  margin-bottom: 1rem;
}

.client-form-grid .form-field {
  margin-bottom: .8rem;
}

.client-form-grid .form-input {
  min-height: 42px;
}

.client-form-actions {
  display: flex;
  justify-content: flex-end;
  gap: .8rem;
  margin-top: 1.5rem;
  padding-top: 1.2rem;
  border-top: 1px solid var(--line);
}

#client-form-message {
  min-height: 1.2rem;
  margin-top: .5rem;
}

@media (max-width: 768px) {
  .client-form-actions {
    flex-direction: column-reverse;
  }

  .client-form-actions button {
    width: 100%;
  }
}

.client-form-card #client-form-message {
  display: none;
  min-height: 1.2rem;
  margin-top: .8rem;
  padding: .65rem .8rem;
  border-radius: 4px;
  color: var(--danger);
  background: rgba(231,76,60,.08);
  border: 1px solid rgba(231,76,60,.2);
}

.client-form-card #client-form-message.show {
  display: block;
}

.client-form-card #client-form-message.success {
  color: var(--success);
  background: rgba(46,204,113,.08);
  border-color: rgba(46,204,113,.2);
}

/* =========================================================
   MiBodaPro — Portal CLIENT / Panel del evento
   ========================================================= */

.client-event-summary {
  background: var(--black2);
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 1.5rem;
  margin-bottom: 2rem;
}

.client-event-info-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 1.5rem;
}

.client-event-info-label {
  margin: 0 0 .35rem;
  color: var(--gold);
  font-size: .65rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .1em;
}

.client-event-info-value {
  margin: 0;
  color: var(--white);
  font-size: .9rem;
}

.client-event-modules-header {
  margin: 0 0 1rem;
}

.client-event-modules-header h3 {
  color: var(--white);
  font-size: 1.15rem;
  margin-bottom: .3rem;
}

.client-event-modules-header p {
  margin: 0;
  color: var(--white2);
  font-size: .8rem;
}

.client-event-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1rem;
}

/* 405-H.3H — separación entre módulos y el bloque siguiente */
.client-event-grid + h3 {
  margin-top: 2rem !important;
}

.client-module-card {
  position: relative;
  min-height: 155px;
  display: flex;
  flex-direction: column;
  padding: 1.35rem;
  background: var(--black2);
  border: 1px solid var(--line);
  border-radius: 10px;
  transition: border-color .2s var(--ease), transform .2s var(--ease);
}

.client-module-card:hover {
  border-color: rgba(212,175,55,.55);
  transform: translateY(-2px);
}

.client-module-icon {
  font-size: 1.35rem;
  margin-bottom: .9rem;
}

.client-module-card h4 {
  color: var(--white);
  font-family: 'DM Sans', sans-serif;
  font-size: .9rem;
  font-weight: 600;
  margin-bottom: .35rem;
}

.client-module-card p {
  color: var(--white2);
  font-size: .75rem;
  margin: 0;
  line-height: 1.45;
}

.client-module-status {
  margin-top: auto;
  padding-top: 1rem;
  color: var(--gold);
  font-size: .65rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .08em;
}

.client-module-card.is-pending {
  cursor: default;
}

.client-module-card.is-pending:hover {
  transform: none;
}

.client-module-card.is-pending .client-module-status {
  color: var(--white2);
  opacity: .7;
}

@media (max-width: 1050px) {
  .client-event-info-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .client-event-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 650px) {
  .client-event-info-grid,
  .client-event-grid {
    grid-template-columns: 1fr;
  }

  .client-module-card {
    min-height: 135px;
  }
}

/* =========================================================
   MiBodaPro — Perfil Musical
   ========================================================= */

.music-profile-page{
  max-width:1200px;
  margin:0 auto;
  padding-bottom:3rem;
}

.music-profile-hero{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:2rem;
  padding:2rem;
  margin-bottom:1.5rem;
  border:1px solid rgba(255,255,255,.08);
  border-radius:18px;
  background:rgba(255,255,255,.025);
}

.music-profile-hero h2{
  margin:.15rem 0 .65rem;
  color:var(--white);
  font-family:'Playfair Display',serif;
  font-size:clamp(1.7rem,4vw,2.5rem);
}

.music-profile-hero p{
  max-width:720px;
  margin:0;
  color:var(--white2);
  line-height:1.65;
}

.music-eyebrow{
  color:var(--gold) !important;
  font-size:.7rem;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.14em;
}

.music-profile-state{
  min-width:140px;
  padding:1rem 1.2rem;
  border:1px solid rgba(255,255,255,.08);
  border-radius:14px;
  background:rgba(0,0,0,.18);
}

.music-profile-state span{
  display:block;
  margin-bottom:.35rem;
  color:var(--white2);
  font-size:.7rem;
  text-transform:uppercase;
  letter-spacing:.1em;
}

.music-profile-state strong{
  color:var(--gold);
  font-size:.95rem;
}

.music-section{
  margin-bottom:1.25rem;
  padding:1.6rem;
  border:1px solid rgba(255,255,255,.08);
  border-radius:18px;
  background:rgba(255,255,255,.025);
}

.music-section-heading{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:1rem;
  margin-bottom:1.4rem;
}

.music-section-heading > div{
  display:flex;
  align-items:center;
  gap:.8rem;
}

.music-section-heading h3{
  margin:0;
  color:var(--white);
  font-size:1.05rem;
}

.music-section-heading > strong{
  color:var(--gold);
  font-size:1.15rem;
}

.music-step{
  display:flex;
  align-items:center;
  justify-content:center;
  width:34px;
  height:34px;
  border:1px solid rgba(212,175,55,.35);
  border-radius:50%;
  color:var(--gold);
  font-size:.72rem;
  font-weight:700;
}

.music-read-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:.8rem;
  margin-bottom:1rem;
}

.music-read-grid > div{
  padding:1rem;
  border:1px solid rgba(255,255,255,.06);
  border-radius:12px;
  background:rgba(0,0,0,.12);
}

.music-read-grid span,
.music-note-block span{
  display:block;
  margin-bottom:.35rem;
  color:var(--white2);
  font-size:.7rem;
  text-transform:uppercase;
  letter-spacing:.07em;
}

.music-read-grid strong{
  color:var(--white);
  font-size:.9rem;
}

.music-note-block{
  padding:1rem;
  margin-top:.8rem;
  border:1px solid rgba(255,255,255,.06);
  border-radius:12px;
  background:rgba(0,0,0,.12);
}

.music-note-block p{
  margin:0;
  color:var(--white);
  line-height:1.55;
}

.music-two-columns{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:1rem;
}

.music-two-columns > div{
  min-width:0;
  padding:1.1rem;
  border:1px solid rgba(255,255,255,.06);
  border-radius:14px;
  background:rgba(0,0,0,.12);
}

.music-two-columns h4{
  margin:0 0 1rem;
  color:var(--white);
  font-size:.9rem;
}

.music-chip-list{
  display:flex;
  flex-wrap:wrap;
  gap:.65rem;
}

.music-chip{
  display:inline-flex;
  align-items:center;
  gap:.5rem;
  padding:.6rem .8rem;
  border:1px solid rgba(212,175,55,.2);
  border-radius:999px;
  background:rgba(212,175,55,.06);
  color:var(--white);
  font-size:.82rem;
}

.music-chip strong{
  color:var(--gold);
}

.music-song{
  display:flex;
  flex-direction:column;
  gap:.25rem;
  padding:.85rem 0;
  border-bottom:1px solid rgba(255,255,255,.07);
}

.music-song:last-child{
  border-bottom:0;
}

.music-song strong{
  color:var(--white);
  font-size:.9rem;
}

.music-song span{
  color:var(--gold);
  font-size:.78rem;
}

.music-song small{
  color:var(--white2);
  line-height:1.4;
}

.music-empty{
  margin:0;
  color:var(--white2);
  font-size:.82rem;
  font-style:italic;
}

@media (max-width:900px){
  .music-read-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}

@media (max-width:650px){
  .music-profile-hero{
    flex-direction:column;
    padding:1.25rem;
  }

  .music-profile-state{
    width:100%;
  }

  .music-section{
    padding:1.15rem;
  }

  .music-read-grid,
  .music-two-columns{
    grid-template-columns:1fr;
  }

  .music-section-heading{
    align-items:flex-start;
  }
}

/* Perfil musical — composición de invitados */

.music-section-help{
  margin:-.55rem 0 1.2rem;
  color:var(--white2);
  font-size:.82rem;
  line-height:1.55;
}

.music-audience-form{
  display:grid;
  grid-template-columns:minmax(0,1fr) 150px auto;
  gap:.8rem;
  align-items:end;
  margin-bottom:.6rem;
}

.music-audience-form .form-field{
  margin-bottom:0;
}

.music-audience-add{
  min-height:42px;
  white-space:nowrap;
}

.music-chip-removable{
  padding-right:.45rem;
}

.music-chip-remove{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:22px;
  height:22px;
  margin-left:.1rem;
  padding:0;
  border:0;
  border-radius:50%;
  background:transparent;
  color:var(--white2);
  font-size:1rem;
  line-height:1;
  transition:all .2s var(--ease);
}

.music-chip-remove:hover{
  background:rgba(231,76,60,.12);
  color:var(--danger);
}

.music-chip-remove:disabled{
  opacity:.35;
  cursor:not-allowed;
}

@media (max-width:650px){
  .music-audience-form{
    grid-template-columns:1fr;
  }

  .music-audience-add{
    width:100%;
  }
}

/* Perfil musical — géneros */

.music-genre-form{
  margin-bottom:1rem;
}

.music-inline-add{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:.6rem;
}

.music-inline-add .btn-outline{
  white-space:nowrap;
}

.music-genre-message{
  margin-top:.45rem;
}

@media (max-width:650px){
  .music-inline-add{
    grid-template-columns:1fr;
  }

  .music-inline-add .btn-outline{
    width:100%;
  }
}

/* Perfil musical — canciones */

.music-song-form{
  margin-bottom:1.2rem;
  padding-bottom:1.2rem;
  border-bottom:1px solid rgba(255,255,255,.07);
}

.music-song-form .form-field{
  margin-bottom:.75rem;
}

.music-song-form .form-textarea{
  min-height:68px;
}

.music-song-form .btn-outline{
  width:100%;
}

.music-song-message{
  margin:0 0 .7rem;
}

.music-song-list{
  margin-top:.25rem;
}

.music-song-removable{
  display:flex;
  flex-direction:row;
  align-items:flex-start;
  justify-content:space-between;
  gap:1rem;
}

.music-song-content{
  display:flex;
  flex-direction:column;
  gap:.25rem;
  min-width:0;
}

.music-song-remove{
  flex:0 0 auto;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:28px;
  height:28px;
  padding:0;
  border:0;
  border-radius:50%;
  background:transparent;
  color:var(--white2);
  font-size:1.1rem;
  transition:all .2s var(--ease);
}

.music-song-remove:hover{
  background:rgba(231,76,60,.12);
  color:var(--danger);
}

.music-song-remove:disabled{
  opacity:.35;
  cursor:not-allowed;
}

/* Perfil musical — playlists y referencias */

.music-playlist-form{
  margin-bottom:1.2rem;
  padding-bottom:1.2rem;
  border-bottom:1px solid rgba(255,255,255,.07);
}

.music-playlist-grid{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:.8rem;
  margin-bottom:.8rem;
}

.music-playlist-grid .form-field{
  margin-bottom:0;
}

.music-playlist-url-field{
  grid-column:1 / -1;
}

.music-playlist-message{
  margin:0 0 .7rem;
}

.music-playlist-form .btn-outline{
  width:100%;
}

.music-playlist-list{
  display:flex;
  flex-direction:column;
  gap:.7rem;
  margin-top:.25rem;
}

.music-playlist-card{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:1rem;
  padding:.9rem 1rem;
  border:1px solid rgba(255,255,255,.07);
  border-radius:12px;
  background:rgba(255,255,255,.025);
  transition:all .2s var(--ease);
}

.music-playlist-card:hover{
  border-color:rgba(255,255,255,.13);
  background:rgba(255,255,255,.04);
}

.music-playlist-card-main{
  display:flex;
  flex-direction:column;
  gap:.25rem;
  min-width:0;
}

.music-playlist-card-main strong{
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}

.music-playlist-card-main span,
.music-playlist-card-main small{
  color:var(--white2);
}

.music-playlist-card-main small{
  line-height:1.45;
}

.music-playlist-platform{
  font-size:.7rem;
  font-weight:700;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:var(--accent);
}

.music-playlist-actions{
  display:flex;
  align-items:center;
  gap:.45rem;
  flex:0 0 auto;
}

.music-playlist-open{
  white-space:nowrap;
  text-decoration:none;
}

.music-playlist-remove{
  flex:0 0 auto;
}

@media (max-width:650px){
  .music-playlist-grid{
    grid-template-columns:1fr;
  }

  .music-playlist-url-field{
    grid-column:auto;
  }

  .music-playlist-card{
    align-items:flex-start;
    flex-direction:column;
  }

  .music-playlist-actions{
    width:100%;
    justify-content:space-between;
  }

  .music-playlist-open{
    flex:1;
    text-align:center;
  }
}


/* =========================================================
   MiBodaPro — Módulo 6
   Protocolo e Itinerario
   ========================================================= */

#event-protocol-content{
  width:100%;
  max-width:1180px;
  margin:0 auto;
  padding:1rem 0 4rem;
}

.protocol-hero{
  position:relative;
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:2rem;
  padding:2.2rem;
  margin-bottom:2rem;
  border:1px solid rgba(212,175,55,.22);
  border-radius:22px;
  background:
    radial-gradient(
      circle at top right,
      rgba(212,175,55,.10),
      transparent 38%
    ),
    rgba(255,255,255,.025);
  overflow:hidden;
}

.protocol-hero::before{
  content:"";
  position:absolute;
  top:0;
  left:2.2rem;
  width:72px;
  height:2px;
  background:var(--gold);
}

.protocol-eyebrow{
  margin:0 0 .65rem;
  color:var(--gold);
  font-size:.68rem;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.18em;
}

.protocol-hero h1{
  margin:0;
  color:var(--white);
  font-size:clamp(1.65rem,3vw,2.45rem);
  line-height:1.1;
}

.protocol-event-name{
  margin:.7rem 0 0;
  color:var(--white2);
  font-size:.95rem;
}

.protocol-hero-actions{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  flex-wrap:wrap;
  gap:.75rem;
}

.protocol-status-badge,
.protocol-item-status{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:.48rem .78rem;
  border:1px solid rgba(212,175,55,.28);
  border-radius:999px;
  color:var(--gold);
  background:rgba(212,175,55,.07);
  font-size:.65rem;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.08em;
  white-space:nowrap;
}

.protocol-print-button{
  white-space:nowrap;
}

.protocol-timeline{
  position:relative;
  display:flex;
  flex-direction:column;
  gap:1.15rem;
  padding-left:1.35rem;
}

.protocol-timeline::before{
  content:"";
  position:absolute;
  top:1.2rem;
  bottom:1.2rem;
  left:0;
  width:1px;
  background:linear-gradient(
    to bottom,
    var(--gold),
    rgba(212,175,55,.12)
  );
}

.protocol-moment-card{
  position:relative;
  display:grid;
  grid-template-columns:145px minmax(0,1fr);
  gap:1.4rem;
  padding:1.6rem;
  border:1px solid rgba(255,255,255,.08);
  border-radius:18px;
  background:rgba(255,255,255,.025);
}

.protocol-moment-card::before{
  content:"";
  position:absolute;
  left:-1.68rem;
  top:1.9rem;
  width:10px;
  height:10px;
  border:3px solid var(--gold);
  border-radius:50%;
  background:#111;
  box-shadow:0 0 0 5px rgba(212,175,55,.08);
}

.protocol-moment-number{
  color:var(--gold);
  font-size:.66rem;
  font-weight:700;
  letter-spacing:.14em;
  text-transform:uppercase;
}

.protocol-moment-main{
  min-width:0;
}

.protocol-moment-heading{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:1rem;
}

.protocol-time{
  margin-bottom:.3rem;
  color:var(--gold);
  font-size:.85rem;
  font-weight:700;
  letter-spacing:.04em;
}

.protocol-moment-heading h3{
  margin:0;
  color:var(--white);
  font-size:1.25rem;
  line-height:1.3;
}

.protocol-duration{
  margin:.55rem 0 0;
  color:var(--white2);
  font-size:.78rem;
}

.protocol-section-label{
  margin-bottom:.6rem;
  color:var(--gold);
  font-size:.66rem;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.12em;
}

.protocol-music-block,
.protocol-instructions{
  margin-top:1.15rem;
  padding:1rem 1.1rem;
  border:1px solid rgba(255,255,255,.07);
  border-radius:13px;
  background:rgba(0,0,0,.16);
}

.protocol-music-block strong{
  display:block;
  color:var(--white);
  font-size:.95rem;
}

.protocol-music-block span{
  display:block;
  margin-top:.2rem;
  color:var(--white2);
  font-size:.82rem;
}

.protocol-music-link{
  display:inline-flex;
  margin-top:.7rem;
  color:var(--gold);
  font-size:.75rem;
  font-weight:700;
  text-decoration:none;
}

.protocol-music-link:hover{
  text-decoration:underline;
}

.protocol-no-music{
  margin-top:1rem;
  color:var(--white2);
  font-size:.78rem;
  font-style:italic;
}

.protocol-instructions{
  border-color:rgba(212,175,55,.15);
}

.protocol-instructions p,
.protocol-general-notes p{
  margin:0;
  color:var(--white2);
  font-size:.86rem;
  line-height:1.7;
  white-space:pre-wrap;
}

.protocol-general-notes{
  margin-top:2rem;
  padding:1.5rem;
  border:1px solid rgba(212,175,55,.18);
  border-radius:18px;
  background:rgba(212,175,55,.035);
}

.protocol-muted{
  opacity:.7;
}

.protocol-empty-state,
.protocol-empty-moments{
  padding:3.5rem 2rem;
  border:1px dashed rgba(212,175,55,.24);
  border-radius:20px;
  text-align:center;
  background:rgba(255,255,255,.018);
}

.protocol-empty-state{
  max-width:760px;
  margin:0 auto;
}

.protocol-empty-icon{
  margin-bottom:1rem;
  font-size:2rem;
}

.protocol-empty-state h2,
.protocol-empty-moments h3{
  margin:0 0 .7rem;
  color:var(--white);
}

.protocol-empty-state p,
.protocol-empty-moments p{
  max-width:600px;
  margin:0 auto 1.4rem;
  color:var(--white2);
  font-size:.88rem;
  line-height:1.7;
}

/* -------------------------
   Responsive
   ------------------------- */

@media (max-width:760px){
  .protocol-hero{
    flex-direction:column;
    padding:1.5rem;
  }

  .protocol-hero-actions{
    justify-content:flex-start;
  }

  .protocol-timeline{
    padding-left:1rem;
  }

  .protocol-moment-card{
    grid-template-columns:1fr;
    gap:.7rem;
    padding:1.25rem;
  }

  .protocol-moment-card::before{
    left:-1.34rem;
  }

  .protocol-moment-heading{
    flex-direction:column;
  }
}

/* -------------------------
   Impresión del protocolo
   ------------------------- */

@media print{
  body{
    background:#fff !important;
    color:#111 !important;
  }

  .sidebar,
  .topbar,
  .protocol-print-button{
    display:none !important;
  }

  .admin-layout,
  .main-content,
  #event-protocol-content{
    display:block !important;
    width:100% !important;
    max-width:none !important;
    margin:0 !important;
    padding:0 !important;
  }

  .protocol-hero,
  .protocol-moment-card,
  .protocol-general-notes{
    color:#111 !important;
    background:#fff !important;
    box-shadow:none !important;
    break-inside:avoid;
  }

  .protocol-hero{
    padding:0 0 20px !important;
    border:0 !important;
    border-bottom:2px solid #111 !important;
    border-radius:0 !important;
  }

  .protocol-hero::before,
  .protocol-timeline::before,
  .protocol-moment-card::before{
    display:none !important;
  }

  .protocol-timeline{
    padding:20px 0 0 !important;
  }

  .protocol-moment-card{
    margin-bottom:12px;
    border:1px solid #bbb !important;
  }

  .protocol-music-block,
  .protocol-instructions{
    background:#fff !important;
    border:1px solid #ddd !important;
  }

  .protocol-hero h1,
  .protocol-moment-heading h3,
  .protocol-music-block strong{
    color:#111 !important;
  }

  .protocol-event-name,
  .protocol-duration,
  .protocol-music-block span,
  .protocol-instructions p,
  .protocol-general-notes p,
  .protocol-no-music{
    color:#333 !important;
  }

  .protocol-eyebrow,
  .protocol-time,
  .protocol-section-label,
  .protocol-moment-number,
  .protocol-status-badge,
  .protocol-item-status,
  .protocol-music-link{
    color:#111 !important;
  }
}

/* =========================================================
   MiBodaPro — Protocol Editor
   Agregar / editar momentos
   ========================================================= */

.protocol-add-section{
  margin-top:1.4rem;
}

.protocol-add-toggle{
  display:flex;
  align-items:center;
  justify-content:center;
  width:100%;
  min-height:54px;
  border-radius:14px;
  font-size:.78rem;
  letter-spacing:.04em;
}

.protocol-editor-panel{
  position:relative;
  margin-top:1.2rem;
  padding:1.8rem;
  border:1px solid rgba(212,175,55,.22);
  border-radius:20px;
  background:
    radial-gradient(
      circle at top right,
      rgba(212,175,55,.07),
      transparent 35%
    ),
    rgba(255,255,255,.025);
}

.protocol-editor-panel[hidden]{
  display:none !important;
}

.protocol-editor-header{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:1rem;
  padding-bottom:1.3rem;
  margin-bottom:1.5rem;
  border-bottom:1px solid rgba(255,255,255,.07);
}

.protocol-editor-header h2{
  margin:0;
  color:var(--white);
  font-family:"Playfair Display",serif;
  font-size:1.55rem;
}

.protocol-form-section{
  padding:1.25rem 0;
  border-bottom:1px solid rgba(255,255,255,.06);
}

.protocol-form-section:first-of-type{
  padding-top:0;
}

.protocol-form-section:last-of-type{
  border-bottom:0;
}

.protocol-form-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:1rem;
}

.protocol-field{
  display:flex;
  flex-direction:column;
  gap:.45rem;
}

.protocol-field-wide,
.protocol-field-full{
  grid-column:1 / -1;
}

.protocol-field > span{
  color:var(--white2);
  font-size:.72rem;
  font-weight:600;
}

.protocol-field input,
.protocol-field textarea{
  width:100%;
  box-sizing:border-box;
  padding:.85rem .95rem;
  border:1px solid rgba(255,255,255,.10);
  border-radius:10px;
  outline:none;
  color:var(--white);
  background:rgba(0,0,0,.24);
  font:inherit;
  transition:
    border-color .18s ease,
    box-shadow .18s ease,
    background .18s ease;
}

.protocol-field input:focus,
.protocol-field textarea:focus{
  border-color:rgba(212,175,55,.65);
  background:rgba(0,0,0,.34);
  box-shadow:0 0 0 3px rgba(212,175,55,.07);
}

.protocol-field textarea{
  min-height:105px;
  resize:vertical;
  line-height:1.55;
}

.protocol-field small{
  color:var(--white2);
  opacity:.65;
  font-size:.65rem;
  line-height:1.5;
}

.protocol-input-suffix{
  position:relative;
}

.protocol-input-suffix input{
  padding-right:3.3rem;
}

.protocol-input-suffix > span{
  position:absolute;
  right:.9rem;
  top:50%;
  transform:translateY(-50%);
  color:var(--white2);
  font-size:.68rem;
  pointer-events:none;
}

.protocol-music-toggle{
  display:flex;
  align-items:center;
  gap:.9rem;
  padding:1rem 1.1rem;
  border:1px solid rgba(255,255,255,.08);
  border-radius:13px;
  cursor:pointer;
  background:rgba(0,0,0,.16);
}

.protocol-music-toggle input{
  position:absolute;
  opacity:0;
  pointer-events:none;
}

.protocol-toggle-ui{
  position:relative;
  flex:0 0 auto;
  width:42px;
  height:23px;
  border:1px solid rgba(255,255,255,.16);
  border-radius:999px;
  background:rgba(255,255,255,.08);
  transition:.2s ease;
}

.protocol-toggle-ui::after{
  content:"";
  position:absolute;
  top:3px;
  left:3px;
  width:15px;
  height:15px;
  border-radius:50%;
  background:var(--white2);
  transition:.2s ease;
}

.protocol-music-toggle input:checked + .protocol-toggle-ui{
  border-color:rgba(212,175,55,.55);
  background:rgba(212,175,55,.22);
}

.protocol-music-toggle input:checked + .protocol-toggle-ui::after{
  left:22px;
  background:var(--gold);
}

.protocol-music-toggle strong{
  display:block;
  color:var(--white);
  font-size:.8rem;
}

.protocol-music-toggle small{
  display:block;
  margin-top:.2rem;
  color:var(--white2);
  opacity:.7;
  font-size:.66rem;
}

.protocol-music-fields{
  margin-top:1rem;
  padding:1.1rem;
  border-left:2px solid rgba(212,175,55,.35);
}

.protocol-music-fields[hidden]{
  display:none !important;
}

.protocol-status-options{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:.8rem;
}

.protocol-status-options label{
  position:relative;
  display:flex;
  align-items:center;
  gap:.7rem;
  padding:1rem;
  border:1px solid rgba(255,255,255,.08);
  border-radius:12px;
  cursor:pointer;
  background:rgba(0,0,0,.16);
}

.protocol-status-options input{
  accent-color:var(--gold);
}

.protocol-status-options strong{
  display:block;
  color:var(--white);
  font-size:.75rem;
}

.protocol-status-options small{
  display:block;
  margin-top:.15rem;
  color:var(--white2);
  opacity:.7;
  font-size:.64rem;
}

.protocol-editor-actions{
  display:flex;
  justify-content:flex-end;
  padding-top:1.3rem;
}

.protocol-editor-actions .btn-primary{
  min-width:170px;
}

@media(max-width:760px){
  .protocol-editor-panel{
    padding:1.2rem;
  }

  .protocol-editor-header{
    flex-direction:column;
  }

  .protocol-form-grid,
  .protocol-status-options{
    grid-template-columns:1fr;
  }

  .protocol-field-wide,
  .protocol-field-full{
    grid-column:auto;
  }

  .protocol-editor-actions .btn-primary{
    width:100%;
  }
}

@media print{
  .protocol-add-section,
  .protocol-editor-panel{
    display:none !important;
  }
}

/* Protocol — CTA principal */
.protocol-add-section .protocol-add-toggle{
  width:100%;
  min-height:56px;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:.5rem;

  color:var(--gold) !important;
  background:
    linear-gradient(
      135deg,
      rgba(212,175,55,.10),
      rgba(212,175,55,.025)
    ) !important;

  border:1px solid rgba(212,175,55,.35) !important;
  border-radius:14px;

  box-shadow:none !important;
  cursor:pointer;

  font-family:"DM Sans",sans-serif;
  font-size:.72rem;
  font-weight:600;
  letter-spacing:.06em;

  transition:
    background .2s ease,
    border-color .2s ease,
    transform .2s ease;
}

.protocol-add-section .protocol-add-toggle:hover{
  color:var(--gold) !important;
  background:
    linear-gradient(
      135deg,
      rgba(212,175,55,.16),
      rgba(212,175,55,.055)
    ) !important;

  border-color:rgba(212,175,55,.60) !important;
  transform:translateY(-1px);
}

/* Protocol — selector de horario */
.protocol-field select{
  width:100%;
  box-sizing:border-box;
  min-height:46px;
  padding:.85rem 2.8rem .85rem .95rem;

  border:1px solid rgba(255,255,255,.10);
  border-radius:10px;
  outline:none;

  color:var(--white);
  background-color:rgba(0,0,0,.24);

  font:inherit;
  cursor:pointer;

  transition:
    border-color .18s ease,
    box-shadow .18s ease,
    background .18s ease;
}

.protocol-field select:focus{
  border-color:rgba(212,175,55,.65);
  background-color:rgba(0,0,0,.34);
  box-shadow:0 0 0 3px rgba(212,175,55,.07);
}

.protocol-field select option{
  color:#f5f5f5;
  background:#111;
}

/* Protocol — selector 24 horas */
.protocol-time-selector{
  display:grid;
  grid-template-columns:minmax(72px,1fr) auto minmax(72px,1fr) auto;
  align-items:center;
  gap:.55rem;
}

.protocol-time-selector select{
  width:100%;
  min-width:0;
  min-height:46px;
  padding:.75rem 2rem .75rem .85rem;

  color:var(--white);
  background-color:rgba(0,0,0,.24);

  border:1px solid rgba(255,255,255,.10);
  border-radius:10px;
  outline:none;

  font:inherit;
  font-weight:600;
  text-align:center;
  cursor:pointer;

  transition:
    border-color .18s ease,
    box-shadow .18s ease,
    background .18s ease;
}

.protocol-time-selector select:focus{
  border-color:rgba(212,175,55,.65);
  background-color:rgba(0,0,0,.34);
  box-shadow:0 0 0 3px rgba(212,175,55,.07);
}

.protocol-time-selector select option{
  color:#f5f5f5;
  background:#111;
}

.protocol-time-separator{
  color:var(--gold);
  font-family:"Playfair Display",serif;
  font-size:1.35rem;
  font-weight:600;
}

.protocol-time-hrs{
  color:var(--gold);
  font-size:.72rem;
  font-weight:600;
  letter-spacing:.05em;
  white-space:nowrap;
}

@media(max-width:520px){
  .protocol-time-selector{
    grid-template-columns:minmax(60px,1fr) auto minmax(60px,1fr) auto;
    gap:.35rem;
  }
}

/* Protocol — acciones del momento */
.protocol-moment-actions{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:.65rem;
  flex-wrap:wrap;
}

.protocol-edit-button{
  appearance:none;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:.3rem;

  min-height:30px;
  padding:.35rem .7rem;

  color:rgba(255,255,255,.68);
  background:rgba(255,255,255,.025);

  border:1px solid rgba(255,255,255,.09);
  border-radius:999px;

  font-family:"DM Sans",sans-serif;
  font-size:.62rem;
  font-weight:600;
  letter-spacing:.04em;

  cursor:pointer;

  transition:
    color .18s ease,
    border-color .18s ease,
    background .18s ease;
}

.protocol-edit-button:hover{
  color:var(--gold);
  border-color:rgba(212,175,55,.38);
  background:rgba(212,175,55,.06);
}

.protocol-edit-button:focus-visible{
  outline:none;
  border-color:rgba(212,175,55,.65);
  box-shadow:0 0 0 3px rgba(212,175,55,.07);
}

@media print{
  .protocol-edit-button{
    display:none !important;
  }
}

/* Protocol — eliminar momento */
.protocol-delete-button{
  appearance:none;
  display:inline-flex;
  align-items:center;
  justify-content:center;

  min-height:30px;
  padding:.35rem .7rem;

  color:rgba(255,255,255,.42);
  background:transparent;

  border:1px solid rgba(255,255,255,.07);
  border-radius:999px;

  font-family:"DM Sans",sans-serif;
  font-size:.62rem;
  font-weight:600;
  letter-spacing:.04em;

  cursor:pointer;

  transition:
    color .18s ease,
    border-color .18s ease,
    background .18s ease;
}

.protocol-delete-button:hover{
  color:#e98b8b;
  border-color:rgba(220,90,90,.35);
  background:rgba(220,90,90,.06);
}

.protocol-delete-button:disabled{
  opacity:.45;
  cursor:wait;
}

.protocol-delete-button:focus-visible{
  outline:none;
  border-color:rgba(220,90,90,.55);
  box-shadow:0 0 0 3px rgba(220,90,90,.07);
}

@media print{
  .protocol-delete-button{
    display:none !important;
  }
}

/* Protocol — editor de notas generales */
.protocol-general-notes-heading{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:1rem;
  margin-bottom:1rem;
}

.protocol-general-notes-heading .protocol-section-label{
  margin-bottom:0;
}

.protocol-notes-form{
  margin-top:.5rem;
}

.protocol-notes-form textarea{
  width:100%;
  min-height:140px;
  resize:vertical;

  padding:1rem 1.1rem;

  color:var(--white);
  background:rgba(0,0,0,.28);

  border:1px solid rgba(212,175,55,.24);
  border-radius:10px;

  font-family:"DM Sans",sans-serif;
  font-size:.85rem;
  line-height:1.6;

  transition:
    border-color .18s ease,
    box-shadow .18s ease,
    background .18s ease;
}

.protocol-notes-form textarea:hover{
  border-color:rgba(212,175,55,.38);
}

.protocol-notes-form textarea:focus{
  outline:none;
  border-color:rgba(212,175,55,.7);
  background:rgba(0,0,0,.38);
  box-shadow:0 0 0 3px rgba(212,175,55,.07);
}

.protocol-notes-form textarea::placeholder{
  color:rgba(255,255,255,.28);
}

.protocol-notes-form .protocol-editor-actions{
  margin-top:1rem;
  justify-content:flex-end;
}

@media print{
  #protocol-notes-edit,
  #protocol-notes-form{
    display:none !important;
  }
}

/* Protocol — configuración general */
.protocol-settings-view{
  width:100%;
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:2rem;
}

.protocol-settings-form{
  width:100%;
}

.protocol-settings-heading{
  margin-bottom:1.25rem;
}

.protocol-settings-heading h2{
  margin:.25rem 0 0;
  color:var(--white);
  font-family:"Playfair Display",serif;
  font-size:1.45rem;
  font-weight:600;
}

.protocol-settings-grid{
  display:grid;
  grid-template-columns:minmax(0,2fr) minmax(180px,1fr);
  gap:1rem;
}

.protocol-settings-form .protocol-editor-field{
  margin:0;
}

.protocol-settings-form input,
.protocol-settings-form select{
  width:100%;
  min-height:46px;
  padding:.7rem .85rem;

  color:var(--white);
  background:rgba(0,0,0,.3);

  border:1px solid rgba(212,175,55,.22);
  border-radius:8px;

  font-family:"DM Sans",sans-serif;
  font-size:.82rem;
}

.protocol-settings-form input:focus,
.protocol-settings-form select:focus{
  outline:none;
  border-color:rgba(212,175,55,.7);
  box-shadow:0 0 0 3px rgba(212,175,55,.07);
}

.protocol-settings-form .protocol-editor-actions{
  margin-top:1.25rem;
  justify-content:flex-end;
}

@media(max-width:700px){
  .protocol-settings-view{
    flex-direction:column;
  }

  .protocol-settings-grid{
    grid-template-columns:1fr;
  }

  .protocol-hero-actions{
    width:100%;
    justify-content:flex-start;
  }
}

@media print{
  #protocol-settings-edit,
  #protocol-settings-form{
    display:none !important;
  }

  #protocol-settings-view{
    display:flex !important;
  }
}

/* =========================================================
   402-N — Protocolo operativo / impresión A4
   ========================================================= */

/* Nunca mostrar la plantilla de impresión en pantalla */
.protocol-print-document{
  display:none;
}

@page{
  size:A4 portrait;
  margin:12mm 11mm 13mm;
}

@media print{

  /* Ocultar completamente la interfaz web */
  body *{
    visibility:hidden !important;
  }

  html,
  body{
    margin:0 !important;
    padding:0 !important;
    width:100% !important;
    min-height:auto !important;
    background:#fff !important;
  }

  .protocol-print-document,
  .protocol-print-document *{
    visibility:visible !important;
  }

  .protocol-print-document{
    display:block !important;
    position:absolute;
    left:0;
    top:0;

    width:100%;
    margin:0;
    padding:0;

    background:#fff !important;
    color:#161616 !important;

    font-family:Arial,Helvetica,sans-serif;
    font-size:8.5pt;
    line-height:1.35;

    -webkit-print-color-adjust:exact;
    print-color-adjust:exact;
  }

  /* ---------- Encabezado ---------- */

  .protocol-print-header{
    display:flex;
    align-items:flex-start;
    justify-content:space-between;
    gap:12mm;

    padding-bottom:4mm;
    margin-bottom:4mm;

    border-bottom:1.5px solid #b6922e;
  }

  .protocol-print-brand{
    flex:0 0 43%;
  }

  .protocol-print-brand img{
    display:block;
    width:auto;
    max-width:48mm;
    max-height:18mm;
    object-fit:contain;
    object-position:left center;
  }

  .protocol-print-powered{
    margin-top:1.5mm;

    color:#666 !important;
    font-size:6.5pt;
    font-weight:600;
    letter-spacing:.08em;
    text-transform:uppercase;
  }

  .protocol-print-heading{
    flex:1;
    text-align:right;
  }

  .protocol-print-document-type{
    color:#151515 !important;

    font-family:Georgia,"Times New Roman",serif;
    font-size:15pt;
    font-weight:700;
    line-height:1.15;

    text-transform:uppercase;
  }

  .protocol-print-status{
    display:inline-block;

    margin-top:2mm;
    padding:1mm 2.5mm;

    border:1px solid #b6922e;
    border-radius:2px;

    color:#7c651e !important;
    background:#fff !important;

    font-size:6.5pt;
    font-weight:700;
    letter-spacing:.08em;
    text-transform:uppercase;
  }

  /* ---------- Datos del evento ---------- */

  .protocol-print-event{
    margin-bottom:5mm;
  }

  .protocol-print-event-title{
    margin-bottom:3mm;

    color:#111 !important;

    font-family:Georgia,"Times New Roman",serif;
    font-size:13pt;
    font-weight:700;
    line-height:1.2;
  }

  .protocol-print-event-meta{
    display:grid;
    grid-template-columns:repeat(4,minmax(0,1fr));

    border:1px solid #d8d8d8;
    border-radius:2px;

    background:#fff !important;
  }

  .protocol-print-event-meta > div{
    min-height:12mm;
    padding:2.2mm 2.5mm;

    border-right:1px solid #e0e0e0;
  }

  .protocol-print-event-meta > div:last-child{
    border-right:0;
  }

  .protocol-print-event-meta span{
    display:block;

    margin-bottom:.7mm;

    color:#777 !important;
    font-size:5.8pt;
    font-weight:700;
    letter-spacing:.08em;
    text-transform:uppercase;
  }

  .protocol-print-event-meta strong{
    display:block;

    color:#181818 !important;
    font-size:7.5pt;
    font-weight:600;
    line-height:1.25;
  }

  /* ---------- Títulos de sección ---------- */

  .protocol-print-section-title{
    margin:0 0 2mm;

    color:#8a6d18 !important;

    font-size:6.5pt;
    font-weight:700;
    letter-spacing:.12em;
    text-transform:uppercase;
  }

  /* ---------- Tabla timeline ---------- */

  .protocol-print-timeline{
    margin-bottom:5mm;
  }

  .protocol-print-table{
    width:100%;
    border-collapse:collapse;
    table-layout:fixed;

    border:1px solid #cfcfcf;

    background:#fff !important;
  }

  .protocol-print-table thead{
    display:table-header-group;
  }

  .protocol-print-table th{
    padding:2mm 1.8mm;

    border-right:1px solid #d6d6d6;
    border-bottom:1px solid #bdbdbd;

    background:#f4f4f2 !important;
    color:#555 !important;

    font-size:5.8pt;
    font-weight:700;
    letter-spacing:.06em;
    text-align:left;
    text-transform:uppercase;
  }

  .protocol-print-table th:last-child{
    border-right:0;
  }

  .protocol-print-table td{
    padding:2.4mm 1.8mm;

    vertical-align:top;

    border-right:1px solid #e0e0e0;
    border-bottom:1px solid #dedede;

    color:#222 !important;

    font-size:7pt;
    line-height:1.35;

    overflow-wrap:anywhere;
    word-break:normal;
  }

  .protocol-print-table td:last-child{
    border-right:0;
  }

  .protocol-print-table tbody tr:last-child td{
    border-bottom:0;
  }

  /* Evitar partir un momento entre dos hojas */
  .protocol-print-table tbody tr{
    break-inside:avoid;
    page-break-inside:avoid;
  }

  .protocol-print-table th:nth-child(1),
  .protocol-print-table td:nth-child(1){
    width:5%;
    text-align:center;
  }

  .protocol-print-table th:nth-child(2),
  .protocol-print-table td:nth-child(2){
    width:9%;
  }

  .protocol-print-table th:nth-child(3),
  .protocol-print-table td:nth-child(3){
    width:19%;
  }

  .protocol-print-table th:nth-child(4),
  .protocol-print-table td:nth-child(4){
    width:10%;
  }

  .protocol-print-table th:nth-child(5),
  .protocol-print-table td:nth-child(5){
    width:22%;
  }

  .protocol-print-table th:nth-child(6),
  .protocol-print-table td:nth-child(6){
    width:35%;
  }

  .protocol-print-number{
    color:#8a6d18 !important;
    font-weight:700;
  }

  .protocol-print-time{
    color:#111 !important;
    font-weight:700;
    white-space:nowrap;
  }

  .protocol-print-duration{
    white-space:nowrap;
  }

  .protocol-print-secondary{
    margin-top:.5mm;
    color:#666 !important;
    font-size:6.5pt;
  }

  .protocol-print-item-status{
    display:block;

    margin-top:.8mm;

    color:#8a6d18 !important;

    font-size:5.4pt;
    font-weight:700;
    letter-spacing:.06em;
    text-transform:uppercase;
  }

  .protocol-print-empty{
    padding:7mm !important;
    color:#777 !important;
    text-align:center;
  }

  /* ---------- Notas generales ---------- */

  .protocol-print-notes{
    margin-top:4mm;
    padding:3mm 3.5mm;

    border:1px solid #d7d7d7;
    border-left:2px solid #b6922e;

    background:#fff !important;

    break-inside:avoid;
    page-break-inside:avoid;
  }

  .protocol-print-notes .protocol-print-section-title{
    margin-bottom:1.5mm;
  }

  .protocol-print-notes p{
    margin:0;

    color:#292929 !important;

    font-size:7.3pt;
    line-height:1.45;

    white-space:pre-wrap;
  }

  /* ---------- Pie ---------- */

  .protocol-print-footer{
    display:flex;
    justify-content:space-between;
    align-items:center;

    margin-top:6mm;
    padding-top:2.5mm;

    border-top:1px solid #d7d7d7;

    color:#888 !important;

    font-size:5.8pt;
    letter-spacing:.03em;
  }

  /* Nada de controles de la interfaz */
  .admin-sidebar,
  .admin-topbar,
  .protocol-hero,
  .protocol-timeline,
  .protocol-add-section,
  .protocol-general-notes,
  .protocol-editor-panel,
  .protocol-edit-button,
  .protocol-delete-button,
  .protocol-print-button{
    display:none !important;
  }
}

/* =========================================================
   402-N.4 — Corrección página vacía de impresión
   ========================================================= */

@media print{

  html,
  body{
    height:auto !important;
    min-height:0 !important;
    overflow:visible !important;
  }

  .admin-layout{
    display:block !important;
    width:auto !important;
    height:auto !important;
    min-height:0 !important;
    margin:0 !important;
    padding:0 !important;
  }

  .admin-content{
    display:block !important;
    width:auto !important;
    height:auto !important;
    min-height:0 !important;
    margin:0 !important;
    padding:0 !important;
  }

  #event-protocol-content{
    display:block !important;
    width:auto !important;
    height:auto !important;
    min-height:0 !important;
    margin:0 !important;
    padding:0 !important;
  }

  .protocol-print-document{
    position:static !important;
    width:100% !important;
    height:auto !important;
    min-height:0 !important;
  }
}

/* =========================================================
   402-P.3 — Medición previa y paginación controlada
   ========================================================= */

/*
 * Permite medir el documento antes de abrir la impresión.
 * Se mantiene fuera de pantalla y no altera la interfaz.
 */
.protocol-print-document.protocol-print-measuring{
  display:block !important;
  position:absolute !important;
  left:-10000px !important;
  top:0 !important;
  width:188mm !important;
  margin:0 !important;
  padding:0 !important;
  visibility:hidden !important;

  font-family:Arial,Helvetica,sans-serif;
  font-size:8.5pt;
  line-height:1.35;
}

.protocol-print-document.protocol-print-measuring .protocol-print-table{
  width:100% !important;
  border-collapse:collapse;
  table-layout:fixed;
}

.protocol-print-document.protocol-print-measuring .protocol-print-table th{
  padding:2mm 1.8mm;
}

.protocol-print-document.protocol-print-measuring .protocol-print-table td{
  padding:2.4mm 1.8mm;
  font-size:7pt;
  line-height:1.35;
}

.protocol-print-document.protocol-print-measuring .protocol-print-table th:nth-child(1),
.protocol-print-document.protocol-print-measuring .protocol-print-table td:nth-child(1){
  width:5%;
}

.protocol-print-document.protocol-print-measuring .protocol-print-table th:nth-child(2),
.protocol-print-document.protocol-print-measuring .protocol-print-table td:nth-child(2){
  width:9%;
}

.protocol-print-document.protocol-print-measuring .protocol-print-table th:nth-child(3),
.protocol-print-document.protocol-print-measuring .protocol-print-table td:nth-child(3){
  width:19%;
}

.protocol-print-document.protocol-print-measuring .protocol-print-table th:nth-child(4),
.protocol-print-document.protocol-print-measuring .protocol-print-table td:nth-child(4){
  width:10%;
}

.protocol-print-document.protocol-print-measuring .protocol-print-table th:nth-child(5),
.protocol-print-document.protocol-print-measuring .protocol-print-table td:nth-child(5){
  width:22%;
}

.protocol-print-document.protocol-print-measuring .protocol-print-table th:nth-child(6),
.protocol-print-document.protocol-print-measuring .protocol-print-table td:nth-child(6){
  width:35%;
}

/* =========================================================
   402-P.3C — Páginas A4 explícitas
   ========================================================= */

@media print{

  /*
   * Cuando JS haya preparado la paginación,
   * ocultar los hijos originales del documento.
   */
  .protocol-print-document.protocol-print-paginated > *{
    display:none !important;
  }

  /*
   * Mostrar exclusivamente el contenedor
   * de páginas generado para impresión.
   */
  .protocol-print-document.protocol-print-paginated
  > .protocol-print-pages{
    display:block !important;
    visibility:visible !important;
  }

  .protocol-print-pages,
  .protocol-print-pages *{
    visibility:visible !important;
  }

  .protocol-print-page{
    display:block !important;
    width:100% !important;
    margin:0 !important;
    padding:0 !important;

    break-after:page;
    page-break-after:always;
  }

  /*
   * La última página nunca fuerza
   * una hoja adicional.
   */
  .protocol-print-page:last-child{
    break-after:auto;
    page-break-after:auto;
  }

  /*
   * Cada página contiene una tabla independiente.
   * Ya no dependemos de que Safari repita THEAD.
   */
  .protocol-print-page .protocol-print-table{
    display:table !important;
    width:100% !important;
    border-collapse:collapse !important;
    table-layout:fixed !important;
  }

  .protocol-print-page .protocol-print-table thead{
    display:table-header-group !important;
  }

  .protocol-print-page .protocol-print-table tbody{
    display:table-row-group !important;
  }

  .protocol-print-page .protocol-print-table tr{
    break-inside:avoid !important;
    page-break-inside:avoid !important;
  }

  /* ---------- Encabezado de continuación ---------- */

  .protocol-print-continuation{
    display:flex;
    justify-content:space-between;
    align-items:flex-end;
    gap:8mm;

    margin:0 0 4mm;
    padding:0 0 3mm;

    border-bottom:1.5px solid #b6922e;
  }

  .protocol-print-continuation strong{
    color:#151515 !important;

    font-family:Georgia,"Times New Roman",serif;
    font-size:10pt;
    line-height:1.15;
    text-transform:uppercase;
  }

  .protocol-print-continuation span{
    color:#8a6d18 !important;

    font-size:6pt;
    font-weight:700;
    letter-spacing:.08em;
    text-align:right;
    text-transform:uppercase;
  }

}

/* =========================================================
   404-MP.5D — Impresión A4 Perfil Musical
   ========================================================= */

.music-print-document{
  display:none;
}

@page{
  size:A4 portrait;
  margin:12mm 11mm 13mm;
}

@media print{

  body *{
    visibility:hidden !important;
  }

  html,
  body{
    margin:0 !important;
    padding:0 !important;
    width:100% !important;
    min-height:auto !important;
    background:#fff !important;
  }

  .music-print-document,
  .music-print-document *{
    visibility:visible !important;
  }

  .music-print-document{
    display:block !important;
    position:static !important;
    width:100% !important;
    margin:0 !important;
    padding:0 !important;
    background:#fff !important;
    color:#161616 !important;
    font-family:Arial,Helvetica,sans-serif;
    font-size:8.5pt;
    line-height:1.35;
    -webkit-print-color-adjust:exact;
    print-color-adjust:exact;
  }

  .music-print-header{
    display:flex;
    align-items:flex-start;
    justify-content:space-between;
    gap:10mm;
    padding-bottom:4mm;
    margin-bottom:5mm;
    border-bottom:1.5px solid #b6922e;
  }

  .music-print-brand{
    flex:0 0 42%;
  }

  .music-print-brand img{
    display:block;
    width:auto;
    max-width:48mm;
    max-height:18mm;
    object-fit:contain;
    object-position:left center;
  }

  .music-print-brand div{
    margin-top:1.5mm;
    color:#666 !important;
    font-size:6.5pt;
    font-weight:600;
    letter-spacing:.08em;
    text-transform:uppercase;
  }

  .music-print-heading{
    flex:1;
    text-align:right;
  }

  .music-print-heading span{
    display:block;
    color:#8a6b1f !important;
    font-size:7pt;
    font-weight:700;
    letter-spacing:.12em;
    text-transform:uppercase;
  }

  .music-print-heading strong{
    display:block;
    margin-top:1mm;
    color:#111 !important;
    font-size:16pt;
    line-height:1.1;
  }

  .music-print-heading small{
    display:block;
    margin-top:1.5mm;
    color:#555 !important;
    font-size:7pt;
  }

  .music-print-section{
    margin:0 0 5mm;
    padding:0 0 4mm;
    border-bottom:1px solid #ddd;
    break-inside:avoid;
    page-break-inside:avoid;
  }

  .music-print-section h2{
    margin:0 0 3mm;
    color:#8a6b1f !important;
    font-size:9pt;
    font-weight:700;
    letter-spacing:.04em;
    text-transform:uppercase;
  }

  .music-print-section h3{
    margin:0 0 2mm;
    color:#222 !important;
    font-size:8pt;
  }

  .music-print-grid{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:3mm 6mm;
  }

  .music-print-grid > div{
    padding:2mm 0;
  }

  .music-print-grid span,
  .music-print-text span{
    display:block;
    margin-bottom:.8mm;
    color:#666 !important;
    font-size:6.5pt;
    font-weight:700;
    text-transform:uppercase;
    letter-spacing:.05em;
  }

  .music-print-grid strong{
    color:#111 !important;
    font-size:8.5pt;
  }

  .music-print-text{
    margin-top:3mm;
  }

  .music-print-text p{
    margin:0;
    color:#222 !important;
  }

  .music-print-chips{
    display:flex;
    flex-wrap:wrap;
    gap:1.5mm;
  }

  .music-print-chip{
    display:inline-block;
    padding:1.2mm 2.2mm;
    border:1px solid #cfcfcf;
    border-radius:999px;
    background:#fff !important;
    color:#222 !important;
    font-size:7pt;
  }

  .music-print-total{
    margin-top:2mm;
    color:#555 !important;
    font-size:7pt;
  }

  .music-print-two-columns{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:6mm;
  }

  .music-print-song,
  .music-print-playlist{
    margin-bottom:2.5mm;
    padding:2.5mm;
    border:1px solid #ddd;
    border-radius:2mm;
    break-inside:avoid;
    page-break-inside:avoid;
  }

  .music-print-song strong,
  .music-print-playlist strong{
    display:block;
    color:#111 !important;
    font-size:8pt;
  }

  .music-print-song span,
  .music-print-playlist span{
    display:block;
    margin-top:.5mm;
    color:#444 !important;
    font-size:7pt;
  }

  .music-print-song small,
  .music-print-playlist small{
    display:block;
    margin-top:1mm;
    color:#666 !important;
    font-size:6.5pt;
  }

  .music-print-url{
    margin-top:1.5mm;
    color:#333 !important;
    font-size:6pt;
    word-break:break-all;
  }

  .music-print-empty{
    color:#777 !important;
    font-style:italic;
  }

  .music-print-footer{
    display:flex;
    justify-content:space-between;
    gap:8mm;
    margin-top:5mm;
    padding-top:3mm;
    border-top:1px solid #bbb;
    color:#666 !important;
    font-size:6.5pt;
  }

  .admin-sidebar,
  .admin-topbar,
  .music-profile-page{
    display:none !important;
  }
}

/* =========================================================
   MiBodaPro — DJ Logistics / Confirmación operativa
   ========================================================= */

.dj-logistics{
  margin-bottom:2rem;
}

.dj-logistics-pending{
  position:relative;
  overflow:hidden;
  padding:1.6rem;
  border:1px solid rgba(231,76,60,.42);
  border-radius:12px;
  background:
    linear-gradient(
      135deg,
      rgba(231,76,60,.11),
      rgba(231,76,60,.035) 55%,
      rgba(255,255,255,.02)
    );
  box-shadow:0 10px 30px rgba(0,0,0,.18);
}

.dj-logistics-pending::before{
  content:'';
  position:absolute;
  top:0;
  left:0;
  width:4px;
  height:100%;
  background:var(--danger);
}

.dj-logistics-alert-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:1.25rem;
  margin-bottom:1.35rem;
}

.dj-logistics-alert-title{
  display:flex;
  gap:.85rem;
  align-items:flex-start;
}

.dj-logistics-alert-icon{
  display:flex;
  align-items:center;
  justify-content:center;
  flex:0 0 38px;
  width:38px;
  height:38px;
  border-radius:50%;
  background:rgba(231,76,60,.14);
  font-size:1.1rem;
}

.dj-logistics-alert-title h3{
  margin:0 0 .35rem;
  color:var(--white);
  font-size:1.05rem;
}

.dj-logistics-alert-title p{
  margin:0;
  max-width:720px;
  color:var(--white2);
  font-size:.78rem;
  line-height:1.55;
}

.dj-logistics-badge{
  flex:0 0 auto;
  padding:.42rem .7rem;
  border:1px solid rgba(231,76,60,.32);
  border-radius:999px;
  color:#ff8d83;
  background:rgba(231,76,60,.08);
  font-size:.62rem;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.08em;
}

.dj-logistics-form{
  display:grid;
  gap:1.25rem;
}

.dj-logistics-question{
  padding-top:1.1rem;
  border-top:1px solid rgba(255,255,255,.08);
}

.dj-logistics-label{
  display:block;
  margin-bottom:.65rem;
  color:var(--white);
  font-size:.78rem;
  font-weight:600;
}

.dj-logistics-choice-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:.75rem;
}

.dj-logistics-choice{
  display:flex;
  align-items:center;
  gap:.6rem;
  padding:.8rem .9rem;
  border:1px solid var(--line);
  border-radius:8px;
  background:rgba(255,255,255,.025);
  color:var(--white2);
  font-size:.78rem;
  cursor:pointer;
  transition:border-color .2s var(--ease),background .2s var(--ease);
}

.dj-logistics-choice:hover{
  border-color:rgba(212,175,55,.48);
  background:rgba(212,175,55,.035);
}

.dj-logistics-choice input{
  accent-color:var(--gold);
}

.dj-logistics-fields{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:1rem;
}

.dj-logistics-field label{
  display:block;
  margin-bottom:.4rem;
  color:var(--white2);
  font-size:.7rem;
  font-weight:600;
}

.dj-logistics-field input[type="time"],
.dj-logistics-field input[type="text"]{
  width:100%;
  padding:.72rem .8rem;
  border:1px solid var(--line);
  border-radius:7px;
  background:var(--black);
  color:var(--white);
  font-family:inherit;
  font-size:.82rem;
}

.dj-logistics-field input:focus{
  outline:none;
  border-color:rgba(212,175,55,.65);
}

.dj-logistics-equipment{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:.65rem;
}

.dj-logistics-equipment label{
  display:flex;
  align-items:center;
  gap:.55rem;
  padding:.72rem .8rem;
  border:1px solid var(--line);
  border-radius:8px;
  background:rgba(255,255,255,.02);
  color:var(--white2);
  font-size:.72rem;
  cursor:pointer;
}

.dj-logistics-equipment input{
  accent-color:var(--gold);
}

.dj-logistics-actions{
  display:flex;
  align-items:center;
  gap:.8rem;
  flex-wrap:wrap;
  padding-top:.3rem;
}

.dj-logistics-primary{
  padding:.75rem 1.15rem;
  border:1px solid var(--gold);
  border-radius:7px;
  background:var(--gold);
  color:#111;
  font-family:inherit;
  font-size:.72rem;
  font-weight:700;
  cursor:pointer;
}

.dj-logistics-primary:disabled{
  opacity:.55;
  cursor:not-allowed;
}

.dj-logistics-secondary{
  padding:.7rem 1rem;
  border:1px solid var(--line);
  border-radius:7px;
  background:transparent;
  color:var(--white2);
  font-family:inherit;
  font-size:.72rem;
  cursor:pointer;
}

.dj-logistics-message{
  display:none;
  padding:.7rem .8rem;
  border-radius:7px;
  font-size:.72rem;
}

.dj-logistics-message.show{
  display:block;
}

.dj-logistics-message.error{
  color:var(--danger);
  border:1px solid rgba(231,76,60,.2);
  background:rgba(231,76,60,.08);
}

.dj-logistics-message.success{
  color:var(--success);
  border:1px solid rgba(46,204,113,.2);
  background:rgba(46,204,113,.08);
}


/* Estado confirmado / modificado */

.dj-logistics-confirmed{
  padding:1.35rem 1.5rem;
  border:1px solid rgba(46,204,113,.22);
  border-radius:10px;
  background:rgba(46,204,113,.035);
}

.dj-logistics-confirmed-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:1rem;
  margin-bottom:1rem;
}

.dj-logistics-confirmed-title{
  display:flex;
  align-items:center;
  gap:.65rem;
}

.dj-logistics-confirmed-title h3{
  margin:0;
  color:var(--white);
  font-size:.95rem;
}

.dj-logistics-check{
  color:var(--success);
  font-size:1.05rem;
}

.dj-logistics-status{
  padding:.38rem .62rem;
  border:1px solid rgba(46,204,113,.2);
  border-radius:999px;
  color:var(--success);
  font-size:.58rem;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.08em;
}

.dj-logistics-summary-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:1rem;
  margin-bottom:1rem;
}

.dj-logistics-summary-label{
  display:block;
  margin-bottom:.25rem;
  color:var(--gold);
  font-size:.6rem;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.08em;
}

.dj-logistics-summary-value{
  color:var(--white);
  font-size:.8rem;
}

.dj-logistics-equipment-summary{
  display:flex;
  gap:.45rem;
  flex-wrap:wrap;
  margin-bottom:1rem;
}

.dj-logistics-equipment-chip{
  padding:.35rem .55rem;
  border:1px solid var(--line);
  border-radius:999px;
  color:var(--white2);
  background:rgba(255,255,255,.025);
  font-size:.62rem;
}

.dj-logistics-edit{
  border:0;
  background:transparent;
  color:var(--gold);
  padding:0;
  font-family:inherit;
  font-size:.68rem;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.07em;
  cursor:pointer;
}

.dj-logistics-hidden{
  display:none !important;
}

@media (max-width:900px){
  .dj-logistics-equipment{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }

  .dj-logistics-summary-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}

@media (max-width:650px){
  .dj-logistics-alert-head,
  .dj-logistics-confirmed-head{
    flex-direction:column;
    align-items:flex-start;
  }

  .dj-logistics-choice-grid,
  .dj-logistics-fields,
  .dj-logistics-equipment,
  .dj-logistics-summary-grid{
    grid-template-columns:1fr;
  }

  .dj-logistics-pending,
  .dj-logistics-confirmed{
    padding:1.15rem;
  }
}

/* =========================================================
   405-E.10 — DJ Dashboard / alerta logística pendiente
   ========================================================= */

.dj-dashboard-logistics-alert{
  margin-bottom:1.5rem;
}

.dj-dashboard-logistics-list{
  display:grid;
  gap:.75rem;
}

.dj-dashboard-logistics-event{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:1.25rem;
  padding:1rem 1.1rem;
  border:1px solid rgba(255,255,255,.09);
  border-radius:9px;
  background:rgba(0,0,0,.16);
}

.dj-dashboard-logistics-event-main{
  min-width:0;
}

.dj-dashboard-logistics-event-main strong{
  display:block;
  margin-bottom:.4rem;
  color:var(--white);
  font-size:.9rem;
}

.dj-dashboard-logistics-meta{
  display:flex;
  flex-wrap:wrap;
  gap:.35rem 1rem;
  color:var(--white2);
  font-size:.7rem;
  line-height:1.5;
}

.dj-dashboard-logistics-action{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  flex:0 0 auto;
  text-decoration:none;
  white-space:nowrap;
}

@media (max-width:650px){
  .dj-dashboard-logistics-event{
    flex-direction:column;
    align-items:stretch;
  }

  .dj-dashboard-logistics-action{
    width:100%;
  }
}


/* =========================================================
   405-F.3 — Logística DJ / vista ADMIN y PLANNER
   ========================================================= */

.dj-management-logistics-list{
  display:grid;
  gap:1rem;
  margin-bottom:2rem;
}

.dj-management-logistics-card{
  position:relative;
  padding:1.25rem;
  border:1px solid rgba(255,255,255,.09);
  border-radius:10px;
  background:rgba(255,255,255,.025);
  overflow:hidden;
}

.dj-management-logistics-card::before{
  content:"";
  position:absolute;
  top:0;
  bottom:0;
  left:0;
  width:3px;
  background:rgba(255,255,255,.15);
}

.dj-management-logistics-card.is-confirmed::before{
  background:#6fa87a;
}

.dj-management-logistics-card.is-pending::before{
  background:#c99a45;
}

.dj-management-logistics-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:1rem;
  margin-bottom:1rem;
}

.dj-management-logistics-head h4{
  margin:0 0 .25rem;
  color:var(--white);
  font-size:1rem;
}

.dj-management-logistics-head p{
  margin:0;
  color:var(--white2);
  font-size:.72rem;
}

.dj-management-logistics-status{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  flex:0 0 auto;
  padding:.35rem .65rem;
  border-radius:999px;
  font-size:.62rem;
  font-weight:700;
  letter-spacing:.06em;
  text-transform:uppercase;
  border:1px solid rgba(255,255,255,.12);
}

.dj-management-logistics-status.is-confirmed{
  color:#bfe0c5;
  background:rgba(91,145,101,.12);
  border-color:rgba(111,168,122,.3);
}

.dj-management-logistics-status.is-pending{
  color:#e8c37d;
  background:rgba(201,154,69,.1);
  border-color:rgba(201,154,69,.28);
}

.dj-management-logistics-pending{
  margin:.25rem 0 1rem;
  padding:.85rem 1rem;
  border:1px solid rgba(201,154,69,.22);
  border-radius:8px;
  background:rgba(201,154,69,.07);
  color:#e8c37d;
  font-size:.78rem;
  font-weight:600;
}

@media (max-width:650px){
  .dj-management-logistics-head{
    flex-direction:column;
  }

  .dj-management-logistics-status{
    align-self:flex-start;
  }
}

/* =========================================================
   MiBodaPro — Perfil de usuario / Perfil profesional DJ
   405-G
   ========================================================= */

.profile-page{
  max-width:1100px;
  margin:0 auto;
  padding-bottom:3rem;
}

.profile-section{
  margin-bottom:1.5rem;
  padding:1.75rem;
  border:1px solid rgba(255,255,255,.08);
  border-radius:18px;
  background:rgba(255,255,255,.025);
}

.profile-section-heading{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:1.5rem;
  margin-bottom:1.75rem;
}

.profile-section-heading > div:first-child{
  display:flex;
  align-items:flex-start;
  gap:1rem;
}

.profile-section-heading h2{
  margin:.1rem 0 .35rem;
  color:var(--white);
  font-family:'Playfair Display',serif;
  font-size:1.65rem;
}

.profile-section-heading p{
  margin:0;
  max-width:680px;
  color:var(--white2);
  line-height:1.55;
}

.profile-eyebrow{
  margin:0 0 .2rem !important;
  color:var(--gold) !important;
  font-size:.68rem;
  font-weight:700;
  letter-spacing:.14em;
}

.profile-section-icon{
  display:flex;
  align-items:center;
  justify-content:center;
  flex:0 0 46px;
  width:46px;
  height:46px;
  border:1px solid rgba(212,175,55,.28);
  border-radius:13px;
  background:rgba(212,175,55,.07);
  font-size:1.2rem;
}

.profile-form-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:1rem 1.25rem;
}

.profile-textarea{
  min-height:110px;
  resize:vertical;
  line-height:1.5;
}

.profile-help{
  display:block;
  margin-top:.4rem;
  color:var(--white2);
  font-size:.72rem;
  line-height:1.4;
}

.profile-actions{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:1rem;
  margin-top:1.5rem;
  padding-top:1.25rem;
  border-top:1px solid rgba(255,255,255,.07);
}

.profile-status{
  flex:0 0 auto;
  padding:.5rem .8rem;
  border:1px solid rgba(212,175,55,.25);
  border-radius:999px;
  background:rgba(212,175,55,.07);
  color:var(--gold);
  font-size:.72rem;
  font-weight:700;
  letter-spacing:.04em;
}

.dj-professional-profile[hidden]{
  display:none !important;
}

.dj-profile-block{
  padding:1.35rem 0;
  border-top:1px solid rgba(255,255,255,.07);
}

.dj-profile-block:first-of-type{
  padding-top:0;
  border-top:0;
}

.dj-profile-block-heading{
  display:flex;
  align-items:flex-start;
  gap:.9rem;
  margin-bottom:1.25rem;
}

.dj-profile-block-heading > span{
  display:flex;
  align-items:center;
  justify-content:center;
  flex:0 0 34px;
  width:34px;
  height:34px;
  border:1px solid rgba(212,175,55,.32);
  border-radius:50%;
  color:var(--gold);
  font-size:.68rem;
  font-weight:700;
}

.dj-profile-block-heading h3{
  margin:0 0 .25rem;
  color:var(--white);
  font-size:1rem;
}

.dj-profile-block-heading p{
  margin:0;
  color:var(--white2);
  font-size:.82rem;
  line-height:1.45;
}

.profile-choice-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:1rem;
}

.profile-choice{
  display:flex;
  align-items:flex-start;
  gap:.85rem;
  padding:1rem;
  border:1px solid rgba(255,255,255,.08);
  border-radius:13px;
  background:rgba(0,0,0,.12);
  cursor:pointer;
}

.profile-choice:hover{
  border-color:rgba(212,175,55,.24);
}

.profile-choice input{
  width:18px;
  height:18px;
  margin-top:.1rem;
  accent-color:var(--gold);
}

.profile-choice span{
  display:block;
}

.profile-choice strong{
  display:block;
  margin-bottom:.2rem;
  color:var(--white);
  font-size:.88rem;
}

.profile-choice small{
  display:block;
  color:var(--white2);
  font-size:.75rem;
  line-height:1.4;
}

.profile-actions-dj{
  justify-content:space-between;
}

.profile-actions-dj > div{
  display:flex;
  flex-direction:column;
  gap:.2rem;
}

.profile-actions-dj strong{
  color:var(--white);
  font-size:.88rem;
}

.profile-actions-dj span{
  color:var(--white2);
  font-size:.75rem;
}

@media (max-width:800px){
  .profile-form-grid,
  .profile-choice-grid{
    grid-template-columns:1fr;
  }

  .profile-section-heading{
    flex-direction:column;
  }

  .profile-actions-dj{
    align-items:stretch;
    flex-direction:column;
  }

  .profile-actions-dj .btn-gold{
    width:100%;
  }
}

@media (max-width:600px){
  .profile-section{
    padding:1.25rem;
  }

  .profile-section-heading > div:first-child{
    gap:.75rem;
  }

  .profile-section-icon{
    width:40px;
    height:40px;
    flex-basis:40px;
  }

  .profile-section-heading h2{
    font-size:1.4rem;
  }
}

/* =========================================================
   405-H.4B.2 — Plantilla sugerida de protocolo/programa
   ========================================================= */

.protocol-template-actions{
  margin-bottom:.75rem;
}

.protocol-template-actions #protocol-template-apply{
  width:100%;
  min-height:56px;

  display:flex;
  align-items:center;
  justify-content:center;
  gap:.5rem;

  padding:.85rem 1.25rem;

  border:1px solid rgba(212,175,55,.72);
  border-radius:14px;

  color:#111 !important;
  background:
    linear-gradient(
      135deg,
      #d4af37,
      #f0d77a
    ) !important;

  font:inherit;
  font-size:.78rem;
  font-weight:700;
  letter-spacing:.04em;

  cursor:pointer;

  box-shadow:
    0 8px 24px rgba(212,175,55,.10);

  transition:
    background .2s ease,
    border-color .2s ease,
    transform .2s ease,
    box-shadow .2s ease;
}

.protocol-template-actions #protocol-template-apply:hover:not(:disabled){
  transform:translateY(-1px);

  border-color:#f0d77a;

  box-shadow:
    0 10px 28px rgba(212,175,55,.16);
}

.protocol-template-actions #protocol-template-apply:disabled{
  opacity:.6;
  cursor:wait;
  transform:none;
}

#protocol-template-message{
  margin:.65rem 0 0;
}

@media(max-width:760px){
  .protocol-template-actions #protocol-template-apply{
    width:100%;
  }
}


/* =========================================================
   405-H.5E — ADMIN DJ DETAIL
   ========================================================= */

.dj-detail-shell {
  max-width: 1280px;
  margin: 0 auto;
}

.dj-detail-back {
  margin-bottom: 1.5rem;
}

.dj-hero {
  position: relative;
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 2rem;
  padding: 2rem;
  margin-bottom: 1.5rem;
  background:
    radial-gradient(
      circle at top right,
      rgba(212,175,55,.12),
      transparent 38%
    ),
    var(--black2);
  border: 1px solid var(--line);
  border-radius: 12px;
}

.dj-hero::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 4px;
  height: 100%;
  background: var(--gold);
}

.dj-hero-main {
  display: flex;
  align-items: center;
  gap: 1.25rem;
  min-width: 0;
}

.dj-avatar {
  flex: 0 0 72px;
  width: 72px;
  height: 72px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(212,175,55,.10);
  border: 1px solid rgba(212,175,55,.35);
  font-size: 1.9rem;
}

.dj-hero-copy {
  min-width: 0;
}

.dj-hero-label {
  margin: 0 0 .35rem;
  color: var(--gold);
  font-size: .65rem;
  font-weight: 700;
  letter-spacing: .16em;
  text-transform: uppercase;
}

.dj-hero h1 {
  margin: 0;
  font-size: 2rem;
  color: var(--white);
}

.dj-hero-real-name {
  margin: .35rem 0 0;
  color: var(--white2);
  font-size: .9rem;
}

.dj-hero-email {
  margin: .25rem 0 0;
  color: var(--white2);
  opacity: .8;
  font-size: .8rem;
}

.dj-status {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: .45rem;
  padding: .5rem .8rem;
  border-radius: 999px;
  font-size: .7rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.dj-status.active {
  background: rgba(46,204,113,.12);
  color: var(--success);
  border: 1px solid rgba(46,204,113,.25);
}

.dj-status.inactive {
  background: rgba(160,160,160,.10);
  color: var(--white2);
  border: 1px solid var(--line);
}

.dj-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1.5rem;
  margin-bottom: 1.5rem;
}

.dj-card {
  background: var(--black2);
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 1.5rem;
}

.dj-card-wide {
  margin-bottom: 1.5rem;
}

.dj-card-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding-bottom: 1rem;
  margin-bottom: 1rem;
  border-bottom: 1px solid var(--line);
}

.dj-card-header h2,
.dj-card-header h3 {
  color: var(--white);
  font-size: 1.05rem;
}

.dj-card-kicker {
  margin: 0 0 .2rem;
  color: var(--gold);
  font-size: .6rem;
  font-weight: 700;
  letter-spacing: .15em;
  text-transform: uppercase;
}

.dj-info-list {
  display: grid;
  gap: 0;
}

.dj-info-row {
  display: grid;
  grid-template-columns: 145px minmax(0, 1fr);
  gap: 1rem;
  align-items: start;
  padding: .7rem 0;
  border-bottom: 1px solid var(--line-dark);
}

.dj-info-row:last-child {
  border-bottom: none;
}

.dj-info-label {
  color: var(--white2);
  font-size: .72rem;
}

.dj-info-value {
  color: var(--white);
  font-size: .85rem;
  word-break: break-word;
}

.dj-professional-stats {
  display: grid;
  grid-template-columns: repeat(3, minmax(0,1fr));
  gap: 1rem;
  margin-bottom: 1.5rem;
}

.dj-stat {
  padding: 1rem;
  background: var(--black);
  border: 1px solid var(--line);
  border-radius: 8px;
}

.dj-stat-label {
  display: block;
  margin-bottom: .35rem;
  color: var(--white2);
  font-size: .65rem;
  text-transform: uppercase;
  letter-spacing: .08em;
}

.dj-stat-value {
  color: var(--gold);
  font-family: 'Playfair Display', serif;
  font-size: 1.15rem;
}

.dj-bio {
  padding: 1rem 0 1.25rem;
  color: var(--white2);
  font-size: .88rem;
  line-height: 1.7;
}

.dj-subsection {
  padding-top: 1rem;
  margin-top: 1rem;
  border-top: 1px solid var(--line);
}

.dj-subsection-title {
  margin: 0 0 .7rem;
  color: var(--white2);
  font-size: .65rem;
  font-weight: 700;
  letter-spacing: .10em;
  text-transform: uppercase;
}

.dj-chip-list {
  display: flex;
  flex-wrap: wrap;
  gap: .5rem;
}

.dj-chip {
  display: inline-flex;
  align-items: center;
  padding: .38rem .65rem;
  background: rgba(212,175,55,.07);
  border: 1px solid rgba(212,175,55,.18);
  border-radius: 999px;
  color: var(--white);
  font-size: .7rem;
}

.dj-links {
  display: flex;
  flex-wrap: wrap;
  gap: .5rem;
}

.dj-link {
  display: inline-flex;
  align-items: center;
  padding: .55rem .8rem;
  border: 1px solid var(--line);
  border-radius: 5px;
  color: var(--white2);
  font-size: .75rem;
  transition: all .2s var(--ease);
}

.dj-link:hover {
  border-color: var(--gold);
  color: var(--gold);
}

.dj-events {
  display: grid;
  gap: .8rem;
}

.dj-event-card {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.25rem;
  padding: 1rem 1.1rem;
  background: var(--black);
  border: 1px solid var(--line);
  border-radius: 8px;
  transition: all .2s var(--ease);
}

.dj-event-card:hover {
  border-color: rgba(212,175,55,.55);
  transform: translateY(-1px);
}

.dj-event-title {
  margin: 0 0 .3rem;
  color: var(--white);
  font-size: .9rem;
  font-weight: 600;
}

.dj-event-secondary {
  margin: .15rem 0;
  color: var(--white2);
  font-size: .75rem;
}

.dj-event-meta {
  display: flex;
  align-items: center;
  gap: .5rem;
  flex: 0 0 auto;
}

.dj-empty {
  padding: 1.5rem;
  text-align: center;
  color: var(--white2);
  background: var(--black);
  border: 1px dashed var(--line);
  border-radius: 8px;
  font-size: .82rem;
}

@media (max-width: 1000px) {
  .dj-grid {
    grid-template-columns: 1fr;
  }

  .dj-professional-stats {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 700px) {
  .dj-hero {
    align-items: flex-start;
    flex-direction: column;
  }

  .dj-hero-main {
    align-items: flex-start;
  }

  .dj-avatar {
    width: 56px;
    height: 56px;
    flex-basis: 56px;
  }

  .dj-hero h1 {
    font-size: 1.45rem;
  }

  .dj-info-row {
    grid-template-columns: 1fr;
    gap: .2rem;
  }

  .dj-event-card {
    align-items: flex-start;
    flex-direction: column;
  }
}
