/* path: src/core/static/ui/css/blocks/cases.css */

/* =============================================================================
   Cases
   ============================================================================= */

.Cases__head{
  display:block;
  margin-bottom:var(--space-4);
}

.Cases__intro{
  max-width:760px;
}

.Cases__titleAccent{
  color:var(--accent);
}

.Cases__subtitle{
  margin:0;
}

.Cases__grid{
  display:grid;
  gap:var(--space-4);
}

/* =============================================================================
   Case card
   ============================================================================= */

.CaseCard{
  position:relative;
  display:flex;
  flex-direction:column;
  min-width:0;
  min-height:0;
  overflow:hidden;
}

.CaseCard--compact{
  cursor:pointer;
  transition:
    background-color .2s ease,
    border-color .2s ease,
    box-shadow .2s ease,
    transform .2s ease;
}

.CaseCard--compact:hover,
.CaseCard--compact:focus-within{
  background-color:var(--surface-2);
  border-color:var(--divider-2);
  box-shadow:0 0 0 1px rgba(255,255,255,.04);
}

.CaseCard--compact:active{
  background-color:var(--surface-3);
  transform:scale(.995);
}

/* =============================================================================
   Media
   ============================================================================= */

.CaseCard__media{
  position:relative;
  flex:0 0 auto;
  height:220px;
  margin:var(--space-4) var(--space-4) 0;
  overflow:hidden;
  border-radius:var(--r-s);
  background:
    linear-gradient(
      135deg,
      var(--surface-2),
      var(--surface-3)
    );
}

.CaseCard__media::before{
  content:"";
  position:absolute;
  inset:0;
  z-index:0;
  background:
    radial-gradient(
      circle at 22% 24%,
      rgba(255,255,255,.10),
      transparent 30%
    ),
    radial-gradient(
      circle at 82% 18%,
      var(--accent-soft),
      transparent 32%
    );
}

.CaseCard__img{
  position:relative;
  z-index:1;
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center;
}

.CaseCard__placeholder{
  position:absolute;
  top:50%;
  left:50%;
  z-index:1;
  transform:translate(-50%, -50%);
  color:var(--text-3);
  font-size:var(--small);
  line-height:1;
  white-space:nowrap;
}

/* =============================================================================
   Card body
   ============================================================================= */

.CaseCard__body{
  display:flex;
  flex:1;
  flex-direction:column;
  min-width:0;
  padding:var(--space-4);
}

/* =============================================================================
   Text
   ============================================================================= */

.CaseCard__title{
  margin:0;
  color:var(--text);
  font-family:var(--font-head);
  font-size:clamp(1.35rem, 5.5vw, 1.85rem);
  font-weight:700;
  line-height:1.08;
  letter-spacing:-.02em;
}

.CaseCard--compact .CaseCard__title{
  font-size:1.15rem;
  line-height:1.2;
}

.CaseCard__meta{
  display:flex;
  align-items:baseline;
  justify-content:flex-start;
  gap:0;
  min-width:0;
  margin:var(--space-2) 0 0;
}

.CaseCard__route{
  flex:0 1 auto;
  min-width:0;
  margin:0;
  color:var(--text-3);
  font-size:.95rem;
  line-height:1.35;
  overflow-wrap:anywhere;
}

.CaseCard__cost{
  flex:0 0 auto;
  margin:0 0 0 10px;
  color:var(--text);
  font-family:var(--font-head);
  font-size:1.1rem;
  font-weight:700;
  line-height:1.15;
  white-space:nowrap;
}

.CaseCard__cost::before{
  content:"·";
  margin-right:10px;
  color:var(--text-3);
  font-weight:400;
}

.CaseCard--compact .CaseCard__meta{
  margin-top:var(--space-1);
}

.CaseCard--compact .CaseCard__route{
  font-size:.9rem;
}

.CaseCard--compact .CaseCard__cost{
  font-size:.9rem;
  font-weight:600;
  line-height:1.35;
}

.CaseCard__description{
  max-width:720px;
  margin:var(--space-3) 0 0;
  color:var(--text-2);
  font-size:1rem;
  line-height:1.55;
}

.CaseCard--compact .CaseCard__description{
  display:none;
}

