/* ============================================
   Outpost Technical theme — OPTION 1
   Branch: outpost-design
   Client brief: white bg, dark-orange header,
   light-orange footer, orange lines/shadows,
   black primary buttons, yellow in titles.
   Colors from https://outposttechnical.com/
   ============================================ */
:root {
	/* --- Outpost brand --- */
	--outpost-white: #FFFFFF;
	--outpost-charcoal: #1A1A1A;
	--outpost-charcoal-soft: #2A2A2A;
	--outpost-orange-dark: #C45C38;    /* header */
	--outpost-orange-darker: #A3482C;
	--outpost-orange-light: #E8A882;   /* footer */
	--outpost-orange-soft: #F7E4D6;
	--outpost-yellow: #E8D978;
	--outpost-yellow-soft: #F5EFC0;

	/* --- Neutral --- */
	--white: #FFFFFF;
	--black: #1C1C1C;
	--grey-100: #E0E2E3;
	--grey-200: #D1D1D1;
	--grey-300: #C2C2C2;
	--grey-400: #B4B4B4;
	--grey-500: #979797;
	--grey-600: #666666;
	--grey-700: #434343;

	/* --- Status (used only by --color-success-*/--color-error-text below —
	   kept as a small standalone pair rather than a full numbered scale,
	   since nothing else in the app currently needs more shades of either) --- */
	--green-100: #E3F0E6;
	--green-400: #2F7D4F;
	--red-400:   #DA3740;   /* matches --bs-danger */

	/* --- Semantic aliases --- */
	--color-bg-primary:          var(--outpost-white);
	--color-bg-page:             var(--outpost-white);
	--color-surface-primary:     var(--outpost-white);
	--color-surface-secondary:   var(--outpost-orange-soft);
	--color-surface-accent:      var(--outpost-yellow-soft);

	--color-text-primary:        var(--outpost-charcoal);
	--color-text-secondary:      var(--grey-700);
	--color-text-brand:          var(--outpost-charcoal);
	--color-text-inverse:        var(--outpost-white);
	--color-text-link:           var(--outpost-orange-darker);

	/* Option 1: primary CTAs are black; hover uses dark orange (matches outline) */
	--color-btn-primary:         var(--outpost-charcoal);
	--color-btn-primary-hover:   var(--outpost-orange-dark);
	--color-btn-secondary:       var(--outpost-orange-dark);
	--color-btn-secondary-hover: var(--outpost-orange-darker);

	--color-border-default:      var(--outpost-orange-dark);
	--color-border-input:        var(--grey-200);

	--color-icon-primary:        var(--outpost-orange-dark);
	--color-success-bg:          var(--green-100);
	--color-success-text:        var(--green-400);
	--color-error-text:          var(--red-400);

	--color-shadow:              rgba(196, 92, 56, 0.22);

	--bs-primary:       #C45C38;
	--bs-primary-rgb:    196, 92, 56;
	--bs-secondary:     #1A1A1A;
	--bs-secondary-rgb:  26, 26, 26;
	--bs-success:       #1A1A1A;
	--bs-success-rgb:    26, 26, 26;
	--bs-danger:        #DA3740;
	--bs-danger-rgb:     218, 55, 64;
	--bs-warning:       #E8D978;
	--bs-warning-rgb:    232, 217, 120;

	--bs-body-bg:       #FFFFFF;
	--bs-body-color:    #1C1C1C;
	--bs-border-color:  #C45C38;
	--bs-link-color:    #A3482C;
	--bs-link-hover-color: #C45C38;
}


* {
	box-sizing: border-box;
}

html {
	min-height: 100vh;
	scroll-behavior: smooth;
}

body {
	font-weight: 400;
	background: var(--color-bg-page);   /* was: green radial gradient */
	min-height: 100vh;
	display: flex;
	flex-direction: column;
	margin: 0;
}

a {
    color: var(--outpost-orange-light)
    text-decoration: underline;
}
a:hover {
    color: var(--outpost-orange-dark)
    text-decoration: underline;
}


.App {
	flex-grow: 1;
	height: 100%;
}

.App.vertical-center {
	justify-content: center;
	align-items: center;
}

/*Card Styling — match dashboard main boxes */

.card {
	background: var(--color-surface-primary);
	border: 3px solid var(--color-border-default);
	border-radius: 0.75rem;
	overflow: hidden;
	}

.card-header {
	background-color: var(--outpost-orange-dark);
	color: var(--color-text-inverse);
	border-radius: 0;
	border-bottom: 1px solid var(--outpost-orange-darker);
	margin: 0;
}

.card-header > button {
	color: var(--outpost-white);
}
.card-header > button:hover {
	color: var(--outpost-yellow-soft);
}

/* Form sections styled like dashboard cards (Notices / Postings / Payouts) */
.section-box {
	background-color: var(--outpost-orange-soft);
	border: 3px solid var(--color-border-default);
	border-radius: 0.75rem;
	padding: 0 0 1.15rem;
	margin-bottom: 1rem;
	overflow: hidden;
}

.section-box > .section-title {
	margin: 0 0 1rem;
	padding: 0.75rem 1.15rem;
}

.section-box > *:not(.section-title) {
	margin-left: 1.15rem;
	margin-right: 1.15rem;
}

.section-box > .section-title + * {
	margin-top: 0;
}

/* card-header style title when used inside section-box / dashboard pattern */
.section-box > .section-title,
.section-title.section-title-bar {
	background-color: var(--outpost-orange-dark);
	color: var(--color-text-inverse);
	font-family: 'Outfit', sans-serif;
	font-weight: 600;
	font-size: 1.05rem;
	border-left: none;
	border-bottom: 1px solid var(--outpost-orange-darker);
}

/* Dashboard-style panel header with action (e.g. Job Roles + Add) */
.op-panel-header {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 0.5rem;
	background-color: var(--outpost-orange-dark);
	color: var(--color-text-inverse);
	padding: 0.65rem 1.15rem;
	border-bottom: 1px solid var(--outpost-orange-darker);
}

.op-panel-header .op-panel-title {
	margin: 0;
	font-family: 'Outfit', sans-serif;
	font-weight: 600;
	font-size: 1.05rem;
	color: inherit;
}

.op-panel-body {
	padding: 1.15rem;
}

.op-panel-body > .form-group:last-child,
.op-panel-body > .row:last-child {
	margin-bottom: 0;
}

hr {
	border-color: var(--outpost-orange-dark);
}

/* Project page accordions — stronger header contrast for dark content inside */
.accordion-item {
	border: 3px solid var(--color-border-default) !important;
	border-radius: 0.75rem !important;
	overflow: hidden;
	background: #fff;
	margin-bottom: 0.75rem;
}

.accordion-item:last-of-type {
	margin-bottom: 0;
}

.accordion-button {
	background-color: var(--outpost-orange-dark) !important;
	color: var(--color-text-inverse) !important;
	font-family: 'Outfit', sans-serif;
	font-weight: 600;
	box-shadow: none !important;
}

