/* N-Serviços: sistema visual para a página principal e serviços. */
:root { --navy:#073349; --navy-dark:#052637; --blue:#086bdc; --muted:#536878; --soft:#f4f7fa; --line:#d9e3eb; --container:1280px; }
body { font-family:Arial,Helvetica,ui-sans-serif,sans-serif; font-size:16px; line-height:1.7; }
.container { width:min(var(--container),calc(100% - 80px)); }
h1,h2,h3 { text-wrap:balance; }
p { text-wrap:pretty; }
h2 { font-size:clamp(2rem,3.5vw,3.4rem); letter-spacing:-.045em; line-height:1.1; }
.section { padding-block:100px; }
.eyebrow { font-size:.75rem; letter-spacing:.12em; margin-bottom:20px; }
.button { font-size:.9375rem; min-height:54px; border-radius:6px; padding:15px 23px; box-shadow:none; }
.button:hover { transform:translateY(-1px); }
.text-link,.service-link,.service-page-link { font-size:.875rem; }
.topbar { font-size:.8125rem; background:var(--navy-dark); }
.topbar-inner { min-height:38px; }
.header-inner { height:88px; }
.brand-text { font-size:28px; }
.brand-text>span { font-size:9px; letter-spacing:.06em; }
.main-nav { gap:22px; }
.main-nav>a:not(.button) { font-size:.875rem; }
.header-cta { font-size:.875rem; min-height:46px; padding:12px 18px; }
.hero { background:var(--navy-dark); padding-block:82px; color:white; }
.hero-grid { grid-template-columns:1fr 1.05fr; gap:64px; }
.hero .eyebrow { color:#a8cfff; }
.hero h1 { color:white; font-size:clamp(2.75rem,4.65vw,4.5rem); line-height:1.08; letter-spacing:-.05em; margin:0 0 28px; }
.hero .text-blue { color:#83baff; }
.hero-description { color:#d0dee7; font-size:1.0625rem; line-height:1.8; margin-bottom:30px; }
.hero .button-outline { background:transparent; color:white; border-color:#688394; }
.hero .button-outline:hover { background:#173e53; border-color:#aac9df; }
.hero-discover { color:#d9e7ef; font-size:.875rem; margin-top:20px; }
.hero-note { display:none; }
.hero-coverage { display:flex; gap:13px; align-items:flex-start; border-top:1px solid #335163; margin-top:28px; padding-top:23px; color:#b8cbd8; font-size:.8125rem; line-height:1.65; }
.hero-coverage .icon { color:#8bbfff; width:20px; height:20px; margin-top:4px; }
.hero-coverage strong { display:block; color:white; font-size:.9375rem; margin-bottom:4px; }
.hero-project { padding:0; border-radius:8px; overflow:hidden; border:1px solid #3a5261; box-shadow:0 24px 50px -25px #0009; }
.hero-project-top { padding:18px 22px; font-size:.75rem; letter-spacing:.08em; background:#fff; color:#536878; }
.project-status { font-size:.75rem; color:#536878; }
.project-status::before { display:none; }
.hero-project-photo { border-radius:0; }
.hero-project-photo img { display:block; width:100%; height:auto; }
.hero-project-caption { padding:26px 22px; background:white; display:block; }
.project-category { font-size:.75rem; letter-spacing:.07em; }
.hero-project-caption strong { font-size:1.5rem; margin-bottom:12px; }
.hero-project-caption>a { font-size:.875rem; min-height:30px; }
.intro-strip { background:white; }
.intro-grid { padding-block:28px; gap:24px; grid-template-columns:repeat(3,minmax(0,1fr)); }
.intro-item { padding-inline:20px; gap:15px; }
.intro-item strong { font-size:.9375rem; line-height:1.5; }
.intro-item span { font-size:.875rem; }
.section-heading { margin-bottom:40px; align-items:end; }
.section-heading>p { font-size:1rem; max-width:370px; }
.works { background:#edf2f6; }
.works-grid { grid-template-columns:repeat(3,minmax(0,1fr)); gap:28px; }
.work-card { border:0; border-radius:7px; box-shadow:0 6px 20px #0a304509; }
.work-image { background:white; }
.work-image img { object-fit:contain; }
.work-copy { padding:25px; }
.work-order { font-size:.75rem; letter-spacing:.035em; color:#506575; }
.work-copy h3 { font-size:1.375rem; }
.work-copy p { font-size:1rem; }
.work-zoom { font-size:.8125rem; border-radius:4px; }
.filter-button { font-size:.875rem; border-radius:4px; min-height:45px; }
.works-bottom { border-top:1px solid #d0dce5; margin-top:35px; padding-top:25px; }
.service-directory { gap:0; border-bottom:1px solid var(--line); padding-bottom:0; margin-bottom:36px; }
.service-directory a { border:0; border-bottom:3px solid transparent; background:transparent; border-radius:0; min-height:55px; font-size:.875rem; padding:13px 20px; }
.service-directory a:hover { border-bottom-color:var(--blue); background:#f2f7fd; }
.service-grid { gap:0; border:1px solid var(--line); border-radius:8px; overflow:hidden; }
.service-card { border:0; border-right:1px solid var(--line); border-radius:0; padding:34px; box-shadow:none; }
.service-card:last-child { border-right:0; }
.service-card::before { display:none; }
.service-card:hover { box-shadow:none; background:#f8fbff; }
.service-card h3 { font-size:1.75rem; }
.service-card>p { font-size:1rem; min-height:0; }
.service-card .check-list li { font-size:.875rem; }
.service-icon { border-radius:6px; }
.service-details summary { font-size:.875rem; }
.service-details p { font-size:1rem; }
.service-details .detail-note { font-size:.875rem; }
.material-preview { border-radius:5px; font-size:.875rem; }
.catalogue-heading h3 { font-size:clamp(1.75rem,3vw,2.5rem); }
.catalogue-heading>p:not(.eyebrow) { font-size:1rem; }
.offer-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px; }
.offer-card { display:grid; grid-template-columns:165px minmax(0,1fr); border-radius:7px; box-shadow:none; }
.offer-image { aspect-ratio:auto; min-height:100%; border-right:1px solid var(--line); background:#f0f5f9; display:flex; align-items:center; }
.offer-image img { width:100%; height:auto; object-fit:contain; }
.offer-zoom { font-size:.75rem; bottom:10px; left:10px; }
.offer-copy { padding:26px; }
.offer-icon { margin-bottom:13px; }
.offer-copy h3 { font-size:1.375rem; }
.offer-copy>p { font-size:1rem; min-height:0; }
.offer-actions { display:flex; flex-wrap:wrap; gap:4px 20px; }
.offer-actions>a { font-size:.875rem; }
.about-grid { gap:70px; }
.about-identity { border-radius:6px; box-shadow:none; }
.identity-bottom { font-size:.75rem; }
.about-copy>p:not(.eyebrow) { font-size:1rem; }
.about-values>div { font-size:.875rem; }
.technology { background:var(--navy-dark); }
.technology .section-heading>p { font-size:1rem; }
.tech-grid { gap:28px; align-items:stretch; }
.tech-card { border-radius:8px; }
.tech-visual { height:360px; aspect-ratio:auto; background:#f5f8fb; }
.tech-visual img { height:100%; width:100%; object-fit:contain; }
.tech-content { padding:36px; }
.tech-content h3 { font-size:2rem; }
.tech-category { font-size:.75rem; }
.tech-content>p:not(.tech-note) { font-size:1rem; }
.tech-content .check-list li { font-size:.875rem; }
.tech-note,.tech-caption { font-size:.875rem; }
.brand-section { background:white; }
.brand-grid { grid-template-columns:.8fr 1.2fr; gap:65px; }
.brand-story>p:not(.eyebrow) { font-size:1rem; }
.brand-materials { border-radius:6px; border:1px solid var(--line); box-shadow:none; }
.additional-services>a { border-radius:0; border:0; border-bottom:1px solid var(--line); background:transparent; padding-inline:0; max-width:100%; font-size:1rem; }
.process { background:var(--soft); }
.process-grid { gap:0; border-top:1px solid #bccedb; }
.process-step { background:transparent; padding:30px 24px 0 0; border:0; border-radius:0; }
.process-step h3 { font-size:1.25rem; }
.process-step p { font-size:1rem; }
.step-number { color:var(--blue); font-size:2rem; }
.step-number>span { display:none; }
.callout-inner { padding-block:70px; }
.callout-inner h2 { font-size:clamp(2rem,4vw,3.5rem); }
.callout-sms { font-size:.875rem; }
.faq-list summary { font-size:1rem; padding-block:25px; }
.faq-list p,.faq-heading>p:not(.eyebrow) { font-size:1rem; }
.location-section { background:#edf3f7; }
.location-grid>div:first-child>p:not(.eyebrow) { font-size:1rem; }
.location-card { border-radius:7px; padding:42px; }
.location-card>p { font-size:.9375rem; }
.location-country { font-size:.875rem; }
.contact { background:white; }
.contact-copy>p:not(.eyebrow):not(.contact-area):not(.operator-note) { font-size:1rem; }
.contact-area { font-size:.9375rem; }
.contact-utilities a,.contact-utilities button { font-size:.875rem; }
.contact-label,.phone-country,.operator-note { font-size:.8125rem; }
.quote-card { background:#f5f8fb; border-radius:8px; padding:36px; box-shadow:none; }
.quote-card h3 { font-size:1.625rem; }
.quote-card-head p,.field label { font-size:.875rem; }
.field input,.field select,.field textarea { background:white; }
.field-meta,.form-note,.sms-fallback { font-size:.8125rem; }
.footer-services { font-size:.875rem; }
.footer-bottom { font-size:.8125rem; }
.service-hero { background:var(--navy-dark); color:white; }
.service-hero h1 { color:white; font-size:clamp(2.25rem,4.5vw,4rem); }
.service-hero .eyebrow,.service-hero .breadcrumbs { color:#aecfff; }
.service-hero-lead { color:#d2e0e8; }
.service-hero .button-outline { color:white; background:transparent; border-color:#6e899a; }
.service-hero-aside { background:white; color:var(--navy); border-radius:7px; }
.scope-card { border-radius:0; padding:30px; }
.scope-card p,.service-hero-aside>p { font-size:1rem; }
@media(min-width:1440px) { .hero { padding-block:100px; } }
@media(max-width:1100px) {
 .container { width:calc(100% - 48px); }
 .header-inner { gap:16px; } .main-nav { gap:14px; }
 .main-nav>a:not(.button) { font-size:.8125rem; } .header-cta { padding-inline:13px; }
 .hero-grid { gap:32px; } .hero h1 { font-size:3.125rem; }
 .service-card { padding:25px; } .offer-card { grid-template-columns:125px minmax(0,1fr); }
 .offer-copy { padding:23px; } .brand-grid,.contact-grid,.location-grid { gap:40px; }
}
@media(max-width:900px) {
 .main-nav>a:not(.button) { font-size:1rem; } .header-inner { height:78px; }
 .hero { padding-block:54px; } .hero-grid { grid-template-columns:1fr; gap:40px; }
 .hero-copy { max-width:660px; } .hero h1 { font-size:clamp(2.75rem,7vw,4rem); }
 .hero-description { max-width:590px; } .hero-project { width:100%; max-width:700px; }
 .hero-project-caption { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; }
 .hero-project-caption strong { margin-bottom:0; }
 .intro-grid { gap:18px; } .intro-item { padding-inline:8px; }
 .intro-item>.icon { display:none; }
 .works-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
 .offer-grid { grid-template-columns:1fr; } .offer-card { grid-template-columns:200px minmax(0,1fr); }
 .section { padding-block:72px; } .tech-visual { height:290px; }
 .tech-content { padding:27px; } .tech-content h3 { font-size:1.75rem; }
 .service-hero-grid { grid-template-columns:1fr; }
 .service-hero-aside { max-width:650px; width:100%; }
}
@media(max-width:640px) {
 .container { width:calc(100% - 36px); } .section { padding-block:56px; }
 .topbar { font-size:.75rem; } .topbar a { letter-spacing:0; } .top-dot { margin-inline:5px; }
 .brand-text { font-size:25px; } .brand-text>span { font-size:8px; }
 .hero { padding-block:44px; } .hero h1 { font-size:2.65rem; letter-spacing:-.045em; }
 .hero-description { font-size:1rem; } .hero-actions { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
 .hero-actions .button { padding-inline:12px; font-size:.875rem; }
 .hero-coverage { font-size:.8125rem; } .hero-project-top { padding:15px; font-size:.6875rem; }
 .hero-project-caption { display:block; padding:20px 18px; }
 .hero-project-caption strong { margin-bottom:9px; font-size:1.375rem; }
 .intro-grid { grid-template-columns:1fr; padding-block:22px; gap:18px; }
 .intro-item { border:0; padding:0; } .intro-item>.icon { display:block; width:22px; height:22px; }
 .section-heading { gap:18px; margin-bottom:28px; } .section-heading>p { width:auto; }
 .works-grid { grid-template-columns:1fr; gap:22px; } .work-copy { padding:22px; }
 .gallery-filters { gap:8px; } .filter-button { padding-inline:12px; font-size:.8125rem; }
 .service-directory { display:grid; grid-template-columns:1fr 1fr; }
 .service-directory a { justify-content:flex-start; padding:12px 9px; font-size:.8125rem; line-height:1.5; }
 .service-grid { grid-template-columns:1fr; } .service-card { padding:28px; border-right:0; border-bottom:1px solid var(--line); }
 .service-card:last-child { border-bottom:0; } .service-card>p { min-height:0; }
 .offer-card { grid-template-columns:1fr; } .offer-image { min-height:0; height:240px; border-right:0; border-bottom:1px solid var(--line); }
 .offer-image img { height:100%; object-fit:contain; } .offer-copy { padding:25px; }
 .extended-services { margin-top:40px; padding-top:40px; }
 .tech-grid,.brand-grid,.about-grid,.location-grid,.contact-grid { grid-template-columns:1fr; gap:35px; }
 .tech-visual { height:320px; } .tech-content { padding:25px; }
 .brand-materials { width:100%; } .brand-materials>.brand-photo { width:100%; height:auto; }
 .process-grid { grid-template-columns:1fr; gap:0; } .process-step { display:block; padding:25px 0; border-bottom:1px solid var(--line); }
 .step-number { margin-bottom:12px; } .process-step:last-child { border-bottom:0; }
 .callout-inner { padding-block:48px; } .callout-inner h2 { font-size:2.25rem; }
 .location-card,.quote-card { padding:26px; } .big-phone { font-size:2.25rem; letter-spacing:-.04em; white-space:normal; }
 .contact-actions { flex-wrap:wrap; } .contact-area { max-width:100%; }
 .quote-card h3 { font-size:1.4rem; } .field-meta { flex-wrap:wrap; }
 .footer-services>div { grid-template-columns:1fr 1fr; gap:15px; }
 .service-hero { padding-bottom:50px; } .service-hero h1 { font-size:2.5rem; letter-spacing:-.045em; }
 .service-hero-aside { padding:26px; } .scope-grid { grid-template-columns:1fr; }
}
@media(prefers-reduced-motion:reduce) { *,*::before,*::after { scroll-behavior:auto!important; transition:none!important; animation:none!important; } }
@media print { .hero,.service-hero { background:white; color:#073349; } .hero h1,.service-hero h1 { color:#073349; } .hero-description,.service-hero-lead { color:#536878; } .section { padding-block:25px; } }
/* Limites de leitura e de espaço em ecrãs compactos. */
.hero-copy,.offer-copy,.work-copy,.tech-content,.contact-copy,.quote-card { min-width:0; }
@media(max-width:900px) {
 .service-grid { grid-template-columns:1fr; }
 .service-card { border-right:0; border-bottom:1px solid var(--line); }
 .service-card:last-child { border-bottom:0; }
}
@media(max-width:640px) {
 .topbar-inner { flex-wrap:wrap; gap:5px 16px; padding-block:8px; }
 .topbar-location { flex-wrap:wrap; font-size:.75rem!important; }
 .topbar-inner>a { font-size:.75rem!important; }
 .hero-coverage span { min-width:0; }
}
