/* CadProf PWA iPhone/iPad — ajustes tácteis e safe areas, mantendo a identidade V63. */
html[data-cadprof-platform="ios-pwa"],
html[data-cadprof-platform="ios-pwa"] body {
  min-height: 100%;
  min-height: 100dvh;
}
html[data-cadprof-platform="ios-pwa"] body {
  overscroll-behavior-y: none;
  -webkit-text-size-adjust: 100%;
  -webkit-tap-highlight-color: transparent;
}
html[data-cadprof-platform="ios-pwa"] .app-shell,
html[data-cadprof-platform="ios-pwa"] .workspace { min-height: 100dvh; }
@supports (padding: max(0px)) {
  @media (max-width: 880px) {
    html[data-cadprof-platform="ios-pwa"] .topbar {
      height: calc(66px + env(safe-area-inset-top));
      padding-top: env(safe-area-inset-top);
      padding-left: max(18px, env(safe-area-inset-left));
      padding-right: max(18px, env(safe-area-inset-right));
    }
    html[data-cadprof-platform="ios-pwa"] .mobile-nav {
      top: calc(66px + env(safe-area-inset-top));
      padding-left: max(12px, env(safe-area-inset-left));
      padding-right: max(12px, env(safe-area-inset-right));
      -webkit-overflow-scrolling: touch;
      scrollbar-width: none;
    }
    html[data-cadprof-platform="ios-pwa"] .mobile-nav::-webkit-scrollbar { display: none; }
    html[data-cadprof-platform="ios-pwa"] .content {
      padding-left: max(16px, env(safe-area-inset-left));
      padding-right: max(16px, env(safe-area-inset-right));
      padding-bottom: calc(72px + env(safe-area-inset-bottom));
    }
    html[data-cadprof-platform="ios-pwa"] .toast { bottom: calc(18px + env(safe-area-inset-bottom)); }
  }
  @media (max-width: 580px) {
    html[data-cadprof-platform="ios-pwa"] .modal { padding-bottom: env(safe-area-inset-bottom); }
    html[data-cadprof-platform="ios-pwa"] .modal-footer.sticky { padding-bottom: calc(18px + env(safe-area-inset-bottom)); }
  }
}
@media (hover: none) and (pointer: coarse) {
  html[data-cadprof-platform="ios-pwa"] button,
  html[data-cadprof-platform="ios-pwa"] select,
  html[data-cadprof-platform="ios-pwa"] input[type="checkbox"],
  html[data-cadprof-platform="ios-pwa"] input[type="radio"] { touch-action: manipulation; }
  html[data-cadprof-platform="ios-pwa"] input,
  html[data-cadprof-platform="ios-pwa"] select,
  html[data-cadprof-platform="ios-pwa"] textarea { font-size: max(16px, 1em); }
}

/* ===== CadProf PWA v0.2 · navegação iPhone, topbar e horário =====
   Mantém a arquitetura visual do PC, mas adapta a barra lateral e a barra de
   contexto ao espaço físico do iPhone. Em retrato a navegação continua à
   esquerda num rail compacto; em paisagem volta a ter rótulos completos e
   passa a permitir scroll vertical. O horário conserva a grelha semanal do PC
   e usa scroll horizontal quando a largura não chega. */

html[data-cadprof-platform="ios-pwa"] .sidebar {
  overflow-y: auto;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
}
html[data-cadprof-platform="ios-pwa"] .sidebar::-webkit-scrollbar { display: none; }
html[data-cadprof-platform="ios-pwa"] .sidebar-bottom { flex: none; }

