/* Basic Reset */
body, h1, p, ul, li, a, img, button {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

body {
  font-family: Arial, sans-serif;
  background-color: #f8f8f8;
  color: #333;
  line-height: 1.6;
}

/* Header Styling */
header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-right: 45px;
  padding-left: 45px;
  padding-top: 2px;
  padding-bottom: 2px;
  background-color: white;
  border-bottom: 2px solid white;
  position: sticky;
  top: 0;
  z-index: 1000;
}

header .logo img {
  width: 50px;
  padding-top: 5px;
  padding-bottom: 5px;
  height: auto;
  cursor: pointer;
  vertical-align: middle; /* Fixes the extra spacing under the image */
  transition: transform 0.5s ease; /* Smooth transition */
}

header .logo img:hover {
  transform: scale(1.2); /* Slightly enlarge on hover */
}
nav ul {
  display: flex;
  list-style: none;
  position: relative;
}

nav ul li {
  margin: 0 10px;
}

nav ul li a {
  position: relative;
  text-decoration: none;
  color: #717076;
  font-weight: bold;
  font-size: 15px;
  line-height: 1.5;
  padding-bottom: 4px; /* chừa chỗ cho underline */
}

nav ul li a::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  height: 1px;
  width: 100%;
  background: #333;
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 0.5s ease;
}

nav ul li a:hover::after {
  transform: scaleX(1);
}

nav ul li a.active {
  color: #333;
}


nav ul li a.active::after {
  transform: scaleX(1);
  transform-origin: left;
  transition: transform 0.5s ease;
  background: #333;
}

/* Thoughts - Title Section */
.title {
  font-size: 2rem;
  font-weight: normal;
  line-height: 1;
  text-align: left;
  padding-left: 50px;
  margin: 30px 0 30px;
  color: #000000;
}

.title span {
  font-style: normal;
  font-weight: normal;
  color: #000000;
}

/* Thoughts - Tabs Section */
.tabs {
  display: flex;
  justify-content: flex-start;
  gap: 10px;
  margin: 20px 0;
  padding-left: 50px;
}

.tab {
  padding: 10px 20px;
  border: 0.5px solid #000000;
  border-radius: 20px;
  cursor: pointer;
  background: #ffffff;
  transition: 0.3s;
  font-size: 14px;
  font-weight: bold;
  color: #333;
}

.tab.active {
  background: #000000;
  color: white;
  border-color: #000000;
}

.tab:hover {
  background: #000000;
  color: white;
}

/* Thoughts - Masonry Grid Layout */
.masonry-grid {
  column-count: 5; /* Number of columns */
  column-gap: 20px; /* Space between columns */
  padding: 5px 50px;
}

.masonry-grid .post {
  break-inside: avoid; /* Prevent posts from breaking across columns */
  margin-bottom: 20px; /* Space between rows */
  background: white;
  border: 1px solid #ddd;
  border-radius: 8px;
  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
  overflow: hidden;
  transition: transform 0.3s ease, box-shadow 0.3s ease;
  cursor: pointer;
  display: inline-block; /* Ensure block-level consistency */
}

.masonry-grid .post:hover {
  transform: translateY(-5px);
  box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2);
}

.masonry-grid .post img {
  width: 100%; /* Full width of the container */
  height: auto; /* Maintain the image's natural aspect ratio */
  display: block;
  margin-bottom: 0;
  object-fit: cover; /* Ensure no distortions */
}

.masonry-grid .post h3 {
  padding: 10px; /* Add padding around the title */
  margin: 0;
  font-size: 15px;
  font-weight: bold;
  color: #333;
  line-height: 1.3;
}

.masonry-grid .post p {
  padding: 0px 10px 10px;
  font-size: 13px;
  font-style: italic;
  color: #555;
}

/* Responsive Layout */
@media (max-width: 1200px) {
  .masonry-grid {
      column-count: 3; /* Reduce columns for smaller screens */
  }
}

@media (max-width: 800px) {
  .masonry-grid {
      column-count: 2; /* Further reduce columns */
  }
}

@media (max-width: 500px) {
  .masonry-grid {
      column-count: 1; /* Single column for mobile */
  }
}

