@charset "UTF-8";

.portfolio-page,
.portfolio-page * { box-sizing: border-box; }

.portfolio-page img,
.portfolio-page svg,
.portfolio-page video,
.portfolio-page canvas{
  max-width: 100%;
  height: auto;
  display: block;
}

/* Page background + spacing (matches Services) */
.portfolio-page{
  background: linear-gradient(to top, #e6f0ff, #f9fcff);
  padding: 0 0 clamp(38px, 4vw, 60px);
  margin: 0;
  overflow: hidden;
}

/* Inner wrap */
.portfolio-wrap{
  max-width: 1500px;
  width: min(95%, 1500px);
  margin: 0 auto;
  padding: 0;
}

/* Hero banner (contained image + frame) */
.portfolio-hero-banner{
  width: min(1500px, 95%);
  height: clamp(180px, 32vw, 560px);
  margin: clamp(80px, 3.2vw, 40px) auto 0;
  display: block;

  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
  background-color: rgba(0, 0, 0, 0.05);

  border: 2px solid rgba(0, 64, 128, 0.25);
  border-radius: clamp(14px, 2vw, 28px);
  overflow: hidden;

  box-shadow: 0 14px 42px rgba(0, 64, 128, 0.18);
}

/* Header block */
.portfolio-header-block{
  text-align: center;
  width: min(1200px, 96%);
  margin: clamp(12px, 2.2vw, 18px) auto clamp(16px, 2.6vw, 22px);
  padding: 0 clamp(8px, 1.2vw, 14px);
}

.portfolio-kicker{
  margin: 0 0 8px;
  font-family: "Cabin";
  font-weight: 700;
  font-size: clamp(12px, 1vw, 14px);
  letter-spacing: 2px;
  text-transform: uppercase;
  color: rgba(0, 0, 0, 0.60);
}

/* Main page title */
.portfolio-title{
  margin: 0 10px 8px;
  text-align: center;
  font-family: "Dancing Script";
  font-weight: 700;

  font-size: clamp(34px, 4.2vw, 66px);
  line-height: 1.05;

  background: linear-gradient(to right, #004080, #6e67d9, #5cd0b5);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;

  text-shadow: 0 0 14px rgba(120, 120, 255, 0.18);
}

.portfolio-subtitle{
  margin: 0 10px 8px;
  text-align: center;
  font-family: "Cabin";
  font-weight: 700;
  color: #002a55;

  font-size: clamp(24px, 2.3vw, 40px);
  line-height: 1.15;
}

.portfolio-intro{
  margin: 0 auto;
  text-align: center;
  font-family: "Cabin";
  font-weight: 400;
  color: #000;

  width: min(1000px, 96%);
  max-width: 70ch;

  font-size: clamp(15px, 1.2vw, 18px);
  line-height: 1.5;
}

/* Section containers */
.portfolio-section{
  width: min(1500px, 95%);
  margin: 0 auto clamp(16px, 2.6vw, 22px);
  padding: clamp(14px, 2.2vw, 18px) clamp(14px, 2vw, 16px);

  position: relative;
  overflow: hidden;

  background: rgba(255, 255, 255, 0.95);
  border-radius: 22px;

  border: 1px solid rgba(0, 64, 128, 0.16);
  box-shadow: 0 10px 30px rgba(0, 64, 128, 0.14);
}

.portfolio-section:before{
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at top left, rgba(92, 208, 181, 0.16), transparent 55%),
    radial-gradient(circle at bottom right, rgba(110, 103, 217, 0.16), transparent 55%);
  opacity: 0.95;
  pointer-events: none;
}

.portfolio-section > *{ position: relative; z-index: 1; }

.portfolio-section-head{ padding: 6px 6px 14px; }

.portfolio-section h2,
.portfolio-section h3{
  margin: 0 0 6px;
  text-align: center;
  font-family: "Dancing Script";
  font-weight: 800;
  color: #002a55;

  font-size: clamp(22px, 2.1vw, 32px);
  line-height: 1.15;
}

.section-description{
  max-width: 980px;
  margin: 0 auto;
  text-align: center;
  font-family: "Cabin";
  font-weight: 400;
  color: #000;

  font-size: clamp(15px, 1.2vw, 18px);
  line-height: 1.5;
}

/* Grid */
.portfolio-grid{
  width: 100%;
  margin: 0 auto;
  padding: 10px 6px 6px;

  display: grid;
  grid-template-columns: 1fr;
  gap: clamp(14px, 2.2vw, 22px);
  align-items: stretch;
}

/* Cards */
.portfolio-card{
  position: relative;
  overflow: hidden;

  background: rgba(255, 255, 255, 0.95);
  border-radius: 22px;

  border: 1px solid rgba(0, 64, 128, 0.16);
  box-shadow: 0 10px 30px rgba(0, 64, 128, 0.14);

  transition: transform 0.25s ease, box-shadow 0.25s ease;
}

.portfolio-card:before{
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at top left, rgba(92, 208, 181, 0.16), transparent 55%),
    radial-gradient(circle at bottom right, rgba(110, 103, 217, 0.16), transparent 55%);
  opacity: 0.95;
  pointer-events: none;
}

