/*!********************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js!./src/css/main.css ***!
  \********************************************************************/
@import url(https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600&display=swap);
/*!************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js!./src/css/main.css (1) ***!
  \************************************************************************/
/* =======================================================================
    GLOBAL BASE STYLES
======================================================================= */

html, body {
	height: 100%;
}
/* Create a column layout with main content growing */
#root, .app {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
}

/* Main content expands to push footer down */
.main-content {
  flex: 1;
}

body {
	scroll-behavior: smooth;
	font-family: 'Poppins', sans-serif;
	background: white;
	color: black;
	min-height: 100vh;
	margin: 0;
	padding: 0;
}

p {
	color: rgb(85, 85, 85);
}

a,
.btn {
	transition: all 300ms ease;
	text-decoration: none;
}

.contents {
	text-align: center;
	padding: 3rem;
}
/* =======================================================================
	GLOBAL BASE STYLES MOBILE
======================================================================= */
/* Desktop defaults stay as they are */
h2 {
	margin-top: 0rem; 
}

/* On mobile (phones & small tablets) */
@media (max-width: 768px) {
	h2 {
		margin-top: 0rem;
	}
}

/* =======================================================================
    MAIN STRUCTURE
======================================================================= */
.main-content {
	flex: 1;
}

.page-headers {
	top: 0;
	margin: 0;
	padding: 2rem 0;
	font-size: 1.2rem;
	background-color: white;
	z-index: 999;
	position: sticky;
	text-align: center;
	font-weight: 90;
}
/* =======================================================================
    NAVIGATION: NAVBAR + CENTERED TITLE + MOBILE MENU
======================================================================= */
.navbar {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	background-color: white;
	z-index: 1000;
	padding: 1.5rem 1rem;
	display: flex;
	flex-direction: column;
	align-items: center;
}

.navbar-top {
	width: 100%;
	display: flex;
	align-items: center;
	justify-content: center;
	position: relative;
	height: 60px;
}

.navbar-title {
	font-size: 1.2rem;
	font-weight: 90;
	margin: 0;
	color: #111;
	text-align: center;
}

.hamburger {
	position: absolute;
	right: 1rem;
	top: 50%;
	transform: translateY(-50%);
	cursor: pointer;
	display: none;
	flex-direction: column;
	justify-content: space-between;
	height: 18px;
	width: 25px;
	z-index: 1001;
}

.hamburger .bar {
	width: 25px;
	height: 3px;
	background-color: #333;
	border-radius: 4px;
	transition: all 0.3s ease;
}

.hamburger.open .bar:nth-child(1) {
	transform: rotate(45deg) translate(5px, 5px);
}

.hamburger.open .bar:nth-child(2) {
	opacity: 0;
}

.hamburger.open .bar:nth-child(3) {
	transform: rotate(-45deg) translate(5px, -5px);
}

/* Default nav links layout (below title on wide screen) */
.nav-links {
	display: flex;
	list-style: none;
	flex-direction: row;
	gap: 8rem;
	justify-content: center;
	align-items: center;
	width: 100%;
	margin: 1rem 0;
	overflow-x: auto;
	padding: 0 1rem;
	scrollbar-width: none;
}

.nav-links::-webkit-scrollbar {
	display: none;
}

.nav-links a {
	color: #333;
	text-decoration: none;
	/* font-weight: 500; */
}

.nav-links a:hover {
	color: #888;
	text-decoration: underline;
}

/* Responsive nav menu */
@media (max-width: 768px) {
	.hamburger {
		display: flex;
	}

	.nav-links {
		display: none;
		position: fixed;
		top: 0;
		left: 0;
		width: 100vw;
		height: 100vh;
		flex-direction: column;
		background-color: white;
		justify-content: center;
		align-items: center;
		gap: 1.2rem;
		z-index: 999;
	}

	.nav-links.show {
		display: flex;
	}

	.nav-links li {
		text-align: center;
		font-size: 1.5rem; /* 🔧 Bigger font */
	}
}

