.fastweb-page {
  --fastweb-gap: clamp(10px, .85vw, 16px);
  background: #fff;
  color: var(--red);
}

.fastweb-page .menu-toggle { background: var(--red); color: #fff; }

.fastweb-layout {
  grid-template-columns: minmax(300px, 27vw) minmax(0, 1fr);
  gap: clamp(34px, 5.5vw, 104px);
  min-height: 100vh;
  padding: clamp(24px, 2.8vw, 46px) clamp(20px, 2.5vw, 40px) clamp(70px, 8vw, 130px);
  background: #fff;
}

.fastweb-sidebar { gap: clamp(84px, 14vh, 170px); color: var(--red); }
.fastweb-page .work-detail-logo { width: clamp(126px, 11vw, 208px); }
.fastweb-intro { gap: clamp(18px, 2vw, 30px); max-width: 430px; }

.fastweb-kicker {
  margin: 0 0 -10px;
  font-size: var(--type-case-kicker);
  font-weight: 800;
  line-height: var(--leading-case-kicker);
  text-transform: uppercase;
}

.fastweb-page h1 { font-size: var(--type-case-title); line-height: var(--leading-case-title); }
.fastweb-story { display: grid; gap: clamp(18px, 1.8vw, 28px); }
.fastweb-story p { max-width: 410px; font-size: var(--type-case-copy); line-height: var(--leading-case-copy); }

.fastweb-meta {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px 18px;
  margin: 4px 0 0;
  padding-top: 18px;
  border-top: 1px solid currentColor;
}

.fastweb-meta dt, .fastweb-meta dd { margin: 0; }
.fastweb-meta dt { margin-bottom: 5px; font-size: var(--type-case-kicker); font-weight: 800; text-transform: uppercase; }
.fastweb-meta dd { font-size: var(--type-case-meta); line-height: var(--leading-case-meta); }

.fastweb-board {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  align-content: start;
  align-items: start;
  gap: var(--fastweb-gap);
  padding-top: clamp(4px, 1vw, 16px);
}

.fastweb-board > * { min-width: 0; }
.fastweb-span-12 { grid-column: span 12; }
.fastweb-span-8 { grid-column: span 8; }
.fastweb-span-6 { grid-column: span 6; }
.fastweb-span-4 { grid-column: span 4; }

.fastweb-tile {
  position: relative;
  min-height: 0;
  margin: 0;
  overflow: hidden;
  background: #f8be00;
}

.fastweb-tile img { display: block; width: 100%; height: auto; }
.fastweb-added-photo { aspect-ratio: auto; }
.fastweb-preview { background: #f8be00; }
.fastweb-preview img { width: 100%; height: auto; }

.fastweb-row {
  display: grid;
  gap: var(--fastweb-gap);
}

.fastweb-row > .fastweb-tile {
  width: 100%;
  height: 100%;
  min-width: 0;
  min-height: 0;
  aspect-ratio: auto;
}
.fastweb-row > .fastweb-tile img { width: 100%; height: 100%; object-fit: cover; }

.fastweb-row--feature-portrait {
  grid-template-columns: minmax(0, 1.5fr) minmax(0, .706fr);
  aspect-ratio: 2.206 / 1;
}

.fastweb-row--feature-story {
  grid-template-columns: minmax(0, 1.5fr) minmax(0, .564fr);
  aspect-ratio: 2.064 / 1;
}

.fastweb-row--feature .fastweb-tile--motion img { object-fit: contain; }

.fastweb-row--application {
  grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr);
  align-items: stretch;
  aspect-ratio: auto;
}

.fastweb-row--application > .fastweb-tile:first-child { aspect-ratio: 1.5 / 1; }
.fastweb-row--application > .fastweb-tile:last-child { aspect-ratio: 1 / 1; }

.fastweb-row--portraits {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  aspect-ratio: 3 / 1;
}

.fastweb-contain {
  aspect-ratio: auto;
  background: #fff;
}

.fastweb-contain img { height: auto; object-fit: contain; }

.fastweb-video-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--fastweb-gap);
}

.fastweb-film--grid { width: 100%; }

.fastweb-video-stack {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--fastweb-gap);
}

.fastweb-video-stack .fastweb-film { width: 100%; }

.fastweb-metro-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-items: start;
  gap: var(--fastweb-gap);
}

.fastweb-stack {
  display: grid;
  gap: var(--fastweb-gap);
  min-width: 0;
}

