/* =========================================================
   UGT Viseu — Design tokens
   Paleta dominada pelo vermelho da UGT, com dourado de destaque
   e tinta profunda para contraste. Tipografia: Fraunces (títulos)
   + Inter (corpo) + IBM Plex Mono (dados/estatuto).
   ========================================================= */
:root{
  --ink:        #1A0E12;
  --ink-soft:   #3A1620;
  --red:        #C31E3A;
  --red-dark:   #8E1428;
  --red-deep:   #6E0F1F;
  --red-bright: #E22C46;
  --gold:       #E3A93B;
  --gold-dark:  #B9822A;
  --paper:      #FBF6F2;
  --paper-alt:  #F5E9E4;
  --line:       #EAD9D3;
  --text:       #241014;
  --text-soft:  #6B4A50;
  --white:      #FFFFFF;

  --font-display: "Fraunces", Georgia, serif;
  --font-body: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --font-mono: "IBM Plex Mono", ui-monospace, monospace;

  --radius: 14px;
  --radius-sm: 8px;
  --shadow: 0 12px 30px -14px rgba(142, 20, 40, 0.35);
  --wrap: 1200px;
  --header-h: 76px;
}

*{ box-sizing: border-box; }
[hidden]{ display:none !important; }
html{ scroll-behavior: smooth; }
body{
  margin:0;
  background: var(--paper);
  color: var(--text);
  font-family: var(--font-body);
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}
img{ max-width:100%; display:block; }
a{ color: inherit; }
.wrap{ max-width: var(--wrap); margin: 0 auto; padding: 0 24px; }

h1,h2,h3{ font-family: var(--font-display); color: var(--ink); margin: 0 0 .4em; font-weight: 600; }
h1{ font-size: clamp(2.2rem, 5vw, 3.5rem); line-height: 1.05; letter-spacing: -0.01em; }
h2{ font-size: clamp(1.6rem, 3vw, 2.2rem); line-height: 1.15; }
p{ margin: 0 0 1em; }

.eyebrow{
  font-family: var(--font-mono);
  font-size: .78rem;
  font-weight: 600;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--red);
  margin: 0 0 .8em;
  display:inline-flex; align-items:center; gap:8px;
}
.eyebrow::before{ content:""; width:18px; height:2px; background:var(--red); display:inline-block; }

@media (prefers-reduced-motion: reduce){
  *{ animation-duration: 0.001ms !important; animation-iteration-count: 1 !important; transition-duration: 0.001ms !important; scroll-behavior:auto !important; }
}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:.5em;
  padding: .85em 1.6em;
  border-radius: 999px;
  font-weight: 600;
  font-size: .95rem;
  text-decoration: none;
  border: 1.5px solid transparent;
  cursor:pointer;
  transition: transform .15s ease, box-shadow .15s ease, background .15s ease, color .15s ease;
  font-family: var(--font-body);
}
.btn:focus-visible{ outline: 3px solid var(--gold); outline-offset: 2px; }
.btn-primary{ background: var(--red); color: var(--white); box-shadow: var(--shadow); }
.btn-primary:hover{ background: var(--red-dark); transform: translateY(-1px); }
.btn-secondary{ background: var(--ink); color: var(--white); }
.btn-secondary:hover{ background: var(--ink-soft); transform: translateY(-1px); }
.btn-ghost{ background: transparent; color: var(--ink); border-color: var(--line); }
.btn-ghost:hover{ border-color: var(--red); color: var(--red); }
.btn-block{ width:100%; }
.btn-sm{ padding:.5em 1em; font-size:.82rem; }