/* Thoughts - Blog Page Styling */
.blog-main {
  max-width: 820px; /* Restrict width for readability */
  margin: 0 auto; /* Center content horizontally */
  padding: 20px; /* Add inner spacing */
  background: #3244e3; /* Keep the existing background color */
  box-shadow: none; /* Remove shadow */
  border-radius: 0; /* Remove rounded corners for simplicity */
}

/* Responsive Design for Mobile */
@media (max-width: 768px) {
  .blog-main {
      max-width: 100%; /* Full width on smaller screens */
      padding: 15px; /* Adjust padding for smaller devices */
  }
}


































/* Photography - Page Styles */
.photography-container {
  display: flex;
  gap: 20px; /* Adjusted gap for better alignment */
  margin: 30px;
  align-items: flex-start;
}

/* Photography - Left Column (Static and Sticky, 25% width) */
.photography-left-column {
  flex-basis: 25%; /* Ensure it takes 25% of the width */
  max-width: 25%; /* Enforce the maximum width to be 25% */
  height: calc(100vh - 60px); /* Full viewport height minus header height */
  overflow-y: auto; /* Allow internal scrolling */
  padding: 20px;
  position: sticky;
  top: 100px; /* Offset for the sticky header */
  background-color: #ffffff;
  border-right: 1px solid #ffffff;
  box-sizing: border-box; /* Ensures padding and border are included in the width */
}

/* Photography - Title Section (Sticky Inside Left Column) */
.photography-title {
  font-size: 2rem;
  font-weight: normal;
  line-height: 1.2;
  text-align: left;
  margin-bottom: 20px;
  color: #333;
  z-index: 10; /* Ensure it stays above other content */
  padding-bottom: 10px;
}

/* Photography - Dropdown Menu */
.photography-dropdown {
  margin-top: 15px;
}

.photography-dropdown select {
  width: 50%;
  padding: 10px 20px;
  font-size: 14px;
  font-weight: normal;
  font-family: Arial, sans-serif;
  color: #444141;
  border: 1px solid #000000;
  border-radius: 20px;
  background: #ffffff;
  cursor: pointer;
  transition: background 0.2s ease, color 0.2s ease, border-color 0.2s ease;
  -webkit-appearance: none; /* Remove default arrow */
  -moz-appearance: none;
  appearance: none;
  background-image: none;
}
.photography-dropdown select:hover,
.photography-dropdown select:focus {
  background: #000000;
  color: #ffffff;
  border-color: #ffffff;
}

/* Photography - Description Styling */
.photography-description {
  font-size: 16px;
  line-height: 1.5;
  color: #000000;
  margin-top: 20px;
  word-wrap: break-word; /* Ensure text wraps to the next line */
  overflow-wrap: break-word;
  max-width: 100%; /* Prevent spilling outside the left column */
}

.photography-description {
  opacity: 0;
  transition: opacity 1s ease-in-out;
}

.photography-description.fade-in {
  opacity: 1;
}

/* Photography - Close Button */
#photo-modal .close-btn {
  position: absolute;
  top: 20px;
  right: 20px;
  font-size: 30px;
  color: white;
  cursor: pointer;
  z-index: 1001;
  border: none; /* Remove any background or borders */
  background: none;
  padding: 0;
  transition: opacity 0.5s ease, transform 0.5s ease; /* Smooth fade-out and scale effect */
}

#photo-modal .close-btn:hover {
  transform: scale(1.3); /* Slightly enlarge on hover */
}

#photo-modal .close-btn:active {
  opacity: 0; /* Gradually disappear when clicked */
  transform: scale(0.5); /* Shrink slightly for click feedback */
}


/* Photography - Right Column (Flexible, 75% width) */
.photography-right-column {
  flex-basis: 75%; /* Ensure it takes 75% of the width */
  max-width: 75%; /* Enforce the maximum width */
  display: flex;
  flex-wrap: wrap;
  gap: 20px;
  box-sizing: border-box; /* Ensures padding does not break the layout */
  overflow-y: auto; /* Enable scrolling for lazy loading */
}

/* Photography - Animation for Images */
@keyframes fadeInZoom {
  0% {
      opacity: 0;
      transform: scale(1.3);
  }
  100% {
      opacity: 1;
      transform: scale(1);
  }
}

