/* MikroTik Helper Rust — Bootstrap 5.3 theme + port custom class dari Pico version */
.htmx-indicator { display: none; opacity: 0; transition: opacity .2s ease-in; }
.htmx-request .htmx-indicator, .htmx-request.htmx-indicator { display: inline-block; opacity: 1; }

.frozen { position: sticky; left: 0; z-index: 10; background-clip: padding-box; }
.table-striped > tbody > tr:nth-of-type(odd) > td.frozen { background-color: #f2f2f2 !important; }
.table-striped > tbody > tr:nth-of-type(even) > td.frozen { background-color: #fff !important; }

.unauthorized-row td { color: #af291d !important; font-style: italic; }
.disabled-row td { color: #af291d !important; }
.disabled-row td:not(:nth-last-child(1)):not(:nth-last-child(2)) { text-decoration: line-through; }
.disabled-row td code { text-decoration: line-through; color: #af291d !important; }
.disabled-row td button, .disabled-row td input { text-decoration: none !important; opacity: .7; }

.pointer { cursor: pointer; user-select: none; }
.th-flex { display: flex; justify-content: space-between; align-items: center; }

.binding-up { background-color: #adff2f !important; color: #000 !important; }
.binding-down { background-color: #dc143c !important; color: #fff !important; }
.binding-block { display: block; text-align: center; font-size: .7rem; }

.card-alert { padding: 1rem; border-radius: 6px; font-weight: 700; text-align: center; margin-bottom: 1rem; }
.card-alert.error { background-color: #d93526; color: #fff; }
.card-alert.success { background-color: #2d9d78; color: #fff; }

.input-error-msg { color: #dc3545; font-size: .75rem; margin-top: .25rem; display: block; }
dialog { border: none; }
dialog::backdrop { background: rgba(0,0,0,.5); }
@keyframes highlightSuccess { 0% { background-color: rgba(45,157,120,.4); } 100% { background-color: transparent; } }
.success-flash { animation: highlightSuccess 4s ease-out; }