.accordion-button:not(.collapsed) {
	background-color: var(--outpost-orange-dark) !important;
	color: var(--color-text-inverse) !important;
	box-shadow: none !important;
}

.accordion-button::after {
	filter: brightness(0) invert(1);
}

.accordion-button:focus {
	box-shadow: none !important;
	border-color: transparent;
}

.accordion-body {
	background: var(--outpost-orange-soft);
	padding: 1rem 1.15rem;
}

.navbar {
	background-color: var(--outpost-orange-dark) !important;
	border-bottom: 1px solid var(--outpost-orange-darker);
	color: var(--color-text-inverse);
}

.navbar .navbar-brand,
.navbar .nav-link {
	color: var(--color-text-inverse) !important;
}

.navbar .nav-link:hover {
	color: var(--outpost-yellow) !important;
}

.navbar-dark .navbar-nav .nav-link {
	color: var(--grey-700);
}



.btn-outline-primary {
	border-color: var(--color-btn-primary);
	color: var(--color-btn-primary);
}
.btn-outline-primary:hover {
	background-color: var(--color-btn-primary);
	color: var(--color-text-inverse);
}

.vertical-center {
	display: flex;
	text-align: left;
	justify-content: center;
	flex-direction: column;
}

.inner-block {
	max-width: 450px;
	margin: auto;
	background: #ffffff;
	border: 3px solid var(--color-border-default);
	box-shadow: none;
	padding: 40px 55px 45px 55px;
	transition: all .3s;
	border-radius: 0.75rem;
}


.vertical-center .form-control:focus {
	border-color: var(--outpost-orange-dark);
	box-shadow: none;
}

.vertical-center h3 {
	text-align: center;
	margin: 0;
	line-height: 1;
	padding-bottom: 20px;
}

label {
	font-weight: 500;
	color: var(--color-text-secondary);
	font-size: 0.875rem;
}

.form-control,
.form-select {
	border-color: var(--color-border-input);
	border-radius: 0.375rem;
	color: var(--color-text-primary);
}

.form-control:focus,
.form-select:focus {
	border-color: var(--outpost-orange-dark);
	box-shadow: 0 0 0 0.2rem rgba(196, 92, 56, 0.2);
}

.form-control.is-invalid,
label.error,
.error {
	color: var(--color-error-text);
}

.welcome-text {
	margin-bottom: 0;
}

.footer-clearance {
	margin-bottom: 80px; /* Adjust based on the height of your footer */
}



.container {
	flex: 1 0 auto;
}

footer {
	flex-shrink: 0;
}


.bg-signature {
	background-color: var(--outpost-orange-light);
}

.bg-footer {
	background-color: var(--outpost-orange-light);
}

footer.shadow {
	box-shadow: 0 -2px 10px var(--color-shadow) !important;
}

.text-footer {
	color: var(--outpost-charcoal) !important;
}

.op-bg-light {
	background-color: var(--outpost-yellow-soft);
}
.op-bg-dark {
	background-color: var(--outpost-orange-dark);
}

.text-footer {
	color: var(--outpost-charcoal);
}

.small-text {
	font-size: 12px !important;
	line-height: 21px !important;
	letter-spacing: 0.03em;
}

.normal-text {
	font-size: 13px !important;
}

.large-text {
	font-size: 15px !important;
}

.font-arial {
	font-family: Arial, sans-serif !important;
}

.bg-card {
	background-color: #ffffff;
}

.field_icon {
	padding: 10px;
	cursor: pointer;
}

.btn-outpostindie {
	border-color: var(--color-btn-primary);
	background-color: var(--color-btn-primary);
	color: var(--color-text-inverse);
	border-radius: 50rem;   /* pill shape like the mockup */
	padding: 0.5rem 1.5rem;
	font-weight: 500;
}

.btn-outpostindie:hover {
	background-color: var(--color-btn-primary-hover);
	border-color: var(--color-btn-primary-hover);
	color: var(--color-text-inverse);
}                                                                                                                   

.btn-outline-brand {
	border: 2px solid var(--color-btn-primary);
	color: var(--color-btn-primary);
	background: var(--white);
	border-radius: 50rem;
	font-weight: 500;
}

.btn-outline-brand:hover {
	background: var(--outpost-orange-soft);
	color: var(--color-btn-primary-hover);
	border-color: var(--color-btn-primary-hover);
}

/*
 * Buttons — Bootstrap CSS variables + solid fallbacks (BS4 still ships here).
 * btn-success = charcoal fill; hover matches outline (dark orange / “dark red”).
 * btn-outline-success = charcoal outline; same hover fill.
 * Back buttons use btn-outline-success btn-back.
 */
.btn-success,
.btn-success:disabled,
.btn-success.disabled {
	--bs-btn-color: #fff;
	--bs-btn-bg: var(--color-btn-primary);
	--bs-btn-border-color: var(--color-btn-primary);
	--bs-btn-hover-color: #fff;
	--bs-btn-hover-bg: var(--outpost-orange-dark);
	--bs-btn-hover-border-color: var(--outpost-orange-dark);
	--bs-btn-active-color: #fff;
	--bs-btn-active-bg: var(--outpost-orange-darker);
	--bs-btn-active-border-color: var(--outpost-orange-darker);
	--bs-btn-focus-shadow-rgb: 196, 92, 56;
	color: var(--bs-btn-color);
	background-color: var(--bs-btn-bg);
	border-color: var(--bs-btn-border-color);
	border-radius: 50rem;
	font-weight: 500;
}

.btn-success:hover,
.btn-success:focus,
.btn-success:active,
.btn-success.active,
.show > .btn-success.dropdown-toggle {
	color: var(--bs-btn-hover-color);
	background-color: var(--bs-btn-hover-bg);
	border-color: var(--bs-btn-hover-border-color);
}

.btn-outline-success {
	--bs-btn-color: var(--color-btn-primary);
	--bs-btn-bg: transparent;
	--bs-btn-border-color: var(--color-btn-primary);
	--bs-btn-hover-color: #fff;
	--bs-btn-hover-bg: var(--outpost-orange-dark);
	--bs-btn-hover-border-color: var(--outpost-orange-dark);
	--bs-btn-active-color: #fff;
	--bs-btn-active-bg: var(--outpost-orange-darker);
	--bs-btn-active-border-color: var(--outpost-orange-darker);
	--bs-btn-focus-shadow-rgb: 196, 92, 56;
	color: var(--bs-btn-color);
	background-color: var(--bs-btn-bg);
	border-color: var(--bs-btn-border-color);
	border-radius: 50rem;
	font-weight: 500;
}

.btn-outline-success:hover,
.btn-outline-success:focus,
.btn-outline-success:active,
.btn-outline-success.active {
	color: var(--bs-btn-hover-color);
	background-color: var(--bs-btn-hover-bg);
	border-color: var(--bs-btn-hover-border-color);
}

