/* ══════════════════════════════════════════════════════════════════
   PALORAH — portfolio.css
   Portfolio Hub + Case Study shared styles
   ══════════════════════════════════════════════════════════════════ */

/* ─── PORTFOLIO HUB HERO ─────────────────────────────────────────── */
.p-hub-hero {
  padding-top:    clamp(5rem, 10vw, 8rem);
  padding-bottom: clamp(3rem, 6vw, 5rem);
  background:     var(--clr-bg);
  border-bottom:  1px solid var(--clr-border-soft);
}

.p-hub-hero h1 {
  font-size:      clamp(3rem, 7vw, 6rem);
  font-weight:    300;
  letter-spacing: -0.03em;
  line-height:    1.0;
  margin-bottom:  1.25rem;
}

.p-hub-hero__sub {
  font-size:   1rem;
  line-height: 1.7;
  color:       var(--clr-text-muted);
  max-width:   52ch;
}


/* ─── FILTER BAR ────────────────────────────────────────────────── */
.p-hub-filter {
  position:   sticky;
  top:        0;
  z-index:    200;
  background: rgba(10, 10, 10, 0.92);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  border-bottom: 1px solid var(--clr-border-soft);
  padding:    0.875rem 0;
}

.p-hub-filter__inner {
  display:   flex;
  gap:       0.375rem;
  flex-wrap: wrap;
}

.p-filter-btn {
  font-size:      0.72rem;
  font-weight:    500;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color:          var(--clr-text-muted);
  padding:        0.45rem 1rem;
  border:         1px solid transparent;
  border-radius:  100px;
  transition:     color 180ms ease, border-color 180ms ease, background 180ms ease;
  min-height:     36px;
  white-space:    nowrap;
}

@media (hover: hover) {
  .p-filter-btn:hover {
    color:        var(--clr-text);
    border-color: var(--clr-border-soft);
  }
}

.p-filter-btn.is-active {
  color:        var(--clr-bg);
  background:   var(--clr-gold);
  border-color: var(--clr-gold);
}

/* ─── PROJECT GRID ──────────────────────────────────────────────── */
.p-hub-grid { background: var(--clr-bg); }

.p-hub__projects {
  display:               grid;
  grid-template-columns: repeat(2, 1fr);
  gap:                   1.5rem;
}

/* Hidden during filter */
.ph-card.is-hidden {
  display: none;
}

/* No results */
.p-hub__no-results {
  text-align:  center;
  color:       var(--clr-text-muted);
  font-size:   1rem;
  padding:     3rem 0;
  grid-column: 1 / -1;
}

/* ─── PROJECT HUB CARD ──────────────────────────────────────────── */
.ph-card {
  display:        flex;
  flex-direction: column;
  background:     var(--clr-surface);
  border:         1px solid var(--clr-border-soft);
  border-radius:  6px;
  overflow:       hidden;
  text-decoration: none;
  color:          inherit;
  transition:     border-color 280ms ease, transform 280ms ease, box-shadow 280ms ease;
  will-change:    transform;
}

@media (hover: hover) {
  .ph-card:hover {
    border-color: rgba(var(--clr-gold-rgb), 0.25);
    transform:    translateY(-4px);
    box-shadow:   0 16px 40px rgba(0, 0, 0, 0.3);
  }
}

.ph-card__media {
  position:   relative;
  aspect-ratio: 16 / 10;
  overflow:   hidden;
}

.ph-card__placeholder {
  position:   absolute;
  inset:      0;
  width:      100%;
  height:     100%;
  transition: transform 500ms ease;
}

.ph-card__media img {
  position:   relative;
  z-index:    1;
  width:      100%;
  height:     100%;
  object-fit: cover;
  display:    block;
  transition: transform 500ms ease;
}

@media (hover: hover) {
  .ph-card:hover .ph-card__placeholder { transform: scale(1.04); }
  .ph-card:hover .ph-card__media img   { transform: scale(1.04); }
}

