/* ==========================================================================
   TEKCRAFT — Project cards (home grid, portfolio, service "related projects")

   Notes:
   - Never put !important on the card's `display`: the filter JS in site.js
     hides cards with an inline `display:none`, and an !important display
     here made every filtered-out card still take up space.
   - Screenshots are often full-page captures, so the media frame has a
     fixed ratio and the image is pinned to the top; on hover it slowly
     scrolls down the page like a live preview.
   - Mobile (<=768px) swipe carousel for #portfolio lives in responsive-fix.css.
   ========================================================================== */

.portfolio-grid-modern,
.qeema-portfolio-grid {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 28px;
	margin-top: 36px;
	align-items: stretch;
}

/* Portfolio Archive Page (All Projects Page): strictly 3 columns per row on Desktop */
.portfolio-archive-section .portfolio-grid-modern,
.portfolio-archive-section .qeema-portfolio-grid,
.portfolio-page-grid,
#portfolio-page-grid {
	grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
	gap: 26px !important;
}

.svc-related-grid.qeema-portfolio-grid {
	grid-template-columns: repeat(3, minmax(0, 1fr));
}

@media (max-width: 1200px) {
	.portfolio-grid-modern,
	.qeema-portfolio-grid,
	.svc-related-grid.qeema-portfolio-grid {
		grid-template-columns: repeat(3, minmax(0, 1fr));
		gap: 20px;
	}
	.portfolio-archive-section .portfolio-grid-modern,
	.portfolio-archive-section .qeema-portfolio-grid,
	.portfolio-page-grid,
	#portfolio-page-grid {
		grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
		gap: 22px !important;
	}
}

@media (max-width: 992px) {
	.portfolio-grid-modern,
	.qeema-portfolio-grid,
	.svc-related-grid.qeema-portfolio-grid,
	.portfolio-archive-section .portfolio-grid-modern,
	.portfolio-archive-section .qeema-portfolio-grid,
	.portfolio-page-grid,
	#portfolio-page-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
		gap: 18px !important;
	}
}

@media (max-width: 600px) {
	.portfolio-grid-modern,
	.qeema-portfolio-grid,
	.svc-related-grid.qeema-portfolio-grid,
	.portfolio-archive-section .portfolio-grid-modern,
	.portfolio-archive-section .qeema-portfolio-grid,
	.portfolio-page-grid,
	#portfolio-page-grid {
		grid-template-columns: minmax(0, 1fr) !important;
		gap: 16px !important;
	}
}

/* Filtered-out cards must leave the layout completely */
.modern-project-card[style*="display: none"],
.modern-project-card[style*="display:none"],
.modern-project-card.hide,
.modern-project-card.hidden-filter,
.modern-project-card[hidden] {
	display: none !important;
}

/* --------------------------------------------------------------------------
   Card — matches the reference portfolio card (hero.html .card)
   -------------------------------------------------------------------------- */