/* ---------- header / mega menu ---------- */
.site-header{
  position: fixed; top:0; left:0; right:0; z-index: 100;
  background: linear-gradient(180deg, rgba(20,10,13,.55) 0%, rgba(20,10,13,.18) 70%, rgba(20,10,13,0) 100%);
  border-bottom: 3px solid transparent;
  transition: background-color .3s ease, box-shadow .3s ease, border-color .3s ease, backdrop-filter .3s ease;
}
.site-header.is-solid{
  background: rgba(251,246,242,0.94);
  backdrop-filter: saturate(160%) blur(10px);
  border-bottom-color: var(--red);
  box-shadow: 0 12px 30px -22px rgba(26,14,18,.5);
}
.header-top{
  background: rgba(15,8,10,.32);
  color: #F3E4DE;
  font-size: .78rem;
  transition: background-color .3s ease;
}
.site-header.is-solid .header-top{ background: var(--ink); }
.header-top .wrap{ display:flex; justify-content:space-between; align-items:center; padding-top:6px; padding-bottom:6px; gap:12px; flex-wrap:wrap;}
.header-top a{ text-decoration:none; color:#F3E4DE; }
.header-top a:hover{ color: var(--gold); }
.header-top-links{ display:flex; gap:16px; flex-wrap:wrap; }

.header-inner{ display:flex; align-items:center; justify-content:space-between; gap: 20px; padding-top:12px; padding-bottom:12px; min-height: var(--header-h); }
.brand{ display:flex; align-items:center; gap:12px; text-decoration:none; flex:none; }
.brand img{ height:44px; width:auto; filter: drop-shadow(0 2px 8px rgba(0,0,0,.45)); transition: filter .3s ease; }
.site-header.is-solid .brand img{ filter:none; }
.brand-mark-only{ display:none; }
.brand-name{
  font-family: var(--font-display); font-weight:600; font-size:.92rem; line-height:1.15;
  color: var(--white); max-width: 168px; letter-spacing:-.01em; text-shadow: 0 1px 6px rgba(0,0,0,.45);
  transition: color .3s ease, text-shadow .3s ease;
}
.site-header.is-solid .brand-name{ color: var(--ink); text-shadow:none; }
@media (max-width: 700px){ .brand-name{ display:none; } }

.main-nav{ display:flex; gap: 4px; font-weight:600; font-size:.92rem; }
.nav-item-wrap{ position:relative; }
.main-nav > .nav-item-wrap > a, .main-nav > .nav-item-wrap > button{
  text-decoration:none; color: rgba(255,255,255,.92); position:relative; padding: 10px 12px;
  background:none; border:none; font: inherit; cursor:pointer; display:flex; align-items:center; gap:5px;
  border-radius: var(--radius-sm); transition: color .2s ease, background-color .2s ease;
}
.site-header.is-solid .main-nav > .nav-item-wrap > a, .site-header.is-solid .main-nav > .nav-item-wrap > button{ color: var(--ink-soft); }
.main-nav a[aria-current="page"], .main-nav .is-current{ color: var(--gold) !important; }
.site-header.is-solid .main-nav a[aria-current="page"], .site-header.is-solid .main-nav .is-current{ color: var(--red) !important; }
.main-nav > .nav-item-wrap > a:hover, .main-nav > .nav-item-wrap > button:hover{ color: var(--gold); background: rgba(255,255,255,.1); }
.site-header.is-solid .main-nav > .nav-item-wrap > a:hover, .site-header.is-solid .main-nav > .nav-item-wrap > button:hover{ color: var(--red); background: var(--paper-alt); }
.chev{ width:9px; height:9px; border-right:2px solid currentColor; border-bottom:2px solid currentColor; transform: rotate(45deg); margin-top:-3px; transition: transform .15s ease; }
.nav-item-wrap.open .chev{ transform: rotate(-135deg); margin-top:3px; }

.mega{
  position:absolute; top: 100%; left:0;
  background: var(--white); border:1px solid var(--line); border-radius: var(--radius);
  box-shadow: 0 24px 48px -20px rgba(26,14,18,.35);
  padding: 14px; min-width: 260px; margin-top: 0;
  display:flex; flex-direction:column; gap:2px;
  border-top: 3px solid var(--red);
  opacity:0; visibility:hidden; transform: translateY(0); pointer-events:none;
  transition: opacity .16s ease, visibility .16s;
}
.nav-item-wrap.open > .mega{ opacity:1; visibility:visible; pointer-events:auto; }
/* Os submenus aparecem ao passar o rato por cima do menu principal — não é preciso clicar (ecrãs largos).
   O painel encosta diretamente ao botão (sem espaço morto) para o hover nunca se perder ao mover o rato. */
@media (min-width:981px){
  .nav-item-wrap:hover > .mega, .nav-item-wrap:focus-within > .mega{
    opacity:1; visibility:visible; pointer-events:auto;
  }
  .nav-item-wrap:hover > button .chev, .nav-item-wrap:focus-within > button .chev{ transform: rotate(-135deg); margin-top:3px; }
}
.mega a{ text-decoration:none; color: var(--ink-soft); padding: 9px 12px; border-radius: var(--radius-sm); font-size:.9rem; font-weight:500; }
.mega a:hover{ background: var(--paper-alt); color: var(--red); }
.mega a.is-current, .mobile-sub a.is-current{ background: rgba(195,30,58,.08); color: var(--red); font-weight:700; }
.mega .mega-heading{ font-family:var(--font-mono); font-size:.7rem; text-transform:uppercase; letter-spacing:.06em; color:var(--gold-dark); padding: 8px 12px 2px; }

.header-actions{ display:flex; align-items:center; gap: 12px; }
.nav-toggle{ display:none; flex-direction:column; justify-content:center; gap:5px; width:42px; height:42px; border:1.5px solid rgba(255,255,255,.5); background:rgba(255,255,255,.12); border-radius:8px; cursor:pointer; flex:none; transition: background-color .3s ease, border-color .3s ease; }
.site-header.is-solid .nav-toggle{ border-color: var(--line); background:var(--white); }
.nav-toggle span{ display:block; height:2px; background:var(--white); margin:0 8px; border-radius:2px; transition: background-color .3s ease; }
.site-header.is-solid .nav-toggle span{ background: var(--ink); }

.mobile-nav{
  display:none; flex-direction:column; padding: 6px 24px 20px; gap: 2px;
  max-height: calc(100vh - var(--header-h)); overflow-y:auto;
  background: var(--paper); border-top: 1px solid var(--line); box-shadow: 0 20px 40px -24px rgba(26,14,18,.4);
}
.mobile-nav a, .mobile-nav button{
  text-decoration:none; color: var(--ink); font-weight:600; padding:13px 4px; border-bottom:1px solid var(--line);
  background:none; border-left:none; border-right:none; border-top:none; width:100%; text-align:left; font: inherit; cursor:pointer;
  display:flex; align-items:center; justify-content:space-between;
}
.mobile-sub{ display:none; flex-direction:column; padding-left: 14px; }
.mobile-sub.open{ display:flex; }
.mobile-sub a{ font-weight:500; font-size:.92rem; color:var(--text-soft); padding:11px 4px; }
.mobile-nav .btn{ margin-top:14px; }

@media (max-width: 980px){
  .main-nav{ display:none; }
  .nav-toggle{ display:flex; }
  .mobile-nav.open{ display:flex; }
  .header-top-links{ display:none; }
}
@media (max-width: 420px){
  .brand small, .brand strong{ font-size:.9rem; }
  .brand img{ height:38px; }
}

/* Compensa a altura do cabeçalho fixo/transparente no topo de cada página.
   O smart-slider (homepage) fica de propósito sem esta compensação, para se fundir com o menu. */
.page-hero{ padding-top: calc(var(--header-h-live, 116px) + 56px) !important; }
/* Garante que qualquer link com âncora (#ofertas, #pre-inscricao, etc.) não fica escondido atrás do cabeçalho fixo. */
section[id], main[id], nav[id]{ scroll-margin-top: calc(var(--header-h-live, 116px) + 16px); }

/* ---------- page hero (inner pages) ---------- */
.page-hero{
  background:
    linear-gradient(135deg, rgba(110,15,31,.93), rgba(195,30,58,.93) 60%, rgba(226,44,70,.9)),
    url("https://www.ugtviseu.pt/wp-content/uploads/FUNDO_SITE_2.jpg") center / cover no-repeat;
  color: var(--white);
  padding: 56px 0 64px;
  position: relative;
  overflow: hidden;
}
.page-hero::after{
  content:""; position:absolute; inset:0;
  background: radial-gradient(circle at 85% 20%, rgba(227,169,59,.35), transparent 55%);
  pointer-events:none;
}
.page-hero .eyebrow{ color: var(--gold); }
.page-hero .eyebrow::before{ background: var(--gold); }
.page-hero h1{ color: var(--white); max-width: 22ch; }
.page-hero p{ color: rgba(255,255,255,.88); max-width: 60ch; font-size:1.05rem; }
.breadcrumb{ font-family: var(--font-mono); font-size:.78rem; color: rgba(255,255,255,.75); margin-bottom:16px; }
.breadcrumb a{ text-decoration:none; color: rgba(255,255,255,.85); }
.breadcrumb a:hover{ color: var(--white); }

/* ---------- hero-route-band (home) — une o slider ao resto da página ---------- */
.hero-route-band{ position:relative; z-index:5; margin-top: -68px; padding-bottom: 8px; }
.route-shelf{
  background: var(--white); border-radius: var(--radius);
  box-shadow: 0 30px 60px -28px rgba(26,14,18,.3);
  border-top: 4px solid var(--gold);
  padding: 42px 40px; display:grid; grid-template-columns: 1.15fr .85fr; gap: 40px; align-items:center;
}
.hero-lede{ font-size: 1.05rem; color: var(--text-soft); max-width: 46ch; }
.hero-ctas{ display:flex; gap:14px; flex-wrap:wrap; margin-top: 14px; }

.hero-route{ position:relative; display:flex; flex-direction:column; align-items:center; }
.route-svg{ width:100%; max-width:320px; height:auto; }
.route-progress{ stroke-dasharray: 900; stroke-dashoffset: 900; animation: draw-route 2.2s ease forwards .3s; }
@keyframes draw-route{ to{ stroke-dashoffset: 0; } }
.route-labels{ list-style:none; margin: -18px 0 0; padding:0; display:flex; flex-direction:column; gap: 46px; width:100%; max-width: 320px; font-size:.85rem; color: var(--text-soft); }
.route-labels li{ padding-left: 26px; position:relative; }
.route-labels strong{ color: var(--ink); font-family: var(--font-display); font-weight:600; }
.dot{ position:absolute; left:0; top:5px; width:12px; height:12px; border-radius:50%; }
.dot-red{ background: var(--paper); border:3px solid var(--red); }
.dot-gold{ background: var(--paper); border:3px solid var(--gold); }
.dot-solid{ background: var(--red); }

@media (max-width: 900px){
  .route-shelf{ grid-template-columns: 1fr; padding: 34px 28px; }
  .hero-route{ order:-1; }
}
@media (max-width: 640px){
  .hero-route-band{ margin-top: -40px; }
  .route-shelf{ padding: 28px 22px; border-radius: var(--radius-sm); }
}

/* ---------- stats ---------- */
.stats{ background: var(--ink); color:var(--white); }
.stats-grid{ display:grid; grid-template-columns: repeat(4, 1fr); gap: 20px; padding: 32px 24px; }
.stat{ text-align:center; }
.stat-number{ display:block; font-family: var(--font-display); font-size: 2.1rem; color: var(--gold); font-weight:700; }
.stat-label{ font-size:.85rem; color: #D8C3C7; }
@media (max-width: 720px){ .stats-grid{ grid-template-columns: repeat(2,1fr); } }

/* ---------- sections ---------- */
.section{ padding: 72px 0; }
.section-alt{ background: var(--paper-alt); }
.section-red{
  background:
    linear-gradient(135deg, rgba(110,15,31,.92), rgba(195,30,58,.9)),
    url("https://www.ugtviseu.pt/wp-content/uploads/img_Construir-1.jpg") center / cover no-repeat;
  color:var(--white);
}
.section-red h2, .section-red .eyebrow{ color: var(--white); }
.section-red .eyebrow::before{ background:var(--gold); }

/* ---------- faixa de parceiros / entidades financiadoras ---------- */
.partners-strip{ padding: 44px 0; border-top:1px solid var(--line); }
.partners-strip .partners-head{ text-align:center; margin-bottom: 26px; }
.partners-strip .partners-head p{ margin:0; font-family: var(--font-mono); font-size:.78rem; font-weight:600; letter-spacing:.08em; text-transform:uppercase; color: var(--text-soft); }
.partners-row{ display:flex; align-items:center; justify-content:center; gap: 46px; flex-wrap:wrap; }
.partners-row img{ height: 46px; width:auto; max-width: 160px; object-fit:contain; filter: grayscale(15%); opacity:.9; transition: opacity .15s ease, transform .15s ease; }
.partners-row a:hover img{ opacity:1; transform: translateY(-2px); }
.section-head{ max-width: 680px; margin-bottom: 40px; }
.section-lede{ color: var(--text-soft); }
.section-head.center{ margin-left:auto; margin-right:auto; text-align:center; }

.state-msg{ font-family: var(--font-mono); font-size:.9rem; color: var(--text-soft); padding: 20px 0; }
.state-msg.is-error{ color: var(--red-dark); }

/* ---------- course cards ---------- */
.cards-grid{ display:grid; grid-template-columns: repeat(3, 1fr); gap: 22px; }
@media (max-width: 980px){ .cards-grid{ grid-template-columns: repeat(2,1fr); } }
@media (max-width: 640px){ .cards-grid{ grid-template-columns: 1fr; } }

.course-card{
  background: var(--white); border: 1px solid var(--line); border-radius: var(--radius);
  padding: 22px; display:flex; flex-direction:column; gap: 10px; box-shadow: var(--shadow);
  border-top: 3px solid var(--red); overflow:hidden;
}
.course-card-img{ margin: -22px -22px 4px; aspect-ratio: 16/9; overflow:hidden; background: var(--paper-alt); }
.course-card-img img{ width:100%; height:100%; object-fit:cover; }
.course-card .tag-row{ display:flex; gap:8px; flex-wrap:wrap; align-items:center; }
.tag{ font-family: var(--font-mono); font-size:.72rem; font-weight:600; letter-spacing:.03em; padding: 3px 9px; border-radius: 999px; background: var(--paper-alt); color: var(--ink-soft); }
.tag-funded{ background: rgba(227,169,59,.22); color: var(--gold-dark); }
.course-card h3{ font-size:1.15rem; margin:0; }
.course-meta{ list-style:none; margin:0; padding:0; font-size:.88rem; color: var(--text-soft); display:flex; flex-direction:column; gap:4px; }
.course-meta li strong{ color: var(--ink-soft); font-weight:600; }
.course-desc{ font-size:.92rem; color: var(--text-soft); flex:1; }
.course-card .btn{ align-self:flex-start; margin-top: 6px; padding: .65em 1.3em; font-size:.85rem; }

/* ---------- filtros da oferta formativa (homepage) ---------- */
.course-filters{ display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:16px; margin-bottom: 28px; }
.course-tabs{ display:inline-flex; gap:4px; background: var(--paper-alt); border:1px solid var(--line); border-radius: 999px; padding:4px; }
.course-tabs button{
  font: inherit; font-weight:600; font-size:.88rem; border:none; background:none; cursor:pointer;
  padding: 9px 18px; border-radius:999px; color: var(--text-soft); transition: background-color .18s ease, color .18s ease;
}
.course-tabs button.is-active{ background: var(--red); color: var(--white); box-shadow: 0 4px 12px -4px rgba(195,30,58,.5); }
.course-tabs button:not(.is-active):hover{ color: var(--ink); }
.course-month-filter{ display:flex; align-items:center; gap:8px; font-size:.86rem; font-weight:600; color: var(--ink-soft); }
.course-month-filter select{
  font: inherit; font-weight:500; padding: .55em .9em; border:1.5px solid var(--line); border-radius: var(--radius-sm);
  background: var(--white); color: var(--text); cursor:pointer;
}
.course-month-filter select:focus{ outline:none; border-color: var(--red); }
@media (max-width: 640px){
  .course-filters{ flex-direction:column; align-items:flex-start; }
  .course-tabs{ width:100%; }
  .course-tabs button{ flex:1; }
  .course-month-filter{ width:100%; justify-content:space-between; }
}
.jobs-list{ display:flex; flex-direction:column; gap: 16px; }
.job-card{
  background: var(--white); border:1px solid var(--line); border-left: 4px solid var(--red); border-radius: var(--radius);
  box-shadow: var(--shadow); overflow:hidden;
}
.job-card-head{
  width:100%; display:flex; align-items:center; justify-content:space-between; gap:20px; flex-wrap:wrap;
  padding: 22px 26px; background:none; border:none; text-align:left; font:inherit; cursor:pointer;
}
.job-card-title{ display:flex; flex-direction:column; gap:4px; }
.job-ref{
  align-self:flex-start; font-family: var(--font-mono); font-size:.7rem; font-weight:700; letter-spacing:.04em;
  color: var(--red); background: rgba(195,30,58,.08); border:1px solid rgba(195,30,58,.25);
  border-radius: 999px; padding: 3px 10px; margin-bottom:2px;
}
.job-card h3{ font-size:1.1rem; margin:0; }
.job-meta{ font-size:.88rem; color: var(--text-soft); margin:0; }
.job-meta strong{ color: var(--ink-soft); }
.job-chev{ width:11px; height:11px; border-right:2px solid var(--ink-soft); border-bottom:2px solid var(--ink-soft); transform: rotate(45deg); flex:none; transition: transform .2s ease; margin-right:4px; }
.job-card.open .job-chev{ transform: rotate(-135deg); margin-top:6px; }
.job-card-panel{ max-height:0; overflow:hidden; transition: max-height .35s ease; }
.job-card.open .job-card-panel{ max-height: 900px; }
.job-card-panel-inner{ padding: 0 26px 26px; border-top:1px solid var(--line); margin-top: -1px; padding-top:18px; }
.job-card-panel-inner h4{ font-family: var(--font-mono); font-size:.72rem; text-transform:uppercase; letter-spacing:.06em; color: var(--gold-dark); font-weight:700; margin: 16px 0 8px; }
.job-card-panel-inner h4:first-child{ margin-top:0; }
.job-card-panel-inner p{ color: var(--text-soft); font-size:.92rem; margin:0 0 6px; }
.job-card-panel-inner ul{ margin:0; padding-left:20px; color: var(--text-soft); font-size:.92rem; display:flex; flex-direction:column; gap:4px; }
.job-card-panel-inner .job-apply-note{ background: var(--paper-alt); border:1px dashed var(--line); border-radius: var(--radius-sm); padding: 12px 14px; font-size:.88rem; color: var(--ink-soft); margin: 10px 0 14px; }
.job-card-panel-inner .job-apply-note strong{ color: var(--red); }
.job-card-panel-inner .tag-row{ margin-top: 6px; }
.job-card .btn{ padding:.65em 1.3em; font-size:.85rem; flex:none; }

/* ---------- generic content grid / cards ---------- */
.info-grid{ display:grid; grid-template-columns: repeat(3,1fr); gap:22px; }
@media (max-width: 980px){ .info-grid{ grid-template-columns: repeat(2,1fr); } }
@media (max-width: 640px){ .info-grid{ grid-template-columns: 1fr; } }
/* 7 áreas de formação: grelha responsiva para não deixar uma última linha desequilibrada */
#areas .info-grid{ grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); }

/* ---------- Lista de parceiros (Protocolos) ---------- */
.partners-head{
  display:flex; align-items:baseline; justify-content:space-between; gap:16px; flex-wrap:wrap;
  margin: 28px 0 10px; padding-top: 24px; border-top: 1px solid var(--line);
}
.partners-head .eyebrow{ margin:0; }
.partners-count{
  font-family: var(--font-mono); font-size:.76rem; font-weight:700; color: var(--gold-dark);
  background: rgba(227,169,59,.14); border:1px solid rgba(227,169,59,.35); border-radius:999px; padding:3px 12px;
  flex:none;
}
.partners-list{
  list-style:none; margin:0; padding:0; column-count:2; column-gap:32px;
}
.partners-list.partners-list-lg{ column-count:3; }
.partners-list li{
  break-inside: avoid; display:flex; align-items:flex-start; gap:10px;
  padding: 11px 0; border-bottom: 1px dashed var(--line); font-size:.92rem; color: var(--ink-soft);
  font-weight:600; line-height:1.35;
}
.partners-list li::before{ content:"🤝"; flex:none; font-size:.82rem; line-height:1.5; opacity:.85; }
@media (max-width: 900px){ .partners-list.partners-list-lg{ column-count:2; } }
@media (max-width: 640px){ .partners-list, .partners-list.partners-list-lg{ column-count:1; } }
.info-card{
  background: var(--white); border:1px solid var(--line); border-radius: var(--radius); padding: 26px;
  box-shadow: var(--shadow); display:flex; flex-direction:column; gap:10px;
}
.info-card .icon{ width:46px; height:46px; border-radius:12px; background: var(--red); color:var(--white); display:flex; align-items:center; justify-content:center; font-size:1.3rem; margin-bottom:4px; }
.info-card h3{ font-size:1.1rem; margin:0; }
.info-card p{ color:var(--text-soft); font-size:.92rem; margin:0; }
.info-card ul{ margin:0; padding-left:18px; color:var(--text-soft); font-size:.9rem; }
.info-card a.card-link{ margin-top:auto; font-weight:600; color:var(--red); text-decoration:none; font-size:.9rem; }
.info-card a.card-link:hover{ text-decoration:underline; }

/* ---------- Cartões de contacto do GIP (Viseu / Lamego) ---------- */
.gip-contact-grid{ display:grid; grid-template-columns: 1fr 1fr; gap: 28px; margin-top: 8px; }
@media (max-width: 780px){ .gip-contact-grid{ grid-template-columns: 1fr; } }

.gip-contact-card{
  background: var(--white); border:1px solid var(--line); border-radius: var(--radius);
  box-shadow: var(--shadow); padding: 30px 30px 26px; border-top: 4px solid var(--red);
  display:flex; flex-direction:column; gap: 22px;
}
.gip-contact-card:nth-of-type(2){ border-top-color: var(--gold); }

.gip-tag{
  align-self:flex-start; font-family: var(--font-mono); font-size:.72rem; font-weight:700;
  text-transform:uppercase; letter-spacing:.05em; color: var(--red); background: rgba(195,30,58,.08);
  border:1px solid rgba(195,30,58,.25); border-radius:999px; padding:4px 12px;
}
.gip-contact-card:nth-of-type(2) .gip-tag{ color: var(--gold-dark); background: rgba(227,169,59,.14); border-color: rgba(227,169,59,.35); }

/* Bloco da animadora responsável — destacado de propósito, nunca escondido no meio do texto */
.gip-animadora{
  display:flex; align-items:center; gap:16px; background: var(--paper-alt);
  border:1px solid var(--line); border-radius: var(--radius-sm); padding: 16px 18px;
}
.gip-avatar{
  flex:none; width:56px; height:56px; border-radius:50%; background: var(--red); color:var(--white);
  display:flex; align-items:center; justify-content:center; font-family: var(--font-display);
  font-weight:700; font-size:1.15rem; letter-spacing:.02em;
}
.gip-contact-card:nth-of-type(2) .gip-avatar{ background: var(--gold-dark); }
.gip-animadora-label{ margin:0; font-family: var(--font-mono); font-size:.68rem; text-transform:uppercase; letter-spacing:.06em; color: var(--text-soft); }
.gip-animadora-name{ margin: 2px 0 0; font-family: var(--font-display); font-weight:700; font-size:1.25rem; color: var(--ink); }

.gip-detail-list{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; }
.gip-detail-list li{ display:flex; gap:14px; padding: 13px 0; border-top:1px solid var(--line); }
.gip-detail-list li:first-child{ border-top:none; padding-top:2px; }
.gip-detail-icon{ flex:none; width:22px; text-align:center; font-size:1.05rem; line-height:1.5; }
.gip-detail-list li > div{ display:flex; flex-direction:column; gap:2px; font-size:.92rem; color: var(--text-soft); line-height:1.5; }
.gip-detail-list li strong{ font-family: var(--font-mono); font-size:.68rem; text-transform:uppercase; letter-spacing:.05em; color: var(--gold-dark); font-weight:700; }
.gip-detail-list li a{ color: var(--ink); text-decoration:none; font-weight:600; }
.gip-detail-list li a:hover{ color: var(--red); text-decoration:underline; }
.gip-note{ margin:0; font-size:.76rem; color: var(--text-soft); opacity:.85; }

/* ---------- accordion (used for orgaos sociais / protocolos) ---------- */
.accordion{ display:flex; flex-direction:column; gap:12px; }
.accordion-item{ background:var(--white); border:1px solid var(--line); border-radius: var(--radius); overflow:hidden; }
.accordion-item > button{
  width:100%; display:flex; justify-content:space-between; align-items:center; gap:12px;
  padding:18px 22px; background:none; border:none; text-align:left; font: inherit; font-weight:700;
  font-family: var(--font-display); font-size:1.05rem; color:var(--ink); cursor:pointer;
}
.accordion-item > button:hover{ color: var(--red); }
.accordion-item .plus{ flex:none; width:26px; height:26px; border-radius:50%; background:var(--paper-alt); position:relative; }
.accordion-item .plus::before, .accordion-item .plus::after{ content:""; position:absolute; background:var(--red); left:50%; top:50%; transform:translate(-50%,-50%); }
.accordion-item .plus::before{ width:12px; height:2px; }
.accordion-item .plus::after{ width:2px; height:12px; transition: transform .2s ease; }
.accordion-item.open .plus::after{ transform: translate(-50%,-50%) rotate(90deg); }
.accordion-panel{ max-height:0; overflow:hidden; transition: max-height .25s ease; }
.accordion-item.open .accordion-panel{ max-height: 600px; }
.accordion-panel-inner{ padding: 0 22px 20px; color:var(--text-soft); font-size:.94rem; }
.accordion-panel-inner a{ color:var(--red); font-weight:600; text-decoration:none; }
.accordion-panel-inner a:hover{ text-decoration:underline; }

/* ---------- listas de órgãos sociais (nomes + sindicato) ---------- */
.orgao-suplentes-title{ font-family: var(--font-mono); font-size:.75rem; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color: var(--gold-dark); margin: 18px 0 8px; }
.orgao-list{ list-style:none; margin:0 0 4px; padding:0; display:flex; flex-direction:column; gap:2px; border-top:1px solid var(--line); }
.orgao-list li{
  display:flex; align-items:center; flex-wrap:wrap; gap: 6px 14px;
  padding: 11px 4px; border-bottom:1px solid var(--line); font-size:.92rem;
}
.orgao-list li strong{ color: var(--ink); font-weight:600; flex: 1 1 220px; }
.orgao-list li > span:not(.orgao-sind){ color: var(--red); font-size:.8rem; font-weight:600; font-family: var(--font-mono); text-transform:uppercase; letter-spacing:.03em; }
.orgao-sind{
  font-family: var(--font-mono); font-size:.72rem; font-weight:700; letter-spacing:.03em;
  background: var(--paper-alt); color: var(--ink-soft); padding: 3px 10px; border-radius:999px; flex:none;
}
.orgao-list-compact li{ padding: 8px 4px; font-size:.88rem; }
.orgao-list-compact li strong{ flex-basis: 260px; font-weight:500; }

/* ---------- tabs (used for protocolos / galeria) ---------- */
.tabs-bar{ display:flex; gap:8px; flex-wrap:wrap; margin-bottom:30px; scroll-margin-top: calc(var(--header-h-live, 116px) + 16px); }
.tabs-bar button{
  border: 1.5px solid var(--line); background: var(--white); color: var(--ink-soft); padding: 9px 18px;
  border-radius: 999px; font: inherit; font-weight:600; font-size:.85rem; cursor:pointer;
}
.tabs-bar button.is-active{ background: var(--red); border-color: var(--red); color:var(--white); }
.tab-content{ display:none; }
.tab-content.is-active{ display:block; }

/* ---------- gallery ---------- */
.gallery-grid{ display:grid; grid-template-columns: repeat(3,1fr); gap:16px; }
@media (max-width: 900px){ .gallery-grid{ grid-template-columns: repeat(2,1fr); } }
@media (max-width: 560px){ .gallery-grid{ grid-template-columns: 1fr; } }
.gallery-tile{
  aspect-ratio: 4/3; border-radius: var(--radius); overflow:hidden; position:relative;
  background: linear-gradient(140deg, var(--red-deep), var(--red));
  display:flex; align-items:flex-end; padding:16px; color:var(--white);
}
.gallery-tile span{ font-family: var(--font-mono); font-weight:600; font-size:.85rem; letter-spacing:.02em; position:relative; z-index:1; }
.gallery-tile::before{ content:""; position:absolute; inset:0; background: radial-gradient(circle at 30% 20%, rgba(255,255,255,.18), transparent 60%); }

/* ---------- sindicato / quote ---------- */
.sindicato-grid{ display:grid; grid-template-columns: 1.2fr .8fr; gap: 50px; align-items:start; }
@media (max-width: 900px){ .sindicato-grid{ grid-template-columns: 1fr; } }

/* Foto do GIP (secção "O que é / Objetivos") — enquadrada de forma consistente
   independentemente da proporção original da imagem. */
.gip-photo {
  width: 100%;
  height: auto;
  overflow: visible;
}

.gip-photo img {
  display: block;
  width: 100%;
  height: auto;
  max-width: 100%;
  object-fit: contain;
}

/* Imagem de topo em formato banner, usada em várias secções (ex.: Ofertas de Emprego) */
.section-banner-img{
  width:100%; aspect-ratio: 21 / 8; object-fit:cover; display:block;
  border-radius: var(--radius); box-shadow: var(--shadow); margin-bottom: 36px;
}
@media (max-width: 640px){ .section-banner-img{ aspect-ratio: 4 / 3; margin-bottom: 28px; } }
.check-list{ list-style:none; margin: 18px 0 0; padding:0; display:flex; flex-direction:column; gap:12px; }
.check-list li{ padding-left: 28px; position:relative; color: var(--text-soft); font-size:.95rem; }
.check-list li::before{ content:"✓"; position:absolute; left:0; top:0; color: var(--red); font-weight:700; }

.quote-card{ background: var(--ink); color: var(--paper); border-radius: var(--radius); padding: 34px; font-family: var(--font-display); border-top:4px solid var(--gold); }
.quote-card p{ font-size: 1.2rem; line-height:1.4; margin-bottom: 16px; }
.quote-card span{ font-family: var(--font-mono); font-size:.8rem; color: var(--gold); text-transform:uppercase; letter-spacing:.05em; }

/* ---------- forms (contactos / pré-inscrição) ---------- */
.form-card{ background: var(--white); border:1px solid var(--line); border-radius: var(--radius); padding: 30px; box-shadow: var(--shadow); }
.form-grid{ display:grid; grid-template-columns: 1fr 1fr; gap:16px; }
@media (max-width:640px){ .form-grid{ grid-template-columns: 1fr; } }
.form-grid label, .form-card label{ display:flex; flex-direction:column; gap:6px; font-size:.88rem; font-weight:600; color:var(--ink-soft); }
.form-card input, .form-card select, .form-card textarea{
  font: inherit; padding: .75em .9em; border:1.5px solid var(--line); border-radius: var(--radius-sm); background:var(--paper); color:var(--text);
}
.form-card input:focus, .form-card select:focus, .form-card textarea:focus{ outline:none; border-color:var(--red); }
.form-full{ grid-column: 1 / -1; }
.form-note{ font-size:.82rem; color:var(--text-soft); margin-top:10px; }

/* ---------- footer ---------- */
.site-footer{ background: var(--ink); color: #D8C3C7; padding-top: 60px; }
.footer-grid{ display:grid; grid-template-columns: 1.4fr 1fr 1fr 1fr; gap: 32px; padding-bottom: 40px; }
.site-footer h3{ color: var(--white); font-size:1rem; font-family: var(--font-body); font-weight:600; margin-bottom: 10px; }
.site-footer a{ text-decoration:none; color:#D8C3C7; }
.site-footer a:hover{ color: var(--gold); }
.footer-brand{ display:flex; align-items:center; gap:10px; margin-bottom:10px; }
.footer-brand img{ height:38px; }
.footer-brand strong{ color: var(--white); font-family: var(--font-display); font-size:1.1rem; }
.footer-note{ color:#B992A0; font-size:.9rem; }
.footer-bottom{ border-top: 1px solid rgba(255,255,255,.12); padding: 18px 24px; font-size:.8rem; color:#B992A0; display:flex; justify-content:space-between; flex-wrap:wrap; gap:8px; }
.footer-social{ display:flex; gap:12px; }
.footer-social a{ width:34px; height:34px; border-radius:50%; background: rgba(255,255,255,.08); display:flex; align-items:center; justify-content:center; }
.footer-social a:hover{ background: var(--red); color:var(--white); }
@media (max-width: 780px){ .footer-grid{ grid-template-columns: 1fr 1fr; } }
@media (max-width: 480px){ .footer-grid{ grid-template-columns: 1fr; } }

/* ---------- utility: safe area for mobile devices (notch) ---------- */
.site-header{ padding-top: env(safe-area-inset-top); }
body{ padding-bottom: env(safe-area-inset-bottom); }

/* ---------- back to top ---------- */
.to-top{
  position:fixed; right:18px; bottom:18px; width:46px; height:46px; border-radius:50%;
  background:var(--red); color:var(--white); display:flex; align-items:center; justify-content:center;
  text-decoration:none; box-shadow: var(--shadow); opacity:0; pointer-events:none; transition: opacity .2s ease, transform .2s ease;
  z-index: 90;
}
.to-top.visible{ opacity:1; pointer-events:auto; }
.to-top:hover{ transform: translateY(-3px); }

/* =========================================================
   Smart Slider — topo da homepage
   ========================================================= */
.smart-slider{ position:relative; overflow:hidden; background: var(--ink); }
/* Sombra suave no topo — legibilidade do menu transparente sobreposto ao slider */
.smart-slider::before{
  content:""; position:absolute; top:0; left:0; right:0; height:180px; z-index:2; pointer-events:none;
  background: linear-gradient(180deg, rgba(10,6,7,.62) 0%, rgba(10,6,7,0) 100%);
}
/* Transição suave do slider para o resto da página (sem cortes ou recortes) */
.smart-slider::after{
  content:""; position:absolute; left:0; right:0; bottom:0; height:170px; z-index:3; pointer-events:none;
  background: linear-gradient(180deg, rgba(20,10,13,0) 0%, rgba(20,10,13,.5) 55%, var(--paper) 100%);
}
.slider-track{ position:relative; height: min(76vh, 600px); min-height: 440px; }
.slide{
  position:absolute; inset:0; opacity:0; visibility:hidden; z-index:0;
  background-size:cover; background-position:center; display:flex; align-items:flex-end;
  transition: opacity 1.1s ease;
}
.slide.is-active{ opacity:1; visibility:visible; z-index:1; }
.slide::before{
  content:""; position:absolute; inset:0;
  background: linear-gradient(0deg, rgba(26,14,18,.92) 0%, rgba(26,14,18,.45) 42%, rgba(110,15,31,.18) 100%);
}
.slide::after{
  content:""; position:absolute; inset:0; pointer-events:none;
  background-image: radial-gradient(rgba(227,169,59,.35) 1.5px, transparent 1.5px);
  background-size: 28px 28px; opacity:.28; mix-blend-mode: screen;
}
.slide-content{ position:relative; z-index:2; color:var(--white); padding: 0 0 74px; max-width: 640px; }
.slide-content .eyebrow{ color: var(--gold); }
.slide-content .eyebrow::before{ background: var(--gold); }
.slide-content h1, .slide-content h2{ color:var(--white); font-size: clamp(1.9rem, 4.2vw, 3.1rem); margin-bottom:.28em; font-family: var(--font-display); font-weight:600; line-height:1.08; }
.slide-content p{ color: rgba(255,255,255,.92); font-size:1.05rem; max-width:54ch; margin-bottom:1.2em; }
.slider-dots{ position:absolute; z-index:4; left:50%; transform:translateX(-50%); bottom:22px; display:flex; gap:8px; }
.slider-dots button{
  width:9px; height:9px; border-radius:50%; border:1.5px solid rgba(255,255,255,.65);
  background:rgba(255,255,255,.25); padding:0; cursor:pointer; transition: width .25s ease, background .2s ease;
}
.slider-dots button.is-active{ background: var(--gold); border-color: var(--gold); width:24px; border-radius:6px; }
.slider-arrow{
  position:absolute; z-index:4; top:50%; transform:translateY(-50%); width:44px; height:44px; border-radius:50%;
  border:1.5px solid rgba(255,255,255,.45); background:rgba(26,14,18,.4); color:var(--white);
  display:flex; align-items:center; justify-content:center; cursor:pointer; font-size:1.15rem;
  backdrop-filter: blur(4px); transition: background .15s ease, border-color .15s ease;
}
.slider-arrow:hover{ background: var(--red); border-color: var(--red); }
.slider-arrow.prev{ left:16px; }
.slider-arrow.next{ right:16px; }
@media (max-width: 640px){
  .slider-arrow{ display:none; }
  .slider-track{ height: 66vh; min-height: 400px; }
  .slide-content{ padding-bottom: 58px; }
}

/* Elemento decorativo — "construir" (barras ascendentes), usado junto do lema */
.deco-rise{ display:inline-flex; align-items:flex-end; gap:4px; height:22px; margin-right:10px; vertical-align:middle; }
.deco-rise span{ display:block; width:6px; border-radius:2px 2px 0 0; background: var(--gold); animation: rise-pulse 1.8s ease-in-out infinite; }
.deco-rise span:nth-child(1){ height:8px; animation-delay:0s; }
.deco-rise span:nth-child(2){ height:14px; animation-delay:.15s; background: var(--gold-dark); }
.deco-rise span:nth-child(3){ height:20px; animation-delay:.3s; background: var(--red); }
.deco-rise span:nth-child(4){ height:12px; animation-delay:.45s; background: var(--gold); }
@keyframes rise-pulse{ 0%,100%{ transform: scaleY(1); } 50%{ transform: scaleY(1.18); } }
@media (prefers-reduced-motion: reduce){ .deco-rise span{ animation:none; } }

/* Textura de pontos decorativa (energia positiva) */
.texture-dots{ position:relative; }
.texture-dots::after{
  content:""; position:absolute; inset:0; pointer-events:none; z-index:0;
  background-image: radial-gradient(rgba(227,169,59,.4) 1.6px, transparent 1.6px);
  background-size: 26px 26px; opacity:.35;
}
.texture-dots > .wrap{ position:relative; z-index:1; }

/* =========================================================
   Política reivindicativa / Resolução SN — cartões de documento
   ========================================================= */
.doc-grid{ display:grid; grid-template-columns: repeat(2,1fr); gap:24px; }
@media (max-width:780px){ .doc-grid{ grid-template-columns:1fr; } }
.doc-card{
  background: var(--white); border:1px solid var(--line); border-radius: var(--radius); overflow:hidden;
  box-shadow: var(--shadow); display:flex; flex-direction:column; border-top: 3px solid var(--gold);
}
.doc-card-img{ aspect-ratio: 16/8; overflow:hidden; background: var(--paper-alt); }
.doc-card-img img{ width:100%; height:100%; object-fit:cover; }
.doc-card-body{ padding: 22px 26px 26px; display:flex; flex-direction:column; gap:8px; flex:1; }
.doc-card-body h3{ font-size:1.15rem; margin:0; }
.doc-card-body p{ color:var(--text-soft); font-size:.92rem; margin:0; }
.doc-card-foot{ margin-top:auto; padding-top:8px; display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.doc-card-foot .btn{ padding:.6em 1.2em; font-size:.85rem; }

/* =========================================================
   Galeria de fotos do Congresso Fundador (Órgãos Sociais)
   ========================================================= */
.accordion-item-lg .accordion-panel{ max-height:0; }
.accordion-item-lg.open .accordion-panel{ max-height: 2400px; }
.congress-gallery{ display:grid; grid-template-columns: repeat(4, 1fr); gap:12px; margin-top:14px; }
.congress-gallery a{ display:block; border-radius: var(--radius-sm); overflow:hidden; aspect-ratio: 4/3; border:1px solid var(--line); background: var(--paper-alt); }
.congress-gallery img{ width:100%; height:100%; object-fit:cover; transition: transform .35s ease; display:block; }
.congress-gallery a:hover img{ transform: scale(1.07); }
@media (max-width:780px){ .congress-gallery{ grid-template-columns: repeat(3,1fr);} }
@media (max-width:520px){ .congress-gallery{ grid-template-columns: repeat(2,1fr);} }

/* =========================================================
   Galeria (página) — fotos reais em vez de placeholders
   ========================================================= */
.gallery-tile.has-photo{ padding:0; }
.gallery-tile.has-photo img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:0; }
.gallery-tile.has-photo::before{
  background: linear-gradient(0deg, rgba(26,14,18,.82) 0%, rgba(26,14,18,.05) 55%, transparent 100%); z-index:1;
}
.gallery-tile.has-photo .cap{ position:relative; z-index:2; padding:16px; font-family: var(--font-mono); font-weight:600; font-size:.8rem; letter-spacing:.02em; }
.gallery-tile.has-photo .cap small{ display:block; font-weight:500; font-size:.72rem; color: rgba(255,255,255,.75); margin-top:2px; }

/* ---------- Fotos reais de cada galeria (menu Galeria) ---------- */
.photo-grid{ display:grid; grid-template-columns: repeat(4,1fr); gap:10px; margin-top:14px; }
.photo-tile{
  display:block; position:relative; aspect-ratio: 1 / 1; border-radius: var(--radius-sm); overflow:hidden;
  border:1px solid var(--line); background: var(--paper-alt); padding:0; cursor:pointer; font:inherit;
}
.photo-tile img{ width:100%; height:100%; object-fit:cover; display:block; transition: transform .35s ease; }
.photo-tile:hover img{ transform: scale(1.08); }
.photo-tile::after{
  content:"🔍"; position:absolute; right:8px; bottom:8px; width:26px; height:26px; border-radius:50%;
  background: rgba(26,14,18,.6); color:#fff; display:flex; align-items:center; justify-content:center;
  font-size:.78rem; opacity:0; transition: opacity .2s ease;
}
.photo-tile:hover::after{ opacity:1; }
.photo-tile:focus-visible{ outline: 3px solid var(--gold); outline-offset: 2px; }

/* =========================================================
   Galeria de Fotografias — página única, uma secção por grupo
   ========================================================= */

/* Atalhos no topo da página */
.gallery-shortcuts-head{ margin-bottom:12px; }
.gallery-shortcuts{ display:flex; flex-wrap:wrap; gap:8px; }
.gallery-shortcuts a{
  font-family: inherit; font-weight:600; font-size:.85rem; text-decoration:none;
  border:1.5px solid var(--line); background: var(--white); color: var(--text-soft);
  padding: 8px 16px; border-radius:999px; transition: all .18s ease; white-space:nowrap;
}
.gallery-shortcuts a:hover{ border-color: var(--red); color: var(--red); }
.gallery-shortcuts a.is-active{ background: var(--red); border-color: var(--red); color: var(--white); }
@media (max-width: 640px){
  .gallery-shortcuts{ flex-wrap:nowrap; overflow-x:auto; padding-bottom:6px; -webkit-overflow-scrolling:touch; }
  .gallery-shortcuts a{ flex:none; }
}

/* Cada galeria é uma secção claramente delimitada — título grande, régua
   decorativa dos dois lados, e fundo alternado entre secções consecutivas
   para que fique óbvio onde uma galeria termina e a seguinte começa. */
.gallery-group-section{ padding: 64px 0; border-top: 1px solid var(--line); }
.gallery-group-section.is-alt{ background: var(--paper-alt); }
.gallery-group-head{ display:flex; flex-direction:column; align-items:center; text-align:center; gap:14px; margin-bottom: 44px; }
.gallery-group-rule{ display:block; width:64px; height:3px; border-radius:2px; background: var(--gold); }
.gallery-group-title{
  font-family: var(--font-display); font-weight:700; font-size: clamp(1.7rem, 3.2vw, 2.4rem);
  letter-spacing:.01em; color: var(--ink); text-transform:uppercase; margin:0;
}
.gallery-group-desc{ color: var(--text-soft); max-width:60ch; margin:0; }
.gallery-group-empty{
  text-align:center; color: var(--text-soft); font-size:.95rem; padding: 30px 20px;
  border:1px dashed var(--line); border-radius: var(--radius); background: var(--white);
}
.gallery-back-link{ text-align:center; margin: 40px 0 0; }
.gallery-back-link a{ font-size:.84rem; font-weight:600; color: var(--text-soft); text-decoration:none; }
.gallery-back-link a:hover{ color: var(--red); }

/* Cada subgrupo/evento dentro da secção do grupo */
/* Cada evento/subgrupo — cartão compacto, clicável, com capa + título +
   data + nº de fotografias. Grelha responsiva: 3 colunas no desktop, 2 no
   tablet, 1 no telemóvel — sem espaço desperdiçado. */
.gallery-events-grid{ display:grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
@media (max-width: 980px){ .gallery-events-grid{ grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px){ .gallery-events-grid{ grid-template-columns: 1fr; } }

.gallery-event-card{
  display:flex; align-items:center; gap:14px; text-align:left; background: var(--white);
  border:1px solid var(--line); border-radius: var(--radius); overflow:hidden; box-shadow: var(--shadow);
  cursor:pointer; padding:10px; font:inherit; color:inherit; width:100%;
  transition: transform .18s ease, box-shadow .18s ease;
}
.gallery-event-card:hover{ transform: translateY(-2px); box-shadow: 0 16px 32px -20px rgba(26,14,18,.35); }
.gallery-event-card:focus-visible{ outline: 3px solid var(--gold); outline-offset: 2px; }
.gallery-event-cover{
  flex:none; width:76px; height:76px; border-radius: var(--radius-sm); overflow:hidden; background: var(--paper-alt);
  display:flex; align-items:center; justify-content:center;
}
.gallery-event-cover img{ width:100%; height:100%; object-fit:cover; display:block; }
.gallery-event-cover-placeholder{ font-size:1.4rem; opacity:.4; }
.gallery-event-body{ display:flex; flex-direction:column; gap:2px; min-width:0; }
.gallery-event-title{ font-family: var(--font-display); font-weight:700; font-size:.98rem; color: var(--ink); line-height:1.25; overflow:hidden; text-overflow:ellipsis; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; }
.gallery-event-date{ font-family: var(--font-mono); font-size:.72rem; font-weight:700; color: var(--gold-dark); }
.gallery-event-count{ font-size:.8rem; color: var(--text-soft); }

/* =========================================================
   Lightbox — visualização e navegação das fotografias
   ========================================================= */
.gallery-lightbox{
  position: fixed; inset:0; z-index: 300; background: rgba(15,8,10,.92);
  display:flex; flex-direction:column; animation: lightbox-fade .18s ease;
}
.gallery-lightbox[hidden]{ display:none; }
@keyframes lightbox-fade{ from{ opacity:0; } to{ opacity:1; } }
body.gallery-lightbox-open{ overflow:hidden; }

.lightbox-topbar{
  display:flex; align-items:center; justify-content:space-between; gap:16px; padding: 16px 20px;
  color: var(--white); flex:none;
}
.lightbox-title{ font-family: var(--font-display); font-weight:600; font-size:1rem; }
.lightbox-close{
  width:40px; height:40px; border-radius:50%; border:1.5px solid rgba(255,255,255,.4); background: rgba(255,255,255,.08);
  color: var(--white); font-size:1.2rem; cursor:pointer; display:flex; align-items:center; justify-content:center; flex:none;
}
.lightbox-close:hover{ background: var(--red); border-color: var(--red); }

.lightbox-stage{ position:relative; flex:1; display:flex; align-items:center; justify-content:center; min-height:0; padding: 0 64px; touch-action: pan-y; }
/* Área de visualização com tamanho consistente — a imagem nunca fica minúscula
   nem gigante, independentemente das dimensões reais do ficheiro original. */
.lightbox-image-container{
  width: min(90vw, 1200px); height: min(80vh, 800px);
  display:flex; align-items:center; justify-content:center;
}
.lightbox-stage img{
  max-width:100%; max-height:100%; width:auto; height:auto; object-fit:contain; display:block;
  border-radius: 6px; box-shadow: 0 30px 70px -20px rgba(0,0,0,.6); transition: opacity .15s ease;
}
.lightbox-arrow{
  position:absolute; top:50%; transform:translateY(-50%); width:48px; height:48px; border-radius:50%;
  border:1.5px solid rgba(255,255,255,.4); background: rgba(255,255,255,.08); color: var(--white);
  font-size:1.4rem; cursor:pointer; display:flex; align-items:center; justify-content:center; z-index:2;
}
.lightbox-arrow:hover:not(:disabled){ background: var(--red); border-color: var(--red); }
.lightbox-arrow:disabled{ opacity:.25; cursor:default; }
.lightbox-arrow.prev{ left:8px; }
.lightbox-arrow.next{ right:8px; }
@media (max-width: 640px){
  .lightbox-stage{ padding: 0 8px; }
  .lightbox-image-container{ width: 94vw; height: 75vh; }
  .lightbox-arrow{ width:38px; height:38px; font-size:1.1rem; }
  .lightbox-arrow.prev{ left:2px; }
  .lightbox-arrow.next{ right:2px; }
}

.lightbox-bottombar{ flex:none; display:flex; flex-direction:column; gap:10px; align-items:center; padding: 14px 20px 20px; }
.lightbox-counter{ font-family: var(--font-mono); font-size:.8rem; color: rgba(255,255,255,.85); }
.lightbox-thumbs{ display:flex; gap:8px; overflow-x:auto; max-width:100%; padding: 2px; scrollbar-width: thin; }
.lightbox-thumbs[hidden]{ display:none; }
.lightbox-thumb{
  flex:none; width:56px; height:56px; border-radius:6px; overflow:hidden; border:2px solid transparent;
  padding:0; cursor:pointer; opacity:.55; transition: opacity .15s ease, border-color .15s ease;
}
.lightbox-thumb img{ width:100%; height:100%; object-fit:cover; display:block; }
.lightbox-thumb:hover{ opacity:.85; }
.lightbox-thumb.is-active{ opacity:1; border-color: var(--gold); }
@media (prefers-reduced-motion: reduce){
  .gallery-lightbox{ animation:none; }
  .photo-tile img, .gallery-shortcuts a{ transition:none; }
}
@media (max-width: 900px){ .photo-grid{ grid-template-columns: repeat(3,1fr); } }
@media (max-width: 560px){ .photo-grid{ grid-template-columns: repeat(2,1fr); gap:8px; } }

/* Imagem quadrada para os cursos da Oferta Formativa — Viseu (homepage e página de Formação) */
.courses-square .course-card-img{ aspect-ratio: 1 / 1; }

/* =========================================================
   Ficha de pré-inscrição — assistente por etapas
   ========================================================= */
.wizard{ background: var(--white); border:1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow); overflow:hidden; max-width: 820px; margin:0 auto; }
.wizard-steps{ display:flex; flex-wrap:wrap; gap:0; border-bottom:1px solid var(--line); background: var(--paper-alt); list-style:none; margin:0; padding:0; }
.wizard-steps li{
  flex:1 1 auto; min-width: 96px; text-align:center; padding: 12px 6px; font-family: var(--font-mono);
  font-size:.72rem; font-weight:600; letter-spacing:.02em; color: var(--text-soft); position:relative;
  border-bottom: 3px solid transparent; list-style:none;
}
.wizard-steps li .num{ display:inline-flex; align-items:center; justify-content:center; width:20px; height:20px; border-radius:50%; background:var(--line); color:var(--ink-soft); font-size:.7rem; margin-right:5px; }
.wizard-steps li.is-active{ color: var(--red); border-bottom-color: var(--red); }
.wizard-steps li.is-active .num{ background: var(--red); color:var(--white); }
.wizard-steps li.is-done .num{ background: var(--gold); color:var(--white); }
.wizard-body{ padding: 28px 26px; }
.wizard-panel{ display:none; }
.wizard-panel.is-active{ display:block; }
.wizard-panel h3{ font-size:1.2rem; margin:0 0 4px; }
.wizard-panel .wizard-lede{ color: var(--text-soft); font-size:.92rem; margin-bottom: 20px; }
.wizard-fieldset{ border:none; padding:0; margin: 0 0 20px; }
.wizard-fieldset legend{ font-family: var(--font-mono); font-size:.72rem; text-transform:uppercase; letter-spacing:.06em; color: var(--gold-dark); font-weight:700; padding:0 0 10px; }
.wizard-grid{ display:grid; grid-template-columns: 1fr 1fr; gap:16px; }
@media (max-width:640px){ .wizard-grid{ grid-template-columns:1fr; } }
.wizard-grid label{ display:flex; flex-direction:column; gap:6px; font-size:.86rem; font-weight:600; color:var(--ink-soft); }
.wizard-grid label.wizard-full{ grid-column: 1 / -1; }
.wizard-body input[type="text"], .wizard-body input[type="email"], .wizard-body input[type="tel"],
.wizard-body input[type="date"], .wizard-body select, .wizard-body textarea{
  font: inherit; padding:.72em .85em; border:1.5px solid var(--line); border-radius: var(--radius-sm); background:var(--paper); color:var(--text);
}
.wizard-body input:focus, .wizard-body select:focus, .wizard-body textarea:focus{ outline:none; border-color:var(--red); }
.wizard-radio-row{ display:flex; flex-wrap:wrap; gap:10px; }
.wizard-radio-row label{
  flex-direction:row; align-items:center; gap:8px; font-weight:500; font-size:.86rem;
  border:1.5px solid var(--line); border-radius:999px; padding:.5em 1em; cursor:pointer; background:var(--paper);
}
.wizard-radio-row input{ accent-color: var(--red); }
.wizard-radio-row label:has(input:checked){ border-color: var(--red); color:var(--red); background: rgba(195,30,58,.06); }
.wizard-nav{ display:flex; justify-content:space-between; align-items:center; margin-top: 10px; gap:12px; }
.wizard-summary{ background: var(--paper-alt); border:1px solid var(--line); border-radius: var(--radius-sm); padding:16px 18px; font-size:.86rem; color:var(--text-soft); margin-top: 18px; }
.wizard-summary strong{ color: var(--ink); }
.wizard-done{ text-align:center; padding: 10px 0; }
.wizard-done .icon-ok{ width:56px; height:56px; border-radius:50%; background: var(--gold); color:var(--white); display:flex; align-items:center; justify-content:center; font-size:1.6rem; margin: 0 auto 16px; }

/* ---------- Cartão de destaque "É empresário/a?" (GIP) ---------- */
.employer-cta{
  display:flex; align-items:center; gap:20px; flex-wrap:wrap;
  background: var(--white); border:1px solid var(--line); border-left: 4px solid var(--gold);
  border-radius: var(--radius); padding: 24px 28px; box-shadow: var(--shadow);
}
.employer-cta-icon{
  flex:none; width:52px; height:52px; border-radius:14px; background: rgba(227,169,59,.14);
  display:flex; align-items:center; justify-content:center; font-size:1.5rem;
}
.employer-cta-body{ flex:1; min-width:220px; }
.employer-cta-body h3{ margin:0 0 4px; font-size:1.05rem; }
.employer-cta-body p{ margin:0; color:var(--text-soft); font-size:.92rem; }
@media (max-width:560px){ .employer-cta{ flex-direction:column; align-items:flex-start; } .employer-cta .btn{ width:100%; text-align:center; } }

/* ---------- Mapa de localização (Contactos) ---------- */
.contact-map{
  border-radius: var(--radius); overflow:hidden; box-shadow: var(--shadow); border:1px solid var(--line);
  border-top: 4px solid var(--red); max-width: 900px; margin: 0 auto;
}
.contact-map iframe{ display:block; width:100%; }
.contact-map-note{ text-align:center; margin: 16px auto 0; max-width:900px; color: var(--text-soft); font-size:.9rem; }