/* =======================================================================
    BUTTONS / ICONS
======================================================================= */
.btn-container {
	display: flex;
	justify-content: center;
	gap: 1rem;
}

.btn {
	font-weight: 600;
	padding: 1rem;
	width: 8rem;
	border-radius: 2rem;
	cursor: pointer;
}

.btn-color-1,
.btn-color-2 {
	border: rgb(53, 53, 53) 0.1rem solid;
}

.btn-color-1:hover {
	background: rgb(0, 0, 0);
	color: white;
}

.btn-color-2 {
	background: none;
}

.btn-color-1 {
	background-color: #2e2d2d;
	color: white;
}

.btn-color-2:hover {
	border: rgb(255, 255, 255) 0.1rem solid;
	color: white;
	background: rgb(53, 53, 53);
}

.icon {
	cursor: pointer;
	height: 2rem;
}

#socials-container {
	display: flex;
	justify-content: center;
	align-items: center;
	gap: 2rem; /* 🔥 This gives spacing */
	margin-top: 1rem;
}

.social-icon {
	cursor: pointer;
	height: 2rem;
	transition: transform 0.2s ease;
}

.social-icon:hover {
	transform: scale(1.1);
}
/* =======================================================================
    PROFILE / SECTIONS / ABOUT
======================================================================= */
section {
	padding-top: 4vh;
	height: 96vh;
	margin: 0 10rem;
	box-sizing: border-box;
	min-height: fit-content;
}

.section-container {
	display: flex;
	gap: 4rem;
	height: 80%;
}

#profile {
	display: flex;
	justify-content: center;
	gap: 5rem;
	height: 80vh;
	padding: 10rem 1rem;
	/* padding-top: 120px; */
}

.section__pic-container {
	display: flex;
	height: 400px;
	width: 400px;
	margin: auto 0;
}

.section__text {
	align-self: center;
	text-align: center;
}

.section__text p {
	font-weight: 600;
}

.section__text__p1 {
	text-align: center;
}

.section__text__p2 {
	font-size: 1.75rem;
	margin-bottom: 1rem;
}

.title {
	font-size: 3rem;
	text-align: center;
}

/* =======================================================================
    ABOUT / EXPERIENCE / PROJECTS / CONTACT
======================================================================= */
#about {
	position: relative;
}

.about-containers,
.about-details-container {
	display: flex;
}

.about-containers {
	gap: 2rem;
	margin-bottom: 2rem;
	margin-top: 2rem;
	flex-wrap: wrap;
}

.about-details-container {
	justify-content: center;
	flex-direction: column;
}

.about-pic {
	border-radius: 2rem;
}

.arrow {
	position: absolute;
	right: -5rem;
	bottom: 2.5rem;
}

.details-container {
	padding: 1.5rem;
	flex: 1;
	background: white;
	border-radius: 2rem;
	border: rgb(163, 163, 163) 0.1rem solid;
	text-align: center;
}

#experience {
	position: relative;
}

.experience-sub-title {
	color: rgb(85, 85, 85);
	font-weight: 600;
	font-size: 1.75rem;
	margin-bottom: 2rem;
}

.experience-details-container {
	display: flex;
	justify-content: center;
	flex-direction: column;
}

.article-container {
	display: flex;
	text-align: initial;
	flex-wrap: wrap;
	flex-direction: row;
	gap: 2.5rem;
	justify-content: space-around;
}

article {
	display: flex;
	width: 10rem;
	justify-content: space-around;
	gap: 0.5rem;
}

#projects {
	position: relative;
}

.color-container {
	border-color: rgb(163, 163, 163);
	background: rgb(250, 250, 250);
}

.project-img {
	border-radius: 2rem;
	width: 90%;
	height: 90%;
}

.project-title {
	margin: 1rem;
	color: black;
}

.project-btn {
	color: black;
	border-color: rgb(163, 163, 163);
}