/* iPhone em retrato: rail lateral compacto, sempre acessível. */
@media screen and (max-width: 880px) and (orientation: portrait) {
  html[data-cadprof-platform="ios-pwa"] .sidebar {
    display: flex !important;
    width: 104px !important;
    padding:
      calc(10px + env(safe-area-inset-top))
      8px
      calc(12px + env(safe-area-inset-bottom))
      max(8px, env(safe-area-inset-left)) !important;
  }
  html[data-cadprof-platform="ios-pwa"] .workspace {
    margin-left: 104px !important;
    min-width: 0 !important;
  }

  html[data-cadprof-platform="ios-pwa"] .brand.cadprof-brand-panel {
    min-height: 48px !important;
    margin: 0 2px 10px !important;
    padding: 5px !important;
    border-radius: 11px !important;
  }
  html[data-cadprof-platform="ios-pwa"] .cadprof-brand-logo {
    content: url("./brand/cadprof-symbol.svg");
    width: 42px !important;
    height: 42px !important;
    max-height: 42px !important;
    margin: 0 auto !important;
    object-position: center !important;
  }

  html[data-cadprof-platform="ios-pwa"] .main-nav {
    gap: 3px !important;
  }
  html[data-cadprof-platform="ios-pwa"] .main-nav button {
    min-height: 54px !important;
    padding: 5px 3px !important;
    flex-direction: column !important;
    justify-content: center !important;
    gap: 3px !important;
    text-align: center !important;
    font-size: 8.5px !important;
    line-height: 1.1 !important;
  }
  html[data-cadprof-platform="ios-pwa"] .main-nav button > span:not(.nav-icon) {
    display: block !important;
    max-width: 88px !important;
    overflow-wrap: anywhere !important;
  }
  html[data-cadprof-platform="ios-pwa"] .nav-icon {
    width: 30px !important;
    height: 30px !important;
    font-size: 8px !important;
  }
  html[data-cadprof-platform="ios-pwa"] .main-nav .sync-dot {
    position: absolute !important;
    top: 5px !important;
    right: 5px !important;
    margin: 0 !important;
  }
  html[data-cadprof-platform="ios-pwa"] .sidebar-bottom {
    display: none !important;
  }
  html[data-cadprof-platform="ios-pwa"] .mobile-nav {
    display: none !important;
  }

  /* Barra superior em duas linhas: ano letivo em cima; turma + sync em baixo. */
  html[data-cadprof-platform="ios-pwa"] .topbar {
    box-sizing: border-box !important;
    height: auto !important;
    min-height: calc(106px + env(safe-area-inset-top)) !important;
    padding:
      calc(8px + env(safe-area-inset-top))
      max(10px, env(safe-area-inset-right))
      9px
      10px !important;
    display: flex !important;
    flex-direction: column !important;
    align-items: stretch !important;
    justify-content: center !important;
    gap: 7px !important;
  }
  html[data-cadprof-platform="ios-pwa"] .topbar-left,
  html[data-cadprof-platform="ios-pwa"] .topbar-actions {
    width: 100% !important;
    min-width: 0 !important;
    margin-left: 0 !important;
  }
  html[data-cadprof-platform="ios-pwa"] .topbar-left {
    display: block !important;
  }
  html[data-cadprof-platform="ios-pwa"] .breadcrumb,
  html[data-cadprof-platform="ios-pwa"] .mobile-brand,
  html[data-cadprof-platform="ios-pwa"] .archive-readonly-pill {
    display: none !important;
  }
  html[data-cadprof-platform="ios-pwa"] .academic-year-switcher {
    display: flex !important;
    width: 100% !important;
    min-width: 0 !important;
    box-sizing: border-box !important;
  }
  html[data-cadprof-platform="ios-pwa"] .academic-year-switcher select {
    width: 100% !important;
    min-width: 0 !important;
    max-width: none !important;
  }
  html[data-cadprof-platform="ios-pwa"] .topbar-actions {
    display: flex !important;
    align-items: stretch !important;
    gap: 7px !important;
  }
  html[data-cadprof-platform="ios-pwa"] .class-switcher {
    display: flex !important;
    flex: 1 1 auto !important;
    min-width: 0 !important;
    padding: 5px 7px !important;
    border: 1px solid var(--line) !important;
    border-radius: 10px !important;
    background: var(--surface) !important;
  }
  html[data-cadprof-platform="ios-pwa"] .class-switcher span {
    display: none !important;
  }
  html[data-cadprof-platform="ios-pwa"] .class-switcher select {
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    padding: 5px 24px 5px 5px !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
  }
  html[data-cadprof-platform="ios-pwa"] .sync-pill {
    min-width: 44px !important;
    width: 44px !important;
    padding: 0 !important;
    justify-content: center !important;
  }
  html[data-cadprof-platform="ios-pwa"] .sync-pill > span:last-child {
    display: none !important;
  }

  html[data-cadprof-platform="ios-pwa"] .content {
    max-width: none !important;
    margin: 0 !important;
    padding:
      18px
      max(12px, env(safe-area-inset-right))
      calc(58px + env(safe-area-inset-bottom))
      12px !important;
  }
}

/* iPhone em paisagem: mantém a barra lateral completa, mas mais estreita e
   com scroll para que todos os botões permaneçam acessíveis. */