/* =============================================================================
   Tags
   ============================================================================= */

.CaseCard__tags{
  display:flex;
  flex-wrap:wrap;
  gap:var(--space-1);
  margin:var(--space-3) 0 0;
  padding:0;
  list-style:none;
}

.CaseCard__tag{
  display:inline-flex;
  align-items:center;
  gap:6px;
  min-height:30px;
  padding:0 11px;
  border:1px solid var(--divider-2);
  border-radius:var(--r-pill);
  color:var(--text-2);
  font-size:.875rem;
  line-height:1;
  white-space:nowrap;
}

.CaseCard__tagIcon{
  flex:0 0 auto;
  font-size:1em;
  line-height:1;
}

.CaseCard__tag--format{
  border-color:rgba(207,133,36,.30);
  background:var(--accent-soft);
  color:var(--text);
}

.CaseCard__tag--feature{
  background:transparent;
}

.CaseCard--compact .CaseCard__tags{
  gap:6px;
  margin-top:var(--space-2);
}

.CaseCard--compact .CaseCard__tag{
  min-height:26px;
  padding:0 9px;
  font-size:var(--small);
}

.CaseCard--compact .CaseCard__tag--feature:nth-child(n+3){
  display:none;
}

/* =============================================================================
   Footer stats
   ============================================================================= */

.CaseCard__footer{
  display:grid;
  grid-template-columns:repeat(2, minmax(0, 1fr));
  gap:var(--space-3) 0;
  margin-top:var(--space-4);
  padding-top:var(--space-4);
  border-top:1px solid var(--divider);
}

.CaseCard--compact .CaseCard__footer{
  display:none;
}

.CaseCard__stat{
  min-width:0;
}

.CaseCard__stat:nth-child(even){
  padding-left:var(--space-3);
  border-left:1px solid var(--divider-2);
}

.CaseCard__statLabel{
  display:block;
  color:var(--text-3);
  font-size:.875rem;
  line-height:1.2;
}

.CaseCard__statValue{
  display:block;
  margin-top:5px;
  color:var(--text);
  font-family:var(--font-head);
  font-size:1.1rem;
  font-weight:700;
  line-height:1.15;
}

/* =============================================================================
   Card selection button
   ============================================================================= */

.CaseCard__select{
  position:absolute;
  inset:0;
  z-index:5;
  padding:0;
  border:0;
  border-radius:inherit;
  background:transparent;
  cursor:pointer;
  touch-action:manipulation;
}

.CaseCard__select:focus{
  outline:none;
}

.CaseCard__select:focus-visible{
  outline:2px solid var(--accent);
  outline-offset:-4px;
}

.CaseCard--featured .CaseCard__select{
  display:none;
}

/* =============================================================================
   Gallery
   ============================================================================= */

.CaseGallery{
  touch-action:pan-y;
  outline:none;
  user-select:none;
}

.CaseGallery:focus-visible{
  box-shadow:0 0 0 2px var(--accent);
}

.CaseGallery__viewport{
  position:absolute;
  inset:0;
  z-index:1;
  overflow:hidden;
}

.CaseGallery__track{
  display:flex;
  width:100%;
  height:100%;
  transition:transform .38s ease;
  will-change:transform;
}

.CaseGallery__slide{
  position:relative;
  flex:0 0 100%;
  width:100%;
  height:100%;
  margin:0;
  overflow:hidden;
  background:
    linear-gradient(
      135deg,
      var(--surface-2),
      var(--surface-3)
    );
}

.CaseGallery__slide--2{
  background:
    linear-gradient(
      135deg,
      var(--surface-3),
      var(--surface-2)
    );
}

.CaseGallery__slide--3{
  background:
    linear-gradient(
      135deg,
      var(--surface-2),
      var(--bg)
    );
}

.CaseGallery__slide .CaseCard__placeholder{
  z-index:1;
}

/* =============================================================================
   Gallery arrows
   ============================================================================= */