.photography-right-column img {
  width: calc(100% - 20px); /* Adjust to include spacing */
  height: auto;
  border-radius: 5px;
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
  transform: scale(1); /* Default scale after animation */
  opacity: 0; /* Start invisible */
  animation: fadeInZoom 1.5s ease forwards; /* Apply fade and zoom effect */
  animation-delay: var(--delay, 0s); /* Stagger animations */
  cursor: pointer;
  object-fit: cover;
  transition: transform 0.3s ease, box-shadow 0.3s ease; /* Ensure hover works smoothly */
}

/* Photography - Add Hover Effect */
.photography-right-column img:hover {
  transform: scale(1.1); /* Slight zoom on hover */
  box-shadow: 0 6px 15px rgba(0, 0, 0, 0.5); /* Enhanced shadow on hover */
}

/* Photography - Lazy Loading Effect for Gradual Scrolling */
.photography-right-column img.lazy {
  animation: none; /* Prevent animation for lazy-loaded images initially */
  opacity: 0;
  transform: scale(1.3);
}

/* Photography - Modal Styling */
#photo-modal {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  display: none;
  background-color: rgba(0, 0, 0, 0.8);
  justify-content: center;
  align-items: center;
  z-index: 1000;
}

#photo-modal img {
  max-width: 90%;
  max-height: 90%;
  border-radius: 10px;
  box-shadow: 0 10px 20px rgba(0, 0, 0, 0.5);
  opacity: 0; /* Start invisible */
  transition: opacity 1s ease-in-out; /* Smooth fade-in effect */
}
#photo-modal img.show {
  opacity: 1; /* Make the image visible */
}

/* Photography - Modal Navigation Buttons */
#photo-modal .prev-btn,
#photo-modal .next-btn {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  font-size: 2rem;
  color: white;
  background: rgba(0, 0, 0, 0.5);
  border: none;
  cursor: pointer;
  z-index: 1001;
  padding: 10px;
  border-radius: 50%;
}

#photo-modal .prev-btn {
  left: 20px;
}

#photo-modal .next-btn {
  right: 20px;
}

#photo-modal .prev-btn:hover,
#photo-modal .next-btn:hover {
  background: rgba(255, 255, 255, 0.5);
  color: black;
}



/* Responsive Layout */
@media (max-width: 1200px) {
  .photography-left-column {
      flex-basis: 30%;
      max-width: 30%;
  }
  .photography-right-column {
      flex-basis: 70%;
      max-width: 70%;
  }
}

@media (max-width: 800px) {
  .photography-container {
      flex-direction: column;
  }

  .photography-left-column {
      position: relative;
      max-width: 100%;
      height: auto;
      padding-bottom: 20px;
      border-right: none;
      border-bottom: 1px solid #ddd;
  }

  .photography-right-column {
      padding-left: 0;
  }
}

@media (max-width: 500px) {
  .photography-dropdown select {
      font-size: 14px;
      padding: 8px;
  }

  .photography-title {
      font-size: 1.8rem;
  }
}














































/* About Page Styling */
/* About Page Styling */
/* About Page Styling */
/* About Page Styling */
/* About Page Styling */
/* About Page Styling */
/* About Page Styling */
/* About Page Styling */
/* About Page Styling */
/* About Page Styling */
/* About Page Styling */

/* General Reset */

/* Import Custom Fonts */
@font-face {
  font-family: 'SFP-Regular';
  src: url('fonts/SFP-Regular.otf') format('opentype');
}
@font-face {
  font-family: 'Space Grotesk';
  src: url('fonts/SpaceGrotesk.ttf') format('truetype');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'SFP-Medium';
  src: url('fonts/SFP-Medium.otf') format('opentype');
}

@font-face {
  font-family: 'Lavonia';
  src: url('fonts/Lavonia.otf') format('opentype'); 
}
@font-face {
  font-family: 'BeVietnam';
  src: url('fonts/BeVietnam.ttf') format('opentype'); 
}
@font-face {
  font-family: 'Mencken';
  src: url('fonts/Mencken.otf') format('opentype'); 
}
@font-face {
  font-family: 'DMMono Light';
  src: url('fonts/DMMono-Light.ttf') format('truetype'); 
}
@font-face {
  font-family: 'DMMono LightItalic';
  src: url('fonts/DMMono-LightItalic.ttf') format('truetype'); 
}
@font-face {
  font-family: 'DMMono Regular';
  src: url('fonts/DMMono-Regular.ttf') format('truetype'); 
}