@media screen and (min-width: 881px) and (max-width: 1100px) and (orientation: landscape) {
  html[data-cadprof-platform="ios-pwa"] .sidebar {
    display: flex !important;
    width: calc(214px + env(safe-area-inset-left)) !important;
    padding:
      max(14px, env(safe-area-inset-top))
      12px
      calc(14px + env(safe-area-inset-bottom))
      max(12px, env(safe-area-inset-left)) !important;
  }
  html[data-cadprof-platform="ios-pwa"] .workspace {
    margin-left: calc(214px + env(safe-area-inset-left)) !important;
    min-width: 0 !important;
  }
  html[data-cadprof-platform="ios-pwa"] .brand.cadprof-brand-panel {
    min-height: 48px !important;
    margin: 0 2px 12px !important;
    padding: 7px 9px !important;
    border-radius: 12px !important;
  }
  html[data-cadprof-platform="ios-pwa"] .cadprof-brand-logo {
    max-height: 38px !important;
  }
  html[data-cadprof-platform="ios-pwa"] .main-nav {
    gap: 3px !important;
  }
  html[data-cadprof-platform="ios-pwa"] .main-nav button {
    min-height: 42px !important;
    padding: 5px 8px !important;
    gap: 8px !important;
    font-size: 11px !important;
  }
  html[data-cadprof-platform="ios-pwa"] .nav-icon {
    width: 27px !important;
    height: 27px !important;
  }
  html[data-cadprof-platform="ios-pwa"] .sidebar-bottom {
    margin-top: 12px !important;
  }

  html[data-cadprof-platform="ios-pwa"] .topbar {
    box-sizing: border-box !important;
    min-height: 68px !important;
    height: auto !important;
    padding:
      max(7px, env(safe-area-inset-top))
      max(10px, env(safe-area-inset-right))
      7px
      10px !important;
    gap: 8px !important;
  }
  html[data-cadprof-platform="ios-pwa"] .breadcrumb,
  html[data-cadprof-platform="ios-pwa"] .mobile-brand,
  html[data-cadprof-platform="ios-pwa"] .archive-readonly-pill {
    display: none !important;
  }
  html[data-cadprof-platform="ios-pwa"] .topbar-left {
    flex: 0 1 150px !important;
    min-width: 0 !important;
  }
  html[data-cadprof-platform="ios-pwa"] .academic-year-switcher {
    width: 100% !important;
    min-width: 0 !important;
    box-sizing: border-box !important;
  }
  html[data-cadprof-platform="ios-pwa"] .academic-year-switcher select {
    width: 100% !important;
    min-width: 0 !important;
    padding-right: 20px !important;
  }
  html[data-cadprof-platform="ios-pwa"] .topbar-actions {
    flex: 1 1 auto !important;
    min-width: 0 !important;
    margin-left: 0 !important;
    gap: 8px !important;
  }
  html[data-cadprof-platform="ios-pwa"] .class-switcher {
    display: flex !important;
    flex: 1 1 auto !important;
    min-width: 0 !important;
  }
  html[data-cadprof-platform="ios-pwa"] .class-switcher select {
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
  }
  html[data-cadprof-platform="ios-pwa"] .sync-pill {
    min-width: 98px !important;
    padding: 7px 8px !important;
  }
  html[data-cadprof-platform="ios-pwa"] .sync-pill small {
    display: none !important;
  }
  html[data-cadprof-platform="ios-pwa"] .content {
    max-width: none !important;
    margin: 0 !important;
    padding:
      18px
      max(14px, env(safe-area-inset-right))
      calc(50px + env(safe-area-inset-bottom))
      14px !important;
  }
  html[data-cadprof-platform="ios-pwa"] .mobile-nav {
    display: none !important;
  }
}

/* Horário: mesma grelha semanal do PC. Em vez de esmagar as cinco colunas no
   iPhone, conserva-se a estrutura e permite-se deslocação horizontal táctil. */
@media screen and (max-width: 1100px) {
  html[data-cadprof-platform="ios-pwa"] .schedule {
    overflow-x: auto !important;
    overflow-y: visible !important;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior-x: contain;
  }
  html[data-cadprof-platform="ios-pwa"] .schedule-grid {
    width: 752px !important;
    min-width: 752px !important;
    grid-template-columns: 52px repeat(5, 140px) !important;
    overflow: hidden !important;
  }
  html[data-cadprof-platform="ios-pwa"] .schedule-grid > .schedule-row,
  html[data-cadprof-platform="ios-pwa"] .schedule-row {
    width: 100% !important;
    min-width: 0 !important;
    grid-template-columns: 52px repeat(5, 140px) !important;
  }
  html[data-cadprof-platform="ios-pwa"] .schedule-cell {
    min-width: 0 !important;
  }
}