/* =======================================================================
    CONTACT SECTION
======================================================================= */
#contact {
	display: flex;
	justify-content: center;
	flex-direction: column;
	height: 70vh;
}

.contact-info-upper-container {
	display: flex;
	justify-content: center;
	border-radius: 2rem;
	border: rgb(163, 163, 163) 0.1rem solid;
	background: rgb(250, 250, 250);
	margin: 2rem auto;
	padding: 0.5rem;
}

.contact-info-container {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 0.5rem;
	margin: 1rem;
}

.contact-info-container p {
	font-size: larger;
}

/* =======================================================================
    HORIZONTAL CARD LAYOUT (PILLARS)
======================================================================= */
#pillar-library {
	position: relative;
}

.library-section {
	padding-top: 4vh;
	height: auto;
	margin: 0 10rem;
	box-sizing: border-box;
	min-height: fit-content;
}

@media (max-width: 768px) {
	.library-section {
		margin: 0 1rem;
	}
}

.library-wrapper {
	display: flex;
	justify-content: center;
	align-items: flex-start;
	min-width: 100%;
	padding: 8rem 1rem;
	box-sizing: border-box;
}

.library-content {
	display: flex;
	flex-direction: column;
	align-items: center;
	width: 100%;
	max-width: 1200px;
}

.library-header {
	text-align: center;
	margin-bottom: 2rem;
}

.library-header h2 {
	font-size: 2rem;
	font-weight: 600;
	color: #1e293b;
	margin-bottom: 0.5rem;
}

.library-header p {
	font-size: 0.95rem;
	color: #555;
	margin: 0;
}

.card-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 2rem;
	width: 100%;
	margin-bottom: 2rem;
	margin-top: 2rem;
}

@media (max-width: 1024px) {
	.card-grid {
		grid-template-columns: repeat(2, 1fr);
	}
}

@media (max-width: 640px) {
	.card-grid {
		grid-template-columns: 1fr;
	}
}

.pillar-card {
	background: white;
	border-radius: 2rem;
	border: 0.1rem solid rgb(163, 163, 163);
	text-align: center;
	padding: 1.5rem;
	box-shadow: 0 4px 12px rgba(0, 0, 0, 0.06);
	transition: transform 0.2s ease, box-shadow 0.2s ease;
	cursor: pointer;
	min-height: 220px;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
}

.pillar-card:hover {
	transform: translateY(-5px);
	box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
	background-color: #f0f0f0;
}

.card-icon {
	font-size: 2.5rem;
	margin-bottom: 1rem;
}

.card-stats {
	margin-top: 1rem;
	line-height: 1.5;
	font-size: 0.9rem;
	color: #333;
}

/* =======================================================================
    FOOTER
======================================================================= */
.footer {
	text-align: center;
	padding: 4rem 1rem;
	color: #111;
	background-color: #fff;
	/* border-top: 1px solid #eee; */
}

.footer-columns {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 2rem;
	margin-bottom: 1rem;
}

.footer-link {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	color: #111;
	font-size: 1.1rem;
	text-decoration: none;
	transition: color 0.3s ease;
}

.footer-link:hover {
	color: #555;
	text-decoration: underline;
}

.footer-icon {
	font-size: 1.2rem;
}

/* Mobile: stack vertically, center text */
@media (max-width: 600px) {
	.footer-columns {
		flex-direction: column;
		align-items: center;
		gap: 1.2rem;
	}

	.footer-link {
		justify-content: center;
	}
}

.copyright {
	font-size: 0.97rem;
	color: #555;
	margin-top: 3rem;
	margin-bottom: 3rem;
}

/* =======================================================================
    READS
======================================================================= */

.horizontal-book-grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 1rem;
	width: 100%;
}

@media (max-width: 1024px) {
	.horizontal-book-grid {
		grid-template-columns: repeat(2, 1fr);
	}
}

@media (max-width: 640px) {
	.horizontal-book-grid {
		grid-template-columns: 1fr;
	}
}