body, h1, p, ul, li, a, img {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

body {
  font-family: Arial, sans-serif;
  line-height: 1.6;
  background-color: #ffffff;
  color: #333;
  overflow-x: hidden;
}

/* Snap Container */
.snap-container {
  scroll-snap-type: y mandatory;
  overflow-y: scroll;
  height: 90vh;
}

.snap-slide {
  scroll-snap-align: start;
  height: 80vh;
  padding: 30px;
  display: flex;
  flex-direction: column;
  position: relative;
}

/* About Section Grid */
.about-grid {
  display: grid;
  grid-template-columns: 1fr 2fr 1fr;
  height: 85vh;
  padding: 0 0px;
  align-items: center;
}


.left-title {
  font-family: "Lavonia", serif;
  font-size: 45px;
  font-style: normal;
  position: absolute;
  top: 5%;
  left: 40px;
}

.scroll-text {
  font-family: "Lavonia", serif;
  font-size: 30px;
  font-style: normal;
  position: absolute;
  bottom: 1%;
  left: 40px;
  color: #000000;
}

.description {
  font-family: "BeVietnam";
  font-size: 15px;
  grid-column: 2 / 3;
  text-align: justify;
  line-height: 1.8;
}

.signature {
  margin-top: 10px;
  text-align: right; /* Aligns text to the right */
  font-style: italic;
}

.signature .name {
  font-size: 30px; /* Default larger size for the name */
  font-weight: bold; /* Bold text for emphasis */
  font-family: 'Lavonia', sans-serif; /* Optional: Customize font */
}

.signature .location {
  font-size: 14px; /* Smaller size for the location */
  font-weight: normal; /* Normal weight for contrast */
  font-family: 'Be Vietnam', sans-serif; /* Optional: Customize font */
}
.portrait-container {
  grid-column: 3 / 4;
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100%;
}

.portrait {
  position: relative;
  width: auto;
  max-height: 100%;
  overflow: hidden; /* Prevent any overflow */
}

.portrait img {
  width: 100%; /* Matches container width */
  max-height: 100%; /* Scales proportionally */
  object-fit: cover; /* Ensures correct scaling */
  transition: opacity 0.6s ease-in-out; /* Smooth fading effect */
}

.portrait img.default {
  opacity: 1; /* Always fully visible */
  z-index: 1; /* Stays below the hover image */
  position: relative;
}

.portrait img.hover {
  opacity: 0; /* Initially hidden */
  z-index: 2; /* Stacked above the default image */
  position: absolute;
  top: 0;
  left: 0;
  transition: opacity 0.6s ease-in-out; /* Smooth fade-in effect */
}

.portrait:hover img.hover {
  opacity: 1; /* Gradually fades in on hover */
}

.portrait:hover img.default {
  opacity: 1; /* Default image remains visible */
}























/* Travel Section */
/* Travel Section */
/* Travel Section */
/* Travel Section */
/* Travel Section */
/* Travel Section */
/* Travel Section */
/* Travel Section */
/* Travel Section */
/* Travel Section */
/* Travels Section Grid */
/* Travels Section Grid */
/* Travels Section Grid */
.travels-grid {
  display: grid;
  grid-template-columns: 1fr 4fr 2fr; /* Three columns: Title, Magnets, Description */
  gap: 0px; /* Spacing between columns */
  padding-top: 100px;
  align-items: start;
}

/* Masonry Magnet Grid - Horizontal Flow */
/* Center Column: Masonry Magnet Grid */
.magnets-grid {
  padding-left: 20px;
  padding-right: 20px;
  column-count: 6; /* Number of columns */
  column-gap: 0px; /* Space between columns */
}

.magnets-grid img {
  width: 100%; /* Ensures images fill their container */
  margin-bottom: 0px; /* Space between rows */
  display: block; /* Ensures no inline spacing issues */
  border-radius: 0px; /* Optional: Rounded corners */
  box-shadow: 0 0px 0px rgba(0, 0, 0, 0); /* Optional: Subtle shadow */
  break-inside: avoid; /* Prevents breaking within columns */
}

/* Right Column: Travel Descriptions */
.travels-right {
  padding-right: 20px ;
  text-align: justify;
  font-family: "BeVietnam";
  font-size: 13px;
  line-height: 1.8;
  color: #333;
  word-wrap: break-word; /* Ensure long words wrap correctly */
  overflow-wrap: break-word;
}





/* FAVICON */
.favicon-image {
  width: 48px; /* Adjust to desired size */
  height: 48px;
  border-radius: 50%; /* Makes it a circle */
  overflow: hidden; /* Ensures the content is clipped */
}


/* Video-Making Section */
/* Video Section Grid */
/* Video-making Section */
/* Video-making Section */
/* Video-Making Section */
/* Video-Making Section */
/* Video-Making Section */
/* Video-Making Section */
.video-container {
  text-align: center;
  padding: 20px;
}

.video-grid {
  display: grid;
  grid-template-columns: 1fr 3fr; /* 25% for title/scroll, 75% for carousel and description */
  gap: 0px;
  align-items: start;
}

/* Left Column: Title and Scroll */


/* Right Column: Video Carousel and Description */
.video-content {
  display: flex;
  flex-direction: column;
  gap: 15px;
}

/* Stack 1: Prev-Next Buttons */
.controls {
  display: flex;
  justify-content: flex-end;
  gap: -2px; /* Spacing between the buttons */
  margin-bottom: 0px; /* Adjust this to bring the buttons closer to the video list */
  padding-top: 5%; /* Ensure no extra padding is added */
}

/* Prev-Next Buttons */
.prev-btn, .next-btn {
  background: none;
  border: none;
  font-size: 18px; /* Adjust size for thinner appearance */
  cursor: pointer;
  color: #555; /* Neutral color */
  padding: 5px;
  font-weight: 200; /* Lighter font weight */
  transition: color 0.3s ease, transform 0.2s ease;
}

.prev-btn:hover, .next-btn:hover {
  color: #000; /* Highlight on hover */
  transform: scale(1.1); /* Slight zoom on hover */
}

.prev-btn:disabled, .next-btn:disabled {
  color: #ccc; /* Lighter color for disabled state */
  cursor: not-allowed; /* Indicate non-functionality */
}

/* Stack 2: Carousel */
.carousel {
  position: relative;
  overflow: hidden;
  margin-top: -10px;
  width: calc(204px * 5 + 10px * 4); /* Lock visible width: 5 items + 4 gaps */
}

.carousel-track {
  display: flex;
  gap: 10px;
  transition: transform 0.5s ease;
}

.carousel-item {
  flex: 0 0 204px; /* Fixed width for each video */
  text-align: left;
  box-sizing: border-box;
}

.carousel-item img {
  width: 100%;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  border-radius: 5px;
  box-shadow: 0 0px 0px rgba(0, 0, 0, 0);
  transition: transform 0.3s ease;
}

/* Ensures no underline appears on dynamically generated <a> tags */
.carousel-item a {
  text-decoration: none; /* Removes underline */
  color: inherit; /* Makes the link inherit color from parent */
}

.carousel-item p {
  margin-top: 8px;
  font-size: 14px;
  font-family: "Be Vietnam", sans-serif;
  color: #333;
  text-align: left;
  line-height: 1.4;
}



/* Stack 3: Description */
.video-description {
  font-size: 16px;
  font-family: "Be Vietnam", sans-serif;
  line-height: 1.6;
  text-align: left;
  margin-top: 10px;
}

.video-description a {
  color: #663399;
  text-decoration: none;
}

.video-description a:hover {
  color: #000;
  text-decoration: none;
}


/* code code code code code*/

@keyframes fadeInUp {
  0% {
      transform: translateY(10px); 
      opacity: 0;
  }
  100% {
      transform: translateY(0);
      opacity: 1;
  }
}

.fadeInUp-animation {
  animation: fadeInUp 1s ease forwards;
}

/* LOADING LOADING LOADING PAGE PAGE PAGE */
/* LOADING LOADING LOADING PAGE PAGE PAGE */
/* LOADING LOADING LOADING PAGE PAGE PAGE */

#loading-screen {
  position: fixed;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  background-color: #ffffff;
  z-index: 10000;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 1;
  transition: opacity 1s ease; /* Adjusted for 1-second fade-out */
}