/* ===== CadProf PWA v0.8 · navegação móvel V4 aprovada + horário 5 dias ===== */
.cadprof-mobile-menu-button,
.cadprof-mobile-title,
.cadprof-mobile-menu-label { display: none; }

@media screen and (max-width: 950px) {
  html[data-cadprof-platform="ios-pwa"] .workspace {
    margin-left: 0 !important;
    min-width: 0 !important;
  }

  html[data-cadprof-platform="ios-pwa"] .sidebar {
    display: flex !important;
    position: fixed !important;
    z-index: 60 !important;
    top: calc(106px + env(safe-area-inset-top)) !important;
    bottom: 0 !important;
    left: 0 !important;
    width: calc(62px + env(safe-area-inset-left)) !important;
    padding: 7px 6px calc(9px + env(safe-area-inset-bottom)) max(6px, env(safe-area-inset-left)) !important;
    transform: translateX(-110%) !important;
    transition: transform .20s ease !important;
    box-shadow: 8px 0 24px rgba(0,0,0,.18) !important;
    overflow-y: auto !important;
    overscroll-behavior: contain !important;
  }
  html[data-cadprof-platform="ios-pwa"].cadprof-mobile-menu-open .sidebar {
    transform: translateX(0) !important;
  }
  html[data-cadprof-platform="ios-pwa"] .brand.cadprof-brand-panel,
  html[data-cadprof-platform="ios-pwa"] .sidebar-bottom {
    display: none !important;
  }
  html[data-cadprof-platform="ios-pwa"] .main-nav {
    width: 48px !important;
    gap: 2px !important;
    margin: 0 !important;
  }
  html[data-cadprof-platform="ios-pwa"] .main-nav button {
    width: 46px !important;
    min-width: 46px !important;
    min-height: 44px !important;
    height: 44px !important;
    padding: 3px !important;
    margin: 0 !important;
    justify-content: center !important;
    align-items: center !important;
    flex-direction: row !important;
    border-radius: 10px !important;
    box-shadow: none !important;
  }
  html[data-cadprof-platform="ios-pwa"] .main-nav button > span:not(.nav-icon) {
    display: none !important;
  }
  html[data-cadprof-platform="ios-pwa"] .nav-icon {
    width: 34px !important;
    height: 34px !important;
    min-width: 34px !important;
    border-radius: 9px !important;
    font-size: 9px !important;
  }
  html[data-cadprof-platform="ios-pwa"] .main-nav button.active {
    background: #263a70 !important;
    box-shadow: inset 3px 0 #89a1ff !important;
  }
  html[data-cadprof-platform="ios-pwa"] .main-nav .sync-dot {
    position: absolute !important;
    top: 3px !important;
    right: 3px !important;
    width: 6px !important;
    height: 6px !important;
    margin: 0 !important;
  }

  html[data-cadprof-platform="ios-pwa"] .topbar {
    box-sizing: border-box !important;
    min-height: calc(106px + env(safe-area-inset-top)) !important;
    height: calc(106px + env(safe-area-inset-top)) !important;
    padding: calc(7px + env(safe-area-inset-top)) max(10px, env(safe-area-inset-right)) 8px max(10px, env(safe-area-inset-left)) !important;
    display: flex !important;
    flex-direction: column !important;
    align-items: stretch !important;
    justify-content: flex-end !important;
    gap: 7px !important;
  }
  html[data-cadprof-platform="ios-pwa"] .cadprof-mobile-menu-button {
    display: grid !important;
    place-items: center !important;
    position: absolute !important;
    z-index: 4 !important;
    left: max(10px, env(safe-area-inset-left)) !important;
    top: calc(8px + env(safe-area-inset-top)) !important;
    width: 38px !important;
    height: 38px !important;
    padding: 0 !important;
    border: 1px solid var(--line) !important;
    border-radius: 10px !important;
    background: var(--surface) !important;
    color: var(--ink) !important;
    font-size: 20px !important;
    line-height: 1 !important;
    cursor: pointer !important;
  }
  html[data-cadprof-platform="ios-pwa"] .cadprof-mobile-title {
    display: block !important;
    position: absolute !important;
    z-index: 2 !important;
    left: calc(max(10px, env(safe-area-inset-left)) + 48px) !important;
    top: calc(17px + env(safe-area-inset-top)) !important;
    font-size: 16px !important;
    line-height: 22px !important;
    font-weight: 850 !important;
    letter-spacing: -.02em !important;
    color: var(--ink) !important;
  }
  html[data-cadprof-platform="ios-pwa"] .cadprof-mobile-menu-label {
    display: block !important;
    position: absolute !important;
    z-index: 8 !important;
    left: 50% !important;
    top: calc(27px + env(safe-area-inset-top)) !important;
    transform: translate(-50%,-50%) scale(.96) !important;
    max-width: 142px !important;
    padding: 6px 10px !important;
    border-radius: 8px !important;
    background: var(--sidebar) !important;
    color: #fff !important;
    font-size: 11px !important;
    font-weight: 750 !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    opacity: 0 !important;
    pointer-events: none !important;
    transition: opacity .14s ease, transform .14s ease !important;
    box-shadow: 0 4px 12px rgba(0,0,0,.16) !important;
  }
  html[data-cadprof-platform="ios-pwa"] .cadprof-mobile-menu-label.show {
    opacity: 1 !important;
    transform: translate(-50%,-50%) scale(1) !important;
  }

  html[data-cadprof-platform="ios-pwa"] .topbar-left {
    width: auto !important;
    min-width: 0 !important;
    position: absolute !important;
    right: max(54px, calc(env(safe-area-inset-right) + 54px)) !important;
    top: calc(8px + env(safe-area-inset-top)) !important;
    height: 38px !important;
    display: flex !important;
    align-items: center !important;
  }
  html[data-cadprof-platform="ios-pwa"] .breadcrumb,
  html[data-cadprof-platform="ios-pwa"] .mobile-brand,
  html[data-cadprof-platform="ios-pwa"] .archive-readonly-pill,
  html[data-cadprof-platform="ios-pwa"] .academic-year-switcher > span {
    display: none !important;
  }
  html[data-cadprof-platform="ios-pwa"] .academic-year-switcher {
    display: block !important;
    width: 91px !important;
    min-width: 91px !important;
  }
  html[data-cadprof-platform="ios-pwa"] .academic-year-switcher select {
    width: 91px !important;
    min-width: 91px !important;
    max-width: 91px !important;
    height: 36px !important;
    padding: 4px 19px 4px 6px !important;
    font-size: 11px !important;
    border-radius: 9px !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
  }
  html[data-cadprof-platform="ios-pwa"] .topbar-actions {
    width: 100% !important;
    min-width: 0 !important;
    height: 38px !important;
    display: flex !important;
    align-items: stretch !important;
    gap: 7px !important;
    margin: 0 !important;
  }
  html[data-cadprof-platform="ios-pwa"] .class-switcher {
    display: flex !important;
    flex: 1 1 auto !important;
    min-width: 0 !important;
    height: 38px !important;
    padding: 3px 7px !important;
    border: 1px solid var(--line) !important;
    border-radius: 10px !important;
    background: var(--surface) !important;
  }
  html[data-cadprof-platform="ios-pwa"] .class-switcher span { display: none !important; }
  html[data-cadprof-platform="ios-pwa"] .class-switcher select {
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    padding: 3px 22px 3px 3px !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
  }
  html[data-cadprof-platform="ios-pwa"] .sync-pill {
    min-width: 42px !important;
    width: 42px !important;
    height: 38px !important;
    padding: 0 !important;
    justify-content: center !important;
  }
  html[data-cadprof-platform="ios-pwa"] .sync-pill > span:last-child { display: none !important; }

  html[data-cadprof-platform="ios-pwa"] .content {
    max-width: none !important;
    margin: 0 !important;
    padding: 14px max(10px, env(safe-area-inset-right)) calc(56px + env(safe-area-inset-bottom)) max(10px, env(safe-area-inset-left)) !important;
  }
  html[data-cadprof-platform="ios-pwa"] .mobile-nav { display: none !important; }

  /* Horário semanal: os cinco dias cabem na largura física do iPhone. */
  html[data-cadprof-platform="ios-pwa"] .schedule {
    padding: 4px !important;
    overflow-x: hidden !important;
    overflow-y: visible !important;
  }
  html[data-cadprof-platform="ios-pwa"] .schedule-grid {
    width: 100% !important;
    min-width: 0 !important;
    grid-template-columns: 36px repeat(5,minmax(0,1fr)) !important;
    border-radius: 9px !important;
  }
  html[data-cadprof-platform="ios-pwa"] .schedule-grid > .schedule-row,
  html[data-cadprof-platform="ios-pwa"] .schedule-row {
    width: 100% !important;
    min-width: 0 !important;
    grid-template-columns: 36px repeat(5,minmax(0,1fr)) !important;
    min-height: 46px !important;
  }
  html[data-cadprof-platform="ios-pwa"] .schedule-corner,
  html[data-cadprof-platform="ios-pwa"] .schedule-day {
    min-width: 0 !important;
    padding: 6px 1px !important;
    font-size: 7px !important;
    letter-spacing: 0 !important;
  }
  html[data-cadprof-platform="ios-pwa"] .schedule-time {
    min-width: 0 !important;
    padding: 7px 1px !important;
    font-size: 7px !important;
  }
  html[data-cadprof-platform="ios-pwa"] .schedule-cell {
    min-width: 0 !important;
    min-height: 46px !important;
    padding: 2px !important;
    overflow: hidden !important;
  }
  html[data-cadprof-platform="ios-pwa"] .schedule-cell article,
  html[data-cadprof-platform="ios-pwa"] .schedule-card {
    min-width: 0 !important;
    min-height: 41px !important;
    padding: 4px 2px !important;
    border-left-width: 2px !important;
    border-radius: 5px !important;
    overflow: hidden !important;
  }
  html[data-cadprof-platform="ios-pwa"] .schedule-card-main,
  html[data-cadprof-platform="ios-pwa"] .schedule-card-main strong,
  html[data-cadprof-platform="ios-pwa"] .schedule-card-main span,
  html[data-cadprof-platform="ios-pwa"] .schedule-card-main small {
    min-width: 0 !important;
    max-width: 100% !important;
  }
  html[data-cadprof-platform="ios-pwa"] .schedule-cell strong {
    font-size: 8px !important;
    line-height: 1.08 !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
  }
  html[data-cadprof-platform="ios-pwa"] .schedule-cell span {
    margin-top: 1px !important;
    font-size: 6.5px !important;
    line-height: 1.08 !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
  }
  html[data-cadprof-platform="ios-pwa"] .schedule-cell small {
    display: none !important;
  }
  html[data-cadprof-platform="ios-pwa"] .schedule-card-actions { display: none !important; }
}

