/* Modal UI (premium) */
:root{ --modal-z:100; }

.modal{ position:fixed; inset:0; z-index:var(--modal-z); display:none; }
.modal[data-open="true"]{ display:block; }

.modal-backdrop{
  position:absolute; inset:0;
  background:rgba(2,6,23,.55);
  backdrop-filter: blur(6px);
}

.modal-dialog{
  position:relative;
  width:min(720px, calc(100% - 24px));
  margin: 18px auto;
  max-height: calc(100vh - 36px);
  background:#fff;
  border-radius:18px;
  box-shadow: 0 28px 80px rgba(2,6,23,.35);
  border:1px solid rgba(13,92,255,.14);
  overflow:hidden;
  display:flex;
  flex-direction:column;
}

.modal-body{
  flex:1;
  min-height:0;
  overflow-y:auto;
  overscroll-behavior:contain;
}

.modal-dialog-sm{width:min(420px, calc(100% - 24px));}

.login-dialog{max-width:420px;}
.login-body{padding:24px 20px 20px;}
.login-brand{
  display:flex;
  align-items:center;
  gap:10px;
  margin-bottom:18px;
  font-weight:900;
}
.login-note{
  color:rgba(15,23,42,.72);
  margin-bottom:18px;
  line-height:1.7;
}
.login-form{display:grid; gap:14px;}
.login-actions{display:flex; flex-direction:column; gap:18px;}
.login-divider{display:flex; align-items:center; gap:12px; justify-content:center; margin:0 -12px;}
.login-divider::before,
.login-divider::after{
  content:'';
  display:block;
  height:1px;
  flex:1;
  background:rgba(15,23,42,.10);
}
.login-divider span{font-size:13px; color:rgba(15,23,42,.65); text-transform:uppercase; letter-spacing:.16em;}
.btn-google{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  background:#ffffff;
  color:#0f172a;
  border:1px solid rgba(15,23,42,.14);
  box-shadow:0 10px 24px rgba(15,23,42,.06);
  transition:transform .18s ease, box-shadow .18s ease, background .18s ease;
}
.btn-google:hover{
  transform:translateY(-1px);
  box-shadow:0 14px 32px rgba(15,23,42,.12);
}
.btn-google:disabled{
  opacity:.65;
  cursor:not-allowed;
}
.login-error{
  min-height:20px;
  color:#dc2626;
  font-size:13px;
  font-weight:700;
}
.toast{
  position:fixed;
  bottom:24px;
  left:50%;
  transform:translateX(-50%) translateY(20px);
  min-width:260px;
  max-width:90%;
  padding:14px 18px;
  border-radius:18px;
  background:rgba(15,23,42,.95);
  color:#fff;
  font-weight:700;
  font-size:13px;
  text-align:center;
  opacity:0;
  pointer-events:none;
  transition:opacity .22s ease, transform .22s ease;
  z-index:110;
}
.toast-show{
  opacity:1;
  transform:translateX(-50%) translateY(0);
}
.toast-error{background:rgba(220,38,38,.95);}
.toast-success{background:rgba(16,185,129,.95);}
.login-footer{display:flex; justify-content:flex-end; gap:10px;}

.modal-dialog-lg{ width:min(980px, calc(100% - 24px)); }

.modal-header{
  display:flex; align-items:flex-start; justify-content:space-between; gap:12px;
  padding:16px 16px 12px;
  background:linear-gradient(180deg, rgba(13,92,255,.06) 0%, rgba(255,255,255,1) 55%);
  border-bottom:1px solid rgba(13,92,255,.10);
}

.modal-title{ font-family:Poppins, Inter, sans-serif; font-weight:900; font-size:18px; }
.modal-subtitle{ color:rgba(15,23,42,.70); font-weight:650; font-size:13.5px; margin-top:4px; }

.modal-body{ padding:16px; }
.modal-footer{
  padding:12px 16px 16px;
  border-top:1px solid rgba(13,92,255,.10);
  display:flex; justify-content:flex-end; gap:12px; flex-wrap:wrap;
}

.icon-btn{
  width:38px; height:38px; border-radius:12px;
  border:1px solid rgba(13,92,255,.14);
  background:#fff;
  cursor:pointer;
  display:inline-flex; align-items:center; justify-content:center;
  font-weight:900; color:rgba(15,23,42,.75);
}
.icon-btn:hover{ box-shadow: var(--shadow-sm); }