/* Cards: default NO hover lift (single detail cards stay quiet) */
.card {
	background: var(--color-surface-primary);
	border: 3px solid var(--color-border-default) !important;
	border-radius: 0.75rem;
	overflow: hidden;
	transition: none;
	transform: none;
}

/* Hover enlarge only for multi-item list cards */
.card.card-hoverable {
	transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.card.card-hoverable:hover {
	transform: translateY(-4px);
	box-shadow: 0 8px 18px rgba(0, 0, 0, 0.12);
}

::-ms-reveal {
   display: none;
}

/* Secondary (modal cancel etc.) remains orange pill — not used for Back */
.btn-secondary {
	--bs-btn-color: #fff;
	--bs-btn-bg: var(--outpost-orange-dark);
	--bs-btn-border-color: var(--outpost-orange-dark);
	--bs-btn-hover-bg: var(--outpost-orange-darker);
	--bs-btn-hover-border-color: var(--outpost-orange-darker);
	--bs-btn-hover-color: #fff;
	background-color: var(--bs-btn-bg) !important;
	border-color: var(--bs-btn-border-color) !important;
	color: var(--bs-btn-color) !important;
	border-radius: 50rem !important;
	font-weight: 500;
}

.btn-secondary:hover,
.btn-secondary:focus,
.btn-secondary:active {
	background-color: var(--bs-btn-hover-bg) !important;
	border-color: var(--bs-btn-hover-border-color) !important;
	color: var(--bs-btn-hover-color) !important;
}

.btn-danger,
.btn-danger:disabled,
.btn-danger.disabled {
	border-radius: 50rem;
	font-weight: 500;
}

/* Back + Manage / action pairs */
.btn-back {
	border-radius: 50rem !important;
}

.op-page-actions .btn,
.op-form-actions .btn {
	min-height: 2.5rem;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.35rem;
}

.op-page-actions .btn i,
.op-form-actions .btn i,
.btn-back i {
	line-height: 1;
}

/* Page / form toolbars: keep action buttons on the right */
.op-page-actions,
.op-form-actions {
	display: flex;
	flex-wrap: wrap;
	justify-content: flex-end;
	align-items: center;
	gap: 0.5rem;
	margin-left: auto;
}

.op-page-header {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 0.75rem;
}

/*.op-page-header > .op-page-actions {
	margin-left: auto;
}*/

/* Label + value detail rows (avoid fixed col-2 crush on mobile) */
.op-detail-row {
	display: flex;
	flex-wrap: wrap;
	gap: 0.25rem 0.75rem;
	margin-bottom: 0.75rem;
}

.op-detail-row .op-detail-label {
	flex: 0 0 auto;
	min-width: 0;
	font-weight: 600;
	margin: 0;
}

.op-detail-row .op-detail-value {
	flex: 1 1 12rem;
	min-width: 0;
	margin: 0;
	overflow-wrap: anywhere;
	word-break: break-word;
}

/* Revenue add form stacks cleanly on small screens */
.op-revenue-form .op-revenue-field {
	margin-bottom: 0.75rem;
}

.op-revenue-form .op-revenue-submit {
	margin-top: 0.25rem;
}

/* Dashboard main columns */
.op-dashboard-row > [class*="col-"] {
	margin-bottom: 1rem;
}

/* Long emails / titles in list cards */
.list-item-card,
.list-item-card .card-title,
.list-item-card .list-item-meta {
	overflow-wrap: anywhere;
	word-break: break-word;
	background-color: inherit;
}

.btn-primary,
.btn-primary:disabled,
.btn-primary.disabled {
	--bs-btn-color: #fff;
	--bs-btn-bg: var(--color-btn-primary);
	--bs-btn-border-color: var(--color-btn-primary);
	--bs-btn-hover-color: #fff;
	--bs-btn-hover-bg: var(--outpost-orange-dark);
	--bs-btn-hover-border-color: var(--outpost-orange-dark);
	--bs-btn-active-bg: var(--outpost-orange-darker);
	--bs-btn-active-border-color: var(--outpost-orange-darker);
	--bs-btn-focus-shadow-rgb: 196, 92, 56;
	color: var(--bs-btn-color);
	background-color: var(--bs-btn-bg);
	border-color: var(--bs-btn-border-color);
	border-radius: 50rem;
	font-weight: 500;
}

.btn-primary:hover,
.btn-primary:focus,
.btn-primary:active,
.btn-primary.active,
.show > .btn-primary.dropdown-toggle {
	color: var(--bs-btn-hover-color);
	background-color: var(--bs-btn-hover-bg);
	border-color: var(--bs-btn-hover-border-color);
}

.text-uppercase {
	text-transform: uppercase;
}

.op-title,
.op-page-header {
	color: var(--color-text-brand);
	margin-top: 1rem !important;
	font-family: 'Outfit', sans-serif;
	font-weight: 600;
}
.op-title {
	margin-bottom: 1rem !important;
}
.op-page-header {
	margin-bottom: 3rem !important;
}

.op-page-header h1 {
	font-size: 2rem;
	display: inline-block;
	padding-bottom: 0.35rem;
	border-bottom: 3px solid var(--outpost-yellow);
}

.op-title .op-subtitle {
	color: var(--color-text-secondary);
	margin-top: 0.35rem;
}

.op-title-card {
	font-family: 'Outfit', sans-serif;
	font-weight: 600;
}

.op-stat-value {
	font-family: 'Outfit', sans-serif;
	font-weight: 700;
	font-size: 1.75rem;
	color: var(--color-text-brand);
}

.op-stat-label {
	color: var(--color-text-secondary);
	font-size: 0.85rem;
}

@media (min-width: 992px) {
	.op-stat-value {
		font-size: 2rem;
	}
}

.op-title-modal {
	font-family: 'Outfit', sans-serif;
	font-weight: 600;
	background-color: var(--outpost-orange-dark);
	color: white;
	font-size: 1.5rem;
}

.navbar-brand {
	font-family: 'Outfit', sans-serif;
	font-weight: 600;
	color: var(--color-text-inverse) !important;
}

.accordion-button {
	padding: 0.7rem;
}

.card-header-text {
	font-size: 1.2rem;
}

.list-group-item {
	padding: 0.5rem;

}

.list-group-item:first-child {
	padding-top: 0rem;
}

.list-group-item:last-child {
	padding-bottom: 0rem;
}


.list-group-item-success {
    color: var(--outpost-charcoal);
    background-color: var(--outpost-orange-soft);
}

div > .alert {
	margin-bottom: 0rem;
}

/* One unified alert look, no color-coding by severity. */
.alert-success,
.alert-warning,
.alert-danger,
.alert-secondary {
	background-color: var(--outpost-yellow-soft);
	border-color: var(--outpost-charcoal-soft);
	color: var(--outpost-charcoal-soft);
}

.text-blue {
	color: var(--color-text-link) !important;
}



.text-brand    { color: var(--color-text-brand) !important; }
.text-accent   { color: var(--outpost-orange-darker) !important; }
.bg-surface    { background-color: var(--color-surface-secondary) !important; }
.bg-surface-teal { background-color: var(--color-surface-accent) !important; }
/* New-member highlight (Admin > Member Management) — see MemberManagement.js's
   recencyBgClass(). !important needed for the same reason as the two rules
   above: .list-item-card already sets its own background-color. */
.bg-yellow      { background-color: var(--outpost-yellow) !important; }
.bg-yellow-soft { background-color: var(--outpost-yellow-soft) !important; }
.border-brand  { border-color: var(--color-border-default) !important; }

/* Click-to-copy referral link (Profile tab's "Refer a Friend" card, see
   cards/tab_profile.php). Styled to read as clickable without being a
   real button/link, since clicking it copies rather than navigates. */
.op-referral-link {
	display: inline-block;
	cursor: pointer;
	background-color: var(--outpost-orange-soft);
	color: var(--outpost-charcoal);
	padding: 0.35rem 0.6rem;
	border-radius: 0.375rem;
	word-break: break-all;
}
.op-referral-link:hover,
.op-referral-link:focus-visible {
	background-color: var(--outpost-yellow-soft);
}

/* Renders newline characters typed into a <textarea> (challenge/project/job
   descriptions, mentor bios, etc.) as actual line breaks wherever that
   text is later displayed read-only. Safe to apply anywhere: it only
   changes whitespace layout of text that's already escaped (React's
   default JSX text-content escaping, or an explicit htmlspecialchars() in
   plain PHP) — never a substitute for escaping, never a reason to skip it. */
.op-preserve-linebreaks { white-space: pre-wrap; }

label.error {
	color: var(--color-error-text);
	font-style: italic;
	font-size: 0.8em;
	margin-left: 10px;
	margin-right: 10px;
}

.error {
	color: var(--color-error-text);
	font-style: italic;
	font-size: 0.8em;
	margin-left: 0;
	margin-right: 10px;
}

.responsive-margin-card {
	margin: 0rem;
	margin-top: 0.5rem;
	margin-bottom: 0.5rem;
}

@media (min-width: 993px) {
	.responsive-margin-card {
		margin: 0rem;
		border: none;
	}
}

.btn-same-height {
	height: calc(1.5em + .75rem + 2px); /* This is the default height of Bootstrap 4 form-control */
	padding: .375rem .75rem; /* This is the default padding of Bootstrap 4 form-control */
	font-size: 1rem; /* This is the default font size of Bootstrap 4 form-control */
	line-height: 1.5; /* This is the default line height of Bootstrap 4 form-control */
	vertical-align: middle;
}

.project-textarea {
	height: 78px;
}

.bootstrap-tagsinput .tag {
	margin-right: 2px;
	color: white !important;
	background-color: var(--outpost-orange-darker);
	padding: 0.2rem;
}

.card-header.role,
.modal-header.participant-modal {
	background-color: var(--outpost-yellow-soft);
	color: var(--color-text-primary);
}

@media (min-width: 992px) {
	.row-striped:nth-of-type(odd) {
		background-color: #ffffff;
	}

	.row-striped:nth-of-type(even) {
		background-color: #efefef;
	}
}

.lined {
	display: flex;
	align-items: center;
	text-align: center;
}

.lined::before,
.lined::after {
	content: '';
	flex: 1;
	border-bottom: 1px solid #adb5bd;
}

.lined::before {
	margin-right: .5em;
}

.lined::after {
	margin-left: .5em;
}


/* Password eye: default charcoal, hover Outpost orange */
.input-group .btn-outline-secondary,
.password-toggle-btn {
	color: var(--outpost-charcoal) !important;
	border-color: var(--color-border-input) !important;
	background-color: #fff !important;
}

.input-group .btn-outline-secondary i,
.input-group .btn-outline-secondary .bi::before,
.password-toggle-btn i,
.password-toggle-btn .bi::before {
	color: inherit;
}

.input-group .btn-outline-secondary:hover,
.input-group .btn-outline-secondary:focus,
.password-toggle-btn:hover,
.password-toggle-btn:focus {
	color: var(--outpost-orange-dark) !important;
	background-color: var(--outpost-orange-soft) !important;
	border-color: var(--outpost-orange-dark) !important;
	box-shadow: none;
}

.btn-check:active+.btn-success:focus,
.btn-check:checked+.btn-success:focus,
.btn-success.active:focus,
.btn-success:active:focus,
.show>.btn-success.dropdown-toggle:focus,
.btn-check:active+.btn-outline-success:focus,
.btn-check:checked+.btn-outline-success:focus,
.btn-outline-success.active:focus,
.btn-outline-success.dropdown-toggle.show:focus,
.btn-outline-success:active:focus,
.btn-check:focus+.btn-success,
.btn-success:focus,
.btn-check:focus+.btn,
.btn:focus
{
	box-shadow: none!important;
}


.input-group .btn-outline-secondary:hover i,
.input-group .btn-outline-secondary:focus i,
.input-group .btn-outline-secondary:hover .bi::before,
.input-group .btn-outline-secondary:focus .bi::before,
.password-toggle-btn:hover i,
.password-toggle-btn:focus i,
.password-toggle-btn:hover .bi::before,
.password-toggle-btn:focus .bi::before {
	color: var(--outpost-orange-dark) !important;
}

a.who-are-we:hover {
	color: var(--outpost-orange-darker) !important;
}

input.error {
	margin-left: 0;
}

#profilePhoto {
	display: block;
}