@media screen and (max-width: 390px) {
  html[data-cadprof-platform="ios-pwa"] .cadprof-mobile-title { font-size: 15px !important; }
  html[data-cadprof-platform="ios-pwa"] .cadprof-mobile-menu-label { max-width: 116px !important; font-size: 10px !important; }
  html[data-cadprof-platform="ios-pwa"] .academic-year-switcher,
  html[data-cadprof-platform="ios-pwa"] .academic-year-switcher select { width: 82px !important; min-width: 82px !important; max-width: 82px !important; }
  html[data-cadprof-platform="ios-pwa"] .schedule-grid,
  html[data-cadprof-platform="ios-pwa"] .schedule-grid > .schedule-row,
  html[data-cadprof-platform="ios-pwa"] .schedule-row { grid-template-columns: 32px repeat(5,minmax(0,1fr)) !important; }
  html[data-cadprof-platform="ios-pwa"] .schedule-cell strong { font-size: 7.5px !important; }
  html[data-cadprof-platform="ios-pwa"] .schedule-cell span { font-size: 6px !important; }
}

/* ===== CadProf PWA v0.12 · scroll móvel isolado + cabeçalho persistente =====
   No iPhone, o viewport deixa de ser o contentor de scroll. O cabeçalho fica
   sempre visível e apenas a área .content pode deslocar-se verticalmente.
   Com o menu compacto aberto, o conteúdo de fundo fica bloqueado; a sidebar
   continua a poder fazer o seu próprio scroll se a altura disponível exigir. */
