
:root{
  --bg:#071120;--bg2:#0b1628;--card:rgba(9,18,33,.78);--card2:rgba(15,29,50,.82);
  --text:#eaf2ff;--muted:#8ea4c6;--line:rgba(141,173,225,.18);--primary:#3f8cff;--primary2:#69b1ff;
  --danger:#ff5f73;--success:#42d38b;--warning:#ffd166;--shadow:0 22px 70px rgba(0,0,0,.38);--radius:22px;
}
html[data-theme="light"]{
  --bg:#f4f7fb;--bg2:#ffffff;--card:rgba(255,255,255,.86);--card2:rgba(255,255,255,.94);
  --text:#142033;--muted:#637086;--line:rgba(20,32,51,.13);--primary:#1769ff;--primary2:#0b7cff;
  --shadow:0 18px 55px rgba(31,56,88,.14);
}
*{box-sizing:border-box} body{min-height:100vh;margin:0;color:var(--text);font-family:Inter,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;background:var(--bg);}
body::before{content:"";position:fixed;inset:0;z-index:-3;background:url('../img/map-bg.png') center/cover no-repeat;opacity:.62;filter:saturate(1.08)}
html[data-theme="light"] body::before{opacity:.12;filter:saturate(.75)}
body::after{content:"";position:fixed;inset:0;z-index:-2;background:radial-gradient(circle at 15% 10%,rgba(63,140,255,.22),transparent 30%),linear-gradient(180deg,rgba(3,9,19,.72),rgba(3,8,16,.94));pointer-events:none}
html[data-theme="light"] body::after{background:linear-gradient(180deg,rgba(244,247,251,.84),rgba(244,247,251,.94))}
a{color:var(--primary2)} .container,.container-fluid{position:relative}.page-shell{max-width:1440px;margin:0 auto;padding:28px 22px 48px}.glass,.card,.modal-content,.dropdown-menu{background:var(--card)!important;border:1px solid var(--line)!important;box-shadow:var(--shadow);backdrop-filter:blur(18px);border-radius:var(--radius)!important;color:var(--text)!important}.navbar{background:rgba(5,13,26,.78)!important;border-bottom:1px solid var(--line);backdrop-filter:blur(18px);box-shadow:0 12px 40px rgba(0,0,0,.2)}html[data-theme="light"] .navbar{background:rgba(255,255,255,.82)!important}.navbar-brand{font-weight:900;letter-spacing:.2px;color:var(--text)!important}.nav-link{color:var(--muted)!important;border-radius:14px;padding:.62rem .86rem!important}.nav-link:hover,.nav-link.active{color:var(--text)!important;background:rgba(63,140,255,.13)}.btn{border-radius:14px;font-weight:700}.btn-primary{background:linear-gradient(135deg,var(--primary),#65b7ff);border:0;box-shadow:0 12px 32px rgba(63,140,255,.28)}.btn-outline-light,.btn-outline-secondary{color:var(--text);border-color:var(--line);background:rgba(255,255,255,.04)}.btn-danger{border:0;background:linear-gradient(135deg,#ff4d68,#cc2740)}.table{--bs-table-bg:transparent;--bs-table-color:var(--text);--bs-table-border-color:var(--line);color:var(--text);border-color:var(--line);overflow:hidden}.table thead th{color:var(--muted);font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid var(--line);background:rgba(255,255,255,.04)}.table tbody tr:hover{background:rgba(63,140,255,.08)}.form-control,.form-select,textarea{background:rgba(255,255,255,.07)!important;border:1px solid var(--line)!important;color:var(--text)!important;border-radius:14px!important}.form-control:focus,.form-select:focus{box-shadow:0 0 0 .22rem rgba(63,140,255,.2)!important}.form-label{color:var(--muted);font-weight:700}.text-muted,.small{color:var(--muted)!important}.page-title{font-size:clamp(28px,4vw,46px);font-weight:950;letter-spacing:-.04em}.hero{display:grid;grid-template-columns:1.25fr .75fr;gap:22px;margin-bottom:26px}.hero-panel{padding:28px}.quick-grid{display:grid;grid-template-columns:repeat(4,minmax(160px,1fr));gap:16px;margin:22px 0}.quick-card{display:block;text-decoration:none;color:var(--text);padding:22px;min-height:145px;transition:.2s transform,.2s border-color}.quick-card:hover{transform:translateY(-4px);border-color:rgba(63,140,255,.48)!important;color:var(--text)}.quick-icon{width:54px;height:54px;border-radius:18px;display:grid;place-items:center;font-size:26px;background:linear-gradient(135deg,rgba(63,140,255,.24),rgba(105,177,255,.12));border:1px solid var(--line);margin-bottom:18px}.stat-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.stat{padding:18px}.stat-value{font-size:32px;font-weight:950}.pill{display:inline-flex;align-items:center;gap:8px;padding:7px 11px;border:1px solid var(--line);border-radius:999px;background:rgba(255,255,255,.05);color:var(--muted)}.status-dot{width:10px;height:10px;border-radius:999px;background:var(--muted);box-shadow:0 0 18px currentColor}.online{color:var(--success)}.warn{color:var(--warning)}.offline{color:var(--danger)}.login-page{display:grid;place-items:center;min-height:100vh;padding:24px}.login-card{width:min(460px,100%);padding:34px}.brand-mark{width:62px;height:62px;border-radius:22px;display:grid;place-items:center;background:linear-gradient(135deg,var(--primary),#6bbcff);box-shadow:0 18px 50px rgba(63,140,255,.34);font-size:30px;margin:0 auto 18px}.theme-toggle{min-width:44px}.leaflet-container{border-radius:20px;border:1px solid var(--line)}@media(max-width:1000px){.hero{grid-template-columns:1fr}.quick-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:560px){.quick-grid,.stat-grid{grid-template-columns:1fr}.page-shell{padding:18px 12px}.login-card{padding:24px}}


/* Step 5: row-wide status gradient, not per-cell blocks */
.table{
  --bs-table-color:var(--text)!important;
  --bs-table-hover-color:var(--text)!important;
  --bs-table-striped-color:var(--text)!important;
  --bs-table-active-color:var(--text)!important;
  border-collapse:separate!important;
  border-spacing:0 8px!important;
}
.table>:not(caption)>*>*{
  color:var(--text)!important;
  background:transparent!important;
  background-color:transparent!important;
  box-shadow:none!important;
  border-top:1px solid transparent!important;
  border-bottom:1px solid transparent!important;
}
.table tbody tr{
  position:relative;
  overflow:hidden;
  transition:filter .18s ease, transform .18s ease, box-shadow .18s ease;
}
.table tbody tr:hover,
.table-hover>tbody>tr:hover>*{
  color:var(--text)!important;
  background:transparent!important;
  background-color:transparent!important;
}
.table tbody tr:hover{
  filter:brightness(1.08);
  transform:translateY(-1px);
}
.table tbody tr:hover .muted,
.table tbody tr:hover .small{color:var(--muted)!important;}
.table .btn:hover,.table .btn:focus{color:#fff!important;}
.table .badge-soft:hover{color:var(--text)!important;}
.dropdown-item,.dropdown-item:hover,.dropdown-item:focus{color:var(--text)!important;}
.form-select option{background:var(--bg2);color:var(--text);}
html[data-theme="dark"] .btn-outline-secondary:hover,
html[data-theme="dark"] .btn-outline-light:hover,
html[data-theme="dark"] .btn-secondary:hover{color:#fff!important;background:rgba(63,140,255,.22)!important;border-color:rgba(63,140,255,.5)!important;}

.review-ok{
  background:linear-gradient(90deg,
    rgba(20,88,2,.66) 0%,
    rgba(20,88,2,.60) 28%,
    rgba(20,88,2,.46) 52%,
    rgba(20,88,2,.20) 78%,
    rgba(20,88,2,.055) 100%)!important;
  box-shadow:inset 4px 0 0 var(--success), 0 8px 26px rgba(20,88,2,.14);
}
.review-pending{
  background:linear-gradient(90deg,
    rgba(255,193,7,.56) 0%,
    rgba(255,193,7,.50) 28%,
    rgba(255,193,7,.38) 54%,
    rgba(255,193,7,.16) 80%,
    rgba(255,193,7,.050) 100%)!important;
  box-shadow:inset 4px 0 0 var(--warning), 0 8px 30px rgba(255,193,7,.11), 0 0 22px rgba(255,193,7,.055);
}
.review-ok>*{border-top-color:rgba(66,211,139,.24)!important;border-bottom-color:rgba(66,211,139,.18)!important;}
.review-pending>*{border-top-color:rgba(255,209,102,.26)!important;border-bottom-color:rgba(255,209,102,.18)!important;}
.review-ok td:first-child,.review-pending td:first-child{border-radius:14px 0 0 14px!important;}
.review-ok td:last-child,.review-pending td:last-child{border-radius:0 14px 14px 0!important;}
.review-ok:hover{box-shadow:inset 4px 0 0 var(--success), 0 12px 34px rgba(20,88,2,.20);}
.review-pending:hover{box-shadow:inset 4px 0 0 var(--warning), 0 12px 36px rgba(255,193,7,.16), 0 0 26px rgba(255,193,7,.09);}
.review-badge{display:inline-flex;align-items:center;gap:6px;padding:5px 9px;border-radius:999px;font-size:.76rem;font-weight:800;border:1px solid var(--line);color:var(--muted);background:rgba(255,255,255,.055);}
.review-ok .review-badge{color:#caffdf;background:rgba(66,211,139,.16);border-color:rgba(66,211,139,.36);}
.review-pending .review-badge{color:#ffe8a6;background:rgba(255,193,7,.16);border-color:rgba(255,193,7,.38);}

html[data-theme="light"] .review-ok{
  background:linear-gradient(90deg,
    #9ee89d 0%,
    #a9eea8 30%,
    #c7f4c6 58%,
    #e6fae6 84%,
    #f8fff8 100%)!important;
  box-shadow:inset 4px 0 0 #16833f, 0 8px 24px rgba(20,88,2,.10);
}
html[data-theme="light"] .review-pending{
  background:linear-gradient(90deg,
    #ffd84d 0%,
    #ffe06b 30%,
    #ffeba3 58%,
    #fff6d6 84%,
    #fffdf5 100%)!important;
  box-shadow:inset 4px 0 0 #d99a00, 0 8px 24px rgba(217,154,0,.12);
}
html[data-theme="light"] .review-ok:hover{box-shadow:inset 4px 0 0 #16833f, 0 12px 30px rgba(20,88,2,.14);}
html[data-theme="light"] .review-pending:hover{box-shadow:inset 4px 0 0 #d99a00, 0 12px 30px rgba(217,154,0,.16);}
html[data-theme="light"] .review-ok .review-badge{color:#07582f;background:#dff7e8;border-color:#7edaa6;}
html[data-theme="light"] .review-pending .review-badge{color:#6f4b00;background:#fff0b8;border-color:#e7b82f;}


/* Step 15: light theme = professional solid cards, no gradient, no hover stripes */
html[data-theme="light"] .table{
  border-spacing:0 10px!important;
}

html[data-theme="light"] .table tbody tr.review-ok,
html[data-theme="light"] .table tbody tr.review-pending{
  filter:none;
}

/* Суцільна заливка без переходу: не кислотна, більш дорога/спокійна */
html[data-theme="light"] .review-ok{
  background:#dff3e6!important;
  box-shadow:0 8px 22px rgba(15,86,49,.08), 0 1px 0 rgba(255,255,255,.9)!important;
}
html[data-theme="light"] .review-pending{
  background:#fff1bf!important;
  box-shadow:0 8px 22px rgba(145,103,0,.10), 0 1px 0 rgba(255,255,255,.9)!important;
}

/* Контур лишається, але тонший і не дитячий */
html[data-theme="light"] .review-ok>*{
  border-top:1px solid #8acb9d!important;
  border-bottom:1px solid #8acb9d!important;
}
html[data-theme="light"] .review-pending>*{
  border-top:1px solid #e2bd57!important;
  border-bottom:1px solid #e2bd57!important;
}
html[data-theme="light"] .review-ok td:first-child{
  border-left:1px solid #8acb9d!important;
  border-radius:16px 0 0 16px!important;
}
html[data-theme="light"] .review-ok td:last-child{
  border-right:1px solid #8acb9d!important;
  border-radius:0 16px 16px 0!important;
}
html[data-theme="light"] .review-pending td:first-child{
  border-left:1px solid #e2bd57!important;
  border-radius:16px 0 0 16px!important;
}
html[data-theme="light"] .review-pending td:last-child{
  border-right:1px solid #e2bd57!important;
  border-radius:0 16px 16px 0!important;
}

/* Hover без лівих/правих рисок: тільки легкий підйом */
html[data-theme="light"] .review-ok:hover{
  filter:brightness(1.015);
  transform:translateY(-1px);
  box-shadow:0 12px 28px rgba(15,86,49,.12), 0 0 0 1px rgba(63,140,255,.08)!important;
}
html[data-theme="light"] .review-pending:hover{
  filter:brightness(1.015);
  transform:translateY(-1px);
  box-shadow:0 12px 28px rgba(145,103,0,.14), 0 0 0 1px rgba(63,140,255,.08)!important;
}
html[data-theme="light"] .table tbody tr:hover,
html[data-theme="light"] .table-hover>tbody>tr:hover>*{
  color:var(--text)!important;
  background:transparent!important;
  background-color:transparent!important;
}

/* Бейджі теж спокійніші */
html[data-theme="light"] .review-ok .review-badge{
  color:#11643a;
  background:#eefaf2;
  border-color:#8acb9d;
}
html[data-theme="light"] .review-pending .review-badge{
  color:#745100;
  background:#fff8dc;
  border-color:#e2bd57;
}


/* Step 16: clean status strip + no extra subtitle */
#quickSearch::placeholder{
  color:rgba(234,242,255,.64)!important;
  opacity:1!important;
}
html[data-theme="light"] #quickSearch::placeholder{
  color:rgba(20,32,51,.48)!important;
}

/* Прибираємо старі прямі inset-смуги: замість них буде окрема заокруглена смуга всередині рядка */
.review-ok,
.review-pending,
.review-ok:hover,
.review-pending:hover,
html[data-theme="light"] .review-ok,
html[data-theme="light"] .review-pending,
html[data-theme="light"] .review-ok:hover,
html[data-theme="light"] .review-pending:hover{
  box-shadow:none!important;
}

.review-ok td:first-child,
.review-pending td:first-child{
  position:relative!important;
  padding-left:20px!important;
}
.review-ok td:first-child::before,
.review-pending td:first-child::before{
  content:"";
  position:absolute;
  left:7px;
  top:10px;
  bottom:10px;
  width:5px;
  border-radius:999px;
  pointer-events:none;
}
.review-ok td:first-child::before{
  background:#42d38b;
  box-shadow:0 0 14px rgba(66,211,139,.35);
}
.review-pending td:first-child::before{
  background:#ffd166;
  box-shadow:0 0 14px rgba(255,209,102,.38);
}

/* Темна тема: лишаємо красивий градієнт, але смуга тепер заокруглена */
html[data-theme="dark"] .review-ok{
  background:linear-gradient(90deg,
    rgba(20,88,2,.62) 0%,
    rgba(20,88,2,.56) 28%,
    rgba(20,88,2,.42) 54%,
    rgba(20,88,2,.18) 80%,
    rgba(20,88,2,.055) 100%)!important;
  box-shadow:0 8px 26px rgba(20,88,2,.14)!important;
}
html[data-theme="dark"] .review-pending{
  background:linear-gradient(90deg,
    rgba(255,193,7,.56) 0%,
    rgba(255,193,7,.50) 28%,
    rgba(255,193,7,.38) 54%,
    rgba(255,193,7,.16) 80%,
    rgba(255,193,7,.050) 100%)!important;
  box-shadow:0 8px 30px rgba(255,193,7,.11), 0 0 22px rgba(255,193,7,.055)!important;
}
html[data-theme="dark"] .review-ok:hover{
  box-shadow:0 12px 34px rgba(20,88,2,.20)!important;
}
html[data-theme="dark"] .review-pending:hover{
  box-shadow:0 12px 36px rgba(255,193,7,.16), 0 0 26px rgba(255,193,7,.09)!important;
}

/* Світла тема: контур + суцільна заливка без переходу + насичена смуга */
html[data-theme="light"] .review-ok{
  background:#d5efd9!important;
  box-shadow:0 9px 23px rgba(15,86,49,.09), 0 1px 0 rgba(255,255,255,.9)!important;
}
html[data-theme="light"] .review-pending{
  background:#ffe9a6!important;
  box-shadow:0 9px 23px rgba(145,103,0,.11), 0 1px 0 rgba(255,255,255,.9)!important;
}
html[data-theme="light"] .review-ok:hover{
  filter:brightness(1.012);
  transform:translateY(-1px);
  box-shadow:0 12px 28px rgba(15,86,49,.13)!important;
}
html[data-theme="light"] .review-pending:hover{
  filter:brightness(1.012);
  transform:translateY(-1px);
  box-shadow:0 12px 28px rgba(145,103,0,.15)!important;
}
html[data-theme="light"] .review-ok td:first-child::before{
  background:#16833f;
  box-shadow:none;
}
html[data-theme="light"] .review-pending td:first-child::before{
  background:#d99a00;
  box-shadow:none;
}

/* Step 17: status color is part of row start, modal close fix, professional actions */
/* прибрати окрему рисочку — статусна смуга тепер зливається з початком рядка */
.review-ok td:first-child::before,
.review-pending td:first-child::before{
  content:none!important;
  display:none!important;
}
.review-ok td:first-child,
.review-pending td:first-child{
  padding-left:14px!important;
}

html[data-theme="dark"] .review-ok{
  background:linear-gradient(90deg,
    #42d38b 0 7px,
    rgba(20,88,2,.70) 7px,
    rgba(20,88,2,.62) 34%,
    rgba(20,88,2,.42) 62%,
    rgba(20,88,2,.15) 86%,
    rgba(20,88,2,.055) 100%)!important;
  box-shadow:0 10px 30px rgba(20,88,2,.18)!important;
}
html[data-theme="dark"] .review-pending{
  background:linear-gradient(90deg,
    #ffd166 0 7px,
    rgba(255,193,7,.62) 7px,
    rgba(255,193,7,.54) 34%,
    rgba(255,193,7,.34) 62%,
    rgba(255,193,7,.13) 86%,
    rgba(255,193,7,.050) 100%)!important;
  box-shadow:0 10px 32px rgba(255,193,7,.13)!important;
}
html[data-theme="light"] .review-ok{
  background:linear-gradient(90deg,
    #16833f 0 7px,
    #cbe9d2 7px,
    #cbe9d2 100%)!important;
  box-shadow:0 9px 24px rgba(15,86,49,.10), 0 0 0 1px rgba(22,131,63,.26)!important;
}
html[data-theme="light"] .review-pending{
  background:linear-gradient(90deg,
    #d99a00 0 7px,
    #ffe39a 7px,
    #ffe39a 100%)!important;
  box-shadow:0 9px 24px rgba(145,103,0,.12), 0 0 0 1px rgba(217,154,0,.30)!important;
}
html[data-theme="light"] .review-ok:hover{
  box-shadow:0 13px 30px rgba(15,86,49,.14), 0 0 0 1px rgba(22,131,63,.34)!important;
}
html[data-theme="light"] .review-pending:hover{
  box-shadow:0 13px 30px rgba(145,103,0,.16), 0 0 0 1px rgba(217,154,0,.38)!important;
}

/* темна тема: хрестик у модалці має бути світлий */
html[data-theme="dark"] .modal .btn-close{
  filter:invert(1) grayscale(100%) brightness(210%)!important;
  opacity:.82;
}
html[data-theme="dark"] .modal .btn-close:hover{opacity:1;}
.modal-header,.modal-footer{border-color:var(--line)!important;}

/* цікавіша кнопка відкриття запису */
.btn-action-view{
  color:#eaf2ff!important;
  border:1px solid rgba(63,140,255,.45)!important;
  background:linear-gradient(135deg,rgba(63,140,255,.92),rgba(105,177,255,.72))!important;
  box-shadow:0 10px 24px rgba(63,140,255,.22);
  border-radius:999px!important;
  padding:.42rem .78rem!important;
  font-weight:850!important;
}
.btn-action-view:hover,.btn-action-view:focus{
  color:#fff!important;
  transform:translateY(-1px);
  box-shadow:0 14px 30px rgba(63,140,255,.30);
}
html[data-theme="light"] .btn-action-view{
  color:#0b2a55!important;
  background:linear-gradient(135deg,#d8eaff,#bcd9ff)!important;
  border-color:#8ab8ff!important;
  box-shadow:0 8px 20px rgba(23,105,255,.15);
}
html[data-theme="light"] .btn-action-view:hover{color:#071b36!important;}

.btn-review-toggle{
  color:var(--text)!important;
  border:1px solid var(--line)!important;
  background:rgba(255,255,255,.07)!important;
  border-radius:999px!important;
  font-weight:850!important;
  padding:.58rem 1rem!important;
}
.btn-review-toggle:hover,.btn-review-toggle:focus{
  color:var(--text)!important;
  background:rgba(63,140,255,.16)!important;
  border-color:rgba(63,140,255,.42)!important;
}

/* Step 18: modal status follows reviewed state */
.modal-review-status{
  display:inline-flex;align-items:center;gap:6px;
  padding:5px 10px;border-radius:999px;
  font-size:.78rem;font-weight:900;
  border:1px solid var(--line);
  background:rgba(255,255,255,.06);
  color:var(--muted);
  transition:background .25s ease,color .25s ease,border-color .25s ease,box-shadow .25s ease;
}
#viewDetailsModal .modal-content{
  transition:background .28s ease,border-color .28s ease,box-shadow .28s ease;
}
#viewDetailsModal.modal-review-pending .modal-content{
  background:linear-gradient(180deg,rgba(255,193,7,.16),var(--card) 34%,var(--card) 100%)!important;
  border-color:rgba(255,209,102,.36)!important;
  box-shadow:0 24px 80px rgba(0,0,0,.40),0 0 38px rgba(255,193,7,.10)!important;
}
#viewDetailsModal.modal-review-ok .modal-content{
  background:linear-gradient(180deg,rgba(66,211,139,.14),var(--card) 34%,var(--card) 100%)!important;
  border-color:rgba(66,211,139,.34)!important;
  box-shadow:0 24px 80px rgba(0,0,0,.40),0 0 38px rgba(66,211,139,.10)!important;
}
#viewDetailsModal.modal-review-pending .modal-review-status{
  color:#ffe8a6;background:rgba(255,193,7,.18);border-color:rgba(255,209,102,.42);
  box-shadow:0 0 18px rgba(255,193,7,.10);
}
#viewDetailsModal.modal-review-ok .modal-review-status{
  color:#caffdf;background:rgba(66,211,139,.16);border-color:rgba(66,211,139,.40);
  box-shadow:0 0 18px rgba(66,211,139,.10);
}
html[data-theme="light"] #viewDetailsModal.modal-review-pending .modal-content{
  background:linear-gradient(180deg,#fff1bd 0%,var(--card2) 38%,var(--card2) 100%)!important;
  border-color:rgba(217,154,0,.34)!important;
  box-shadow:0 22px 64px rgba(145,103,0,.16)!important;
}
html[data-theme="light"] #viewDetailsModal.modal-review-ok .modal-content{
  background:linear-gradient(180deg,#d8f1dc 0%,var(--card2) 38%,var(--card2) 100%)!important;
  border-color:rgba(22,131,63,.30)!important;
  box-shadow:0 22px 64px rgba(15,86,49,.14)!important;
}
html[data-theme="light"] #viewDetailsModal.modal-review-pending .modal-review-status{
  color:#7a5300;background:#ffe39a;border-color:rgba(217,154,0,.38);
}
html[data-theme="light"] #viewDetailsModal.modal-review-ok .modal-review-status{
  color:#0f6840;background:#cbe9d2;border-color:rgba(22,131,63,.34);
}
.btn-review-toggle.is-pending{
  color:#2f2100!important;
  background:linear-gradient(135deg,#ffd166,#ffe39a)!important;
  border-color:rgba(255,209,102,.70)!important;
  box-shadow:0 10px 24px rgba(255,193,7,.16);
}
.btn-review-toggle.is-reviewed{
  color:#062916!important;
  background:linear-gradient(135deg,#42d38b,#8ee7b3)!important;
  border-color:rgba(66,211,139,.70)!important;
  box-shadow:0 10px 24px rgba(66,211,139,.14);
}
.btn-review-toggle.is-pending:hover,.btn-review-toggle.is-reviewed:hover{
  filter:brightness(1.04);transform:translateY(-1px);
}


/* Step 19: map view inside modal without unwanted scroll */
#viewDetailsModal.modal-map-open .modal-body{
  overflow:hidden!important;
}
#viewDetailsModal.modal-map-open .modal-dialog{
  max-height:calc(100vh - 3.5rem);
}
#viewDetailsModal.modal-map-open #mapContainer{
  overflow:hidden;
}
#viewDetailsModal.modal-map-open #map{
  height:min(430px, calc(100vh - 260px))!important;
  min-height:340px;
  overflow:hidden;
  border-radius:18px;
}
#viewDetailsModal.modal-map-open .leaflet-container{
  touch-action:pan-x pan-y;
}

/* Step 21: modal previous/next navigation */
.modal-nav-actions{
  display:flex;
  align-items:center;
  gap:8px;
}
.btn-modal-nav{
  display:inline-flex!important;
  align-items:center;
  gap:6px;
  border-radius:999px!important;
  border:1px solid var(--line)!important;
  background:rgba(255,255,255,.065)!important;
  color:var(--text)!important;
  font-weight:850!important;
  padding:.42rem .72rem!important;
  box-shadow:0 8px 22px rgba(0,0,0,.08);
}
.btn-modal-nav:hover:not(:disabled),
.btn-modal-nav:focus:not(:disabled){
  color:var(--text)!important;
  background:rgba(63,140,255,.16)!important;
  border-color:rgba(63,140,255,.40)!important;
  transform:translateY(-1px);
}
.btn-modal-nav:disabled{
  opacity:.38!important;
  cursor:not-allowed!important;
  transform:none!important;
}
@media(max-width:640px){
  .modal-nav-actions{order:3;width:100%;margin:.65rem 0 0!important;justify-content:flex-start;}
  .btn-modal-nav span{display:none;}
}


/* Step 23: smooth previous/next transition inside details modal */
#viewDetailsModal .modal-content{
  position:relative;
  overflow:hidden;
}
#viewDetailsModal .modal-body{
  transition:opacity .16s ease, filter .16s ease, transform .16s ease;
}
#viewDetailsModal.modal-record-switching .modal-body{
  opacity:.48;
  filter:blur(.8px);
  transform:translateY(2px);
  pointer-events:none;
}
#viewDetailsModal.modal-record-switching .modal-content::after{
  content:"";
  position:absolute;
  left:22px;
  right:22px;
  top:0;
  height:3px;
  border-radius:999px;
  background:linear-gradient(90deg,transparent,var(--primary2),transparent);
  animation:buscam-modal-loading 1s linear infinite;
  opacity:.95;
  z-index:5;
}
@keyframes buscam-modal-loading{
  0%{transform:translateX(-35%);opacity:.35}
  50%{opacity:1}
  100%{transform:translateX(35%);opacity:.35}
}
.table tbody tr.is-opened-record{
  outline:2px solid rgba(63,140,255,.42);
  outline-offset:2px;
  filter:brightness(1.08);
}
html[data-theme="light"] .table tbody tr.is-opened-record{
  outline-color:rgba(23,105,255,.34);
}

