/*
 * Brand block used by prospeaking_nav(). Not scoped to a page class: the report
 * pages under the Reports directory render the same navbar with their own body
 * layout. (Never write a glob with a star-slash in here: it ends the comment and
 * the next rule gets swallowed into an invalid selector.)
 *
 * Bootstrap's .navbar-nav links are exactly 50px tall at >=768px (15px padding
 * + 20px line-height + 15px). Matching the brand to that height and centring its
 * contents with flexbox puts the logo and menu items on one centre line.
 */
/*
 * The report pages render their own .navbar-fixed-top control bar below this one.
 * Both sit at Bootstrap's z-index 1030 and the report's comes later in the DOM, so
 * without this the open dropdown menus are painted over by it. Also clears the
 * fixed results header injected with report data (z-index 99). Deliberately left
 * under the reports' 99998+ compliance overlay, which is meant to cover the page.
 */
.prospeaking-navbar {
    z-index: 1050;
}

/*
 * Bootstrap's own .container tops out at a fixed 1170px width from 1200px viewports
 * up. Overridden here (after bootstrap.min.css in every page's <link> order, so this
 * wins) to line up with the 1200px cap used elsewhere on this page — the navbar's own
 * inner .container (config/page.php) included, plus any report/tool page that relies
 * on Bootstrap's default rather than an admin-content max-width of its own.
 */
@media (min-width: 1200px) {
    .container {
        width: 1200px;
    }
}

/*
 * Indent the clickable entries under their group header in the Tools menu, so a
 * heading like "Lists" reads as a label rather than another link. Bootstrap's own
 * padding on these links is 3px 20px, so this is that plus a 10px indent -- enough
 * to read as nested without pushing the labels far from the heading. The divider
 * and DB Diagnostics have no heading above them and stay flush.
 */
.prospeaking-navbar .dropdown-menu > li.tool-item > a {
    padding-left: 30px;
}

/*
 * Show/hide control for the report filter table, pinned to the top-right of the
 * report bar. The bar is position:fixed, so it is the positioning context here.
 */
.filter-toggle {
    position: absolute;
    top: 4px;
    right: 10px;
    z-index: 2;
    padding: 4px 7px;
    color: #888;
    line-height: 1;
    text-decoration: none;
}

.filter-toggle:hover,
.filter-toggle:focus {
    color: #00A2D1;
    text-decoration: none;
}

/*
 * Bootstrap 3 sets no alignment on th, so the browser default (centred) applied
 * while the cells below were left-aligned. Scoped to .admin-page so the reports'
 * own tables, which centre their headers deliberately, are untouched.
 */
.admin-page .table > thead > tr > th {
    text-align: left;
}

/*
 * List-upload preview: the parsed first row as label/value pills, three per row
 * on desktop and stacking on narrow screens via Bootstrap's col-sm-4.
 */
.preview-pills {
    margin-bottom: 6px;
}

.preview-pills .preview-pill {
    display: flex;
    align-items: baseline;
    margin-bottom: 8px;
    padding: 6px 12px;
    border: 1px solid #e2e2e2;
    border-radius: 14px;
    background: #fafafa;
    font-size: 13px;
    line-height: 1.4;
}

.preview-pills .preview-label {
    flex: 0 0 auto;
    margin-right: 8px;
    color: #888;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.preview-pills .preview-value {
    flex: 1 1 auto;
    color: #333;
    font-weight: 600;
    word-break: break-word;
}

.preview-pills .preview-empty {
    color: #bbb;
    font-weight: 400;
}

/* Sign-in page: emblem stacked above the wordmark, centred over the form. */
.login-brand {
    margin-bottom: 24px;
    text-align: center;
}

.login-brand .login-emblem {
    display: block;
    width: auto;
    height: 72px;
    margin: 0 auto 10px;
}

.login-brand h3 {
    margin: 0;
    font-family: Tahoma, Geneva, sans-serif;
    font-size: 22px;
    font-weight: 700;
    letter-spacing: 0.02em;
    color: #444;
}

#logo-container {
    padding: 0;
}

#logo-container .prospeaking-logo {
    display: inline-flex;
    align-items: center;
    height: 50px;
    line-height: 1;
    font-family: Tahoma, Geneva, sans-serif;
    font-size: 22px;
    font-weight: 700;
    color: #444;
    letter-spacing: 0.02em;
    text-decoration: none;
}

#logo-container .prospeaking-logo:hover,
#logo-container .prospeaking-logo:focus {
    color: #222;
    text-decoration: none;
}