.card.modern-project-card {
	--pc-bg: linear-gradient(180deg, #0d1850 0%, #0a1240 100%);
	--pc-fade: #0d1850;
	--pc-border: #1d3a8a;
	--pc-title: #fff;
	--pc-text: #c9d1e8;
	--pc-link: #2b9bff;
	--pc-link-hover: #5cb4ff;
	--pc-ring: #2f86ff;

	position: relative;
	display: flex;
	flex-direction: column;
	width: 100%;
	min-width: 0;
	padding: 0;
	margin: 0;
	text-align: start;
	background: var(--pc-bg);
	border: 1px solid var(--pc-border);
	border-radius: 14px;
	overflow: hidden;
	box-shadow: 0 0 0 1px rgba(40, 90, 220, 0.15), 0 10px 30px rgba(0, 0, 0, 0.25);
	transition: transform 0.3s, box-shadow 0.3s, opacity 0.3s;
}

.card.modern-project-card:hover {
	transform: translateY(-6px);
	box-shadow: 0 0 0 1px rgba(60, 120, 255, 0.5), 0 18px 40px rgba(20, 60, 200, 0.35);
}

/* Media frame — taller still, for a bigger, higher-quality-looking preview */
.card.modern-project-card .media {
	position: relative;
	flex-shrink: 0;
	aspect-ratio: 5 / 4.3;
	min-height: 300px;
	overflow: visible;
	background: radial-gradient(circle at 50% 25%, #152466 0%, #081033 100%);
	border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}

.card.modern-project-card .media > a.main-preview,
.card.modern-project-card .media > a {
	position: absolute;
	inset: 0;
	display: block;
	overflow: hidden;
	border-radius: 13px 13px 0 0;
}

/* ==========================================================================
   Mobile-App Project Cards: 80% Showcase Stage / 20% Compact Footer
   ========================================================================== */
.card.modern-project-card.card--mobile-app,
.card.modern-project-card:has(.media--phone) {
	height: 100%;
	display: flex !important;
	flex-direction: column !important;
}

/* Stage takes ~80% of total card height */
.card.modern-project-card.card--mobile-app .media.media--phone,
.card.modern-project-card:has(.media--phone) .media.media--phone,
.card.modern-project-card .media.media--phone {
	flex: 1 1 auto !important;
	min-height: 410px !important;
	aspect-ratio: 4 / 4.9 !important;
	background:
		radial-gradient(circle at 50% 45%, rgba(34, 211, 238, 0.24) 0%, rgba(99, 102, 241, 0.14) 40%, #06091d 80%) !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	overflow: visible !important;
	position: relative !important;
}

.card.modern-project-card .media--phone::after {
	display: none !important;
}

.card.modern-project-card .media--phone > a.main-preview {
	inset: 0;
	border-radius: 0;
	box-shadow: none;
}

/* Enlarge phone frame and screenshot: ~93% height of the media container, wider & taller */
.card.modern-project-card .phone-device {
	position: absolute;
	top: 48%;
	left: 50%;
	transform: translate(-50%, -50%);
	height: 93% !important;
	max-height: 385px !important;
	width: auto !important;
	aspect-ratio: 9 / 18.2 !important;
	border-radius: 25px !important;
	background: linear-gradient(155deg, #242c52 0%, #12162e 45%, #080a18 100%) !important;
	border: 3.5px solid #1f274a !important;
	box-shadow:
		0 0 0 1px rgba(255, 255, 255, 0.22),
		0 0 0 2px rgba(10, 13, 28, 0.85),
		0 24px 50px -10px rgba(0, 0, 0, 0.9),
		0 0 35px -2px rgba(34, 211, 238, 0.42) !important;
	overflow: hidden;
	transition: transform 0.45s cubic-bezier(.16, 1, .3, 1), box-shadow 0.45s ease;
	will-change: transform;
}

.card.modern-project-card:hover .phone-device {
	transform: translate(-50%, -50%) translateY(-6px) scale(1.025);
	box-shadow:
		0 0 0 1px rgba(34, 211, 238, 0.5),
		0 0 0 2px rgba(10, 13, 28, 0.9),
		0 30px 60px -12px rgba(0, 0, 0, 0.95),
		0 0 45px -2px rgba(34, 211, 238, 0.55) !important;
}

/* Sleek Dynamic Island notch */
.card.modern-project-card .phone-device__island {
	position: absolute;
	z-index: 5;
	top: 7px;
	left: 50%;
	transform: translateX(-50%);
	width: 27%;
	height: 7.5px;
	border-radius: 999px;
	background: #000;
	box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.08);
	display: flex;
	align-items: center;
	justify-content: flex-end;
	padding-inline-end: 4px;
}

.card.modern-project-card .phone-device__cam {
	display: block;
	width: 3px;
	height: 3px;
	border-radius: 50%;
	background: #0f1c3f;
	box-shadow: inset 0 0 1px rgba(56, 189, 248, 0.8);
}

/* Screen: edge-to-edge, crystal-clear */
.card.modern-project-card .phone-device__screen {
	position: absolute;
	inset: 2.5px !important;
	border-radius: 21px !important;
	overflow: hidden;
	background: #020308;
}

.card.modern-project-card .phone-device__screen img {
	position: absolute;
	inset: 0;
	width: 100% !important;
	height: 100% !important;
	max-width: none !important;
	object-fit: cover !important;
	object-position: center top !important;
	display: block;
	image-rendering: -webkit-optimize-contrast;
	filter: contrast(1.04) brightness(1.02);
	transition: object-position 4.5s ease-in-out, transform 0.8s cubic-bezier(.16, 1, .3, 1);
}

.card.modern-project-card:hover .phone-device__screen img {
	object-position: center bottom !important;
	transform: scale(1.02);
}

/* Subtle glossy screen reflection */
.card.modern-project-card .phone-device__glare {
	position: absolute;
	inset: 0;
	pointer-events: none;
	z-index: 3;
	background: linear-gradient(135deg, rgba(255, 255, 255, 0.14) 0%, rgba(255, 255, 255, 0.02) 35%, transparent 55%);
}

/* Sleek bottom home indicator bar */
.card.modern-project-card .phone-device__bar {
	position: absolute;
	z-index: 5;
	bottom: 6px;
	left: 50%;
	transform: translateX(-50%);
	width: 32%;
	height: 2.5px;
	border-radius: 999px;
	background: rgba(255, 255, 255, 0.75);
}

/* Compact Body: takes strictly ~20% of card height (title + project link, no empty void) */
.card.modern-project-card.card--mobile-app .body,
.card.modern-project-card:has(.media--phone) .body {
	flex: 0 0 auto !important;
	padding: 22px 20px 18px !important;
	display: flex !important;
	flex-direction: column !important;
	justify-content: flex-end !important;
	gap: 12px !important;
}

.card.modern-project-card.card--mobile-app .name,
.card.modern-project-card:has(.media--phone) .name {
	margin: 0 !important;
	font-size: 20px !important;
	line-height: 1.3 !important;
}

.card.modern-project-card.card--mobile-app .actions,
.card.modern-project-card:has(.media--phone) .actions {
	margin-top: 0 !important;
	padding-top: 0 !important;
	display: flex !important;
	align-items: center !important;
	justify-content: space-between !important;
}

@media (max-width: 992px) {
	.card.modern-project-card.card--mobile-app .media.media--phone,
	.card.modern-project-card:has(.media--phone) .media.media--phone {
		min-height: 380px !important;
	}
	.card.modern-project-card.card--mobile-app .phone-device,
	.card.modern-project-card:has(.media--phone) .phone-device {
		max-height: 355px !important;
	}
}

@media (max-width: 600px) {
	.card.modern-project-card.card--mobile-app .media.media--phone,
	.card.modern-project-card:has(.media--phone) .media.media--phone {
		min-height: 340px !important;
	}
	.card.modern-project-card.card--mobile-app .phone-device,
	.card.modern-project-card:has(.media--phone) .phone-device {
		max-height: 315px !important;
	}
}

@media (max-width: 400px) {
	.card.modern-project-card.card--mobile-app .media.media--phone,
	.card.modern-project-card:has(.media--phone) .media.media--phone {
		min-height: 290px !important;
	}
	.card.modern-project-card.card--mobile-app .phone-device,
	.card.modern-project-card:has(.media--phone) .phone-device {
		max-height: 270px !important;
	}
}

.card.modern-project-card .media img,
.card.modern-project-card .media img.desktop-screen-img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	max-width: none;
	object-fit: cover;
	object-position: center top;
	display: block;
	filter: contrast(1.02) brightness(1.02);
	transition: object-position 4s ease-in-out, transform 0.8s cubic-bezier(.16, 1, .3, 1);
}

/* Hover: scroll through the full-page screenshot like a live preview */
.card.modern-project-card:hover .media img,
.card.modern-project-card:hover .media img.desktop-screen-img {
	object-position: center bottom;
}

.card.modern-project-card .media::after {
	content: "";
	position: absolute;
	inset: auto 0 0 0;
	height: 55px;
	background: linear-gradient(transparent, var(--pc-fade));
	pointer-events: none;
	z-index: 1;
}

/* --------------------------------------------------------------------------
   Small, elegant mobile device mockup frame beside the main project image
   -------------------------------------------------------------------------- */
.card.modern-project-card .project-mobile-frame {
	position: absolute;
	bottom: -16px;
	inset-inline-end: 18px;
	width: 74px;
	height: 146px;
	border-radius: 17px;
	background: #090e24;
	border: 3.5px solid #202b52;
	box-shadow:
		0 16px 32px -4px rgba(0, 0, 0, 0.8),
		0 0 0 1px rgba(255, 255, 255, 0.16),
		0 0 20px rgba(34, 211, 238, 0.22);
	z-index: 5;
	pointer-events: none;
	transform-origin: center bottom;
	transition: transform 0.4s cubic-bezier(.16, 1, .3, 1), box-shadow 0.4s ease, border-color 0.4s ease;
	will-change: transform;
}

.card.modern-project-card:hover .project-mobile-frame {
	transform: translateY(-8px) scale(1.04) rotate(1.8deg);
	border-color: #2b4b8a;
	box-shadow:
		0 22px 42px -4px rgba(0, 0, 0, 0.9),
		0 0 0 1px rgba(56, 189, 248, 0.45),
		0 0 26px rgba(56, 189, 248, 0.45);
}

html[dir="rtl"] .card.modern-project-card:hover .project-mobile-frame {
	transform: translateY(-8px) scale(1.04) rotate(-1.8deg);
}

.card.modern-project-card .pm-dynamic-island {
	position: absolute;
	top: 4px;
	left: 50%;
	transform: translateX(-50%);
	width: 22px;
	height: 4.5px;
	background: #000000;
	border-radius: 999px;
	z-index: 8;
	box-shadow: 0 0 2px rgba(255, 255, 255, 0.15);
}

.card.modern-project-card .pm-screen {
	position: absolute;
	inset: 0;
	border-radius: 13.5px;
	overflow: hidden;
	background: #030716;
	display: flex;
	align-items: center;
	justify-content: center;
}

.card.modern-project-card .pm-screen img.mobile-screen-img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center top;
	transition: object-position 4s ease-in-out, transform 0.8s cubic-bezier(.16, 1, .3, 1);
}

.card.modern-project-card:hover .pm-screen img.mobile-screen-img {
	object-position: center bottom;
	transform: scale(1.06);
}

/* Tiny skeleton inside the mobile frame when there's no mobile screenshot yet */
.card.modern-project-card .pm-skel {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 6px;
	width: 70%;
}

.card.modern-project-card .pm-skel i {
	display: block;
	width: 100%;
	height: 3px;
	border-radius: 999px;
	background: rgba(125, 211, 252, 0.3);
}

.card.modern-project-card .pm-skel i:nth-child(2) { width: 75%; }
.card.modern-project-card .pm-skel i:nth-child(3) { width: 45%; }

.card.modern-project-card .pm-glare {
	position: absolute;
	inset: 0;
	border-radius: inherit;
	background: linear-gradient(135deg, rgba(255, 255, 255, 0.26) 0%, rgba(255, 255, 255, 0.04) 42%, transparent 60%);
	z-index: 7;
	pointer-events: none;
}

.card.modern-project-card .pm-home-bar {
	position: absolute;
	bottom: 3.5px;
	left: 50%;
	transform: translateX(-50%);
	width: 26px;
	height: 2.5px;
	background: rgba(255, 255, 255, 0.65);
	border-radius: 999px;
	z-index: 8;
}

/* Branded placeholder when a project has no screenshot yet — a designed
   browser-chrome skeleton reads as "coming soon", not an empty broken card. */
.card.modern-project-card .media-placeholder {
	position: absolute;
	inset: 0;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 14px;
	padding: 20px;
	text-align: center;
	background:
		radial-gradient(circle at 30% 20%, rgba(43, 155, 255, 0.22), transparent 55%),
		radial-gradient(circle at 75% 85%, rgba(74, 49, 184, 0.3), transparent 55%),
		#0a1240;
}

.card.modern-project-card .mp-browser {
	position: relative;
	width: 82%;
	max-width: 240px;
	border-radius: 10px;
	overflow: hidden;
	background: rgba(13, 20, 56, 0.85);
	border: 1px solid rgba(255, 255, 255, 0.1);
	box-shadow: 0 18px 36px -12px rgba(0, 0, 0, 0.6);
}

.card.modern-project-card .mp-browser__bar {
	display: flex;
	align-items: center;
	gap: 5px;
	padding: 8px 10px;
	background: rgba(255, 255, 255, 0.04);
	border-bottom: 1px solid rgba(255, 255, 255, 0.07);
}

.card.modern-project-card .mp-browser__bar i {
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.18);
}

