/* ==========================================================================
   COMPONENT: PORTFOLIO / REAL PROJECTS (mrtcprwilu)
   Real, verifiable client work — browser + phone mockup showcase with
   category filtering. No fabricated screenshots, no invented metrics:
   every card links to a live, working project.
   Policy: Zero Magic Numbers — every value is a design token below.
   ========================================================================== */

:root {
  --mrtcprwilu-ink: #0f766e;
  --mrtcprwilu-chrome-bg: #000000;
  --mrtcprwilu-dot-red: #ff5f57;
  --mrtcprwilu-dot-yellow: #ffbd2e;
  --mrtcprwilu-dot-green: #28c840;
  --mrtcprwilu-phone-border: rgba(188, 224, 223, 0.55);
}

.mrtcprwilu {
  position: relative;
}

/* ============================================================
   CATEGORY TABS
   Sticky right under the sticky header so the filter stays reachable
   while browsing a long results grid.
   ============================================================ */
.mrtcprwilu-tabs {
  position: sticky;
  top: calc(var(--mrtchdrilu-height, 74px) + var(--mrtc-space-sm));
  z-index: 40;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: var(--mrtc-space-xs);
  margin-bottom: var(--mrtc-space-2xl);
  padding-block: var(--mrtc-space-sm);
  background: rgba(255, 255, 255, 0.92);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--mrtc-color-border);
  transition: box-shadow var(--mrtc-transition-fast) ease;
}

.mrtcprwilu-tab {
  flex-shrink: 0;
  padding: var(--mrtc-space-xs) var(--mrtc-space-lg);
  border-radius: var(--mrtc-radius-full);
  border: 1.5px solid var(--mrtc-color-border);
  background: var(--mrtc-color-white);
  color: var(--mrtc-color-text-body);
  font-size: var(--mrtc-font-size-sm);
  font-weight: 700;
  cursor: pointer;
  transition: background-color var(--mrtc-transition-fast) ease, color var(--mrtc-transition-fast) ease,
    border-color var(--mrtc-transition-fast) ease;
}

.mrtcprwilu-tab:hover {
  border-color: var(--mrtc-color-brand);
}

.mrtcprwilu-tab.mrtcprwilu-tab-active {
  background: var(--mrtc-color-dark);
  border-color: var(--mrtc-color-dark);
  color: var(--mrtc-color-white);
}

/* ============================================================
   PANELS & GRID
   No-JS fallback: every panel stays visible (stacked = the "all" view),
   so the full portfolio is never hidden behind JavaScript. Once
   mrtcprwilu.js runs it adds .mrtcprwilu-js and takes over filtering.
   ============================================================ */
.mrtcprwilu-panel {
  display: block;
}

.mrtcprwilu-panel + .mrtcprwilu-panel {
  margin-top: var(--mrtc-space-xl);
}

.mrtcprwilu-js .mrtcprwilu-panel {
  display: none;
  margin-top: 0;
}

.mrtcprwilu-js .mrtcprwilu-panel.mrtcprwilu-panel-active {
  display: block;
  animation: mrtcprwilu-panel-in 0.5s cubic-bezier(0.16, 1, 0.3, 1) both;
}

@keyframes mrtcprwilu-panel-in {
  from {
    opacity: 0;
    transform: translateY(16px);
  }
  to {
    opacity: 1;
    transform: none;
  }
}

.mrtcprwilu-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--mrtc-space-xl);
}

/* A lone odd card left dangling in the last row spans and centers
   instead of leaving one grid cell blank beside it. */
.mrtcprwilu-grid > .mrtcprwilu-card:last-child:nth-child(odd) {
  grid-column: 1 / -1;
  max-width: calc(50% - var(--mrtc-space-xl) / 2);
  margin-inline: auto;
}

/* ============================================================
   CARD
   ============================================================ */
.mrtcprwilu-card {
  padding: var(--mrtc-space-lg);
  display: flex;
  flex-direction: column;
}

