/* CMS — Canto, Medeiros e Sousa, Solicitadores
   Reset, tipografia base, keyframes de animação, classes de interação (hover)
   e responsivo. O grosso do layout de cada secção vive inline no HTML,
   espelhando fielmente o protótipo de referência (referencia/*.html). */

* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; background: #F6F4EF; }
/* O layout nunca precisa de scroll horizontal por design — rede de segurança
   contra overflow de sub-pixel (ex.: letter-spacing na cauda do texto).
   overflow-x:hidden ainda permite scrollTo() programático; clip bloqueia
   por completo, incluindo scroll forçado por JS. */
html { overflow-x: clip; }
body { font-family: 'Jost', sans-serif; color: #1C2140; -webkit-font-smoothing: antialiased; }
a { color: #B8933F; text-decoration: none; }
::selection { background: #C9A44E; color: #171E43; }
img { max-width: 100%; }
button, select, input, textarea { font-family: inherit; }

.site-shell { min-width: 1100px; background: #F6F4EF; }

/* ============ keyframes ============ */
@keyframes bookOpen { 0%, 30% { transform: rotateY(0deg); } 100% { transform: rotateY(-150deg); } }
@keyframes introFade { 0%, 78% { opacity: 1; } 100% { opacity: 0; } }
@keyframes pageFwd { from { transform: rotateY(0deg); } to { transform: rotateY(-150deg); } }
@keyframes pageBack { from { transform: rotateY(-150deg); } to { transform: rotateY(0deg); } }

/* ============ hover utility classes ============
   Necessárias porque estilos de hover não podem viver em atributos inline;
   a cor/estado base de cada uma replica exatamente o protótipo. */
.navlink { color: #EDEFF6; }
.navlink:hover { color: #C9A44E; }

.footerlink { color: #AEB4D2; }
.footerlink:hover { color: #C9A44E; }

.arrowlink { color: #96762F; }
.arrowlink:hover { color: #C9A44E; }

.langlink { color: #9AA2C4; }
.langlink:hover { color: #C9A44E; }

.creditlink { color: #B8933F; }
.creditlink:hover { color: #C9A44E; }

.btn-gold { background: #C9A44E; color: #171E43; }
.btn-gold:hover { background: #D8B565; color: #171E43; }

.btn-navy-1 { background: #1B2452; color: #F2ECD9; }
.btn-navy-1:hover { background: #2A3570; color: #F2ECD9; }

.btn-navy-2 { background: #171E43; color: #F2ECD9; }
.btn-navy-2:hover { background: #2A3570; color: #F2ECD9; }

.btn-outline-navy { border: 1px solid #1B2452; color: #1B2452; background: transparent; }
.btn-outline-navy:hover { background: #1B2452; color: #F2ECD9; }

.carousel-btn-outline { border: 1px solid #1B2452; background: transparent; color: #1B2452; }
.carousel-btn-outline:hover { background: #1B2452; color: #F2ECD9; }

.carousel-btn-solid { border: 1px solid #1B2452; background: #1B2452; color: #F2ECD9; }
.carousel-btn-solid:hover { background: #2A3570; color: #F2ECD9; }

.service-card-hover:hover { background: #171E43; }
.service-card-hover:hover .service-card-title { color: #F2ECD9; }
.service-card-hover:hover .service-card-desc { color: #C7CCE2; }
.service-card-hover:hover .service-card-num { color: #C9A44E; }

/* ============ intro / page-turn overlays ============ */
#intro-overlay {
  position: fixed; inset: 0; z-index: 9999; background: #12193B;
  display: flex; align-items: center; justify-content: center; cursor: pointer;
  animation: introFade 3.2s ease forwards;
}
#intro-overlay[hidden] { display: none; }
.intro-stage { position: absolute; inset: 0; perspective: 2800px; overflow: hidden; }
.intro-3d { position: absolute; inset: 0; transform-style: preserve-3d; }
.intro-back {
  position: absolute; inset: 0; background: #0E1430;
  border: 1px solid rgba(201,164,78,0.5); box-shadow: 0 30px 60px rgba(0,0,0,0.5);
}
.intro-inner-page {
  position: absolute; inset: 0; background: #F6F4EF;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 22px;
}
.intro-cover {
  position: absolute; inset: 0; transform-origin: left center;
  animation: bookOpen 2.6s cubic-bezier(0.65,0,0.35,1) forwards;
  background: linear-gradient(135deg, #1B2452, #12193B);
  border: 1px solid rgba(201,164,78,0.6);
  display: flex; align-items: center; justify-content: center;
  box-shadow: 0 10px 40px rgba(0,0,0,0.4);
}

#page-turn-overlay {
  position: fixed; inset: 0; z-index: 9998; perspective: 2800px; overflow: hidden;
  pointer-events: none; transition: opacity 0.25s ease;
}
#page-turn-overlay[hidden] { display: none; }
.page-leaf {
  position: absolute; inset: 0; transform-origin: left center;
  background: linear-gradient(90deg, #EFEBE1, #F6F4EF 12%);
  box-shadow: 0 0 60px rgba(0,0,0,0.35);
  border-left: 1px solid rgba(201,164,78,0.4);
  display: flex; align-items: center; justify-content: center;
}
.page-leaf span { backface-visibility: hidden; }
.page-leaf-fwd { animation-name: pageFwd; }
.page-leaf-back { animation-name: pageBack; }

/* ============ page views ============ */
.view { display: none; }
.view.is-active { display: block; }

/* [hidden] must win over any inline display:flex/block set on the same
   element (contact form/success swap, intro overlay, page-turn overlay) —
   inline styles otherwise out-rank the UA stylesheet's [hidden] rule. */
[hidden] { display: none !important; }

/* ============ mobile nav ============ */
.nav-toggle { display: none; }

/* ============ responsive ============ */
@media (max-width: 1100px) {
  .site-shell { min-width: 0; }

  .top-strip { flex-direction: column; align-items: flex-start; gap: 6px; padding: 10px 20px !important; }
  .top-strip-left { flex-wrap: wrap; gap: 12px !important; }

  header.site-header { padding: 16px 20px !important; }
  /* nav carrega style="display:flex" inline (layout desktop) — precisa de
     !important para o CSS conseguir escondê-lo por defeito em mobile. */
  header.site-header nav { display: none !important; position: absolute; top: 100%; left: 0; right: 0;
    background: #1B2452; flex-direction: column !important; align-items: flex-start !important;
    gap: 0 !important; padding: 8px 20px 20px; border-bottom: 1px solid rgba(201,164,78,0.35); }
  header.site-header nav.nav-open { display: flex !important; }
  header.site-header nav a { width: 100%; padding: 12px 0 !important; }
  .nav-toggle {
    display: flex; align-items: center; justify-content: center;
    flex: none; width: 40px; height: 40px; background: transparent;
    border: 1px solid rgba(201,164,78,0.5); color: #F2ECD9; font-size: 20px; cursor: pointer;
  }
  header.site-header a[data-nav="home"] span[style*="font-size:40px"] { font-size: 30px !important; }
  header.site-header a[data-nav="home"] span[style*="letter-spacing:0.3em"] { font-size: 11px !important; letter-spacing: 0.15em !important; }
  header.site-header a[data-nav="home"] span[style*="letter-spacing:0.42em"] { font-size: 9px !important; letter-spacing: 0.2em !important; }

  main section, .home-hero, .home-sobre, .home-servicos, .home-equipa,
  .home-testemunhos, .home-noticias, .home-cta,
  .sobre-hero, .sobre-content, .sobre-cta,
  .servicos-hero, .servicos-grid, .servicos-cta,
  .equipa-hero, .equipa-list,
  .noticias-hero, .noticias-grid,
  .contactos-hero, .contactos-grid,
  footer .footer-grid {
    padding-left: 20px !important; padding-right: 20px !important;
  }

  .home-hero { grid-template-columns: 1fr !important; }
  .home-hero-media { min-height: 320px !important; }
  .home-hero-copy { padding: 48px 20px !important; }
  .home-hero h1 { font-size: 38px !important; }

  section[style*="grid-template-columns:1fr 1fr 1fr"] { grid-template-columns: 1fr !important; }
  .home-sobre { grid-template-columns: 1fr !important; padding: 56px 20px !important; }
  .home-servicos .services-grid { grid-template-columns: 1fr 1fr !important; }
  .noticias-grid, .servicos-grid, .noticias-preview-grid { grid-template-columns: 1fr !important; }
  .contactos-grid { grid-template-columns: 1fr !important; }
  .sobre-content { grid-template-columns: 1fr !important; }
  .home-testemunhos .testimonial-grid { grid-template-columns: 1fr !important; }

  .equipa-slide { grid-template-columns: 1fr !important; }
  .equipa-slide img { width: 100% !important; height: 320px !important; }
  .equipa-list > div[style*="grid-template-columns:380px"] { grid-template-columns: 1fr !important; }
  .equipa-list img { width: 100% !important; height: 320px !important; }

  .home-cta, .sobre-cta, .servicos-cta { flex-direction: column !important; align-items: flex-start !important; gap: 20px; }

  footer .footer-grid { grid-template-columns: 1fr 1fr !important; row-gap: 32px; }
  footer .footer-bottom { flex-direction: column !important; align-items: flex-start !important; gap: 8px; }

  /* Cartões de texto (grid/flex) não encolhem abaixo do seu conteúdo mínimo
     por definição — sem isto, títulos longos empurram a página para scroll
     horizontal em ecrãs estreitos. */
  .services-grid > div, .noticias-preview-grid > a, .noticias-grid > div,
  .testimonial-grid > div, .contactos-grid > div, .sobre-content > div,
  footer .footer-grid > div, .equipa-slide, .equipa-slide > div,
  .equipa-list > div, .equipa-list > div > div {
    min-width: 0;
  }
}

@media (max-width: 640px) {
  .home-hero h1 { font-size: 30px !important; }
  .home-servicos .services-grid { grid-template-columns: 1fr !important; }
  footer .footer-grid { grid-template-columns: 1fr !important; }
  .intro-cover span[style*="font-size:170px"] { font-size: 96px !important; }
  .intro-inner-page span[style*="font-size:120px"] { font-size: 70px !important; }
  section[style*="padding:56px"] { flex-direction: column; align-items: flex-start !important; gap: 20px; }
}

/* ============ reduced motion ============ */
@media (prefers-reduced-motion: reduce) {
  #intro-overlay, .intro-cover, .page-leaf { animation: none !important; }
  #page-turn-overlay { transition: none !important; }
  * { transition-duration: 0.01ms !important; }
}