#loading-screen video {
  width: 70%; /* Adjust the size to fit your needs */
  max-height: 80%;
}




/* AWARD AWARD AWARD */
/* Styling for language tabs */
/* Styling for the language toggle */
/* Awards Section Layout */
/* Awards Section Layout */
/* Title Section */

/* Awards List Container */
.awards-list-container {
  position: absolute;
  top: 20%;
  left: 40px;
  max-width: 80%;
  text-align: left;
}

/* Awards List */
.awards-list {
  list-style: none;
  margin: 0;
  padding: 0;
  font-family: "BeVietnam", sans-serif;
  font-size: 14px;
  font-weight: normal;
  color: #000000;
}

.awards-list li {
  margin-bottom: 8px;
}

/* Language Tabs */
.language-tabs {
  position: flex;
  left: 40px;
  justify-content: flex-end;
  gap: 10px;
  margin-bottom: 10px;
}

.language-tab {
  cursor: pointer;
  font-size: 16px;
  font-weight: bold;
  color: #71706c;
  transition: color 0.3s ease;
}

.language-tab.active {
  color: #000000;
}

.language-tab:hover {
  color: #000000;
}

ul {
  list-style-type: none; /* Removes the bullet points */
  padding: 0; /* Removes any default padding */
  margin: 0; /* Removes any default margin */
}