.fastweb-stack .work-detail-media { aspect-ratio: auto; }
.fastweb-stack .work-detail-media img { height: auto; object-fit: contain; }

.fastweb-row--event {
  grid-template-columns: minmax(0, 1.164fr) minmax(0, 1.419fr);
  aspect-ratio: 2.583 / 1;
}

.fastweb-row--closing {
  grid-template-columns: minmax(0, .75fr) minmax(0, 1.236fr) minmax(0, 1fr);
  aspect-ratio: 2.986 / 1;
}

.fastweb-row.fastweb-row--event > .fastweb-tile img,
.fastweb-row.fastweb-row--closing > .fastweb-tile img,
.fastweb-row.fastweb-row--application > .fastweb-transition img { object-fit: contain; }

.fastweb-transition {
  display: grid;
  place-items: center;
  background: #080704;
}

.fastweb-transition img { width: 100%; height: 100%; object-fit: contain; }

.fastweb-film {
  position: relative;
  aspect-ratio: 16 / 9;
  margin: 0;
  overflow: hidden;
  background: #000;
}

.fastweb-film iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }

.fastweb-video-poster {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  padding: 0;
  border: 0;
  border-radius: 0;
  overflow: hidden;
  background: #f8be00;
  cursor: pointer;
}

.fastweb-video-poster img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.fastweb-video-poster span {
  position: absolute;
  top: 50%;
  left: 50%;
  width: clamp(58px, 5vw, 84px);
  aspect-ratio: 1;
  border: 2px solid #f8be00;
  border-radius: 50%;
  background: rgba(0, 0, 0, .78);
  transform: translate(-50%, -50%);
  transition: transform 180ms ease, background-color 180ms ease;
}

.fastweb-video-poster span::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 53%;
  width: 0;
  height: 0;
  border-top: 9px solid transparent;
  border-bottom: 9px solid transparent;
  border-left: 15px solid #f8be00;
  transform: translate(-50%, -50%);
}

.fastweb-video-poster:hover span,
.fastweb-video-poster:focus-visible span {
  background: #fff;
  transform: translate(-50%, -50%) scale(1.08);
}

.fastweb-film-play {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  width: 100%;
  height: 100%;
  padding: 0;
  border: 0;
  border-radius: 0;
  color: #f8be00;
  background: #000;
  cursor: pointer;
}

.fastweb-film-play::before {
  content: "";
  position: absolute;
  width: clamp(64px, 7vw, 112px);
  aspect-ratio: 1;
  border: 2px solid currentColor;
  border-radius: 50%;
  background: rgba(0, 0, 0, .72);
  transition: transform 240ms ease, background-color 240ms ease;
}

.fastweb-film-play span {
  position: relative;
  z-index: 1;
  width: 0;
  height: 0;
  margin-left: 6px;
  border-top: 11px solid transparent;
  border-bottom: 11px solid transparent;
  border-left: 18px solid currentColor;
}

.fastweb-film-play:hover::before,
.fastweb-film-play:focus-visible::before { transform: scale(1.08); background: #fff; }
.fastweb-film.is-playing .fastweb-film-play { display: none; }

.fastweb-center {
  aspect-ratio: 16 / 9;
  display: grid;
  place-items: center;
  background: #f8be00;
}

.fastweb-center img { width: min(56%, 560px); height: auto; object-fit: contain; }

@media (max-width: 900px) {
  .fastweb-layout { grid-template-columns: 1fr; gap: 42px; }
  .fastweb-sidebar { position: relative; min-height: auto; gap: 54px; padding-bottom: 20px; }
  .fastweb-intro, .fastweb-story p { max-width: 620px; }
}

@media (max-width: 680px) {
  .fastweb-layout { padding: 18px 16px 64px; }
  .fastweb-page .work-detail-logo { width: 112px; }
  .fastweb-meta { grid-template-columns: 1fr; }
  .fastweb-span-8, .fastweb-span-6, .fastweb-span-4 { grid-column: span 12; }
  .fastweb-row--feature, .fastweb-row--application, .fastweb-row--portraits, .fastweb-row--event, .fastweb-row--closing, .fastweb-video-grid, .fastweb-metro-grid { grid-template-columns: 1fr; aspect-ratio: auto; }
  .fastweb-row > .fastweb-tile { height: auto; }
  .fastweb-row > .fastweb-tile img { height: auto; object-fit: contain; }
  .fastweb-transition { aspect-ratio: 16 / 9; }
  .fastweb-center { aspect-ratio: 1; }
  .fastweb-center img { width: 78%; }
}