/* Index refresh: shared dashboard list */
.index-hero{align-items:stretch;}
.index-hero .hero-panel{display:flex;flex-direction:column;justify-content:center;min-height:210px;}
.index-stat-grid .stat{min-height:96px;}
.index-quick-grid{grid-template-columns:repeat(5,minmax(140px,1fr));}
.index-quick-grid .quick-card{min-height:118px;padding:18px;}
.index-quick-grid .quick-card p{display:none;}
.index-quick-grid .quick-icon{width:48px;height:48px;font-size:22px;margin-bottom:14px;}
.index-bus-panel{overflow:hidden;}
.index-search-wrap{width:min(420px,100%);}
.input-group-text{background:rgba(255,255,255,.07)!important;border:1px solid var(--line)!important;color:var(--muted)!important;border-radius:14px 0 0 14px!important;}
.input-group .form-control{border-left:0!important;border-radius:0 14px 14px 0!important;}
.code-pill{display:inline-flex;align-items:center;padding:5px 9px;border-radius:999px;border:1px solid var(--line);background:rgba(255,255,255,.055);font-weight:800;letter-spacing:.02em;}
.index-bus-table tbody tr{transition:filter .18s ease,transform .18s ease,box-shadow .18s ease;}
.index-bus-table tbody tr:hover{filter:brightness(1.05);transform:translateY(-1px);}
.bus-status-row td:first-child{position:relative!important;padding-left:20px!important;}
.bus-status-row td:first-child::before{content:"";position:absolute;left:7px;top:10px;bottom:10px;width:5px;border-radius:999px;pointer-events:none;}
.bus-online td:first-child::before,.bus-recent td:first-child::before{background:#42d38b;box-shadow:0 0 14px rgba(66,211,139,.35);}
.bus-warn td:first-child::before{background:#ffd166;box-shadow:0 0 14px rgba(255,209,102,.38);}
.bus-offline td:first-child::before{background:#ff5f73;box-shadow:0 0 14px rgba(255,95,115,.34);}
.bus-unknown td:first-child::before{background:#8ea4c6;box-shadow:0 0 12px rgba(142,164,198,.24);}
.status-dot.recent{background:var(--success);color:var(--success);}
.status-dot.unknown{background:var(--muted);color:var(--muted);}
.btn-details{display:inline-flex;align-items:center;gap:7px;border:1px solid rgba(63,140,255,.35)!important;background:rgba(63,140,255,.12)!important;color:var(--text)!important;border-radius:999px!important;font-weight:850;padding:.38rem .72rem!important;}
.btn-details:hover{background:rgba(63,140,255,.22)!important;border-color:rgba(63,140,255,.55)!important;color:var(--text)!important;}
.index-map{height:520px;max-height:70vh;border-radius:18px;border:1px solid var(--line);overflow:hidden;}
html[data-theme="dark"] .btn-close{filter:invert(1) grayscale(100%) brightness(1.9);opacity:.85;}
html[data-theme="dark"] .btn-close:hover{opacity:1;}
html[data-theme="dark"] .bus-online,html[data-theme="dark"] .bus-recent{background:linear-gradient(90deg,rgba(20,88,2,.58) 0%,rgba(20,88,2,.42) 42%,rgba(20,88,2,.12) 100%)!important;}
html[data-theme="dark"] .bus-warn{background:linear-gradient(90deg,rgba(255,193,7,.50) 0%,rgba(255,193,7,.34) 42%,rgba(255,193,7,.10) 100%)!important;}
html[data-theme="dark"] .bus-offline{background:linear-gradient(90deg,rgba(255,95,115,.46) 0%,rgba(255,95,115,.28) 42%,rgba(255,95,115,.08) 100%)!important;}
html[data-theme="dark"] .bus-unknown{background:linear-gradient(90deg,rgba(142,164,198,.20) 0%,rgba(142,164,198,.12) 42%,rgba(142,164,198,.04) 100%)!important;}
html[data-theme="light"] .bus-online,html[data-theme="light"] .bus-recent{background:#dff3e6!important;}
html[data-theme="light"] .bus-warn{background:#fff0bd!important;}
html[data-theme="light"] .bus-offline{background:#ffe0e5!important;}
html[data-theme="light"] .bus-unknown{background:#eef3f9!important;}
html[data-theme="light"] .bus-online td,html[data-theme="light"] .bus-recent td{border-top-color:#8acb9d!important;border-bottom-color:#8acb9d!important;}
html[data-theme="light"] .bus-warn td{border-top-color:#e2bd57!important;border-bottom-color:#e2bd57!important;}
html[data-theme="light"] .bus-offline td{border-top-color:#e59aa6!important;border-bottom-color:#e59aa6!important;}
html[data-theme="light"] .bus-unknown td{border-top-color:#c6d1df!important;border-bottom-color:#c6d1df!important;}
html[data-theme="light"] .bus-status-row td:first-child{border-left:1px solid currentColor!important;border-radius:16px 0 0 16px!important;}
html[data-theme="light"] .bus-status-row td:last-child{border-right:1px solid currentColor!important;border-radius:0 16px 16px 0!important;}
@media(max-width:1100px){.index-quick-grid{grid-template-columns:repeat(3,minmax(140px,1fr));}}
@media(max-width:700px){.index-quick-grid{grid-template-columns:repeat(2,minmax(130px,1fr));}.index-map{height:420px;}.bus-status-pill{font-size:.76rem;}}

/* Step 25: index bus list fixes */
.index-bus-table .bus-status-row td:first-child{
  padding-left:14px!important;
}
.index-bus-table .bus-status-row td:first-child::before{
  display:none!important;
}
.index-bus-table .bus-status-row td:first-child{
  border-radius:16px 0 0 16px!important;
}
.index-bus-table .bus-status-row td:last-child{
  border-radius:0 16px 16px 0!important;
}
.index-bus-table .bus-online td:first-child,
.index-bus-table .bus-recent td:first-child{
  background:rgba(66,211,139,.22)!important;
}
.index-bus-table .bus-warn td:first-child{
  background:rgba(255,209,102,.25)!important;
}
.index-bus-table .bus-offline td:first-child{
  background:rgba(255,95,115,.24)!important;
}
.index-bus-table .bus-unknown td:first-child{
  background:rgba(142,164,198,.18)!important;
}
html[data-theme="dark"] .index-bus-table .bus-online,
html[data-theme="dark"] .index-bus-table .bus-recent{
  background:linear-gradient(90deg,rgba(20,88,2,.72) 0%,rgba(20,88,2,.54) 24%,rgba(20,88,2,.26) 62%,rgba(20,88,2,.08) 100%)!important;
}
html[data-theme="dark"] .index-bus-table .bus-warn{
  background:linear-gradient(90deg,rgba(255,193,7,.64) 0%,rgba(255,193,7,.46) 24%,rgba(255,193,7,.22) 62%,rgba(255,193,7,.07) 100%)!important;
}
html[data-theme="dark"] .index-bus-table .bus-offline{
  background:linear-gradient(90deg,rgba(255,95,115,.58) 0%,rgba(255,95,115,.40) 24%,rgba(255,95,115,.18) 62%,rgba(255,95,115,.06) 100%)!important;
}
html[data-theme="dark"] .index-bus-table .bus-unknown{
  background:linear-gradient(90deg,rgba(142,164,198,.26) 0%,rgba(142,164,198,.18) 24%,rgba(142,164,198,.08) 62%,rgba(142,164,198,.035) 100%)!important;
}
html[data-theme="light"] .index-bus-table .bus-online,
html[data-theme="light"] .index-bus-table .bus-recent{
  background:#dff3e6!important;
}
html[data-theme="light"] .index-bus-table .bus-warn{
  background:#fff0bd!important;
}
html[data-theme="light"] .index-bus-table .bus-offline{
  background:#ffe0e5!important;
}
html[data-theme="light"] .index-bus-table .bus-unknown{
  background:#eef3f9!important;
}
html[data-theme="light"] .index-bus-table .bus-online td:first-child,
html[data-theme="light"] .index-bus-table .bus-recent td:first-child{
  background:#bfe9cc!important;
}
html[data-theme="light"] .index-bus-table .bus-warn td:first-child{
  background:#ffe08a!important;
}
html[data-theme="light"] .index-bus-table .bus-offline td:first-child{
  background:#ffc2cc!important;
}
html[data-theme="light"] .index-bus-table .bus-unknown td:first-child{
  background:#d9e3ef!important;
}
.index-bus-table .status-dot.online,
.index-bus-table .status-dot.recent{background:var(--success);color:var(--success);}
.index-bus-table .status-dot.warn{background:var(--warning);color:var(--warning);}
.index-bus-table .status-dot.offline{background:var(--danger);color:var(--danger);}
.index-bus-table .status-dot.unknown{background:var(--muted);color:var(--muted);}

/* Step 26: index status strip like photo list + clickable counters */
.index-stat-grid .stat-jump{
  text-align:left;
  width:100%;
  border:1px solid var(--line)!important;
  color:var(--text)!important;
  cursor:pointer;
  transition:transform .18s ease, filter .18s ease, border-color .18s ease;
}
.index-stat-grid .stat-jump:hover{
  transform:translateY(-2px);
  filter:brightness(1.06);
  border-color:rgba(63,140,255,.36)!important;
}
.index-stat-grid .stat-jump:focus-visible{
  outline:2px solid rgba(63,140,255,.55);
  outline-offset:3px;
}

/* прибираємо заливку першої клітинки, лишається крапочка + смуга від самого краю */
.index-bus-table .bus-status-row td:first-child{
  position:relative!important;
  padding-left:20px!important;
  background:transparent!important;
}
.index-bus-table .bus-status-row td:first-child::before{
  display:block!important;
  content:"";
  position:absolute;
  left:0;
  top:0;
  bottom:0;
  width:6px;
  border-radius:16px 0 0 16px;
  pointer-events:none;
}
.index-bus-table .bus-online td:first-child::before,
.index-bus-table .bus-recent td:first-child::before{background:#42d38b;box-shadow:0 0 16px rgba(66,211,139,.40);}
.index-bus-table .bus-warn td:first-child::before{background:#ffd166;box-shadow:0 0 16px rgba(255,209,102,.42);}
.index-bus-table .bus-offline td:first-child::before{background:#ff5f73;box-shadow:0 0 16px rgba(255,95,115,.36);}
.index-bus-table .bus-unknown td:first-child::before{background:#8ea4c6;box-shadow:0 0 14px rgba(142,164,198,.28);}

html[data-theme="light"] .index-bus-table .bus-online td:first-child,
html[data-theme="light"] .index-bus-table .bus-recent td:first-child,
html[data-theme="light"] .index-bus-table .bus-warn td:first-child,
html[data-theme="light"] .index-bus-table .bus-offline td:first-child,
html[data-theme="light"] .index-bus-table .bus-unknown td:first-child{
  background:transparent!important;
}
.index-bus-table .bus-status-row.is-jump-target{
  outline:2px solid rgba(63,140,255,.55);
  outline-offset:3px;
  filter:brightness(1.12)!important;
}


/* Step 27: floating back-to-top button */
.back-to-top-btn{
  position:fixed;
  right:22px;
  bottom:22px;
  z-index:1080;
  width:48px;
  height:48px;
  border:1px solid var(--line);
  border-radius:16px;
  display:grid;
  place-items:center;
  color:var(--text);
  background:var(--card2);
  box-shadow:0 16px 42px rgba(0,0,0,.28);
  backdrop-filter:blur(16px);
  opacity:0;
  transform:translateY(14px) scale(.94);
  pointer-events:none;
  transition:opacity .18s ease, transform .18s ease, filter .18s ease, border-color .18s ease;
}
.back-to-top-btn.is-visible{
  opacity:1;
  transform:translateY(0) scale(1);
  pointer-events:auto;
}
.back-to-top-btn:hover{
  filter:brightness(1.08);
  border-color:rgba(63,140,255,.44);
  transform:translateY(-2px) scale(1);
}
.back-to-top-btn i{
  font-size:1.25rem;
  line-height:1;
}
html[data-theme="light"] .back-to-top-btn{
  background:rgba(255,255,255,.92);
  box-shadow:0 14px 34px rgba(31,56,88,.18);
}
@media(max-width:560px){
  .back-to-top-btn{
    right:14px;
    bottom:14px;
    width:44px;
    height:44px;
    border-radius:14px;
  }
}

/* Step 28: role-based index columns + today uploads stat */
.index-stat-grid{
  grid-template-columns:repeat(5,minmax(130px,1fr));
}
.index-stat-grid .stat-value{
  line-height:1.05;
}
.index-bus-table .bus-status-row td:first-child{
  padding-left:22px!important;
}
.index-bus-table .bus-status-row td:first-child::before{
  width:5px;
  left:0;
  top:8px;
  bottom:8px;
  border-radius:0 999px 999px 0;
}
.index-bus-table .bus-status-pill{
  white-space:nowrap;
}
.index-bus-table td{
  vertical-align:middle;
}
@media(max-width:1100px){
  .index-stat-grid{grid-template-columns:repeat(3,minmax(130px,1fr));}
}
@media(max-width:700px){
  .index-stat-grid{grid-template-columns:repeat(2,minmax(130px,1fr));}
}

/* Step 29: stable status+bus sorting and per-bus today counter */
.index-stat-grid{
  grid-template-columns:repeat(4,minmax(130px,1fr));
}
.today-count{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:42px;
  padding:6px 10px;
  border-radius:999px;
  border:1px solid var(--line);
  font-weight:900;
  letter-spacing:.02em;
  background:rgba(255,255,255,.055);
  color:var(--text);
}
.today-count.today-zero{
  color:var(--muted);
  background:rgba(142,164,198,.08);
}
.today-count.today-hot{
  color:#caffdf;
  border-color:rgba(66,211,139,.34);
  background:rgba(66,211,139,.16);
  box-shadow:0 0 18px rgba(66,211,139,.08);
}
html[data-theme="light"] .today-count{
  background:rgba(255,255,255,.55);
  color:#142033;
}
html[data-theme="light"] .today-count.today-zero{
  color:#788398;
  background:rgba(120,131,152,.10);
}
html[data-theme="light"] .today-count.today-hot{
  color:#0f6840;
  border-color:rgba(27,135,83,.26);
  background:rgba(27,135,83,.11);
}
@media(max-width:1100px){
  .index-stat-grid{grid-template-columns:repeat(2,minmax(130px,1fr));}
}
@media(max-width:560px){
  .index-stat-grid{grid-template-columns:1fr;}
}


/* Step 30: per-bus today reviewed + pending counter links */
.today-cell{
  display:inline-flex;
  align-items:center;
  gap:7px;
  white-space:nowrap;
}
.today-cell a{
  text-decoration:none!important;
}
.today-pending-count{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:34px;
  padding:6px 9px;
  border-radius:999px;
  border:1px solid rgba(255,209,102,.42);
  background:rgba(255,209,102,.18);
  color:#ffe8a6!important;
  font-weight:950;
  letter-spacing:.02em;
  box-shadow:0 0 18px rgba(255,209,102,.08);
}
.today-pending-count:hover,
.today-count:hover{
  filter:brightness(1.09);
  transform:translateY(-1px);
}
.filter-active-note{
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:9px 12px;
  border-radius:14px;
  border:1px solid var(--line);
  background:rgba(255,209,102,.12);
  color:var(--text);
  font-weight:800;
}
html[data-theme="light"] .today-pending-count{
  color:#875d00!important;
  border-color:rgba(217,154,0,.30);
  background:rgba(255,193,7,.20);
  box-shadow:none;
}
html[data-theme="light"] .filter-active-note{
  background:rgba(255,193,7,.15);
}

/* Step 40: snapshot results shared layout */
.snapshot-page{padding:24px;}
.snapshot-create{padding:18px;box-shadow:none;}
.snapshot-filters{display:flex;flex-wrap:wrap;gap:10px;}
.snapshot-filter{border:1px solid var(--line);background:rgba(255,255,255,.055);color:var(--text);border-radius:999px;padding:9px 13px;font-weight:850;display:inline-flex;gap:8px;align-items:center;transition:filter .16s ease, transform .16s ease, border-color .16s ease;}
.snapshot-filter span{color:var(--muted);font-weight:950;}
.snapshot-filter:hover,.snapshot-filter.active{filter:brightness(1.08);transform:translateY(-1px);border-color:rgba(63,140,255,.44);background:rgba(63,140,255,.14);}
.snapshot-table{border-collapse:separate!important;border-spacing:0 8px!important;}
.snapshot-row{position:relative;transition:filter .16s ease, transform .16s ease;}
.snapshot-row:hover{filter:brightness(1.06);transform:translateY(-1px);}
.snapshot-row td:first-child{position:relative;padding-left:22px!important;border-radius:14px 0 0 14px!important;}
.snapshot-row td:last-child{border-radius:0 14px 14px 0!important;}
.snapshot-row td:first-child::before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:5px;border-radius:0 999px 999px 0;background:var(--muted);}
.snapshot-wait td:first-child::before{background:#ffd166;box-shadow:0 0 16px rgba(255,209,102,.38);}
.snapshot-run td:first-child::before{background:#69b1ff;box-shadow:0 0 16px rgba(105,177,255,.36);}
.snapshot-done td:first-child::before{background:#42d38b;box-shadow:0 0 16px rgba(66,211,139,.34);}
.snapshot-cancel td:first-child::before{background:#ff5f73;box-shadow:0 0 16px rgba(255,95,115,.30);}
.snapshot-badge{display:inline-flex;align-items:center;padding:6px 10px;border-radius:999px;border:1px solid var(--line);font-weight:900;font-size:.78rem;white-space:nowrap;}
.snapshot-badge.snapshot-wait{color:#ffe8a6;background:rgba(255,209,102,.16);border-color:rgba(255,209,102,.36);}
.snapshot-badge.snapshot-run{color:#d8ecff;background:rgba(105,177,255,.16);border-color:rgba(105,177,255,.34);}
.snapshot-badge.snapshot-done{color:#caffdf;background:rgba(66,211,139,.16);border-color:rgba(66,211,139,.34);}
.snapshot-badge.snapshot-cancel{color:#ffd1d8;background:rgba(255,95,115,.14);border-color:rgba(255,95,115,.32);}
.snapshot-count{display:inline-flex;align-items:center;justify-content:center;min-width:38px;padding:6px 10px;border-radius:999px;border:1px solid var(--line);font-weight:950;background:rgba(255,255,255,.055);}
.snapshot-modal .btn-close{filter:invert(1) grayscale(100%);opacity:.9;}
html[data-theme="light"] .snapshot-modal .btn-close{filter:none;}
.snapshot-modal-info{display:flex;flex-wrap:wrap;gap:8px;}
.snapshot-modal-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px;}
.snapshot-photo{display:block;border-radius:18px;overflow:hidden;border:1px solid var(--line);background:rgba(255,255,255,.05);transition:transform .16s ease, filter .16s ease;}
.snapshot-photo:hover{transform:translateY(-2px);filter:brightness(1.08);}
.snapshot-photo img{display:block;width:100%;height:180px;object-fit:cover;}
html[data-theme="light"] .snapshot-filter{background:rgba(255,255,255,.72);}
html[data-theme="light"] .snapshot-badge.snapshot-wait{color:#875d00;background:rgba(255,193,7,.18);border-color:rgba(217,154,0,.28);}
html[data-theme="light"] .snapshot-badge.snapshot-run{color:#075985;background:rgba(14,165,233,.13);border-color:rgba(14,165,233,.24);}
html[data-theme="light"] .snapshot-badge.snapshot-done{color:#0f6840;background:rgba(27,135,83,.11);border-color:rgba(27,135,83,.24);}
html[data-theme="light"] .snapshot-badge.snapshot-cancel{color:#9f1239;background:rgba(244,63,94,.10);border-color:rgba(244,63,94,.22);}
@media(max-width:760px){.snapshot-page{padding:16px}.snapshot-modal-grid{grid-template-columns:1fr}.snapshot-photo img{height:auto}.snapshot-table{font-size:.9rem}}

/* Step 41: cleaner snapshot page */
.snapshot-page{padding:0!important;}
.snapshot-head{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:22px 24px;margin-bottom:18px;}
.snapshot-create-inline{display:grid;grid-template-columns:minmax(260px,420px) auto;gap:12px;align-items:center;}
.snapshot-filters{display:grid!important;grid-template-columns:repeat(5,minmax(130px,1fr));gap:12px!important;}
.snapshot-filter{justify-content:space-between;border-radius:18px!important;padding:14px 16px!important;min-height:64px;background:var(--card)!important;box-shadow:0 10px 28px rgba(0,0,0,.12);}
.snapshot-filter::before{content:"";width:9px;height:9px;border-radius:999px;background:var(--muted);box-shadow:0 0 12px currentColor;}
.snapshot-filter-wait::before{background:#ffd166;color:#ffd166}.snapshot-filter-run::before{background:#69b1ff;color:#69b1ff}.snapshot-filter-done::before{background:#42d38b;color:#42d38b}.snapshot-filter-cancel::before{background:#ff5f73;color:#ff5f73}
.snapshot-filter-label{flex:1;color:var(--muted);font-weight:850;}
.snapshot-filter strong{font-size:1.28rem;color:var(--text);line-height:1;}
.snapshot-filter:hover,.snapshot-filter.active{background:linear-gradient(135deg,rgba(63,140,255,.16),rgba(255,255,255,.045))!important;}
.snapshot-list-card{padding:10px 14px 14px;}
.snapshot-table thead th{padding-top:14px;padding-bottom:14px;}
.snapshot-actions{white-space:nowrap;display:flex;gap:8px;justify-content:flex-end;align-items:center;}
.snapshot-no-photo{display:inline-flex;align-items:center;justify-content:center;padding:7px 10px;border:1px solid var(--line);border-radius:999px;color:var(--muted);background:rgba(255,255,255,.04);font-size:.78rem;font-weight:800;}
.snapshot-load-more{min-width:180px;border-radius:999px!important;}
html[data-theme="light"] .snapshot-filter{background:rgba(255,255,255,.88)!important;box-shadow:0 10px 26px rgba(31,56,88,.10);}
html[data-theme="light"] .snapshot-filter:hover,html[data-theme="light"] .snapshot-filter.active{background:linear-gradient(135deg,rgba(23,105,255,.10),rgba(255,255,255,.96))!important;}
html[data-theme="light"] .snapshot-no-photo{background:rgba(255,255,255,.72);}
@media(max-width:1050px){.snapshot-head{align-items:stretch;flex-direction:column}.snapshot-create-inline{grid-template-columns:1fr}.snapshot-filters{grid-template-columns:repeat(2,1fr)!important}}
@media(max-width:560px){.snapshot-filters{grid-template-columns:1fr!important}.snapshot-actions{white-space:normal;flex-direction:column;align-items:flex-end}.snapshot-head{padding:18px}}

/* Settings page */
.settings-grid{
  grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
}
.settings-action-card{
  min-height:150px;
}

/* Camera order editor inside uploaded-data modal */
.photo-pairs{display:flex;flex-direction:column;gap:14px}
.image-pair-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:stretch;padding:12px;border:1px solid var(--line);border-radius:18px;background:rgba(255,255,255,.045);transition:background .18s ease,border-color .18s ease,transform .18s ease}
.image-pair-row:hover{border-color:var(--line);transform:none!important}
.photo-pairs.is-editing-order .image-pair-row{grid-template-columns:minmax(120px,.36fr) 1fr 1fr auto;border-color:rgba(63,140,255,.42);background:rgba(63,140,255,.075)}
.camera-row-meta{display:none;flex-direction:column;justify-content:center;padding:8px 10px;border-radius:14px;background:rgba(255,255,255,.04);min-width:0}
.camera-row-title{font-weight:900;color:var(--text);line-height:1.15}
.camera-row-camera{margin-top:3px;font-size:.72rem;line-height:1.1;color:var(--muted);font-weight:750;letter-spacing:.02em;text-transform:lowercase;opacity:.78}
.pair-col{min-width:0;display:flex;flex-direction:column}
.pair-title{display:flex;align-items:baseline;gap:7px;flex-wrap:wrap;font-weight:800;color:var(--muted);font-size:.86rem;line-height:1.1;margin-bottom:8px}
.camera-micro{font-size:.68rem;font-weight:750;color:var(--muted);opacity:.54;letter-spacing:.01em;text-transform:lowercase}
.photo-card-inner{min-height:180px;display:grid;place-items:center;border-radius:16px;background:rgba(0,0,0,.12);border:1px solid var(--line);overflow:hidden;flex:1}
.photo-card-inner img{width:100%;height:100%;max-height:420px;object-fit:contain;cursor:zoom-in;border-radius:14px}
.photo-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;text-align:center;color:var(--muted);padding:18px;min-height:180px}
.photo-empty i{font-size:28px;opacity:.65}
.camera-order-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.camera-order-controls{display:none;flex-direction:column;gap:8px;align-items:center;justify-content:center}
.photo-pairs.is-editing-order .camera-row-meta{display:flex;background:rgba(63,140,255,.12);border:1px solid rgba(63,140,255,.22)}
.photo-pairs.is-editing-order .camera-row-title{font-size:.95rem}
.photo-pairs.is-editing-order .camera-row-camera{font-size:.82rem;opacity:.95;color:var(--text)}
html[data-theme="light"] .image-pair-row{background:rgba(255,255,255,.78)}
html[data-theme="light"] .camera-micro{opacity:.62}
html[data-theme="light"] .photo-card-inner{background:rgba(20,32,51,.035)}
@media(max-width:900px){.image-pair-row,.photo-pairs.is-editing-order .image-pair-row{grid-template-columns:1fr}.camera-order-controls{flex-direction:row}.camera-row-meta{flex-direction:row;justify-content:space-between;align-items:center}.camera-row-camera{margin-top:0}}



/* Step 51: equal entry/exit photo boxes and clean reopen behaviour */
.image-pair-row{
  grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;
  align-items:start!important;
}
.photo-pairs.is-editing-order .image-pair-row{
  grid-template-columns:minmax(120px,.36fr) minmax(0,1fr) minmax(0,1fr) auto!important;
}
.pair-col{
  width:100%!important;
  min-width:0!important;
}
.photo-card-inner{
  width:100%!important;
  height:auto!important;
  min-height:0!important;
  aspect-ratio:4 / 3!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
}
.photo-card-inner img{
  width:100%!important;
  height:100%!important;
  max-width:100%!important;
  max-height:none!important;
  object-fit:contain!important;
  display:block!important;
}
.photo-empty{
  width:100%!important;
  height:100%!important;
  min-height:0!important;
}
@media(max-width:900px){
  .image-pair-row,
  .photo-pairs.is-editing-order .image-pair-row{
    grid-template-columns:1fr!important;
  }
  .photo-card-inner{
    aspect-ratio:4 / 3!important;
  }
}

/* Step 56: keep photo order editor stable, no hover jumping */
#photoPairs .image-pair-row,
#photoPairs .image-pair-row:hover{
  transform:none!important;
  transition:none!important;
  filter:none!important;
}
#photoPairs .camera-order-controls,
#photoPairs .camera-order-controls .btn,
#photoPairs .camera-order-controls .btn:hover,
#photoPairs .camera-order-controls .btn:focus,
#photoPairs .camera-order-controls .btn:active{
  transform:none!important;
  transition:none!important;
}


/* Theme toggle fixes */
.theme-toggle{
    color:var(--text)!important;
    border:1px solid var(--line)!important;
    background:rgba(255,255,255,.06)!important;
}
.theme-toggle:hover{
    color:var(--text)!important;
    background:rgba(63,140,255,.14)!important;
}
html[data-theme="dark"] .theme-toggle{
    color:#f8fafc!important;
    border-color:rgba(255,255,255,.16)!important;
    background:rgba(255,255,255,.08)!important;
}
html[data-theme="light"] .theme-toggle{
    color:#111827!important;
    border-color:rgba(15,23,42,.14)!important;
    background:rgba(255,255,255,.86)!important;
}

/* Login logo: same BusCam mark as the photo-list loading indicator */
.login-brand-logo{
  color:#fff;
  animation:buscam-table-logo-spin 1.1s linear infinite;
}
.login-brand-logo i{line-height:1;}