#logo-container .prospeaking-emblem {
    height: 32px;
    width: auto;
    margin-right: 8px;
    vertical-align: middle;
}

#logo-container .prospeaking-logo span {
    vertical-align: middle;
}

/*
 * adminTools.php layout. Scoped to .admin-page: mgrTools.php still uses the
 * original absolutely-positioned .mgrResults under a fixed navbar.
 */
.admin-page {
    padding-top: 70px;
    background: #FFF;
}

/* Page heading with an action button pushed to the right. */
.admin-page .page-title-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 10px;
    margin-bottom: 5px;
}

.admin-page .page-title-row h1 {
    margin: 0;
}

.admin-page .task-picker {
    max-width: 1200px;
    margin: 0 auto 20px;
}

/*
 * Task chooser: icon + label links in one row, in place of the old select + Go.
 * Still wraps rather than overflowing when the window is too narrow to fit them.
 */
.admin-page .task-links {
    display: flex;
    flex-wrap: wrap;
}

.admin-page .task-link {
    display: inline-flex;
    align-items: center;
    margin: 0 8px 8px 0;
    padding: 8px 14px;
    border: 1px solid #ddd;
    border-radius: 4px;
    background: #fff;
    color: #333;
    text-decoration: none;
}

.admin-page .task-link .glyphicon {
    margin-right: 8px;
    color: #999;
}

.admin-page .task-link:hover,
.admin-page .task-link:focus {
    border-color: #00A2D1;
    color: #0082a8;
    text-decoration: none;
}

.admin-page .task-link:hover .glyphicon,
.admin-page .task-link:focus .glyphicon,
.admin-page .task-link.active .glyphicon {
    color: inherit;
}

.admin-page .task-link.active {
    border-color: #00A2D1;
    background: #f2fafd;
    color: #0082a8;
}

/*
 * position:relative (not static) so the absolutely-positioned #loader spinner
 * anchors inside the results area instead of floating over the picker above it.
 */
.admin-page .mgrResults {
    position: relative;
    width: auto;
    max-width: 1200px;
    margin: 0 auto 30px;
    top: auto;
    left: auto;
    right: auto;
    background: transparent;
    border: 0;
}

.admin-page .mgrResults:not(:empty) {
    min-height: 220px;
}

#loader {
    position: absolute;
    left: 50%;
    top: 150px;
    z-index: 1;
    width: 150px;
    height: 150px;
    margin: -75px 0 0 -75px;
    border: 16px solid #f3f3f3;
    border-radius: 50%;
    border-top: 16px solid #3498db;
    width: 80px;
    height: 80px;
    -webkit-animation: spin 1s linear infinite;
    animation: spin 1s linear infinite;
}
@-webkit-keyframes spin {
0% {
-webkit-transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
}
}
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
.mgrResults {
    margin: 0;
    padding: 0px;
    table-layout: fixed;
    position: absolute;
    top: 90px;
    background: #F0F0F0;
    border-right: 1px solid #CCC;
    border-left: 1px solid #CCC;
    margin-left: auto;
    margin-right: auto;
    margin-bottom: 30px;
    left: 0;
    right: 0;
    font-size: 12px;
    width: 1024px;
}
.trHover:hover {
	background-color:#CCC;
	}
/*
 * Check Queue table: the reschedule picker and its button need to sit on one
 * line, so keep the actions column from wrapping mid-control.
 */
/*
 * Countdown under a queued list's run time, coloured by how close it is:
 * red when already past its date or under an hour away, amber within the day,
 * plain within the week, muted beyond that.
 */
.sched-relative {
    font-size: 12px;
    line-height: 1.5;
}

.sched-missed {
    color: #a94442;
    font-weight: 700;
}

.sched-imminent {
    color: #a94442;
    font-weight: 700;
}

.sched-today {
    color: #b8860b;
    font-weight: 600;
}

.sched-week {
    color: #31708f;
}

.sched-running {
    color: #31708f;
    font-weight: 700;
}

/*
 * The "Schedule for later" / reschedule datetime-local field, turned red by
 * checkUploadHoursWarning() (functions.js) when the picked time falls outside
 * Admin/uploadHours.php's window for that day. Same red as .sched-missed —
 * advisory only, it doesn't stop the field from being submitted.
 */
.upload-hours-blocked {
    border-color: #a94442;
    color: #a94442;
}

/*
 * Progress of a list being imported. Bootstrap's .progress is 20px tall with a
 * 20px bottom margin, which would double the height of the row it sits in.
 */
