@media (max-width: 1180px) {
  .portal-shell { grid-template-columns: 238px minmax(0, 1fr); }
  .portal-sidebar { padding-inline: 14px; }
  .portal-content { padding-inline: 30px; }
  .area-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .overview-layout,
  .dual-layout,
  .review-layout { grid-template-columns: 1fr; }
}

@media (max-width: 780px) {
  .portal-shell { display: block; }
  .portal-sidebar {
    position: static;
    width: 100%;
    height: auto;
    padding: 16px;
  }
  .portal-brand { margin-bottom: 14px; }
  .project-switch { display: none; }
  .portal-nav {
    grid-auto-flow: column;
    grid-auto-columns: minmax(150px, 1fr);
    overflow-x: auto;
    padding-bottom: 8px;
  }
  .role-switch { margin-top: 10px; padding-top: 12px; }
  .portal-topbar { padding: 0 18px; }
  .portal-topbar > div:first-child small,
  .concept-badge { display: none; }
  .portal-content { padding: 38px 18px 64px; }
  .page-intro { display: grid; align-items: start; }
  .page-intro h1 { font-size: clamp(2.2rem, 12vw, 4rem); }
  .area-grid { grid-template-columns: 1fr; }
  .project-health { grid-template-columns: 1fr; }
  .phase-rail {
    grid-template-columns: 1fr;
    gap: 14px;
  }
  .phase-step { grid-template-columns: 18px 1fr; }
  .phase-step::before { top: 0; bottom: -15px; left: 25px; right: auto; width: 1px; height: auto; }
  .phase-step:first-child::before { left: 25px; }
  .phase-step:last-child::before { display: none; }
  .upload-grid { grid-template-columns: 1fr; }
  .review-stage { grid-template-rows: auto minmax(360px, 55vh); }
  .review-stage canvas { min-height: 360px; }
  .review-toolbar { flex-wrap: wrap; }
}

