/* Reporter plugin: activity labels and suggestions in the hour administration */

.label.label-reporter-research,
.label.label-reporter-retest,
.label.label-reporter-preparation,
.label.label-reporter-aftercare {
	display: inline-block;
	padding: 2px 7px;
	border: 1px solid;
	border-radius: 4px;
	font-size: 11px;
	font-weight: 600;
}
.label.label-reporter-research {
	background-color: #eff6fd;
	border-color: #c5dcf2;
	color: #1d5d99;
}
.label.label-reporter-retest {
	background-color: #f5f0fc;
	border-color: #dccdf3;
	color: #6941c6;
}
.label.label-reporter-preparation {
	background-color: #fffaeb;
	border-color: #fedf89;
	color: #b54708;
}
.label.label-reporter-aftercare {
	background-color: #ecfdf3;
	border-color: #c6ecd6;
	color: #067647;
}

/* Suggestion rows: same columns as booked rows, quieter text; the hours can be typed in right away */
.hours-by-day tr.reporter-suggestion > td {
	vertical-align: middle !important;
	color: #475467;
	font-weight: normal;
}
.hours-by-day tr.reporter-suggestion.scheduled > td {
	color: #667085;
	padding-top: 6px;
	padding-bottom: 6px;
}
.hours-by-day tr.reporter-suggestion.scheduled .reporter-activity {
	opacity: .75;
}
.reporter-suggestion .reporter-assessment-title {
	color: #475467;
}
.reporter-suggestion.scheduled .reporter-assessment-title {
	color: #667085;
}
.reporter-suggestion .reporter-hours {
	width: 70px;
	display: inline-block;
	text-align: right;
	border-color: #e4e7ec;
	box-shadow: none;
}
.reporter-suggestion .reporter-hours::placeholder {
	font-style: italic;
	color: #98a2b3;
}
.reporter-suggestion .reporter-role {
	margin-top: 4px;
	max-width: 220px;
}
.hours-by-day .hours-status .label-reporter-suggestion {
	background: #eff8ff;
	border-color: #b2ddff;
	color: #175cd3;
}
.hours-by-day .hours-status .label-reporter-planned {
	background: #fffaeb;
	border-color: #fedf89;
	color: #b54708;
}
.reporter-details {
	margin-top: 6px;
	font-size: 12px;
}
.reporter-details-heading {
	font-weight: 600;
	color: #777;
	margin-top: 4px;
}
.reporter-details ul {
	margin-bottom: 0;
}
.reporter-suggestion-count {
	color: #3a87ad;
}

/* Activity buttons in the add / edit form */
.reporter-assessment {
	margin-bottom: 6px;
}
/* Buttons of a row are equally high, also when one label wraps */
.reporter-activity-buttons .btn-group-justified {
	display: flex;
	margin-bottom: 4px;
}
.reporter-activity-buttons .btn-group-justified > .btn-group {
	display: flex;
	flex: 1 1 0;
}
.reporter-activity-buttons .btn {
	white-space: normal;
	width: 100%;
}
.reporter-activity-buttons .btn.blocked {
	opacity: .5;
}
/* No focus ring after a tap / click (keyboard focus keeps it) */
.reporter-activity-buttons .btn:focus:not(:focus-visible),
.reporter-activity-buttons .btn:active:focus:not(:focus-visible) {
	outline: none;
}
.reporter-phase-detail {
	margin: 2px 0 4px;
	/* Two lines reserved: the hint and the round details take the same space */
	min-height: 32px;
}
#reporter-activity-wrap .reporter-override label {
	padding-left: 0;
	font-weight: normal;
}
#reporter-activity-wrap .reporter-override input[type=checkbox] {
	position: static;
	margin: 0 6px 0 0;
}

