:root{
  --bg:#131b28; --bg2:#1c2738; --bg3:#243248;
  --ink:#f3f6fa; --ink2:#b0bbcb; --ink3:#7c879a;
  --border:#324258; --border2:#3f5470;
  --gold-dark:#a6842e;
  --gold:#e0b84a;
  --teal:#3ecfb2;
  --coral:#ff8066;
  --violet:#a78bfa;
  --ipcb-blue:#26329d;
  --mono:'Sora', sans-serif;
  --maxw:1240px;
  --radius:14px;
  --shadow-card:0 10px 30px rgba(0,0,0,.28);
  --photo-overlay:rgba(10,15,22,.84);
  --header-bg:rgba(10,15,22,.86);
}
:root[data-theme="light"]{
  --bg:#ffffff; --bg2:#f4f5f7; --bg3:#e8eaef;
  --ink:#12151c; --ink2:#4a5163; --ink3:#767d8f;
  --border:#dfe2e8; --border2:#c9cedb;
  --gold-dark:#6b5118;
  --gold:#8a6a1f;
  --teal:#0f9c82;
  --coral:#d94a34;
  --violet:#6d4fc9;
  --shadow-card:0 10px 30px rgba(20,25,35,.12);
  --photo-overlay:rgba(255,255,255,.88);
  --header-bg:rgba(255,255,255,.86);
}
*{box-sizing:border-box;}
html{ scroll-behavior:smooth; }
#sobre, #direcao, #socios, #contactos, #bilhetes{ scroll-margin-top:90px; }
body{
  margin:0; background:var(--bg); color:var(--ink);
  font-family:'Inter', sans-serif; font-size:16px; line-height:1.65;
}
.site-photo-bg{
  position:fixed; inset:-30px; z-index:-2; pointer-events:none;
  background:url('/imagens/escola-fundo.jpg') center 30% / cover no-repeat;
  filter:blur(5.76px);
}
.site-photo-bg-home{ background-image:url('/imagens/ipcb-campus-fundo.jpg'); }
.site-photo-overlay{
  position:fixed; inset:0; z-index:-1; pointer-events:none;
  background:var(--photo-overlay);
}
a{ color:inherit; text-decoration:none; }
.wrap{ max-width:var(--maxw); margin:0 auto; padding:0 28px; }
h1,h2,h3{ font-family:var(--mono); margin:0 0 12px; font-weight:700; letter-spacing:-.01em; }
.accent{ background:linear-gradient(90deg, #f3d488, #e0b84a); -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; }

.reveal{ opacity:0; transform:translateY(24px); transition:opacity .6s cubic-bezier(.2,.7,.2,1), transform .6s cubic-bezier(.2,.7,.2,1); }
.reveal.in-view{ opacity:1; transform:none; }
@media (prefers-reduced-motion:reduce){ .reveal{ opacity:1; transform:none; transition:none; } }

.scroll-progress{
  position:fixed; top:0; left:0; height:2.5px; width:0%; z-index:9998;
  background:linear-gradient(90deg, var(--gold-dark), var(--gold));
  box-shadow:0 0 10px rgba(224,184,74,.5); transition:width .1s linear;
}

/* header */
.site-header, #site-header{
  position:fixed; top:14px; left:0; right:0; z-index:30; background:var(--header-bg); backdrop-filter:blur(12px);
  border:1px solid var(--border);
  border-radius:20px;
  max-width:min(1430px, calc(100% - 40px));
  margin:0 auto;
  box-shadow:var(--shadow-card);
}
.main-nav{ display:flex; align-items:center; gap:28px; padding:10px 24px; }
.logo{ display:flex; align-items:center; gap:10px; font-family:var(--mono); font-weight:700; font-size:19px; flex-shrink:0; }
.logo .b{ color:var(--gold); }
.logo-img{ height:56px; width:auto; display:block; filter:drop-shadow(0 4px 10px rgba(0,0,0,.35)); }
.nav-collapse{ display:flex; flex:1; align-items:center; justify-content:space-between; gap:20px; }
.nav-auth{ display:flex; align-items:center; gap:14px; flex-shrink:0; }
.nav-divider{ width:1px; height:22px; background:var(--border2); flex-shrink:0; }
.theme-toggle-btn{
  display:flex; align-items:center; justify-content:center; width:34px; height:34px; flex-shrink:0;
  background:var(--bg3); border:1px solid var(--border2); border-radius:50%; cursor:pointer; color:var(--ink2);
  transition:background .15s, color .15s, border-color .15s;
}
.theme-toggle-btn:hover{ color:var(--gold); border-color:var(--gold); }
.theme-toggle-btn svg{ width:17px; height:17px; }
.theme-toggle-btn .icon-moon{ display:none; }
:root[data-theme="light"] .theme-toggle-btn .icon-sun{ display:none; }
:root[data-theme="light"] .theme-toggle-btn .icon-moon{ display:block; }
.account-switch{ position:relative; }
.account-icon-btn{
  display:flex; align-items:center; justify-content:center; width:34px; height:34px; flex-shrink:0;
  background:var(--bg3); border:1px solid var(--border2); border-radius:50%; color:var(--ink2); cursor:pointer;
  transition:background .15s, color .15s, border-color .15s;
}
.account-icon-btn:hover, .account-icon-btn.active{ color:var(--gold); border-color:var(--gold); }
.account-icon-btn svg{ width:18px; height:18px; }
.account-icon-btn-avatar{ overflow:hidden; padding:0; }
.account-icon-btn-avatar img{ width:100%; height:100%; object-fit:cover; display:block; }
.account-menu{
  position:absolute; top:calc(100% + 8px); right:0; min-width:140px; z-index:40;
  background:var(--bg2); border:1px solid var(--border2); border-radius:10px; padding:5px;
  box-shadow:var(--shadow-card);
  opacity:0; visibility:hidden; transform:translateY(-6px); transition:opacity .15s, transform .15s, visibility .15s;
}
.account-menu.open{ opacity:1; visibility:visible; transform:translateY(0); }
.account-menu a, .account-menu button{
  display:block; width:100%; text-align:left; background:none; border:none; cursor:pointer;
  color:var(--ink2); font-size:13.5px; padding:8px 10px; border-radius:6px; transition:background .15s, color .15s;
  font-family:'Inter', sans-serif;
}
.account-menu a:hover, .account-menu button:hover{ background:var(--bg3); color:var(--ink); }
.lang-switch{ position:relative; }
.lang-switch-btn{
  background:var(--bg3); border:1px solid var(--border2); cursor:pointer; color:var(--ink2); font-family:var(--mono);
  font-size:11px; font-weight:700; letter-spacing:.04em; padding:6px 12px; border-radius:20px; transition:background .15s, color .15s, border-color .15s;
}
.lang-switch-btn:hover{ color:var(--gold); border-color:var(--gold); }
.lang-menu{
  position:absolute; top:calc(100% + 8px); right:0; min-width:130px; z-index:40;
  background:var(--bg2); border:1px solid var(--border2); border-radius:10px; padding:5px;
  box-shadow:var(--shadow-card);
  opacity:0; visibility:hidden; transform:translateY(-6px); transition:opacity .15s, transform .15s, visibility .15s;
}
.lang-menu.open{ opacity:1; visibility:visible; transform:translateY(0); }
.lang-menu button{
  display:block; width:100%; text-align:left; background:none; border:none; cursor:pointer;
  color:var(--ink2); font-size:13.5px; padding:8px 10px; border-radius:6px; transition:background .15s, color .15s;
}
.lang-menu button:hover{ background:var(--bg3); color:var(--ink); }
.lang-menu button.active{ color:var(--gold); }
.nav-login{ font-size:14.5px; color:var(--ink2); }
.nav-login:hover{ color:var(--ink); }
.navlinks{ display:flex; align-items:center; gap:22px; font-size:14.5px; }
.navlinks a{ color:var(--ink2); transition:color .15s; position:relative; }
.navlinks a:hover{ color:var(--ink); }
.navlinks a.active{ color:var(--gold); }
.navlinks a.nav-admin-outside{ color:var(--coral); font-weight:700; }
.navlinks a.nav-admin-outside:hover{ color:var(--coral); filter:brightness(1.15); }

/* submenu da navegacao (Direcao -> Orgaos Sociais) */
.nav-dropdown{ position:relative; }
.nav-dropdown-toggle{ display:flex; align-items:center; gap:5px; }
.nav-dropdown-caret{ width:13px; height:13px; transition:transform .18s; }
.nav-dropdown:hover .nav-dropdown-caret{ transform:rotate(180deg); }
.nav-dropdown-menu{
  position:absolute; top:calc(100% + 10px); left:50%; transform:translateX(-50%) translateY(-6px);
  min-width:190px; z-index:40; background:var(--bg2); border:1px solid var(--border2);
  border-radius:10px; padding:6px; box-shadow:var(--shadow-card);
  opacity:0; visibility:hidden; transition:opacity .15s, transform .15s, visibility .15s;
}
/* ponte invisivel para o rato nao "cair" no espaco entre o link e o menu */
.nav-dropdown-menu::before{ content:""; position:absolute; left:0; right:0; top:-10px; height:10px; }
.nav-dropdown:hover .nav-dropdown-menu,
.nav-dropdown:focus-within .nav-dropdown-menu{
  opacity:1; visibility:visible; transform:translateX(-50%) translateY(0);
}
.navlinks .nav-dropdown-menu a{
  display:block; padding:9px 11px; border-radius:6px; font-size:13.5px;
  color:var(--ink2); transition:background .15s, color .15s;
}
.navlinks .nav-dropdown-menu a:hover{ background:var(--bg3); color:var(--ink); }
.nav-actions{ display:flex; align-items:center; gap:14px; flex-shrink:0; }
.nav-toggle{ display:none; background:none; border:none; cursor:pointer; padding:6px; }
.burger{ display:block; width:22px; height:16px; position:relative; }
.burger span{ position:absolute; left:0; width:100%; height:2px; background:var(--ink); border-radius:2px; }
.burger span:nth-child(1){ top:0; } .burger span:nth-child(2){ top:7px; } .burger span:nth-child(3){ top:14px; }

/* buttons */
.btn-primary{
  display:inline-flex; align-items:center; justify-content:center; padding:12px 24px; border-radius:9px;
  background:linear-gradient(135deg, var(--gold), var(--gold-dark)); color:#04111c; font-weight:700; border:none;
  cursor:pointer; font-size:14.5px; box-shadow:0 6px 20px rgba(224,184,74,.22); transition:transform .15s, box-shadow .15s, filter .15s;
}
.btn-primary:hover{ filter:brightness(1.06); transform:translateY(-2px); box-shadow:0 10px 26px rgba(224,184,74,.3); }
.btn-outline{
  display:inline-flex; align-items:center; justify-content:center; padding:12px 24px; border-radius:9px;
  background:transparent; border:1px solid var(--border2); color:var(--ink); font-weight:600; font-size:14.5px;
  transition:border-color .15s, color .15s;
}
.btn-outline:hover{ border-color:var(--gold); color:var(--gold); }
.btn-sm{ padding:9px 16px; font-size:13px; }
.btn-block{ width:100%; }

/* hero */
.hero{ position:relative; padding:130px 0 70px; overflow:hidden; isolation:isolate; }
.hero-bg{
  position:absolute; inset:-10px; z-index:-2; background-size:cover; background-position:center 60%;
  filter:saturate(1.1) contrast(1.02); animation:heroDrift 20s ease-in-out infinite alternate;
}
@keyframes heroDrift{
  0%{ transform:scale(1.04) translate(0,0); }
  100%{ transform:scale(1.15) translate(-1.5%,-1%); }
}
@media (prefers-reduced-motion:reduce){ .hero-bg{ animation:none; } }
.hero-overlay{
  position:absolute; inset:0; z-index:-1;
  background:linear-gradient(180deg, rgba(10,15,22,.55) 0%, rgba(10,15,22,.7) 60%, rgba(10,15,22,.84) 100%),
    radial-gradient(700px 400px at 15% 0%, rgba(224,184,74,.16), transparent 60%);
}
.hero-no-own-bg{ background:transparent; }
.photo-credit{ font-size:11.5px; color:var(--ink3); margin-top:26px; }
.photo-credit a{ color:var(--ink2); text-decoration:underline; }
.hero-kicker{
  display:inline-block; font-family:var(--mono); font-size:12.5px; font-weight:700; color:#e0b84a;
  text-transform:uppercase; letter-spacing:.1em; margin-bottom:16px; padding:5px 12px;
  border:1px solid rgba(224,184,74,.35); border-radius:20px; background:rgba(224,184,74,.08);
}
@keyframes heroIn{ from{ opacity:0; transform:translateY(22px); } to{ opacity:1; transform:none; } }
.hero-kicker, .hero h1, .hero-sub, .hero-buttons, .photo-credit{ animation:heroIn .7s cubic-bezier(.2,.7,.2,1) both; }
.hero-kicker{ animation-delay:.05s; }
.hero h1{ animation-delay:.15s; }
.hero-sub{ animation-delay:.28s; }
.hero-buttons{ animation-delay:.4s; }
.photo-credit{ animation-delay:.5s; }
@media (prefers-reduced-motion:reduce){ .hero-kicker, .hero h1, .hero-sub, .hero-buttons, .photo-credit{ animation:none; } }

.hero h1{ font-size:clamp(32px,4.8vw,50px); max-width:20ch; line-height:1.12; color:#f3f6fa; }
.hero-sub{ color:#c3cad6; max-width:64ch; margin-bottom:30px; font-size:16.5px; }
.hero-buttons{ display:flex; gap:14px; flex-wrap:wrap; }
.hero .btn-outline{ border-color:rgba(243,246,250,.4); color:#f3f6fa; }
.hero .btn-outline:hover{ border-color:#e0b84a; color:#e0b84a; }

/* sections generic */
section{ padding:64px 0; border-bottom:1px solid var(--border); }
.sec-head{ margin-bottom:32px; max-width:640px; }
.section-label{ font-family:var(--mono); font-size:12.5px; font-weight:700; color:var(--gold); text-transform:uppercase; letter-spacing:.08em; display:block; margin-bottom:10px; }
.section-title{ margin-bottom:0; font-size:clamp(24px,3vw,32px); }
.section-note{ color:var(--ink3); font-size:13.5px; margin-top:26px; }

/* sobre */
.section-sobre{ position:relative; overflow:hidden; }
.sobre-watermark{
  position:absolute; top:50%; right:10px; transform:translateY(-50%) rotate(0deg);
  width:380px; height:auto; opacity:.08; pointer-events:none; z-index:0;
  filter:grayscale(1) contrast(1.1) drop-shadow(0 6px 16px rgba(0,0,0,.4));
  animation:watermarkSpin 90s linear infinite;
}
@keyframes watermarkSpin{
  from{ transform:translateY(-50%) rotate(0deg); }
  to{ transform:translateY(-50%) rotate(360deg); }
}
@media (prefers-reduced-motion:reduce){ .sobre-watermark{ animation:none; } }
.section-sobre .wrap{ position:relative; z-index:1; }
.sobre-layout{ display:grid; grid-template-columns:1.3fr 1fr; gap:48px; align-items:start; }
.sobre-text{ font-size:16.5px; color:var(--ink2); line-height:1.85; }
.sobre-stats{ display:flex; flex-direction:column; gap:16px; }
.stat-box{ position:relative; overflow:hidden; background:var(--bg2); border:1px solid var(--border); border-radius:var(--radius); padding:22px; transition:border-color .2s, transform .2s; }
.stat-box .stat-num, .stat-box .stat-label{ position:relative; z-index:1; }
.stat-box-watermark{
  position:absolute; top:50%; right:18px; transform:translateY(-50%); width:64px; height:auto; pointer-events:none;
}
.stat-box:hover{ border-color:currentColor; transform:translateY(-3px); }
.stat-box:nth-child(2){ color:var(--teal); }
.stat-num{ display:block; font-family:var(--mono); font-size:26px; font-weight:700; color:var(--gold); margin-bottom:6px; }
.stat-box:nth-child(2) .stat-num{ color:var(--teal); }
.stat-label{ color:var(--ink2); }
.stat-label{ font-size:13.5px; color:var(--ink2); }

/* atividades */
.atividades-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); gap:20px; }
.atividade-card{ background:var(--bg2); border:1px solid var(--border); border-radius:var(--radius); padding:26px; transition:border-color .2s, transform .2s, box-shadow .2s; }
a.atividade-card{ display:block; text-decoration:none; }
.atividade-card:hover{ border-color:currentColor; transform:translateY(-3px); box-shadow:var(--shadow-card); }
.atividade-icon{
  margin-bottom:16px; width:50px; height:50px; border-radius:14px;
  display:flex; align-items:center; justify-content:center;
  background:color-mix(in srgb, currentColor 16%, transparent);
}
.atividade-icon svg{ width:26px; height:26px; }
.atividade-card:nth-child(1){ color:var(--gold); }
.atividade-card:nth-child(2){ color:var(--teal); }
.atividade-card:nth-child(3){ color:var(--coral); }
.atividade-card:nth-child(4){ color:var(--violet); }
.atividade-card:nth-child(5){ color:var(--teal); }
.atividade-card:nth-child(6){ color:var(--coral); }
.atividade-card:nth-child(7){ color:var(--violet); }
.atividade-card:nth-child(8){ color:var(--gold); }
.atividade-card h3, .atividade-card p{ color:var(--ink); }
.atividade-card p{ color:var(--ink2); }
.atividade-card h3{ font-size:16.5px; margin-bottom:8px; }
.atividade-card p{ font-size:14px; color:var(--ink2); margin:0; line-height:1.65; }

/* direcao */
.direcao-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:16px; }
.direcao-card{
  background:var(--bg2); border:1px solid var(--border); border-radius:var(--radius); padding:22px;
  display:flex; flex-direction:column; gap:6px; text-align:center; transition:border-color .2s;
}
.direcao-card:hover{ border-color:var(--gold); transform:translateY(-3px); }
.direcao-cargo{ font-family:var(--mono); font-size:12px; color:var(--gold); text-transform:uppercase; letter-spacing:.06em; }
.direcao-nome{ font-size:15px; color:var(--ink2); }
.direcao-foto{
  width:104px; height:104px; border-radius:50%; object-fit:cover; display:block; align-self:center;
  border:2px solid var(--border2); background:var(--bg3); margin-bottom:10px;
}
.direcao-foto-vazia{ display:flex; align-items:center; justify-content:center; color:var(--ink3); }
.direcao-foto-vazia svg{ width:50px; height:50px; }

/* pagina de orgaos sociais */
.section-orgaos{ padding:48px 0; border-bottom:1px solid var(--border); scroll-margin-top:110px; }
.section-orgaos:last-of-type{ border-bottom:none; }
.section-orgaos .sec-head{ margin-bottom:24px; }
.section-orgaos .section-note a{ color:var(--gold); text-decoration:underline; }
/* cartoes dos orgaos sociais: foto grande, sem caixa de fundo */
.section-orgaos .direcao-grid{ grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:28px; }
.section-orgaos .direcao-card{
  background:none; border:none; padding:0; gap:4px; box-shadow:none;
}
.section-orgaos .direcao-card:hover{ transform:none; }
.section-orgaos .direcao-card:hover .direcao-foto{ border-color:var(--gold); }
.section-orgaos .direcao-foto{
  width:100%; height:auto; aspect-ratio:1/1; align-self:stretch;
  border-radius:18px; border:2px solid transparent; margin-bottom:14px;
  transition:border-color .2s;
}
.section-orgaos .direcao-foto-vazia{
  background:var(--bg2); border:2px dashed var(--border2); color:var(--ink3);
}
.section-orgaos .direcao-foto-vazia svg{ width:68px; height:68px; }
.section-orgaos .direcao-nome{ font-size:16px; color:var(--ink); }

/* mensagem da presidencia */
.section-presidente{ padding:64px 0; border-bottom:1px solid var(--border); }
.presidente-box{
  position:relative; display:grid; grid-template-columns:280px 1fr; gap:44px; align-items:start;
  background:var(--bg2); border:1px solid var(--border); border-radius:var(--radius); padding:36px; box-shadow:var(--shadow-card);
}
.presidente-photo{ display:flex; flex-direction:column; align-items:center; text-align:center; gap:12px; }
.presidente-photo-img{
  width:260px; height:260px; border-radius:50%; object-fit:cover; display:block;
  border:2px solid var(--border2); box-shadow:var(--shadow-card);
}
.presidente-photo-placeholder{
  width:180px; height:180px; border-radius:50%; background:var(--bg3); border:1px solid var(--border2);
  display:flex; align-items:center; justify-content:center; font-size:64px; color:var(--ink3);
}
.presidente-photo-caption strong{ display:block; font-family:var(--mono); color:var(--gold); font-size:13px; text-transform:uppercase; letter-spacing:.06em; }
.presidente-photo-caption span{ color:var(--ink); font-size:16px; font-weight:600; }
/* entrada escalonada: primeiro a foto, depois o nome, depois o texto */
.presidente-photo-img.reveal{ transform:translateY(18px) scale(.92); transition-duration:.75s; }
.presidente-photo-img.reveal.in-view{ transform:none; }
.presidente-photo-caption.reveal{ transform:translateY(12px); }
.presidente-text.reveal{ transform:translateY(20px); }
.presidente-text h2{ font-size:clamp(20px,2.6vw,26px); }
.presidente-text p{ color:var(--ink2); line-height:1.8; margin:0 0 14px; }
.presidente-text p:last-child{ margin-bottom:0; }
@media (max-width:700px){
  .presidente-box{ grid-template-columns:1fr; justify-items:center; text-align:center; }
}

/* socios */
.socios-layout{
  position:relative; overflow:hidden; clip-path:inset(0 round var(--radius));
  background:linear-gradient(135deg, rgba(224,184,74,.1), rgba(224,184,74,.06));
  border:1px solid rgba(224,184,74,.3); border-radius:var(--radius); padding:44px; box-shadow:var(--shadow-card);
}
.socios-ribbon{ position:absolute; top:-210px; right:-210px; width:660px; height:auto; opacity:.07; pointer-events:none; filter:grayscale(1) contrast(1.1); border-radius:inherit; }
.socios-layout > div:not(.socios-ribbon){ position:relative; z-index:1; }
.socios-layout h2{ font-size:clamp(22px,3vw,28px); }
.socios-layout p{ color:var(--ink2); max-width:70ch; font-size:15.5px; margin-bottom:26px; }

/* social */
.social-layout{ display:flex; justify-content:space-between; align-items:center; gap:30px; flex-wrap:wrap; }
.social-layout p{ color:var(--ink2); max-width:52ch; margin:10px 0 0; }
.social-links{ display:flex; gap:12px; }
.social-btn{ background:var(--bg2); border:1px solid var(--border2); border-radius:9px; padding:12px 22px; font-weight:600; font-size:14px; transition:border-color .15s, color .15s; }
.social-btn:hover{ border-color:var(--gold); color:var(--gold); }

/* contactos */
.contactos-layout{ display:grid; grid-template-columns:1fr 1fr; gap:50px; align-items:start; }
.contact-list{ list-style:none; padding:0; margin:20px 0; display:flex; flex-direction:column; gap:10px; font-size:15px; color:var(--ink2); }
.contact-list a{ color:var(--gold); }
.contact-form{ background:var(--bg2); border:1px solid var(--border); border-radius:var(--radius); padding:28px; box-shadow:var(--shadow-card); }
.field{ display:flex; flex-direction:column; gap:6px; margin-bottom:16px; }
/* sem isto, o display:flex acima venceria o atributo hidden */
.field[hidden]{ display:none; }
.field label{ font-size:13.5px; color:var(--ink2); }
.field input, .field textarea{
  background:var(--bg3); border:1px solid var(--border2); border-radius:8px;
  padding:11px 13px; color:var(--ink); font-family:'Inter'; font-size:14.5px;
}
.form-note{ font-size:12px; color:var(--ink3); margin:12px 0 0; line-height:1.5; }

/* campo que nao pode ser editado (ex: email) */
.field-bloqueado{ position:relative; display:flex; }
.field-bloqueado input{ width:100%; padding-right:40px; cursor:not-allowed; }
.field-bloqueado input:disabled{
  background:var(--bg2); color:var(--ink3); border-color:var(--border);
  -webkit-text-fill-color:var(--ink3); opacity:1;
}
.field-cadeado{
  position:absolute; right:13px; top:50%; transform:translateY(-50%);
  width:16px; height:16px; color:var(--ink3); pointer-events:none;
}

input[type="checkbox"]{
  appearance:none; -webkit-appearance:none; flex-shrink:0;
  width:21px; height:21px; margin:0; padding:0;
  border:1.5px solid var(--border2); border-radius:6px; background:var(--bg3);
  cursor:pointer; position:relative; transition:background .15s, border-color .15s, transform .1s;
}
input[type="checkbox"]:hover{ border-color:var(--gold); }
input[type="checkbox"]:active{ transform:scale(.92); }
input[type="checkbox"]:checked{
  background:linear-gradient(135deg, var(--gold), var(--gold-dark)); border-color:var(--gold-dark);
}
input[type="checkbox"]:checked::after{
  content:""; position:absolute; left:7px; top:3px; width:5px; height:9px;
  border:solid #04111c; border-width:0 2px 2px 0; transform:rotate(40deg);
}
input[type="checkbox"]:focus-visible{ outline:2px solid var(--gold); outline-offset:2px; }

/* footer */
footer{ padding:48px 0 26px; color:var(--ink3); font-size:13.5px; }
.footer-grid{ display:grid; grid-template-columns:1.6fr 1fr 1fr; gap:32px; padding-bottom:32px; }
.footer-logo{ font-family:var(--mono); font-weight:700; font-size:18px; color:var(--ink); display:flex; align-items:center; gap:9px; margin-bottom:14px; }
.footer-logo-img{ height:42px; width:auto; display:block; filter:drop-shadow(0 4px 10px rgba(0,0,0,.35)); }
.footer-logo .b{ color:var(--gold); }
.footer-tagline{ max-width:34ch; margin:0; }
.footer-col h4{ font-family:var(--mono); font-size:12.5px; text-transform:uppercase; letter-spacing:.06em; color:var(--ink); margin:0 0 14px; font-weight:700; }
.footer-col ul{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:9px; }
.footer-col a{ transition:color .15s; }
.footer-col a:hover{ color:var(--gold); }
.footer-bottom{
  border-top:1px solid var(--border); padding-top:20px;
  display:flex; justify-content:space-between; align-items:center; gap:16px; flex-wrap:wrap;
}
.footer-bottom p{ margin:0; }
.footer-legal-links{ display:flex; gap:20px; flex-wrap:wrap; }
.footer-legal-links a{ color:var(--ink3); transition:color .15s; }
.footer-legal-links a:hover{ color:var(--gold); }

.wrap-narrow{ max-width:520px; }
.wrap-form{ max-width:760px; }
.link-btn{ background:none; border:none; color:var(--ink2); cursor:pointer; font-size:14.5px; padding:0; }
.link-btn:hover{ color:var(--ink); }
.inline-form{ display:inline; }
.empty-msg{ color:var(--ink2); }
.form-error{ background:rgba(224,90,90,.12); border:1px solid #e05a5a; color:#e05a5a; padding:10px 14px; border-radius:8px; margin-bottom:16px; font-size:14px; }
.checkbox-field label{ display:flex; align-items:center; gap:8px; font-size:14px; color:var(--ink2); }

/* ficha de socio */
.adesao-tipo-options{ display:flex; gap:16px; margin:8px 0 6px; }
.adesao-tipo-option{ display:flex; align-items:center; gap:8px; font-size:14.5px; color:var(--ink2); cursor:pointer; }
.adesao-tipo-option input{ width:auto; }
.adesao-row{
  display:flex; justify-content:space-between; align-items:flex-start; gap:16px; flex-wrap:wrap;
  background:var(--bg2); border:1px solid var(--border); border-radius:10px; padding:14px 18px; margin-bottom:10px;
}
.adesao-row-info{ display:flex; flex-direction:column; gap:2px; }
.adesao-row-info small{ color:var(--ink3); font-size:12.5px; }
.form-row{ display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.field select{
  background:var(--bg3); border:1px solid var(--border2); border-radius:8px;
  padding:11px 13px; color:var(--ink); font-family:'Inter'; font-size:14.5px;
}

/* page hero (paginas internas) */
.page-hero{ padding:110px 0 40px; border-bottom:1px solid var(--border); }
.page-hero h1{ font-size:clamp(28px,4vw,40px); margin:10px 0 12px; }
.page-sub{ color:var(--ink2); max-width:64ch; margin:0; font-size:15.5px; }

/* eventos em faixas a deslizar */
.events-marquee{ padding:24px 0; overflow:hidden; border-bottom:1px solid var(--border); }
.marquee-row{ width:100%; overflow:hidden; }
.marquee-row + .marquee-row{ margin-top:14px; }
.marquee-track{
  display:flex; width:max-content; gap:16px;
  animation:marqueeLeft 46s linear infinite;
}
.marquee-row-rev .marquee-track{ animation-name:marqueeRight; animation-duration:52s; }
.marquee-row:hover .marquee-track{ animation-play-state:paused; }
.photo-placeholder{
  flex:0 0 auto; width:220px; height:220px; border-radius:14px; overflow:hidden;
  background:var(--bg2); border:1px dashed var(--border2);
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:8px;
  color:var(--ink3); font-size:12.5px;
}
.photo-placeholder span{ font-size:30px; opacity:.5; }
.photo-placeholder img{ width:100%; height:100%; object-fit:cover; display:block; }

/* galeria de eventos anteriores */
.section-galeria{ padding:64px 0; border-bottom:1px solid var(--border); }
.galeria-cats-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:20px; }
.galeria-cat-card{
  font-family:inherit; text-align:left; cursor:pointer; background:var(--bg2); border:1px solid var(--border);
  border-radius:var(--radius); padding:0; overflow:hidden; transition:border-color .2s, transform .2s, box-shadow .2s;
}
.galeria-cat-card:hover{ border-color:var(--gold); transform:translateY(-3px); box-shadow:var(--shadow-card); }
.galeria-cat-cover{
  height:150px; background:var(--bg3); display:flex; align-items:center; justify-content:center; overflow:hidden;
  color:var(--ink3); font-size:34px;
}
.galeria-cat-cover span{ opacity:.6; }
.galeria-cat-cover img{ width:100%; height:100%; object-fit:cover; display:block; transition:transform .3s; }
.galeria-cat-card:hover .galeria-cat-cover img{ transform:scale(1.05); }
.galeria-cat-card h3{ font-size:15px; margin:16px 16px 4px; color:var(--ink); }
.galeria-cat-card p{ font-size:12.5px; color:var(--ink3); margin:0 16px 16px; }

/* painel de grelha paginada */
.galeria-grid-panel{
  display:none; margin-top:36px; padding-top:32px; border-top:1px solid var(--border);
  scroll-margin-top:110px;
}
.galeria-grid-panel.open{ display:block; }
.galeria-grid-head{ display:flex; align-items:center; justify-content:space-between; margin-bottom:18px; }
.galeria-grid-head h3{ font-size:17px; margin:0; }
.galeria-grid-close{
  background:var(--bg2); border:1px solid var(--border2); cursor:pointer; color:var(--ink2);
  width:34px; height:34px; border-radius:50%; display:flex; align-items:center; justify-content:center; transition:color .15s, border-color .15s;
}
.galeria-grid-close:hover{ color:var(--ink); border-color:var(--gold); }
.galeria-grid-close svg{ width:16px; height:16px; }
.galeria-photos-grid{
  display:grid; grid-template-columns:repeat(auto-fill,minmax(140px,1fr)); gap:10px;
}
.galeria-photo-thumb{
  padding:0; border:none; cursor:pointer; border-radius:10px; overflow:hidden; aspect-ratio:1/1;
  background:var(--bg2); transition:transform .2s, box-shadow .2s;
}
.galeria-photo-thumb:hover{ transform:scale(1.04); box-shadow:var(--shadow-card); }
.galeria-photo-thumb img{ width:100%; height:100%; object-fit:cover; display:block; }
.galeria-pagination{ display:flex; align-items:center; justify-content:center; gap:18px; margin-top:24px; }
.galeria-pagination span{ font-family:var(--mono); font-size:13.5px; color:var(--ink2); }
.galeria-pagination button:disabled{ opacity:.4; cursor:not-allowed; }

/* lightbox */
.lightbox{
  position:fixed; inset:0; z-index:150; background:rgba(6,9,13,.95);
  display:none; align-items:center; justify-content:center; padding:28px;
}
.lightbox.open{ display:flex; animation:lbIn .25s ease; }
@keyframes lbIn{ from{ opacity:0; } to{ opacity:1; } }
.lb-inner{ max-width:900px; width:100%; text-align:center; }
.lb-stage{
  background:var(--bg2); border:1px dashed var(--border2); border-radius:14px; overflow:hidden;
  min-height:320px; max-height:75vh; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:10px;
  color:var(--ink3); font-size:15px;
}
.lb-stage span{ font-size:44px; opacity:.5; }
.lb-stage.has-photo{ border-style:solid; border-color:var(--border); background:#000; }
.lb-stage img{ max-width:100%; max-height:75vh; width:auto; height:auto; display:block; }
.lb-cap{ color:var(--ink2); margin-top:18px; }
.lb-cap b{ font-family:var(--mono); font-size:18px; font-weight:700; display:block; color:var(--ink); }
.lb-cap span{ font-size:13px; opacity:.7; }
.lb-close, .lb-prev, .lb-next, .lb-download{
  position:absolute; background:rgba(238,242,247,.92); border:none; cursor:pointer;
  width:46px; height:46px; border-radius:50%; color:#0a0f16;
  display:flex; align-items:center; justify-content:center; transition:background .15s;
}
.lb-close:hover, .lb-prev:hover, .lb-next:hover, .lb-download:hover{ background:#fff; }
.lb-close{ top:22px; right:22px; }
.lb-download{ top:22px; right:78px; }
.lb-prev{ left:22px; top:50%; transform:translateY(-50%); }
.lb-next{ right:22px; top:50%; transform:translateY(-50%); }
.lb-close svg, .lb-prev svg, .lb-next svg, .lb-download svg{ width:20px; height:20px; }
@media (max-width:880px){ .lb-prev{ left:6px; } .lb-next{ right:6px; } .lb-download{ right:78px; top:16px; } .lb-close{ top:16px; } }
@keyframes marqueeLeft{ from{ transform:translateX(0); } to{ transform:translateX(-50%); } }
@keyframes marqueeRight{ from{ transform:translateX(-50%); } to{ transform:translateX(0); } }
@media (max-width:880px){
  .marquee-track{ gap:10px; }
  .evento-marquee-card{ width:240px; padding:12px; }
}
@media (prefers-reduced-motion: reduce){
  .marquee-track{ animation:none; }
}

/* eventos */
.section-eventos-preview, .section-eventos-list{ padding:64px 0; border-bottom:1px solid var(--border); }
.sec-head-row{ display:flex; justify-content:space-between; align-items:flex-end; flex-wrap:wrap; gap:16px; margin-bottom:28px; }
.sec-head-row .sec-head{ margin-bottom:0; }
.eventos-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); gap:20px; }
.evento-card{
  display:flex; gap:18px; background:var(--bg2); border:1px solid var(--border); border-radius:var(--radius);
  padding:20px; transition:border-color .2s, transform .2s, box-shadow .2s;
}
.evento-card:hover{ border-color:var(--gold); transform:translateY(-3px); box-shadow:var(--shadow-card); }
.evento-cartaz{ flex-shrink:0; width:110px; height:140px; border-radius:10px; overflow:hidden; background:var(--bg3); }
.evento-cartaz img{ width:100%; height:100%; object-fit:cover; display:block; }
.evento-cartaz-full{ max-width:320px; border-radius:var(--radius); overflow:hidden; margin-bottom:20px; box-shadow:var(--shadow-card); }
.evento-cartaz-full img{ width:100%; height:auto; display:block; }
.evento-date{
  font-family:var(--mono); font-weight:700; font-size:12px; color:var(--gold); text-transform:uppercase;
  letter-spacing:.04em; margin:0 0 6px;
}
.evento-info h3{ font-size:16px; margin-bottom:4px; }
.evento-meta{ font-size:13px; color:var(--ink3); margin:0 0 6px; }
.evento-price{ font-family:var(--mono); font-weight:700; color:var(--gold); margin:0; font-size:14px; }
.evento-stock{ font-size:12px; color:var(--ink3); margin:4px 0 0; }
.evento-stock-esgotado{ color:#ff4d4f; font-weight:700; }

.evento-esgotado .evento-cartaz{ position:relative; }
.evento-esgotado .evento-cartaz img{ filter:grayscale(1); opacity:.55; }
.evento-esgotado-badge{
  position:absolute; top:50%; left:50%; transform:translate(-50%,-50%) rotate(-8deg);
  background:#ff4d4f; color:#fff; font-weight:800; font-size:11px; letter-spacing:.04em; text-transform:uppercase;
  padding:4px 10px; border-radius:6px; box-shadow:0 2px 8px rgba(0,0,0,.35); white-space:nowrap;
}
.evento-esgotado h3, .evento-esgotado .evento-meta{ color:var(--ink3); }
.evento-esgotado .evento-price{ color:var(--ink3); }

/* aviso: fotos exigem conta */
.login-required{
  position:fixed; inset:0; z-index:150; background:rgba(6,9,13,.85);
  display:none; align-items:center; justify-content:center; padding:24px;
}
.login-required.open{ display:flex; animation:lbIn .25s ease; }
.login-required-box{
  position:relative; max-width:400px; width:100%; text-align:center;
  background:var(--bg2); border:1px solid var(--border2); border-radius:var(--radius);
  padding:36px 28px; box-shadow:var(--shadow-card);
}
.login-required-box h3{ font-size:19px; margin:0 0 10px; }
.login-required-box p{ color:var(--ink2); font-size:14.5px; line-height:1.6; margin:0 0 22px; }
.login-required-actions{ display:flex; gap:12px; justify-content:center; flex-wrap:wrap; }
.login-required-close{
  position:absolute; top:14px; right:14px; background:none; border:none; cursor:pointer; color:var(--ink3);
  width:30px; height:30px; display:flex; align-items:center; justify-content:center; transition:color .15s;
}
.login-required-close:hover{ color:var(--ink); }
.login-required-close svg{ width:18px; height:18px; }

/* voltar ao topo */
.back-to-top{
  position:fixed; right:24px; bottom:24px; z-index:120;
  width:46px; height:46px; border-radius:50%; border:1px solid var(--border2);
  background:var(--bg2); color:var(--gold); cursor:pointer;
  display:flex; align-items:center; justify-content:center;
  opacity:0; visibility:hidden; transform:translateY(10px);
  transition:opacity .2s, transform .2s, visibility .2s, border-color .15s, background .15s;
  box-shadow:var(--shadow-card);
}
.back-to-top.show{ opacity:1; visibility:visible; transform:translateY(0); }
.back-to-top:hover{ border-color:var(--gold); background:var(--bg3); }
.back-to-top svg{ width:20px; height:20px; }
@media (prefers-reduced-motion:reduce){ .back-to-top{ transition:opacity .15s, visibility .15s; } }

/* cookie banner */
.cookie-banner{
  position:fixed; left:20px; right:20px; bottom:-140px; z-index:200; max-width:640px; margin:0 auto;
  background:var(--bg2); border:1px solid var(--border2); border-radius:14px; padding:18px 20px;
  display:flex; align-items:center; gap:16px; flex-wrap:wrap; box-shadow:var(--shadow-card);
  transition:bottom .4s cubic-bezier(.2,.7,.2,1);
}
.cookie-banner.show{ bottom:20px; }
.cookie-banner p{ flex:1; min-width:220px; font-size:13.5px; color:var(--ink2); margin:0; }
@media (prefers-reduced-motion:reduce){ .cookie-banner{ transition:none; } }

/* loja */
.section-loja-list{ padding:20px 0 70px; }
.loja-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(300px,1fr)); gap:24px; }
.loja-card{
  position:relative; display:block; background:var(--bg2); border:1px solid var(--border); border-radius:var(--radius);
  overflow:hidden; transition:border-color .2s, transform .2s, box-shadow .2s;
}
.loja-card:hover{ border-color:var(--gold); transform:translateY(-3px); box-shadow:var(--shadow-card); }
.loja-card-img{ height:320px; background:var(--bg3); display:flex; align-items:center; justify-content:center; font-size:52px; color:var(--ink3); }
.loja-card-img img{ width:100%; height:100%; object-fit:cover; display:block; }
.loja-card-info{ padding:16px 18px; }
.loja-card-info h3{ font-size:15.5px; margin:0 0 6px; color:var(--ink); }
.loja-card-price{ font-family:var(--mono); font-weight:700; color:var(--gold); margin:0; font-size:15px; }

.produto-gallery{ width:100%; max-width:460px; margin-bottom:20px; }
.admin-photo-preview{ margin-top:12px; margin-bottom:0; }
.admin-photo-upload-form .btn-outline{ margin-top:6px; }
.produto-gallery-main{
  position:relative; width:100%; aspect-ratio:1/1; border-radius:var(--radius); overflow:hidden;
  background:var(--bg3); display:flex; align-items:center; justify-content:center; font-size:52px; color:var(--ink3);
  touch-action:pan-y; user-select:none;
}
.produto-gallery-main img{ width:100%; height:100%; object-fit:cover; display:block; pointer-events:none; }
.produto-gallery-nav{
  position:absolute; top:50%; transform:translateY(-50%); width:34px; height:34px; border-radius:50%;
  background:rgba(10,15,22,.6); color:#fff; border:none; cursor:pointer; font-size:20px; line-height:1;
  display:flex; align-items:center; justify-content:center; transition:background .15s;
}
.produto-gallery-nav:hover{ background:rgba(10,15,22,.85); }
.produto-gallery-prev{ left:8px; }
.produto-gallery-next{ right:8px; }
.produto-gallery-thumbs{ display:flex; gap:8px; flex-wrap:wrap; margin-top:10px; }
.produto-gallery-thumb{
  width:68px; height:68px; border-radius:8px; overflow:hidden; border:2px solid transparent; padding:0; cursor:pointer; background:none;
}
.produto-gallery-thumb img{ width:100%; height:100%; object-fit:cover; display:block; }
.produto-gallery-thumb.active{ border-color:var(--gold); }
.produto-price{ font-family:var(--mono); font-weight:700; color:var(--gold); font-size:22px; margin-top:14px; }
.produto-example-badge{ position:static; display:inline-block; margin-bottom:14px; }

/* noticias */
.section-noticias-list{ padding:20px 0 70px; }
.example-note{
  background:rgba(224,184,74,.1); border:1px solid rgba(224,184,74,.3); border-radius:10px;
  padding:12px 16px; font-size:13px; color:var(--ink2); margin-bottom:24px;
}
.noticias-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(340px,1fr)); gap:24px; }
@media (max-width:700px){ .noticias-grid{ grid-template-columns:1fr; } }
.noticia-card{
  position:relative; display:block; background:var(--bg2); border:1px solid var(--border); border-radius:var(--radius);
  padding:22px; transition:border-color .2s, transform .2s, box-shadow .2s;
}
.noticia-card:hover{ border-color:var(--gold); transform:translateY(-3px); box-shadow:var(--shadow-card); }
.noticia-date{ font-family:var(--mono); font-size:12.5px; color:var(--gold); text-transform:uppercase; letter-spacing:.05em; margin-bottom:9px; }
.noticia-card h3{ font-size:18.5px; margin:0 0 9px; color:var(--ink); line-height:1.35; }
.noticia-excerpt{ font-size:14.5px; color:var(--ink2); line-height:1.65; margin:0 0 14px; }
.noticia-views{ display:flex; align-items:center; gap:6px; font-size:12.5px; color:var(--ink3); }
.noticia-views svg{ width:15px; height:15px; }
.example-badge{
  position:absolute; top:16px; right:16px; background:var(--gold); color:var(--bg); font-family:var(--mono);
  font-size:10px; font-weight:700; letter-spacing:.06em; padding:4px 8px; border-radius:6px;
}
/* imagem inteira (sem cortar), mas limitada em altura para o cartao nao crescer */
/* a imagem ocupa toda a largura do cartao e aparece inteira (sem cortes nem faixas) */
.noticia-card-img{
  margin:-22px -22px 16px; overflow:hidden; border-radius:var(--radius) var(--radius) 0 0;
  background:var(--bg3);
}
.noticia-card-img img{ width:100%; height:auto; display:block; }
.noticia-detail-layout{ display:grid; grid-template-columns:1.3fr 1fr; gap:48px; align-items:start; }
.noticia-gallery{ max-width:100%; }
.noticia-gallery .produto-gallery-main{ aspect-ratio:auto; background:none; }
.noticia-gallery .produto-gallery-main img{ height:auto; object-fit:contain; }
.noticia-link-btn{ margin-top:20px; }