@media screen and (max-width: 950px) {
  html[data-cadprof-platform="ios-pwa"],
  html[data-cadprof-platform="ios-pwa"] body,
  html[data-cadprof-platform="ios-pwa"] #root,
  html[data-cadprof-platform="ios-pwa"] .app-shell {
    width: 100% !important;
    height: 100% !important;
    height: 100dvh !important;
    min-height: 0 !important;
    overflow: hidden !important;
    overscroll-behavior: none !important;
  }

  html[data-cadprof-platform="ios-pwa"] .workspace {
    width: 100% !important;
    height: 100% !important;
    height: 100dvh !important;
    min-height: 0 !important;
    overflow: hidden !important;
  }

  html[data-cadprof-platform="ios-pwa"] .topbar {
    position: fixed !important;
    z-index: 80 !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    width: 100% !important;
    transform: translateZ(0);
    -webkit-transform: translateZ(0);
  }

  html[data-cadprof-platform="ios-pwa"] .content {
    box-sizing: border-box !important;
    height: calc(100dvh - (106px + env(safe-area-inset-top))) !important;
    max-height: calc(100dvh - (106px + env(safe-area-inset-top))) !important;
    margin-top: calc(106px + env(safe-area-inset-top)) !important;
    overflow-x: hidden !important;
    overflow-y: auto !important;
    overscroll-behavior-x: none !important;
    overscroll-behavior-y: contain !important;
    -webkit-overflow-scrolling: touch !important;
    touch-action: pan-y !important;
  }

  html[data-cadprof-platform="ios-pwa"] .sidebar {
    z-index: 90 !important;
    overscroll-behavior: contain !important;
    overscroll-behavior-y: contain !important;
    touch-action: pan-y !important;
  }

  /* Se o menu está aberto, o painel que está por trás deixa de receber
     deslocação. Isto impede o scroll fantasma quando o dedo percorre ícones. */
  html[data-cadprof-platform="ios-pwa"].cadprof-mobile-menu-open .content {
    overflow: hidden !important;
    touch-action: none !important;
  }
}