/* CSS rule for non-mobile devices */
@media (min-width: 576px) {
	.bouncing-block {
		min-height: 600px;
	}
}

.headline {
	font-family: 'Outfit', sans-serif;
	font-weight: 600;
	font-size: 35px;
	text-transform: uppercase;
	letter-spacing: 0.03em;
}

@media (min-width: 576px) {
	.p-custom-width {
		width: 500px; /* Adjust to your desired width */
	}
}

@media (min-width: 576px) {
	.profile-width {
		max-width: 600px; /* Use max-width instead to allow it to shrink if needed */
	}
}

.flex-center {
	display: flex;
	align-items: center; /* Vertically center */
}


.no-gap {
	gap: 0;
}

@media (min-width: 576px) { /* targeting screens wider than 576px (Bootstrap's small breakpoint) */
	.restricted-width-row {
		max-width: 80%;  
		margin-left: auto;
		margin-right: auto;
	}
}

/* 
	Section headings (design-brief form sections)
*/
.op-subtitle {
	color: var(--color-text-secondary);
	font-size: 0.95rem;
	font-weight: 400;
	margin-top: -0.25rem;
}

.section-title {
	color: var(--color-text-brand);
	font-family: 'Outfit', sans-serif;
	font-weight: 600;
	font-size: 1.05rem;
	margin-bottom: 1rem;
	padding-left: 0.65rem;
	border-left: 3px solid var(--outpost-yellow);
}

/* Alerts — breathing room from surrounding content */
.alert {
	margin-top: 0.75rem;
	margin-bottom: 1rem;
}