/* Bill retests */
.reporter-billing-filter {
	margin-bottom: 15px;
}
.reporter-billing-section .panel-heading .panel-title {
	font-size: 16px;
	font-weight: 600;
}
.reporter-billing-section.section-to_approve {
	border-color: #e6c99a;
}
.reporter-billing-section.section-to_approve > .panel-heading {
	background: #fdf6ec;
	border-color: #e6c99a;
}
.reporter-billing-table td {
	vertical-align: top !important;
}
/* Room per round: the parts of a cell each on their own line, with the same space between them */
.reporter-billing-table > tbody > tr > td {
	padding: 14px 12px;
	line-height: 1.5;
}
.reporter-billing-table > thead > tr > th {
	padding: 10px 12px;
}
.reporter-billing-table .reporter-billing-round {
	width: 23%;
}
.reporter-billing-table .reporter-billing-worked,
.reporter-billing-table .reporter-billing-findings {
	width: 10%;
	white-space: nowrap;
}
.reporter-billing-table .reporter-billing-worked .reporter-toggle-content,
.reporter-billing-table .reporter-billing-findings .reporter-toggle-content,
.reporter-billing-table .reporter-billing-worked .small {
	white-space: normal;
}
.reporter-billing-table .reporter-billing-agreement {
	width: 29%;
}
.reporter-billing-ready .reporter-billing-billed {
	width: 22%;
}
.reporter-billing-ready .reporter-billing-agreement {
	width: 27%;
}
/* The parts of a cell below each other, with the same space between them */
.reporter-billing-table .reporter-billing-agreement > * + *,
.reporter-billing-table .reporter-billing-billed > * + *,
.reporter-billing-table .reporter-billing-decide form > * + *,
.reporter-billing-table .reporter-approve-details > * + * {
	margin-top: 6px;
}
.reporter-approve-controls {
	white-space: nowrap;
}
.reporter-approve-controls .btn {
	vertical-align: middle;
}
.reporter-billing-title {
	font-size: 15px;
}
.reporter-billing-round-label {
	color: #555;
}
.reporter-info {
	color: #8a929b;
	cursor: help;
}
.reporter-info:focus {
	outline: 2px solid #66afe9;
	outline-offset: 1px;
}
/* Back at the round after an action: it lights up briefly */
@keyframes reporter-flash {
	from { background-color: #fff3cd; }
	to { background-color: transparent; }
}
.reporter-billing tr:target > td,
.reporter-billing tr:target > th {
	animation: reporter-flash 3s ease-out;
}
.reporter-note-label {
	display: block;
	margin-bottom: 2px;
	font-weight: normal;
	color: #555;
}
.reporter-not-billing .reporter-note-label {
	font-weight: 600;
	color: #333;
}
.reporter-not-billed-confirm > * + * {
	margin-top: 6px;
}
.reporter-billing-project > th {
	background: #f2f4f6;
	vertical-align: middle !important;
}
.reporter-billing .form-inline .reporter-billing-input {
	width: 120px;
	display: inline-table;
	vertical-align: middle;
}
.reporter-billing .form-inline .reporter-billing-input .form-control {
	width: 100%;
}
.reporter-billing-calc {
	margin: 0 6px;
}

.reporter-billing-actions .reporter-add-note {
	margin-right: 12px;
}
.reporter-billing-actions a {
	display: inline-block;
	white-space: nowrap;
}
.reporter-billing-actions .reporter-not-billed {
	color: #777;
}
.reporter-not-billed-confirm {
	margin-top: 6px;
}
.reporter-not-billed-confirm .reporter-not-billed-cancel {
	margin-left: 8px;
}
.reporter-billing-actions .reporter-not-billed:hover,
.reporter-billing-actions .reporter-not-billed:focus {
	color: #a94442;
}
.reporter-billing-decide textarea,
.reporter-billing-decide .form-inline textarea.form-control {
	margin-top: 4px;
	width: 100%;
	max-width: 420px;
}
.label-reporter-method {
	background: #fff;
	color: #555;
	border: 1px solid #ccc;
}
.label-reporter-method.method-fixed_price {
	color: #2e6da4;
	border-color: #8db8de;
}
.label-reporter-method.method-included,
.label-reporter-method.method-strip_card {
	color: #3c763d;
	border-color: #a6d3a6;
}

/* CRM updates */
.reporter-crm-action .reporter-crm-change {
	margin: 8px 0 0;
	background: #fafafa;
}
.reporter-crm-action div.reporter-crm-change {
	padding: 8px 10px;
	border-left: 3px solid #ddd;
}
.reporter-crm-action table.reporter-crm-change > tbody > tr > td {
	border-top: 0;
}
.reporter-crm-field {
	display: inline-block;
	margin-right: 14px;
}
.reporter-crm-task-text {
	white-space: pre-wrap;
	margin-top: 6px;
	color: #555;
}
.reporter-crm-row-type {
	width: 1%;
	white-space: nowrap;
}

/* Proforma: lines paid from a strip card */
.strip-card-toggle {
	margin-top: 4px;
}
.strip-card-toggle .checkbox-inline {
	padding-top: 0;
}
.strip-card-toggle .strip-card-hours {
	display: inline-block;
	width: 80px;
	margin-left: 8px;
}
tr.reporter-strip-card-line td.description textarea {
	border-left: 3px solid #5bc0de;
}
.reporter-strip-card-panel .reporter-strip-card-numbers {
	margin: 4px 0;
}

/* Suggestion rows on a phone / tablet: a bigger hours field (16px: no zoom on iOS) and Book button */
@media (max-width: 991px) {
	.reporter-suggestion .reporter-hours {
		width: 90px;
		height: 36px;
		font-size: 16px;
	}
	.hours-by-day tr.reporter-suggestion .reporter-book {
		padding: 7px 14px;
		font-size: 14px;
	}
}

/* Guide: pentest hours and billing */
.reporter-guide-link {
	font-size: 14px;
	white-space: nowrap;
}
.reporter-guide-toc-inner {
	position: sticky;
	top: 70px;
	margin-top: 20px;
	padding: 12px 14px;
	border: 1px solid #e3e6eb;
	border-radius: 8px;
	background: #fafbfc;
}
.reporter-guide-toc-title {
	margin-bottom: 6px;
	color: #8a94a3;
	font-size: 11px;
	font-weight: 600;
	letter-spacing: .04em;
	text-transform: uppercase;
}
.reporter-guide-toc ol {
	margin: 0;
	padding-left: 20px;
}
.reporter-guide-toc li {
	margin: 3px 0;
}
.reporter-guide-body {
	max-width: 900px;
	font-size: 15px;
	line-height: 1.6;
}
.reporter-guide-body h2 {
	margin-top: 40px;
	padding-top: 10px;
	border-top: 1px solid #eef0f3;
	scroll-margin-top: 70px;
}
.reporter-guide-body h3 {
	margin-top: 24px;
	font-size: 18px;
}
.reporter-guide-flow {
	display: flex;
	align-items: stretch;
	gap: 8px;
	margin: 16px 0;
}
.reporter-guide-step {
	flex: 1 1 0;
	padding: 12px;
	border: 1px solid #e3e6eb;
	border-radius: 8px;
	background: #fff;
	font-size: 14px;
	line-height: 1.5;
}
.reporter-guide-step-title {
	margin-bottom: 4px;
	color: #1d2939;
	font-weight: 600;
}
.reporter-guide-arrow {
	align-self: center;
	color: #98a2b3;
	font-size: 20px;
}
.reporter-guide-callout {
	margin: 12px 0;
	padding: 12px 14px;
	border-left: 4px solid #5b9bd5;
	border-radius: 4px;
	background: #f2f7fc;
}
.reporter-guide-callout-warning {
	border-left-color: #f0a020;
	background: #fffaeb;
}
.reporter-guide-table {
	font-size: 14px;
}
.reporter-guide-table > tbody > tr > td,
.reporter-guide-table > thead > tr > th {
	vertical-align: top;
}
.reporter-guide-body code {
	overflow-wrap: anywhere;
	white-space: normal;
}
.reporter-guide-table ul {
	margin: 4px 0 0;
	padding-left: 18px;
}
.reporter-guide-table-small {
	width: auto;
}
.reporter-guide-example {
	margin: 8px 0 12px;
	padding: 12px 14px;
	border: 1px dashed #d0d5dd;
	border-radius: 6px;
	background: #fff;
	font-family: Menlo, Consolas, monospace;
	font-size: 13px;
}
.reporter-guide-faq dt {
	margin-top: 12px;
}
.reporter-guide-faq dd {
	color: #475467;
}
.reporter-guide-glossary dt {
	white-space: normal;
}
/* Phone: the CRM table as blocks, every cell with its column heading */
@media (max-width: 767px) {
	.reporter-guide-stack,
	.reporter-guide-stack > tbody,
	.reporter-guide-stack > tbody > tr,
	.reporter-guide-stack > tbody > tr > td {
		display: block;
		width: auto !important;
	}
	.reporter-guide-stack > thead {
		display: none;
	}
	.reporter-guide-stack > tbody > tr {
		margin-bottom: 12px;
		border: 1px solid #e3e6eb;
		border-radius: 8px;
	}
	.reporter-guide-stack.table-bordered > tbody > tr > td {
		border: 0;
		border-top: 1px solid #eef0f3;
	}
	.reporter-guide-stack.table-bordered > tbody > tr > td:first-child {
		border-top: 0;
		background: #fafbfc;
	}
	.reporter-guide-stack > tbody > tr > td:not(:first-child)::before {
		content: attr(data-label);
		display: block;
		margin-bottom: 2px;
		color: #8a94a3;
		font-size: 11px;
		font-weight: 600;
		letter-spacing: .04em;
		text-transform: uppercase;
	}
}
@media (max-width: 991px) {
	.reporter-guide-toc-inner {
		position: static;
	}
	.reporter-guide-flow {
		flex-direction: column;
	}
	.reporter-guide-arrow {
		transform: rotate(90deg);
	}
}

/* Bill retests on a phone: every round is a block, the parts below each other with their heading */
@media (max-width: 767px) {
	.reporter-billing .select2-container {
		width: 100% !important;
	}
	.reporter-billing-table,
	.reporter-billing-table > tbody,
	.reporter-billing-table > tbody > tr,
	.reporter-billing-table > tbody > tr > td,
	.reporter-billing-table > tbody > tr > th {
		display: block;
		width: auto !important;
	}
	.reporter-billing-table > thead {
		display: none;
	}
	.reporter-billing-table > tbody > tr {
		padding: 10px 15px;
		border-top: 1px solid #ddd;
	}
	.reporter-billing-table > tbody > tr > td,
	.reporter-billing-table > tbody > tr > th {
		padding: 4px 0 !important;
		border: 0 !important;
		text-align: left !important;
	}
	.reporter-billing-table > tbody > tr > td[data-label]::before {
		content: attr(data-label);
		display: block;
		margin-top: 4px;
		color: #5f6b78;
		font-size: 11px;
		font-weight: 600;
		letter-spacing: .04em;
		text-transform: uppercase;
	}
	.reporter-billing-table tr.reporter-billing-project {
		display: flex;
		flex-wrap: wrap;
		align-items: center;
		justify-content: space-between;
		gap: 6px;
		background: #f7f7f7;
	}
	.reporter-billing-table .reporter-billing-decide .form-inline .input-group {
		display: inline-table;
		width: 150px;
		vertical-align: middle;
	}
	.reporter-billing-table .reporter-billing-decide .btn-success {
		margin-top: 6px;
	}
}

/* Assessment budgets */
.reporter-budgets-attention > tbody > tr > td {
	padding: 12px 8px;
	vertical-align: top;
}
.reporter-budgets-attention .small + .small {
	margin-top: 2px;
}
.reporter-copy-link code {
	white-space: normal;
	word-break: break-all;
}
.reporter-copy-link .reporter-copy {
	margin-left: 6px;
	white-space: nowrap;
}
.reporter-budgets-filter {
	margin: 15px 0;
}
.reporter-budgets-filter input[name="q"] {
	width: 260px;
}
.reporter-budgets-period {
	margin-top: 10px;
}
.reporter-budgets-period-label {
	min-width: 120px;
	opacity: 1 !important;
	font-weight: bold;
}
.reporter-budgets-summary {
	margin: 10px 0 20px;
	padding: 15px 0;
	border-top: 1px solid #eee;
	border-bottom: 1px solid #eee;
	color: #777;
}
.reporter-budgets-figure {
	font-size: 26px;
	font-weight: bold;
	color: #333;
}
.reporter-budgets-legend {
	margin-bottom: 15px;
	color: #777;
}
.reporter-budgets-legend strong {
	display: block;
	margin-bottom: 6px;
	color: #555;
}
.reporter-budgets-legend .reporter-budgets-key:first-child {
	margin-left: 0;
}
.reporter-budgets-intro {
	margin-top: 15px;
}
.reporter-budgets-key {
	display: inline-block;
	width: 12px;
	height: 12px;
	margin-left: 10px;
	border-radius: 2px;
	vertical-align: -1px;
}
.reporter-budgets-trend {
	max-width: 900px;
	margin-bottom: 30px;
}
.reporter-budgets-table td {
	vertical-align: middle !important;
}
.reporter-budgets-dates {
	margin-top: 4px;
	white-space: nowrap;
}
@media (max-width: 767px) {
	.table-responsive > .reporter-budgets-table > tbody > tr > td:first-child {
		min-width: 140px;
		white-space: normal;
	}
	.reporter-budget-progress {
		min-width: 60px;
	}
}
.reporter-budgets-sort, .reporter-budgets-sort:hover, .reporter-budgets-sort:focus {
	color: inherit;
}
.reporter-budgets-sort.active {
	color: #337ab7;
}
.reporter-budgets .alert-default {
	background-color: #f5f5f5;
	border-color: #ddd;
	color: #555;
}

/* Margin: green target met, orange below the target, red over budget, grey uncertain */
.reporter-budget-margin {
	white-space: nowrap;
}
.reporter-budget-margin.reporter-budget-target_met, .reporter-budgets-figure.reporter-budget-target_met {
	color: #3c763d;
}
.reporter-budget-margin.reporter-budget-below_target, .reporter-budgets-figure.reporter-budget-below_target {
	color: #b8740f;
}
.reporter-budget-margin.reporter-budget-over_budget, .reporter-budgets-figure.reporter-budget-over_budget {
	color: #a94442;
}
.reporter-budget-margin.reporter-budget-uncertain {
	color: #777;
}
.reporter-budget-progress {
	position: relative;
	height: 8px;
	margin: 3px 0 2px;
	min-width: 80px;
	overflow: visible;
	background-color: #fff;
	box-shadow: inset 0 0 0 1px #c9ced6;
}
.progress-bar.reporter-budget-target_met, .reporter-budgets-key.reporter-budget-target_met {
	background-color: #5cb85c;
}
.progress-bar.reporter-budget-below_target, .reporter-budgets-key.reporter-budget-below_target {
	background-color: #f0ad4e;
}
.progress-bar.reporter-budget-over_budget, .reporter-budgets-key.reporter-budget-over_budget {
	background-color: #d9534f;
}
.progress-bar.reporter-budget-uncertain, .reporter-budgets-key.reporter-budget-uncertain {
	background-color: #98a2b3;
}
/* Target margin: stay left of the line */
.reporter-budget-target {
	position: absolute;
	top: -3px;
	bottom: -3px;
	width: 2px;
	margin-left: -1px;
	background-color: #333;
}

/* All hour registrations: what a booked registration was about */
.reporter-booked-work {
	margin-bottom: 4px;
}
.reporter-booked-work .reporter-assessment-title {
	margin-left: 4px;
}
.reporter-details-box {
	display: inline-block;
	margin-left: 6px;
	vertical-align: top;
}
.reporter-details-box > summary {
	cursor: pointer;
	color: #3a87ad;
	font-size: 12px;
}
.reporter-details-box[open] {
	display: block;
	margin-left: 0;
}
/* Hour list: next to the activity label */
.reporter-booked-work-inline .reporter-assessment-title {
	margin-left: 0;
}
.reporter-booked-work-inline .reporter-details-box[open] {
	margin-bottom: 4px;
}
.reporter-booked-work-inline {
	display: inline;
	margin-bottom: 0;
}
/* Opened details of a booked row: set apart from the description below it; full titles wrap */
.reporter-details-box > .reporter-details {
	border-left: 2px solid #d8dee4;
	padding-left: 8px;
	margin: 4px 0 8px;
	overflow-wrap: anywhere;
	word-break: break-word;
}
.reporter-details-box > .reporter-details li {
	margin-bottom: 2px;
}
.reporter-billing-decide textarea.reporter-note-required {
	border-color: #a94442;
	box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
}

/* CRM row of a retest round, linked by finance: the row with its button, then one status line */
.reporter-crm-row .input-group {
	width: 100%;
}
.reporter-crm-row-status {
	margin-top: 4px;
}
.reporter-crm-row-effect {
	margin-top: 4px;
}
.reporter-crm-unconfirmed {
	color: #7a5a1e;
	font-weight: 600;
}
.reporter-crm-unconfirmed .fa-circle {
	font-size: 7px;
	vertical-align: middle;
	color: #f0ad4e;
}
/* After choosing another CRM row the page jumps back to the round: keep it below the fixed navbar */
.reporter-billing tr[id^="round-"] {
	scroll-margin-top: 70px;
}
