{"id":499,"date":"2025-03-29T10:40:35","date_gmt":"2025-03-29T10:40:35","guid":{"rendered":"https:\/\/zakrademos.com\/freedom\/?page_id=8"},"modified":"2026-06-29T21:48:26","modified_gmt":"2026-06-29T21:48:26","slug":"home","status":"publish","type":"page","link":"https:\/\/viportas.pt\/","title":{"rendered":"Home"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"499\" class=\"elementor elementor-499\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c3658d5 e-con-full e-flex e-con e-parent\" data-id=\"c3658d5\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8456c41 elementor-widget elementor-widget-html\" data-id=\"8456c41\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t\n<!DOCTYPE html>\n<html lang=\"pt\">\n<head>\n  <meta charset=\"UTF-8\" \/>\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\/>\n  <title>Viportas \u2014 Port\u00f5es, Automatismos e Assist\u00eancia T\u00e9cnica<\/title>\n  <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Barlow+Condensed:wght@400;600;700;900&family=Inter:wght@300;400;500;600&display=swap\" rel=\"stylesheet\"\/>\n  <style>\n    *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }\n\n    :root {\n      --petrol:   #1B3A4B;\n      --petrol-d: #122736;\n      --petrol-l: #2a5470;\n      --green:    #6ABF3E;\n      --green-d:  #52A030;\n      --white:    #FFFFFF;\n      --grey-100: #F5F6F8;\n      --grey-200: #E8EAEE;\n      --grey-400: #9AA3AF;\n      --grey-700: #3D4550;\n      --grey-900: #1A1D22;\n      --display:  'Barlow Condensed', sans-serif;\n      --body:     'Inter', sans-serif;\n      --radius:   6px;\n      --shadow:   0 4px 24px rgba(0,0,0,.10);\n      --shadow-h: 0 8px 40px rgba(0,0,0,.18);\n    }\n\n    html { scroll-behavior: smooth; }\n    body { font-family: var(--body); color: var(--grey-900); background: var(--white); overflow-x: hidden; }\n\n    \/* \u2500\u2500\u2500 TOPBAR \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    .topbar {\n      background: var(--petrol-d);\n      color: var(--grey-400);\n      font-size: .75rem;\n      letter-spacing: .04em;\n      padding: .45rem 0;\n    }\n    .topbar .inner {\n      max-width: 1200px; margin: 0 auto; padding: 0 2rem;\n      display: flex; justify-content: space-between; align-items: center;\n    }\n    .topbar a { color: var(--white); text-decoration: none; }\n    .topbar-right { display: flex; gap: 2rem; }\n\n    \/* \u2500\u2500\u2500 NAV \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    nav {\n      position: sticky; top: 0; z-index: 100;\n      background: var(--white);\n      border-bottom: 1px solid var(--grey-200);\n      box-shadow: 0 2px 12px rgba(0,0,0,.06);\n    }\n    .nav-inner {\n      max-width: 1200px; margin: 0 auto; padding: 0 2rem;\n      display: flex; align-items: center; justify-content: space-between;\n      height: 68px;\n    }\n    .logo {\n      font-family: var(--display);\n      font-size: 1.8rem; font-weight: 900; letter-spacing: .02em;\n      color: var(--petrol); text-decoration: none;\n    }\n    .logo span { color: var(--green); }\n    .nav-links { display: flex; gap: 2rem; list-style: none; }\n    .nav-links a {\n      font-size: .85rem; font-weight: 500; letter-spacing: .04em;\n      color: var(--grey-700); text-decoration: none; text-transform: uppercase;\n      transition: color .2s;\n    }\n    .nav-links a:hover { color: var(--petrol); }\n    .nav-cta {\n      background: var(--green); color: var(--white);\n      padding: .55rem 1.4rem; border-radius: var(--radius);\n      font-size: .85rem; font-weight: 600; text-decoration: none;\n      letter-spacing: .04em; text-transform: uppercase;\n      transition: background .2s;\n    }\n    .nav-cta:hover { background: var(--green-d); }\n\n    \/* \u2500\u2500\u2500 HERO \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    .hero {\n      min-height: 100vh;\n      background: linear-gradient(135deg, #0a0a0a 0%, #1a1a1a 60%, #111 100%);\n      display: flex; flex-direction: column; justify-content: center;\n      position: relative; overflow: hidden;\n    }\n    .hero::before {\n      content: '';\n      position: absolute; inset: 0;\n      background:\n        repeating-linear-gradient(\n          90deg,\n          transparent,\n          transparent 59px,\n          rgba(255,255,255,.03) 60px\n        ),\n        repeating-linear-gradient(\n          0deg,\n          transparent,\n          transparent 59px,\n          rgba(255,255,255,.03) 60px\n        );\n    }\n    .hero-accent {\n      position: absolute; right: 0; top: 0; bottom: 0;\n      width: 48%;\n      background: url('https:\/\/images.unsplash.com\/photo-1558618666-fcd25c85cd64?w=900&q=80') center\/cover no-repeat;\n      opacity: .18;\n    }\n    .hero-content {\n      position: relative; z-index: 2;\n      max-width: 1200px; margin: 0 auto; padding: 0 2rem;\n    }\n    .hero-eyebrow {\n      display: inline-flex; align-items: center; gap: .6rem;\n      background: rgba(255,255,255,.1);\n      border: 1px solid rgba(255,255,255,.15);\n      color: rgba(255,255,255,.8);\n      font-size: .75rem; font-weight: 600; letter-spacing: .12em;\n      text-transform: uppercase; padding: .4rem 1rem; border-radius: 2rem;\n      margin-bottom: 1.5rem;\n    }\n    .hero-eyebrow::before {\n      content: ''; width: 6px; height: 6px; border-radius: 50%;\n      background: var(--green); display: inline-block;\n    }\n    .hero h1 {\n      font-family: var(--display);\n      font-size: clamp(3rem, 7vw, 6.5rem);\n      font-weight: 900; line-height: .95;\n      color: var(--white); letter-spacing: -.01em;\n      max-width: 700px; margin-bottom: 1.5rem;\n      text-transform: uppercase;\n    }\n    .hero h1 em { color: var(--green); font-style: normal; }\n    .hero-sub {\n      font-size: 1.1rem; color: rgba(255,255,255,.7);\n      max-width: 480px; line-height: 1.6; margin-bottom: 2.5rem;\n    }\n    .hero-actions { display: flex; gap: 1rem; flex-wrap: wrap; }\n    .btn-primary {\n      background: var(--green); color: var(--white);\n      padding: 1rem 2.2rem; border-radius: var(--radius);\n      font-weight: 700; font-size: 1rem; letter-spacing: .04em;\n      text-transform: uppercase; text-decoration: none;\n      transition: background .2s, transform .15s;\n      display: inline-flex; align-items: center; gap: .6rem;\n    }\n    .btn-primary:hover { background: var(--green-d); transform: translateY(-1px); }\n    .btn-outline {\n      background: transparent;\n      color: var(--white);\n      border: 2px solid rgba(255,255,255,.4);\n      padding: 1rem 2.2rem; border-radius: var(--radius);\n      font-weight: 600; font-size: 1rem; letter-spacing: .04em;\n      text-transform: uppercase; text-decoration: none;\n      transition: border-color .2s, background .2s;\n      display: inline-flex; align-items: center; gap: .6rem;\n    }\n    .btn-outline:hover { border-color: var(--white); background: rgba(255,255,255,.08); }\n    .hero-scroll {\n      position: absolute; bottom: 2.5rem; left: 50%; transform: translateX(-50%);\n      display: flex; flex-direction: column; align-items: center; gap: .4rem;\n      color: rgba(255,255,255,.4); font-size: .7rem; letter-spacing: .1em;\n      text-transform: uppercase;\n    }\n    .hero-scroll-line {\n      width: 1px; height: 40px;\n      background: linear-gradient(to bottom, rgba(255,255,255,.4), transparent);\n      animation: scrollLine 2s ease-in-out infinite;\n    }\n    @keyframes scrollLine {\n      0%, 100% { opacity: .4; } 50% { opacity: 1; }\n    }\n\n    \/* \u2500\u2500\u2500 TRUST BAR \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    .trust-bar {\n      background: #0d0d0d;\n      padding: 1.4rem 0;\n    }\n    .trust-inner {\n      max-width: 1200px; margin: 0 auto; padding: 0 2rem;\n      display: flex; justify-content: space-around; flex-wrap: wrap; gap: 1.2rem;\n    }\n    .trust-item {\n      display: flex; align-items: center; gap: .75rem;\n      color: var(--white);\n    }\n    .trust-icon {\n      width: 40px; height: 40px; border-radius: 50%;\n      background: rgba(255,255,255,.08);\n      display: flex; align-items: center; justify-content: center;\n      font-size: 1.1rem; flex-shrink: 0;\n    }\n    .trust-label { font-size: .8rem; color: var(--grey-400); letter-spacing: .04em; text-transform: uppercase; }\n    .trust-value { font-family: var(--display); font-size: 1.2rem; font-weight: 700; line-height: 1; }\n\n    \/* \u2500\u2500\u2500 SECTION COMMONS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    section { padding: 6rem 0; }\n    .container { max-width: 1200px; margin: 0 auto; padding: 0 2rem; }\n    .section-label {\n      font-size: .72rem; font-weight: 700; letter-spacing: .18em;\n      text-transform: uppercase; color: var(--green);\n      margin-bottom: .75rem;\n    }\n    .section-title {\n      font-family: var(--display);\n      font-size: clamp(2rem, 4vw, 3.2rem);\n      font-weight: 900; line-height: 1.05;\n      color: var(--petrol); text-transform: uppercase;\n      margin-bottom: 1rem;\n    }\n    .section-sub {\n      font-size: 1rem; color: var(--grey-400); max-width: 520px; line-height: 1.65;\n      margin-bottom: 3rem;\n    }\n\n    \/* \u2500\u2500\u2500 PROBLEMS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    .problems { background: var(--grey-100); }\n    .problems-grid {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));\n      gap: 1.25rem; margin-bottom: 2.5rem;\n    }\n    .problem-card {\n      background: var(--white);\n      border: 1px solid var(--grey-200);\n      border-radius: var(--radius);\n      padding: 1.75rem 1.5rem;\n      transition: border-color .25s, box-shadow .25s, transform .25s;\n      cursor: default;\n    }\n    .problem-card:hover {\n      border-color: var(--green);\n      box-shadow: var(--shadow-h);\n      transform: translateY(-3px);\n    }\n    .problem-icon {\n      font-size: 2rem; margin-bottom: 1rem;\n    }\n    .problem-card h3 {\n      font-family: var(--display);\n      font-size: 1.25rem; font-weight: 700;\n      color: var(--petrol); margin-bottom: .4rem;\n      text-transform: uppercase;\n    }\n    .problem-card p { font-size: .875rem; color: var(--grey-400); line-height: 1.55; }\n\n    \/* \u2500\u2500\u2500 SERVICES \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    .services-grid {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n      gap: 1.5rem;\n    }\n    .service-card {\n      border: 1px solid var(--grey-200);\n      border-radius: var(--radius);\n      overflow: hidden;\n      transition: box-shadow .25s, transform .25s;\n    }\n    .service-card:hover { box-shadow: var(--shadow-h); transform: translateY(-3px); }\n    .service-card-img {\n      height: 200px;\n      background: var(--petrol);\n      position: relative; overflow: hidden;\n    }\n    .service-card-img img {\n      width: 100%; height: 100%; object-fit: cover;\n      opacity: .7; transition: opacity .3s, transform .4s;\n    }\n    .service-card:hover .service-card-img img { opacity: .9; transform: scale(1.04); }\n    .service-tag {\n      position: absolute; top: 1rem; left: 1rem;\n      background: var(--green); color: var(--white);\n      font-size: .65rem; font-weight: 700; letter-spacing: .1em;\n      text-transform: uppercase; padding: .25rem .7rem; border-radius: 2rem;\n    }\n    .service-body { padding: 1.5rem; }\n    .service-body h3 {\n      font-family: var(--display); font-size: 1.4rem; font-weight: 800;\n      text-transform: uppercase; color: var(--petrol); margin-bottom: .4rem;\n    }\n    .service-body p { font-size: .875rem; color: var(--grey-400); line-height: 1.6; }\n\n    \/* \u2500\u2500\u2500 BEFORE \/ AFTER \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    .before-after { background: #0d0d0d; }\n    .before-after .section-title { color: var(--white); }\n    .before-after .section-sub { color: var(--grey-400); }\n    .ba-wrap {\n      position: relative; border-radius: var(--radius); overflow: hidden;\n      max-width: 860px; margin: 0 auto; user-select: none;\n    }\n    .ba-images { position: relative; height: 420px; }\n    .ba-before, .ba-after {\n      position: absolute; inset: 0;\n      background-size: cover; background-position: center;\n    }\n    .ba-before {\n      background-image: url('https:\/\/images.unsplash.com\/photo-1568605117036-5fe5e7bab0b7?w=900&q=80');\n      filter: grayscale(80%) brightness(.8);\n    }\n    .ba-after {\n      background-image: url('https:\/\/images.unsplash.com\/photo-1558618666-fcd25c85cd64?w=900&q=80');\n      clip-path: inset(0 50% 0 0);\n      transition: clip-path .0s;\n    }\n    .ba-handle {\n      position: absolute; top: 0; bottom: 0;\n      left: 50%; transform: translateX(-50%);\n      width: 3px; background: var(--white); cursor: ew-resize; z-index: 5;\n    }\n    .ba-handle::after {\n      content: '\u2194';\n      position: absolute; top: 50%; left: 50%;\n      transform: translate(-50%, -50%);\n      background: var(--white); color: var(--petrol);\n      width: 38px; height: 38px; border-radius: 50%;\n      display: flex; align-items: center; justify-content: center;\n      font-size: 1rem; font-weight: 900; box-shadow: var(--shadow);\n    }\n    .ba-label {\n      position: absolute; bottom: 1rem;\n      padding: .35rem .9rem; border-radius: 2rem;\n      font-size: .75rem; font-weight: 700; letter-spacing: .06em;\n      text-transform: uppercase;\n    }\n    .ba-label-before { left: 1rem; background: rgba(0,0,0,.6); color: var(--grey-400); }\n    .ba-label-after  { right: 1rem; background: var(--green); color: var(--white); }\n\n    \/* \u2500\u2500\u2500 WHY US \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    .why { background: var(--white); }\n    .why-grid {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n      gap: 2rem;\n    }\n    .why-item { display: flex; flex-direction: column; gap: .75rem; }\n    .why-num {\n      font-family: var(--display); font-size: 3.5rem; font-weight: 900;\n      color: var(--grey-200); line-height: 1;\n    }\n    .why-item h3 {\n      font-family: var(--display); font-size: 1.15rem; font-weight: 800;\n      text-transform: uppercase; color: var(--petrol);\n    }\n    .why-item p { font-size: .875rem; color: var(--grey-400); line-height: 1.6; }\n    .why-divider { width: 32px; height: 3px; background: var(--green); border-radius: 2px; }\n\n    \/* \u2500\u2500\u2500 HOW WE WORK \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    .how { background: var(--grey-100); }\n    .how-steps {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 0; position: relative;\n    }\n    .how-steps::before {\n      content: '';\n      position: absolute; top: 28px; left: 10%; right: 10%;\n      height: 1px; background: var(--grey-200); z-index: 0;\n    }\n    .how-step { text-align: center; padding: 1.5rem 1rem; position: relative; z-index: 1; }\n    .how-step-num {\n      width: 56px; height: 56px; border-radius: 50%;\n      background: var(--petrol); color: var(--white);\n      font-family: var(--display); font-size: 1.5rem; font-weight: 900;\n      display: flex; align-items: center; justify-content: center;\n      margin: 0 auto 1.25rem; box-shadow: 0 4px 16px rgba(27,58,75,.3);\n    }\n    .how-step h3 {\n      font-family: var(--display); font-size: 1.1rem; font-weight: 800;\n      text-transform: uppercase; color: var(--petrol); margin-bottom: .4rem;\n    }\n    .how-step p { font-size: .82rem; color: var(--grey-400); line-height: 1.5; }\n\n    \/* \u2500\u2500\u2500 GALLERY \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    .gallery { background: var(--white); }\n    .gallery-filters {\n      display: flex; gap: .75rem; margin-bottom: 2.5rem; flex-wrap: wrap;\n    }\n    .gallery-btn {\n      padding: .45rem 1.2rem; border-radius: 2rem;\n      border: 1px solid var(--grey-200);\n      font-size: .8rem; font-weight: 600; letter-spacing: .05em;\n      text-transform: uppercase; cursor: pointer; transition: all .2s;\n      background: var(--white); color: var(--grey-700);\n    }\n    .gallery-btn.active, .gallery-btn:hover {\n      background: var(--petrol); color: var(--white); border-color: var(--petrol);\n    }\n    .gallery-grid {\n      display: grid;\n      grid-template-columns: repeat(3, 1fr);\n      grid-template-rows: auto;\n      gap: 1rem;\n    }\n    .gallery-item {\n      border-radius: var(--radius); overflow: hidden;\n      position: relative; background: var(--grey-200);\n    }\n    .gallery-item:first-child { grid-column: span 2; grid-row: span 2; }\n    .gallery-item img {\n      width: 100%; height: 100%; object-fit: cover; display: block;\n      transition: transform .4s;\n    }\n    .gallery-item:hover img { transform: scale(1.05); }\n    .gallery-item-overlay {\n      position: absolute; inset: 0;\n      background: linear-gradient(to top, rgba(27,58,75,.8) 0%, transparent 60%);\n      opacity: 0; transition: opacity .3s;\n      display: flex; align-items: flex-end; padding: 1.25rem;\n    }\n    .gallery-item:hover .gallery-item-overlay { opacity: 1; }\n    .gallery-item-label {\n      color: var(--white); font-size: .8rem; font-weight: 600;\n      letter-spacing: .06em; text-transform: uppercase;\n    }\n    .gallery-item { min-height: 200px; }\n    .gallery-item:first-child { min-height: 420px; }\n\n    \/* \u2500\u2500\u2500 TESTIMONIALS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    .testimonials { background: var(--grey-100); }\n    .testi-grid {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n      gap: 1.5rem;\n    }\n    .testi-card {\n      background: var(--white);\n      border-radius: var(--radius);\n      padding: 2rem;\n      border: 1px solid var(--grey-200);\n      transition: box-shadow .25s;\n    }\n    .testi-card:hover { box-shadow: var(--shadow); }\n    .testi-stars { color: #F4B942; font-size: 1rem; margin-bottom: 1rem; }\n    .testi-text {\n      font-size: .925rem; color: var(--grey-700); line-height: 1.7;\n      font-style: italic; margin-bottom: 1.5rem;\n    }\n    .testi-author { display: flex; align-items: center; gap: .75rem; }\n    .testi-avatar {\n      width: 42px; height: 42px; border-radius: 50%;\n      background: var(--petrol); color: var(--white);\n      display: flex; align-items: center; justify-content: center;\n      font-family: var(--display); font-size: 1.1rem; font-weight: 800; flex-shrink: 0;\n    }\n    .testi-name { font-size: .875rem; font-weight: 700; color: var(--petrol); }\n    .testi-loc { font-size: .775rem; color: var(--grey-400); }\n\n    \/* \u2500\u2500\u2500 FAQ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    .faq { background: var(--white); }\n    .faq-list { max-width: 760px; margin: 0 auto; }\n    .faq-item { border-bottom: 1px solid var(--grey-200); }\n    .faq-q {\n      width: 100%; text-align: left; background: none; border: none;\n      padding: 1.5rem 0;\n      display: flex; justify-content: space-between; align-items: center; gap: 1rem;\n      cursor: pointer; font-family: var(--body);\n      font-size: 1rem; font-weight: 600; color: var(--petrol);\n    }\n    .faq-q:hover { color: var(--green); }\n    .faq-icon { font-size: 1.25rem; color: var(--green); flex-shrink: 0; transition: transform .3s; }\n    .faq-item.open .faq-icon { transform: rotate(45deg); }\n    .faq-a {\n      font-size: .9rem; color: var(--grey-700); line-height: 1.7;\n      max-height: 0; overflow: hidden; transition: max-height .4s ease, padding .3s;\n    }\n    .faq-item.open .faq-a { max-height: 300px; padding-bottom: 1.5rem; }\n\n    \/* \u2500\u2500\u2500 CTA BAND \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    .cta-band {\n      background: linear-gradient(135deg, var(--petrol-d), var(--petrol));\n      padding: 5rem 0; text-align: center;\n    }\n    .cta-band .section-label { color: rgba(255,255,255,.5); }\n    .cta-band .section-title { color: var(--white); margin-bottom: .75rem; }\n    .cta-band .section-sub { color: rgba(255,255,255,.65); margin: 0 auto 2.5rem; }\n    .cta-band-actions { display: flex; gap: 1rem; justify-content: center; flex-wrap: wrap; }\n\n    \/* \u2500\u2500\u2500 FOOTER \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    footer {\n      background: #0d0d0d; color: var(--grey-400);\n      padding: 3.5rem 0 2rem;\n    }\n    .footer-grid {\n      display: grid; grid-template-columns: 2fr 1fr 1fr 1fr;\n      gap: 3rem; margin-bottom: 3rem;\n    }\n    .footer-logo {\n      font-family: var(--display); font-size: 2rem; font-weight: 900;\n      color: var(--white); margin-bottom: 1rem;\n    }\n    .footer-logo span { color: var(--green); }\n    .footer-desc { font-size: .85rem; line-height: 1.65; margin-bottom: 1.25rem; }\n    .footer-col h4 {\n      font-family: var(--display); font-size: 1rem; font-weight: 700;\n      text-transform: uppercase; letter-spacing: .08em;\n      color: var(--white); margin-bottom: 1rem;\n    }\n    .footer-col ul { list-style: none; display: flex; flex-direction: column; gap: .55rem; }\n    .footer-col ul a {\n      font-size: .84rem; color: var(--grey-400); text-decoration: none;\n      transition: color .2s;\n    }\n    .footer-col ul a:hover { color: var(--white); }\n    .footer-bottom {\n      border-top: 1px solid rgba(255,255,255,.07);\n      padding-top: 1.5rem;\n      display: flex; justify-content: space-between; align-items: center;\n      font-size: .78rem; flex-wrap: wrap; gap: .75rem;\n    }\n    .footer-badge {\n      display: inline-flex; align-items: center; gap: .5rem;\n      background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.1);\n      border-radius: 2rem; padding: .3rem .9rem; font-size: .72rem; color: var(--grey-400);\n    }\n    .footer-badge::before { content: '\ud83d\udd12'; font-size: .85rem; }\n\n    \/* \u2500\u2500\u2500 WHATSAPP FLOAT \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    .wa-float {\n      position: fixed; bottom: 2rem; right: 2rem; z-index: 200;\n      width: 56px; height: 56px; border-radius: 50%;\n      background: #25D366; color: var(--white);\n      display: flex; align-items: center; justify-content: center;\n      font-size: 1.6rem; text-decoration: none;\n      box-shadow: 0 4px 20px rgba(37,211,102,.5);\n      transition: transform .2s, box-shadow .2s;\n      animation: pulse 2.5s ease-in-out infinite;\n    }\n    .wa-float:hover { transform: scale(1.1); box-shadow: 0 6px 28px rgba(37,211,102,.7); }\n    @keyframes pulse {\n      0%, 100% { box-shadow: 0 4px 20px rgba(37,211,102,.5); }\n      50% { box-shadow: 0 4px 28px rgba(37,211,102,.8); }\n    }\n\n    \/* \u2500\u2500\u2500 SCROLL REVEAL \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    .reveal { opacity: 0; transform: translateY(28px); transition: opacity .6s ease, transform .6s ease; }\n    .reveal.visible { opacity: 1; transform: none; }\n\n    \/* \u2500\u2500\u2500 RESPONSIVE \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n    @media (max-width: 900px) {\n      .how-steps { grid-template-columns: repeat(2, 1fr); }\n      .how-steps::before { display: none; }\n      .footer-grid { grid-template-columns: 1fr 1fr; }\n      .nav-links { display: none; }\n      .gallery-grid { grid-template-columns: repeat(2, 1fr); }\n      .gallery-item:first-child { grid-column: span 2; }\n    }\n    @media (max-width: 600px) {\n      .hero h1 { font-size: 3rem; }\n      .how-steps { grid-template-columns: 1fr; }\n      .footer-grid { grid-template-columns: 1fr; }\n      .gallery-grid { grid-template-columns: 1fr; }\n      .gallery-item:first-child { grid-column: span 1; }\n      .trust-inner { justify-content: flex-start; gap: 1.5rem; }\n    }\n  <\/style>\n<\/head>\n<body>\n\n  <!-- TOPBAR -->\n  <div class=\"topbar\">\n    <div class=\"inner\">\n      <span>\ud83d\udccd Norte de Portugal \u2014 Braga, Porto, Viana do Castelo e arredores<\/span>\n      <div class=\"topbar-right\" style=\"display:flex;align-items:center;gap:1.5rem\">\n        <a href=\"mailto:geral@viportas.pt\">geral@viportas.pt<\/a>\n        <a href=\"tel:+351967147535\">\ud83d\udcde 967 147 535<\/a>\n        <a href=\"https:\/\/www.instagram.com\/viportas_\" target=\"_blank\">IG<\/a>\n        <a href=\"https:\/\/www.facebook.com\/viportas\" target=\"_blank\">FB<\/a>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- NAV -->\n  <nav>\n    <div class=\"nav-inner\">\n      <a href=\"#\" class=\"logo\">VIPORTAS<\/a>\n      <ul class=\"nav-links\">\n        <li><a href=\"#servicos\">Servi\u00e7os<\/a><\/li>\n        <li><a href=\"#galeria\">Galeria<\/a><\/li>\n        <li><a href=\"#como\">Como trabalhamos<\/a><\/li>\n        <li><a href=\"#faq\">FAQ<\/a><\/li>\n      <\/ul>\n      <a href=\"#contacto\" class=\"nav-cta\">Pedir or\u00e7amento<\/a>\n    <\/div>\n  <\/nav>\n\n  <!-- HERO -->\n  <section class=\"hero\">\n    <div class=\"hero-accent\"><\/div>\n    <div class=\"hero-content\">\n      <div class=\"hero-eyebrow\">Instala\u00e7\u00e3o \u00b7 Automatiza\u00e7\u00e3o \u00b7 Assist\u00eancia 24h<\/div>\n      <h1>Port\u00f5es que<br\/><em>protegem<\/em><br\/>o que importa.<\/h1>\n      <p class=\"hero-sub\">\n        Instalamos, automatizamos e reparamos port\u00f5es residenciais e industriais no Norte de Portugal. Resposta r\u00e1pida \u2014 mesmo nas urg\u00eancias.\n      <\/p>\n      <div class=\"hero-actions\">\n        <a href=\"#contacto\" class=\"btn-primary\">\n          <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\"><path d=\"M9 12l2 2 4-4\"\/><circle cx=\"12\" cy=\"12\" r=\"10\"\/><\/svg>\n          Pedir or\u00e7amento gr\u00e1tis\n        <\/a>\n        <a href=\"tel:+351967147535\" class=\"btn-outline\">\n          <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\"><path d=\"M22 16.92v3a2 2 0 01-2.18 2 19.79 19.79 0 01-8.63-3.07A19.5 19.5 0 014.4 12.13 19.79 19.79 0 011.34 3.5 2 2 0 013.33 1.35h3a2 2 0 012 1.72c.127.96.361 1.903.7 2.81a2 2 0 01-.45 2.11L7.09 9.41a16 16 0 006.29 6.29l1.13-1.13a2 2 0 012.11-.45c.907.339 1.85.573 2.81.7a2 2 0 011.72 2.03z\"\/><\/svg>\n          Assist\u00eancia urgente\n        <\/a>\n      <\/div>\n    <\/div>\n    <div class=\"hero-scroll\">\n      <div class=\"hero-scroll-line\"><\/div>\n      <span>scroll<\/span>\n    <\/div>\n  <\/section>\n\n  <!-- TRUST BAR -->\n  <div class=\"trust-bar\">\n    <div class=\"trust-inner\">\n      <div class=\"trust-item\">\n        <div class=\"trust-icon\">\ud83c\udfc6<\/div>\n        <div>\n          <div class=\"trust-value\">+20 Anos<\/div>\n          <div class=\"trust-label\">de Experi\u00eancia<\/div>\n        <\/div>\n      <\/div>\n      <div class=\"trust-item\">\n        <div class=\"trust-icon\">\u26a1<\/div>\n        <div>\n          <div class=\"trust-value\">Resposta<\/div>\n          <div class=\"trust-label\">no mesmo dia<\/div>\n        <\/div>\n      <\/div>\n      <div class=\"trust-item\">\n        <div class=\"trust-icon\">\ud83d\udd27<\/div>\n        <div>\n          <div class=\"trust-value\">Assist\u00eancia<\/div>\n          <div class=\"trust-label\">t\u00e9cnica especializada<\/div>\n        <\/div>\n      <\/div>\n      <div class=\"trust-item\">\n        <div class=\"trust-icon\">\u2705<\/div>\n        <div>\n          <div class=\"trust-value\">Garantia<\/div>\n          <div class=\"trust-label\">em todos os trabalhos<\/div>\n        <\/div>\n      <\/div>\n      <div class=\"trust-item\">\n        <div class=\"trust-icon\">\ud83c\udfe0<\/div>\n        <div>\n          <div class=\"trust-value\">+500<\/div>\n          <div class=\"trust-label\">instala\u00e7\u00f5es realizadas<\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- PROBLEMS -->\n  <section class=\"problems\" id=\"problemas\">\n    <div class=\"container\">\n      <p class=\"section-label reveal\">Reconhece algum destes casos?<\/p>\n      <h2 class=\"section-title reveal\">O seu port\u00e3o<br\/>est\u00e1 a dar problemas?<\/h2>\n      <p class=\"section-sub reveal\">N\u00e3o deixe uma avaria tornar-se num problema de seguran\u00e7a. A Viportas resolve \u2014 com rapidez e profissionalismo.<\/p>\n      <div class=\"problems-grid\">\n        <div class=\"problem-card reveal\">\n          <div class=\"problem-icon\">\ud83d\udeab<\/div>\n          <h3>N\u00e3o abre nem fecha<\/h3>\n          <p>O comando n\u00e3o responde, o port\u00e3o trava ou fica bloqueado a meio. Situa\u00e7\u00e3o de urg\u00eancia \u2014 resolvemos no pr\u00f3prio dia.<\/p>\n        <\/div>\n        <div class=\"problem-card reveal\">\n          <div class=\"problem-icon\">\ud83d\udd0a<\/div>\n          <h3>Faz ru\u00eddo estranho<\/h3>\n          <p>Rangidos, batidas ou vibra\u00e7\u00e3o excessiva s\u00e3o sinais de desgaste. Intervir cedo evita avarias maiores e mais caras.<\/p>\n        <\/div>\n        <div class=\"problem-card reveal\">\n          <div class=\"problem-icon\">\u26a0\ufe0f<\/div>\n          <h3>Avaria frequente<\/h3>\n          <p>Se o port\u00e3o avaria repetidamente, o problema est\u00e1 na origem \u2014 n\u00e3o em repara\u00e7\u00f5es paliativas. Fazemos o diagn\u00f3stico correto.<\/p>\n        <\/div>\n        <div class=\"problem-card reveal\">\n          <div class=\"problem-icon\">\ud83d\udce1<\/div>\n          <h3>Automatismo falha<\/h3>\n          <p>Motor sem resposta, comando dessincronizado ou central com erros. Trabalhamos com todas as marcas: FAAC, BFT, Somfy.<\/p>\n        <\/div>\n      <\/div>\n      <div style=\"text-align:center\">\n        <a href=\"tel:+351967147535\" class=\"btn-primary\">Resolver agora \u2014 ligue j\u00e1<\/a>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- SERVICES -->\n  <section id=\"servicos\">\n    <div class=\"container\">\n      <p class=\"section-label reveal\">O que fazemos<\/p>\n      <h2 class=\"section-title reveal\">Os nossos servi\u00e7os<\/h2>\n      <p class=\"section-sub reveal\">Da instala\u00e7\u00e3o \u00e0 manuten\u00e7\u00e3o, passando pela repara\u00e7\u00e3o e automatiza\u00e7\u00e3o. Cobrimos tudo \u2014 com equipamentos certificados e garantia de resultado.<\/p>\n      <div class=\"services-grid\">\n        <div class=\"service-card reveal\">\n          <div class=\"service-card-img\">\n            <img decoding=\"async\" src=\"https:\/\/images.unsplash.com\/photo-1558618666-fcd25c85cd64?w=600&q=80\" alt=\"Port\u00f5es Residenciais\"\/>\n            <span class=\"service-tag\">Residencial<\/span>\n          <\/div>\n          <div class=\"service-body\">\n            <h3>Port\u00f5es Residenciais<\/h3>\n            <p>Correr, batente ou pivotante. Fabricamos e instalamos port\u00f5es \u00e0 medida, com acabamentos premium para qualquer tipo de habita\u00e7\u00e3o.<\/p>\n          <\/div>\n        <\/div>\n        <div class=\"service-card reveal\">\n          <div class=\"service-card-img\">\n            <img decoding=\"async\" src=\"https:\/\/images.unsplash.com\/photo-1504307651254-35680f356dfd?w=600&q=80\" alt=\"Port\u00f5es Industriais\"\/>\n            <span class=\"service-tag\">Industrial<\/span>\n          <\/div>\n          <div class=\"service-body\">\n            <h3>Port\u00f5es Industriais<\/h3>\n            <p>Seccionais, basculantes e r\u00e1pidos para armaz\u00e9ns, f\u00e1bricas e galp\u00f5es. Robustez e fiabilidade para uso intensivo.<\/p>\n          <\/div>\n        <\/div>\n        <div class=\"service-card reveal\">\n          <div class=\"service-card-img\">\n            <img decoding=\"async\" src=\"https:\/\/images.unsplash.com\/photo-1519710164239-da123dc03ef4?w=600&q=80\" alt=\"Portas de Garagem\"\/>\n            <span class=\"service-tag\">Garagem<\/span>\n          <\/div>\n          <div class=\"service-body\">\n            <h3>Portas de Garagem<\/h3>\n            <p>Seccionais com isolamento t\u00e9rmico e ac\u00fastico. Integra\u00e7\u00e3o total com automatismos e sistemas de casa inteligente.<\/p>\n          <\/div>\n        <\/div>\n        <div class=\"service-card reveal\">\n          <div class=\"service-card-img\">\n            <img decoding=\"async\" src=\"https:\/\/images.unsplash.com\/photo-1605152276897-4f618f831968?w=600&q=80\" alt=\"Automatismos\"\/>\n            <span class=\"service-tag\">Automatismos<\/span>\n          <\/div>\n          <div class=\"service-body\">\n            <h3>Automatismos<\/h3>\n            <p>Motores FAAC, BFT e Somfy. Controlo por app, comando ou cart\u00e3o. Automa\u00e7\u00e3o do zero ou upgrade do port\u00e3o existente.<\/p>\n          <\/div>\n        <\/div>\n        <div class=\"service-card reveal\">\n          <div class=\"service-card-img\">\n            <img decoding=\"async\" src=\"https:\/\/images.unsplash.com\/photo-1581092580497-e0d23cbdf1dc?w=600&q=80\" alt=\"Repara\u00e7\u00f5es\"\/>\n            <span class=\"service-tag\">Repara\u00e7\u00e3o<\/span>\n          <\/div>\n          <div class=\"service-body\">\n            <h3>Repara\u00e7\u00f5es<\/h3>\n            <p>Diagn\u00f3stico rigoroso e repara\u00e7\u00e3o eficaz. Trabalhamos com qualquer marca e modelo \u2014 sem passar o problema para tr\u00e1s.<\/p>\n          <\/div>\n        <\/div>\n        <div class=\"service-card reveal\">\n          <div class=\"service-card-img\">\n            <img decoding=\"async\" src=\"https:\/\/images.unsplash.com\/photo-1504307651254-35680f356dfd?w=600&q=80\" alt=\"Manuten\u00e7\u00e3o\"\/>\n            <span class=\"service-tag\">Manuten\u00e7\u00e3o<\/span>\n          <\/div>\n          <div class=\"service-body\">\n            <h3>Manuten\u00e7\u00e3o<\/h3>\n            <p>Revis\u00e3o anual que previne avarias, alonga a vida \u00fatil e mant\u00e9m a garantia do fabricante em pleno vigor.<\/p>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- BEFORE \/ AFTER -->\n  <section class=\"before-after\">\n    <div class=\"container\">\n      <p class=\"section-label reveal\">Transforma\u00e7\u00e3o real<\/p>\n      <h2 class=\"section-title reveal\">Antes e depois<\/h2>\n      <p class=\"section-sub reveal\">Veja a diferen\u00e7a que um port\u00e3o novo faz na imagem e seguran\u00e7a da sua propriedade.<\/p>\n      <div class=\"ba-wrap reveal\" id=\"baWrap\">\n        <div class=\"ba-images\" id=\"baImages\">\n          <div class=\"ba-before\"><\/div>\n          <div class=\"ba-after\" id=\"baAfter\"><\/div>\n          <div class=\"ba-handle\" id=\"baHandle\"><\/div>\n          <span class=\"ba-label ba-label-before\">Antes<\/span>\n          <span class=\"ba-label ba-label-after\">Depois<\/span>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- WHY US -->\n  <section class=\"why\">\n    <div class=\"container\">\n      <p class=\"section-label reveal\">Porqu\u00ea a Viportas<\/p>\n      <h2 class=\"section-title reveal\">O que nos distingue<\/h2>\n      <p class=\"section-sub reveal\">N\u00e3o somos mais uma empresa de port\u00f5es. Somos especialistas com mais de duas d\u00e9cadas no terreno.<\/p>\n      <div class=\"why-grid\">\n        <div class=\"why-item reveal\">\n          <div class=\"why-num\">01<\/div>\n          <div class=\"why-divider\"><\/div>\n          <h3>Instala\u00e7\u00e3o profissional<\/h3>\n          <p>Equipas certificadas, com processos rigorosos e materiais de primeira linha. O resultado final fala por si.<\/p>\n        <\/div>\n        <div class=\"why-item reveal\">\n          <div class=\"why-num\">02<\/div>\n          <div class=\"why-divider\"><\/div>\n          <h3>Equipamentos certificados<\/h3>\n          <p>Trabalhamos exclusivamente com marcas reconhecidas \u2014 FAAC, BFT, Somfy, H\u00f6rmann \u2014 com certifica\u00e7\u00e3o europeia.<\/p>\n        <\/div>\n        <div class=\"why-item reveal\">\n          <div class=\"why-num\">03<\/div>\n          <div class=\"why-divider\"><\/div>\n          <h3>Assist\u00eancia r\u00e1pida<\/h3>\n          <p>Uma avaria n\u00e3o avisa. Por isso estamos dispon\u00edveis para responder no pr\u00f3prio dia, em toda a regi\u00e3o norte.<\/p>\n        <\/div>\n        <div class=\"why-item reveal\">\n          <div class=\"why-num\">04<\/div>\n          <div class=\"why-divider\"><\/div>\n          <h3>Solu\u00e7\u00f5es \u00e0 medida<\/h3>\n          <p>Cada propriedade \u00e9 diferente. Avaliamos o espa\u00e7o, o uso e o or\u00e7amento antes de propor qualquer solu\u00e7\u00e3o.<\/p>\n        <\/div>\n        <div class=\"why-item reveal\">\n          <div class=\"why-num\">05<\/div>\n          <div class=\"why-divider\"><\/div>\n          <h3>Garantia total<\/h3>\n          <p>Todos os trabalhos t\u00eam garantia. Se algo n\u00e3o estiver certo, voltamos sem burocracia e sem custo adicional.<\/p>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- HOW WE WORK -->\n  <section class=\"how\" id=\"como\">\n    <div class=\"container\">\n      <p class=\"section-label reveal\">Processo simples<\/p>\n      <h2 class=\"section-title reveal\">Como trabalhamos<\/h2>\n      <p class=\"section-sub reveal\">Do primeiro contacto \u00e0 assist\u00eancia p\u00f3s-instala\u00e7\u00e3o \u2014 sem surpresas, sem demoras.<\/p>\n      <div class=\"how-steps\">\n        <div class=\"how-step reveal\">\n          <div class=\"how-step-num\">1<\/div>\n          <h3>Visita t\u00e9cnica<\/h3>\n          <p>Deslocamo-nos ao local para avaliar o espa\u00e7o, as necessidades e as melhores solu\u00e7\u00f5es dispon\u00edveis.<\/p>\n        <\/div>\n        <div class=\"how-step reveal\">\n          <div class=\"how-step-num\">2<\/div>\n          <h3>Or\u00e7amento claro<\/h3>\n          <p>Recebe uma proposta detalhada, sem letras pequenas. S\u00f3 avan\u00e7amos com a sua aprova\u00e7\u00e3o expressa.<\/p>\n        <\/div>\n        <div class=\"how-step reveal\">\n          <div class=\"how-step-num\">3<\/div>\n          <h3>Instala\u00e7\u00e3o<\/h3>\n          <p>Equipa t\u00e9cnica qualificada executa o trabalho com rigor, limpando e testando tudo antes de sair.<\/p>\n        <\/div>\n        <div class=\"how-step reveal\">\n          <div class=\"how-step-num\">4<\/div>\n          <h3>Assist\u00eancia cont\u00ednua<\/h3>\n          <p>Depois da instala\u00e7\u00e3o n\u00e3o desaparecemos. Estamos dispon\u00edveis para manuten\u00e7\u00e3o e qualquer urg\u00eancia.<\/p>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- GALLERY -->\n  <section class=\"gallery\" id=\"galeria\">\n    <div class=\"container\">\n      <p class=\"section-label reveal\">Portf\u00f3lio<\/p>\n      <h2 class=\"section-title reveal\">Trabalhos realizados<\/h2>\n      <div class=\"gallery-filters reveal\">\n        <button class=\"gallery-btn active\">Todos<\/button>\n        <button class=\"gallery-btn\">Residencial<\/button>\n        <button class=\"gallery-btn\">Industrial<\/button>\n        <button class=\"gallery-btn\">Automatismos<\/button>\n      <\/div>\n      <div class=\"gallery-grid\">\n        <div class=\"gallery-item reveal\">\n          <img decoding=\"async\" src=\"https:\/\/images.unsplash.com\/photo-1558618666-fcd25c85cd64?w=800&q=80\" alt=\"Port\u00e3o residencial automatizado\"\/>\n          <div class=\"gallery-item-overlay\"><span class=\"gallery-item-label\">Port\u00e3o Residencial \u00b7 Braga<\/span><\/div>\n        <\/div>\n        <div class=\"gallery-item reveal\">\n          <img decoding=\"async\" src=\"https:\/\/images.unsplash.com\/photo-1519710164239-da123dc03ef4?w=500&q=80\" alt=\"Porta de garagem\"\/>\n          <div class=\"gallery-item-overlay\"><span class=\"gallery-item-label\">Porta Garagem \u00b7 Porto<\/span><\/div>\n        <\/div>\n        <div class=\"gallery-item reveal\">\n          <img decoding=\"async\" src=\"https:\/\/images.unsplash.com\/photo-1504307651254-35680f356dfd?w=500&q=80\" alt=\"Port\u00e3o industrial\"\/>\n          <div class=\"gallery-item-overlay\"><span class=\"gallery-item-label\">Industrial \u00b7 Viana do Castelo<\/span><\/div>\n        <\/div>\n        <div class=\"gallery-item reveal\">\n          <img decoding=\"async\" src=\"https:\/\/images.unsplash.com\/photo-1605152276897-4f618f831968?w=500&q=80\" alt=\"Automatismo\"\/>\n          <div class=\"gallery-item-overlay\"><span class=\"gallery-item-label\">Automatismo FAAC \u00b7 Guimar\u00e3es<\/span><\/div>\n        <\/div>\n        <div class=\"gallery-item reveal\">\n          <img decoding=\"async\" src=\"https:\/\/images.unsplash.com\/photo-1568605117036-5fe5e7bab0b7?w=500&q=80\" alt=\"Port\u00e3o moderno\"\/>\n          <div class=\"gallery-item-overlay\"><span class=\"gallery-item-label\">Port\u00e3o Pivotante \u00b7 Barcelos<\/span><\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- TESTIMONIALS -->\n  <section class=\"testimonials\">\n    <div class=\"container\">\n      <p class=\"section-label reveal\">Clientes satisfeitos<\/p>\n      <h2 class=\"section-title reveal\">O que dizem de n\u00f3s<\/h2>\n      <div class=\"testi-grid\">\n        <div class=\"testi-card reveal\">\n          <div class=\"testi-stars\">\u2605\u2605\u2605\u2605\u2605<\/div>\n          <p class=\"testi-text\">\"Chamei a Viportas para uma urg\u00eancia \u2014 o port\u00e3o tinha ficado bloqueado e n\u00e3o conseguia sair com o carro. Foram l\u00e1 no pr\u00f3prio dia, resolveram o problema em duas horas e explicaram tudo o que fizeram. Excelente servi\u00e7o.\"<\/p>\n          <div class=\"testi-author\">\n            <div class=\"testi-avatar\">JM<\/div>\n            <div>\n              <div class=\"testi-name\">Jo\u00e3o Meireles<\/div>\n              <div class=\"testi-loc\">Braga<\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n        <div class=\"testi-card reveal\">\n          <div class=\"testi-stars\">\u2605\u2605\u2605\u2605\u2605<\/div>\n          <p class=\"testi-text\">\"Instalaram um port\u00e3o novo e automatizaram o existente no nosso armaz\u00e9m. Profissionais, pontuais e com um pre\u00e7o justo. Recomendo a qualquer empresa que precise de uma solu\u00e7\u00e3o industrial a s\u00e9rio.\"<\/p>\n          <div class=\"testi-author\">\n            <div class=\"testi-avatar\">CS<\/div>\n            <div>\n              <div class=\"testi-name\">Carla Sousa<\/div>\n              <div class=\"testi-loc\">Viana do Castelo<\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n        <div class=\"testi-card reveal\">\n          <div class=\"testi-stars\">\u2605\u2605\u2605\u2605\u2605<\/div>\n          <p class=\"testi-text\">\"J\u00e1 t\u00ednhamos tentado outro t\u00e9cnico que n\u00e3o resolveu o problema. A Viportas diagnosticou a origem da avaria logo na primeira visita e resolveu definitivamente. Devia ter ligado aqui desde o in\u00edcio.\"<\/p>\n          <div class=\"testi-author\">\n            <div class=\"testi-avatar\">RP<\/div>\n            <div>\n              <div class=\"testi-name\">Rui Pinheiro<\/div>\n              <div class=\"testi-loc\">Guimar\u00e3es<\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- FAQ -->\n  <section class=\"faq\" id=\"faq\">\n    <div class=\"container\">\n      <p class=\"section-label reveal\">Perguntas frequentes<\/p>\n      <h2 class=\"section-title reveal\" style=\"text-align:center\">Tem d\u00favidas?<\/h2>\n      <p class=\"section-sub reveal\" style=\"margin:0 auto 3rem;text-align:center\">As respostas \u00e0s perguntas que nos fazem mais vezes \u2014 sem rodeios.<\/p>\n      <div class=\"faq-list\">\n        <div class=\"faq-item\">\n          <button class=\"faq-q\">Fazem assist\u00eancia no mesmo dia? <span class=\"faq-icon\">+<\/span><\/button>\n          <div class=\"faq-a\">Sim. Para situa\u00e7\u00f5es de urg\u00eancia \u2014 port\u00e3o bloqueado, avaria que impede acesso \u2014 deslocamo-nos no pr\u00f3prio dia, dentro da nossa \u00e1rea de cobertura no Norte de Portugal.<\/div>\n        <\/div>\n        <div class=\"faq-item\">\n          <button class=\"faq-q\">Posso automatizar um port\u00e3o que j\u00e1 tenho? <span class=\"faq-icon\">+<\/span><\/button>\n          <div class=\"faq-a\">Na maioria dos casos, sim. Avaliamos o estado estrutural do port\u00e3o e instalamos o automatismo adequado. O investimento \u00e9 significativamente menor do que substituir o port\u00e3o completo.<\/div>\n        <\/div>\n        <div class=\"faq-item\">\n          <button class=\"faq-q\">Quanto tempo demora uma instala\u00e7\u00e3o? <span class=\"faq-icon\">+<\/span><\/button>\n          <div class=\"faq-a\">Uma instala\u00e7\u00e3o residencial standard demora geralmente entre meio dia e um dia completo. Instala\u00e7\u00f5es industriais de maior dimens\u00e3o podem demorar 2 a 3 dias. Damos sempre uma estimativa concreta antes de come\u00e7ar.<\/div>\n        <\/div>\n        <div class=\"faq-item\">\n          <button class=\"faq-q\">Qual o pre\u00e7o m\u00e9dio de um port\u00e3o automatizado? <span class=\"faq-icon\">+<\/span><\/button>\n          <div class=\"faq-a\">Depende do tipo de port\u00e3o, dimens\u00e3o e motor escolhido. Um port\u00e3o residencial de correr com automatismo parte dos 1.200\u20ac. Fazemos or\u00e7amentos gratuitos e sem compromisso \u2014 o pre\u00e7o final est\u00e1 sempre no or\u00e7amento, sem surpresas.<\/div>\n        <\/div>\n        <div class=\"faq-item\">\n          <button class=\"faq-q\">Que garantia oferecem? <span class=\"faq-icon\">+<\/span><\/button>\n          <div class=\"faq-a\">Todos os trabalhos t\u00eam garantia m\u00ednima de 2 anos sobre m\u00e3o de obra. Os equipamentos t\u00eam a garantia do fabricante, que no caso de marcas como FAAC e BFT pode ir at\u00e9 5 anos.<\/div>\n        <\/div>\n        <div class=\"faq-item\">\n          <button class=\"faq-q\">Trabalham com que marcas de automatismos? <span class=\"faq-icon\">+<\/span><\/button>\n          <div class=\"faq-a\">Somos instaladores de FAAC, BFT, Somfy e H\u00f6rmann. Reparamos e fazemos manuten\u00e7\u00e3o de qualquer marca \u2014 incluindo equipamentos de outros instaladores.<\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- CTA BAND -->\n  <section class=\"cta-band\" id=\"contacto\">\n    <div class=\"container\">\n      <p class=\"section-label reveal\">Pronto para avan\u00e7ar?<\/p>\n      <h2 class=\"section-title reveal\">Pe\u00e7a o seu or\u00e7amento<br\/>gratuitamente.<\/h2>\n      <p class=\"section-sub reveal\">Visita t\u00e9cnica sem compromisso, or\u00e7amento detalhado e resposta r\u00e1pida. Cobrimos todo o Norte de Portugal.<\/p>\n      <div class=\"cta-band-actions reveal\">\n        <a href=\"tel:+351967147535\" class=\"btn-primary\">\n          <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\"><path d=\"M22 16.92v3a2 2 0 01-2.18 2 19.79 19.79 0 01-8.63-3.07A19.5 19.5 0 014.4 12.13 19.79 19.79 0 011.34 3.5 2 2 0 013.33 1.35h3a2 2 0 012 1.72c.127.96.361 1.903.7 2.81a2 2 0 01-.45 2.11L7.09 9.41a16 16 0 006.29 6.29l1.13-1.13a2 2 0 012.11-.45c.907.339 1.85.573 2.81.7a2 2 0 011.72 2.03z\"\/><\/svg>\n          Ligar agora\n        <\/a>\n        <a href=\"https:\/\/wa.me\/351967147535\" class=\"btn-outline\">\n          \ud83d\udcac Enviar mensagem no WhatsApp\n        <\/a>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- FOOTER -->\n  <footer>\n    <div class=\"container\">\n      <div class=\"footer-grid\">\n        <div>\n          <div class=\"footer-logo\">VIPORTAS<\/div>\n          <p class=\"footer-desc\">Especialistas em port\u00f5es, automatismos e assist\u00eancia t\u00e9cnica no Norte de Portugal. Mais de 20 anos ao servi\u00e7o de particulares e empresas.<\/p>\n          <div class=\"footer-badge\">Instalador certificado FAAC \u00b7 BFT \u00b7 Somfy<\/div>\n        <\/div>\n        <div class=\"footer-col\">\n          <h4>Servi\u00e7os<\/h4>\n          <ul>\n            <li><a href=\"#\">Port\u00f5es residenciais<\/a><\/li>\n            <li><a href=\"#\">Port\u00f5es industriais<\/a><\/li>\n            <li><a href=\"#\">Portas de garagem<\/a><\/li>\n            <li><a href=\"#\">Automatismos<\/a><\/li>\n            <li><a href=\"#\">Repara\u00e7\u00f5es<\/a><\/li>\n            <li><a href=\"#\">Manuten\u00e7\u00e3o<\/a><\/li>\n          <\/ul>\n        <\/div>\n        <div class=\"footer-col\">\n          <h4>Empresa<\/h4>\n          <ul>\n            <li><a href=\"#\">Sobre n\u00f3s<\/a><\/li>\n            <li><a href=\"#\">Galeria de trabalhos<\/a><\/li>\n            <li><a href=\"#\">Testemunhos<\/a><\/li>\n            <li><a href=\"#\">FAQ<\/a><\/li>\n          <\/ul>\n        <\/div>\n        <div class=\"footer-col\">\n          <h4>Contacto<\/h4>\n          <ul>\n            <li><a href=\"tel:+351967147535\">967 147 535<\/a><\/li>\n            <li><a href=\"mailto:geral@viportas.pt\">geral@viportas.pt<\/a><\/li>\n            <li><a href=\"#\">Norte de Portugal<\/a><\/li>\n            <li><a href=\"#\">Braga \u00b7 Porto \u00b7 Viana<\/a><\/li>\n          <\/ul>\n        <\/div>\n      <\/div>\n      <div class=\"footer-bottom\">\n        <span>\u00a9 2025 Viportas. Todos os direitos reservados.<\/span>\n        <span>Pol\u00edtica de Privacidade \u00b7 Termos e Condi\u00e7\u00f5es<\/span>\n      <\/div>\n    <\/div>\n  <\/footer>\n\n  <!-- WHATSAPP FLOAT -->\n  <a href=\"https:\/\/wa.me\/351967147535\" class=\"wa-float\" title=\"Fale connosco no WhatsApp\">\ud83d\udcac<\/a>\n\n  <script>\n    \/\/ \u2500\u2500\u2500 SCROLL REVEAL \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n    const observer = new IntersectionObserver((entries) => {\n      entries.forEach((e, i) => {\n        if (e.isIntersecting) {\n          setTimeout(() => e.target.classList.add('visible'), i * 80);\n          observer.unobserve(e.target);\n        }\n      });\n    }, { threshold: 0.1 });\n    document.querySelectorAll('.reveal').forEach(el => observer.observe(el));\n\n    \/\/ \u2500\u2500\u2500 FAQ ACCORDION \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n    document.querySelectorAll('.faq-q').forEach(btn => {\n      btn.addEventListener('click', () => {\n        const item = btn.closest('.faq-item');\n        const open = item.classList.contains('open');\n        document.querySelectorAll('.faq-item.open').forEach(i => i.classList.remove('open'));\n        if (!open) item.classList.add('open');\n      });\n    });\n\n    \/\/ \u2500\u2500\u2500 GALLERY FILTER \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n    document.querySelectorAll('.gallery-btn').forEach(btn => {\n      btn.addEventListener('click', () => {\n        document.querySelectorAll('.gallery-btn').forEach(b => b.classList.remove('active'));\n        btn.classList.add('active');\n      });\n    });\n\n    \/\/ \u2500\u2500\u2500 BEFORE \/ AFTER SLIDER \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n    const wrap   = document.getElementById('baWrap');\n    const after  = document.getElementById('baAfter');\n    const handle = document.getElementById('baHandle');\n    let dragging = false;\n\n    function setPos(x) {\n      const rect  = wrap.getBoundingClientRect();\n      const pct   = Math.min(Math.max((x - rect.left) \/ rect.width * 100, 0), 100);\n      after.style.clipPath  = `inset(0 ${100 - pct}% 0 0)`;\n      handle.style.left     = pct + '%';\n    }\n\n    handle.addEventListener('mousedown',  () => dragging = true);\n    handle.addEventListener('touchstart', () => dragging = true, { passive: true });\n    window.addEventListener('mouseup',    () => dragging = false);\n    window.addEventListener('touchend',   () => dragging = false);\n    window.addEventListener('mousemove',  e => { if (dragging) setPos(e.clientX); });\n    window.addEventListener('touchmove',  e => { if (dragging) setPos(e.touches[0].clientX); }, { passive: true });\n\n    \/\/ Init at 50%\n    setPos(wrap.getBoundingClientRect().left + wrap.offsetWidth \/ 2);\n    window.addEventListener('resize', () => setPos(wrap.getBoundingClientRect().left + wrap.offsetWidth \/ 2));\n  <\/script>\n<\/body>\n<\/html>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Viportas \u2014 Port\u00f5es, Automatismos e Assist\u00eancia T\u00e9cnica \ud83d\udccd Norte de Portugal \u2014 Braga, Porto, Viana do Castelo e arredores geral@viportas.pt \ud83d\udcde 967 147 535 IG FB VIPORTAS Servi\u00e7os Galeria Como trabalhamos FAQ Pedir or\u00e7amento Instala\u00e7\u00e3o \u00b7 Automatiza\u00e7\u00e3o \u00b7 Assist\u00eancia 24h Port\u00f5es queprotegemo que importa. Instalamos, automatizamos e reparamos port\u00f5es residenciais e industriais no Norte de [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"zakra_page_container_layout":"stretched","zakra_page_sidebar_layout":"no_sidebar","zakra_remove_content_margin":false,"zakra_sidebar":"customizer","zakra_transparent_header":"1","zakra_logo":0,"zakra_main_header_style":"default","zakra_menu_item_color":"","zakra_menu_item_hover_color":"","zakra_menu_item_active_color":"","zakra_menu_active_style":"","zakra_page_header":false,"footnotes":""},"class_list":["post-499","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/viportas.pt\/index.php?rest_route=\/wp\/v2\/pages\/499","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/viportas.pt\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/viportas.pt\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/viportas.pt\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/viportas.pt\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=499"}],"version-history":[{"count":3,"href":"https:\/\/viportas.pt\/index.php?rest_route=\/wp\/v2\/pages\/499\/revisions"}],"predecessor-version":[{"id":509,"href":"https:\/\/viportas.pt\/index.php?rest_route=\/wp\/v2\/pages\/499\/revisions\/509"}],"wp:attachment":[{"href":"https:\/\/viportas.pt\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=499"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}