/* Mobile-first default: keep the first-child alert's top margin, since
   .op-topbar (header.php) is a sticky bar pinned to the viewport top below
   the lg breakpoint — without this, the alert would sit flush against it. */
.alert:first-child {
	margin-top: 0.75rem;
}

/* At lg and up, .op-topbar is hidden (it's d-lg-none) and content has the
   sidebar's own spacing instead — remove the extra margin there, so this
   doesn't double up against whatever already precedes the alert. */
@media (min-width: 992px) {
	.alert:first-child {
		margin-top: 0;
	}
}

/* Confirm / form modals: tighter footer button pair */
.modal-footer.op-modal-footer,
.op-modal-footer.modal-footer {
	gap: 0.2rem;
	justify-content: flex-end;
}

.modal-footer.op-modal-footer .btn + .btn {
	margin-left: 0;
}

/* Job detail page layout (no extra outer indent card) */
.op-job-detail-meta {
	min-width: 11rem;
	text-align: right;
}

.op-job-detail-meta p {
	margin-bottom: 0.5rem;
}

/* Project detail shell matches dashboard cards */
.op-detail-panel {
	margin-bottom: 1rem;
}

/* 
	Left sidebar layout (matches design brief)
*/
.op-sidebar {
	position: fixed;
	top: 0;
	left: 0;
	bottom: 0;
	background: var(--outpost-orange-dark);
	border-right: 1px solid var(--outpost-orange-darker);
	box-shadow: 2px 0 12px var(--color-shadow);
	padding: 1.25rem 1rem;
	overflow-y: auto;
	z-index: 1040;
	display: flex;
	flex-direction: column;
}

.op-sidebar-brand {
	font-family: 'Outfit', sans-serif;
	font-weight: 700;
	color: var(--outpost-white);
	text-decoration: none;
	font-size: 1.15rem;
	line-height: 1.2;
	margin-bottom: 1.5rem;
	display: none;
}

.op-sidebar-nav {
	list-style: none;
	padding: 0;
	margin: 0;
	flex: 1;
}

.op-sidebar-nav li {
	margin-bottom: 0.25rem;
}

.op-sidebar-nav a {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	padding: 0.6rem 0.75rem;
	border-radius: 0.5rem;
	color: rgba(255, 255, 255, 0.88);
	text-decoration: none;
	font-weight: 500;
	font-size: 0.95rem;
}

.op-sidebar-nav a:hover {
	background: rgba(255, 255, 255, 0.08);
	color: var(--outpost-yellow);
}

.op-sidebar-nav a.active {
	background: var(--outpost-charcoal);
	color: var(--outpost-white);
}

.op-sidebar-nav a i {
	font-size: 1.1rem;
}

.op-sidebar-footer {
	border-top: 1px solid rgba(255, 255, 255, 0.2);
	padding-top: 0.75rem;
	margin-top: 0.75rem;
}

.op-sidebar-footer a {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	padding: 0.6rem 0.75rem;
	border-radius: 0.5rem;
	color: rgba(255, 255, 255, 0.88);
	text-decoration: none;
	font-weight: 600;
}

.op-sidebar-footer a:hover {
	background: rgba(0, 0, 0, 0.25);
	color: var(--outpost-white);
}

/* Mobile top bar + off-canvas behaviour */
.op-topbar {
	display: grid;
	grid-template-columns: 2.75rem minmax(0, 1fr) 2.75rem;
	align-items: center;
	justify-items: center;
	column-gap: 0.35rem;
	min-height: 3.25rem;
	background: var(--outpost-orange-dark);
	border-bottom: 1px solid var(--outpost-orange-darker);
	position: sticky;
	top: 0;
	z-index: 1030;
}

.op-topbar-brand {
	grid-column: 2;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	text-align: center;
	min-width: 0;
	max-width: 100%;
	line-height: 1.15;
	font-family: 'Outfit', sans-serif;
	font-weight: 700;
	color: var(--outpost-white);
}

.op-topbar-brand-line {
	font-size: clamp(0.95rem, 3.8vw, 1.05rem);
	white-space: nowrap;
}

.op-topbar-brand-sub {
	display: block;
	font-size: clamp(0.65rem, 2.8vw, 0.75rem);
	font-weight: 600;
	opacity: 0.92;
	white-space: nowrap;
	letter-spacing: 0.01em;
}

.op-sidebar-toggle {
	grid-column: 1;
	justify-self: start;
	align-self: center;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 2.75rem;
	height: 2.75rem;
	background: none;
	border: none;
	font-size: 1.5rem;
	color: var(--outpost-white);
	line-height: 1;
	padding: 0;
	margin: 0;
}

.op-topbar-end {
	grid-column: 3;
	width: 2.75rem;
	height: 2.75rem;
	/* Balances the menu button so the brand stays optically centered */
}

/* Logged-out public navbar */
.op-public-nav .op-public-nav-inner {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 0.5rem 1rem;
	width: 100%;
}

.op-public-nav .navbar-brand {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	line-height: 1.15;
	max-width: 100%;
}

.op-public-brand-line {
	font-size: 1.15rem;
	font-weight: 700;
}

.op-public-brand-sub {
	display: block;
	font-size: 0.75rem;
	font-weight: 600;
	opacity: 0.92;
}

.op-public-nav .navbar-nav {
	flex-direction: row;
	align-items: center;
}


.op-sidebar-backdrop {
	display: none;
}

/* Desktop: reserve space for the fixed sidebar */
@media (min-width: 992px) {
	body:has(.op-sidebar) {
		padding-left: 240px;
	}
}


.create-account-card {
	background: var(--color-surface-primary);
	border: 3px solid var(--outpost-orange-dark) !important;
	border-radius: 12px;
	box-shadow: none;
	overflow: hidden;
}

/*added to fix footer*/
html, body {
	height: 100%;
	margin: 0;
}

body {
	min-height: 100vh;
}

.page-wrapper {
	min-height: 100vh;
	display: flex;
	flex-direction: column;
}

.main-content {
	flex: 1;
}

#root {
	flex: 1;
	display: flex;
	flex-direction: column;
}

/* List-as-cards (Job Board + Projects)
   Mobile: stacked vertical card (title + badge top, meta, full-width action)
   Desktop (lg+): horizontal full-width row (content left, action right) */
.list-cards > [class*="col-"] {
	width: 100%;
	max-width: 100%;
	flex: 0 0 100%;
}

.list-item-card {
	border: 3px solid var(--color-border-default) !important;
	border-color: var(--color-border-default) !important;
	box-shadow: none !important;
	transition: box-shadow 0.15s ease, transform 0.15s ease;
	display: flex;
	flex-direction: column;
	height: 100%;
}

a.list-item-card-link {
	color: inherit;
	cursor: pointer;
}