/* The class above sets display:flex unconditionally, which — because
   author styles always win over the UA stylesheet — overrides the
   browser's built-in `[hidden]{display:none}` rule. Restate it so
   card.hidden (load-more pagination) actually hides the card. */
.mrtcprwilu-card[hidden] {
  display: none;
}

/* -- Stage: browser mockup + floating phone -- */
.mrtcprwilu-stage {
  position: relative;
  margin-bottom: var(--mrtc-space-2xl);
}

.mrtcprwilu-browser {
  border-radius: var(--mrtc-radius-md);
  overflow: hidden;
  background: var(--mrtcprwilu-chrome-bg);
  box-shadow: var(--mrtc-shadow-sm);
}

.mrtcprwilu-browser-bar {
  height: 30px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--mrtc-space-sm);
  padding-inline: var(--mrtc-space-sm);
  background: #17181c;
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}

.mrtcprwilu-browser-dots {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-shrink: 0;
}

.mrtcprwilu-browser-dots span {
  width: 8px;
  height: 8px;
  border-radius: 50%;
}

.mrtcprwilu-browser-dots span:nth-child(1) { background: var(--mrtcprwilu-dot-red); }
.mrtcprwilu-browser-dots span:nth-child(2) { background: var(--mrtcprwilu-dot-yellow); }
.mrtcprwilu-browser-dots span:nth-child(3) { background: var(--mrtcprwilu-dot-green); }

.mrtcprwilu-browser-url {
  font-size: 11px;
  color: rgba(255, 255, 255, 0.65);
  background: rgba(255, 255, 255, 0.08);
  padding: 3px var(--mrtc-space-sm);
  border-radius: var(--mrtc-radius-full);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.mrtcprwilu-browser-screen {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 10;
  overflow: hidden;
  background: var(--mrtcprwilu-chrome-bg);
}

.mrtcprwilu-browser-screen img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: top center;
  display: block;
  transition: transform var(--mrtc-transition-slow);
}

.mrtcprwilu-card:hover .mrtcprwilu-browser-screen img {
  transform: scale(1.04);
}

/* -- Floating phone companion -- */
.mrtcprwilu-phone {
  position: absolute;
  bottom: -14px;
  inset-inline-start: var(--mrtc-space-lg);
  width: 74px;
  aspect-ratio: 9 / 18.5;
  border-radius: 14px;
  background: var(--mrtcprwilu-chrome-bg);
  border: 2px solid var(--mrtcprwilu-phone-border);
  box-shadow: var(--mrtc-shadow-lg);
  padding: 3px;
  transition: transform var(--mrtc-transition-normal), box-shadow var(--mrtc-transition-normal);
}

.mrtcprwilu-phone img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: top center;
  border-radius: 10px;
  display: block;
}

.mrtcprwilu-card:hover .mrtcprwilu-phone {
  transform: translateY(-6px);
  box-shadow: var(--mrtc-shadow-glow), var(--mrtc-shadow-lg);
}

/* -- Info -- */
.mrtcprwilu-info {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}

.mrtcprwilu-tags {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--mrtc-space-xs);
  margin-bottom: var(--mrtc-space-sm);
}

.mrtcprwilu-tag {
  padding: 4px var(--mrtc-space-sm);
  border-radius: var(--mrtc-radius-full);
  background: rgba(188, 224, 223, 0.3);
  color: var(--mrtc-color-dark);
  font-size: var(--mrtc-font-size-xs);
  font-weight: 700;
}

.mrtcprwilu-kpi {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  color: var(--mrtcprwilu-ink);
  font-size: var(--mrtc-font-size-xs);
  font-weight: 800;
}

.mrtcprwilu-kpi svg {
  width: 13px;
  height: 13px;
  flex-shrink: 0;
}

.mrtcprwilu-card-title {
  font-size: var(--mrtc-font-size-lg);
  font-weight: 800;
  color: var(--mrtc-color-dark);
  margin-bottom: var(--mrtc-space-xs);
}