.CaseGallery__arrow{
  position:absolute;
  top:50%;
  z-index:3;
  display:grid;
  width:32px;
  height:56px;
  padding:0;
  border:1px solid var(--divider-2);
  background:rgba(43,49,56,.82);
  background:
    color-mix(
      in srgb,
      var(--surface) 82%,
      transparent
    );
  color:var(--text);
  font:inherit;
  font-size:1.65rem;
  line-height:1;
  place-items:center;
  opacity:0;
  pointer-events:none;
  transform:translateY(-50%);
  cursor:pointer;
  backdrop-filter:blur(8px);
  transition:
    opacity .2s ease,
    background-color .2s ease,
    border-color .2s ease,
    transform .2s ease;
}

.CaseGallery__arrow:hover{
  border-color:rgba(255,255,255,.20);
  background:rgba(43,49,56,.96);
  background:
    color-mix(
      in srgb,
      var(--surface) 96%,
      transparent
    );
}

.CaseGallery__arrow:active{
  transform:translateY(-50%) scale(.97);
}

.CaseGallery__arrow:focus-visible{
  opacity:1;
  pointer-events:auto;
  outline:2px solid var(--accent);
  outline-offset:2px;
}

.CaseGallery__arrow--prev{
  left:0;
  border-left:0;
  border-radius:0 var(--r-m) var(--r-m) 0;
}

.CaseGallery__arrow--next{
  right:0;
  border-right:0;
  border-radius:var(--r-m) 0 0 var(--r-m);
}

.CaseGallery__arrow span{
  display:block;
  margin-top:-2px;
}

/* Стрелки показываются только после реального наведения мышью или тачпадом. */
@media (min-width:768px){
  .CaseCard--featured .CaseGallery.is-pointer-hover .CaseGallery__arrow{
    opacity:1;
    pointer-events:auto;
  }
}

/* =============================================================================
   Gallery counter and dots
   ============================================================================= */

.CaseGallery__counter{
  position:absolute;
  top:var(--space-3);
  right:var(--space-3);
  z-index:3;
  display:flex;
  align-items:center;
  gap:3px;
  min-height:28px;
  padding:0 10px;
  border:1px solid var(--divider-2);
  border-radius:var(--r-pill);
  background:rgba(43,49,56,.88);
  background:
    color-mix(
      in srgb,
      var(--surface) 88%,
      transparent
    );
  color:var(--text-2);
  font-size:var(--small);
  line-height:1;
  backdrop-filter:blur(8px);
}

.CaseGallery__dots{
  position:absolute;
  right:64px;
  bottom:var(--space-3);
  left:64px;
  z-index:3;
  display:flex;
  justify-content:center;
  gap:7px;
}

.CaseGallery__dot{
  width:8px;
  height:8px;
  padding:0;
  border:0;
  border-radius:50%;
  background:rgba(255,255,255,.45);
  cursor:pointer;
  transition:
    width .2s ease,
    background-color .2s ease;
}

.CaseGallery__dot.is-active{
  width:24px;
  border-radius:var(--r-pill);
  background:var(--accent);
}

.CaseGallery__dot:focus-visible{
  outline:2px solid var(--text);
  outline-offset:3px;
}

.CaseGallery__status{
  position:absolute;
  width:1px;
  height:1px;
  padding:0;
  margin:-1px;
  overflow:hidden;
  clip:rect(0,0,0,0);
  white-space:nowrap;
  border:0;
}

.CaseGallery--single .CaseGallery__arrow,
.CaseGallery--single .CaseGallery__counter,
.CaseGallery--single .CaseGallery__dots,
.CaseCard--compact .CaseGallery__arrow,
.CaseCard--compact .CaseGallery__counter,
.CaseCard--compact .CaseGallery__dots{
  display:none;
}

/* =============================================================================
   Shared tablet and desktop
   ============================================================================= */

@media (min-width:768px){
  .CaseCard--featured .CaseCard__media{
    height:300px;
  }

  .CaseCard__footer{
    grid-template-columns:repeat(4, minmax(0, 1fr));
    gap:0;
    margin-top:auto;
    padding-top:var(--space-3);
  }

  .CaseCard__stat{
    padding:0 var(--space-3);
    border-left:1px solid var(--divider-2);
  }

  .CaseCard__stat:first-child{
    padding-left:0;
    border-left:0;
  }
}

/* =============================================================================
   Small mobile
   ============================================================================= */