ul ul {
  margin-left: 20px; /* Adds indentation for nested lists */
}

/* Change the background and text color when highlighting */
::selection {
  background: #1537f7; /* Custom background color */
  color: #ffffff; /* Custom text color */
}





/* Project Page Styling */
/* Project Page Styling */
/* Project Page Styling */
/* Project Page Styling */
/* Project Page Styling */
/* Project Page Styling */
/* =========================================================
/* =========================================================
/* =========================================================
 1) GLOBAL RESET
 ========================================================= */
body, h1, h2, h3, p, ul, li, a, img {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: Arial, sans-serif;
background: #ffffff;
color: #333;
line-height: 1.6;
}
section { margin: 0; }

/* =========================================================
 2) PAGE-LEVEL
 ========================================================= */
main {
background: #ffffff;
scroll-snap-type: none;
scroll-behavior: smooth;
}
h1.project-maincontent {
font-family: 'BeVietnam';
font-size: 1.5rem;
color: #403f48;
text-align: left;
margin: 50px auto;
line-height: 1.3;
}
h1.project-maincontent a {
text-decoration: none;
color: #4d73d3;
font-style: italic;
}

/* =========================================================
 3) HERO
 ========================================================= */
.hero {
background: #ffffff;
padding: 64px 48px;
}
.hero-inner {
max-width: 1200px;
margin: 0 auto;
display: grid;
grid-template-columns: 1.2fr 1fr;
align-items: center;
gap: 48px;
}
.hero-copy h1 {
font-size: 60px;
font-family: 'BeVietnam', sans-serif;
line-height: 1.04;
letter-spacing: -.02em;
margin: 0 0 16px;
color: #111;
}
.hero-copy .lead {
font-size: 18px;
font-family: 'BeVietnam', sans-serif;
line-height: 1.6;
color: #333;
max-width: 60ch;
}
.hero-figure { display: flex; justify-content: center; }
.hero-figure img { width: 100%; height: auto; max-width: 560px; display: block; }

@media (max-width:880px){
.hero-inner{ grid-template-columns:1fr; }
.hero-figure{ order:-1; }
}

/* =========================================================
 4) FEATURED HEADER
 ========================================================= */
.featured-surface {
background: #0b0b0b;
color: #ffffff;
border-top-left-radius: 48px;
border-top-right-radius: 48px;
padding: 48px 0;
}
.featured-inner {
max-width: 1200px;
margin: 0 auto;
padding: 0 48px;
}
.featured-surface h2 {
font-size: 35px;
font-family: 'BeVietnam', sans-serif;
margin: 0 0 18px;
color: #ffffff;
background: #0b0b0b;
}
/* bỏ rule cũ để không cộng dồn khoảng cách */
.featured-surface + .project { margin-top: 0; }

/* =========================================================
 4.1) PROJECTS WRAPPER (để xử lý nền đen + khoảng cách 30px)
 ========================================================= */
