:root{--green:#26c900;--darkgreen:#158500;--lime:#8ee000;--brown:#4f3a36;--white:#fff;--bg:#f4f6f4;--text:#242424;--muted:#6b7280;--danger:#bd2424;--shadow:0 18px 50px rgba(0,0,0,.25)}
*{box-sizing:border-box;margin:0;padding:0}body{font-family:Arial,Helvetica,sans-serif;color:var(--text);background:var(--bg)}button,input,select,textarea{font:inherit}button{border:0}.hidden{display:none!important}.hidden-block{display:none}.splash{position:fixed;inset:0;z-index:1000;background:linear-gradient(145deg,#fff,#efffe9);display:flex;flex-direction:column;align-items:center;justify-content:center;transition:.7s}.splash img{width:min(260px,70vw);animation:pop .8s}.splash.fade{opacity:0;visibility:hidden}.loader{width:42px;height:42px;border:4px solid #d9f7d2;border-top-color:var(--green);border-radius:50%;animation:spin .8s linear infinite;margin-top:24px}.hero{min-height:100vh;background:url('/assets/conjunto.jpg') center/cover no-repeat;display:grid;place-items:center;padding:20px;position:relative}.overlay{position:absolute;inset:0;background:linear-gradient(135deg,rgba(0,0,0,.67),rgba(20,90,10,.25))}.card{background:rgba(255,255,255,.95);border-radius:24px;box-shadow:var(--shadow)}.welcome{position:relative;z-index:1;width:min(520px,100%);padding:34px;text-align:center}.small-logo{width:140px;max-width:45%;margin-bottom:15px}.welcome h1,.login-card h1{color:var(--brown);font-size:clamp(1.8rem,5vw,2.6rem);margin-bottom:10px}.welcome p{color:var(--muted);margin-bottom:25px}.welcome small{display:block;color:var(--muted);margin-top:18px;line-height:1.4}.btn{min-height:50px;padding:12px 18px;border-radius:12px;font-weight:700;cursor:pointer;transition:.2s;width:100%}.btn:hover{transform:translateY(-1px)}.primary{background:linear-gradient(135deg,var(--green),var(--darkgreen));color:#fff;margin-bottom:10px}.secondary{background:#fff;color:var(--brown);border:2px solid var(--brown)}.add{background:#eefbe9;color:var(--darkgreen);border:1px dashed var(--darkgreen);margin-top:12px}.page{min-height:100vh;background:linear-gradient(180deg,#ecf8e8,#f8f8f8)}.topbar{height:74px;background:#fff;box-shadow:0 3px 16px rgba(0,0,0,.08);display:flex;align-items:center;padding:10px 4vw;gap:12px;position:sticky;top:0;z-index:20}.topbar img{height:54px}.topbar div{display:flex;flex-direction:column}.topbar span{font-size:.8rem;color:var(--muted)}.link-btn{margin-left:auto;background:none;color:var(--darkgreen);font-weight:700;cursor:pointer}.form-shell{width:min(900px,94%);margin:28px auto;background:#fff;border-radius:20px;padding:28px;box-shadow:0 12px 35px rgba(0,0,0,.09)}.progress-text{display:flex;justify-content:space-between;color:var(--muted);font-size:.86rem;margin-bottom:7px}.progress{height:9px;background:#e6e7e6;border-radius:99px;overflow:hidden;margin-bottom:28px}.progress div{height:100%;width:17%;background:linear-gradient(90deg,var(--green),var(--lime));transition:.25s}.step{display:none}.step.active{display:block;animation:fadein .25s}.step h2{color:var(--brown);margin-bottom:8px}.hint{color:var(--muted);margin-bottom:20px}.grid{display:grid;gap:16px}.grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}label{display:flex;flex-direction:column;gap:7px;font-weight:700;font-size:.92rem}label span{font-weight:400;color:var(--muted)}input,select,textarea{width:100%;padding:12px 13px;border:1px solid #d2d6d2;border-radius:10px;background:#fff;outline:none}input:focus,select:focus,textarea:focus{border-color:var(--green);box-shadow:0 0 0 3px rgba(38,201,0,.12)}.check-row{display:flex;flex-direction:row;align-items:center;font-weight:500;margin:12px 0}.check-row input{width:auto}.repeat-card{border:1px solid #dfe5de;border-radius:14px;padding:18px;margin:14px 0;background:#fbfdfb;position:relative}.repeat-card h3{color:var(--darkgreen);margin-bottom:14px}.remove-btn{position:absolute;right:12px;top:12px;width:auto;min-height:auto;padding:7px 10px;background:#ffeaea;color:var(--danger);border-radius:8px;cursor:pointer}.form-actions{display:flex;gap:12px;justify-content:flex-end;margin-top:28px}.form-actions .btn{width:auto;min-width:160px}.consent{border-top:1px solid #e5e7e5;margin-top:25px;padding-top:15px}.modal{position:fixed;inset:0;background:rgba(0,0,0,.65);display:grid;place-items:center;padding:18px;z-index:2000}.modal-card{background:#fff;border-radius:20px;padding:28px;width:min(480px,100%);text-align:center;position:relative;max-height:90vh;overflow:auto}.modal-card.wide{width:min(850px,100%);text-align:left}.success{width:70px;height:70px;border-radius:50%;display:grid;place-items:center;background:#e8ffe1;color:var(--darkgreen);font-size:2.5rem;margin:0 auto 15px}.modal-card strong{display:block;margin:18px 0;color:var(--darkgreen)}.modal-close{position:absolute;right:14px;top:10px;background:none;font-size:2rem;cursor:pointer}.admin-body{min-height:100vh;background:url('/assets/conjunto.jpg') center/cover fixed}.admin-login{min-height:100vh;display:grid;place-items:center;padding:20px;background:rgba(0,0,0,.55)}.login-card{width:min(420px,100%);padding:30px;text-align:center}.login-card form{display:grid;gap:14px;text-align:left;margin-top:20px}.back-link{text-align:center;color:var(--darkgreen)}.error{color:var(--danger);min-height:20px}.dashboard{min-height:100vh;display:grid;grid-template-columns:250px 1fr;background:#f3f5f3}.sidebar{background:#fff;padding:24px 18px;box-shadow:5px 0 18px rgba(0,0,0,.06);position:sticky;top:0;height:100vh}.sidebar img{width:110px;display:block;margin:0 auto 12px}.sidebar h2{text-align:center;color:var(--brown);font-size:1.1rem;margin-bottom:25px}.nav{width:100%;text-align:left;padding:13px;border-radius:10px;background:none;margin-bottom:7px;cursor:pointer;font-weight:700}.nav:hover,.nav.active{background:#eafbe5;color:var(--darkgreen)}.dashboard-main{padding:30px}.dashboard-header{margin-bottom:25px}.dashboard-header h1{color:var(--brown)}.dashboard-header p{color:var(--muted)}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.stats article,.panel{background:#fff;border-radius:16px;padding:20px;box-shadow:0 7px 20px rgba(0,0,0,.06)}.stats span{display:block;color:var(--muted);font-size:.86rem}.stats strong{display:block;font-size:2rem;color:var(--darkgreen);margin-top:8px}.panel h2{color:var(--brown);margin-bottom:16px}.tower-stats{display:grid;gap:12px}.tower-row{display:grid;grid-template-columns:100px 1fr 50px;gap:12px;align-items:center}.tower-bar{height:12px;background:#edf0ed;border-radius:99px;overflow:hidden}.tower-bar div{height:100%;background:linear-gradient(90deg,var(--green),var(--lime))}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:18px}.panel-head input{max-width:460px}.records-list{display:grid;gap:12px}.record{border:1px solid #e0e4e0;border-radius:12px;padding:16px;display:flex;justify-content:space-between;gap:15px;align-items:center}.record p{color:var(--muted);margin-top:4px}.record-actions{display:flex;gap:8px}.record-actions button{padding:9px 12px;border-radius:8px;cursor:pointer}.view-btn{background:#eafbe5;color:var(--darkgreen)}.delete-btn{background:#ffe9e9;color:var(--danger)}.detail-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.detail-section{margin:20px 0}.detail-section h3{color:var(--darkgreen);border-bottom:1px solid #eee;padding-bottom:7px;margin-bottom:10px}
@media(max-width:760px){.hero{align-items:end}.welcome{padding:25px 20px}.grid.two{grid-template-columns:1fr}.form-shell{padding:20px 16px}.form-actions{flex-direction:column}.form-actions .btn{width:100%}.dashboard{display:block}.sidebar{height:auto;position:static;display:flex;flex-wrap:wrap;align-items:center;gap:8px}.sidebar img{width:70px;margin:0}.sidebar h2{margin:0;flex:1;text-align:left}.nav{width:auto;margin:0}.dashboard-main{padding:18px}.stats{grid-template-columns:repeat(2,1fr)}.panel-head{flex-direction:column;align-items:stretch}.record{align-items:flex-start;flex-direction:column}.detail-grid{grid-template-columns:1fr}.tower-row{grid-template-columns:80px 1fr 40px}}
@media(max-width:420px){.stats{grid-template-columns:1fr 1fr}.topbar strong{font-size:.85rem}.topbar img{height:45px}.form-shell{width:100%;margin:0;border-radius:0}.sidebar h2{display:none}}
@keyframes spin{to{transform:rotate(360deg)}}@keyframes pop{from{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}@keyframes fadein{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}
.admin-message{margin-bottom:18px;padding:14px 16px;border-radius:12px;font-weight:700}.admin-message.info{background:#eef8ff;color:#235b7a}.admin-message.error{background:#ffeaea;color:var(--danger)}.record-main{width:100%}.resident-summary{margin-top:10px}.record-occupied{border-left:5px solid var(--green)}.record-vacant{border-left:5px solid var(--danger)}


/* Mejoras de avance y ficha administrativa */
.progress-summary{display:flex;align-items:center;justify-content:space-between;gap:20px}.progress-summary p{margin:4px 0 0;color:#667085}.progress-summary>strong{font-size:2rem;color:#079400}.admin-progress-track{height:16px;margin-top:18px;overflow:hidden;border-radius:999px;background:#e7ece7}.admin-progress-track>div{width:0;height:100%;border-radius:inherit;background:linear-gradient(90deg,#18b900,#8de000);transition:width .45s ease}.entity-card{display:flex;gap:14px;align-items:flex-start;padding:15px;margin:10px 0;border:1px solid #dfe6df;border-radius:14px;background:#fafff8}.entity-icon{display:grid;place-items:center;width:46px;min-width:46px;height:46px;border-radius:50%;background:#e8f9e3;font-size:1.5rem}.entity-card h4{margin:0 0 5px;color:#33221e}.entity-card p{margin:3px 0;color:#5e6670}@media(max-width:700px){.progress-summary{align-items:flex-start}.progress-summary>strong{font-size:1.5rem}}

.dashboard-header{display:flex;align-items:center;justify-content:space-between;gap:18px}.export-excel-button{width:auto;min-width:190px;margin:0}.export-excel-button:disabled{opacity:.65;cursor:wait;transform:none}.admin-message.success{background:#e9fbe5;color:#126600;border:1px solid #b8e8aa}@media(max-width:760px){.dashboard-header{align-items:stretch;flex-direction:column}.export-excel-button{width:100%}}


/* Exportación a Excel con filtros */
.export-modal-card{
  width:min(610px,100%);
  text-align:left;
  padding:30px;
}
.export-modal-icon{
  display:grid;
  place-items:center;
  width:58px;
  height:58px;
  margin:0 auto 14px;
  border-radius:16px;
  background:#eafbe5;
  font-size:2rem;
}
.export-modal-card h2{
  color:var(--brown);
  text-align:center;
  margin-bottom:8px;
}
.export-modal-description{
  color:var(--muted);
  text-align:center;
  margin-bottom:20px;
}
.export-options{
  display:grid;
  gap:10px;
}
.export-option{
  display:flex;
  flex-direction:row;
  align-items:flex-start;
  gap:12px;
  padding:14px;
  border:1px solid #dfe5de;
  border-radius:12px;
  background:#fbfdfb;
  cursor:pointer;
  transition:.2s;
}
.export-option:hover{
  border-color:var(--green);
  background:#f3fff0;
}
.export-option:has(input:checked){
  border-color:var(--green);
  box-shadow:0 0 0 3px rgba(38,201,0,.10);
  background:#f3fff0;
}
.export-option input{
  width:auto;
  margin-top:4px;
}
.export-option span{
  display:grid;
  gap:3px;
}
.export-option strong{
  display:inline;
  margin:0;
  color:var(--text);
}
.export-option small{
  color:var(--muted);
  font-weight:400;
}
.export-modal-actions{
  display:flex;
  justify-content:flex-end;
  gap:12px;
  margin-top:12px;
}
.export-modal-actions .btn{
  width:auto;
  min-width:145px;
  margin:0;
}
.export-note{
  margin-top:15px;
  padding:10px 12px;
  border-radius:10px;
  background:#f4f6f4;
  color:var(--muted);
  font-size:.85rem;
}

/* Avisos administrativos compactos */
.admin-toast{
  position:fixed;
  top:20px;
  right:20px;
  z-index:3500;
  width:min(390px,calc(100vw - 40px));
  height:auto;
  min-height:auto;
  margin:0;
  padding:14px 16px;
  border-radius:12px;
  font-size:.95rem;
  line-height:1.4;
  box-shadow:0 12px 35px rgba(0,0,0,.18);
  animation:fadein .2s ease;
}
.admin-toast.message-success{
  display:block;
  width:min(390px,calc(100vw - 40px));
  height:auto;
  margin:0;
  background:#e9fbe5;
  color:#126600;
  border:1px solid #b8e8aa;
  font-size:.95rem;
}
.admin-toast.info{
  background:#eef8ff;
  color:#235b7a;
  border:1px solid #c5e5f5;
}
.admin-toast.error{
  background:#ffeaea;
  color:var(--danger);
  border:1px solid #f2bcbc;
}

@media(max-width:600px){
  .export-modal-card{padding:24px 18px}
  .export-modal-actions{flex-direction:column-reverse}
  .export-modal-actions .btn{width:100%}
  .admin-toast{top:12px;right:12px;width:calc(100vw - 24px)}
}


/* Selección del responsable dentro de los residentes */
.responsible-choice{
  display:flex;
  flex-direction:row;
  align-items:flex-start;
  gap:12px;
  margin:0 80px 18px 0;
  padding:14px 16px;
  border:1px solid #d8e4d5;
  border-radius:12px;
  background:#f7fff4;
  cursor:pointer;
}
.responsible-choice input{
  width:auto;
  margin-top:4px;
}
.responsible-choice span{
  display:grid;
  gap:3px;
}
.responsible-choice strong{
  color:var(--green-dark);
}
.responsible-choice small{
  color:var(--muted);
  font-weight:400;
}
.responsible-choice:has(input:checked){
  border-color:var(--green);
  box-shadow:0 0 0 3px rgba(38,201,0,.12);
}
.entity-responsible{
  border-color:var(--green) !important;
  background:#f5fff2;
}
.responsible-badge{
  display:inline-block;
  margin-left:8px;
  padding:4px 9px;
  border-radius:999px;
  background:#dff8d8;
  color:#167000;
  font-size:.75rem;
  vertical-align:middle;
}


/* Flujo condicional del propietario y validación de parqueaderos */
.field-notice{
  grid-column:1/-1;
  padding:12px 14px;
  border-radius:10px;
  font-size:.92rem;
  line-height:1.4;
}
.parking-warning{
  background:#fff2f0;
  color:#a51d16;
  border:1px solid #f1bbb5;
}
.parking-available{
  background:#efffeb;
  color:#176d08;
  border:1px solid #bde5b4;
}
.owner-unknown-choice{
  margin:10px 0 20px;
  padding:14px;
  border:1px solid #dce5da;
  border-radius:12px;
  background:#f8fbf7;
}
#residentOwnerArea h3{color:var(--green-dark)}


/* Múltiples parqueaderos */
.parking-section{
  grid-column:1 / -1;
}
#parkingsContainer{
  display:grid;
  gap:14px;
  margin-top:12px;
}
.parking-entry{
  position:relative;
  padding-right:95px;
}
.parking-entry label{
  max-width:420px;
}


/* ==========================================================
   DASHBOARD ADMINISTRATIVO 2.0
   ========================================================== */
.dashboard-v2{
  grid-template-columns:245px minmax(0,1fr);
  background:#f6f8f6;
}
.sidebar-v2{
  padding:18px 0 0;
  display:flex;
  flex-direction:column;
  overflow:auto;
  border-right:1px solid #edf0ed;
  box-shadow:4px 0 18px rgba(38,56,43,.06);
}
.sidebar-brand{
  padding:0 24px 12px;
}
.sidebar-v2 .sidebar-brand img{
  width:150px;
  max-width:100%;
  margin:0 auto;
}
.sidebar-caption{
  padding:0 24px;
  margin:4px 0 10px;
  color:#318215;
  font-weight:800;
  font-size:.76rem;
  letter-spacing:.06em;
}
.sidebar-nav{
  padding:0 10px;
}
.sidebar-v2 .nav{
  display:flex;
  align-items:center;
  gap:13px;
  min-height:42px;
  margin:2px 0;
  padding:10px 14px;
  border-radius:8px;
  color:#302a27;
  font-size:.9rem;
}
.sidebar-v2 .nav-icon{
  width:23px;
  display:inline-grid;
  place-items:center;
  color:#4f3a36;
  font-weight:900;
  font-size:1rem;
}
.sidebar-v2 .nav.active,
.sidebar-v2 .nav:hover{
  background:linear-gradient(90deg,#229500,#64bd14);
  color:#fff;
}
.sidebar-v2 .nav.active .nav-icon,
.sidebar-v2 .nav:hover .nav-icon{
  color:#fff;
}
.sidebar-community{
  margin-top:auto;
  background:#4b3023;
  color:#fff;
}
.sidebar-community > img{
  width:100%;
  height:190px;
  object-fit:cover;
  margin:0;
  display:block;
}
.sidebar-community-copy{
  min-height:116px;
  display:flex;
  align-items:center;
  gap:10px;
  padding:16px 18px 20px;
  background:linear-gradient(180deg,#5a3726,#3f281f);
}
.sidebar-community-copy .community-heart{
  font-size:2rem;
  color:#7ee322;
}
.sidebar-community-copy p{
  font-size:.78rem;
  line-height:1.45;
  font-weight:700;
}

.dashboard-main-v2{
  padding:20px 24px 30px;
  min-width:0;
  overflow:hidden;
}
.dashboard-header-v2{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:20px;
  margin-bottom:16px;
}
.dashboard-header-v2 h1{
  color:#4f3428;
  font-size:2rem;
  line-height:1;
  margin-bottom:7px;
}
.dashboard-header-v2 p{
  color:#34312f;
  font-size:1rem;
}
.dashboard-clock{
  display:grid;
  gap:7px;
  color:#332d29;
  min-width:180px;
}
.dashboard-clock div{
  display:flex;
  justify-content:flex-end;
  align-items:center;
  gap:8px;
  font-size:.83rem;
}
.dashboard-clock strong{font-weight:500}

.summary-v2{
  display:grid;
  gap:14px;
}
.metric-grid{
  display:grid;
  grid-template-columns:repeat(6,minmax(0,1fr));
  gap:12px;
}
.metric-card{
  min-width:0;
  min-height:142px;
  display:flex;
  align-items:center;
  gap:11px;
  padding:16px;
  border:1px solid #edf0ed;
  background:#fff;
  border-radius:16px;
  box-shadow:0 6px 18px rgba(33,53,39,.07);
}
.metric-icon{
  flex:0 0 52px;
  width:52px;
  height:52px;
  border-radius:50%;
  display:grid;
  place-items:center;
  color:#fff;
  font-weight:900;
  font-size:1.05rem;
}
.metric-card > div:last-child{
  min-width:0;
  display:grid;
}
.metric-card span{
  min-height:30px;
  color:#242424;
  font-size:.67rem;
  line-height:1.25;
  font-weight:800;
}
.metric-card strong{
  font-size:2rem;
  line-height:1.05;
  margin:5px 0 7px;
}
.metric-card small{
  color:#393939;
  font-size:.69rem;
  line-height:1.25;
}
.metric-green .metric-icon{background:linear-gradient(135deg,#72d614,#269300)}
.metric-green strong{color:#389b15}
.metric-teal .metric-icon{background:linear-gradient(135deg,#15c5c5,#087f82)}
.metric-teal strong{color:#0d999d}
.metric-lime .metric-icon{background:linear-gradient(135deg,#87d728,#4ca40a)}
.metric-lime strong{color:#66b91a}
.metric-brown .metric-icon{background:linear-gradient(135deg,#c29b77,#8a6648)}
.metric-brown strong{color:#9a7859}

.dash-card{
  background:#fff;
  border:1px solid #edf0ed;
  border-radius:16px;
  padding:16px;
  box-shadow:0 6px 18px rgba(33,53,39,.065);
  min-width:0;
}
.dash-card > h2,
.card-title-row h2{
  color:#252525;
  font-size:.83rem;
  letter-spacing:.01em;
  margin-bottom:14px;
}
.dashboard-mid-grid{
  display:grid;
  grid-template-columns:1.02fr .98fr 1.8fr;
  gap:14px;
}
.progress-card-body{
  display:grid;
  grid-template-columns:150px 1fr;
  gap:15px;
  align-items:center;
}
.radial-progress{
  --progress-angle:0deg;
  width:146px;
  aspect-ratio:1;
  border-radius:50%;
  background:conic-gradient(#52ad13 var(--progress-angle),#dfe3df 0);
  display:grid;
  place-items:center;
  position:relative;
}
.radial-progress:before{
  content:"";
  position:absolute;
  width:111px;
  aspect-ratio:1;
  border-radius:50%;
  background:#fff;
}
.radial-inner{
  z-index:1;
  text-align:center;
  display:grid;
}
.radial-inner strong{
  color:#45a015;
  font-size:2rem;
}
.radial-inner span{
  font-size:.72rem;
}
.progress-facts{
  display:grid;
  gap:8px;
}
.progress-facts p{display:grid}
.progress-facts p strong{font-size:.9rem}
.progress-facts p span{font-size:.75rem;color:#333}
.progress-facts hr{border:0;border-top:1px solid #76c53e}
.progress-facts small{font-size:.72rem}
.positive-note{
  display:flex;
  gap:10px;
  align-items:center;
  margin-top:15px;
  padding:10px 12px;
  background:#eff9e8;
  color:#2d531f;
  border-radius:10px;
  font-size:.72rem;
}
.positive-note > span{
  flex:0 0 32px;
  width:32px;height:32px;border-radius:50%;
  background:#4baa18;color:#fff;display:grid;place-items:center;
  font-weight:900;
}
.positive-note strong{color:#2c8d0e}

.distribution-body{
  min-height:245px;
  display:grid;
  grid-template-columns:minmax(130px,1fr) 1fr;
  align-items:center;
  gap:14px;
}
.distribution-donut{
  width:min(190px,100%);
  aspect-ratio:1;
  margin:auto;
  border-radius:50%;
  display:grid;
  place-items:center;
  background:conic-gradient(#d8ddda 0 100%);
  position:relative;
}
.distribution-donut:after{
  content:"";
  width:58%;
  aspect-ratio:1;
  border-radius:50%;
  background:#fff;
  position:absolute;
}
.distribution-donut > div{
  z-index:1;
  display:grid;
  text-align:center;
}
.distribution-donut strong{font-size:1.8rem}
.distribution-donut span{font-size:.8rem}
.distribution-legend{display:grid;gap:10px}
.distribution-legend p{
  display:grid;
  grid-template-columns:10px 1fr;
  gap:2px 7px;
  align-items:center;
  font-size:.75rem;
}
.distribution-legend p strong{
  grid-column:2;
  font-size:.75rem;
}
.dot{
  width:8px;height:8px;border-radius:50%;display:inline-block;
}
.dot-teal{background:#16aeb0}
.dot-lime{background:#77c81d}
.dot-gray{background:#c9ceca}

.tower-card-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:10px;
}
.tower-mini-card{
  border:1px solid #e6e9e6;
  border-radius:11px;
  overflow:hidden;
  text-align:center;
  padding-bottom:12px;
}
.tower-mini-head{
  color:#fff;
  font-weight:800;
  padding:8px;
  font-size:.78rem;
}
.tower-teal .tower-mini-head{background:#12aeb0}
.tower-green .tower-mini-head{background:#78c824}
.tower-brown .tower-mini-head{background:#a98464}
.tower-building{
  font-size:2.6rem;
  margin:12px 0 2px;
  color:#78908a;
}
.tower-mini-card > strong{
  display:block;
  font-size:1rem;
}
.tower-mini-card > span{
  display:block;
  font-size:.68rem;
  margin-bottom:9px;
}
.tower-mini-stats{
  padding:0 10px;
  text-align:left;
  display:grid;
  gap:5px;
}
.tower-mini-stats p{
  display:grid;
  grid-template-columns:8px 1fr auto;
  gap:5px;
  align-items:center;
  font-size:.62rem;
}
.tower-ring{
  --progress-angle:0deg;
  width:66px;
  aspect-ratio:1;
  border-radius:50%;
  margin:10px auto 0;
  background:conic-gradient(#4ca915 var(--progress-angle),#e0e4e0 0);
  display:grid;
  place-items:center;
  position:relative;
}
.tower-ring:before{
  content:"";
  position:absolute;
  width:51px;
  aspect-ratio:1;
  border-radius:50%;
  background:#fff;
}
.tower-ring div{z-index:1;display:grid}
.tower-ring strong{color:#3d9613;font-size:.75rem}
.tower-ring span{font-size:.48rem}

.dashboard-bottom-grid{
  display:grid;
  grid-template-columns:1.2fr 1fr 1.15fr;
  gap:14px;
}
.summary-list,
.status-list{
  display:grid;
}
.summary-list p,
.status-list p{
  min-height:37px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  border-bottom:1px solid #edf0ed;
  font-size:.7rem;
}
.summary-list p:last-child,
.status-list p:last-child{border-bottom:0}
.summary-list p span{
  display:flex;align-items:center;gap:8px;
}
.sum-icon{
  width:23px;height:23px;border-radius:50%;
  color:#fff;display:grid;place-items:center;
  font-style:normal;font-size:.6rem;font-weight:900;
}
.sum-icon.teal{background:#14a9ad}
.sum-icon.lime{background:#78c824}
.sum-icon.brown{background:#b48d69}
.sum-icon.green{background:#4cac18}

.card-title-row{
  display:flex;
  justify-content:space-between;
  gap:10px;
  align-items:center;
  margin-bottom:5px;
}
.card-title-row h2{margin:0}
.card-title-row button{
  padding:5px 12px;
  border-radius:999px;
  border:1px solid #65b937;
  color:#318b14;
  background:#fff;
  cursor:pointer;
  font-size:.66rem;
  font-weight:700;
}
.recent-list{display:grid}
.recent-row{
  width:100%;
  min-height:38px;
  display:grid;
  grid-template-columns:25px 1fr auto;
  gap:6px;
  align-items:center;
  background:none;
  border-bottom:1px solid #edf0ed;
  text-align:left;
  cursor:pointer;
  font-size:.68rem;
}
.recent-row:hover{background:#f7fbf5}
.recent-icon{color:#4aaa17;font-weight:900}
.recent-row time{font-size:.62rem;color:#555;text-align:right}
.empty-dashboard{color:var(--muted);font-size:.78rem;padding:10px 0}

.status-list p > span{color:#333}
.status-list p > strong{font-size:.68rem;text-align:right}
.status-pill{
  padding:5px 10px;
  border-radius:999px;
}
.status-good{background:#e8f6de;color:#3d8a1b}
.status-warning{background:#fff0df;color:#d67026}

.dashboard-footer-v2{
  display:grid;
  grid-template-columns:1fr auto;
  gap:20px;
  align-items:center;
  padding:9px 12px;
  border-radius:10px;
  background:linear-gradient(90deg,#edf8e8 0 63%,transparent 63%);
  color:#365334;
  font-size:.68rem;
}
.dashboard-footer-v2 strong{
  color:#4e392f;
  font-family:Georgia,serif;
  font-style:italic;
  font-size:1.08rem;
}

.records-panel-v2{
  margin-top:8px;
}
.records-panel-v2 .panel-head{
  flex-wrap:wrap;
}
.records-panel-v2 .panel-head h2{
  width:100%;
  font-size:1.25rem;
}
.records-filters{
  width:min(520px,100%)!important;
}
.records-panel-v2 #searchInput{
  flex:1;
  min-width:260px;
  max-width:none;
}

@media(max-width:1250px){
  .metric-grid{grid-template-columns:repeat(3,1fr)}
  .dashboard-mid-grid{grid-template-columns:1fr 1fr}
  .tower-card-wrap{grid-column:1 / -1}
  .dashboard-bottom-grid{grid-template-columns:1fr 1fr}
  .dashboard-bottom-grid > :last-child{grid-column:1 / -1}
}
@media(max-width:900px){
  .dashboard-v2{grid-template-columns:190px minmax(0,1fr)}
  .sidebar-community > img{height:140px}
  .metric-grid{grid-template-columns:repeat(2,1fr)}
  .dashboard-mid-grid{grid-template-columns:1fr}
  .tower-card-wrap{grid-column:auto}
  .dashboard-bottom-grid{grid-template-columns:1fr}
  .dashboard-bottom-grid > :last-child{grid-column:auto}
  .tower-card-grid{grid-template-columns:repeat(3,1fr)}
}
@media(max-width:700px){
  .dashboard-v2{display:block}
  .sidebar-v2{
    position:relative;
    height:auto;
    padding-bottom:8px;
  }
  .sidebar-brand{
    padding:8px 14px;
  }
  .sidebar-v2 .sidebar-brand img{
    width:95px;
  }
  .sidebar-caption{display:none}
  .sidebar-nav{
    display:flex;
    gap:7px;
    overflow-x:auto;
    padding:6px 10px;
  }
  .sidebar-v2 .nav{
    width:auto;
    flex:0 0 auto;
    margin:0;
    min-height:38px;
    padding:8px 11px;
  }
  .sidebar-v2 .nav span:last-child{white-space:nowrap}
  .sidebar-community{display:none}
  .dashboard-main-v2{padding:16px 12px 24px}
  .dashboard-header-v2{align-items:center}
  .dashboard-header-v2 h1{font-size:1.6rem}
  .dashboard-clock{min-width:0}
  .dashboard-clock div{font-size:.68rem}
  .metric-grid{grid-template-columns:1fr 1fr}
  .metric-card{min-height:120px;padding:12px}
  .metric-icon{width:42px;height:42px;flex-basis:42px}
  .metric-card strong{font-size:1.55rem}
  .metric-card span{font-size:.58rem}
  .tower-card-grid{grid-template-columns:1fr}
  .distribution-body{grid-template-columns:1fr}
  .distribution-donut{width:170px}
  .progress-card-body{grid-template-columns:1fr}
  .radial-progress{margin:auto}
  .dashboard-footer-v2{grid-template-columns:1fr;background:#edf8e8}
  .dashboard-footer-v2 strong{text-align:center}
}
@media(max-width:460px){
  .metric-grid{grid-template-columns:1fr}
  .dashboard-header-v2{display:grid}
  .dashboard-clock div{justify-content:flex-start}
  .recent-row{grid-template-columns:22px 1fr}
  .recent-row time{grid-column:2;text-align:left}
}


/* ==========================================================
   DASHBOARD ADMINISTRATIVO 2.1 - AJUSTE VISUAL
   Solo presentación. No modifica lógica ni datos.
   ========================================================== */

.dashboard-v2{
  grid-template-columns:230px minmax(0,1fr);
}

.sidebar-v2{
  overflow-y:auto;
  overflow-x:hidden;
}

.sidebar-v2 .sidebar-brand img{
  width:142px;
}

.sidebar-nav{
  padding:0 10px 8px;
}

.sidebar-v2 .nav{
  min-height:40px;
  gap:11px;
  padding:9px 13px;
  font-size:.86rem;
}

.nav-icon{
  flex:0 0 22px;
}

.nav-icon svg,
.metric-icon svg,
.clock-icon svg,
.community-heart svg,
.recent-icon svg{
  width:100%;
  height:100%;
  fill:none;
  stroke:currentColor;
  stroke-width:1.8;
  stroke-linecap:round;
  stroke-linejoin:round;
}

.nav-icon svg{
  width:19px;
  height:19px;
}

.sidebar-community > img{
  height:205px;
  object-fit:cover;
  object-position:50% 52%;
}

.sidebar-community-copy{
  min-height:105px;
  padding:14px 16px 18px;
}

.sidebar-community-copy .community-heart{
  flex:0 0 34px;
  width:34px;
  height:34px;
  display:grid;
  place-items:center;
  color:#79df24;
}

.sidebar-community-copy .community-heart svg{
  width:32px;
  height:32px;
}

.sidebar-community-copy p{
  font-size:.72rem;
  line-height:1.48;
}

.dashboard-main-v2{
  padding:20px 22px 30px;
}

.dashboard-header-v2{
  margin-bottom:15px;
}

.dashboard-header-v2 h1{
  font-size:1.9rem;
}

.dashboard-header-v2 p{
  font-size:.92rem;
}

.dashboard-clock{
  min-width:165px;
}

.clock-icon{
  width:18px;
  height:18px;
  display:inline-grid;
}

.metric-grid{
  gap:10px;
}

.metric-card{
  min-height:132px;
  gap:9px;
  padding:13px 12px;
  border-radius:15px;
}

.metric-icon{
  flex:0 0 46px;
  width:46px;
  height:46px;
  padding:11px;
}

.metric-card > div:last-child{
  align-content:center;
  gap:0;
}

.metric-card span{
  min-height:27px;
  font-size:.59rem;
  line-height:1.16;
  letter-spacing:.01em;
  overflow-wrap:normal;
  word-break:normal;
  text-wrap:balance;
}

.metric-card strong{
  font-size:1.82rem;
  line-height:1;
  margin:5px 0 6px;
}

.metric-card small{
  font-size:.61rem;
  line-height:1.22;
  text-wrap:balance;
}

.dash-card{
  padding:15px;
}

.dash-card > h2,
.card-title-row h2{
  font-size:.79rem;
  line-height:1.15;
  margin-bottom:12px;
}

.dashboard-mid-grid{
  grid-template-columns:1.05fr 1fr 1.82fr;
  gap:12px;
}

.progress-card-body{
  grid-template-columns:145px minmax(0,1fr);
  gap:12px;
}

.progress-facts p strong{
  font-size:.84rem;
}

.progress-facts p span,
.progress-facts small{
  font-size:.64rem;
}

.distribution-body{
  gap:13px;
}

.distribution-legend p{
  font-size:.67rem;
}

.tower-card-grid{
  gap:11px;
}

.tower-mini-card{
  border-radius:12px;
  padding-bottom:11px;
  background:#fff;
  box-shadow:0 3px 10px rgba(35,53,40,.04);
}

.tower-mini-head{
  padding:9px 8px;
  font-size:.76rem;
}

.tower-building-photo{
  height:74px;
  margin:9px 10px 6px;
  border-radius:8px;
  overflow:hidden;
  background:#eef3ef;
}

.tower-building-photo img{
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center 55%;
}

.tower-mini-card:nth-child(1) .tower-building-photo img{
  object-position:37% 55%;
}

.tower-mini-card:nth-child(2) .tower-building-photo img{
  object-position:52% 55%;
}

.tower-mini-card:nth-child(3) .tower-building-photo img{
  object-position:70% 55%;
}

.tower-mini-card > strong{
  font-size:.95rem;
}

.tower-mini-card > span{
  font-size:.63rem;
}

.tower-mini-stats{
  padding:0 9px;
}

.tower-mini-stats p{
  font-size:.59rem;
}

.tower-ring{
  width:61px;
}

.tower-ring:before{
  width:47px;
}

.tower-ring strong{
  font-size:.69rem;
}

.dashboard-bottom-grid{
  gap:12px;
}

.summary-list p,
.status-list p{
  min-height:35px;
  font-size:.67rem;
}

.recent-row{
  min-height:36px;
  font-size:.64rem;
}

.recent-icon{
  width:17px;
  height:17px;
  color:#4aaa17;
}

.recent-row time{
  font-size:.58rem;
}

.dashboard-footer-v2{
  font-size:.65rem;
}

.dashboard-footer-v2 strong{
  font-size:1rem;
}

@media(min-width:1260px) and (max-width:1450px){
  .dashboard-v2{
    grid-template-columns:225px minmax(0,1fr);
  }

  .dashboard-main-v2{
    padding-left:18px;
    padding-right:18px;
  }

  .metric-card{
    padding:12px 10px;
    gap:8px;
  }

  .metric-icon{
    flex-basis:42px;
    width:42px;
    height:42px;
    padding:10px;
  }

  .metric-card span{
    font-size:.56rem;
  }

  .metric-card strong{
    font-size:1.7rem;
  }

  .metric-card small{
    font-size:.57rem;
  }
}

@media(max-width:1250px){
  .metric-card span{
    font-size:.64rem;
  }
  .metric-card small{
    font-size:.66rem;
  }
}

@media(max-width:900px){
  .sidebar-community > img{
    height:165px;
  }
}



/* Dashboard 2.2 - barra lateral limpia, sin foto inferior */
@media (min-width: 901px) {
  .sidebar-v2 {
    height: 100vh;
    overflow: hidden;
    align-self: start;
  }

  .sidebar-community {
    display: none !important;
  }

  .sidebar-brand {
    padding-bottom: 8px;
  }

  .sidebar-nav {
    padding-bottom: 14px;
  }
}


/* ==========================================================
   FICHA + EDICIÓN ADMINISTRATIVA
   ========================================================== */

.detail-toolbar{
  display:flex;
  justify-content:flex-end;
  margin:0 38px 12px 0;
}

.detail-edit-btn{
  width:auto;
  min-width:165px;
  margin:0;
}

.admin-edit-modal{
  width:min(1000px,96vw);
  max-height:94vh;
  padding:28px;
  text-align:left;
}

.edit-modal-header{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:16px;
  padding-right:35px;
  margin-bottom:20px;
}

.edit-modal-header h2{
  color:var(--brown);
  margin-bottom:4px;
}

.edit-modal-header p{
  color:var(--muted);
}

.edit-admin-badge{
  display:inline-flex;
  align-items:center;
  min-height:30px;
  padding:6px 11px;
  border-radius:999px;
  background:#eef9e9;
  color:var(--darkgreen);
  font-size:.76rem;
  font-weight:700;
  white-space:nowrap;
}

.edit-section{
  margin:0 0 18px;
  padding:20px;
  border:1px solid #e0e7e0;
  border-radius:16px;
  background:#fbfdfb;
}

.edit-section > h3,
.edit-section-title h3{
  color:var(--brown);
  margin-bottom:12px;
}

.edit-section > h3 span{
  font-weight:400;
  color:var(--muted);
  font-size:.8rem;
}

.edit-section-title{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:15px;
  margin-bottom:10px;
}

.edit-section-title p{
  color:var(--muted);
  font-size:.84rem;
  margin-top:-5px;
}

.edit-add-btn{
  width:auto;
  min-height:40px;
  margin:0;
  padding:8px 12px;
}

.edit-full-field{
  margin-top:14px;
  grid-column:1 / -1;
}

.edit-full-field small{
  color:var(--muted);
  font-weight:400;
  line-height:1.35;
}

.edit-entity-card{
  position:relative;
  margin:12px 0;
  padding:18px;
  border:1px solid #dbe4da;
  border-radius:14px;
  background:#fff;
}

.edit-card-head{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
  margin-bottom:14px;
}

.edit-card-head h4{
  color:var(--darkgreen);
}

.edit-responsible-radio{
  display:flex;
  flex-direction:row;
  align-items:center;
  gap:9px;
  padding:9px 12px;
  border-radius:10px;
  background:#f0fbeC;
  color:var(--darkgreen);
  font-weight:700;
}

.edit-responsible-radio input{
  width:auto;
}

.edit-remove{
  position:static;
}

.edit-form-actions{
  position:sticky;
  bottom:-28px;
  display:flex;
  justify-content:flex-end;
  gap:12px;
  margin:20px -28px -28px;
  padding:16px 28px;
  border-top:1px solid #e3e8e3;
  background:rgba(255,255,255,.97);
  backdrop-filter:blur(8px);
}

.edit-form-actions .btn{
  width:auto;
  min-width:160px;
  margin:0;
}

.edit-disabled-section{
  opacity:.55;
  pointer-events:none;
}

@media(max-width:700px){
  .detail-toolbar{
    margin-right:34px;
  }

  .detail-edit-btn{
    width:100%;
  }

  .admin-edit-modal{
    width:100%;
    padding:20px 15px;
  }

  .edit-modal-header,
  .edit-section-title{
    flex-direction:column;
  }

  .edit-add-btn{
    width:100%;
  }

  .edit-form-actions{
    flex-direction:column-reverse;
    margin-left:-15px;
    margin-right:-15px;
    margin-bottom:-20px;
    padding:14px 15px;
  }

  .edit-form-actions .btn{
    width:100%;
  }
}


/* ==========================================================
   DASHBOARD 2.4 - CORRECCIÓN RESPONSIVE PARA CELULAR
   Estas reglas van al final para tener prioridad sobre 2.1/2.2.
   No afectan la lógica ni la vista de escritorio.
   ========================================================== */

html, body{
  max-width:100%;
  overflow-x:hidden;
}

@media (max-width:700px){

  /* Estructura general */
  .dashboard-v2{
    display:block !important;
    grid-template-columns:none !important;
    width:100% !important;
    min-width:0 !important;
  }

  /* Barra lateral convertida en menú móvil completo */
  .sidebar-v2{
    position:relative !important;
    inset:auto !important;
    width:100% !important;
    height:auto !important;
    min-height:0 !important;
    overflow:visible !important;
    border-right:0 !important;
    border-bottom:1px solid #e4e9e4;
    background:#fff;
    z-index:20;
  }

  /* En móvil el logo grande quita demasiado espacio */
  .sidebar-v2 .sidebar-brand,
  .sidebar-caption,
  .sidebar-community{
    display:none !important;
  }

  .sidebar-nav{
    display:grid !important;
    grid-template-columns:repeat(2,minmax(0,1fr)) !important;
    gap:8px !important;
    width:100% !important;
    padding:10px 12px 12px !important;
    overflow:visible !important;
  }

  .sidebar-v2 .nav{
    width:100% !important;
    min-width:0 !important;
    min-height:44px !important;
    margin:0 !important;
    padding:9px 10px !important;
    justify-content:flex-start !important;
    border-radius:10px !important;
    font-size:.78rem !important;
    line-height:1.15 !important;
  }

  .sidebar-v2 .nav:first-child{
    grid-column:1 / -1;
  }

  .sidebar-v2 .nav span:last-child{
    white-space:normal !important;
    overflow-wrap:anywhere;
  }

  .nav-icon{
    flex:0 0 20px !important;
  }

  .nav-icon svg{
    width:18px !important;
    height:18px !important;
  }

  /* Contenido */
  .dashboard-main-v2{
    width:100% !important;
    min-width:0 !important;
    padding:18px 12px 30px !important;
  }

  .dashboard-header-v2{
    display:block !important;
    width:100% !important;
    margin-bottom:16px !important;
  }

  .dashboard-header-v2 h1{
    font-size:1.75rem !important;
    line-height:1.08 !important;
  }

  .dashboard-header-v2 p{
    font-size:.88rem !important;
    margin-top:4px !important;
  }

  .dashboard-clock{
    display:grid !important;
    gap:5px !important;
    width:100% !important;
    min-width:0 !important;
    margin-top:14px !important;
  }

  .dashboard-clock div{
    justify-content:flex-start !important;
    font-size:.72rem !important;
  }

  /* Tarjetas superiores */
  .metric-grid{
    display:grid !important;
    grid-template-columns:1fr !important;
    gap:12px !important;
    width:100% !important;
  }

  .metric-card{
    width:100% !important;
    min-width:0 !important;
    min-height:112px !important;
    padding:15px !important;
  }

  .metric-card span{
    min-height:0 !important;
    font-size:.68rem !important;
  }

  .metric-card strong{
    font-size:1.8rem !important;
  }

  .metric-card small{
    font-size:.7rem !important;
  }

  /* Bloques centrales: uno debajo del otro */
  .dashboard-mid-grid{
    display:grid !important;
    grid-template-columns:1fr !important;
    gap:14px !important;
    width:100% !important;
  }

  .dashboard-mid-grid > *,
  .dash-card,
  .progress-card,
  .distribution-card,
  .tower-card-wrap{
    width:100% !important;
    min-width:0 !important;
    max-width:100% !important;
    grid-column:auto !important;
    overflow:hidden;
  }

  .dash-card{
    padding:16px !important;
  }

  .dash-card > h2,
  .card-title-row h2{
    font-size:.9rem !important;
    line-height:1.2 !important;
    white-space:normal !important;
  }

  /* Avance general */
  .progress-card-body{
    display:grid !important;
    grid-template-columns:1fr !important;
    gap:16px !important;
    width:100% !important;
  }

  .radial-progress{
    width:170px !important;
    max-width:170px !important;
    margin:0 auto !important;
  }

  .progress-facts{
    width:100% !important;
  }

  .progress-facts p{
    width:100% !important;
  }

  .progress-facts p strong{
    font-size:.92rem !important;
  }

  .progress-facts p span,
  .progress-facts small{
    font-size:.72rem !important;
  }

  /* Distribución */
  .distribution-body{
    display:grid !important;
    grid-template-columns:1fr !important;
    gap:18px !important;
    width:100% !important;
  }

  .distribution-donut{
    width:170px !important;
    max-width:170px !important;
    margin:0 auto !important;
  }

  .distribution-legend{
    width:100% !important;
  }

  .distribution-legend p{
    font-size:.76rem !important;
  }

  /* Torres: una torre por fila */
  .tower-card-grid{
    display:grid !important;
    grid-template-columns:1fr !important;
    gap:14px !important;
    width:100% !important;
  }

  .tower-mini-card{
    width:100% !important;
    min-width:0 !important;
    max-width:100% !important;
  }

  .tower-building-photo{
    height:150px !important;
    margin:12px 14px 8px !important;
  }

  .tower-mini-head{
    font-size:.9rem !important;
    padding:10px !important;
  }

  .tower-mini-card > strong{
    font-size:1.05rem !important;
  }

  .tower-mini-card > span{
    font-size:.72rem !important;
  }

  .tower-mini-stats{
    padding:0 16px !important;
  }

  .tower-mini-stats p{
    font-size:.72rem !important;
  }

  .tower-ring{
    width:72px !important;
    margin-top:10px !important;
  }

  .tower-ring:before{
    width:56px !important;
  }

  /* Parte inferior */
  .dashboard-bottom-grid{
    display:grid !important;
    grid-template-columns:1fr !important;
    gap:14px !important;
    width:100% !important;
  }

  .dashboard-bottom-grid > *{
    width:100% !important;
    min-width:0 !important;
    grid-column:auto !important;
  }

  .summary-list p,
  .status-list p{
    min-height:42px !important;
    font-size:.75rem !important;
    gap:8px !important;
  }

  .status-list p > strong{
    font-size:.72rem !important;
  }

  .recent-row{
    min-height:48px !important;
    grid-template-columns:22px minmax(0,1fr) !important;
    font-size:.74rem !important;
    padding:5px 0 !important;
  }

  .recent-row time{
    grid-column:2 !important;
    text-align:left !important;
    font-size:.68rem !important;
  }

  .dashboard-footer-v2{
    display:block !important;
    width:100% !important;
    padding:12px !important;
    font-size:.72rem !important;
    background:#edf8e8 !important;
  }

  .dashboard-footer-v2 strong{
    display:block !important;
    margin-top:10px !important;
    text-align:center !important;
    font-size:.95rem !important;
  }

  /* Pantalla de registros/filtros */
  .records-panel-v2,
  .panel,
  .records-panel{
    width:100% !important;
    min-width:0 !important;
  }

  .records-filters{
    display:grid !important;
    grid-template-columns:1fr !important;
    width:100% !important;
    min-width:0 !important;
    gap:8px !important;
  }

  .records-panel-v2 #searchInput,
  .records-filters input,
  .records-filters select{
    width:100% !important;
    min-width:0 !important;
    max-width:none !important;
  }

  /* Modales de ficha/edición */
  .modal-card.wide,
  .admin-edit-modal{
    width:calc(100vw - 20px) !important;
    max-width:calc(100vw - 20px) !important;
    max-height:94vh !important;
    margin:10px !important;
  }

  .detail-toolbar{
    margin:0 32px 12px 0 !important;
  }

  .detail-edit-btn{
    width:100% !important;
  }
}

@media (max-width:390px){
  .sidebar-nav{
    grid-template-columns:1fr !important;
  }

  .sidebar-v2 .nav:first-child{
    grid-column:auto !important;
  }

  .dashboard-main-v2{
    padding-left:10px !important;
    padding-right:10px !important;
  }
}


/* ==========================================================
   MÓDULO ADMINISTRATIVO DE APARTAMENTOS 1.0
   ========================================================== */

.apartments-module-head{
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:20px;
  margin-bottom:16px;
}

.module-kicker{
  display:block;
  margin-bottom:4px;
  color:#0d8f75;
  font-size:.68rem;
  font-weight:800;
  letter-spacing:.09em;
}

.apartments-module-head h2{
  color:var(--brown);
  font-size:1.55rem;
  margin-bottom:4px;
}

.apartments-module-head p{
  color:var(--muted);
  font-size:.86rem;
}

.module-clear-btn{
  width:auto;
  padding:9px 13px;
  border:1px solid #d8e2d8;
  border-radius:10px;
  background:#fff;
  color:#53605a;
  font-weight:700;
  cursor:pointer;
}

.module-clear-btn:hover{
  border-color:var(--green);
  color:var(--darkgreen);
}

.apartment-module-summary{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:12px;
  margin-bottom:14px;
}

.apartment-module-summary article{
  position:relative;
  overflow:hidden;
  min-height:88px;
  padding:15px 17px;
  border:1px solid #e4e9e4;
  border-radius:14px;
  background:#fff;
  box-shadow:0 6px 18px rgba(24,47,30,.045);
}

.apartment-module-summary article::before{
  content:"";
  position:absolute;
  inset:0 auto 0 0;
  width:4px;
  background:#20aaa9;
}

.apartment-module-summary .summary-occupied::before{
  background:#21a9aa;
}

.apartment-module-summary .summary-vacant::before{
  background:#79ca20;
}

.apartment-module-summary .summary-result::before{
  background:#ad8766;
}

.apartment-module-summary span{
  display:block;
  color:var(--muted);
  font-size:.72rem;
  margin-bottom:7px;
}

.apartment-module-summary strong{
  color:var(--brown);
  font-size:1.75rem;
  line-height:1;
}

.apartments-management-panel{
  padding:17px;
}

.apartment-filter-bar{
  display:grid;
  grid-template-columns:minmax(260px,1.8fr) repeat(3,minmax(130px,.65fr));
  gap:10px;
  align-items:end;
  margin-bottom:12px;
}

.apartment-filter-bar label{
  gap:5px;
  font-size:.72rem;
  color:#4f5a54;
}

.apartment-filter-bar label > span{
  color:#526059;
  font-weight:700;
}

.apartment-filter-bar input,
.apartment-filter-bar select{
  min-height:42px;
  padding:9px 11px;
  border-radius:9px;
  font-size:.78rem;
}

.active-filters{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:7px;
  margin:0 0 14px;
  padding:9px 11px;
  border-radius:10px;
  background:#f3f8f2;
  font-size:.68rem;
  color:#66736b;
}

.active-filters strong{
  display:inline-flex;
  align-items:center;
  min-height:25px;
  padding:4px 8px;
  border-radius:999px;
  background:#fff;
  color:#247812;
  border:1px solid #d8ebd2;
}

.apartment-records-list{
  gap:11px;
}

.apartment-admin-card{
  position:relative;
  display:grid;
  grid-template-columns:5px minmax(0,1fr);
  overflow:hidden;
  border:1px solid #e0e7e0;
  border-radius:14px;
  background:#fff;
  box-shadow:0 5px 15px rgba(28,47,32,.035);
}

.apartment-card-accent{
  background:#1ba9a9;
}

.apartment-admin-card.is-vacant .apartment-card-accent{
  background:#cb4242;
}

.apartment-card-main{
  min-width:0;
  padding:15px 16px;
}

.apartment-card-heading{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:14px;
  margin-bottom:12px;
}

.apartment-location{
  display:block;
  color:#6b7770;
  font-size:.68rem;
  font-weight:700;
  margin-bottom:2px;
}

.apartment-card-heading h3{
  color:#33231f;
  font-size:1.08rem;
}

.apartment-status{
  display:inline-flex;
  align-items:center;
  min-height:27px;
  padding:5px 9px;
  border-radius:999px;
  font-size:.67rem;
  font-weight:800;
  white-space:nowrap;
}

.apartment-status.occupied{
  background:#e6f8e2;
  color:#258013;
}

.apartment-status.vacant{
  background:#ffe9e9;
  color:#b93636;
}

.apartment-primary-info{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px;
  margin-bottom:10px;
}

.apartment-person,
.apartment-vacant-message{
  padding:10px 11px;
  border-radius:10px;
  background:#f7f9f7;
}

.apartment-person span,
.apartment-vacant-message span{
  display:block;
  color:#7a847e;
  font-size:.64rem;
  margin-bottom:3px;
}

.apartment-person strong,
.apartment-vacant-message strong{
  display:block;
  color:#344038;
  font-size:.78rem;
  margin-bottom:2px;
}

.apartment-person small{
  color:#7a847e;
  font-size:.64rem;
}

.apartment-vacant-message{
  grid-column:1 / -1;
}

.apartment-card-metrics{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:8px;
  margin:10px 0;
}

.apartment-card-metrics > div{
  min-width:0;
  padding:8px 10px;
  border:1px solid #e7ebe7;
  border-radius:9px;
}

.apartment-card-metrics span{
  display:block;
  color:#77817b;
  font-size:.61rem;
  margin-bottom:3px;
}

.apartment-card-metrics strong{
  display:block;
  color:#28332d;
  font-size:.82rem;
  overflow-wrap:anywhere;
}

.apartment-resident-preview{
  display:grid;
  grid-template-columns:auto 1fr;
  gap:8px;
  margin-top:9px;
  padding:8px 10px;
  border-radius:9px;
  background:#fbfcfb;
  font-size:.67rem;
}

.apartment-resident-preview span{
  color:#718078;
  font-weight:700;
}

.apartment-resident-preview p{
  min-width:0;
  color:#444f49;
  overflow-wrap:anywhere;
}

.apartment-card-footer{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:15px;
  margin-top:12px;
  padding-top:11px;
  border-top:1px solid #edf0ed;
}

.apartment-registration-meta{
  display:flex;
  flex-wrap:wrap;
  gap:8px 16px;
  color:#76827a;
  font-size:.62rem;
}

.apartment-registration-meta strong{
  color:#455149;
}

.apartment-admin-actions{
  display:flex;
  gap:7px;
  flex:0 0 auto;
}

.apartment-admin-actions button{
  min-height:34px;
  padding:7px 10px;
  border-radius:8px;
  font-size:.68rem;
  font-weight:700;
  cursor:pointer;
}

.apartment-view-btn{
  background:#e9f9e4;
  color:#237d13;
}

.records-empty-state{
  padding:50px 20px;
  text-align:center;
  color:#758078;
}

.records-empty-icon{
  display:grid;
  place-items:center;
  width:52px;
  height:52px;
  margin:0 auto 12px;
  border-radius:50%;
  background:#eef4ee;
  font-size:1.5rem;
}

.records-empty-state h3{
  color:#3f4b43;
  margin-bottom:6px;
}

.records-empty-state p{
  font-size:.82rem;
}

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

  .apartment-filter-bar{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }

  .filter-search{
    grid-column:1 / -1;
  }

  .apartment-card-metrics{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}

@media(max-width:700px){
  .apartments-module-head{
    align-items:stretch;
    flex-direction:column;
  }

  .module-clear-btn{
    width:100%;
  }

  .apartment-module-summary{
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:8px;
  }

  .apartment-module-summary article{
    min-height:78px;
    padding:13px;
  }

  .apartment-module-summary strong{
    font-size:1.5rem;
  }

  .apartments-management-panel{
    padding:12px;
  }

  .apartment-filter-bar{
    grid-template-columns:1fr !important;
  }

  .filter-search{
    grid-column:auto;
  }

  .apartment-card-heading,
  .apartment-card-footer{
    align-items:stretch;
    flex-direction:column;
  }

  .apartment-primary-info{
    grid-template-columns:1fr;
  }

  .apartment-card-metrics{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }

  .apartment-resident-preview{
    grid-template-columns:1fr;
  }

  .apartment-admin-actions{
    width:100%;
  }

  .apartment-admin-actions button{
    flex:1;
    min-height:40px;
  }

  .apartment-registration-meta{
    display:grid;
    gap:4px;
  }
}

@media(max-width:380px){
  .apartment-module-summary{
    grid-template-columns:1fr;
  }
}


/* ==========================================================
   EDICIÓN FUNCIONAL DE APARTAMENTO 1.0
   ========================================================== */

.apartment-edit-btn{
  border:0;
  background:#eef8ff;
  color:#167098;
}

.apartment-edit-btn:hover{
  background:#dff2fb;
}

.detail-toolbar{
  display:flex;
  justify-content:flex-end;
  margin:0 38px 12px 0;
}

.detail-edit-btn{
  width:auto;
  min-width:165px;
  margin:0;
}

.admin-edit-modal{
  width:min(1000px,96vw);
  max-height:94vh;
  padding:28px;
  text-align:left;
}

.edit-modal-header{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:16px;
  padding-right:35px;
  margin-bottom:20px;
}

.edit-modal-header h2{
  color:var(--brown);
  margin-bottom:4px;
}

.edit-modal-header p{
  color:var(--muted);
}

.edit-admin-badge{
  display:inline-flex;
  align-items:center;
  min-height:30px;
  padding:6px 11px;
  border-radius:999px;
  background:#eef9e9;
  color:var(--darkgreen);
  font-size:.76rem;
  font-weight:700;
  white-space:nowrap;
}

.edit-section{
  margin:0 0 18px;
  padding:20px;
  border:1px solid #e0e7e0;
  border-radius:16px;
  background:#fbfdfb;
}

.edit-section > h3,
.edit-section-title h3{
  color:var(--brown);
  margin-bottom:12px;
}

.edit-section > h3 span{
  color:var(--muted);
  font-size:.8rem;
  font-weight:400;
}

.edit-section-title{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:15px;
  margin-bottom:10px;
}

.edit-section-title p{
  color:var(--muted);
  font-size:.84rem;
  margin-top:-5px;
}

.edit-add-btn{
  width:auto;
  min-height:40px;
  margin:0;
  padding:8px 12px;
}

.edit-full-field{
  display:grid;
  grid-column:1 / -1;
  gap:6px;
  margin-top:14px;
}

.edit-full-field small{
  color:var(--muted);
  font-weight:400;
  line-height:1.35;
}

.edit-entity-card{
  position:relative;
  margin:12px 0;
  padding:18px;
  border:1px solid #dbe4da;
  border-radius:14px;
  background:#fff;
}

.edit-card-head{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
  margin-bottom:14px;
}

.edit-card-head h4{
  color:var(--darkgreen);
}

.edit-responsible-radio{
  display:flex;
  flex-direction:row;
  align-items:center;
  gap:9px;
  padding:9px 12px;
  border-radius:10px;
  background:#f0fbec;
  color:var(--darkgreen);
  font-weight:700;
}

.edit-responsible-radio input{
  width:auto;
}

.edit-remove{
  position:static;
}

.edit-form-actions{
  position:sticky;
  bottom:-28px;
  display:flex;
  justify-content:flex-end;
  gap:12px;
  margin:20px -28px -28px;
  padding:16px 28px;
  border-top:1px solid #e3e8e3;
  background:rgba(255,255,255,.97);
  backdrop-filter:blur(8px);
}

.edit-form-actions .btn{
  width:auto;
  min-width:160px;
  margin:0;
}

.edit-disabled-section{
  opacity:.55;
  pointer-events:none;
}

@media(max-width:700px){
  .apartment-admin-actions{
    flex-wrap:wrap;
  }

  .apartment-admin-actions button{
    min-width:calc(50% - 4px);
  }

  .apartment-admin-actions .delete-btn{
    flex-basis:100%;
  }

  .detail-toolbar{
    margin-right:34px;
  }

  .detail-edit-btn{
    width:100%;
  }

  .admin-edit-modal{
    width:calc(100vw - 20px) !important;
    max-width:calc(100vw - 20px) !important;
    padding:20px 15px;
  }

  .edit-modal-header,
  .edit-section-title{
    flex-direction:column;
  }

  .edit-add-btn{
    width:100%;
  }

  .edit-form-actions{
    flex-direction:column-reverse;
    margin-left:-15px;
    margin-right:-15px;
    margin-bottom:-20px;
    padding:14px 15px;
  }

  .edit-form-actions .btn{
    width:100%;
  }
}