.queue-progress {
    height: 8px;
    width: 160px;
    margin: 4px 0 0;
    border-radius: 4px;
}

.queue-progress .progress-bar {
    background-color: #00A2D1;
}

.sched-paused {
    color: #777;
    font-weight: 600;
    font-style: italic;
}

.sched-later {
    color: #999;
}

/*
 * Schedule picker (functions.js's initSchedulePicker()) — the week-grid widget
 * behind "Schedule for later" (Lists/uploadLists.php) and the Reschedule modal
 * (Lists/checkQueue.php): 7 day columns × 24 hour rows, like a normal calendar
 * app's week view. Same palette as the rest of this section: #31708f blue for
 * "selected", #b8860b amber for "outside Upload Hours" (advisory, not blocking
 * — same amber as .sched-today), #ccc/#eee for disabled/past/beyond-horizon.
 */
.sched-picker {
    max-width: 560px;
    margin: 8px auto 0;
}

.sched-picker-nav {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 6px;
    font-weight: 600;
}

.sched-picker-nav button[disabled] {
    opacity: .3;
    cursor: not-allowed;
}

.sched-picker-week-scroll {
    max-height: 340px;
    overflow-y: auto;
    border: 1px solid #ddd;
    border-radius: 4px;
}

.sched-picker-grid {
    display: grid;
    grid-template-columns: 54px repeat(7, 1fr);
}

.sched-picker-corner,
.sched-picker-day-header {
    position: sticky;
    top: 0;
    z-index: 2;
    background: #f7f7f7;
    border-bottom: 1px solid #ddd;
    padding: 3px 2px;
    text-align: center;
}

.sched-picker-day-header--today {
    background: #eaf2f6;
}

.sched-picker-day-name {
    font-size: 10px;
    color: #777;
    font-weight: 700;
}

.sched-picker-day-num {
    font-size: 13px;
    font-weight: 700;
}

.sched-picker-hour-label {
    font-size: 10px;
    color: #777;
    text-align: right;
    padding: 2px 6px 0 0;
    white-space: nowrap;
    border-top: 1px solid #eee;
}

.sched-picker-cell {
    display: block;
    width: 100%;
    min-height: 28px;
    border: none;
    border-top: 1px solid #eee;
    border-left: 1px solid #eee;
    background: #fff;
    cursor: pointer;
    padding: 1px;
    text-align: left;
    vertical-align: top;
}

.sched-picker-cell:hover:not([disabled]) {
    background: #f0f0f0;
}

/* .sched-picker-cell--allowed needs no extra rule — plain white already reads
   as "this is fine", same as leaving a normal field unmarked. Declared after
   --allowed (i.e. below it) so --blocked, --disabled and --selected below can
   each win over it and each other on an equal-specificity single class. */
.sched-picker-cell--blocked {
    background: #fdf6e8;
}

.sched-picker-cell--blocked:hover:not([disabled]) {
    background: #faedc7;
}

.sched-picker-cell--disabled {
    background: #f7f7f7;
    cursor: not-allowed;
}

.sched-picker-cell--selected {
    background: #31708f;
}

.sched-picker-chip {
    display: block;
    background: #fff;
    border: 1px solid #31708f;
    color: #31708f;
    border-radius: 3px;
    font-size: 9px;
    line-height: 1.4;
    padding: 0 3px;
    margin-bottom: 1px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.sched-picker-cell--selected .sched-picker-chip {
    background: rgba(255, 255, 255, .15);
    border-color: #fff;
    color: #fff;
}

.sched-picker-summary-row {
    margin-top: 8px;
    display: flex;
    align-items: center;
    font-size: 12px;
}

.sched-picker-summary {
    margin-left: auto;
    color: #31708f;
    font-size: 12px;
}

/* Reschedule modal: keep the detail list compact rather than Bootstrap's wide gutter. */
.reschedule-details {
    margin-bottom: 0;
}

.reschedule-details dt {
    width: 90px;
    color: #888;
    font-weight: 700;
    text-align: left;
}

.reschedule-details dd {
    margin-left: 105px;
}

/* Nine columns overflow narrow windows; scroll the table, not the page. */
.admin-page .queue-scroll {
    overflow-x: auto;
    margin-bottom: 24px;
}

.admin-page .queue-table {
    margin-bottom: 0;
    white-space: nowrap;
}

.admin-page .queue-table .queue-actions {
    white-space: nowrap;
}

.admin-page .queue-table td,
.admin-page .queue-table th {
    vertical-align: middle;
}
