/* Portal pelanggan: teks panjang (URL, kode bayar, nama paket, alamat, pesan)
   dipatahkan ke baris baru supaya tidak keluar dari card/kotak. Dipasang di
   semua halaman portal lewat <link href="portal_wrap.css"> sebelum <body>. */
html, body { overflow-wrap: break-word; }
body { overflow-x: hidden; }
.card, .card-body, .card-header, .card-footer, .card-title, .card-text,
.modal-body, .modal-title, .alert, .list-group-item, .toast-body,
.container, .container-fluid, [class*="card"], [class*="box"], [class*="item"],
p, li, dd, dt, label, small, strong, b, span, a, h1, h2, h3, h4, h5, h6, td, th {
  overflow-wrap: break-word;
  word-break: break-word;
}
.card, .card-body, .modal-body, .alert, .list-group-item { min-width: 0; max-width: 100%; }
.d-flex > *, .row > *, [style*="display:flex"] > *, [style*="display: flex"] > * { min-width: 0; }
pre, code, kbd, samp { white-space: pre-wrap; word-break: break-all; overflow-wrap: anywhere; max-width: 100%; }
img, video, iframe, canvas, svg { max-width: 100%; }
img, video { height: auto; }
table { max-width: 100%; }
.table-responsive, .table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
input, select, textarea { max-width: 100%; }
select option { white-space: normal; }
.btn { white-space: normal; word-break: break-word; }