/* Hub placeholder colors */
.ph-placeholder--bronze  { background: linear-gradient(135deg, #1a1208 0%, #2d2009 100%); }
.ph-placeholder--navy    { background: linear-gradient(135deg, #0a0d18 0%, #151d30 100%); }
.ph-placeholder--copper  { background: linear-gradient(135deg, #160c00 0%, #251400 100%); }
.ph-placeholder--warm    { background: linear-gradient(135deg, #160e08 0%, #241608 100%); }
.ph-placeholder--wood    { background: linear-gradient(135deg, #1a1108 0%, #2a1a08 100%); }
.ph-placeholder--slate   { background: linear-gradient(135deg, #0c1018 0%, #141824 100%); }
.ph-placeholder--rose    { background: linear-gradient(135deg, #180f0f 0%, #241414 100%); }
.ph-placeholder--sage    { background: linear-gradient(135deg, #0a120e 0%, #121e17 100%); }
.ph-placeholder--charcoal{ background: linear-gradient(135deg, #0d0d0d 0%, #1a1a1a 100%); }
.ph-placeholder--wine    { background: linear-gradient(135deg, #180810 0%, #200d18 100%); }
.ph-placeholder--amber   { background: linear-gradient(135deg, #1a1108 0%, #271a08 100%); }
.ph-placeholder--teal    { background: linear-gradient(135deg, #081414 0%, #101e1e 100%); }

.ph-card__hover {
  position:       absolute;
  inset:          0;
  background:     rgba(0, 0, 0, 0.5);
  display:        flex;
  align-items:    center;
  justify-content: center;
  opacity:        0;
  transition:     opacity 260ms ease;
}

.ph-card__hover span {
  font-size:      0.75rem;
  font-weight:    500;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color:          var(--clr-gold);
  border:         1px solid rgba(var(--clr-gold-rgb), 0.6);
  padding:        0.55rem 1.1rem;
  border-radius:  4px;
}

@media (hover: hover) {
  .ph-card:hover .ph-card__hover { opacity: 1; }
}

.ph-card__body {
  padding: 1.25rem 1.25rem 1.375rem;
  flex:    1;
}

.ph-card__meta {
  display:        flex;
  align-items:    center;
  gap:            0.6rem;
  margin-bottom:  0.5rem;
}

.ph-card__cat {
  font-size:      0.65rem;
  font-weight:    500;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color:          var(--clr-gold);
  max-width:      none;
}

.ph-card__loc {
  font-size:  0.65rem;
  color:      var(--clr-text-faint);
  max-width:  none;
}

.ph-card__loc::before {
  content: '·';
  margin-right: 0.6rem;
  opacity: 0.5;
}

.ph-card__title {
  font-family:    var(--font-heading);
  font-size:      clamp(1.15rem, 1.6vw, 1.4rem);
  font-weight:    400;
  line-height:    1.25;
  letter-spacing: -0.01em;
  margin-bottom:  0.5rem;
  max-width:      none;
}

.ph-card__desc {
  font-size:   0.82rem;
  line-height: 1.65;
  color:       var(--clr-text-muted);
  max-width:   none;
}

/* Grid responsive */
@media (max-width: 600px) {
  .p-hub__projects { grid-template-columns: 1fr; }
}


/* ─── PORTFOLIO HUB CTA — matches main Kontakt section ──────────── */
.p-hub-cta {
  background:  var(--clr-surface);
  position:    relative;
  overflow:    hidden;
  text-align:  center;
  padding:     clamp(5rem, 10vw, 9rem) 0;
}

/* Dot grid — same as hero / kontakt */
.p-hub-cta__mesh {
  position: absolute;
  inset:    0;
  background-image: radial-gradient(
    circle,
    rgba(var(--clr-gold-rgb), 0.45) 1px,
    transparent 1px
  );
  background-size: 36px 36px;
  opacity:  0.22;
  pointer-events: none;
}

/* Gold glow — centered */
.p-hub-cta__glow {
  position: absolute;
  inset:    0;
  background:
    radial-gradient(
      ellipse 80% 55% at 50% 45%,
      rgba(var(--clr-gold-rgb), 0.10) 0%,
      rgba(var(--clr-gold-rgb), 0.04) 50%,
      transparent 70%
    );
  pointer-events: none;
}

.p-hub-cta__inner {
  position:       relative;
  display:        flex;
  flex-direction: column;
  align-items:    center;
  max-width:      720px;
  margin:         0 auto;
}

.p-hub-cta__inner .eyebrow { margin-bottom: 1.25rem; }

.p-hub-cta__heading {
  font-size:      clamp(3rem, 6.5vw, 5.5rem);
  font-weight:    300;
  line-height:    1.05;
  letter-spacing: -0.03em;
  color:          var(--clr-text);
  margin-bottom:  1.5rem;
}

.p-hub-cta__heading em {
  color:      var(--clr-gold);
  font-style: italic;
}

.p-hub-cta__sub {
  font-size:     0.9rem;
  line-height:   1.7;
  color:         var(--clr-text-muted);
  margin-bottom: clamp(2.5rem, 5vw, 3.5rem);
  max-width:     46ch;
}

.p-hub-cta__actions {
  display:         flex;
  align-items:     center;
  justify-content: center;
  gap:             2rem;
  flex-wrap:       wrap;
}

.p-hub-cta__link {
  font-family:    var(--font-heading);
  font-size:      clamp(1.1rem, 2vw, 1.4rem);
  font-weight:    300;
  letter-spacing: -0.01em;
  color:          var(--clr-text-muted);
  position:       relative;
  padding-bottom: 2px;
  min-height:     44px;
  display:        inline-flex;
  align-items:    center;
  transition:     color var(--ease);
}

.p-hub-cta__link::after {
  content:          '';
  position:         absolute;
  bottom:           0;
  left:             0;
  width:            100%;
  height:           1px;
  background:       var(--clr-gold);
  transform:        scaleX(0);
  transform-origin: left;
  transition:       transform 220ms ease;
}

@media (hover: hover) {
  .p-hub-cta__link:hover        { color: var(--clr-text); }
  .p-hub-cta__link:hover::after { transform: scaleX(1); }
}

.p-hub-cta__divider {
  color:     var(--clr-gold);
  opacity:   0.4;
  font-size: 1.25rem;
  line-height: 1;
}


/* ══════════════════════════════════════════════════════════════════
   CASE STUDY — SPLIT-SCREEN LAYOUT
   Left: sticky info panel (always visible)
   Right: scrollable visual story
   ══════════════════════════════════════════════════════════════════ */

/* Override subpage main padding for cs-page */
.cs-page main { padding-top: 0; }

/* Root split grid */
.cs-split {
  display:               grid;
  grid-template-columns: 300px 1fr;
  align-items:           start;
  padding-top:           var(--nav-height);
  min-height:            calc(100svh - var(--nav-height));
}

/* ─── LEFT STICKY PANEL ────────────────────────────────────────── */
.cs-panel {
  position:   sticky;
  top:        var(--nav-height);
  height:     calc(100svh - var(--nav-height));
  overflow-y: auto;
  background: var(--clr-surface);
  border-right: 1px solid var(--clr-border-soft);
  display:    flex;
  flex-direction: column;
}

.cs-panel__inner {
  display:        flex;
  flex-direction: column;
  flex:           1;
  padding:        2.5rem 2rem 2rem;
}

.cs-panel__back {
  display:        inline-flex;
  align-items:    center;
  gap:            0.5rem;
  font-size:      0.65rem;
  font-weight:    500;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color:          var(--clr-text-faint);
  margin-bottom:  2rem;
  transition:     color var(--ease);
  min-height:     44px;
}

@media (hover: hover) {
  .cs-panel__back:hover { color: var(--clr-gold); }
}

.cs-panel__meta {
  display:     flex;
  align-items: center;
  flex-wrap:   wrap;
  gap:         0.5rem;
  margin-bottom: 0.75rem;
}

.cs-panel__cat {
  font-size:      0.6rem;
  font-weight:    600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color:          var(--clr-gold);
  background:     rgba(var(--clr-gold-rgb), 0.08);
  border:         1px solid rgba(var(--clr-gold-rgb), 0.2);
  padding:        0.2rem 0.55rem;
  border-radius:  100px;
}

.cs-panel__year {
  font-size:  0.65rem;
  color:      var(--clr-text-faint);
}

.cs-panel__title {
  font-family:    var(--font-heading);
  font-size:      clamp(1.75rem, 2.5vw, 2.4rem);
  font-weight:    300;
  line-height:    1.08;
  letter-spacing: -0.02em;
  color:          var(--clr-text);
  margin-bottom:  0.75rem;
}

.cs-panel__tagline {
  font-size:   0.8rem;
  line-height: 1.65;
  color:       var(--clr-text-muted);
  max-width:   none;
}

.cs-panel__divider {
  height:     1px;
  background: var(--clr-border-soft);
  margin:     1.5rem 0;
  flex-shrink: 0;
}

.cs-panel__metrics {
  display:        flex;
  flex-direction: column;
  gap:            1.25rem;
}

.cs-panel__metric-num {
  display:        block;
  font-family:    var(--font-heading);
  font-size:      clamp(2rem, 3vw, 2.6rem);
  font-weight:    300;
  line-height:    1;
  letter-spacing: -0.03em;
  color:          var(--clr-gold);
}

.cs-panel__metric-label {
  display:        block;
  font-size:      0.68rem;
  letter-spacing: 0.06em;
  color:          var(--clr-text-faint);
  margin-top:     0.2rem;
  max-width:      none;
}

.cs-panel__live-btn {
  width:            100%;
  justify-content:  center;
  margin-top:       0.75rem;
  font-size:        0.75rem;
  letter-spacing:   0.08em;
}

/* Pushes project nav to bottom of panel */
.cs-panel__spacer { flex: 1; min-height: 1.5rem; }

.cs-panel__project-nav {
  display:        flex;
  flex-direction: column;
  gap:            0.25rem;
  padding-top:    1.25rem;
  border-top:     1px solid var(--clr-border-soft);
}

.cs-panel__nav-link {
  display:     flex;
  align-items: center;
  gap:         0.5rem;
  color:       var(--clr-text-faint);
  font-size:   0.78rem;
  transition:  color var(--ease);
  min-height:  40px;
}

@media (hover: hover) {
  .cs-panel__nav-link:hover { color: var(--clr-gold); }
}

.cs-panel__nav-label {
  font-size:      0.58rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color:          var(--clr-text-faint);
  display:        block;
}

/* ─── RIGHT SCROLLABLE CONTENT ─────────────────────────────────── */
.cs-content {
  display:        flex;
  flex-direction: column;
  min-height:     calc(100svh - var(--nav-height));
}

/* Full-width visual blocks */
.cs-visual-block {
  width:    100%;
  position: relative;
  overflow: hidden;
  flex-shrink: 0;
}

.cs-visual-block--hero   { aspect-ratio: 16 / 9; }
.cs-visual-block--medium { aspect-ratio: 16 / 8; }

.cs-visual-block img {
  position: relative;
  z-index:  1;
  width:    100%;
  height:   100%;
  object-fit: cover;
  display:  block;
}

.cs-visual-block__bg {
  position: absolute;
  inset:    0;
  width:    100%;
  height:   100%;
}

/* Two-up pair */
.cs-visual-pair {
  display:    grid;
  grid-template-columns: 1fr 1fr;
  gap:        2px;
}

.cs-visual-pair .cs-visual-block           { aspect-ratio: 4 / 3; }
.cs-visual-pair .cs-visual-block--portrait { aspect-ratio: 9 / 16; }

/* Text blocks */
.cs-text-block {
  padding:    clamp(3rem, 5vw, 4.5rem) clamp(2rem, 4vw, 3.5rem);
  max-width:  600px;
}

.cs-text-block h2 {
  font-size:      clamp(1.5rem, 2.5vw, 2rem);
  font-weight:    300;
  letter-spacing: -0.02em;
  line-height:    1.15;
  margin-bottom:  1rem;
}

.cs-text-block p {
  font-size:     0.88rem;
  line-height:   1.8;
  color:         var(--clr-text-muted);
  margin-bottom: 1.1rem;
}

.cs-text-block p:last-child { margin-bottom: 0; }

/* Bottom nav in content */
.cs-content__nav {
  margin-top:     auto;
  padding:        2.5rem clamp(2rem, 4vw, 3.5rem);
  border-top:     1px solid var(--clr-border-soft);
  display:        flex;
  align-items:    center;
  justify-content: space-between;
  gap:            1.5rem;
  flex-wrap:      wrap;
}

.cs-content__nav-link {
  display:     flex;
  align-items: center;
  gap:         0.6rem;
  color:       var(--clr-text-muted);
  font-size:   0.8rem;
  transition:  color var(--ease);
  min-height:  44px;
}

.cs-content__nav-link--next { flex-direction: row-reverse; }

@media (hover: hover) {
  .cs-content__nav-link:hover { color: var(--clr-gold); }
}

.cs-content__nav-label {
  font-size:      0.6rem;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color:          var(--clr-text-faint);
  display:        block;
}

.cs-content__nav-title {
  font-family: var(--font-heading);
  font-size:   1rem;
  font-weight: 400;
  display:     block;
}

.cs-content__nav-back {
  font-size:      0.65rem;
  font-weight:    500;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color:          var(--clr-text-faint);
  transition:     color var(--ease);
  min-height:     44px;
  display:        inline-flex;
  align-items:    center;
}

@media (hover: hover) {
  .cs-content__nav-back:hover { color: var(--clr-gold); }
}

/* ─── MOBILE ────────────────────────────────────────────────────── */
@media (max-width: 860px) {
  .cs-split {
    grid-template-columns: 1fr;
    padding-top:           var(--nav-height);
  }

  .cs-panel {
    position:     relative;
    top:          0;
    height:       auto;
    border-right: none;
    border-bottom: 1px solid var(--clr-border-soft);
  }

  .cs-panel__spacer   { display: none; }
  .cs-panel__project-nav { display: none; }

  .cs-content { min-height: auto; }

  .cs-visual-pair { grid-template-columns: 1fr; gap: 2px; }
}