/* O mesmo princípio em iPhone/iPad pequeno em paisagem. */
@media screen and (max-width: 950px) and (orientation: landscape) {
  html[data-cadprof-platform="ios-pwa"] .content {
    height: calc(100dvh - (106px + env(safe-area-inset-top))) !important;
    max-height: calc(100dvh - (106px + env(safe-area-inset-top))) !important;
    margin-top: calc(106px + env(safe-area-inset-top)) !important;
  }
}


/* ===== CadProf PWA v0.13 · mecanismo táctil V14 validado em iPhone =====
   Mantém o cabeçalho fora do contentor de scroll e bloqueia qualquer pan
   iniciado na barra lateral. Os botões continuam a receber taps/cliques
   normais; apenas o gesto de deslocação é recusado pelo CSS. */
@media screen and (max-width: 950px) {
  html[data-cadprof-platform="ios-pwa"],
  html[data-cadprof-platform="ios-pwa"] body,
  html[data-cadprof-platform="ios-pwa"] #root,
  html[data-cadprof-platform="ios-pwa"] .app-shell,
  html[data-cadprof-platform="ios-pwa"] .workspace {
    height: 100dvh !important;
    min-height: 0 !important;
    overflow: hidden !important;
    overscroll-behavior: none !important;
  }

  html[data-cadprof-platform="ios-pwa"] .topbar {
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    z-index: 100 !important;
    transform: translateZ(0) !important;
    -webkit-transform: translateZ(0) !important;
  }

  html[data-cadprof-platform="ios-pwa"] .content {
    height: calc(100dvh - (106px + env(safe-area-inset-top))) !important;
    max-height: calc(100dvh - (106px + env(safe-area-inset-top))) !important;
    margin-top: calc(106px + env(safe-area-inset-top)) !important;
    overflow-x: hidden !important;
    overflow-y: auto !important;
    overscroll-behavior: none !important;
    -webkit-overflow-scrolling: touch !important;
    touch-action: pan-y !important;
  }

  /* V14: os 11 módulos cabem no rail. A barra não precisa de scroll.
     touch-action:none impede o Safari de encaminhar um arrasto para .content. */
  html[data-cadprof-platform="ios-pwa"] .sidebar,
  html[data-cadprof-platform="ios-pwa"] .main-nav,
  html[data-cadprof-platform="ios-pwa"] .main-nav button,
  html[data-cadprof-platform="ios-pwa"] .nav-icon {
    overscroll-behavior: none !important;
    touch-action: none !important;
  }
  html[data-cadprof-platform="ios-pwa"] .sidebar {
    z-index: 110 !important;
    overflow: hidden !important;
    -webkit-overflow-scrolling: auto !important;
  }

  /* Enquanto o menu está aberto, o conteúdo é literalmente inerte. */
  html[data-cadprof-platform="ios-pwa"].cadprof-mobile-menu-open .content {
    overflow: hidden !important;
    -webkit-overflow-scrolling: auto !important;
    touch-action: none !important;
    pointer-events: none !important;
  }

  /* O botão ☰ continua acima do menu para permitir fechar pelo mesmo controlo. */
  html[data-cadprof-platform="ios-pwa"] .cadprof-mobile-menu-button {
    z-index: 125 !important;
    touch-action: manipulation !important;
  }

  /* Identificação discreta da release em Gestão. */
  html[data-cadprof-platform="ios-pwa"] .cadprof-release-info {
    margin-top: 4px !important;
    padding: 11px 13px !important;
    border: 1px solid var(--line) !important;
    border-radius: 11px !important;
    background: color-mix(in srgb, var(--surface) 94%, var(--canvas)) !important;
    color: var(--muted) !important;
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 10px !important;
    flex-wrap: wrap !important;
    font-size: 10px !important;
    line-height: 1.35 !important;
  }
  html[data-cadprof-platform="ios-pwa"] .cadprof-release-info strong {
    color: var(--ink) !important;
    font-size: 10px !important;
  }
  html[data-cadprof-platform="ios-pwa"] .cadprof-release-lock {
    min-height: 30px !important;
    padding: 5px 9px !important;
    border: 1px solid var(--line) !important;
    border-radius: 8px !important;
    background: var(--surface) !important;
    color: var(--ink) !important;
    font-size: 10px !important;
  }
}