.portfolio-card:hover{
  transform: translateY(-6px);
  box-shadow: 0 18px 46px rgba(0, 64, 128, 0.22);
}

.portfolio-link{
  display: block;
  height: 100%;
  position: relative;
  z-index: 1;
  text-decoration: none;
  color: inherit;
}

/* Card image area */
.portfolio-image{
  width: 100%;
  height: clamp(180px, 18vw, 260px);

  display: flex;
  align-items: center;
  justify-content: center;

  background: rgba(0, 0, 0, 0.04);
  border-bottom: 1px solid rgba(0, 64, 128, 0.14);
  overflow: hidden;
}

.portfolio-image img{
  width: 100%;
  height: 100%;
  display: block;
  object-fit: contain;
  object-position: center;
  transform: scale(1);
  transition: transform 0.35s ease;
}

.portfolio-card:hover .portfolio-image img{ transform: scale(1.03); }

/* Card text */
.portfolio-body{ padding: 16px 16px 18px; }

/* Card title (separate from main page title) */
.portfolio-card .portfolio-title{
  margin: 0 0 8px;
  text-align: left;

  font-family: "Dancing Script";
  font-weight: 800;

  font-size: clamp(22px, 2.2vw, 30px);
  line-height: 1.15;

  background: linear-gradient(to right, #002a55, #4d46b8, #1f8f7b);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;

  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.16), 0 0 10px rgba(0, 64, 128, 0.12);
}

.portfolio-desc{
  margin: 10px 0 12px;
  font-family: "Cabin";
  font-weight: 400;
  color: #000;

  font-size: clamp(15px, 1.15vw, 17px);
  line-height: 1.5;
  max-width: 85ch;
}

.portfolio-cta{
  display: inline-block;
  font-family: "Cabin";
  font-size: clamp(15px, 1.2vw, 18px);
  font-weight: 800;

  color: #003a78;
  text-decoration: none;
  border-bottom: 1px solid rgba(0, 58, 120, 0.25);
  line-height: 1.4;
}

.portfolio-cta:hover{
  color: #6e67d9;
  border-bottom-color: rgba(110, 103, 217, 0.55);
}

/* Empty state */
.portfolio-grid.is-empty{ grid-template-columns: 1fr; }

.portfolio-empty{
  padding: 18px 16px;
  background: rgba(255, 255, 255, 0.85);
  border: 1px solid rgba(0, 64, 128, 0.14);
  border-radius: 18px;
  font-family: "Cabin";
  color: #000;
  box-shadow: 0 10px 30px rgba(0, 64, 128, 0.10);
}

/* =====================================================
   MEDIA QUERIES
===================================================== */

@media (min-width: 1920px){
  .portfolio-hero-banner{
    background-image: url("../img/portfolio_page/hero_image_1920px.jpg");
    height: 560px;
  }
  .portfolio-grid{ grid-template-columns: repeat(3, 1fr); }
}

@media (max-width: 1920px){
  .portfolio-hero-banner{
    background-image: url("../img/portfolio_page/hero_image_1920px.jpg");
    height: 520px;
  }
  .portfolio-grid{ grid-template-columns: repeat(3, 1fr); }
}

@media (max-width: 1200px){
  .portfolio-hero-banner{
    background-image: url("../img/portfolio_page/hero_image_1200px.jpg");
    height: 400px;
  }
  .portfolio-grid{ grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 768px){
  .portfolio-hero-banner{
    background-image: url("../img/portfolio_page/hero_image_768px.jpg");
    height: 300px;
  }
  .portfolio-wrap{ padding: 18px 14px 54px; }
  .portfolio-grid{ grid-template-columns: 1fr; }
}

@media (max-width: 480px){
  .portfolio-hero-banner{
    background-image: url("../img/portfolio_page/hero_image_480px.jpg");
    height: 240px;
    border-radius: 16px;
  }
  .portfolio-body{ padding: 14px 14px 16px; }
}

@media (max-width: 300px){
  .portfolio-hero-banner{
    background-image: url("../img/portfolio_page/hero_image_300px.jpg");
    height: 180px;
    border-radius: 14px;
  }
  .portfolio-wrap{ padding: 16px 10px 46px; }
}