.card.modern-project-card .mp-browser__body {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 9px;
	padding: 18px 16px 20px;
}

.card.modern-project-card .mp-skel-icon {
	display: flex;
	margin-bottom: 2px;
}

.card.modern-project-card .mp-skel-icon svg {
	width: 22px;
	height: 22px;
	padding: 10px;
	border-radius: 12px;
	stroke: #fff;
	fill: none;
	stroke-width: 1.8;
	stroke-linecap: round;
	stroke-linejoin: round;
	background: linear-gradient(90deg, #3f6dff, #2d8bff);
	box-shadow: 0 10px 22px rgba(45, 120, 255, 0.4);
	box-sizing: content-box;
}

.card.modern-project-card .mp-skel {
	height: 7px;
	width: 100%;
	border-radius: 999px;
	background: linear-gradient(90deg, rgba(255, 255, 255, 0.1) 25%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.1) 75%);
	background-size: 200% 100%;
	animation: mpShimmer 2.6s ease-in-out infinite;
}

.card.modern-project-card .mp-skel--title { width: 68%; height: 8px; }
.card.modern-project-card .mp-skel--row.short { width: 48%; }

@keyframes mpShimmer {
	0% { background-position: 200% 0; }
	100% { background-position: -200% 0; }
}

.card.modern-project-card .media-placeholder__name {
	max-width: 90%;
	font-size: 0.85rem;
	font-weight: 700;
	line-height: 1.4;
	color: rgba(255, 255, 255, 0.4);
}

