/* Luís Valente 360° · V45 · Prioridade à experiência móvel (PT/EN).
   Ficheiro adicional, carregado depois dos estilos das versões anteriores.
   Mantém as páginas desktop, texto e funcionalidades existentes. */
:root { --lv45-focus:#b18140; --lv45-mobile-gap:16px; }
html { scroll-padding-top:90px; }
/* Proteção contra overflow causado por conteúdo longo ou componentes em grelha. */
:where(.wrap,.article,main,main section,.lv44-card,.lv29-card,.tool-panel,.diag-group,.lv15-form-panel,.field) { min-width:0; }
:where(main p,main li,main h1,main h2,main h3,main .card,main .lv44-card){ overflow-wrap:break-word; }
/* Tabelas: zona de scroll horizontal acessível por teclado e leitores de ecrã. */
.lv45-table-scroll { display:block; width:100%;max-width:100%;overflow-x:auto;overflow-y:hidden;
  -webkit-overflow-scrolling:touch;overscroll-behavior-inline:contain;
  border:1px solid #d4e0e6;border-radius:12px;background:#fff;
  scrollbar-width:thin;scrollbar-color:#7994a5 #e8eef1; }
.lv45-table-scroll table { margin:0; width:100%;min-width:100%;border-collapse:collapse; }
.lv45-table-scroll th,.lv45-table-scroll td { text-align:left;vertical-align:top;overflow-wrap:normal; }
.lv45-table-scroll:focus-visible { outline:3px solid var(--lv45-focus);outline-offset:3px; }
.lv45-table-hint { display:none; margin:.45rem 0 1.25rem; color:#3d5564;font-size:.9rem;line-height:1.4; }
.lv45-table-group.lv45-has-overflow .lv45-table-hint { display:block; }
@media(max-width:767px){
  /* Cabeçalho compacto e sempre acessível; navegação aberta com scroll interno. */
  .lv41-header { position:sticky;top:0;z-index:150;box-shadow:0 3px 14px rgba(9,24,38,.12); }
  .lv41-header .navinner { grid-template-columns:minmax(0,1fr) auto auto;
    gap:7px 9px;padding:7px 0;align-items:center; }
  .lv41-header .navinner>.brand-logo img { display:block;width:min(168px,40vw);max-height:46px;object-fit:contain;object-position:left center; }
  .lv41-header .navinner>.lang-switch { display:flex;gap:3px; }
  .lv41-header .navinner>.lang-switch a { display:inline-flex;align-items:center;justify-content:center;
    min-width:36px;min-height:42px;padding:5px 6px;font-size:.85rem; }
  .lv41-header .navinner>.lv41-menu-toggle { min-width:46px;min-height:46px;border-radius:10px; }
  .lv41-header .navinner>.lv41-primary.lv41-is-open { max-height:calc(100dvh - 82px);
    max-height:calc(100vh - 82px);overflow-y:auto;overscroll-behavior:contain;
    scrollbar-width:thin;padding-bottom:12px; }
  @supports (height:100dvh){
    .lv41-header .navinner>.lv41-primary.lv41-is-open { max-height:calc(100dvh - 82px); }
  }
  .lv41-primary .lv41-main-link,.lv41-primary .lv41-dropdown>summary { min-height:48px; }
  .lv41-dropdown-panel a { min-height:46px; }
  .lv41-header a:focus-visible,.lv41-header button:focus-visible,.lv41-header summary:focus-visible { outline:3px solid #f0ce97;outline-offset:2px; }
  /* Hierarquia de leitura e espaçamento com limites proporcionais ao ecrã. */
  .wrap { width:calc(100% - 32px); }
  .section { padding-block:clamp(34px,9vw,52px); }
  main .hero { padding-block:clamp(36px,8vw,54px); }
  main .hero h1 { font-size:clamp(1.9rem,8.1vw,2.7rem);line-height:1.15;letter-spacing:-.025em; }
  main .hero p { font-size:1.04rem;line-height:1.58; }
  main .eyebrow { letter-spacing:.09em;line-height:1.45; }
  main .section h2 { font-size:clamp(1.6rem,6vw,2.1rem);line-height:1.23; }
  :is(.cards,.guide-grid,.case-grid,.business-index,.business-steps,.values-grid,.diag-result-grid,.diag-form-grid,.tool-grid,.diag-layout,.lv15-form-two) { grid-template-columns:minmax(0,1fr); }
  /* Fotografia da homepage mais baixa e enquadrada, após a proposta e o contacto. */
  .lv-home-v15 .lv15-hero.lv42-hero { padding-block:32px 34px; }
  .lv-home-v15 .lv15-hero.lv42-hero .hero-grid { gap:22px; }
  .lv-home-v15 .lv15-hero.lv42-hero .lv42-hero-photo { width:min(100%,420px);max-height:220px;
    aspect-ratio:16 / 10;margin-inline:auto;border-radius:14px; }
  .lv-home-v15 .lv15-hero.lv42-hero .lv42-hero-photo img { object-fit:cover;object-position:center 29%; }
  .lv-home-v15 .lv15-hero.lv42-hero .lv42-actions .button { min-height:52px;
    width:100%;display:inline-flex;align-items:center;justify-content:center;white-space:normal;text-align:center;line-height:1.4; }
  .lv-home-v15 .lv15-hero.lv42-hero .lv42-trust { margin-top:1rem;padding-top:.95rem; }
  /* Botões e ações que levam a serviços/contacto: alvos confortáveis. */
  main :is(.button,.lv44-method-cta,.lv29-link,.lv44-card-action,.lv16-form-action) { min-height:48px;
    align-items:center;justify-content:center;text-align:center;line-height:1.4; }
  main :is(.heroactions,.commercial-actions,.lv18-actions,.nativa-guide-actions) { gap:10px; }
  main :is(.lv44-card,.card,.tool-panel,.diag-group,.lv15-form-panel) { max-width:100%; }
  main :is(.lv44-card,.card,.tool-panel,.diag-group) { padding:clamp(17px,4.3vw,24px); }
  /* Formulários de contacto, guias e diagnóstico, sem zoom automático no iOS. */
  main form { max-width:100%;min-width:0; }
  main form :is(.field,.lv15-form-two,.diag-form-grid) { min-width:0; }
  main form :is(input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),textarea,select) {
    display:block; width:100%;max-width:100%;min-width:0;min-height:48px;
    font-size:16px;line-height:1.45;padding:11px 13px;border-radius:9px; }
  main form textarea { min-height:124px;resize:vertical; }
  main form label { line-height:1.45; }
  main form .field { gap:7px; }
  main form .check { display:flex;align-items:flex-start;gap:12px; }
  main form input[type="checkbox"],main form input[type="radio"] {
    flex:0 0 auto;width:21px;height:21px;min-height:21px;margin-top:3px;accent-color:#173e55; }
  main form :is(button[type="submit"],input[type="submit"]) { width:100%;max-width:100%;min-height:50px;
    font-size:1rem;line-height:1.4;padding:12px 15px;border-radius:10px;white-space:normal; }
  main :is(input,select,textarea,button):focus-visible { outline:3px solid var(--lv45-focus);outline-offset:2px; }
  .lv15-contact-grid,.lv15-contact-copy,.lv15-form-panel { min-width:0; }
  /* Calculadoras, KPIs e diagnósticos: números legíveis, sem cortes. */
  .tool-metric { flex-wrap:wrap; }
  .tool-metric strong,.tool-result strong,.diag-need strong { overflow-wrap:anywhere; }
  .diag-options label { min-height:44px;display:inline-flex;align-items:center;gap:7px; }
  .diag-options { gap:9px; }
  /* Acesso em tabelas: só exige arrastar quando o conteúdo excede o ecrã. */
  .lv45-table-scroll { margin-top:16px; }
  .lv45-table-scroll table { width:max-content;min-width:100%;font-size:.91rem; }
  .lv45-table-scroll td,.lv45-table-scroll th { padding:11px 13px;min-width:135px; }
  .lv45-table-scroll table:not(.case-facts) tr>*:first-child { min-width:175px; }
  .lv45-table-scroll .case-facts tr>*:first-child { min-width:190px; }
  /* Rodapé com alvos separados e links de leitura simples. */
  .footerline { gap:12px 22px; }
  .footerline a { display:inline-block; padding:5px 0; }
}
@media(max-width:360px){
  .wrap { width:calc(100% - 24px); }
  .lv41-header .navinner { gap:5px; }
  .lv41-header .navinner>.brand-logo img { width:min(142px,36vw); }
  .lv41-header .navinner>.lang-switch a { min-width:33px;padding-inline:5px; }
  main .hero h1 { font-size:1.88rem; }
}
@media(prefers-reduced-motion:reduce){
 html { scroll-behavior:auto; }
}
/* Ajustes validados em pré-visualização nas larguras de 320 e 390 px. */
.lv45-table-group { contain:layout paint; overflow:hidden; }
.lv45-table-scroll:focus-visible { outline:3px solid var(--lv45-focus);outline-offset:-3px; }
@media(max-width:767px){
 .diag-home .diag-teaser { width:100%;min-width:0; }
 .diag-home .diag-mini-grid { grid-template-columns:minmax(0,1fr); }
}

/* V46: tablet menu breakpoint matches the 960px navigation behaviour. */
@media (min-width:768px) and (max-width:960px){
 .lv41-header .navinner>.lv41-primary.lv41-is-open{max-height:calc(100vh - 90px);max-height:calc(100dvh - 90px);overflow-y:auto;overscroll-behavior:contain}
 .lv41-primary .lv41-main-link,.lv41-primary .lv41-dropdown>summary{min-height:46px}
 .lv41-dropdown-panel a{min-height:44px}
 .lv41-header a:focus-visible,.lv41-header button:focus-visible,.lv41-header summary:focus-visible{outline:3px solid #f0ce97;outline-offset:2px}
}