.horizontal-book-card {
	background-color: #fff;
	/* border-radius: 1.5rem; */
	box-shadow: 0 2px 6px rgba(0, 0, 0, 0.05);
	border: 2px solid rgba(0, 0, 0, 0.1);
	cursor: pointer;
	transition: box-shadow 0.2s ease;
	display: flex;
	flex-direction: column;
	padding: 1rem;
	position: relative;
	/* height: 100%; */
}

.horizontal-book-card:hover {
	box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
	background-color: #f9f9f9;
}

.book-meta-column {
	display: flex;
	flex-direction: column;
}

.book-bottom-section {
	margin-top: 0.75rem;
}

.book-cover-fixed {
	width: 100%;
	height: 180px;
	object-fit: fill;
	margin-bottom: 0.75rem;
}

.book-title {
	font-size: 1rem;
	font-weight: 600;
	color: #1e293b;
	margin: 0 0 0.3rem;
	height: 2.6rem;
	line-height: 1.3;
	max-height: 2.6rem;
	overflow: hidden;
	text-overflow: ellipsis;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
}

.book-pillar {
	color: rgb(222, 149, 22);
	font-size: 0.9rem;
	font-weight: 500;
	margin-bottom: 0.1rem;
}

.status-row {
	display: flex;
	justify-content: space-between;
	font-size: 0.85rem;
	color: #333;
	margin-bottom: 0.25rem;
}

.progress-bar-track {
	background-color: #eee;
	height: 6px;
	border-radius: 5px;
	width: 100%;
}

.progress-bar-fill {
	background-color: #8BC34A;
	height: 100%;
	border-radius: 5px;
	transition: width 0.3s ease;
}

.book-rating {
	display: flex;
	gap: 0.25rem;
	font-size: 0.9rem;
	color: #000000;
	margin-top: 1rem;
}

.star-icon {
	transition: color 0.2s ease;
}

@media (max-width: 640px) {
	.horizontal-book-grid {
		grid-template-columns: repeat(2, 1fr); /* 👈 Two cards per row */
	}
}

/* =======================================================================
    READS: HOVER MODAL FOR BOOK METADATA
======================================================================= */

.book-hover-modal {
	position: absolute;
	top: 0;
	width: 300px;
	background-color: #fff;
	border-radius: 1rem;
	padding: 1rem;
	box-shadow: 12px 12px 12px 12px rgba(0, 0, 0, 0.2);
	z-index: 10;
	font-size: 0.85rem;
	color: #1e293b;
	transition: opacity 0.2s ease;
	white-space: normal;
}

.book-hover-modal.right {
	left: 105%;
}

.book-hover-modal.left {
	right: 105%;
}

.book-hover-modal h4 {
	margin-top: 0;
	font-size: 1rem;
	font-weight: 600;
	margin-bottom: 0.5rem;
	text-decoration: underline;
}

.modal-author,
.modal-genre,
.modal-system,
.modal-dates,
.modal-description {
	margin: 0.25rem 0;
	color: #444;
	line-height: 1.3;
}

.book-hover-modal svg {
	margin-right: 0.4rem;
	color: #333;
}

.modal-dates {
	margin-bottom: 1rem;
}

/* Mobile: Centered floating modal */
@media (max-width: 768px) {
	.book-hover-modal.mobile {
		position: fixed;
		top: 50%;
		left: 50%;
		transform: translate(-50%, -50%);
		width: 70%;
		max-width: 300px;
		background: #fff;
		padding: 1.25rem;
		border-radius: 1rem;
		box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
		z-index: 1000;
		overflow-y: auto;
		max-height: 80vh;
		animation: fadeInScale 0.2s ease-out;
	}
}

/* Smooth entrance */
@keyframes fadeInScale {
	from {
		opacity: 0;
		transform: translate(-50%, -40%) scale(0.95);
	}
	to {
		opacity: 1;
		transform: translate(-50%, -50%) scale(1);
	}
}