/* .list-item-card is a flex column expecting its content (banner image,
   .card-body) as direct flex children. Now that the whole card body (and
   optionally a banner image) is wrapped in a link one level down, that
   link itself needs to be a matching flex item/container — otherwise it
   just wraps its own content instead of stretching to the card's full
   width and remaining height. Targets any link that's a direct child of
   a .list-item-card, not just ones carrying .list-item-card-link. */
.list-item-card > a {
	display: flex;
	flex: 1 1 auto;
	flex-direction: column;
	min-width: 0;
	width: 100%;
}

a.list-item-card-link:hover,
a.list-item-card-link:focus {
	color: inherit;
	text-decoration: none;
	box-shadow: 0 4px 16px var(--color-shadow);
	transform: translateY(-2px);
	outline: none;
}

a.list-item-card-link:focus-visible {
	box-shadow: 0 0 0 0.2rem rgba(196, 92, 56, 0.35), 0 4px 16px var(--color-shadow);
}

/* Hover lift only for clickable multi-card lists */
.list-cards a.list-item-card-link:hover,
.list-cards .list-item-card.card-hoverable:hover {
	box-shadow: 0 4px 16px var(--color-shadow);
	transform: translateY(-2px);
}

.list-item-card .card-title {
	margin-bottom: 0;
}

.list-item-card .card-title a {
	color: var(--color-text-brand);
}

.list-item-card .card-title a:hover {
	color: var(--outpost-orange-dark);
}

.list-item-card .list-item-header {
	display: flex;
	justify-content: space-between;
	align-items: flex-start;
	gap: 0.75rem;
	margin-bottom: 0.75rem;
}

.list-item-card .list-item-header .card-title {
	flex: 1 1 auto;
	min-width: 0;
}

.list-item-card .list-item-header .badge {
	flex: 0 0 auto;
	white-space: nowrap;
	/* Equal inset from top + right of the card body */
	margin-top: 0.15rem;
	margin-right: 0.15rem;
}

/* Compact payment / participant rows */
.list-item-card--compact .card-body {
	padding-top: 0.75rem;
	padding-bottom: 0.75rem;
}

.list-item-meta--inline {
	display: flex !important;
	flex-wrap: wrap;
	align-items: baseline;
	column-gap: 1.25rem;
	row-gap: 0.25rem;
}

.list-item-meta--inline > p {
	margin-bottom: 0 !important;
	display: inline-flex !important;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 0.35rem;
}

.list-item-meta--inline > p br {
	display: none !important;
}

/* Whole-card clickable participant (button reset) */
button.list-item-card-link {
	appearance: none;
	-webkit-appearance: none;
	font: inherit;
	color: inherit;
	cursor: pointer;
	padding: 0;
	text-align: left;
}

button.list-item-card-link:hover,
button.list-item-card-link:focus {
	color: inherit;
	outline: none;
	box-shadow: 0 4px 16px var(--color-shadow);
	transform: translateY(-2px);
}

/* Trash icon action — dark orange, black on hover */
.btn-icon-trash {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 2.25rem;
	height: 2.25rem;
	padding: 0;
	border: none;
	border-radius: 50%;
	background: transparent;
	color: var(--outpost-orange-dark);
	line-height: 1;
	font-size: 1.15rem;
}

.btn-icon-trash:hover,
.btn-icon-trash:focus {
	color: #000;
	background-color: var(--outpost-orange-soft);
}

/* Edit icon action — same shape as .btn-icon-trash, success color */
.btn-icon-edit {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 2.25rem;
	height: 2.25rem;
	padding: 0;
	border: none;
	border-radius: 50%;
	background: transparent;
	color: var(--color-success-text);
	line-height: 1;
	font-size: 1.15rem;
}

.btn-icon-edit:hover,
.btn-icon-edit:focus {
	color: #000;
	background-color: var(--color-success-bg);
}

.list-item-actions--icon {
	justify-content: flex-end !important;
	border-top: 1px solid var(--color-border-default) !important;
	padding: 0.4rem 0.75rem !important;
	background: #fff !important;
}

/* Alerts crowding action buttons */
.alert + .op-page-actions,
.alert + .op-form-actions,
.alert + .op-section-toolbar {
	margin-top: 0.25rem;
}

.op-page-header + .alert,
.op-section-toolbar + .alert,
.alert.mb-3 {
	margin-bottom: 1rem !important;
}

.op-revenue-submit .btn {
	min-height: calc(1.5em + 0.75rem + 2px);
}

.card-footer {
	background: var(--outpost-white);
}

.list-item-card .list-item-meta > p {
	margin-bottom: 0.5rem;
}

.list-item-card .list-item-meta > p:last-child {
	margin-bottom: 0;
}

.list-item-card .card-footer {
	background: #fff;
	border-top: 0;
}

.list-item-card .card-footer .btn {
	width: 100%;
}

/* Multiple actions (edit/delete) — stay tidy */
.list-item-card .card-footer.list-item-actions {
	display: flex;
	flex-wrap: wrap;
	gap: 0.35rem;
}

.list-item-card .card-footer.list-item-actions .btn {
	width: auto;
	flex: 1 1 auto;
	min-width: 0;
}

/* Status colors: green = open/active, red = expired/closed */
.badge.bg-success {
	background-color: #198754 !important;
}

.badge.bg-danger {
	background-color: #dc3545 !important;
}

.badge.bg-warning {
	background-color: var(--outpost-orange-light) !important;
	color: var(--outpost-charcoal) !important;
}
a.badge {
	transform: scale(1);
	transition: transform 200ms linear;
}
a.badge:hover {
	transform: scale(1.04);
}


.effective-date {
	display: inline-block;
	padding: 10px 16px;
	border-radius: 6px;
	background-color: #f5f5f5;
	font-size: 0.95rem;
}

.section-divider {
	border: 0;
	border-top: 1px solid #ddd;
	opacity: 1;
}

.tos-section h2 {
	font-size: 1.35rem;
	font-weight: 650;
	margin-bottom: 15px;
}

.tos-section ul {
	margin: 10px 0 20px;
	padding-left: 25px;
}

.tos-section li {
	margin-bottom: 7px;
}

.tos-section a,
.tos-footer a {
	text-decoration: none;
}

.tos-section a:hover,
.tos-footer a:hover {
	text-decoration: underline;
}

.tos-footer {
	padding-top: 5px;
	color: #555;
}

.tos-footer p {
	margin-bottom: 0;
	font-size: 0.95rem;
}

.tos-divider {
	margin: 10px 0 30px;
	border: 0;
	border-top: 1px solid #ddd;
}
.definition-heading {
	font-size: 1.05rem;
	font-weight: 600;
	margin-top: 22px;
	margin-bottom: 6px;
}
.tos-card h2 {
	font-size: 1.4rem;
	font-weight: 650;
	margin-bottom: 15px;
}


.op-sidebar {
	transform: translateX(-100%);
	transition: transform 0.25s ease;
}

.op-sidebar.show {
	transform: none;
}

.op-sidebar-backdrop.show {
	display: block;
	position: fixed;
	inset: 0;
	background: rgba(0, 0, 0, 0.4);
	z-index: 1035;
}