.mrtcprwilu-card-desc {
  font-size: var(--mrtc-font-size-sm);
  line-height: 1.7;
  color: var(--mrtc-color-text-body);
  margin-bottom: var(--mrtc-space-md);
}

.mrtcprwilu-card-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--mrtc-space-xs);
  font-size: var(--mrtc-font-size-sm);
  font-weight: 700;
  color: var(--mrtc-color-dark);
  text-decoration: none;
  border-bottom: 2px solid var(--mrtc-color-brand);
  padding-bottom: 2px;
  transition: color var(--mrtc-transition-fast) ease, border-color var(--mrtc-transition-fast) ease;
}

.mrtcprwilu-card-btn svg {
  transition: transform var(--mrtc-transition-fast) ease;
  flex-shrink: 0;
}

.mrtcprwilu-card-btn:hover {
  color: var(--mrtcprwilu-ink);
  border-color: var(--mrtcprwilu-ink);
}

.mrtcprwilu-card-btn:hover svg {
  transform: translateX(-3px);
}

/* ============================================================
   LOAD MORE / LESS CONTROLS
   ============================================================ */
.mrtcprwilu-controls {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--mrtc-space-md);
  margin-top: var(--mrtc-space-2xl);
}

.mrtcprwilu-more-btn,
.mrtcprwilu-less-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--mrtc-space-xs);
  padding: var(--mrtc-space-sm) var(--mrtc-space-xl);
  border-radius: var(--mrtc-radius-full);
  font-size: var(--mrtc-font-size-sm);
  font-weight: 700;
  cursor: pointer;
  transition: all var(--mrtc-transition-fast) ease;
}

.mrtcprwilu-more-btn {
  background: var(--mrtc-color-dark);
  color: var(--mrtc-color-white);
  border: 2px solid var(--mrtc-color-dark);
}

.mrtcprwilu-more-btn:hover {
  background: var(--mrtc-color-brand);
  border-color: var(--mrtc-color-brand);
  color: var(--mrtc-color-dark);
  transform: translateY(-2px);
}

.mrtcprwilu-less-btn {
  background: transparent;
  color: var(--mrtc-color-text-muted);
  border: 2px solid var(--mrtc-color-border);
}

.mrtcprwilu-less-btn:hover {
  border-color: var(--mrtc-color-dark);
  color: var(--mrtc-color-dark);
}

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width: 900px) {
  .mrtcprwilu-grid {
    grid-template-columns: 1fr;
  }

  .mrtcprwilu-grid > .mrtcprwilu-card:last-child:nth-child(odd) {
    grid-column: auto;
    max-width: none;
    margin-inline: 0;
  }
}

@media (max-width: 640px) {
  .mrtcprwilu-tabs {
    top: var(--mrtchdrilu-height-mobile, 64px);
    justify-content: flex-start;
    overflow-x: auto;
    flex-wrap: nowrap;
    margin-inline: calc(var(--mrtc-space-md) * -1);
    margin-bottom: var(--mrtc-space-lg);
    padding-inline: var(--mrtc-space-md);
    scrollbar-width: none;
  }

  .mrtcprwilu-tabs::-webkit-scrollbar {
    display: none;
  }

  .mrtcprwilu-tab {
    white-space: nowrap;
  }

  .mrtcprwilu-card {
    padding: var(--mrtc-space-md);
  }

  .mrtcprwilu-phone {
    width: 58px;
    inset-inline-start: var(--mrtc-space-md);
    bottom: -10px;
  }

  .mrtcprwilu-controls {
    flex-direction: column;
    align-items: stretch;
  }

  .mrtcprwilu-more-btn,
  .mrtcprwilu-less-btn {
    width: 100%;
    padding: var(--mrtc-space-sm) var(--mrtc-space-md);
  }
}

@media (prefers-reduced-motion: reduce) {
  .mrtcprwilu-browser-screen img,
  .mrtcprwilu-phone,
  .mrtcprwilu-card-btn svg {
    transition: none;
  }

  .mrtcprwilu-js .mrtcprwilu-panel.mrtcprwilu-panel-active {
    animation: none;
  }
}