/* Backdrop (mobile only) */
.modal-backdrop {
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	background: rgba(0, 0, 0, 0.4);
	z-index: 999;
}

/* Close button for mobile modal */
.modal-close-btn {
	position: absolute;
	top: 0.5rem;
	right: 0.5rem;
	background: transparent;
	border: none;
	font-size: 1.2rem;
	cursor: pointer;
	color: #555;
	transition: color 0.2s ease;
}

.modal-close-btn:hover {
	color: #000;
}



/* ===============================
   SEARCH FILTER
================================= */

.reads-filter-search {
	display: flex;
	flex-direction: column;
	gap: 1rem;
	margin-bottom: 2rem;
}

.search-input {
	padding: 0.5rem;
	font-size: 1rem;
	border: 1px solid #ccc;
	border-radius: 4px;
}

.filter-tabs {
	display: flex;
	gap: 0.5rem;
	flex-wrap: wrap;
}

.filter-tab {
	padding: 0.5rem 1rem;
	border: none;
	background-color: #f0f0f0;
	border-radius: 20px;
	cursor: pointer;
	color: #333;
	transition: background-color 0.3s;
}

.filter-tab.active {
	background-color: #333;
	color: #fff;
}
/* ===============================
   MASONRY PHOTO GRID
================================= */

.masonry-grid {
	column-count: 2;
	column-gap: 1.5rem;
	padding: 2rem 1rem;
}

.masonry-item {
	break-inside: avoid;
	margin-bottom: 1.5rem;
	cursor: pointer;
	transition: transform 0.3s ease;
	width: 100%;
}

@media (max-width: 768px) {
	.masonry-grid {
		column-count: 1;
		column-gap: 1.5rem;
		padding: 2rem 1rem;
	}
	.masonry-item.small img,
	.masonry-item.medium img,
	.masonry-item.large img {
		width: 100%;
		height: auto !important;
		object-fit: cover;
	}
}

.masonry-item img {
	width: 100%;
	/* border-radius: 12px; */
	display: block;
	object-fit: cover;
}

.masonry-item:hover {
	transform: scale(1.01);
}

.masonry-item.small img {
	height: 350px;
}
.masonry-item.medium img {
	height: 550px;
}
.masonry-item.large img {
	height: unset;
}

@media (min-width: 600px) {
	.masonry-grid {
		column-count: 2;
		width: 800px;
	}
}

@media (min-width: 900px) {
	.masonry-grid {
		column-count: 2;
	}
}

@media (min-width: 1200px) {
	.masonry-grid {
		column-count: 2;
		width: 60vw;
		gap: 2rem 2rem;
	}
}
/* ===============================
	 LIGHTBOX
  ================================= */

.lightbox {
	position: fixed;
	top: 0;
	left: 0;
	background: white;
	width: 100vw;
	height: 100vh;
	display: flex;
	justify-content: center;
	align-items: center;
	z-index: 9999;
	flex-direction: column;
	padding: 2rem;
	box-sizing: border-box;
	touch-action: pan-y;
}

@media (max-width: 768px) {
	.nav-btn.prev,
	.nav-btn.next {
		display: none;
	}
}

.lightbox-image {
	max-height: 80vh;
	max-width: 80vw;
	margin-bottom: 1rem;
	touch-action: none;
	user-select: none;
}

.caption {
	font-size: 0.95rem;
	color: #333;
	margin-top: 0.5rem;
	text-align: center;
}

/* Buttons */
.close-btn,
.nav-btn,
.share-btn,
.fullscreen-btn {
	position: absolute;
	background: none;
	border: none;
	font-size: 1.6rem;
	cursor: pointer;
	color: #1e293b;
	font-weight: 100;
}

.close-btn {
	top: 1rem;
	right: 2rem;
}
.share-btn {
	top: 1rem;
	left: 2rem;
}

.nav-btn.prev {
	left: 2rem;
	top: 50%;
	transform: translateY(-50%);
}
.nav-btn.next {
	right: 2rem;
	top: 50%;
	transform: translateY(-50%);
}