@media (min-width: 992px) {

	.op-sidebar {
		transform: none;
		width: 240px;
	}

	.op-sidebar.show {
		transform: none;
	}

	.op-sidebar-backdrop.show {
		display: none;
	}

	.op-sidebar-brand {
		display: block;
	}


	.list-item-card {
		flex-direction: row;
		align-items: center;
		height: auto !important;
	}

	.list-item-card .card-body {
		flex: 1 1 auto;
		min-width: 0;
	}

	.list-item-card .list-item-meta {
		display: flex;
		flex-wrap: wrap;
		align-items: baseline;
		column-gap: 1.25rem;
		row-gap: 0.35rem;
	}

	.list-item-card .list-item-meta > p {
		margin-bottom: 0;
		display: inline-flex;
		flex-wrap: wrap;
		align-items: baseline;
		gap: 0.35rem;
	}

	.list-item-card .list-item-meta > p br {
		display: none;
	}

	.list-item-card .card-body > hr {
		display: none;
	}

	.list-item-card .card-footer {
		flex: 0 0 auto;
		background: transparent !important;
		border: 0 !important;
		display: flex;
		align-items: center;
		justify-content: center;
		padding: 1rem 1.25rem 1rem 0.75rem;
	}

	.list-item-card .card-footer .btn {
		width: auto;
		min-width: 8.5rem;
		white-space: nowrap;
	}
}

/* Stacked cards only — never table-like horizontal rows (participants, etc.) */
.list-item-card--stack,
.list-item-card.list-item-card--stack {
	flex-direction: column !important;
	align-items: stretch !important;
	height: auto !important;
}

.list-item-card--stack .list-item-meta {
	display: block !important;
}

.list-item-card--stack .list-item-meta > p {
	display: block !important;
	margin-bottom: 0.5rem !important;
}

.list-item-card--stack .list-item-meta > p:last-child {
	margin-bottom: 0 !important;
}

.list-item-card--stack .list-item-meta > p br {
	display: block !important;
}

.list-item-card--stack .card-footer {
	width: 100%;
	border-top: 1px solid var(--color-border-default) !important;
	background: #fff !important;
	padding: 0.5rem 0.75rem !important;
	display: flex;
	justify-content: flex-end;
	gap: 0.5rem;
}

.list-item-card--stack .card-footer .btn,
.list-item-card--stack .card-footer.list-item-actions .btn {
	width: auto !important;
	min-width: 0 !important;
	flex: 0 0 auto !important;
}

.list-item-card--stack .card-footer.list-item-actions--icon .btn-icon-trash {
	width: 2.25rem !important;
	height: 2.25rem !important;
}

/* Participants toolbar: keep Add button clear of the heading */
.op-section-toolbar {
	gap: 1rem !important;
}

.op-section-toolbar .btn {
	flex: 0 0 auto;
}

/* ---------- Tag category pills + tag checkboxes ---------- */
.tag-category-pills {
	display: flex;
	flex-wrap: wrap;
	gap: 0.4rem;
	max-width: 100%;
}

.job-board-tabs .nav-link,
.tag-category-pills .nav-link {
	margin: 0 !important;
	white-space: normal;
	text-align: center;
	line-height: 1.25;
	padding: 0.45rem 0.75rem;
	max-width: 100%;
	overflow-wrap: anywhere;
	word-break: break-word;
	color: var(--outpost-orange-dark);
	border-radius: 0.65rem;
}
.job-board-tabs .nav-link.active,
.tag-category-pills .nav-link.active {
	background-color: var(--outpost-orange-dark);
	color: var(--white);
}

.tag-check {
	display: flex;
	align-items: flex-start;
	gap: 0.4rem;
	max-width: 100%;
	margin: 0;
}

.tag-check .form-check-label,
.tag-check label {
	overflow-wrap: anywhere;
	word-break: break-word;
	line-height: 1.3;
	margin: 0;
}

.tag-check-grid {
	margin-left: 0;
	margin-right: 0;
}

/* ---------- Validation messages (signup + forms) ---------- */
p.error,
label.error,
.error,
#percentage_error p {
	display: block;
	max-width: 100%;
	overflow-wrap: anywhere;
	word-break: break-word;
	white-space: normal;
	line-height: 1.35;
	margin-left: 0 !important;
	margin-right: 0 !important;
	margin-top: 0.35rem;
	margin-bottom: 0;
}

.password-wrapper .form-control {
	padding-right: 4rem;
}

.op-signup-root,
.op-signup-root * {
	max-width: 100%;
}

.op-signup-root .form-control {
	max-width: 100%;
}

/* ---------- Edit profile photo + sections ---------- */
.edit-profile-status:focus {
	outline: none;
}

.profile-photo-img {
	max-width: min(150px, 100%);
	height: auto;
}

.profile-photo-placeholder {
	width: 150px;
	height: 150px;
	max-width: 100%;
}

.edit-profile-photo-actions {
	width: 100%;
}

/* ---------- Modals: scroll + no horizontal overflow ---------- */
.modal {
	overflow-x: hidden;
}

.modal-dialog .container,
.modal .container {
	width: 100% !important;
	max-width: 100% !important;
	padding-left: 0 !important;
	padding-right: 0 !important;
	margin: 0 !important;
}

.modal-content {
	max-width: 100%;
	overflow-x: hidden;
}

.modal-header,
.modal-footer,
.modal .card-header.op-title-modal {
	flex-shrink: 0;
	max-width: 100%;
}

.modal-header .modal-title,
.modal .op-title-modal h4,
.modal .op-title-modal .modal-title {
	overflow-wrap: anywhere;
	word-break: break-word;
	max-width: 100%;
	font-size: clamp(1rem, 4vw, 1.35rem);
}

.modal-body {
	overflow-x: hidden;
	overflow-y: auto;
	max-height: min(70vh, calc(100dvh - 11rem));
	-webkit-overflow-scrolling: touch;
}

.modal-dialog-scrollable {
	max-height: calc(100dvh - 1rem);
}

.modal-dialog-scrollable .modal-content {
	max-height: calc(100dvh - 1rem);
	overflow: hidden;
}

.modal-dialog-scrollable .modal-body {
	max-height: none;
	overflow-y: auto;
}

.op-modal-footer,
.modal-footer {
	display: flex;
	flex-wrap: wrap;
	gap: 0.2rem;
	justify-content: flex-end;
}

/* ---------- Job board tabs + search ---------- */
.job-board-nav {
	width: 100%;
	max-width: 100%;
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
}

.job-board-tabs {
	display: flex;
	flex-wrap: wrap;
	gap: 0.35rem;
	width: 100%;
	min-width: 0;
}

.job-board-tabs .nav-link {
	flex: 1 1 auto;
	text-align: center;
	white-space: normal;
	line-height: 1.25;
	min-width: 0;
	max-width: 100%;
}

.job-board-search {
	min-width: 0;
}

