/* Inter alojada localmente (sem pedidos à Google Fonts: RGPD) */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url(fonts/inter-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
html { scroll-behavior: smooth; }
body { font-family: 'Inter', sans-serif; }
.scroll-mt { scroll-margin-top: 120px; }
/* Simple fade/scale transition for modals */
.modal-enter { transition: opacity .2s ease, transform .2s ease; }

/* ---------- Dinamismo ---------- */
#progress { position: fixed; top: 0; left: 0; height: 3px; width: 0; background: linear-gradient(90deg,#EA580C,#F97316,#FDBA74); z-index: 60; }

/* Revelação ao fazer scroll (só ativa com JS) */
.js .reveal { opacity: 0; transform: translateY(28px); transition: opacity .7s cubic-bezier(.2,.7,.2,1), transform .7s cubic-bezier(.2,.7,.2,1); transition-delay: var(--d, 0ms); }
.js .reveal.in { opacity: 1; transform: none; }

/* Entrada do hero */
@keyframes heroIn { from { opacity: 0; transform: translateY(26px); } to { opacity: 1; transform: none; } }
.hero-in { animation: heroIn .9s cubic-bezier(.2,.7,.2,1) both; animation-delay: var(--d, 0ms); }
@keyframes floaty { 0%,100% { transform: translate(0,0); } 50% { transform: translate(18px,-26px); } }
.float-slow { animation: floaty 10s ease-in-out infinite; }
.float-slower { animation: floaty 14s ease-in-out infinite reverse; }
@keyframes shimmer { to { background-position: 200% center; } }
.text-shimmer { background: linear-gradient(90deg,#fff 0%,#FDBA74 25%,#F97316 50%,#FDBA74 75%,#fff 100%); background-size: 200% auto; -webkit-background-clip: text; background-clip: text; color: transparent; animation: shimmer 6s linear infinite; }

/* Menu */
header.site-header { transition: background-color .3s, box-shadow .3s; }
header.site-header .nav-row { transition: height .3s ease; }
header.site-header.scrolled { background-color: rgba(15,23,42,.98); }
header.site-header.scrolled .nav-row { height: 4rem; }
.nav-link { position: relative; padding: 4px 0; }
.nav-link::after { content: ""; position: absolute; left: 0; bottom: -2px; height: 2px; width: 100%; background: #F97316; transform: scaleX(0); transform-origin: left; transition: transform .3s ease; }
.nav-link:hover::after, .nav-link.active::after { transform: scaleX(1); }
.nav-link.active { color: #F97316; }

/* Botões principais: brilho ao passar o rato */
.btn-shine { position: relative; overflow: hidden; }
.btn-shine::before { content: ""; position: absolute; top: 0; left: -75%; width: 50%; height: 100%; background: linear-gradient(120deg,transparent,rgba(255,255,255,.35),transparent); transform: skewX(-20deg); transition: left .6s ease; }
.btn-shine:hover::before { left: 130%; }

/* Marcas em movimento */
.marquee { overflow: hidden; -webkit-mask-image: linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent); mask-image: linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent); }
@keyframes marquee { to { transform: translateX(-50%); } }
.marquee-track { display: flex; width: max-content; animation: marquee 32s linear infinite; }
.marquee:hover .marquee-track { animation-play-state: paused; }
.marquee-track li { padding: 0 2.25rem; }
.brand-logo { height: 2.5rem; width: auto; max-width: 9rem; object-fit: contain; transition: transform .3s; }
.marquee-track li:hover .brand-logo { transform: scale(1.1); }

/* Botões flutuantes */
@keyframes ping-soft { 0% { transform: scale(1); opacity: .5; } 80%,100% { transform: scale(1.7); opacity: 0; } }
.ping-soft { animation: ping-soft 2.4s ease-out infinite; }
#to-top { transition: opacity .3s, transform .3s; }
#to-top.hide { opacity: 0; transform: translateY(12px); pointer-events: none; }

/* Formulário e contactos */
.field { width: 100%; border-radius: .75rem; border: 1px solid #cbd5e1; background: #f8fafc; padding: .75rem 1rem; font-size: .9rem; color: #0F172A; transition: border-color .2s, background-color .2s, box-shadow .2s; }
.field::placeholder { color: #94a3b8; }
.field:hover { border-color: #94a3b8; }
.field:focus { outline: none; border-color: #EA580C; background: #fff; box-shadow: 0 0 0 4px rgba(234,88,12,.14); }
select.field { appearance: none; -webkit-appearance: none; padding-right: 2.5rem; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='%2364748B' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='m19.5 8.25-7.5 7.5-7.5-7.5'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right .85rem center; background-size: 1.1rem; }
.contact-row { transition: background-color .25s, transform .25s; }
.contact-row:hover { background-color: rgba(255,255,255,.06); transform: translateX(4px); }
.contact-row:hover .contact-ico { background-color: #EA580C; }
.contact-row:hover .contact-ico svg { color: #fff; }

/* Blaupunkt */
.bp-blue { color: #009FE3; }
.bp-dot { display: inline-block; width: .7rem; height: .7rem; border-radius: 9999px; background: #009FE3; box-shadow: 0 0 0 4px rgba(0,159,227,.18); }
.bp-feature { transition: transform .25s, box-shadow .25s, border-color .25s; }
.bp-feature:hover { transform: translateY(-3px); box-shadow: 0 12px 24px -12px rgba(0,159,227,.35); border-color: #009FE3; }
.bp-card { background: radial-gradient(120% 90% at 100% 0%, rgba(0,159,227,.22), transparent 55%), #0F172A; }
.bp-btn { transition: transform .2s, background-color .2s, color .2s, border-color .2s; }
.bp-btn:hover { transform: translateY(-2px); }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .js .reveal { opacity: 1; transform: none; transition: none; }
  .hero-in, .float-slow, .float-slower, .text-shimmer, .marquee-track, .ping-soft { animation: none !important; }
}

/* Substitutos dos atributos style="" (permitem CSP sem 'unsafe-inline') */
.d1 { --d: 120ms; } .d2 { --d: 260ms; } .d3 { --d: 400ms; } .d4 { --d: 540ms; }
.bp-bg { background: #009FE3; }
.bp-bg-grad { background: linear-gradient(160deg,#33B5EC,#007BB8); }
/* Campo isco anti-spam: invisível para pessoas */
.hp { position: absolute; left: -10000px; top: auto; width: 1px; height: 1px; overflow: hidden; }

/* ---------- Secção "Porquê escolher": cartões premium ---------- */
.about-card { position: relative; overflow: hidden; background: #fff; border: 1px solid #e2e8f0; border-radius: 1.75rem; padding: 2rem 1.75rem 1.9rem; transition: transform .4s cubic-bezier(.2,.8,.2,1), box-shadow .4s, border-color .4s; }
.about-card::before { content: ""; position: absolute; inset: 0 0 auto 0; height: 3px; background: linear-gradient(90deg,#EA580C,#F97316,#FDBA74); transform: scaleX(0); transform-origin: left; transition: transform .55s cubic-bezier(.2,.8,.2,1); }
.about-card::after { content: attr(data-n); position: absolute; top: .9rem; right: 1.4rem; font-size: 3.6rem; font-weight: 800; line-height: 1; letter-spacing: -.04em; color: #f1f5f9; transition: color .4s, transform .4s; pointer-events: none; }
.about-card:hover { transform: translateY(-8px); border-color: rgba(249,115,22,.45); box-shadow: 0 30px 60px -28px rgba(234,88,12,.5), 0 8px 20px -12px rgba(15,23,42,.25); }
.about-card:hover::before { transform: scaleX(1); }
.about-card:hover::after { color: #ffedd5; transform: translateY(-3px); }

.about-icon { position: relative; width: 4.9rem; height: 4.9rem; display: flex; align-items: center; justify-content: center; border-radius: 1.5rem; background: linear-gradient(145deg,#1e293b 0%,#0F172A 75%); border: 1px solid rgba(249,115,22,.4); box-shadow: 0 16px 32px -12px rgba(234,88,12,.6), inset 0 1px 0 rgba(255,255,255,.12); animation: bob 6s ease-in-out infinite; transition: transform .45s cubic-bezier(.2,.8,.2,1), background .45s, box-shadow .45s; }
.about-icon::before { content: ""; position: absolute; inset: -8px; border-radius: 1.9rem; border: 1.5px dashed rgba(249,115,22,.55); opacity: 0; transform: scale(.88) rotate(0deg); transition: opacity .4s, transform 1s cubic-bezier(.2,.8,.2,1); }
.about-icon::after { content: ""; position: absolute; inset: 0; border-radius: inherit; background: radial-gradient(circle at 30% 20%, rgba(255,255,255,.22), transparent 55%); pointer-events: none; }
.about-icon svg { position: relative; z-index: 1; width: 2.45rem; height: 2.45rem; color: #FDBA74; filter: drop-shadow(0 0 10px rgba(249,115,22,.75)); transition: color .35s, transform .45s cubic-bezier(.2,.8,.2,1); }
.about-card:hover .about-icon { transform: scale(1.1) rotate(-5deg); background: linear-gradient(145deg,#FB923C 0%,#EA580C 80%); box-shadow: 0 22px 40px -12px rgba(234,88,12,.85), inset 0 1px 0 rgba(255,255,255,.35); }
.about-card:hover .about-icon::before { opacity: 1; transform: scale(1) rotate(120deg); }
.about-card:hover .about-icon svg { color: #fff; transform: scale(1.08); }
.about-card:nth-child(2) .about-icon { animation-delay: -1.5s; }
.about-card:nth-child(3) .about-icon { animation-delay: -3s; }
.about-card:nth-child(4) .about-icon { animation-delay: -4.5s; }
.about-rule { display: block; width: 2.5rem; height: 3px; margin: .9rem 0 .9rem; border-radius: 9999px; background: linear-gradient(90deg,#EA580C,#FDBA74); transition: width .5s cubic-bezier(.2,.8,.2,1); }
.about-card:hover .about-rule { width: 4.5rem; }
@keyframes bob { 0%,100% { translate: 0 0; } 50% { translate: 0 -6px; } }
@media (prefers-reduced-motion: reduce) { .about-icon { animation: none !important; } .about-card, .about-icon, .about-icon svg { transition: none !important; } }