@media (prefers-reduced-motion: reduce) {
	.card.modern-project-card .mp-skel { animation: none; }
}

/* Category badge overlapping the media edge */
.card.modern-project-card .badge {
	position: absolute;
	bottom: -14px;
	inset-inline-start: 22px;
	z-index: 3;
	display: inline-flex;
	align-items: center;
	gap: 7px;
	padding: 4px 13px;
	border-radius: 999px;
	font-size: 13px;
	font-weight: 700;
	line-height: 1.5;
	color: #fff;
	background: #123a9c;
	white-space: nowrap;
}

.card.modern-project-card .badge svg {
	width: 15px;
	height: 15px;
	stroke: #fff;
	fill: none;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
	flex-shrink: 0;
}

.card.modern-project-card .badge.company { background: #123a9c; }
.card.modern-project-card .badge.company.teal { background: #0d4f93; }
.card.modern-project-card .badge.store { background: #1b2a9a; }
.card.modern-project-card .badge.store.purple { background: #4a31b8; }
.card.modern-project-card .badge.mobile { background: #1b2a9a; }
.card.modern-project-card .badge.systems { background: #123a9c; }
.card.modern-project-card .badge.custom { background: #0d4f93; }

/* Body */
.card.modern-project-card .body {
	display: flex;
	flex-direction: column;
	flex: 1;
	padding: 26px 20px 22px;
	text-align: start;
}

.card.modern-project-card .name {
	margin: 0;
	font-family: "Inter", "Rubik", sans-serif;
	font-size: 20px;
	font-weight: 700;
	line-height: 1.35;
	letter-spacing: -0.3px;
	text-align: left;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

/* Arabic project names keep right alignment */
.card.modern-project-card .name:dir(rtl) {
	text-align: right;
	letter-spacing: 0;
}

.card.modern-project-card .name a {
	color: var(--pc-title);
	text-decoration: none;
	transition: color 0.2s ease;
}

.card.modern-project-card .name a:hover {
	color: var(--pc-link-hover);
}

/* Reduced description text to keep cards clean and balanced */
.card.modern-project-card .desc {
	margin: 10px 0 0;
	font-size: 13.5px;
	line-height: 1.6;
	color: var(--pc-text);
	text-align: start;
	min-height: 44px;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

/* Actions: circle arrow on the start side, "View project" on the end side */
.card.modern-project-card .actions {
	margin-top: auto;
	padding-top: 22px;
	display: flex;
	align-items: center;
	justify-content: space-between;
}

/* Cards with no description (mobile-app cards) are shorter content than their
   siblings; row-stretch then leaves a big empty gap above .actions because
   margin-top:auto fills ALL the extra height. Cap it instead of auto-filling. */
.card.modern-project-card .body:not(:has(.desc)) .actions {
	margin-top: 18px;
}

.card.modern-project-card .circle {
	flex-shrink: 0;
	display: grid;
	place-items: center;
	width: 34px;
	height: 34px;
	border-radius: 50%;
	border: 1.5px solid var(--pc-ring);
	color: #fff;
	text-decoration: none;
	transition: background 0.25s;
}

.card.modern-project-card .circle:hover {
	background: var(--pc-ring);
	color: #fff;
}

.card.modern-project-card .view {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	font-size: 15px;
	font-weight: 700;
	color: var(--pc-link);
	text-decoration: none;
}

.card.modern-project-card .view:hover {
	color: var(--pc-link-hover);
}

.card.modern-project-card .circle svg,
.card.modern-project-card .view svg {
	width: 16px;
	height: 16px;
	stroke: currentColor;
	fill: none;
	stroke-width: 2.2;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.card.modern-project-card a:focus-visible {
	outline: 2px solid #4fc3ff;
	outline-offset: 3px;
}

/* --------------------------------------------------------------------------
   Premium layer: gradient edge, cursor spotlight, 3D tilt, media shine
   (--mx/--my/--rx/--ry come from portfolio-cards.js)
   -------------------------------------------------------------------------- */
@property --pc-ang {
	syntax: "<angle>";
	inherits: false;
	initial-value: 0deg;
}

.card.modern-project-card {
	transform-style: preserve-3d;
	will-change: transform;
}

.card.modern-project-card:hover {
	transform: perspective(1000px) rotateX(var(--rx, 0deg)) rotateY(var(--ry, 0deg)) translateY(-8px);
	box-shadow:
		0 0 0 1px rgba(60, 120, 255, 0.45),
		0 24px 50px -10px rgba(20, 60, 200, 0.45),
		0 0 40px -8px rgba(34, 211, 238, 0.25);
}

.card.modern-project-card.is-tilting { transition: transform 0.12s linear, box-shadow 0.3s, opacity 0.3s; }

/* Rotating brand gradient edge */
.card.modern-project-card::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 4;
	padding: 1.5px;
	border-radius: inherit;
	background: conic-gradient(from var(--pc-ang), #22d3ee, #2b9bff, #818cf8, #a855f7, #22d3ee);
	-webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
	-webkit-mask-composite: xor;
	mask: linear-gradient(#000 0 0) content-box exclude, linear-gradient(#000 0 0);
	opacity: 0;
	pointer-events: none;
	transition: opacity 0.35s;
	animation: pcSpin 4s linear infinite paused;
}

.card.modern-project-card:hover::before {
	opacity: 1;
	animation-play-state: running;
}

@keyframes pcSpin { to { --pc-ang: 360deg; } }

/* Spotlight that follows the cursor */
.card.modern-project-card::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 3;
	border-radius: inherit;
	background: radial-gradient(420px circle at var(--mx, 50%) var(--my, 0%), rgba(56, 160, 255, 0.16), transparent 42%);
	opacity: 0;
	pointer-events: none;
	transition: opacity 0.35s;
}

.card.modern-project-card:hover::after { opacity: 1; }

/* Image: slow zoom + light sweep */
.card.modern-project-card:hover .media img { transform: scale(1.04); }
.card.modern-project-card .media img { transition: object-position 4s ease-in-out, transform 0.8s cubic-bezier(.16, 1, .3, 1); }

.card.modern-project-card .media > a::after {
	content: "";
	position: absolute;
	top: 0;
	bottom: 0;
	left: -60%;
	width: 45%;
	background: linear-gradient(100deg, transparent, rgba(255, 255, 255, 0.18), transparent);
	transform: skewX(-18deg);
	pointer-events: none;
}

.card.modern-project-card:hover .media > a::after {
	left: 130%;
	transition: left 0.9s ease;
}

/* Glass badge with a soft glow of its own colour */
.card.modern-project-card .badge {
	border: 1px solid rgba(255, 255, 255, 0.18);
	box-shadow: 0 8px 20px -6px rgba(0, 0, 0, 0.6), 0 0 18px -4px rgba(43, 155, 255, 0.55);
	transition: transform 0.35s cubic-bezier(.16, 1, .3, 1);
}

.card.modern-project-card:hover .badge { transform: translateY(-3px); }

.card.modern-project-card .name a {
	background: linear-gradient(90deg, #fff, #fff) no-repeat;
	-webkit-background-clip: text;
	background-clip: text;
}

.card.modern-project-card:hover .name a {
	color: transparent;
	background-image: linear-gradient(90deg, #ffffff 0%, #7dd3fc 55%, #a5b4fc 100%);
}

/* Actions */
.card.modern-project-card:hover .circle {
	border-color: transparent;
	background: linear-gradient(135deg, #2b9bff, #6d5bff);
	box-shadow: 0 6px 18px rgba(43, 155, 255, 0.45);
}

.card.modern-project-card .circle svg,
.card.modern-project-card .view svg { transition: transform 0.3s cubic-bezier(.16, 1, .3, 1); }
.card.modern-project-card:hover .circle svg { transform: translateX(3px); }
.card.modern-project-card:hover .view svg { transform: translateX(-4px); }
html[dir="ltr"] .card.modern-project-card:hover .circle svg { transform: translateX(-3px); }
html[dir="ltr"] .card.modern-project-card:hover .view svg { transform: translateX(4px); }

.card.modern-project-card .view span {
	background: linear-gradient(currentColor, currentColor) no-repeat 100% 100% / 0 1.5px;
	transition: background-size 0.35s;
	padding-bottom: 2px;
}

html[dir="ltr"] .card.modern-project-card .view span { background-position: 0 100%; }
.card.modern-project-card:hover .view span { background-size: 100% 1.5px; }

/* --------------------------------------------------------------------------
   Light theme
   -------------------------------------------------------------------------- */
body.light-theme .card.modern-project-card {
	--pc-bg: #ffffff;
	--pc-fade: #ffffff;
	--pc-border: #c9d6f5;
	--pc-title: #0f172a;
	--pc-text: #475569;
	--pc-link: #1d6fe0;
	--pc-link-hover: #2b9bff;
	box-shadow: 0 0 0 1px rgba(40, 90, 220, 0.06), 0 10px 28px rgba(15, 23, 42, 0.07);
}

body.light-theme .card.modern-project-card:hover {
	box-shadow: 0 0 0 1px rgba(60, 120, 255, 0.35), 0 18px 40px rgba(20, 60, 200, 0.14);
}

body.light-theme .card.modern-project-card .circle {
	color: var(--pc-ring);
}

body.light-theme .card.modern-project-card .circle:hover {
	color: #fff;
}

body.light-theme .card.modern-project-card .project-mobile-frame {
	background: #f8fafc;
	border-color: #cbd5e1;
	box-shadow:
		0 14px 28px -4px rgba(15, 23, 42, 0.18),
		0 0 0 1px rgba(15, 23, 42, 0.08),
		0 0 16px rgba(43, 155, 255, 0.15);
}

body.light-theme .card.modern-project-card:hover .project-mobile-frame {
	border-color: #93c5fd;
	box-shadow:
		0 18px 36px -4px rgba(15, 23, 42, 0.25),
		0 0 0 1px rgba(56, 189, 248, 0.5),
		0 0 22px rgba(56, 189, 248, 0.25);
}

body.light-theme .card.modern-project-card .pm-screen {
	background: #0f172a;
}

body.light-theme .card.modern-project-card .media.media--phone {
	background:
		radial-gradient(circle at 50% 38%, rgba(2, 132, 199, 0.1), transparent 60%),
		radial-gradient(circle at 50% 12%, #eef2fb 0%, #dbe2f0 100%);
}

body.light-theme .card.modern-project-card .phone-device {
	border-color: #cbd5e1;
	background: #0f172a;
}

body.light-theme .card.modern-project-card .phone-device__island {
	background: #0f172a;
}

body.light-theme .card.modern-project-card .phone-device__bar {
	background: rgba(255, 255, 255, 0.6);
}

@media (max-width: 560px) {
	.card.modern-project-card .project-mobile-frame {
		width: 64px;
		height: 126px;
		bottom: -12px;
		inset-inline-end: 14px;
		border-width: 3px;
		border-radius: 15px;
	}

	.card.modern-project-card .pm-dynamic-island {
		width: 18px;
		height: 4px;
		top: 3.5px;
	}

	.card.modern-project-card .pm-screen {
		border-radius: 12px;
	}

	.card.modern-project-card .pm-home-bar {
		width: 20px;
		height: 2px;
		bottom: 3px;
	}
}

@media (prefers-reduced-motion: reduce) {
	.card.modern-project-card,
	.card.modern-project-card .media img,
	.card.modern-project-card .project-mobile-frame,
	.card.modern-project-card .pm-screen img {
		transition: none;
	}

	.card.modern-project-card:hover .media img,
	.card.modern-project-card:hover .pm-screen img {
		object-position: center top;
		transform: none;
	}

	.card.modern-project-card:hover { transform: translateY(-6px); }
	.card.modern-project-card:hover .project-mobile-frame { transform: none; }
	.card.modern-project-card::before { animation: none; }
	.card.modern-project-card .media > a::after { display: none; }
}

body.light-theme .card.modern-project-card:hover .name a {
	background-image: linear-gradient(90deg, #0f172a 0%, #1d6fe0 60%, #6d5bff 100%);
}
