/* Shared Clasva job-card presentation. Find Jobs and Homepage use the same
 * hierarchy; only density changes between full and compact variants. */
.clasva-job-card {
	--cjc-accent: #2563eb;
	--cjc-tint: #eff6ff;
	--cjc-line: #e2e8f0;
	--cjc-ink: #0f172a;
	--cjc-muted: #475569;
	position: relative;
	display: flex;
	flex-direction: column;
	min-width: 0;
	background: #fff;
	border: 1px solid var(--cjc-line);
	border-top: 3px solid var(--cjc-accent);
	border-radius: 18px;
	box-shadow: 0 8px 22px rgba(15, 23, 42, .06);
	padding: 1.2rem 1.25rem 1.1rem;
	color: var(--cjc-ink);
	transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}

.clasva-job-card--full { min-height: 255px; }
.clasva-job-card--compact { min-height: 225px; padding: 1rem 1.05rem .95rem; }
.clasva-job-card:hover { transform: translateY(-2px); border-color: var(--cjc-accent); box-shadow: 0 16px 30px rgba(15, 23, 42, .11); }
.clasva-job-card:focus-within { border-color: var(--cjc-accent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--cjc-accent) 20%, transparent), 0 12px 28px rgba(15,23,42,.1); }
.clasva-job-card--blue { --cjc-accent: #2563eb; --cjc-tint: #eff6ff; }
.clasva-job-card--amber { --cjc-accent: #d97706; --cjc-tint: #fff7ed; }
.clasva-job-card--teal { --cjc-accent: #0f9f91; --cjc-tint: #ecfeff; }
.clasva-job-card--violet { --cjc-accent: #7c3aed; --cjc-tint: #f5f3ff; }

.clasva-job-card__family { display: inline-flex; align-items: center; gap: .42rem; width: fit-content; margin-bottom: .75rem; color: var(--cjc-accent); font-size: .68rem; font-weight: 800; letter-spacing: .075em; line-height: 1.2; text-transform: uppercase; }
.clasva-job-card__family-icon { display: inline-grid; place-items: center; width: 1.55rem; height: 1.55rem; border-radius: 8px; background: var(--cjc-tint); font-size: .85rem; }
.clasva-job-card__title { margin: 0 0 .7rem !important; font-family: 'DM Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif !important; font-size: 1.15rem !important; font-weight: 750 !important; line-height: 1.22 !important; letter-spacing: -.015em; }
.clasva-job-card--compact .clasva-job-card__title { font-size: 1.02rem !important; }
.clasva-job-card__title a { color: var(--cjc-ink) !important; text-decoration: none; }
.clasva-job-card__title a:hover { color: var(--cjc-accent) !important; }
.clasva-job-card__title a:focus-visible, .clasva-job-card__action:focus-visible { outline: 2px solid var(--cjc-accent); outline-offset: 3px; border-radius: 4px; }
.clasva-job-card__company { display: flex; align-items: center; gap: .6rem; min-width: 0; margin: 0 0 .9rem; color: var(--cjc-muted); font-size: .86rem; font-weight: 650; }
.clasva-job-card__company-name { min-width: 0; overflow-wrap: anywhere; }
.clasva-job-card__logo { width: 2.2rem; height: 2.2rem; flex: 0 0 auto; border: 1px solid var(--cjc-line); border-radius: 10px; background: #fff; object-fit: contain; }
.clasva-job-card__logo--initial { display: inline-grid; place-items: center; background: var(--cjc-tint); border-color: color-mix(in srgb, var(--cjc-accent) 28%, white); color: var(--cjc-accent); font-size: .95rem; font-weight: 800; }
.clasva-job-card__salary { display: flex; flex-wrap: wrap; align-items: baseline; gap: .45rem; margin: 0 0 .45rem; color: var(--cjc-accent); font-size: 1.02rem; font-weight: 800; line-height: 1.3; }
.clasva-job-card--compact .clasva-job-card__salary { font-size: .94rem; }
.clasva-job-card__salary-label { color: var(--cjc-muted); font-size: .64rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.clasva-job-card__location { display: flex; align-items: flex-start; gap: .4rem; margin: 0 0 .75rem; color: var(--cjc-muted); font-size: .82rem; line-height: 1.35; }
.clasva-job-card__location span { color: var(--cjc-accent); font-weight: 800; }
.clasva-job-card__meta, .clasva-job-card__signals { display: flex; flex-wrap: wrap; gap: .4rem; list-style: none; margin: 0; padding: 0; }
.clasva-job-card__meta li { padding: .28rem .55rem; border: 1px solid var(--cjc-line); border-radius: 999px; color: var(--cjc-muted); font-size: .7rem; font-weight: 700; line-height: 1.2; }
.clasva-job-card__signals { margin-top: .8rem; padding-top: .7rem; border-top: 1px dashed var(--cjc-line); }
.clasva-job-card__signals li { color: var(--cjc-muted); font-size: .68rem; font-weight: 700; line-height: 1.3; }
.clasva-job-card__signals li::before { content: '✓'; margin-right: .28rem; color: var(--cjc-accent); font-weight: 900; }
.clasva-job-card__action { display: inline-flex; align-items: center; gap: .35rem; width: fit-content; margin-top: auto; padding-top: .85rem; color: var(--cjc-accent) !important; font-size: .78rem; font-weight: 800; text-decoration: none; }
.clasva-job-card__action span { transition: transform .18s ease; }
.clasva-job-card:hover .clasva-job-card__action span { transform: translateX(3px); }

.clasva-job-search__results .clasva-job-card { list-style: none; }
.clasva-hp-jobs .clasva-job-card { height: 100%; }

@media (max-width: 600px) {
	/* The search shell's legacy mobile hero rule is intentionally broader
	 * than the card component and wins in some cached stylesheet orders. Keep
	 * the public search page contained at phone widths. */
	.clasva-job-search .clasva-job-search__hero { margin-left: 0 !important; margin-right: 0 !important; }
	.clasva-job-card { padding: 1rem; border-radius: 15px; }
	.clasva-job-card--full { min-height: 0; }
	.clasva-job-card__title { font-size: 1.06rem !important; }
}

@media (prefers-reduced-motion: reduce) {
	.clasva-job-card, .clasva-job-card__action span { transition: none; }
}