/* ===== CadProf PWA v0.14 · cabeçalho iPhone mais compacto =====
   O ano letivo usa a forma 2026/27 e o estado de sincronização passa a ser
   um indicador pequeno. Mantém-se a segunda linha apenas quando existe
   seletor de turma, evitando espaço vazio na Gestão antes de haver turmas. */
@media screen and (max-width: 950px) {
  html[data-cadprof-platform="ios-pwa"] .topbar-left {
    right: max(10px, env(safe-area-inset-right)) !important;
  }
  html[data-cadprof-platform="ios-pwa"] .academic-year-switcher,
  html[data-cadprof-platform="ios-pwa"] .academic-year-switcher select {
    width: 72px !important;
    min-width: 72px !important;
    max-width: 72px !important;
  }
  html[data-cadprof-platform="ios-pwa"] .academic-year-switcher select {
    padding-left: 7px !important;
    padding-right: 18px !important;
    font-size: 11px !important;
    font-weight: 750 !important;
  }
  html[data-cadprof-platform="ios-pwa"] .sync-pill {
    position: absolute !important;
    top: calc(11px + env(safe-area-inset-top)) !important;
    right: max(90px, calc(env(safe-area-inset-right) + 90px)) !important;
    width: 30px !important;
    min-width: 30px !important;
    height: 30px !important;
    min-height: 30px !important;
    padding: 0 !important;
    border-radius: 9px !important;
    display: grid !important;
    place-items: center !important;
    z-index: 9 !important;
  }
  html[data-cadprof-platform="ios-pwa"] .sync-pill .pulse {
    width: 8px !important;
    height: 8px !important;
    min-width: 8px !important;
    margin: 0 !important;
  }
  html[data-cadprof-platform="ios-pwa"] .topbar-actions:not(:has(.class-switcher)) {
    height: 0 !important;
    min-height: 0 !important;
    overflow: visible !important;
  }
  html[data-cadprof-platform="ios-pwa"] .topbar:not(:has(.class-switcher)) {
    min-height: calc(58px + env(safe-area-inset-top)) !important;
    height: calc(58px + env(safe-area-inset-top)) !important;
    padding-bottom: 6px !important;
  }
  html[data-cadprof-platform="ios-pwa"] .workspace:not(:has(.class-switcher)) .content {
    height: calc(100dvh - (58px + env(safe-area-inset-top))) !important;
    max-height: calc(100dvh - (58px + env(safe-area-inset-top))) !important;
    margin-top: calc(58px + env(safe-area-inset-top)) !important;
  }
  html[data-cadprof-platform="ios-pwa"] .app-shell:not(:has(.class-switcher)) .sidebar {
    top: calc(58px + env(safe-area-inset-top)) !important;
  }
}

@media screen and (max-width: 390px) {
  html[data-cadprof-platform="ios-pwa"] .academic-year-switcher,
  html[data-cadprof-platform="ios-pwa"] .academic-year-switcher select {
    width: 68px !important;
    min-width: 68px !important;
    max-width: 68px !important;
  }
  html[data-cadprof-platform="ios-pwa"] .sync-pill {
    right: max(84px, calc(env(safe-area-inset-right) + 84px)) !important;
  }
}