.job-search-actions {
	width: 100%;
}

/* ------------------------------------------------------------------ */
/* Relocated from css/react-components.css (Tier 2 cleanup): these are
   genuinely custom — not expressible as Bootstrap utility classes alone —
   so they stay as real rules, but now use the project's own theme
   variables instead of the hardcoded hex colors they had before. */
/* ------------------------------------------------------------------ */


/* Password show/hide button, positioned inside a `.position-relative`
   wrapper (Bootstrap utility — no custom wrapper class needed). */
.toggle-btn {
	position: absolute;
	right: 10px;
	top: 50%;
	transform: translateY(-50%);
	border: none;
	background: none;
	color: var(--outpost-charcoal);
	cursor: pointer;
	font-size: 13px;
	padding: 0.25rem 0.4rem;
	border-radius: 0.35rem;
}

.toggle-btn:hover,
.toggle-btn:focus {
	color: var(--outpost-orange-dark);
	background-color: var(--outpost-orange-soft);
	outline: none;
}

.textarea {
	min-height: 100px;
	resize: vertical;
}

/* Reused ~20 times across signup.php alone — kept as one class rather
   than repeating text-danger/d-block/wrap-safety utilities at every
   call site. */
.error {
	color: var(--color-error-text);
	font-size: 13px;
	margin-bottom: 0.35rem;
	margin-top: 0.35rem;
	display: block;
	max-width: 100%;
	overflow-wrap: anywhere;
	word-break: break-word;
	white-space: normal;
	line-height: 1.35;
}

.login-page {
	padding-top: 20px;
	padding-bottom: 75px;
}

/* Login page 2-column layout (index.php) — column widths/stacking are
   handled by Bootstrap's grid (.row/.col-*) directly in the markup, not
   here. .inner-block (the login card) is untouched. No fixed max-width on
   .login-marketing — it fills its Bootstrap column and wraps responsively
   at whatever width that column ends up. */
.login-marketing h2 {
	font-family: 'Outfit', sans-serif;
	font-weight: 700;
	font-size: 2rem;
	color: var(--outpost-charcoal);
	line-height: 1.15;
	margin-bottom: 1rem;
}

.login-marketing-lead {
	font-size: 1.05rem;
	color: var(--color-text-secondary);
	margin-bottom: 1.75rem;
}

.login-marketing-features {
	list-style: none;
	margin: 0 0 2rem;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 1.25rem;
}

.login-marketing-features li {
	display: flex;
	align-items: flex-start;
	gap: 0.85rem;
}

.login-marketing-features .bi {
	flex: 0 0 auto;
	width: 2.25rem;
	height: 2.25rem;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border-radius: 50%;
	background-color: var(--outpost-orange-soft);
	color: var(--outpost-orange-dark);
	font-size: 1.1rem;
}

.login-marketing-features strong {
	display: block;
	font-family: 'Outfit', sans-serif;
	font-weight: 600;
	color: var(--outpost-charcoal);
	margin-bottom: 0.15rem;
}

.login-marketing-features p {
	margin: 0;
	color: var(--color-text-secondary);
	font-size: 0.92rem;
}

.login-marketing-tagline {
	display: inline-block;
	font-family: 'Outfit', sans-serif;
	font-weight: 600;
	font-size: 1.15rem;
	color: var(--outpost-charcoal);
	padding-bottom: 0.5rem;
	margin-bottom: 0.85rem;
	border-bottom: 3px solid var(--outpost-yellow);
}

.login-marketing-cta {
	font-size: 1rem;
	color: var(--outpost-orange-darker);
	margin: 0;
}

/* "Paid in full" indicator for a project participant who has received
   their full agreed maximum payout (view_project_details.php,
   edit_project_details.php via EditProjectPage.js). Reuses the
   yellow/charcoal pairing the unified .alert-* styling already
   established, so it reads as "notable status" rather than introducing a
   third color language alongside the green/red bg-success/bg-danger
   badges already used for active/inactive style statuses. */
.op-paid-badge {
	display: inline-flex;
	align-items: center;
	gap: 0.3rem;
	background-color: var(--outpost-yellow);
	color: var(--outpost-charcoal-soft);
	font-weight: 600;
	font-size: 0.75rem;
	vertical-align: middle;
}

.form-check-inline {
   display: flex;
   margin-right: 1rem;
   flex-direction: row;
   align-items: center;
}
.form-check-input {
	flex-shrink: 0;
	margin-top: unset;
	margin-right: .4rem;
	background-color: var(--outpost-yellow-soft);
	border: 1px solid var(--outpost-orange-dark);
}
.form-check-input:checked {
	background-color: var(--outpost-orange-darker);
	border-color: var(--outpost-orange-darker);
}
.form-check-input:focus {
	box-shadow: none!important;
	border-color: var(--outpost-orange-dark);
}
.form-check-input:checked[type=checkbox] {
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23E8D978' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")!important;
}
.form-check-label {
	margin-bottom: unset!important;
}



/* Help page (help.php): left-column table of contents + scrolling right
   column of headered sections. The TOC card itself is capped to the
   viewport height (minus the same 1rem gap its sticky `top` offset
   already uses, for symmetry) and only its body scrolls — the "Contents"
   header stays put — so a long TOC never gets cut off/unreachable on a
   short screen instead of just scrolling with the page. */
.help-toc-card {
	max-height: calc(100vh - 2rem);
	display: flex;
	flex-direction: column;
}
.help-toc-scroll {
	overflow-y: auto;
	min-height: 0;
}
.help-toc-list > li {
	margin-bottom: 0.9rem;
}
.help-toc-list > li > a {
	font-weight: 600;
	color: var(--color-text-primary, var(--outpost-charcoal));
	text-decoration: none;
}
.help-toc-list > li > a:hover,
.help-toc-sublist a:hover {
	color: var(--outpost-orange-dark);
}
.help-toc-sublist {
	margin: 0.35rem 0 0;
	padding-left: 1rem;
	border-left: 2px solid var(--outpost-orange-soft);
}
.help-toc-sublist li {
	margin-bottom: 0.35rem;
}
.help-toc-sublist a {
	font-size: 0.92rem;
	color: var(--color-text-link, var(--outpost-orange-darker));
	text-decoration: none;
}
.help-content h2 {
	scroll-margin-top: 1rem;
}
.help-content h2:not(:first-child) {
	margin-top: 0;
}
.help-content h3 {
	scroll-margin-top: 1rem;
	margin-top: 1.25rem;
}
.help-content .ui-label {
	display: inline-block;
	font-weight: 600;
	font-size: 0.92em;
	color: var(--outpost-orange-darker);
	background: var(--outpost-orange-soft);
	border-radius: 4px;
	padding: 0.05em 0.45em;
	white-space: nowrap;
}
.help-content .where-to-find {
	color: var(--outpost-charcoal-soft);
	font-size: 0.94rem;
}


.btn-close:focus {
    outline: 0;
    box-shadow: none!important;
    opacity: 1;
}