.role-grid{ display:grid; grid-template-columns:1fr; gap:12px; }
.role-card{
  width:100%; text-align:left;
  border-radius:16px;
  padding:14px 14px;
  border:1px solid rgba(13,92,255,.12);
  background:linear-gradient(135deg, rgba(13,92,255,.06), rgba(255,122,0,.03));
  cursor:pointer;
  transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
.role-card:hover{ transform:translateY(-3px); box-shadow: var(--shadow-sm); border-color: rgba(13,92,255,.22); }
.role-title{ font-family:Poppins, Inter, sans-serif; font-weight:900; margin-top:6px; }
.role-desc{ color:rgba(15,23,42,.70); font-weight:650; font-size:13.5px; margin-top:6px; line-height:1.6; }
.role-badge{ display:inline-flex; padding:7px 10px; border-radius:999px; font-weight:900; font-size:12.5px; border:1px solid rgba(13,92,255,.18); }
.role-badge-admin{ background:rgba(13,92,255,.10); color:rgba(13,92,255,.95); }
.role-badge-user{ background:rgba(255,122,0,.12); color:rgba(255,122,0,.95); border-color: rgba(255,122,0,.22); }
.role-badge-penghuni{ background:rgba(34,197,94,.12); color:rgba(16,185,129,.95); border-color: rgba(34,197,94,.22); }

.detail-grid{ display:grid; grid-template-columns:1fr; gap:16px; align-items:flex-start; }
.detail-image{
  border-radius:18px;
  height:240px;
  display:flex; align-items:center; justify-content:center;
  border:1px dashed rgba(13,92,255,.28);
  background:linear-gradient(135deg, rgba(13,92,255,.10), rgba(255,122,0,.06));
  box-shadow: var(--shadow-sm);
  padding:12px;
  font-weight:900; color:rgba(15,23,42,.62);
}
.detail-meta{ display:flex; gap:12px; flex-wrap:wrap; margin-top:12px; }
.detail-price{ color:var(--blue); font-weight:900; font-family:Poppins, Inter, sans-serif; font-size:22px; }
.detail-rating{ color:rgba(15,23,42,.65); font-weight:900; }

.detail-right{ background:rgba(13,92,255,.02); border-radius:18px; border:1px solid rgba(13,92,255,.10); padding:14px; }
.detail-title{ margin:10px 0 6px; font-family:Poppins, Inter, sans-serif; font-weight:900; }
.detail-desc{ margin:0; color:rgba(15,23,42,.72); font-weight:650; line-height:1.7; }

.detail-section{ margin-top:14px; }
.detail-section-title{ font-weight:900; font-family:Poppins, Inter, sans-serif; margin-bottom:8px; color:rgba(15,23,42,.86); }
.detail-pill{ display:flex; gap:8px; flex-wrap:wrap; }
.detail-pills{ display:flex; gap:10px; flex-wrap:wrap; }

.admin-only{ display:none; }
.admin-only[data-show="true"]{ display:block; }

.divider{ height:1px; background:rgba(13,92,255,.14); margin:12px 0; }

.form-grid{ display:grid; grid-template-columns:1fr; gap:12px; }
.field{ display:flex; flex-direction:column; gap:8px; }
.field-full{ grid-column:1 / -1; }
.field-label{ font-weight:900; color:rgba(15,23,42,.82); font-size:13.5px; }
.field-input{
  border-radius:12px;
  border:1px solid rgba(13,92,255,.14);
  padding:11px 12px;
  outline:none;
  background:#fff;
}

textarea.field-input{ min-height:110px; }

.segmented{ display:flex; gap:10px; flex-wrap:wrap; }
.seg-btn{
  border-radius:999px;
  padding:10px 12px;
  border:1px solid rgba(13,92,255,.16);
  background:#fff;
  cursor:pointer;
  font-weight:900;
  color:rgba(15,23,42,.80);
}
.seg-btn:hover{ box-shadow: var(--shadow-sm); }

.upload-placeholder{
  border-radius:14px;
  border:1px dashed rgba(13,92,255,.28);
  background:rgba(13,92,255,.04);
  padding:14px;
  font-weight:900;
  color:rgba(15,23,42,.62);
}

.admin-actions{ margin-top:14px; display:flex; justify-content:flex-end; }

.facility-pill{
  padding:9px 11px;
  border-radius:999px;
  border:1px solid rgba(13,92,255,.14);
  background:#fff;
  font-weight:850;
  color:rgba(15,23,42,.78);
  font-size:13.5px;
}

@media (min-width: 768px){
  .role-grid{ grid-template-columns:1fr 1fr; }
  .detail-grid{ grid-template-columns:.85fr 1.15fr; }
}