.projects-section{
background: linear-gradient(#0b0b0b 0 48px, #ffffff 48px 100%);
margin: 0;
padding-top: 0px;     /* thay vì margin-top ở project đầu → tránh margin-collapsing */
}

/* Project đầu: bo 2 góc trên + chặn tràn + nền trắng */
.projects-section .project:first-of-type{
border-top-left-radius: 48px;
border-top-right-radius: 48px;
padding-top: 60px;
padding-bottom: 120px; /* tránh margin-collapsing với project sau */
overflow: hidden;
background: #ffffff;
}

.projects-section > :nth-child(2 of .project){
padding-bottom: 120px;

}

/* (tuỳ chọn) Project cuối: bo 2 góc dưới */
.projects-section > :nth-child(3 of .project){
border-bottom-left-radius: 48px;
border-bottom-right-radius: 48px;
padding-bottom: 60px;
overflow: hidden;
}

/* =========================================================
 5) PROJECT LAYOUT
 ========================================================= */
.project {
display: grid;
grid-template-columns: 25% 75%;
column-gap: 40px;
padding-inline: 48px;
align-items: center;

/* nối tự nhiên: chỉ 4px giữa các project */
margin-block: 0px;
background: #ffffff;     /* tránh lộ nền wrapper ở mép bo */
}
.project-meta {
position: sticky;
top: 56px;            /* header ~56px */
height: auto;         /* KHÔNG ép full viewport */
display: grid;
place-content: start;
text-align: center;
justify-items: center;
padding-block: 8px;
}
.project-icon {
width: 64px; height: 64px;
border-radius: 14px;
margin-bottom: 14px;
object-fit: cover;
}
.project-gallery {
display: flex;
align-items: start;
justify-content: center;
}
.project img { display: block; }

/* =========================================================
 6) GALLERY
 ========================================================= */
.g-viewport {
width: 100%;
max-width: 1100px;
overflow-x: auto; overflow-y: hidden;
scroll-snap-type: x proximity;
scroll-padding-left: 24px;
scroll-padding-right: 50%;
-webkit-overflow-scrolling: touch;
overscroll-behavior-x: contain;
touch-action: pan-x;
scrollbar-width: none;
}
.g-viewport::-webkit-scrollbar { display: none; }

.g-track { display: flex; gap: 24px; padding-left: 24px; }
.g-track::after { content:""; flex:0 0 20%; }
.g-track img {
height: 50vh;
width: auto;
object-fit: cover;
border-radius: 35px;
flex: 0 0 auto;
scroll-snap-align: start;
user-select: none;
-webkit-user-drag: none;
border: 0.5px solid #0000003c;
background-color: #ffffff;
}

/* =========================================================
 7) TYPOGRAPHY
 ========================================================= */
.project-label {
font-size: 12px;
font-family: 'SFP-Regular', sans-serif;
text-transform: uppercase;
letter-spacing: .1em;
color: #abaeb0;
margin: 0 0 14px;
text-align: center;
}
.project-title {
font-weight: 600;
font-size: 36px;
line-height: 1.1;
text-align: center;
font-family: 'SFP-Regular', sans-serif;
margin: 6px 0 10px;
background: linear-gradient(to bottom, #111 60%, rgba(36,36,36,.3) 100%);
-webkit-background-clip: text;
background-clip: text;
color: transparent;
}
.project-desc {
font-family: 'SFP-Regular', sans-serif;
font-size: 16px;   
line-height: 1.5;
color: #3f3f3f;
max-width: 100ch;
margin: 12px auto 16px;
text-align: justify;
}

/* =========================================================
 8) LINKS
 ========================================================= */
.project-links { display: flex; gap: 30px; justify-content: center; }
.project-links a {
font-size: 15px;
font-family: 'SFP-Regular', sans-serif;
color: #3f3f3f;
text-decoration: none;
position: relative;
display: inline-flex;
align-items: center;
gap: 8px;
}
.project-links a:hover { color:#000; }
.project-links a::after {
content:"";
position:absolute;
left:0; bottom:-2px;
width:100%; height:1px;
background:
  linear-gradient(#282828,#282828) left center / 0% 100% no-repeat,
  linear-gradient(#dddcdc,#dddcdc) left center / 100% 100% no-repeat;
transition: background-size .6s cubic-bezier(.4,0,.2,1);
}
.project-links a:hover::after { background-size:100% 100%, 100% 100%; }
.project-links a .icon{ width:18px; height:18px; display:inline-block; }

/* =========================================================
 9) ANIMATION
 ========================================================= */
.project-meta.will-fade {
opacity:0; transform:translateY(12px);
transition:opacity .7s ease, transform .7s ease;
will-change:opacity, transform;
}
.project-meta.will-fade.in-view { opacity:1; transform:none; }

.slide-img {
opacity:0; transform:translateX(-48px);
transition: transform .6s ease, opacity .6s ease;
will-change: transform, opacity;
}
.slide-img.in-view { opacity:1; transform:none; }

@media (prefers-reduced-motion: reduce){
.project-meta.will-fade, .slide-img{
  transition:none !important;
  opacity:1 !important;
  transform:none !important;
}
}






/* ABOUT PAGE ---------- */

/* ---------- 2 COLUMN LAYOUT (portrait trái | about phải) ---------- */
.about-wrap{
  padding-inline: clamp(16px, 6vw, 72px);
  padding-block: clamp(16px, 4vw, 40px);
}

.about-grid{
  display: grid;
  /* SWAP: đặt cột portrait bên trái, about bên phải */
  grid-template-columns: minmax(320px,520px) minmax(420px,1fr);
  grid-template-areas: "portrait about";

  gap: clamp(24px, 6vw, 80px);
  max-width: 1200px;
  margin: 0 auto;

  /* Fit viewport: cao = 100vh - header */
  min-height: calc(100svh - var(--header-h));
  align-items: stretch;
}

/* Gán area cho từng cột */
.right-column{ grid-area: portrait; }
.about-left  { grid-area: about; }

/* ---------- LEFT (portrait) – căn giữa dọc/ngang ---------- */
.right-column{
  display:flex; 
  flex-direction:column;
  justify-content:center; 
  align-items:center;
}

.portrait{
  border-radius: 0;
  overflow: visible;          /* ← cho phép phần xoay ló ra ngoài */
  box-shadow: none;
  max-width: 350px; 
  width: 100%;
  margin-bottom: 12px;
  padding-top: 0px;          /* giữ như bạn đang dùng */
}

.portrait img{
  width: 100%;
  height: auto;               /* tránh ép height 100% khi xoay */
  object-fit: cover;
  transform-origin: center;   /* xoay quanh tâm */
  transition: transform .3s ease;
}

.portrait:hover img{
  transform: rotate(3deg) scale(1.05);   /* nghiêng 5° khi hover */
  /* nếu muốn sống động hơn: scale nhẹ
     transform: rotate(15deg) scale(1.02); */
}


.caption{
  font-family:"Space Grotesk", sans-serif;
  font-weight:400; 
  font-size:15px;
  line-height:1.2em; 
  letter-spacing:-0.02em;
  color:#222; 
  text-align:center;
}

.contact-links {
  margin-top: 14px;
  display: flex;
  gap: 18px;
  justify-content: center;
  align-items: center;
}

.contact-links a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 2px;
}

.contact-links .icon {
  width: 20px;
  height: 20px;
  transition: transform 0.2s ease;
}

.contact-links a:hover .icon,
.contact-links a:focus-visible .icon {
  transform: scale(1.2);
}

/* ---------- RIGHT (about) – giữ kiểu chữ bạn đã chốt ---------- */
.about-title{
  font-family:"Space Grotesk", sans-serif;
  font-weight:400;
  font-size:clamp(40px, 8vw, 92px);
  line-height:1.1; 
  letter-spacing:-0.05em;
  margin:10px 0 24px; 
  color:#000000;
  max-width: 720px;
}
.about-left {
  display: flex;
  flex-direction: column;
  justify-content: center; /* canh nội dung theo trục dọc */
  margin: auto 0;          /* đẩy toàn bộ block ra giữa cột */
}

.about-paras p{
  font-family:"Space Grotesk", sans-serif;
  font-weight:400; 
  font-size:16px;
  line-height:1.2em; 
  letter-spacing:0em;
  color:#515151; 
  margin:0 0 12px 0;
  padding-bottom: 5px;
  text-align: justify;      /* căn thẳng 2 lề */
  text-justify: inter-word; /* (tùy chọn) phân bổ khoảng cách giữa các từ */
  max-width: 600px;
}