/* ===============================
	 SHARE MODAL
  ================================= */

.share-modal {
	position: fixed;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	background: white;
	border-radius: 12px;
	padding: 1.5rem;
	box-shadow: 0 8px 20px rgba(0, 0, 0, 0.25);
	z-index: 99999;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 1rem;
	min-width: 220px;
}

.close-share {
	position: absolute;
	top: 0.5rem;
	right: 0.75rem;
	background: none;
	border: none;
	font-size: 1.1rem;
	cursor: pointer;
	color: #999;
}

.social-icons {
	display: flex;
	gap: 1rem;
	font-size: 1.3rem;
}

.social-icons a,
.social-icons button {
	background: none;
	border: none;
	color: #1e293b;
	cursor: pointer;
}

/* ===============================
   BACK TO TOP (Mobile Only)
================================= */

.back-to-top {
	position: fixed;
	bottom: 2rem;
	right: 2rem;
	width: 3rem;
	height: 3rem;
	background-color: #2e2d2d;
	color: white;
	border: none;
	border-radius: 50%;
	font-size: 1.25rem;
	display: none;
	cursor: pointer;
	align-items: center;
	justify-content: center;
	z-index: 9999;
	transition: opacity 0.3s ease;
	display: none;
}

.back-to-top.show {
	display: flex;
}

@media (min-width: 768px) {
	.back-to-top {
		display: none !important;
	}
}


/* =======================================================================
	SPINNER LOADER
======================================================================= */
.loading-wrapper {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  min-height: 60vh; /* Keeps footer pushed down */
}

.spinner {
  width: 48px;
  height: 48px;
  border: 4px solid #eee;
  border-top-color: #111; /* dark accent */
  border-radius: 50%;
  animation: spin 1s linear infinite;
  margin-bottom: 1rem;
}

@keyframes spin {
  to {
    transform: rotate(360deg);
  }
}

/*!****************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js!./src/css/mediaqueries.css ***!
  \****************************************************************************/
@media screen and (max-width: 1400px) {
    #profile {
      height: 83vh;
      margin-bottom: 6rem;
    }
    .about-containers {
      flex-wrap: wrap;
    }
    #contact,
    #projects {
      height: fit-content;
    }
  }
  
  @media screen and (max-width: 1200px) {
    #desktop-nav {
      display: none;
    }
    #hamburger-nav {
      display: flex;
    }
    #experience,
    .experience-details-container {
      margin-top: 2rem;
    }
    #profile,
    .section-container {
      display: block;
    }
    .arrow {
      display: none;
    }
    section,
    .section-container {
      height: fit-content;
    }
    section {
      margin: 0 5%;
    }
    .section__pic-container {
      width: 275px;
      height: 275px;
      margin: 0 auto 2rem;
    }
    .about-containers {
      margin-top: 0;
    }
  }
  
  @media screen and (max-width: 600px) {
    #contact,
    footer {
      height: 40vh;
    }
    #profile {
      height: 83vh;
      margin-bottom: 0;
    }
    article {
      font-size: 1rem;
    }
    footer nav {
      height: fit-content;
      margin-bottom: 2rem;
    }
    .about-containers,
    .contact-info-upper-container,
    .btn-container {
      flex-wrap: wrap;
    }
    .contact-info-container {
      margin: 0;
    }
    .contact-info-container p,
    .nav-links li a {
      font-size: 1rem;
    }
    .experience-sub-title {
      font-size: 1.25rem;
    }
    .logo {
      font-size: 1.5rem;
    }
    .nav-links {
      flex-direction: column;
      gap: 0.5rem;
      text-align: center;
    }
    .section__pic-container {
      width: auto;
      height: 46vw;
      justify-content: center;
    }
    .section__text__p2 {
      font-size: 1.25rem;
    }
    .title {
      font-size: 2rem;
    }
    .text-container {
      text-align: justify;
    }
  }
