/* Public test panel. Scoped to body.ptp so other Eagle pages are untouched. */
html { background: #f9f9f9; }
body.ptp {
  margin: 0;
  background: #f9f9f9;
  color: #333;
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 12px;
  font-weight: 400;
  line-height: 18px;
}
body.ptp *, body.ptp *::before, body.ptp *::after { box-sizing: border-box; }
body.ptp button, body.ptp input, body.ptp select { font-family: inherit; }
body.ptp a.btn { text-decoration: none; }

.ptp .public-shell { min-height: 100vh; background: #f9f9f9; color: #333; }
.ptp .public-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 41px;
  min-height: 41px;
  padding: 6px 12px;
  background: linear-gradient(#383838, #1d1c1c);
  border-bottom: 1px solid #000;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 3px rgba(0,0,0,.25);
}
.ptp .public-brand { display: flex; align-items: center; gap: 7px; min-width: 0; }
.ptp .brand-title {
  color: #fff;
  font-size: 17px;
  font-weight: 400;
  line-height: 18px;
  letter-spacing: .34px;
  text-shadow: 0 -1px 0 rgba(0,0,0,.4);
  white-space: nowrap;
}
.ptp .brand-divider { color: #6a6a6a; font-size: 12px; line-height: 18px; }
.ptp .brand-tag { color: #9a9a9a; font-size: 11px; font-weight: 400; line-height: 18px; white-space: nowrap; }
.ptp .public-actions { display: flex; align-items: center; gap: 7px; }
.ptp .public-actions .btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 26px;
  padding: 3px 9px;
  border: 1px solid rgba(0,0,0,.1);
  border-bottom-color: rgba(0,0,0,.25);
  border-radius: 4px;
  background: linear-gradient(#0088cc, #0044cc);
  color: #fff;
  font-size: 12px;
  font-weight: 400;
  line-height: 18px;
  text-shadow: 0 -1px 0 rgba(0,0,0,.25);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
  cursor: pointer;
}
.ptp .public-actions .btn:hover { background: linear-gradient(#0077b3, #003bb3); }

.ptp .public-body { max-width: 1400px; margin: 0 auto; padding: 12px 15px 40px; }
.ptp .page-title { display: none; }
.ptp .page-subtitle { margin: 0 0 12px; color: #333; font-size: 12px; font-weight: 400; line-height: 18px; }
.ptp .tp-tabs { display: flex; flex-wrap: wrap; gap: 7px; margin: 0 0 12px; }
.ptp .btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
  height: 30px;
  margin: 0;
  padding: 4px 10px;
  border: 1px solid rgba(0,0,0,.15);
  border-bottom-color: rgba(0,0,0,.25);
  border-radius: 4px;
  background: linear-gradient(#fff, #e6e6e6);
  color: #333;
  font-size: 13px;
  font-weight: 400;
  line-height: 20px;
  text-align: center;
  text-shadow: 0 1px 1px rgba(255,255,255,.75);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
  cursor: pointer;
}
.ptp .btn-primary {
  border-color: rgba(0,0,0,.1);
  border-bottom-color: rgba(0,0,0,.25);
  background: linear-gradient(#0088cc, #0044cc);
  color: #fff;
  text-shadow: 0 -1px 0 rgba(0,0,0,.25);
}
.ptp .btn-primary:hover { background: linear-gradient(#0077b3, #003bb3); }
.ptp .btn-secondary:hover { background: linear-gradient(#f7f7f7, #dcdcdc); }
.ptp .btn:active { box-shadow: inset 0 2px 3px rgba(0,0,0,.16); }

.ptp .filter-strip {
  position: relative;
  z-index: 30;
  margin: 0;
  padding: 7px 4px 3px 2px;
  background: #cfcfcf;
  border: 1px solid #000;
  border-radius: 0;
  box-shadow: none;
}
.ptp .rep-filters { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 10.5px; }
.ptp .rep-filters > div:not(.rep-search) { flex: 0 0 188px; max-width: 100%; }
.ptp .rep-search { flex: 1 1 196px; min-width: 0; }
.ptp .rep-filters > .btn { flex: 0 0 auto; }
.ptp .label {
  display: block;
  margin: 0 0 3px;
  color: #555;
  font-size: 11px;
  font-weight: 700;
  line-height: 18px;
  text-shadow: 0 1px 0 #fff;
}
.ptp .input, .ptp .select {
  display: inline-block;
  width: 100%;
  height: 30px;
  min-height: 28px;
  margin: 0;
  padding: 4px 6px;
  border: 1px solid #b8b8b8;
  border-radius: 3px;
  background: #fff;
  color: #555;
  font-size: 14px;
  font-weight: 400;
  line-height: 20px;
  box-shadow: inset 0 1px 1px rgba(0,0,0,.075);
}
.ptp .input::placeholder { color: #999; }
.ptp .input:focus, .ptp .select:focus, .ptp .dt:focus-within {
  outline: none;
  border-color: rgba(82,168,236,.8);
  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
}
.ptp .dt {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  position: relative;
  width: 100%;
  padding: 4px 6px;
}
.ptp .dt-field {
  flex: 1 1 auto;
  min-width: 0;
  width: auto;
  height: 20px;
  margin: 0;
  padding: 0;
  border: 0;
  outline: none;
  background: transparent;
  box-shadow: none;
  color: #555;
  font: inherit;
  line-height: 20px;
}
.ptp .dt-field:focus { box-shadow: none; }
.ptp .dt.is-open { z-index: 40; }
.ptp .dt-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  flex: 0 0 24px;
  margin: 0;
  padding: 0;
  border: 0;
  background: none;
  color: #777;
  cursor: pointer;
}
.ptp .dt-btn:hover { color: #333; }
.ptp .dt-pop {
  position: absolute;
  z-index: 50;
  top: calc(100% + 4px);
  left: 0;
  width: 226px;
  padding: 8px;
  background: #fff;
  border: 1px solid #ccc;
  border-radius: 3px;
  box-shadow: 0 4px 16px rgba(0,0,0,.28);
}
.ptp .dt-pop[hidden] { display: none; }
.ptp .dt-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 6px; }
.ptp .dt-title { font-size: 12px; font-weight: 700; color: #333; white-space: nowrap; }
.ptp .dt-nav {
  width: 22px;
  height: 22px;
  border: 1px solid #ccc;
  border-radius: 3px;
  background: #fff;
  color: #333;
  cursor: pointer;
  line-height: 1;
}
.ptp .dt-nav:hover { background: #f5f5f5; }
.ptp .dt-grid { display: grid; grid-template-columns: repeat(7, 28px); gap: 2px; }
.ptp .dt-dow { color: #777; text-align: center; font-size: 10px; line-height: 16px; }
.ptp .dt-day {
  height: 26px;
  border: 0;
  border-radius: 3px;
  background: transparent;
  color: #333;
  font-size: 12px;
  cursor: pointer;
}
.ptp .dt-day:hover:not(:disabled) { background: #f5f5f5; }
.ptp .dt-day.is-today { outline: 1px solid #999; }
.ptp .dt-day.is-sel, .ptp .dt-day.is-sel:hover { background: #0044cc; color: #fff; }
.ptp .dt-day:disabled { cursor: default; }

.ptp .filter-strip + .card { border-top: 0; border-top-left-radius: 0; border-top-right-radius: 0; }
.ptp .card {
  background: #fff;
  border: 1px solid #ccc;
  border-radius: 3px;
  box-shadow: 0 1px 1px rgba(0,0,0,.06);
}
.ptp .card.filter-strip {
  background: #cfcfcf;
  background-image: none;
  border: 1px solid #000;
  border-radius: 0;
  box-shadow: none;
}
.ptp .card-header {
  display: flex;
  align-items: stretch;
  justify-content: space-between;
  gap: 8px;
  min-height: 40px;
  padding: 0 0 0 12px;
  background: linear-gradient(#f1f1f1 0%, #dbdbdb 100%);
  border-bottom: 1px solid #c8c8c8;
  border-radius: 3px 3px 0 0;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.2);
}
.ptp .filter-strip + .card > .card-header { border-radius: 3px 3px 0 0; }
.ptp .card-title {
  align-self: center;
  margin-right: auto;
  color: #333;
  font-size: 12px;
  font-weight: 700;
  line-height: 18px;
  text-transform: uppercase;
  text-shadow: 0 1px 0 #fff;
}
.ptp .panel-action {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  align-self: stretch;
  width: 40px;
  min-height: 40px;
  margin: 0;
  padding: 0;
  border: 0;
  border-left: 1px solid rgba(0,0,0,.25);
  border-radius: 0 3px 0 0;
  background: linear-gradient(#5bc0de, #3a87ad);
  color: #fff;
  cursor: pointer;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.2);
}
.ptp .panel-action:hover { filter: brightness(1.08); }
.ptp .pa-label { display: none; }
.ptp .dl-main {
  align-self: stretch;
  height: 40px;
  min-height: 40px;
  margin: 0 0 0 auto;
  padding: 4px 10px;
  border: 0;
  border-left: 1px solid rgba(0,0,0,.12);
  border-radius: 0 3px 0 0;
  background: linear-gradient(#fff, #e6e6e6);
  color: #333;
  font-size: 13px;
  font-weight: 400;
  line-height: 20px;
  text-shadow: 0 1px 1px rgba(255,255,255,.75);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
  cursor: pointer;
}
.ptp .dl-main:hover { background: linear-gradient(#f7f7f7, #dcdcdc); }

.ptp .classic-toolbar { background: #fff; padding: 8px 10px 10px; }
.ptp .classic-toolbar-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
}
.ptp .classic-toolbar-row + .classic-toolbar-row { margin-top: 8px; }
.ptp .classic-toolbar-search, .ptp .classic-toolbar-records {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 0;
  color: #333;
  font-size: 12px;
  font-weight: 700;
  line-height: 18px;
  white-space: nowrap;
}
.ptp .classic-toolbar-search .input {
  width: 200px;
  height: 30px;
  padding: 5px 2px 5px 25px;
  border: 1px solid #ccc;
  border-radius: 3px;
  background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none'%3E%3Ccircle cx='11' cy='11' r='6.5' stroke='%23777' stroke-width='2'/%3E%3Cpath d='M16 16l5 5' stroke='%23777' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E") 6px 50% no-repeat;
  color: #444;
  font-size: 12px;
  font-weight: 400;
  box-shadow: inset 0 1px 1px rgba(0,0,0,.075);
}
.ptp .classic-toolbar-search .input:focus {
  border-color: #999;
  box-shadow: 0 0 4px rgba(0,0,0,.18);
}
.ptp .classic-toolbar-records .select {
  width: 80px;
  min-width: 80px;
  height: 30px;
  padding: 3px 6px;
  border: 1px solid #bbb;
  border-radius: 3px;
  background: #fff;
  color: #555;
  font-size: 11px;
  font-weight: 700;
  line-height: 18px;
  box-shadow: inset 0 1px 1px rgba(0,0,0,.075);
}
.ptp .classic-toolbar-exports { display: flex; gap: 4px; }
.ptp .classic-toolbar-tail { display: flex; align-items: center; gap: 12px; margin-left: auto; }
.ptp .classic-toolbar-exports .btn, .ptp .classic-toolbar-cols > .btn {
  height: 28px;
  padding: 4px 10px;
  border: 1px solid #ccc;
  border-radius: 4px;
  background: #f8f8f8;
  color: #333;
  font-size: 11px;
  font-weight: 400;
  line-height: 18px;
  text-shadow: none;
  box-shadow: none;
}
.ptp .classic-toolbar-exports .btn:hover, .ptp .classic-toolbar-cols > .btn:hover {
  background: #eee;
  border-color: #bbb;
}
.ptp .classic-toolbar-cols { position: relative; }
.ptp .classic-colmenu {
  position: absolute;
  z-index: 30;
  top: calc(100% + 3px);
  right: 0;
  min-width: 150px;
  margin: 0;
  padding: 4px 0;
  background: #f3f3f3;
  border: 1px solid #cfcfcf;
  border-radius: 3px;
  box-shadow: 0 4px 10px rgba(0,0,0,.18);
}
.ptp .classic-colmenu[hidden] { display: none; }
.ptp .classic-colmenu-item {
  display: flex;
  align-items: center;
  gap: 7px;
  min-height: 26px;
  margin: 0;
  padding: 4px 10px;
  color: #333;
  font-size: 12px;
  font-weight: 400;
  line-height: 18px;
  cursor: pointer;
}
.ptp .classic-colmenu-item:hover { background: #e8e8e8; }
.ptp .classic-colmenu-item input { width: 16px; height: 16px; margin: 0; accent-color: #4096ee; }

.ptp .tbl-scroll { overflow-x: auto; overscroll-behavior-x: contain; -webkit-overflow-scrolling: touch; touch-action: pan-x pan-y; }
.ptp .dataTables_wrapper { width: 100%; }
.ptp table.tbl {
  width: 100%;
  border-collapse: collapse;
  background: #fff;
  border: 1px solid #ddd;
  font-size: 12px;
  line-height: 18px;
}
.ptp .ptp-sms { display: none; }
.ptp .tbl thead th {
  position: relative;
  padding: 8px 20px 8px 8px;
  background: #fff;
  border: 1px solid #ddd;
  color: #333;
  font-size: 12px;
  font-weight: 700;
  line-height: 20px;
  text-align: left;
  vertical-align: bottom;
  white-space: nowrap;
  text-shadow: 0 1px 0 #fff;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.2);
  cursor: pointer;
  user-select: none;
}
.ptp .tbl thead th:first-child, .ptp .tbl tbody td:first-child { border-left: 0; }
.ptp .tbl thead th:last-child, .ptp .tbl tbody td:last-child { border-right: 0; }
.ptp .tbl thead th.cls-sort::after {
  content: "";
  position: absolute;
  top: 50%;
  right: 6px;
  width: 9px;
  height: 14px;
  margin-top: -7px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='9' height='14' viewBox='0 0 9 14'%3E%3Cpath d='M4.5 1.5L8 6H1z' fill='%23c6c6c6'/%3E%3Cpath d='M4.5 12.5L1 8h7z' fill='%23c6c6c6'/%3E%3C/svg%3E") 50% center no-repeat;
}
.ptp .tbl thead th.cls-sort:hover::after {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='9' height='14' viewBox='0 0 9 14'%3E%3Cpath d='M4.5 1.5L8 6H1z' fill='%23a0a0a0'/%3E%3Cpath d='M4.5 12.5L1 8h7z' fill='%23a0a0a0'/%3E%3C/svg%3E");
}
.ptp .tbl thead th.is-asc::after, .ptp .tbl thead th.is-asc:hover::after {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='9' height='14' viewBox='0 0 9 14'%3E%3Cpath d='M4.5 4L8.5 9.5h-8z' fill='%233875b9'/%3E%3C/svg%3E");
}
.ptp .tbl thead th.is-desc::after, .ptp .tbl thead th.is-desc:hover::after {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='9' height='14' viewBox='0 0 9 14'%3E%3Cpath d='M4.5 10L0.5 4.5h8z' fill='%233875b9'/%3E%3C/svg%3E");
}
.ptp .tbl tbody td {
  padding: 8px;
  border: 1px solid #ddd;
  color: #333;
  font-size: 12px;
  font-weight: 400;
  line-height: 20px;
  vertical-align: top;
  white-space: nowrap;
}
.ptp .tbl tbody td.wrap { white-space: normal; overflow-wrap: break-word; min-width: 8rem; }
.ptp .tbl tbody td.num { font-weight: 700; }
.ptp .tbl tbody tr:hover td { background: #f5f5f5; }
.ptp .tbl tbody td.sorting_1 { background: #f0f0f0; }
.ptp .tbl tbody tr:hover td.sorting_1 { background: #ececec; }
#ptp-numbers .tbl tbody td.sorting_1 { background: transparent; }
#ptp-numbers .tbl tbody tr:hover td.sorting_1 { background: #f5f5f5; }
#ptp-numbers .tbl tbody td.num,
#ptp-numbers .tbl tbody td.num b,
#ptp-numbers .tbl tbody td.num strong { font-weight: 700; }
#ptp-numbers .tbl thead th.is-asc::after,
#ptp-numbers .tbl thead th.is-desc::after,
#ptp-numbers .tbl thead th.is-asc:hover::after,
#ptp-numbers .tbl thead th.is-desc:hover::after {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='9' height='14' viewBox='0 0 9 14'%3E%3Cpath d='M4.5 1.5L8 6H1z' fill='%23c6c6c6'/%3E%3Cpath d='M4.5 12.5L1 8h7z' fill='%23c6c6c6'/%3E%3C/svg%3E");
}
#ptp-numbers .classic-toolbar-tail { margin-left: 0; }
#ptp-numbers .classic-toolbar-search .input {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 14 14'%3E%3Ccircle cx='6.1' cy='5.5' r='3.15' fill='%23f3f3f3' stroke='%23bdbdbd' stroke-width='1.25'/%3E%3Cpath d='M8.5 8.2l3.2 3.4' stroke='%235193e3' stroke-width='1.8' stroke-linecap='round'/%3E%3C/svg%3E");
  background-position: 4px 50%;
}
.ptp .tbl td.dataTables_empty { text-align: center; padding: 28px 12px; background: #fff; white-space: normal; }

.ptp .paginator {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 8px 2px 2px;
  background: #f5f5f5;
  color: #333;
  font-size: 12px;
  line-height: 18px;
}
.ptp .pg-left { color: #333; font-size: 12px; font-weight: 400; }
.ptp .paginator-controls { display: flex; align-items: center; flex-wrap: wrap; gap: 3px; }
.ptp .paginator-controls .btn {
  height: 22px;
  min-width: 0;
  padding: 0 10px;
  border: 1px solid #9f9f9f;
  border-radius: 3px;
  background: linear-gradient(#dadada, #bdbdbd);
  color: #444;
  font-size: 11px;
  font-weight: 700;
  line-height: 20px;
  text-shadow: 0 1px 0 rgba(255,255,255,.6);
  box-shadow: inset 0 1px 0 #f9f9f9, 0 0 3px #ccc;
}
.ptp button,
.ptp .btn,
.ptp a {
  -webkit-tap-highlight-color: transparent;
}
.ptp button:focus,
.ptp button:focus-visible,
.ptp .btn:focus,
.ptp .btn:focus-visible,
.ptp a:focus,
.ptp a:focus-visible {
  outline: none;
}
.ptp .paginator-controls .btn,
.ptp .paginator-controls .btn:hover,
.ptp .paginator-controls .btn:focus,
.ptp .paginator-controls .btn:active,
.ptp .classic-toolbar .btn,
.ptp .classic-toolbar .btn:hover,
.ptp .classic-toolbar .btn:focus,
.ptp .classic-toolbar .btn:active {
  background-position: 0 0;
}
.ptp .paginator-controls .btn:active:not(:disabled):not(.is-current),
.ptp .classic-toolbar .btn:active {
  background-image: linear-gradient(#fff, #e5e5e5);
  box-shadow: inset 0 1px 0 #fff, 0 0 3px #ccc;
}
.ptp .paginator-controls .btn:hover:not(:disabled) { background: linear-gradient(#fff, #e5e5e5); }
.ptp .paginator-controls .btn:disabled {
  background: #ccc;
  border-color: #bbb;
  color: #aaa;
  box-shadow: none;
  cursor: default;
}
.ptp .paginator-controls .pg-num.is-current,
.ptp .paginator-controls .pg-num.is-current:disabled {
  background: linear-gradient(#fff, #e5e5e5);
  border-color: #bbb;
  color: #444;
  box-shadow: inset 0 1px 0 #fff, 0 0 3px #ccc;
}

@media (max-width: 768px) {
  .ptp .panel-action {
    width: auto;
    gap: 6px;
    padding: 0 10px;
    font-size: 11px;
    font-weight: 700;
    line-height: 18px;
    letter-spacing: 0;
    text-transform: uppercase;
  }
  .ptp .pa-label { display: inline; }
  .ptp .classic-toolbar-search { flex: 1 1 100%; }
  .ptp .classic-toolbar-search .input { width: 100%; min-width: 0; }
  .ptp .paginator { flex-direction: column; align-items: stretch; gap: 7px; }
  .ptp .paginator-controls { justify-content: center; }
}
@media (max-width: 640px) {
  .ptp .public-brand { gap: 5.6px; }
  .ptp .brand-divider, .ptp .brand-tag { display: none; }
}