@media (max-width:380px){
  .CaseCard__media{
    height:195px;
    margin:var(--space-3) var(--space-3) 0;
  }

  .CaseCard__body{
    padding:var(--space-3);
  }

  .CaseCard--compact .CaseCard__tag{
    min-height:24px;
    padding:0 8px;
    font-size:.75rem;
  }

  .CaseCard--compact .CaseCard__title{
    font-size:1.05rem;
  }

  .CaseGallery__counter{
    top:var(--space-2);
    right:var(--space-2);
  }

  .CaseGallery__dots{
    right:var(--space-2);
    bottom:var(--space-2);
    left:var(--space-2);
  }
}

/* =============================================================================
   Tablet
   ============================================================================= */

@media (min-width:768px) and (max-width:1023px){
  .Cases__head{
    margin-bottom:var(--space-5);
  }

  .Cases__grid{
    grid-template-columns:repeat(2, minmax(0, 1fr));
    align-items:stretch;
    gap:var(--space-4);
  }

  .CaseCard--featured{
    grid-column:1 / -1;
  }

  .CaseCard--featured .CaseCard__title{
    font-size:1.75rem;
  }

  .CaseCard--featured .CaseCard__description{
    max-width:760px;
    margin-top:var(--space-3);
    margin-bottom:var(--space-3);
    font-size:1rem;
    line-height:1.5;
  }

  .CaseCard--compact .CaseCard__media{
    height:180px;
  }

  .CaseCard--compact .CaseCard__body{
    padding:
      var(--space-3)
      var(--space-4)
      var(--space-4);
  }

  .Cases__grid--1{
    grid-template-columns:minmax(0, 1fr);
  }

  .Cases__grid--2 .CaseCard--compact{
    grid-column:1 / -1;
  }
}

/* =============================================================================
   Desktop
   ============================================================================= */

@media (min-width:1024px){
  .Cases__grid{
    grid-template-columns:
      minmax(0, 1.55fr)
      minmax(340px, .85fr);
    grid-template-rows:repeat(2, minmax(0, 1fr));
    align-items:stretch;
    gap:var(--space-4);
  }

  .Cases__grid--1{
    grid-template-columns:minmax(0, 1fr);
    grid-template-rows:auto;
  }

  .Cases__grid--2{
    grid-template-rows:minmax(0, 1fr);
  }

  .Cases__grid--1 .CaseCard--featured,
  .Cases__grid--2 .CaseCard--featured{
    grid-row:auto;
  }

  .CaseCard--featured{
    grid-row:1 / span 2;
  }

  .CaseCard--compact .CaseCard__media{
    flex:1 1 0;
    height:auto;
    min-height:0;
    margin:var(--space-3) var(--space-3) 0;
  }

  .CaseCard--compact .CaseCard__body{
    flex:0 0 auto;
    padding:var(--space-3);
  }

  .CaseCard__description{
    margin-top:var(--space-3);
    margin-bottom:var(--space-3);
    line-height:1.5;
  }
}

/* =============================================================================
   Large desktop
   ============================================================================= */

@media (min-width:1200px){
  .Cases__grid{
    grid-template-columns:
      minmax(0, 1.55fr)
      minmax(380px, .85fr);
  }

  .CaseCard--featured .CaseCard__media{
    height:320px;
  }

  .CaseCard--compact .CaseCard__body{
    padding:var(--space-3) var(--space-4) var(--space-4);
  }

  .CaseCard--compact .CaseCard__title{
    font-size:1.2rem;
  }
}

/* =============================================================================
   Touch devices
   ============================================================================= */

@media (max-width:767px) and (hover:none) and (pointer:coarse){
  .CaseGallery__arrow{
    display:none;
  }

  .CaseGallery__dots{
    right:var(--space-3);
    left:var(--space-3);
  }

  .CaseCard--compact:active{
    background-color:var(--surface-2);
    transform:scale(.995);
  }
}

/* =============================================================================
   Reduced motion
   ============================================================================= */

@media (prefers-reduced-motion:reduce){
  .CaseCard--compact,
  .CaseGallery__track,
  .CaseGallery__dot,
  .CaseGallery__arrow{
    transition:none;
  }
}