.section-noticia-detail{ padding:110px 0 70px; }
.back-link{ display:inline-block; font-size:13.5px; color:var(--ink2); margin-bottom:20px; }
.back-link:hover{ color:var(--gold); }
.noticia-meta-row{ display:flex; align-items:center; gap:18px; color:var(--ink3); font-size:13.5px; margin:12px 0 24px; }
.section-noticia-detail .example-badge{ position:static; display:inline-block; margin-bottom:14px; }
.section-noticia-detail .example-note{ margin-bottom:24px; }
.noticia-content{ color:var(--ink2); line-height:1.85; font-size:16px; white-space:pre-line; }

.legal-updated{ color:var(--ink3); font-size:13px; margin:8px 0 28px; }
.legal-content{ color:var(--ink2); line-height:1.8; font-size:15.5px; }
.legal-content h2{ font-size:19px; color:var(--ink); margin:32px 0 12px; }
.legal-content h2:first-child{ margin-top:0; }
.legal-content p{ margin:0 0 14px; }
.legal-content ul{ margin:0 0 14px; padding-left:22px; }
.legal-content li{ margin-bottom:6px; }
.legal-content a{ color:var(--gold); text-decoration:underline; }
.legal-content em{ color:var(--ink3); font-style:italic; }

/* area de conta */
.account-flash{
  margin-top:18px; padding:12px 16px; border-radius:10px; font-size:13.5px;
}
.account-flash-success{ background:rgba(90,200,120,.1); border:1px solid rgba(90,200,120,.35); color:#5ac878; }
.account-flash-error{ background:rgba(224,90,90,.1); border:1px solid rgba(224,90,90,.35); color:#e05a5a; }

.account-section{
  margin-top:32px; padding-top:28px; border-top:1px solid var(--border);
}
.account-section h2{ font-size:18px; margin-bottom:16px; }
.account-section .buy-form{ max-width:640px; }
.account-section-danger{ border-top-color:rgba(224,90,90,.3); }
.account-section-danger p{ color:var(--ink2); font-size:13.5px; margin-bottom:16px; }

.ticket-row-account{ display:flex; align-items:center; gap:10px; }
.ticket-row-account .ticket-row{ flex:1; }
.link-btn-danger{ color:#e05a5a; }
.link-btn-danger:hover{ color:#ff7a7a; }

.btn-danger{
  display:inline-flex; align-items:center; justify-content:center; padding:12px 24px; border-radius:9px;
  background:rgba(224,90,90,.12); border:1px solid rgba(224,90,90,.4); color:#e05a5a; font-weight:700;
  cursor:pointer; font-size:14.5px; transition:background .15s, border-color .15s;
}
.btn-danger:hover{ background:rgba(224,90,90,.2); border-color:#e05a5a; }

/* foto de perfil */
.account-perfil-layout{ display:grid; grid-template-columns:1fr 400px; gap:32px; align-items:start; }
@media (max-width:880px){ .account-perfil-layout{ grid-template-columns:1fr; } .account-avatar-box{ order:-1; } }
.account-avatar-box{
  display:flex; flex-direction:column; align-items:center; text-align:center; gap:16px;
  margin-top:60px;
}
.account-avatar-preview{
  width:320px; height:320px; border-radius:50%; overflow:hidden; flex-shrink:0;
  background:var(--bg3); border:1px solid var(--border2); display:flex; align-items:center; justify-content:center; color:var(--ink3);
}
.account-avatar-preview img{ width:100%; height:100%; object-fit:cover; display:block; }
.account-avatar-preview svg{ width:120px; height:120px; }
.account-avatar-col{ display:flex; flex-direction:column; align-items:center; gap:10px; width:100%; }
.account-avatar-actions{ display:flex; align-items:center; justify-content:center; gap:14px; flex-wrap:wrap; }
.account-avatar-form{ display:flex; align-items:center; justify-content:center; }
.account-avatar-file{
  position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden;
  clip:rect(0,0,0,0); white-space:nowrap; border:0;
}

/* estado de socio */
.socio-status-box{
  margin-top:22px; padding:18px 20px; border-radius:var(--radius); border:1px solid var(--border2);
  background:var(--bg2);
}
.socio-status-box p{ margin:8px 0 0; font-size:14px; color:var(--ink2); }
.socio-status-box a{ color:var(--gold); text-decoration:underline; }
.socio-status-badge{ font-family:var(--mono); font-size:14px; font-weight:700; }
.socio-status-regularizado{ border-color:rgba(90,200,120,.4); background:rgba(90,200,120,.08); }
.socio-status-regularizado .socio-status-badge{ color:#5ac878; }
.socio-status-pendente{ border-color:rgba(224,184,74,.4); background:rgba(224,184,74,.08); }
.socio-status-pendente .socio-status-badge{ color:var(--gold); }
.socio-status-nao_socio .socio-status-badge{ color:var(--ink3); }

/* contagem decrescente ate' renovar a quota */
.renovacao-contagem{
  display:flex; align-items:center; gap:12px; margin-top:14px; padding:14px 16px;
  border-radius:10px; background:var(--bg3); border:1px solid var(--border2);
}
/* o relogio ao vivo aparece sem caixa, so' os numeros */
#renovacao-contagem{
  flex-direction:column; align-items:flex-start; gap:8px;
  padding:6px 0 0; background:none; border:none; border-radius:0;
}
.renovacao-relogio{ display:flex; align-items:flex-start; gap:10px; }
.renovacao-unidade{ display:flex; flex-direction:column; align-items:center; min-width:46px; }
.renovacao-unidade-label{
  font-size:10.5px; text-transform:uppercase; letter-spacing:.07em;
  color:var(--ink3); margin-top:4px;
}
.renovacao-sep{
  font-family:var(--mono); font-size:26px; font-weight:700; line-height:1;
  color:var(--ink3); opacity:.5;
}
.renovacao-numero{
  font-family:var(--mono); font-size:30px; font-weight:700; line-height:1; color:#5ac878;
  font-variant-numeric:tabular-nums;
}
.renovacao-texto{ font-size:14px; color:var(--ink2); line-height:1.4; margin:0; }
.renovacao-perto{ border-color:rgba(224,184,74,.45); background:rgba(224,184,74,.1); }
.renovacao-perto .renovacao-numero{ color:var(--gold); }
.renovacao-hoje{ border-color:rgba(224,184,74,.55); background:rgba(224,184,74,.14); }
.renovacao-hoje .renovacao-texto{ color:var(--gold); font-weight:600; }
.renovacao-expirada{ border-color:rgba(224,90,90,.5); background:rgba(224,90,90,.12); }
.renovacao-expirada .renovacao-numero{ color:#e05a5a; }
.renovacao-expirada .renovacao-texto{ color:#e05a5a; }

/* admin: validar bilhete */
.validar-box{ max-width:420px; margin:20px auto 0; }

/* admin: imagens do site */
.admin-image-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(320px,1fr)); gap:20px; margin-top:20px; }
.admin-image-card{
  background:var(--bg2); border:1px solid var(--border); border-radius:var(--radius); overflow:hidden;
  display:flex; flex-direction:column;
}
.admin-image-preview{ width:100%; height:180px; background:var(--bg3); }
.admin-image-preview img{ width:100%; height:100%; object-fit:cover; display:block; }
.admin-extra-photos-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(100px,1fr)); gap:10px; margin-bottom:12px; }
.admin-extra-photo{ position:relative; aspect-ratio:1; border-radius:8px; overflow:hidden; background:var(--bg3); }
.admin-extra-photo img{ width:100%; height:100%; object-fit:cover; display:block; }
.admin-extra-photo form{ position:absolute; top:4px; right:4px; }
.admin-extra-photo-del{
  width:22px; height:22px; border-radius:50%; border:none; background:rgba(10,15,22,.75); color:#fff;
  font-size:15px; line-height:1; cursor:pointer; display:flex; align-items:center; justify-content:center;
}
.admin-extra-photo-del:hover{ background:#ff4d4f; }
.admin-image-body{ padding:20px; }
.admin-image-card h2{ font-size:16.5px; margin:0 0 8px; }
.admin-image-card .page-sub{ margin-bottom:16px; }
.admin-image-form{ display:flex; flex-direction:column; gap:12px; align-items:flex-start; }
.admin-image-form input[type="file"]{ font-size:12.5px; color:var(--ink2); max-width:100%; }

/* admin: galeria de fotos */
.galeria-admin-card{
  display:grid; grid-template-columns:90px 1fr auto; gap:16px; align-items:center;
  background:var(--bg2); border:1px solid var(--border); border-radius:10px; padding:14px 18px; margin-bottom:10px;
}
.galeria-admin-cover{
  width:90px; height:70px; border-radius:8px; overflow:hidden; background:var(--bg3);
  display:flex; align-items:center; justify-content:center; font-size:22px; color:var(--ink3);
}
.galeria-admin-cover img{ width:100%; height:100%; object-fit:cover; }
.galeria-admin-info h3{ font-size:15px; margin:0 0 4px; }
.galeria-admin-info .inline-form{ display:flex; gap:8px; align-items:center; margin-top:8px; }
.galeria-admin-info input[type="file"]{ font-size:12px; color:var(--ink2); max-width:220px; }
@media (max-width:700px){ .galeria-admin-card{ grid-template-columns:60px 1fr; } .galeria-admin-card > form{ grid-column:1 / -1; } }

/* admin: socios */
.socios-admin-list{ display:flex; flex-direction:column; gap:10px; margin-top:20px; }
.socio-row{
  display:grid; grid-template-columns:2fr 1.2fr 1fr 1fr auto; gap:14px; align-items:center;
  background:var(--bg2); border:1px solid var(--border); border-radius:10px; padding:12px 16px; font-size:13.5px;
}
/* bilhete que ja' deu entrada: alerta a vermelho ao validar */
.entrada-repetida{ color:#e05a5a !important; }

/* caixa dos avisos de renovacao (aba Socios) */
.avisos-box{
  display:flex; align-items:center; justify-content:space-between; gap:18px; flex-wrap:wrap;
  background:var(--bg2); border:1px solid var(--border); border-radius:10px;
  padding:14px 18px; margin:0 0 18px;
}
.avisos-box strong{ font-size:14.5px; }
.avisos-accao{ display:flex; align-items:center; gap:12px; flex-shrink:0; }
.avisos-contagem{ font-size:13px; color:var(--ink2); }
.avisos-contagem strong{ color:var(--gold); font-family:var(--mono); font-size:16px; }
.avisos-alerta{ color:var(--gold); }
.avisos-box button[disabled]{ opacity:.45; cursor:not-allowed; }

/* barra de pesquisa + exportar das listas do painel */
.admin-toolbar{
  display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin:0 0 18px;
}
.admin-search{ position:relative; display:flex; align-items:center; gap:8px; flex:1; min-width:260px; }

/* engrenagem dos filtros + painel */
.admin-filtros-btn{
  display:inline-flex; align-items:center; gap:7px; flex-shrink:0; cursor:pointer;
  background:transparent; border:1px solid var(--border2); color:var(--ink); border-radius:8px;
  padding:9px 14px; font-size:13px; font-family:'Inter'; font-weight:600;
  transition:border-color .15s, color .15s;
}
.admin-filtros-btn:hover{ border-color:var(--gold); color:var(--gold); }
.admin-filtros-btn svg{ width:15px; height:15px; transition:transform .25s; }
.admin-filtros-btn[aria-expanded="true"] svg{ transform:rotate(60deg); }
.admin-filtros-btn.tem-filtros{ border-color:var(--gold); color:var(--gold); }
.admin-filtros-contador{
  background:var(--gold); color:#04111c; border-radius:20px; min-width:18px; height:18px;
  display:inline-flex; align-items:center; justify-content:center;
  font-size:11px; font-weight:700; padding:0 5px;
}
.admin-filtros-painel{
  flex-basis:100%; display:flex; align-items:flex-end; gap:14px; flex-wrap:wrap;
  background:var(--bg2); border:1px solid var(--border); border-radius:10px; padding:16px 18px;
}
/* o display:flex acima venceria o atributo hidden, por isso e' preciso ser explicito */
.admin-filtros-painel[hidden]{ display:none; }
.admin-filtro{ display:flex; flex-direction:column; gap:6px; min-width:170px; flex:1; }
.admin-filtro > span{ font-size:12px; color:var(--ink3); }
.admin-filtro select{
  background:var(--bg3); border:1px solid var(--border2); color:var(--ink);
  border-radius:8px; padding:9px 10px; font-size:13.5px; font-family:'Inter'; width:100%;
}
.admin-filtros-accoes{ display:flex; align-items:center; gap:14px; flex-shrink:0; }
@media (max-width:700px){
  .admin-filtro{ min-width:0; flex-basis:100%; }
  .admin-filtros-accoes{ width:100%; justify-content:space-between; }
}
.admin-search-icon{
  position:absolute; left:12px; width:16px; height:16px; color:var(--ink3); pointer-events:none;
}
.admin-search input[type="search"]{
  flex:1; min-width:0; background:var(--bg3); border:1px solid var(--border2); border-radius:8px;
  padding:10px 34px 10px 36px; color:var(--ink); font-family:'Inter'; font-size:14px;
}
.admin-search input[type="search"]::-webkit-search-cancel-button{ display:none; }
.admin-search-limpar{
  position:absolute; right:10px; top:50%; transform:translateY(-50%);
  width:20px; height:20px; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  color:var(--ink3); font-size:16px; line-height:1; background:var(--bg2);
}
.admin-search-limpar:hover{ color:var(--ink); }
.admin-exportar{ display:inline-flex; align-items:center; gap:7px; flex-shrink:0; }
.admin-exportar svg{ width:15px; height:15px; }
.admin-search-resultado{ font-size:13px; color:var(--ink3); margin:-8px 0 16px; }
.admin-search-resultado strong{ color:var(--ink); }
.admin-search-resultado a{ color:var(--gold); text-decoration:underline; margin-left:6px; }
@media (max-width:700px){
  .admin-search{ min-width:0; width:100%; }
  .admin-exportar{ width:100%; justify-content:center; }
}

.socio-identidade{ display:flex; align-items:center; gap:11px; min-width:0; }
.socio-identidade > span:last-child{ min-width:0; }
.socio-identidade small{ display:block; overflow-wrap:anywhere; }
.socio-avatar{
  flex-shrink:0; width:38px; height:38px; border-radius:50%; overflow:hidden;
  background:var(--bg3); border:1px solid var(--border2); color:var(--ink3);
  display:flex; align-items:center; justify-content:center;
}
.socio-avatar img{ width:100%; height:100%; object-fit:cover; display:block; }
.socio-avatar svg{ width:19px; height:19px; }
.socio-row select, .socio-row input[type="date"]{
  background:var(--bg3); border:1px solid var(--border2); color:var(--ink); border-radius:8px; padding:8px 10px; font-size:13px;
}
@media (max-width:880px){ .socio-row{ grid-template-columns:1fr 1fr; } }

/* toast */
.toast{
  position:fixed; top:110px; left:50%; transform:translateX(-50%);
  display:flex; align-items:center; gap:10px; z-index:50;
  background:linear-gradient(135deg, var(--gold), var(--gold-dark)); color:#04111c; font-weight:600; font-size:14.5px;
  padding:14px 18px; border-radius:12px; box-shadow:0 12px 30px rgba(0,0,0,.35);
  animation:toastIn .35s cubic-bezier(.2,.7,.2,1);
}
.toast svg{ width:20px; height:20px; flex-shrink:0; }
.toast-close{
  background:none; border:none; cursor:pointer; color:#04111c; font-size:20px; line-height:1;
  padding:0 0 0 6px; opacity:.7;
}
.toast-close:hover{ opacity:1; }
.toast.hide{ animation:toastOut .3s ease forwards; }
@keyframes toastIn{ from{ opacity:0; transform:translateX(-50%) translateY(-14px); } to{ opacity:1; transform:translateX(-50%) translateY(0); } }
@keyframes toastOut{ to{ opacity:0; transform:translateX(-50%) translateY(-14px); } }
@media (prefers-reduced-motion:reduce){ .toast{ animation:none; } .toast.hide{ animation:none; opacity:0; } }

/* evento detail */
.section-evento-detail{ padding:110px 0 64px; }
.evento-detail-layout{ display:grid; grid-template-columns:1.3fr 1fr; gap:48px; align-items:start; }
.evento-facts{ list-style:none; padding:0; margin:18px 0; display:flex; flex-direction:column; gap:8px; color:var(--ink2); font-size:15px; }
.evento-desc{ color:var(--ink2); line-height:1.8; margin:18px 0; white-space:pre-line; }
.evento-stock-note{ color:var(--gold); font-size:13.5px; }
.evento-buy-box{ background:var(--bg2); border:1px solid var(--border); border-radius:var(--radius); padding:28px; box-shadow:var(--shadow-card); position:sticky; top:100px; }
.buyer-account-box{
  display:flex; flex-direction:column; gap:2px; background:var(--bg3); border:1px solid var(--border2);
  border-radius:10px; padding:14px 16px; margin-bottom:20px;
}
.buyer-account-box span{ font-size:11.5px; color:var(--ink3); text-transform:uppercase; letter-spacing:.04em; }
.buyer-account-box strong{ font-size:15px; color:var(--ink); }
.buyer-account-box small{ font-size:12.5px; color:var(--ink2); }
.evento-buy-box h2{ font-size:18px; }
.buy-form .field{ margin-bottom:16px; }

/* bilhete */
.section-bilhete{ padding:110px 0 80px; }
.bilhete-card{ background:var(--bg2); border:1px solid var(--border); border-radius:var(--radius); padding:36px; box-shadow:var(--shadow-card); text-align:center; }
.bilhete-code{ font-family:var(--mono); font-size:26px; font-weight:700; color:var(--gold); letter-spacing:.06em; margin:16px 0; padding:14px; background:var(--bg3); border:1px dashed var(--border2); border-radius:10px; }
.bilhete-hint{ color:var(--ink2); font-size:13.5px; margin-bottom:24px; }
.bilhete-details{ text-align:left; display:flex; flex-direction:column; gap:10px; margin-bottom:20px; }
.bilhete-details div{ display:flex; justify-content:space-between; font-size:14px; border-bottom:1px solid var(--border); padding-bottom:8px; }
.bilhete-details span{ color:var(--ink3); }
.bilhete-pending-note{ background:rgba(224,184,74,.1); border:1px solid rgba(224,184,74,.35); border-radius:10px; padding:14px; font-size:13.5px; color:var(--ink2); text-align:left; margin-bottom:16px; }
.bilhete-save-note{ font-size:12px; color:var(--ink3); }

.status-badge{
  display:inline-block; font-family:var(--mono); font-size:11.5px; font-weight:700; text-transform:uppercase;
  padding:4px 12px; border-radius:20px; letter-spacing:.04em;
}
.status-pendente{ background:rgba(224,184,74,.15); color:var(--gold); }
.status-pago{ background:rgba(61,220,132,.15); color:#3ddc84; }
.status-cancelado{ background:rgba(224,90,90,.15); color:#e05a5a; }
.status-levantado{ background:rgba(62,207,178,.15); color:var(--teal); }

/* admin */
.admin-nav{ display:flex; gap:18px; align-items:center; border-bottom:1px solid var(--border); padding-bottom:14px; margin:20px 0 30px; font-size:14.5px; flex-wrap:wrap; }
.admin-nav a.active{ color:var(--gold); font-weight:600; }
.admin-header-row{ display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:14px; }
.stats-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:14px; margin-bottom:40px; }
.stat-card{ background:var(--bg2); border:1px solid var(--border); border-radius:10px; padding:18px; display:flex; flex-direction:column; gap:4px; transition:border-color .15s; }
.stat-card:hover{ border-color:var(--gold); }
.stat-card .stat-num{ font-family:var(--mono); font-size:24px; font-weight:700; color:var(--gold); }
.stat-card .stat-label{ font-size:12.5px; color:var(--ink3); }
/* cartoes clicaveis que filtram a lista */
.stat-card-link{ cursor:pointer; }
.stat-card-link:hover{ transform:translateY(-2px); box-shadow:var(--shadow-card); }
.stat-card-ativo{ border-color:var(--gold); background:var(--bg3); }
.stat-card-ativo.stat-card-good{ border-color:#5ac878; }
.stat-card-ativo.stat-card-warn{ border-color:var(--gold); }
.admin-filtro-ativo{
  font-size:13px; color:var(--ink2); background:var(--bg2); border:1px solid var(--border);
  border-radius:8px; padding:9px 14px; margin:0 0 16px;
}
.admin-filtro-ativo strong{ color:var(--ink); }
.admin-filtro-ativo a{ color:var(--gold); text-decoration:underline; margin-left:8px; }

.stat-card-good{ border-color:rgba(90,200,120,.3); }
.stat-card-good .stat-num{ color:#5ac878; }
.stat-card-good:hover{ border-color:#5ac878; }
.stat-card-warn{ border-color:rgba(224,184,74,.35); }
.stat-card-warn .stat-num{ color:var(--gold); }

.tickets-list, .events-table{ display:flex; flex-direction:column; gap:8px; }
.ticket-row, .event-row{
  display:grid; grid-template-columns:1fr 1.4fr 1fr 100px 90px; gap:14px; align-items:center;
  background:var(--bg2); border:1px solid var(--border); border-radius:10px; padding:14px 18px; font-size:13.5px;
}
.event-row{ grid-template-columns:1.4fr 1fr 80px 1fr 90px auto auto; }
.ticket-row-admin{ grid-template-columns:1fr 1.6fr 1fr 1fr 90px 90px 1.4fr; }
.ticket-row small{ color:var(--ink3); }
.ticket-curso{ color:var(--teal) !important; }
.ticket-status-form{ display:flex; gap:8px; align-items:center; }
.ticket-status-form select{ background:var(--bg3); border:1px solid var(--border2); border-radius:6px; color:var(--ink); padding:6px 8px; font-size:12.5px; }

@media (max-width:880px){
  .nav-collapse{
    position:absolute; top:calc(100% + 6px); left:0; right:0; display:none; flex-direction:column; align-items:stretch;
    background:var(--bg2); border:1px solid var(--border); border-radius:16px; padding:8px 20px 16px;
    box-shadow:0 16px 30px rgba(0,0,0,.35);
  }
  .nav-collapse.open{ display:flex; }
  .navlinks{ flex-direction:column; align-items:stretch; gap:0; }
  .navlinks a{ padding:13px 0; border-bottom:1px solid var(--border); }
  /* no telemovel nao ha hover: o submenu abre ao tocar em "Direcao" */
  .nav-dropdown-toggle{ justify-content:space-between; }
  .nav-dropdown-caret{ width:15px; height:15px; }
  .nav-dropdown-menu{
    position:static; transform:none; min-width:0;
    background:none; border:none; border-radius:0; box-shadow:none;
    padding:0 0 0 16px;
    display:none; opacity:1; visibility:visible;
  }
  /* o hover do rato nao pode abrir nada no telemovel */
  .nav-dropdown:hover .nav-dropdown-menu,
  .nav-dropdown:focus-within .nav-dropdown-menu{
    display:none; transform:none;
  }
  .nav-dropdown.aberto .nav-dropdown-menu,
  .nav-dropdown.aberto:hover .nav-dropdown-menu,
  .nav-dropdown.aberto:focus-within .nav-dropdown-menu{ display:block; }
  .nav-dropdown.aberto .nav-dropdown-caret{ transform:rotate(180deg); }
  .nav-dropdown:hover .nav-dropdown-caret{ transform:none; }
  .nav-dropdown.aberto:hover .nav-dropdown-caret{ transform:rotate(180deg); }
  .nav-dropdown-menu::before{ display:none; }
  .navlinks .nav-dropdown-menu a{
    padding:11px 0; border-radius:0; border-bottom:1px solid var(--border); font-size:14px;
  }
  .navlinks .nav-dropdown-menu a:hover{ background:none; }
  .nav-auth{ flex-direction:column; align-items:stretch; gap:10px; padding-top:14px; }
  .nav-auth .btn-primary, .nav-auth .link-btn{ width:100%; text-align:center; }
  .nav-toggle{ display:block; }

  /* header compacto: no telemovel os itens da direita nao cabem todos */
  .site-header, #site-header{ top:8px; max-width:calc(100% - 16px); border-radius:16px; }
  .main-nav{ gap:10px; padding:8px 14px; }
  .logo-img{ height:42px; }
  .nav-actions{ gap:8px; margin-left:auto; min-width:0; }
  .nav-divider{ display:none; }
  .nav-actions .btn-primary.btn-sm{
    padding:7px 11px; font-size:11.5px; white-space:nowrap;
  }
  .account-icon-btn, .theme-toggle-btn{ width:30px; height:30px; }
  .account-icon-btn svg, .theme-toggle-btn svg{ width:15px; height:15px; }
  .lang-switch-btn{ padding:5px 9px; font-size:10.5px; }
  .nav-toggle{ padding:4px; }

  .sobre-layout, .contactos-layout, .evento-detail-layout, .noticia-detail-layout{ grid-template-columns:1fr; }
  .ticket-row, .event-row, .ticket-row-admin{ grid-template-columns:1fr; text-align:left; }
}

/* ecras muito estreitos: encurtar o texto do botao de bilhetes */
@media (max-width:430px){
  .nav-actions .btn-primary.btn-sm{ font-size:11px; padding:7px 9px; }
  .logo-img{ height:36px; }
  .main-nav{ gap:8px; padding:8px 10px; }
  .nav-actions{ gap:6px; }
}
