/* ===================================================================
   AMO VISION CONNECT — Design System
   Verde petróleo / Azul profundo / Branco / Dourado elegante
=================================================================== */

:root{
  --teal-950:#07211f;
  --teal-900:#0d3634;
  --teal-800:#12463f;
  --teal-700:#175a4f;
  --blue-900:#0a2440;
  --blue-800:#123659;
  --gold-500:#c8a24b;
  --gold-300:#e4c982;
  --white:#ffffff;
  --ink-900:#0e1b19;
  --ink-700:#33403d;
  --ink-500:#5c6864;
  --ink-300:#96a19d;
  --paper:#f6f8f6;
  --paper-dim:#eef2ef;
  --line:#dde4e0;
  --ok:#1e7a5c;
  --warn:#b3781c;
  --err:#a63838;

  --font-display: Georgia, 'Iowan Old Style', 'Palatino Linotype', Palatino, serif;
  --font-body: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
  --font-mono: ui-monospace, 'SF Mono', 'Cascadia Mono', Consolas, monospace;

  --radius-s:6px;
  --radius-m:12px;
  --radius-l:20px;
  --shadow-1: 0 1px 2px rgba(14,27,25,.06), 0 1px 1px rgba(14,27,25,.04);
  --shadow-2: 0 8px 24px rgba(10,36,32,.10), 0 2px 6px rgba(10,36,32,.06);
  --shadow-gold: 0 0 0 1px rgba(200,162,75,.35), 0 8px 24px rgba(200,162,75,.15);
}

[data-theme="dark"]{
  --paper:#0b1e1c;
  --paper-dim:#0f2624;
  --ink-900:#eef3f1;
  --ink-700:#c6d1cd;
  --ink-500:#8fa19c;
  --ink-300:#4c5f5a;
  --line:#1c3a36;
  --white:#0f2624;
}

*{box-sizing:border-box;}
html,body{height:100%;}
body{
  margin:0;
  font-family:var(--font-body);
  background:var(--paper);
  color:var(--ink-900);
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3,.font-display{font-family:var(--font-display);}
button,input,select,textarea{font-family:inherit;}
a{color:inherit;}
::selection{background:var(--gold-300); color:var(--teal-950);}

/* focus visibility */
:focus-visible{outline:2px solid var(--gold-500); outline-offset:2px; border-radius:4px;}

/* ---------- App shell ---------- */
.app-shell{display:flex; min-height:100vh;}

.sidebar{
  width:264px; flex-shrink:0;
  background:linear-gradient(185deg, var(--teal-950), var(--blue-900) 130%);
  color:var(--white);
  display:flex; flex-direction:column;
  padding:20px 14px;
  position:sticky; top:0; height:100vh;
}
.brand{
  display:flex; align-items:center; gap:10px;
  padding:8px 8px 20px;
  border-bottom:1px solid rgba(255,255,255,.12);
  margin-bottom:14px;
}
.brand-mark{width:34px;height:34px;flex-shrink:0;}
.brand-text{line-height:1.15;}
.brand-text b{font-family:var(--font-display); font-size:15.5px; letter-spacing:.2px;}
.brand-text span{display:block; font-size:10.5px; color:var(--gold-300); letter-spacing:.6px; text-transform:uppercase;}

.nav-group{margin-bottom:6px;}
.nav-label{font-size:10.5px; text-transform:uppercase; letter-spacing:.8px; color:rgba(255,255,255,.4); padding:14px 12px 6px;}
.nav-item{
  display:flex; align-items:center; gap:10px;
  padding:9px 12px; border-radius:10px; font-size:13.5px;
  color:rgba(255,255,255,.78); cursor:pointer; user-select:none;
  transition:background .15s ease, color .15s ease;
}
.nav-item svg{flex-shrink:0; opacity:.85;}
.nav-item:hover{background:rgba(255,255,255,.07); color:var(--white);}
.nav-item.active{background:rgba(200,162,75,.16); color:var(--white); box-shadow:inset 0 0 0 1px rgba(200,162,75,.35);}
.nav-item.active svg{opacity:1;}

.sidebar-footer{margin-top:auto; padding:10px 8px 4px; border-top:1px solid rgba(255,255,255,.12); font-size:11.5px; color:rgba(255,255,255,.45);}

.main{flex:1; min-width:0; display:flex; flex-direction:column;}
.topbar{
  display:flex; align-items:center; gap:16px;
  padding:14px 26px; border-bottom:1px solid var(--line);
  background:var(--white); position:sticky; top:0; z-index:5;
}
.topbar h1{font-size:19px; margin:0; font-weight:600;}
.topbar .spacer{flex:1;}
.search-box{
  display:flex; align-items:center; gap:8px;
  background:var(--paper-dim); border:1px solid var(--line);
  border-radius:10px; padding:7px 12px; width:280px; color:var(--ink-500); font-size:13px;
}
.search-box input{border:none; background:transparent; outline:none; width:100%; color:var(--ink-900); font-size:13px;}
.topbar-search{position:relative;}
.search-results{
  position:absolute; top:calc(100% + 6px); left:0; right:0; background:var(--white);
  border:1px solid var(--line); border-radius:12px; box-shadow:var(--shadow-2);
  max-height:70vh; overflow:auto; z-index:20; padding:6px;
}
.search-results-group{padding:8px 10px 4px; font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.5px; color:var(--ink-500);}
.search-result-item{
  display:flex; align-items:center; gap:10px; padding:8px 10px; border-radius:8px; cursor:pointer;
}
.search-result-item:hover{background:var(--paper-dim);}
.search-result-item .sr-icon{width:30px; height:30px; border-radius:8px; background:var(--paper-dim); display:flex; align-items:center; justify-content:center; flex-shrink:0; color:var(--teal-700);}
.search-result-item .sr-text{min-width:0;}
.search-result-item .sr-title{font-size:13px; font-weight:600; color:var(--ink-900); white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
.search-result-item .sr-subtitle{font-size:11.5px; color:var(--ink-500); white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
.search-empty{padding:16px; text-align:center; font-size:13px; color:var(--ink-500);}
.btn-search-mobile{display:none;}
.search-overlay{
  display:none; position:fixed; inset:0; background:var(--white); z-index:40;
  flex-direction:column;
}
.search-overlay.open{display:flex;}
.search-overlay-header{display:flex; align-items:center; gap:10px; padding:12px 14px; border-bottom:1px solid var(--line);}
.search-overlay-header .search-box{flex:1; width:auto;}
.search-overlay-body{flex:1; overflow:auto; padding:6px;}
.icon-btn{
  width:34px; height:34px; border-radius:9px; border:1px solid var(--line);
  background:var(--white); display:flex; align-items:center; justify-content:center; cursor:pointer;
}
.icon-btn:hover{background:var(--paper-dim);}
.avatar{
  width:34px;height:34px;border-radius:50%;
  background:linear-gradient(135deg,var(--teal-800),var(--blue-800));
  color:var(--gold-300); display:flex; align-items:center; justify-content:center;
  font-size:13px; font-weight:700; font-family:var(--font-display); cursor:pointer;
}

.content{padding:26px; flex:1;}

/* ---------- Cards / grid ---------- */
.grid{display:grid; gap:16px;}
.g-4{grid-template-columns:repeat(4,1fr);}
.g-3{grid-template-columns:repeat(3,1fr);}
.g-2{grid-template-columns:repeat(2,1fr);}
@media (max-width:1100px){.g-4{grid-template-columns:repeat(2,1fr);} .g-3{grid-template-columns:repeat(2,1fr);}}

.card{
  background:var(--white); border:1px solid var(--line); border-radius:var(--radius-m);
  padding:18px; box-shadow:var(--shadow-1);
}
.card h3{margin:0 0 4px; font-size:14px; font-weight:600; color:var(--ink-700);}

.stat-card .stat-value{font-family:var(--font-display); font-size:28px; margin:6px 0 2px;}
.stat-card .stat-label{font-size:12px; color:var(--ink-500);}
.stat-card .stat-delta{font-size:11.5px; margin-top:8px; display:inline-flex; align-items:center; gap:4px; padding:2px 7px; border-radius:20px;}
.stat-delta.up{background:rgba(30,122,92,.12); color:var(--ok);}
.stat-delta.down{background:rgba(166,56,56,.12); color:var(--err);}

.section-title{display:flex; align-items:baseline; justify-content:space-between; margin:28px 0 12px;}
.section-title h2{font-size:16.5px; margin:0;}
.section-title .link{font-size:12.5px; color:var(--teal-700); cursor:pointer;}

/* ---------- Buttons ---------- */
.btn{
  display:inline-flex; align-items:center; gap:7px; justify-content:center;
  padding:9px 16px; border-radius:9px; font-size:13.5px; font-weight:600;
  border:1px solid transparent; cursor:pointer; transition:.15s ease;
}
.btn-primary{background:var(--teal-900); color:var(--white);}
.btn-primary:hover{background:var(--teal-800);}
.btn-gold{background:linear-gradient(135deg,var(--gold-500),var(--gold-300)); color:var(--teal-950);}
.btn-gold:hover{filter:brightness(1.04);}
.btn-outline{background:transparent; border-color:var(--line); color:var(--ink-700);}
.btn-outline:hover{background:var(--paper-dim);}
.btn-ghost{background:transparent; color:var(--ink-700);}
.btn-ghost:hover{background:var(--paper-dim);}
.btn-danger{background:transparent; color:var(--err); border-color:rgba(166,56,56,.3);}
.btn:disabled{opacity:.5; cursor:not-allowed;}
.btn-sm{padding:6px 11px; font-size:12.5px;}

/* ---------- Forms ---------- */
.field{margin-bottom:14px;}
.field label{display:block; font-size:12.5px; font-weight:600; color:var(--ink-700); margin-bottom:5px;}
.field .hint{font-size:11px; color:var(--ink-500); margin-top:4px;}
input[type=text],input[type=email],input[type=password],input[type=number],input[type=date],input[type=tel],select,textarea{
  width:100%; padding:9px 11px; border:1px solid var(--line); border-radius:8px;
  background:var(--white); color:var(--ink-900); font-size:13.5px; outline:none;
}
input:focus,select:focus,textarea:focus{border-color:var(--teal-700); box-shadow:0 0 0 3px rgba(23,90,79,.12);}
.form-grid{display:grid; grid-template-columns:1fr 1fr; gap:0 16px;}
.form-grid .span-2{grid-column:1/-1;}

/* ---------- Table ---------- */
.table-wrap{border:1px solid var(--line); border-radius:var(--radius-m); overflow:auto; -webkit-overflow-scrolling:touch; background:var(--white);}
table{width:100%; min-width:560px; border-collapse:collapse; font-size:13.5px;}
th{text-align:left; font-size:11px; text-transform:uppercase; letter-spacing:.5px; color:var(--ink-500); background:var(--paper-dim); padding:10px 14px; font-weight:600;}
td{padding:11px 14px; border-top:1px solid var(--line);}
tr:hover td{background:var(--paper-dim);}

.badge{display:inline-flex; align-items:center; gap:5px; padding:3px 9px; border-radius:20px; font-size:11px; font-weight:600;}
.badge-ok{background:rgba(30,122,92,.12); color:var(--ok);}
.badge-warn{background:rgba(179,120,28,.12); color:var(--warn);}
.badge-err{background:rgba(166,56,56,.12); color:var(--err);}
.badge-neutral{background:var(--paper-dim); color:var(--ink-500);}
.badge-gold{background:rgba(200,162,75,.15); color:#8a6d1f;}

/* ---------- Membership card (signature element) ---------- */
.mcard{
  position:relative; width:100%; max-width:420px; aspect-ratio:1.586/1;
  border-radius:18px; overflow:hidden; color:var(--white);
  background:
    radial-gradient(120% 140% at 100% 0%, rgba(200,162,75,.25), transparent 55%),
    linear-gradient(135deg, var(--teal-950) 0%, var(--teal-800) 45%, var(--blue-900) 100%);
  box-shadow:var(--shadow-2);
  padding:20px 22px;
  display:flex; flex-direction:column; justify-content:space-between;
}
.mcard::before{
  content:""; position:absolute; inset:0; padding:1px; border-radius:18px;
  background:linear-gradient(120deg, var(--gold-500), transparent 35%, transparent 65%, var(--gold-300));
  -webkit-mask:linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  -webkit-mask-composite:xor; mask-composite:exclude; pointer-events:none;
}
.mcard-top{display:flex; justify-content:space-between; align-items:flex-start;}
.mcard-org{font-family:var(--font-display); font-size:13px; letter-spacing:.4px;}
.mcard-org small{display:block; font-size:9.5px; color:var(--gold-300); letter-spacing:1px; text-transform:uppercase; margin-top:2px;}
.mcard-mid{display:flex; align-items:center; gap:14px;}
.mcard-photo{
  width:56px; height:56px; border-radius:12px; background:rgba(255,255,255,.12);
  border:1px solid rgba(255,255,255,.25); display:flex; align-items:center; justify-content:center;
  font-family:var(--font-display); font-size:20px; color:var(--gold-300); flex-shrink:0;
}
.mcard-name{font-family:var(--font-display); font-size:16.5px; line-height:1.2;}
.mcard-role{font-size:11px; color:rgba(255,255,255,.65); margin-top:3px;}
.mcard-bottom{display:flex; justify-content:space-between; align-items:flex-end;}
.mcard-code{font-family:var(--font-mono); font-size:11px; letter-spacing:1.5px; color:rgba(255,255,255,.75);}
.mcard-valid{font-size:9.5px; color:rgba(255,255,255,.5); margin-top:2px;}
.mcard-qr{background:var(--white); padding:5px; border-radius:6px;}

/* ---------- Auth screen ---------- */
.auth-screen{
  min-height:100vh; display:flex; align-items:center; justify-content:center;
  background:
    radial-gradient(60% 60% at 15% 10%, rgba(200,162,75,.10), transparent 60%),
    linear-gradient(160deg, var(--teal-950), var(--blue-900));
  padding:20px;
}
.auth-card{
  width:100%; max-width:400px; background:var(--white); border-radius:var(--radius-l);
  padding:34px 32px; box-shadow:var(--shadow-2);
}
.auth-logo{display:flex; flex-direction:column; align-items:center; margin-bottom:22px; text-align:center;}
.auth-logo b{font-family:var(--font-display); font-size:20px; margin-top:10px;}
.auth-logo span{font-size:11px; color:var(--ink-500); letter-spacing:.5px; text-transform:uppercase; margin-top:2px;}
.auth-tabs{display:flex; gap:6px; background:var(--paper-dim); border-radius:9px; padding:4px; margin-bottom:20px;}
.auth-tab{flex:1; text-align:center; padding:7px; border-radius:7px; font-size:12.5px; font-weight:600; cursor:pointer; color:var(--ink-500);}
.auth-tab.active{background:var(--white); color:var(--teal-900); box-shadow:var(--shadow-1);}

/* ---------- Calculators ---------- */
.calc-tabs{display:flex; flex-wrap:wrap; gap:8px; margin-bottom:18px;}
.calc-tab{padding:8px 14px; border-radius:20px; font-size:12.5px; font-weight:600; border:1px solid var(--line); cursor:pointer; color:var(--ink-700); background:var(--white);}
.calc-tab.active{background:var(--teal-900); color:var(--white); border-color:var(--teal-900);}
.calc-result{
  margin-top:16px; padding:16px; border-radius:12px; background:var(--paper-dim);
  border:1px dashed var(--line); font-family:var(--font-mono); font-size:15px;
}

/* ---------- Directory ---------- */
.dir-item{display:flex; justify-content:space-between; align-items:center; padding:14px; border:1px solid var(--line); border-radius:12px; margin-bottom:10px; background:var(--white);}
.dir-item .dot{width:8px;height:8px;border-radius:50%; background:var(--ok); display:inline-block; margin-right:6px;}

/* ---------- Utility ---------- */
.flex{display:flex; align-items:center;}
.gap-8{gap:8px;} .gap-12{gap:12px;}
.muted{color:var(--ink-500);}
.mt-0{margin-top:0;} .mt-8{margin-top:8px;} .mt-16{margin-top:16px;} .mt-24{margin-top:24px;}
.empty-state{text-align:center; padding:50px 20px; color:var(--ink-500);}
.empty-state svg{margin-bottom:10px; opacity:.5;}
.toast-wrap{position:fixed; bottom:20px; right:20px; display:flex; flex-direction:column; gap:8px; z-index:100;}
.toast{background:var(--teal-950); color:var(--white); padding:11px 16px; border-radius:10px; font-size:13px; box-shadow:var(--shadow-2); display:flex; align-items:center; gap:8px;}
.modal-overlay{position:fixed; inset:0; background:rgba(10,20,18,.45); display:flex; align-items:center; justify-content:center; z-index:50; padding:20px;}
.modal{background:var(--white); border-radius:var(--radius-l); max-width:640px; width:100%; max-height:88vh; overflow:auto; box-shadow:var(--shadow-2);}
.modal-header{display:flex; justify-content:space-between; align-items:center; padding:18px 22px; border-bottom:1px solid var(--line);}
.modal-body{padding:22px;}
.modal-footer{padding:16px 22px; border-top:1px solid var(--line); display:flex; justify-content:flex-end; gap:10px;}

/* ---------- Typography refinements ---------- */
.eyebrow{
  font-family:var(--font-body); font-size:10.5px; font-weight:700; letter-spacing:.14em;
  text-transform:uppercase; color:var(--gold-500);
}
h2, h3{ letter-spacing:-.01em; }
.stat-value{ font-variant-numeric:tabular-nums; letter-spacing:-.02em; }

/* ---------- Signature motif: lens/iris aperture ---------- */
.aperture-layer{
  position:absolute; pointer-events:none; z-index:0;
  opacity:.5; filter:saturate(1.05);
}
[data-theme="dark"] .aperture-layer{ opacity:.28; }

.hero-banner{ position:relative; overflow:hidden; }
.hero-banner .aperture-layer{ top:50%; right:-60px; transform:translateY(-50%); }
.hero-banner > *{ position:relative; z-index:1; }

.auth-card{ position:relative; overflow:visible; }
.auth-screen .aperture-layer{ top:50%; left:50%; transform:translate(-50%,-50%); z-index:0; }
.auth-card{ z-index:1; }

.empty-state svg{ margin-bottom:10px; opacity:.6; }

/* ---------- Iris-open entrance reveal (single orchestrated moment) ---------- */
@keyframes iris-open{
  from{ clip-path:circle(0% at 50% 50%); opacity:.4; }
  to{ clip-path:circle(140% at 50% 50%); opacity:1; }
}
.iris-reveal{ animation:iris-open .7s cubic-bezier(.2,.7,.3,1) both; }
@media (prefers-reduced-motion: reduce){
  .iris-reveal{ animation:none; }
}

/* ---------- Comunicação layout ---------- */
.chat-grid{grid-template-columns:280px 1fr; align-items:start;}
.chat-panel{height:560px;}

.sidebar-overlay{display:none;}
#btn-menu{display:none;}

@media (max-width:860px){
  .sidebar{position:fixed; top:0; left:-280px; height:100vh; z-index:30; transition:left .2s ease; box-shadow:var(--shadow-2);}
  .sidebar.open{left:0;}
  .g-2,.g-3,.g-4{grid-template-columns:1fr;}
  .form-grid{grid-template-columns:1fr;}
  #btn-menu{display:inline-flex;}
  .btn-search-mobile{display:inline-flex;}
  .sidebar-overlay{
    display:block; position:fixed; inset:0; background:rgba(0,0,0,.45);
    opacity:0; pointer-events:none; transition:opacity .2s ease; z-index:25;
  }
  .sidebar-overlay.open{opacity:1; pointer-events:auto;}

  /* Topbar & content: reclaim space on small screens */
  .topbar{padding:10px 14px; gap:10px;}
  .topbar h1{font-size:16px;}
  .content{padding:14px;}
  .card{padding:14px;}
  .section-title{margin:20px 0 10px;}

  /* Only the topbar's own search collapses away; per-page filter search
     boxes and dropdowns stay visible and become full-width instead of
     keeping their desktop fixed pixel widths (which used to overflow). */
  .topbar-search{display:none;}
  .search-box{width:100% !important;}
  select{width:100% !important;}

  /* Page headers and filter bars are built as ad-hoc flex rows with
     justify-content:space-between; let them wrap instead of squeezing
     or clipping their contents on narrow screens. */
  [style*="justify-content:space-between"]{flex-wrap:wrap; row-gap:10px;}
  .flex.gap-8,.flex.gap-12{flex-wrap:wrap; row-gap:8px;}

  /* Bigger touch targets */
  .nav-item{padding:11px 12px;}
  .btn-sm{padding:8px 12px;}
  .icon-btn{width:38px; height:38px;}

  /* Comunicação: stack the conversation list above the chat panel
     instead of forcing a 280px column into a narrow viewport */
  .chat-grid{grid-template-columns:1fr;}
  .chat-convlist{max-height:220px; overflow-y:auto;}
  .chat-panel{height:65vh;}
}
.topbar-user-menu{position:relative;}
.topbar-avatar-btn{position:relative;background:none;border:none;padding:0;cursor:pointer;display:flex;align-items:center;}
.topbar-avatar-btn .avatar{border-radius:50%;}
.status-dot{position:absolute;bottom:0;right:0;width:10px;height:10px;background:#2ecc71;border:2px solid #0d3634;border-radius:50%;}
.user-dropdown{display:none;position:absolute;top:54px;right:0;background:#123b39;border:1px solid rgba(255,255,255,.08);border-radius:10px;min-width:190px;box-shadow:0 8px 24px rgba(0,0,0,.35);overflow:hidden;z-index:50;}
.user-dropdown.open{display:block;}
.user-dropdown-item{display:block;width:100%;padding:10px 14px;background:none;border:none;color:#e4c982;font-size:13px;text-align:left;cursor:pointer;}
.user-dropdown-item:hover{background:rgba(255,255,255,.06);}
.user-dropdown-item.danger{color:#ff8080;border-top:1px solid rgba(255,255,255,.08);}

/* ===================================================================
   PREMIUM POLISH — cartões de estatística com cor, elevação e entrada
   animada; títulos de secção com traço dourado. Aditivo: não altera
   nenhuma regra existente acima, só acrescenta.
=================================================================== */

.stat-card{
  position:relative;
  overflow:hidden;
  transition:transform .18s ease, box-shadow .18s ease;
  animation:card-rise .45s ease both;
}
.stat-card:hover{
  transform:translateY(-3px);
  box-shadow:var(--shadow-2);
}
.stat-card::before{
  content:"";
  position:absolute; top:0; left:0; right:0; height:3px;
  background:var(--stat-accent, var(--teal-700));
}
.stat-card::after{
  content:"";
  position:absolute; top:-30px; right:-30px; width:90px; height:90px; border-radius:50%;
  background:var(--stat-accent, var(--teal-700)); opacity:.08; pointer-events:none;
}
.stat-accent-teal{--stat-accent:var(--teal-700);}
.stat-accent-gold{--stat-accent:var(--gold-500);}
.stat-accent-warn{--stat-accent:var(--warn);}
.stat-accent-err{--stat-accent:var(--err);}

@keyframes card-rise{
  from{opacity:0; transform:translateY(10px);}
  to{opacity:1; transform:translateY(0);}
}
@media (prefers-reduced-motion: reduce){
  .stat-card{animation:none;}
}

/* Traço dourado junto aos títulos de secção, em toda a app */
.section-title h2{
  padding-left:12px;
  border-left:3px solid var(--gold-500);
}

/* Destaque de notícias no Dashboard: leve elevação ao passar o rato */
.news-hero{transition:box-shadow .2s ease;}
.news-hero:hover{box-shadow:var(--shadow-2);}

/* Atalhos-monograma (Carteira, Formação, Biblioteca, Fórum) */
.tile-link{transition:transform .18s ease, box-shadow .18s ease;}
.tile-link:hover{transform:translateY(-2px); box-shadow:var(--shadow-2);}

/* Traço dourado diagonal — o mesmo motivo de assinatura da Carteira
   Digital (.mcard), reutilizável em qualquer cartão para dar continuidade
   de marca sem repetir a estrutura toda do cartão de sócio. */
.gold-frame{position:relative;}
.gold-frame::before{
  content:"";
  position:absolute; inset:0; padding:1px; border-radius:inherit;
  background:linear-gradient(120deg, var(--gold-500), transparent 35%, transparent 65%, var(--gold-300));
  -webkit-mask:linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  -webkit-mask-composite:xor; mask-composite:exclude; pointer-events:none;
}

/* Pulso discreto nos pontos de alerta — movimento capta o olhar sem
   precisar de mais uma cor ou etiqueta. */
.alert-dot{position:relative;}
.alert-dot::after{
  content:"";
  position:absolute; inset:-4px; border-radius:50%;
  border:1px solid currentColor; opacity:.5;
  animation:ring-pulse 2s ease-out infinite;
}
@keyframes ring-pulse{
  0%{transform:scale(.5); opacity:.6;}
  100%{transform:scale(1.8); opacity:0;}
}
@media (prefers-reduced-motion: reduce){
  .alert-dot::after{animation:none;}
}

/* Gráfico de área da receita: a linha "desenha-se" ao carregar, o
   preenchimento em gradiente esbate a seguir, e os pontos aparecem um a um. */
.rev-line-draw{
  stroke-dasharray:1000;
  stroke-dashoffset:1000;
  animation:draw-line 1.3s cubic-bezier(.2,.7,.3,1) forwards;
}
.rev-area-fill{
  opacity:0;
  animation:fade-in-area 1s ease .5s forwards;
}
.rev-dot{
  opacity:0;
  animation:pop-in-dot .3s ease forwards;
}
@keyframes draw-line{ to{ stroke-dashoffset:0; } }
@keyframes fade-in-area{ to{ opacity:1; } }
@keyframes pop-in-dot{ to{ opacity:1; } }
@media (prefers-reduced-motion: reduce){
  .rev-line-draw,.rev-area-fill,.rev-dot{animation:none; opacity:1; stroke-dashoffset:0;}
}

/* Barras da distribuição por província: crescem da esquerda ao carregar. */
.prov-bar{width:0; animation:grow-bar .8s cubic-bezier(.2,.7,.3,1) forwards;}
@keyframes grow-bar{ to{ width:var(--w); } }
@media (prefers-reduced-motion: reduce){
  .prov-bar{animation:none; width:var(--w);}
}

.gold-frame{position:relative;}
.gold-frame::before{
  content:"";
  position:absolute; inset:0; padding:1px; border-radius:inherit;
  background:linear-gradient(120deg, var(--gold-500), transparent 35%, transparent 65%, var(--gold-300));
  background-size:220% 220%;
  -webkit-mask:linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  -webkit-mask-composite:xor; mask-composite:exclude; pointer-events:none;
  animation:frame-shimmer 7s ease-in-out infinite;
}
@keyframes frame-shimmer{
  0%,100%{background-position:0% 0%;}
  50%{background-position:100% 100%;}
}
@media (prefers-reduced-motion: reduce){
  .gold-frame::before{animation:none;}
}

/* ===================================================================
   HERO BADGE — estado da conta AMO (Membro Regular/Irregular) no topbar,
   com dropdown de Quotas/CPD/Carteira e botão "Pagar quota".
   Aditivo: não altera nenhuma regra existente acima, só acrescenta.
   Estado fixo por agora — liga a dados reais quando o status.php existir.
=================================================================== */
.hero-badge{
  height:34px; min-width:118px; padding:0 12px; border-radius:9px;
  background:var(--paper-dim); border:1px solid var(--line);
  display:flex; align-items:center; justify-content:center;
  cursor:pointer; font-family:inherit;
  transition:box-shadow .18s ease;
}
.hero-badge:hover{box-shadow:var(--shadow-1);}
.hero-badge-label{font-size:11.5px; font-weight:700; letter-spacing:.2px; white-space:nowrap;}

.hero-badge.is-regular{background:rgba(30,122,92,.10); border-color:rgba(30,122,92,.35);}
.hero-badge.is-regular .hero-badge-label{color:var(--ok);}

.hero-badge.is-irregular{
  background:rgba(166,56,56,.10); border-color:rgba(166,56,56,.4);
  animation:heroBadgePulse 1.15s ease-in-out 4;
}
.hero-badge.is-irregular .hero-badge-label{color:var(--err);}
@keyframes heroBadgePulse{
  0%,100%{box-shadow:0 0 0 0 rgba(166,56,56,.35);}
  50%{box-shadow:0 0 0 4px rgba(166,56,56,0);}
}

.hero-dropdown{
  display:none; position:absolute; top:44px; right:0; width:260px; z-index:50;
  background:var(--white); border:1px solid var(--line); border-radius:var(--radius-m);
  box-shadow:var(--shadow-2); padding:14px;
}
.hero-dropdown.open{display:block;}

.hero-status-grid{display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-bottom:12px;}
.hero-status-item{
  display:flex; align-items:center; gap:6px; font-size:11.5px; font-weight:600;
  padding:7px 8px; border-radius:8px; background:var(--paper-dim); color:var(--ink-700);
}
.hero-status-item .dot{width:7px; height:7px; border-radius:50%; flex-shrink:0;}
.hero-status-item.ok .dot{background:var(--ok);}
.hero-status-item.warn .dot{background:var(--warn);}
.hero-status-item.err .dot{background:var(--err);}

.hero-pay-btn{
  width:100%; padding:9px; border-radius:9px; border:none; cursor:pointer;
  background:linear-gradient(135deg,var(--gold-500),var(--gold-300)); color:var(--teal-950);
  font-size:13px; font-weight:700;
}
.hero-pay-btn:hover{filter:brightness(1.04);}
.hero-pay-btn.alert{background:linear-gradient(135deg,var(--err),#c15a5a); color:var(--white);}

@media (max-width:860px){
  .hero-badge{min-width:0; padding:0 9px;}
}
.shell-v2{
    --teal: #0B3D3A;
    --teal-deep: #082A28;
    --teal-soft: #E7EFEC;
    --gold: #B4914A;
    --gold-metal: linear-gradient(135deg, #E0C171 0%, #B4914A 55%, #8F7233 100%);
    --gold-soft: #F3EBD8;
    /* Tom mais escuro do dourado, só para texto legível — o --gold original (#B4914A)
       fica abaixo do mínimo AA (4.5:1) como cor de texto sobre --bg/--surface. */
    --gold-text: #7A6224;
    --bg: #FAF8F3;
    --surface: #FFFFFF;
    --text: #1C2420;
    --text-muted: #6B7570;
    --text-faint: #6A736D;
    --border: #E7E2D6;
    --success: #256B4E;
    --success-soft: #E7F3EC;
    --warning: #9C6018;
    --warning-soft: #FBF0DF;
    --danger: #9E362D;
    --danger-soft: #FBEAE8;
    --radius-sm: 8px;
    --radius-md: 14px;
    --shadow-sm: 0 1px 2px rgba(11,61,58,0.05);
    --shadow-md: 0 4px 6px -1px rgba(11,61,58,0.04), 0 16px 24px -6px rgba(11,61,58,0.07);
  }.shell-v2 *{box-sizing:border-box; margin:0; padding:0;}.shell-v2{
    font-family:'Manrope', sans-serif;
    background:var(--bg);
    color:var(--text);
    font-size:14px;
    line-height:1.5;
    -webkit-font-smoothing:antialiased;
  }.shell-v2 .serif{ font-family:'Fraunces', serif; }.shell-v2 a{ text-decoration:none; color:inherit; }.shell-v2 .nav-item:focus-visible, .shell-v2 .qa-item:focus-visible, .shell-v2 .role-btn:focus-visible, .shell-v2 .icon-btn:focus-visible, .shell-v2 .lang-pill:focus-visible, .shell-v2 .hero-btn:focus-visible, .shell-v2 .profile-pill:focus-visible{
    outline:2px solid var(--gold); outline-offset:2px;
  }.shell-v2 .app{ display:flex; min-height:100vh; }.shell-v2 /* ===== SIDEBAR ===== */
  .sidebar{
    width:256px;
    flex-shrink:0;
    background:var(--teal-deep);
    color:#EFEDE5;
    display:flex;
    flex-direction:column;
    padding:18px 12px;
    position:sticky;
    top:0;
    height:100vh;
  }.shell-v2 .brand{ display:flex; flex-direction:column; align-items:center; justify-content:center; gap:8px; padding:14px 10px 20px; border-bottom:1px solid rgba(255,255,255,0.08); margin-bottom:14px; }.shell-v2 .brand-logo-card{
    width:100%; background:linear-gradient(160deg, #FFFFFF, #F4F1E8); border-radius:12px;
    padding:12px 14px; display:flex; align-items:center; justify-content:center;
    box-shadow:0 4px 12px rgba(0,0,0,0.28), 0 0 0 1px rgba(224,193,113,0.4);
  }.shell-v2 .brand-logo{
    width:100%; max-width:210px; height:auto; display:block;
  }.shell-v2 .brand-sub{ font-size:12.5px; letter-spacing:1px; color:#B9CCC5; text-transform:uppercase; font-weight:800; text-align:center; max-width:210px; }.shell-v2 .nav-scroll{ flex:1; overflow-y:auto; padding-right:2px; }.shell-v2 .nav-scroll::-webkit-scrollbar{ width:4px; }.shell-v2 .nav-scroll::-webkit-scrollbar-thumb{ background:rgba(255,255,255,0.15); border-radius:4px; }.shell-v2 /* NAVIGATION GROUPS ENHANCED */
  .nav-group{ margin-bottom:8px; }.shell-v2 .nav-group-header{
    display:flex; align-items:center; justify-content:space-between;
    padding:8px 10px; cursor:pointer; border-radius:9px;
    transition:all 0.22s cubic-bezier(0.4, 0, 0.2, 1);
    background:rgba(255,255,255,0.02);
    border:1px solid rgba(255,255,255,0.03);
    user-select:none;
  }.shell-v2 .nav-group-header:hover{
    background:rgba(255,255,255,0.07);
    border-color:rgba(180,145,74,0.3);
    transform:translateX(3px);
  }.shell-v2 .nav-group-header-left{
    display:flex; align-items:center; gap:8px;
  }.shell-v2 .nav-group-icon{
    width:22px; height:22px; border-radius:6px;
    background:rgba(255,255,255,0.06);
    color:#C1D5D0;
    display:flex; align-items:center; justify-content:center;
    transition:all 0.2s ease;
  }.shell-v2 .nav-group-header:hover .nav-group-icon{
    background:var(--gold-metal);
    color:var(--teal-deep);
    box-shadow:0 2px 6px rgba(180,145,74,0.3);
  }.shell-v2 .nav-group:not(.collapsed) .nav-group-icon{
    color:var(--gold);
    background:rgba(180,145,74,0.15);
  }.shell-v2 .nav-label{
    font-size:10px; letter-spacing:1px; text-transform:uppercase;
    color:#A1B8B2; font-weight:700;
    transition:color 0.2s ease;
  }.shell-v2 .nav-group-header:hover .nav-label{ color:#FFFFFF; }.shell-v2 .nav-group-header-right{
    display:flex; align-items:center; gap:6px;
  }.shell-v2 .nav-count-badge{
    font-size:9px; font-weight:800;
    color:#8BA39C; background:rgba(0,0,0,0.25);
    padding:2px 6px; border-radius:10px;
    min-width:18px; text-align:center;
    border:1px solid rgba(255,255,255,0.05);
    transition:all 0.2s ease;
  }.shell-v2 .nav-group-header:hover .nav-count-badge{
    background:rgba(180,145,74,0.2);
    color:var(--gold-soft);
    border-color:rgba(180,145,74,0.3);
  }.shell-v2 .nav-chevron{
    width:12px; height:12px; opacity:0.6;
    transition:transform 0.25s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.2s ease;
    flex-shrink:0; color:#D6DED9;
  }.shell-v2 .nav-group-header:hover .nav-chevron{ opacity:1; }.shell-v2 .nav-group.collapsed .nav-chevron{ transform:rotate(-90deg); }.shell-v2 /* SUBITEMS & HOVER EFFECTS */
  .nav-group-items{
    overflow:hidden; max-height:350px;
    transition:max-height 0.28s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.25s ease, padding 0.2s ease;
    padding:4px 0 2px 10px;
    opacity:1;
  }.shell-v2 .nav-group.collapsed .nav-group-items{
    max-height:0; padding-top:0; padding-bottom:0; opacity:0;
  }.shell-v2 .nav-item{
    position:relative;
    display:flex; align-items:center; gap:10px;
    padding:7.5px 10px; border-radius:8px; font-size:12.5px; font-weight:500; line-height:1.35;
    color:#C2CCC7; cursor:pointer;
    transition:all 0.18s cubic-bezier(0.4, 0, 0.2, 1);
    margin-bottom:2px;
  }.shell-v2 .nav-item:hover{
    background:rgba(255,255,255,0.07);
    color:#FFFFFF;
    padding-left:14px;
  }.shell-v2 .nav-item::before{
    content:''; position:absolute; left:0; top:20%; bottom:20%; width:3px;
    background:var(--gold); border-radius:0 3px 3px 0;
    opacity:0; transform:scaleY(0.3); transition:all 0.18s ease;
  }.shell-v2 .nav-item:hover::before{
    opacity:0.7; transform:scaleY(1);
  }.shell-v2 .nav-item.active{
    background:rgba(180,145,74,0.18);
    color:#FFFFFF;
    font-weight:700;
    box-shadow:inset 1px 0 0 rgba(255,255,255,0.1);
  }.shell-v2 .nav-item.active::before{
    opacity:1; transform:scaleY(1); background:var(--gold);
  }.shell-v2 .nav-item .icon{ opacity:0.85; transition:transform 0.18s ease, opacity 0.18s ease; }.shell-v2 .nav-item:hover .icon{ opacity:1; transform:scale(1.1); }.shell-v2 .nav-badge{
    margin-left:auto; font-size:9px; font-weight:800; letter-spacing:0.5px;
    background:var(--gold-metal); color:var(--teal-deep); padding:2px 6px; border-radius:5px;
    box-shadow:0 2px 4px rgba(0,0,0,0.2);
  }.shell-v2 .sidebar-footer{ border-top:1px solid rgba(255,255,255,0.08); padding-top:12px; margin-top:6px; }.shell-v2 .user-row{ display:flex; align-items:center; gap:9px; padding:5px 6px; }.shell-v2 .avatar{
    width:30px; height:30px; border-radius:50%; background:#3C5C56;
    display:flex; align-items:center; justify-content:center; font-size:11.5px; font-weight:700; color:#fff;
    border:2px solid var(--gold);
  }.shell-v2 .avatar.avatar-mark{ background:#F2EFE4; padding:3px; }.shell-v2 .avatar.avatar-mark img{ width:100%; height:100%; object-fit:contain; display:block; }.shell-v2 .user-name{ font-size:12.5px; font-weight:600; color:#fff; }.shell-v2 .user-role{ font-size:10px; color:#8CA69F; }.shell-v2 /* ===== MAIN ===== */
  .main{ flex:1; min-width:0; display:flex; flex-direction:column; }.shell-v2 /* ===== TOPBAR (redesigned: glass, sticky, 3-zone header) ===== */
  .topbar{
    position:sticky;
    top:0;
    z-index:100;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:20px;
    padding:13px 28px;
    background:rgba(250,248,243,0.82);
    backdrop-filter:blur(14px);
    -webkit-backdrop-filter:blur(14px);
    border-bottom:1px solid rgba(231,226,214,0.9);
  }.shell-v2 .topbar-left{ min-width:0; flex-shrink:0; }.shell-v2 .topbar h1{ font-family:'Fraunces', serif; font-size:19px; font-weight:600; letter-spacing:-0.01px; }.shell-v2 .topbar .greet{ font-size:11.5px; color:var(--text-muted); margin-top:1px; }.shell-v2 .topbar-center{ flex:1; max-width:400px; position:relative; }.shell-v2 .topbar-right{ display:flex; align-items:center; gap:10px; flex-shrink:0; }.shell-v2 .search-box{
    display:flex; align-items:center; gap:8px;
    background:var(--surface); border:1px solid var(--border);
    border-radius:10px; padding:8px 10px 8px 13px; width:100%;
    color:var(--text-faint); font-size:12.5px;
    transition:border-color .18s ease, box-shadow .18s ease, background .18s ease;
    cursor:text;
  }.shell-v2 .search-box:focus-within{
    background:#fff; border-color:var(--gold);
    box-shadow:0 0 0 3px rgba(180,145,74,0.12);
  }.shell-v2 .search-kbd{
    display:flex; align-items:center; gap:2px; flex-shrink:0;
    font-family:'Manrope',sans-serif; font-size:10.5px; font-weight:700; color:var(--text-faint);
    background:var(--bg); border:1px solid var(--border); border-radius:5px;
    padding:2.5px 6px; letter-spacing:0.2px;
    transition:opacity .18s ease;
  }.shell-v2 .search-box:focus-within .search-kbd{ opacity:0; pointer-events:none; }.shell-v2 /* Pesquisa global — resultados agrupados por categoria */
  .search-results{
    position:absolute; top:calc(100% + 8px); left:0; width:420px; max-width:min(420px, 92vw);
    background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-md);
    box-shadow:var(--shadow-md); z-index:200; max-height:70vh; overflow-y:auto;
    padding:8px 0;
  }.shell-v2 .search-results[hidden]{ display:none; }.shell-v2 .search-results-cat{ padding:4px 0 6px; }.shell-v2 .search-results-cat + .search-results-cat{ border-top:1px solid var(--border); margin-top:4px; padding-top:10px; }.shell-v2 .search-cat-label{
    font-size:9.5px; font-weight:800; letter-spacing:0.6px; text-transform:uppercase;
    color:var(--text-faint); padding:2px 16px 6px;
  }.shell-v2 .search-result-item{
    display:flex; align-items:center; gap:11px; padding:8px 16px; cursor:pointer;
    transition:background .14s ease;
  }.shell-v2 .search-result-item:hover, .shell-v2 .search-result-item.is-focused{ background:var(--bg); }.shell-v2 .search-result-icon{
    width:28px; height:28px; border-radius:8px; background:var(--teal-soft); color:var(--teal);
    display:flex; align-items:center; justify-content:center; flex-shrink:0;
  }.shell-v2 .search-result-icon .icon{ width:14px; height:14px; }.shell-v2 .search-result-body{ min-width:0; flex:1; }.shell-v2 .search-result-title{ font-size:12.5px; font-weight:700; color:var(--text); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }.shell-v2 .search-result-title mark{ background:var(--gold-soft); color:var(--text); border-radius:2px; }.shell-v2 .search-result-sub{ font-size:11px; color:var(--text-muted); margin-top:1px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }.shell-v2 .search-empty{ padding:20px 16px; text-align:center; font-size:12px; color:var(--text-muted); }.shell-v2 .search-empty strong{ color:var(--text); }.shell-v2 /* Discreet prototype indicator (replaces the long banner) */
  .proto-pill{
    display:inline-flex; align-items:center; gap:6px;
    font-size:10px; font-weight:700; letter-spacing:0.2px;
    color:#8A6A1E; background:var(--gold-soft); border:1px solid #E4D5A8;
    border-radius:20px; padding:3px 10px 3px 8px; margin-top:5px; cursor:default;
  }.shell-v2 .proto-pill .icon{ width:11px; height:11px; }.shell-v2 .proto-tooltip{
    position:relative;
  }.shell-v2 .proto-tooltip:hover .proto-tooltip-bubble{ opacity:1; transform:translateY(0); pointer-events:auto; }.shell-v2 .proto-tooltip-bubble{
    position:absolute; top:calc(100% + 8px); left:0; z-index:200; width:260px;
    background:var(--teal-deep); color:#EAF1EE; font-size:11.5px; font-weight:500; line-height:1.5;
    padding:10px 12px; border-radius:10px; box-shadow:0 12px 28px rgba(8,42,40,0.35);
    opacity:0; transform:translateY(-4px); transition:opacity .16s ease, transform .16s ease; pointer-events:none;
  }.shell-v2 .icon-btn{
    width:34px; height:34px; border-radius:9px; background:var(--surface);
    border:1px solid var(--border); display:flex; align-items:center; justify-content:center;
    font-size:13px; color:var(--text-muted); position:relative; cursor:pointer;
    transition:background .18s ease, color .18s ease, border-color .18s ease;
  }.shell-v2 .icon-btn:hover{ background:var(--teal-soft); color:var(--teal); border-color:var(--teal-soft); }.shell-v2 .notif-dot{
    position:absolute; top:-3px; right:-3px; background:var(--danger); color:#fff;
    font-size:9px; font-weight:700; width:16px; height:16px; border-radius:50%;
    display:flex; align-items:center; justify-content:center; border:2px solid var(--bg);
  }.shell-v2 .lang-pill{
    font-size:11.5px; font-weight:700; letter-spacing:0.5px; color:var(--teal);
    background:var(--teal-soft); padding:8px 11px; border-radius:9px; cursor:pointer;
    border:1px solid transparent; transition:border-color .18s ease;
  }.shell-v2 .lang-pill:hover{ border-color:var(--gold); }.shell-v2 .header-divider{ width:1px; height:22px; background:var(--border); flex-shrink:0; }.shell-v2 .profile-pill{
    display:flex; align-items:center; gap:9px;
    background:transparent; border:none; cursor:pointer;
    padding:4px 8px 4px 4px; border-radius:10px;
    transition:background .18s ease;
  }.shell-v2 .profile-pill:hover{ background:var(--teal-soft); }.shell-v2 .avatar-top{
    width:33px; height:33px; border-radius:50%; background:var(--teal);
    color:#fff; display:flex; align-items:center; justify-content:center;
    font-size:12px; font-weight:700; border:2px solid var(--gold-soft); flex-shrink:0;
  }.shell-v2 .profile-info{ display:flex; flex-direction:column; text-align:left; line-height:1.25; }.shell-v2 .profile-name{ font-size:12.5px; font-weight:700; color:var(--text); }.shell-v2 .profile-role{ font-size:10.5px; color:var(--text-muted); }.shell-v2 .profile-chevron{ width:13px; height:13px; color:var(--text-faint); flex-shrink:0; }.shell-v2 /* Popovers do topbar (notificações e menu de perfil) — mesmo padrão do qa-float-menu */
  .topbar-popover-wrap{ position:relative; }.shell-v2 .topbar-popover{
    position:absolute; top:calc(100% + 8px); right:0; width:280px;
    background:var(--surface); border:1px solid var(--border); border-radius:14px;
    box-shadow:var(--shadow-md); padding:8px; opacity:0; transform:translateY(-6px);
    pointer-events:none; transition:opacity .16s ease, transform .16s ease; z-index:90;
  }.shell-v2 .topbar-popover.is-open{ opacity:1; transform:translateY(0); pointer-events:auto; }.shell-v2 .topbar-popover-title{ font-size:11px; font-weight:700; color:var(--text-muted); text-transform:uppercase; letter-spacing:.4px; padding:8px 10px 4px; }.shell-v2 .notif-item{ display:flex; gap:10px; padding:9px 10px; border-radius:9px; cursor:pointer; align-items:flex-start; }.shell-v2 .notif-item:hover{ background:var(--bg); }.shell-v2 .notif-item-dot{ width:7px; height:7px; border-radius:50%; background:var(--gold); margin-top:5px; flex-shrink:0; }.shell-v2 .notif-item-body{ min-width:0; }.shell-v2 .notif-item-title{ font-size:12px; font-weight:700; color:var(--text); }.shell-v2 .notif-item-time{ font-size:10.5px; color:var(--text-faint); margin-top:1px; }.shell-v2 .profile-menu-item{ display:flex; align-items:center; gap:10px; padding:9px 10px; border-radius:9px; cursor:pointer; font-size:12.5px; font-weight:700; color:var(--text); }.shell-v2 .profile-menu-item:hover{ background:var(--bg); }.shell-v2 .profile-menu-item.danger{ color:var(--danger); }.shell-v2 .profile-menu-divider{ height:1px; background:var(--border); margin:6px 4px; }.shell-v2 .role-toggle{ display:flex; align-items:center; background:var(--surface); border:1px dashed var(--border); border-radius:10px; padding:3px 3px 3px 10px; gap:2px; }.shell-v2 .role-btn{ font-size:11.5px; font-weight:700; padding:6px 12px; border-radius:7px; color:var(--text-muted); cursor:pointer; }.shell-v2 .role-btn.active{ background:var(--teal); color:#fff; }.shell-v2 .role-toggle-note{ font-size:9px; text-transform:uppercase; letter-spacing:0.4px; color:var(--text-faint); font-weight:700; padding-right:8px; }.shell-v2 .content{ padding:0 28px 32px; display:flex; flex-direction:column; gap:14px; }.shell-v2 /* ===== Badge fixo de estado do membro (cabeçalho) ===== */
  .hero-float{
    display:flex; align-items:center; position:relative; flex-shrink:0;
  }.shell-v2 .hero-float.is-fixed{
    margin-left:4px;
  }.shell-v2 .hero-float-badge{
    min-width:118px; height:34px; padding:0 12px; border-radius:9px;
    background:var(--surface); border:1px solid var(--border);
    display:flex; align-items:center; justify-content:center; flex-shrink:0;
    cursor:pointer; position:relative;
    transition:background .2s ease, border-color .2s ease, box-shadow .18s ease, transform .18s ease;
  }.shell-v2 .hero-float-label{ font-size:11.5px; font-weight:700; letter-spacing:0.2px; white-space:nowrap; }.shell-v2 .hero-float-badge:hover, .shell-v2 .hero-float-badge:focus-visible{
    box-shadow:var(--shadow-sm);
    outline:none;
  }.shell-v2 .hero-float.is-open .hero-float-badge{ box-shadow:var(--shadow-sm); }.shell-v2 /* Estado: membro regular — mesmo padrão visual dos chips vizinhos, em tom verde discreto */
  .hero-float-badge.is-regular{
    background:#E9F3EC; border-color:rgba(95,203,148,0.45);
  }.shell-v2 .hero-float-badge.is-regular .hero-float-label{ color:#2F6B4E; }.shell-v2 /* Estado: membro irregular — mesmo padrão visual, em tom de alerta vermelho com pulsação discreta */
  .hero-float-badge.is-irregular{
    background:#F7E9E7; border-color:rgba(158,54,45,0.5);
    /* Pulsa só nos primeiros ciclos para chamar a atenção para a mudança de estado;
       depois assenta na cor de alerta estática. Uma associação profissional não deve
       parecer estar permanentemente em emergência (ver análise, ponto 9). */
    animation:heroFloatPulseAlert 1.15s ease-in-out 4;
  }.shell-v2 .hero-float-badge.is-irregular .hero-float-label{ color:var(--danger); }.shell-v2 @keyframes heroFloatPulseAlert{
    0%,100%{ box-shadow:0 0 0 0 rgba(158,54,45,0.35); }
    50%{ box-shadow:0 0 0 4px rgba(158,54,45,0); }
  }.shell-v2 .hero-float-menu{
    position:absolute; top:calc(100% + 12px); right:0; width:272px; z-index:200;
    background:var(--surface); border:1px solid var(--border); border-radius:14px;
    box-shadow:var(--shadow-md); padding:14px;
    opacity:0; transform:translateY(-6px); pointer-events:none;
    transition:opacity .18s ease, transform .18s ease;
  }.shell-v2 .hero-float.is-open .hero-float-menu{ opacity:1; transform:translateY(0); pointer-events:auto; }.shell-v2 @media (hover:hover){
    .hero-float:hover .hero-float-menu{ opacity:1; transform:translateY(0); pointer-events:auto; }
  }.shell-v2 .hfm-status{ display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-bottom:12px; }.shell-v2 .hfm-status-item{
    display:flex; align-items:center; gap:6px;
    font-size:11px; font-weight:600; color:var(--text); white-space:nowrap;
    background:var(--bg); border:1px solid var(--border); border-radius:9px;
    padding:8px 8px;
  }.shell-v2 .hfm-status-item .dot{ width:7px; height:7px; border-radius:50%; flex-shrink:0; }.shell-v2 .hfm-status-item.ok .dot{ background:#5FCB94; }.shell-v2 .hfm-status-item.warn .dot{ background:#F0B45C; }.shell-v2 .hfm-actions{ display:flex; flex-direction:column; gap:8px; }.shell-v2 .hfm-btn{ display:flex; align-items:center; justify-content:center; gap:6px; font-size:12px; font-weight:700; padding:10px 0; border-radius:9px; text-align:center; cursor:pointer; transition:opacity .15s ease, transform .15s ease; }.shell-v2 .hfm-btn .icon{ width:13px; height:13px; }.shell-v2 .hfm-btn:hover{ opacity:0.88; transform:translateY(-1px); }.shell-v2 .hfm-btn.verify{ background:var(--teal-soft); color:var(--teal); }.shell-v2 .hfm-btn.profile{ background:var(--gold-metal); color:var(--teal-deep); }.shell-v2 .hfm-btn.pay{ background:#E9F3EC; color:#2F6B4E; }.shell-v2 .hfm-btn.pay.alert{
    background:#8A342B; color:#fff;
    animation:hfmPayAlertPulse 1.15s ease-in-out 4;
  }.shell-v2 @keyframes hfmPayAlertPulse{
    0%,100%{ box-shadow:0 0 0 0 rgba(158,54,45,0.5); }
    50%{ box-shadow:0 0 0 6px rgba(158,54,45,0); }
  }.shell-v2 /* ===== MÓDULO DE BOAS-VINDAS — toast flutuante, discreto e curto (6s) ===== */
  /* position:fixed -> nunca ocupa espaço no layout do dashboard, mesmo enquanto visível */
  .welcome-card{
    position:fixed;
    top:88px;
    left:288px;
    bottom:auto;
    right:auto;
    width:348px;
    max-width:calc(100vw - 48px);
    z-index:400;
    display:flex; align-items:center; gap:14px;
    background:rgba(255,255,255,0.9);
    backdrop-filter:blur(20px) saturate(160%);
    -webkit-backdrop-filter:blur(20px) saturate(160%);
    border:1px solid rgba(11,61,58,0.08);
    border-left:3px solid var(--gold-metal);
    border-radius:14px;
    padding:14px 16px;
    color:var(--text);
    overflow:hidden;
    box-shadow:
      0 18px 36px -14px rgba(11,61,58,0.28),
      0 4px 12px -4px rgba(11,61,58,0.12);
    opacity:0; transform:translateY(-14px) scale(0.98);
    transition:opacity .3s ease, transform .3s ease;
    pointer-events:none;
  }.shell-v2 .welcome-card.is-visible{ opacity:1; transform:translateY(0) scale(1); pointer-events:auto; }.shell-v2 .welcome-card.is-leaving{ opacity:0; transform:translateY(-10px) scale(0.98); }.shell-v2 .welcome-icon{
    width:38px; height:38px; border-radius:11px; flex-shrink:0;
    background:var(--gold-metal);
    display:flex; align-items:center; justify-content:center;
    color:var(--teal-deep); position:relative; z-index:1;
  }.shell-v2 .welcome-icon .icon{ width:18px; height:18px; stroke-width:2; }.shell-v2 .welcome-body{ flex:1; min-width:0; position:relative; z-index:1; }.shell-v2 .welcome-title{ font-size:13.5px; font-weight:700; letter-spacing:-0.1px; line-height:1.3; color:var(--text); }.shell-v2 .welcome-text{ font-size:12.5px; color:var(--text-muted); margin-top:2px; line-height:1.45; overflow:hidden; text-overflow:ellipsis; display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; }.shell-v2 .welcome-cta{
    display:inline-flex; align-items:center; gap:4px;
    color:var(--teal-deep); text-decoration:none;
    font-size:12px; font-weight:700;
    position:relative; z-index:1; margin-top:8px;
    transition:gap .15s ease, color .15s ease;
  }.shell-v2 .welcome-cta:hover{ gap:7px; color:var(--teal); }.shell-v2 .welcome-close{
    flex-shrink:0; width:22px; height:22px; border-radius:50%; border:none; cursor:pointer;
    background:transparent; color:var(--text-faint);
    display:flex; align-items:center; justify-content:center;
    position:relative; z-index:2; margin-left:2px;
    transition:background .18s ease, color .18s ease;
  }.shell-v2 .welcome-close .icon{ width:11px; height:11px; stroke:currentColor; fill:none; stroke-width:2.4; stroke-linecap:round; }.shell-v2 .welcome-close:hover{ background:var(--teal-soft); color:var(--teal); }.shell-v2 .welcome-progress{
    position:absolute; left:0; bottom:0; height:2px; background:var(--gold-metal);
    width:100%; transform-origin:left; z-index:1;
  }.shell-v2 .welcome-progress.is-running{ animation:welcomeShrink linear forwards; animation-duration:12s; }.shell-v2 @keyframes welcomeShrink{ from{ transform:scaleX(1); } to{ transform:scaleX(0); } }.shell-v2 @media (max-width:640px){
    .welcome-card{ left:16px; right:16px; top:16px; bottom:auto; width:auto; max-width:none; }
  }.shell-v2 /* Ícone de acesso rápido no cabeçalho (substitui a fila de ações após recolher) */
  .qa-float{
    display:flex; align-items:center; position:relative; flex-shrink:0;
    max-width:0; margin-left:0; opacity:0; overflow:hidden; pointer-events:none;
    transition:max-width .45s cubic-bezier(0.4,0,0.2,1), margin-left .45s ease, opacity .35s ease;
  }.shell-v2 .qa-float.is-visible{
    max-width:38px; margin-left:2px; opacity:1; overflow:visible; pointer-events:auto;
  }.shell-v2 .qa-float-badge{
    width:36px; height:36px; border-radius:50%; flex-shrink:0;
    background:var(--teal-soft); color:var(--teal);
    display:flex; align-items:center; justify-content:center;
    cursor:pointer; position:relative;
    transition:background .18s ease, color .18s ease, transform .2s ease, box-shadow .2s ease;
  }.shell-v2 .qa-float-badge .icon{ width:16px; height:16px; }.shell-v2 .qa-float-badge:hover, .shell-v2 .qa-float-badge:focus-visible{
    background:var(--gold-metal); color:var(--teal-deep);
    transform:scale(1.08); box-shadow:0 6px 16px rgba(180,145,74,0.35);
    outline:none;
  }.shell-v2 .qa-float.is-open .qa-float-badge{ background:var(--gold-metal); color:var(--teal-deep); }.shell-v2 .qa-float-menu{
    position:absolute; top:calc(100% + 12px); left:50%; transform:translate(-50%,-6px); width:220px; z-index:200;
    background:var(--surface); border:1px solid var(--border); border-radius:14px;
    box-shadow:var(--shadow-md); padding:8px;
    opacity:0; pointer-events:none;
    transition:opacity .18s ease, transform .18s ease;
  }.shell-v2 .qa-float.is-open .qa-float-menu{ opacity:1; transform:translate(-50%,0); pointer-events:auto; }.shell-v2 @media (hover:hover){
    .qa-float.is-visible:hover .qa-float-menu{ opacity:1; transform:translate(-50%,0); pointer-events:auto; }
  }.shell-v2 .qfm-item{
    display:flex; align-items:center; gap:10px; padding:8px; border-radius:9px;
    font-size:12.5px; font-weight:700; color:var(--text); cursor:pointer;
    transition:background .15s ease;
  }.shell-v2 .qfm-item:hover{ background:var(--bg); }.shell-v2 .qfm-icon{
    width:28px; height:28px; border-radius:8px; flex-shrink:0;
    display:flex; align-items:center; justify-content:center;
    background:var(--teal-soft); color:var(--teal);
  }.shell-v2 .qfm-icon .icon{ width:14px; height:14px; }.shell-v2 .qfm-item.primary .qfm-icon{ background:var(--gold-metal); color:var(--teal-deep); }.shell-v2 .qfm-item[data-tone="grad"] .qfm-icon{ background:#EAF1EC; color:var(--success); }.shell-v2 .qfm-item[data-tone="cal"] .qfm-icon{ background:#EFEAF6; color:#6B4FA0; }.shell-v2 .qfm-item[data-tone="card"] .qfm-icon{ background:var(--teal-soft); color:var(--teal); }.shell-v2 .qfm-item[data-tone="chat"] .qfm-icon{ background:#FDEEE9; color:#C0603F; }.shell-v2 .qfm-item[data-tone="book"] .qfm-icon{ background:#EAF2F6; color:#3D7EA6; }.shell-v2 .quick-actions[data-hidden="true"]{ display:none; }.shell-v2 .hero-btn{
    background:var(--gold-metal); color:var(--teal-deep); font-weight:700; font-size:12px;
    padding:9px 17px; border-radius:9px; white-space:nowrap; box-shadow:0 6px 16px rgba(180,145,74,0.35);
    cursor:pointer; transition:transform .15s ease, box-shadow .15s ease; display:inline-flex; align-items:center;
  }.shell-v2 .hero-btn:hover{ transform:translateY(-1px); box-shadow:0 8px 20px rgba(180,145,74,0.42); }.shell-v2 /* Quick actions (premium chips) */
  .quick-actions{ display:flex; flex-wrap:wrap; gap:10px; }.shell-v2 .qa-item{
    display:flex; align-items:center; gap:10px;
    background:var(--surface); border:1px solid var(--border); border-radius:14px;
    padding:8px 16px 8px 8px; font-size:12.5px; font-weight:700; color:var(--text);
    cursor:pointer; box-shadow:var(--shadow-sm);
    transition:transform .16s ease, box-shadow .16s ease, border-color .16s ease;
  }.shell-v2 .qa-item:hover{ transform:translateY(-2px); box-shadow:var(--shadow-md); border-color:rgba(180,145,74,0.4); }.shell-v2 .qa-item.primary{ border-color:rgba(180,145,74,0.35); }.shell-v2 .qa-icon{
    width:32px; height:32px; border-radius:9px; flex-shrink:0;
    display:flex; align-items:center; justify-content:center;
    background:var(--teal-soft); color:var(--teal);
  }.shell-v2 .qa-item.primary .qa-icon{ background:var(--gold-metal); color:var(--teal-deep); }.shell-v2 .qa-item .icon{ width:15px; height:15px; flex-shrink:0; }.shell-v2 .qa-item[data-tone="grad"] .qa-icon{ background:#EAF1EC; color:var(--success); }.shell-v2 .qa-item[data-tone="cal"] .qa-icon{ background:#EFEAF6; color:#6B4FA0; }.shell-v2 .qa-item[data-tone="card"] .qa-icon{ background:var(--teal-soft); color:var(--teal); }.shell-v2 .qa-item[data-tone="chat"] .qa-icon{ background:#FDEEE9; color:#C0603F; }.shell-v2 .qa-item[data-tone="book"] .qa-icon{ background:#EAF2F6; color:#3D7EA6; }.shell-v2 /* Section divider between personal snapshot and admin overview */
  .section-divider{ display:flex; align-items:baseline; gap:8px; margin-top:2px; }.shell-v2 .section-divider-title{ font-size:14px; font-weight:700; }.shell-v2 .section-divider-sub{ font-size:11.5px; color:var(--text-faint); }.shell-v2 /* ===== KPI ROW ===== */
  .kpi-row{ display:grid; grid-template-columns:repeat(4,1fr); gap:12px; }.shell-v2 .kpi-card{
    background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-md);
    padding:14px 16px; box-shadow:var(--shadow-sm); position:relative;
    transition:border-color .18s ease, box-shadow .18s ease, transform .18s ease;
  }.shell-v2 .kpi-card:hover{
    border-color:rgba(180,145,74,0.45);
    box-shadow:var(--shadow-md), 0 0 0 3px rgba(180,145,74,0.08);
    transform:translateY(-2px);
  }.shell-v2 .kpi-top{ display:flex; justify-content:space-between; align-items:flex-start; }.shell-v2 .kpi-icon{
    width:30px; height:30px; border-radius:8px; display:flex; align-items:center; justify-content:center;
    font-size:14px; background:var(--teal-soft); color:var(--teal);
  }.shell-v2 .kpi-trend{ font-size:11px; font-weight:700; padding:3px 7px; border-radius:6px; }.shell-v2 .kpi-trend.up{ color:var(--success); background:var(--success-soft); }.shell-v2 .kpi-trend.warn{ color:var(--warning); background:var(--warning-soft); }.shell-v2 .kpi-trend.danger{ color:var(--danger); background:var(--danger-soft); }.shell-v2 .kpi-value{ font-family:'Fraunces', serif; font-size:25px; font-weight:600; margin-top:8px; font-variant-numeric:tabular-nums; }.shell-v2 .kpi-label{ font-size:12px; color:var(--text-muted); margin-top:1px; font-weight:600; }.shell-v2 .kpi-note{ font-size:10.5px; color:var(--text-faint); margin-top:4px; }.shell-v2 /* ===== TWO COL ===== */
  .row-2{ display:grid; grid-template-columns:1.4fr 1fr; gap:12px; align-items:stretch; }.shell-v2 #row-action-cpd{ grid-template-columns:1fr 1.15fr; }.shell-v2 .row-2.rev{ grid-template-columns:1.4fr 1fr; }.shell-v2 .panel{
    background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-md);
    padding:18px; box-shadow:var(--shadow-sm); display:flex; flex-direction:column;
    transition:border-color .2s ease, box-shadow .2s ease;
  }.shell-v2 .panel:hover{
    border-color:rgba(180,145,74,0.3);
    box-shadow:var(--shadow-md), 0 0 0 3px rgba(180,145,74,0.05);
  }.shell-v2 .panel-head{ display:flex; justify-content:space-between; align-items:center; margin-bottom:12px; }.shell-v2 .panel-title{ font-family:'Fraunces', serif; font-size:15px; font-weight:600; display:flex; align-items:center; gap:8px; }.shell-v2 .panel-link{ font-size:11.5px; font-weight:700; color:var(--teal); }.shell-v2 /* CPD panel */
  .cpd-progress-track{ width:100%; height:9px; background:var(--teal-soft); border-radius:20px; overflow:hidden; margin:10px 0 4px; }.shell-v2 .cpd-progress-fill{ height:100%; width:0%; background:var(--gold); border-radius:20px; }.shell-v2 .cpd-progress-pct{ font-size:10.5px; font-weight:700; color:var(--text-faint); margin-bottom:8px; }.shell-v2 /* ===== Carteira Profissional Digital (secção Minha AMO › Carteira digital) ===== */
  .carteira-wrap{ display:grid; grid-template-columns:380px 1fr; gap:24px; align-items:start; }.shell-v2 @media (max-width:880px){ .carteira-wrap{ grid-template-columns:1fr; } }.shell-v2 .carteira-card{
    max-width:380px; border-radius:18px; padding:24px; color:#fff; position:relative; overflow:hidden;
    background:linear-gradient(135deg, var(--teal) 0%, var(--teal-deep) 100%);
    box-shadow:var(--shadow-md,0 8px 24px rgba(8,42,40,.25));
  }.shell-v2 .carteira-card::before{
    content:''; position:absolute; top:-40%; right:-25%; width:220px; height:220px; border-radius:50%;
    background:radial-gradient(circle, rgba(224,193,113,0.18) 0%, rgba(224,193,113,0) 70%);
    pointer-events:none;
  }.shell-v2 .carteira-card-top{ display:flex; justify-content:space-between; align-items:flex-start; position:relative; z-index:1; }.shell-v2 .carteira-eyebrow{ font-size:10px; letter-spacing:1.2px; text-transform:uppercase; opacity:.75; font-weight:600; }.shell-v2 .carteira-tier{
    font-size:10px; font-weight:700; letter-spacing:.4px; text-transform:uppercase;
    background:rgba(224,193,113,0.22); border:1px solid rgba(224,193,113,0.45); color:#F3EBD8;
    padding:4px 10px; border-radius:20px;
  }.shell-v2 .carteira-id-row{ display:flex; align-items:center; gap:14px; margin-top:18px; position:relative; z-index:1; }.shell-v2 .carteira-avatar{
    width:52px; height:52px; border-radius:50%; background:rgba(255,255,255,0.14);
    border:2px solid rgba(224,193,113,0.55); display:flex; align-items:center; justify-content:center;
    font-size:16px; font-weight:700; color:#fff; flex-shrink:0;
  }.shell-v2 .carteira-nome{ font-family:'Fraunces',serif; font-size:19px; font-weight:600; line-height:1.2; }.shell-v2 .carteira-sub{ font-size:12px; opacity:.85; margin-top:2px; }.shell-v2 .carteira-chips{ display:flex; flex-wrap:wrap; gap:6px; margin-top:16px; position:relative; z-index:1; }.shell-v2 .carteira-chip{
    font-size:10.5px; font-weight:600; padding:4px 10px; border-radius:20px;
    background:rgba(255,255,255,0.1); border:1px solid rgba(255,255,255,0.18); color:#EAF1EE;
  }.shell-v2 .carteira-cpd-row{ margin-top:18px; position:relative; z-index:1; }.shell-v2 .carteira-cpd-label{ display:flex; justify-content:space-between; font-size:10.5px; opacity:.8; margin-bottom:5px; }.shell-v2 .carteira-cpd-track{ width:100%; height:6px; border-radius:20px; background:rgba(255,255,255,0.16); overflow:hidden; }.shell-v2 .carteira-cpd-fill{ height:100%; border-radius:20px; background:var(--gold-metal); }.shell-v2 .carteira-card-bottom{
    display:flex; justify-content:space-between; align-items:flex-end; margin-top:20px;
    padding-top:16px; border-top:1px solid rgba(255,255,255,0.14); position:relative; z-index:1;
  }.shell-v2 .carteira-validade-label{ font-size:9.5px; opacity:.7; text-transform:uppercase; letter-spacing:.4px; }.shell-v2 .carteira-validade-valor{ font-size:13px; font-weight:700; margin-top:2px; }.shell-v2 .carteira-stamp{
    width:38px; height:38px; border-radius:8px; background:rgba(255,255,255,.15);
    display:flex; align-items:center; justify-content:center; flex-shrink:0;
  }.shell-v2 .carteira-stats-row{ display:grid; grid-template-columns:repeat(3,1fr); gap:10px; margin-top:16px; max-width:380px; }.shell-v2 .carteira-stat{ background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-sm); padding:11px 12px; text-align:center; }.shell-v2 .carteira-stat-val{ font-family:'Fraunces',serif; font-size:18px; font-weight:600; color:var(--text); }.shell-v2 .carteira-stat-val.warn{ color:var(--warning); }.shell-v2 .carteira-stat-label{ font-size:9.5px; color:var(--text-faint); text-transform:uppercase; letter-spacing:.3px; margin-top:2px; }.shell-v2 .carteira-actions{ display:flex; flex-wrap:wrap; gap:8px; margin-top:16px; max-width:380px; }.shell-v2 .carteira-timeline{ display:flex; flex-direction:column; }.shell-v2 .carteira-side-title{ font-size:12.5px; font-weight:700; color:var(--text); margin-bottom:10px; }.shell-v2 .cpd-nums{ display:flex; justify-content:space-between; font-size:12px; color:var(--text-muted); font-weight:600; font-variant-numeric:tabular-nums; }.shell-v2 .cpd-nums span:first-child{ font-family:'Fraunces', serif; font-size:15px; font-weight:600; color:var(--text); }.shell-v2 .cpd-forecast{ font-size:11.5px; color:var(--text-muted); margin-top:8px; line-height:1.45; }.shell-v2 .cpd-forecast strong{ color:var(--text); }.shell-v2 .cpd-next{ margin-top:12px; background:var(--teal-soft); border-radius:var(--radius-sm); padding:12px; }.shell-v2 .cpd-next-label{ font-size:10px; text-transform:uppercase; letter-spacing:0.6px; color:var(--teal); font-weight:700; }.shell-v2 .cpd-next-title{ font-weight:700; margin-top:4px; font-size:13px; }.shell-v2 .cpd-next-meta{ display:flex; align-items:center; gap:5px; font-size:11px; color:var(--text-muted); margin-top:4px; }.shell-v2 .cpd-next-credits{ font-size:11.5px; color:var(--gold-text); font-weight:700; margin-top:6px; }.shell-v2 .cpd-cta-btn.hero-btn{ margin-top:12px; width:100%; justify-content:center; }.shell-v2 /* Revenue */
  .rev-tabs{ display:flex; gap:6px; margin:12px 0 8px; }.shell-v2 .rev-tab{ font-size:11.5px; font-weight:700; padding:5px 10px; border-radius:7px; color:var(--text-muted); background:var(--bg); border:1px solid var(--border); cursor:pointer; user-select:none; transition:background .15s ease, color .15s ease, border-color .15s ease; }.shell-v2 .rev-tab:hover:not(.active){ border-color:var(--teal); color:var(--teal); }.shell-v2 .rev-tab.active{ background:var(--teal); color:#fff; border-color:var(--teal); }.shell-v2 .rev-tx-head{ display:flex; align-items:center; justify-content:space-between; margin-top:16px; padding-top:12px; border-top:1px solid var(--border); }.shell-v2 .rev-tx-title{ font-size:11px; font-weight:700; color:var(--text-muted); text-transform:uppercase; letter-spacing:.4px; }.shell-v2 .rev-tx-count{ font-size:11px; color:var(--text-faint); font-weight:600; }.shell-v2 .rev-tx-list{ margin-top:2px; }.shell-v2 .rev-tx-row{ display:flex; align-items:center; gap:10px; padding:9px 0; border-bottom:1px solid var(--border); }.shell-v2 .rev-tx-row:last-child{ border-bottom:none; }.shell-v2 .rev-tx-dot{ width:7px; height:7px; border-radius:50%; flex-shrink:0; background:var(--success); }.shell-v2 .rev-tx-row.is-pending .rev-tx-dot{ background:var(--gold); }.shell-v2 .rev-tx-body{ flex:1; min-width:0; }.shell-v2 .rev-tx-name{ font-size:12.5px; font-weight:600; color:var(--text); }.shell-v2 .rev-tx-sub{ font-size:11px; color:var(--text-faint); margin-top:1px; }.shell-v2 .rev-tx-right{ text-align:right; flex-shrink:0; }.shell-v2 .rev-tx-amount{ font-size:12.5px; font-weight:700; font-variant-numeric:tabular-nums; }.shell-v2 .rev-tx-status{ font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.3px; margin-top:2px; }.shell-v2 .rev-tx-status.ok{ color:var(--success); }.shell-v2 .rev-tx-status.pending{ color:var(--gold-text); }.shell-v2 .rev-tx-status.danger{ color:var(--danger); }.shell-v2 /* ===== Formulário de Submissão de Estudos (Investigação Científica) ===== */
  .rf-form{ max-width:640px; }.shell-v2 .rf-row{ margin-bottom:16px; }.shell-v2 .rf-row-split{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }.shell-v2 .rf-label{ display:block; font-size:12px; font-weight:700; color:var(--text); margin-bottom:6px; }.shell-v2 .rf-label .rf-optional{ font-weight:500; color:var(--text-faint); text-transform:none; letter-spacing:0; }.shell-v2 .rf-hint{ font-size:11px; color:var(--text-faint); margin-top:5px; line-height:1.4; }.shell-v2 .rf-input, .shell-v2 .rf-select, .shell-v2 .rf-textarea{
    width:100%; font-family:'Manrope',sans-serif; font-size:13px; color:var(--text);
    background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-sm);
    padding:10px 12px; outline:none; transition:border-color .18s ease, box-shadow .18s ease;
  }.shell-v2 .rf-input:focus, .shell-v2 .rf-select:focus, .shell-v2 .rf-textarea:focus{ border-color:var(--gold); box-shadow:0 0 0 3px rgba(180,145,74,0.12); }.shell-v2 .rf-textarea{ resize:vertical; min-height:90px; line-height:1.5; }.shell-v2 .rf-pills{ display:flex; gap:8px; flex-wrap:wrap; }.shell-v2 .rf-pill{
    font-size:12px; font-weight:600; padding:8px 14px; border-radius:999px;
    border:1px solid var(--border); background:var(--surface); color:var(--text-muted);
    cursor:pointer; transition:all .16s ease; user-select:none;
  }.shell-v2 .rf-pill:hover{ border-color:rgba(180,145,74,0.4); }.shell-v2 .rf-pill.active{ background:var(--teal); border-color:var(--teal); color:#fff; }.shell-v2 .rf-file{
    display:flex; align-items:center; gap:10px; border:1.5px dashed var(--border); border-radius:var(--radius-sm);
    padding:16px; cursor:pointer; color:var(--text-muted); font-size:12.5px; transition:border-color .16s ease, background .16s ease;
  }.shell-v2 .rf-file:hover{ border-color:var(--gold); background:var(--gold-soft); }.shell-v2 .rf-file .icon{ width:18px; height:18px; flex-shrink:0; color:var(--teal); }.shell-v2 .rf-check-row{ display:flex; align-items:flex-start; gap:9px; font-size:12px; color:var(--text-muted); line-height:1.5; }.shell-v2 .rf-check-row input{ margin-top:2px; accent-color:var(--teal); flex-shrink:0; }.shell-v2 .rf-actions{ display:flex; align-items:center; gap:14px; margin-top:22px; }.shell-v2 @media (max-width:640px){ .rf-row-split{ grid-template-columns:1fr; } }.shell-v2 .rev-period{ margin-left:auto; display:flex; gap:4px; }.shell-v2 .rev-period span{ font-size:11px; color:var(--text-faint); padding:4px 8px; }.shell-v2 .rev-period span.active{ color:var(--teal); font-weight:700; }.shell-v2 .rev-chart{ margin-top:auto; }.shell-v2 .rev-months{ display:flex; justify-content:space-between; font-size:10.5px; color:var(--text-faint); margin-top:6px; }.shell-v2 .rev-point{ cursor:pointer; }.shell-v2 .rev-point circle:first-child{ transition:opacity .15s ease; }.shell-v2 .rev-point:hover circle:first-child{ opacity:0.22 !important; }.shell-v2 .rev-point:hover circle:last-child{ r:5; }.shell-v2 .rev-point-last circle:last-child{ animation:revPulse 2.4s ease-in-out infinite; }.shell-v2 @keyframes revPulse{ 0%,100%{ filter:drop-shadow(0 0 0 rgba(180,145,74,0)); } 50%{ filter:drop-shadow(0 0 5px rgba(180,145,74,0.6)); } }.shell-v2 /* Events */
  .event-card{ display:flex; gap:12px; padding:10px 0; border-bottom:1px solid var(--border); }.shell-v2 .event-card:last-child{ border-bottom:none; }.shell-v2 .event-date{
    width:42px; height:42px; border-radius:9px; background:var(--teal-soft); color:var(--teal);
    display:flex; flex-direction:column; align-items:center; justify-content:center; flex-shrink:0;
  }.shell-v2 .event-date .d{ font-family:'Fraunces', serif; font-size:14px; font-weight:700; line-height:1; }.shell-v2 .event-date .m{ font-size:8.5px; text-transform:uppercase; font-weight:700; letter-spacing:0.4px; }.shell-v2 .event-title{ font-weight:700; font-size:12.5px; }.shell-v2 .event-meta{ font-size:11px; color:var(--text-muted); margin-top:2px; }.shell-v2 .event-bar-track{ width:100%; height:4px; background:var(--border); border-radius:20px; margin-top:6px; overflow:hidden; }.shell-v2 .event-bar-fill{ height:100%; background:var(--gold); border-radius:20px; }.shell-v2 /* News */
  .news-scope-note{
    font-size:11.5px; color:var(--text-muted); margin:-6px 0 14px; line-height:1.5; max-width:640px;
  }.shell-v2 .news-scope-note strong{ color:var(--text); font-weight:700; }.shell-v2 .news-grid{ display:grid; grid-template-columns:1.6fr 1fr; gap:14px; }.shell-v2 /* Featured (main) news card */
  .news-main{
    border-radius:var(--radius-md); overflow:hidden; position:relative; min-height:260px;
    display:flex; flex-direction:column; justify-content:flex-end;
    box-shadow:var(--shadow-sm); border:1px solid var(--border);
  }.shell-v2 .news-main-img{
    position:absolute; inset:0; background:linear-gradient(140deg, #1B2B29, #0B3D3A 60%, #244B3F);
  }.shell-v2 .news-main-img.cat-eleicoes{ background:linear-gradient(140deg, #082A28, #0B3D3A 55%, #B4914A); }.shell-v2 .news-main-img.cat-formacao{ background:linear-gradient(140deg, #1B2B29, #0B3D3A 55%, #256B4E); }.shell-v2 .news-main-img.cat-comunidade{ background:linear-gradient(140deg, #0B3D3A, #244B3F 55%, #9C6018); }.shell-v2 .news-main-img svg{
    position:absolute; right:-6%; bottom:-10%; width:62%; height:62%;
    stroke:rgba(255,255,255,0.14); fill:none; stroke-width:0.9;
  }.shell-v2 .news-main-scrim{
    position:absolute; inset:0; background:linear-gradient(0deg, rgba(8,20,18,0.88) 0%, rgba(8,20,18,0.35) 55%, rgba(8,20,18,0.05) 100%);
  }.shell-v2 .news-main-body{ position:relative; padding:18px; }.shell-v2 .news-tag{
    display:inline-block; background:var(--gold); color:var(--teal-deep);
    font-size:10px; font-weight:700; padding:4px 10px; border-radius:20px; letter-spacing:0.4px;
    margin-bottom:10px;
  }.shell-v2 .news-main-title{ font-family:'Fraunces', serif; font-size:21px; font-weight:600; color:#fff; max-width:88%; line-height:1.25; }.shell-v2 .news-main-sub{ font-size:12.5px; color:#CBD8D3; margin-top:8px; max-width:90%; line-height:1.5; }.shell-v2 .news-meta-row{
    display:flex; align-items:center; flex-wrap:wrap; gap:14px; margin-top:14px;
  }.shell-v2 .news-meta-item{ display:flex; align-items:center; gap:5px; font-size:11px; color:#CBD8D3; }.shell-v2 .news-meta-item svg{ width:13px; height:13px; stroke:#CBD8D3; fill:none; stroke-width:2; }.shell-v2 .news-meta-item.author{ color:#fff; font-weight:600; }.shell-v2 .news-meta-item.author svg{ stroke:#fff; }.shell-v2 .news-main .news-read-btn{ margin-top:16px; }.shell-v2 .news-read-btn{
    display:inline-flex; align-items:center; gap:6px; background:var(--gold); color:var(--teal-deep);
    font-size:11.5px; font-weight:700; padding:8px 14px; border-radius:20px; border:none; cursor:pointer;
    transition:transform .12s ease, box-shadow .12s ease;
  }.shell-v2 .news-read-btn svg{ width:13px; height:13px; stroke:var(--teal-deep); fill:none; stroke-width:2.4; }.shell-v2 .news-read-btn:hover{ transform:translateY(-1px); box-shadow:0 4px 10px rgba(180,145,74,0.35); }.shell-v2 /* Side (secondary) news cards */
  .news-side{ display:flex; flex-direction:column; gap:12px; }.shell-v2 .news-card{
    background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-md);
    padding:12px; flex:1; display:flex; gap:12px; align-items:flex-start;
    transition:box-shadow .12s ease, border-color .12s ease; cursor:pointer;
  }.shell-v2 .news-card:hover{ box-shadow:var(--shadow-sm); border-color:var(--teal); }.shell-v2 .news-card-img{
    width:64px; height:64px; border-radius:10px; flex:none; position:relative; overflow:hidden;
    display:flex; align-items:center; justify-content:center;
  }.shell-v2 .news-card-img.cat-formacao{ background:linear-gradient(135deg, #0B3D3A, #256B4E); }.shell-v2 .news-card-img.cat-comunidade{ background:linear-gradient(135deg, #0B3D3A, #9C6018); }.shell-v2 .news-card-img svg{ width:52%; height:52%; stroke:rgba(255,255,255,0.9); fill:none; stroke-width:1.5; }.shell-v2 .news-card-body{ flex:1; min-width:0; }.shell-v2 .news-card .news-tag-sm{ font-size:9.5px; font-weight:700; color:var(--teal); text-transform:uppercase; letter-spacing:0.5px; }.shell-v2 .news-card .news-card-title{ font-weight:700; font-size:12.5px; margin-top:4px; line-height:1.35; }.shell-v2 .news-card-meta{ display:flex; align-items:center; flex-wrap:wrap; gap:9px; margin-top:6px; }.shell-v2 .news-card-meta-item{ display:flex; align-items:center; gap:3px; font-size:10.5px; color:var(--text-faint); }.shell-v2 .news-card-meta-item svg{ width:11px; height:11px; stroke:var(--text-faint); fill:none; stroke-width:2; }.shell-v2 .news-card-read{
    display:inline-flex; align-items:center; gap:4px; font-size:10.5px; font-weight:700; color:var(--teal);
    margin-top:7px;
  }.shell-v2 .news-card-read svg{ width:11px; height:11px; stroke:var(--teal); fill:none; stroke-width:2.4; }.shell-v2 .activity-row{ display:flex; gap:12px; padding:10px 0; border-bottom:1px solid var(--border); }.shell-v2 .activity-row:last-child{ border-bottom:none; }.shell-v2 .activity-time{ width:44px; flex-shrink:0; font-size:11px; color:var(--text-faint); font-weight:700; padding-top:1px; }.shell-v2 .activity-dot-col{ display:flex; flex-direction:column; align-items:center; }.shell-v2 .activity-dot{ width:7px; height:7px; border-radius:50%; background:var(--gold); margin-top:4px; }.shell-v2 .activity-line{ flex:1; width:1px; background:var(--border); margin-top:4px; }.shell-v2 .activity-text{ font-size:12.5px; padding-bottom:2px; }.shell-v2 /* ===== INTEGRAÇÃO: Gestão premium, inadimplência e normas técnicas ===== */
  .panel-count-badge{
    font-size:11px; font-weight:700; color:var(--text-muted); background:var(--bg);
    border:1px solid var(--border); padding:4px 11px; border-radius:20px; white-space:nowrap;
  }.shell-v2 .panel-desc{ font-size:12px; color:var(--text-muted); margin:-8px 0 2px; }.shell-v2 .mgmt-list{ display:flex; flex-direction:column; }.shell-v2 .mgmt-item{ display:flex; align-items:center; gap:14px; padding:14px 0; border-bottom:1px solid var(--border); }.shell-v2 .mgmt-item:last-child{ border-bottom:none; }.shell-v2 .mgmt-num{
    width:26px; height:26px; border-radius:50%; background:var(--teal-soft); color:var(--teal);
    font-size:11.5px; font-weight:800; display:flex; align-items:center; justify-content:center; flex-shrink:0;
  }.shell-v2 .mgmt-body{ flex:1; min-width:0; }.shell-v2 .mgmt-title{ font-weight:700; font-size:13px; }.shell-v2 .mgmt-sub{ font-size:11.5px; color:var(--text-muted); margin-top:2px; }.shell-v2 .mgmt-btn.hero-btn{ font-size:11.5px; padding:8px 14px; flex-shrink:0; box-shadow:none; }.shell-v2 .mgmt-btn.hero-btn:hover{ box-shadow:0 6px 16px rgba(180,145,74,0.3); }.shell-v2 .mgmt-item-editable.is-editing{ align-items:center; }.shell-v2 .mgmt-edit-input{
    font-family:'Manrope',sans-serif; font-size:12.5px; color:var(--text); width:100%;
    padding:6px 8px; border-radius:7px; border:1px solid var(--gold); background:var(--gold-soft);
    outline:none;
  }.shell-v2 .mgmt-edit-cancel{
    font-size:11.5px; color:var(--text-muted); cursor:pointer; flex-shrink:0; padding:8px 4px;
    transition:color 0.15s ease;
  }.shell-v2 .mgmt-edit-cancel:hover{ color:var(--danger); }.shell-v2 /* Centro de Pendências */
  .panel-count-badge.warn{ color:var(--warning); background:var(--warning-soft); border-color:rgba(156,96,24,0.18); }.shell-v2 .pend-icon{ background:var(--teal-soft); color:var(--teal); }.shell-v2 .pend-icon.warning{ background:var(--warning-soft); color:var(--warning); }.shell-v2 .pend-icon.danger{ background:var(--danger-soft); color:var(--danger); }.shell-v2 .pend-icon.success{ background:var(--success-soft); color:var(--success); }.shell-v2 .pend-icon.info{ background:var(--teal-soft); color:var(--teal); }.shell-v2 .pend-item .mgmt-btn.hero-btn{ background:transparent; color:var(--teal); border:1px solid var(--border); box-shadow:none; }.shell-v2 .pend-item .mgmt-btn.hero-btn:hover{ background:var(--teal-soft); box-shadow:none; }.shell-v2 .pend-item.is-warning .mgmt-btn.hero-btn{ background:var(--gold-metal); color:var(--teal-deep); border:none; }.shell-v2 .pend-item.is-warning .mgmt-btn.hero-btn:hover{ filter:brightness(1.05); }.shell-v2 .pend-item.is-danger .mgmt-btn.hero-btn{ background:var(--danger); color:#fff; border:none; }.shell-v2 .pend-item.is-danger .mgmt-btn.hero-btn:hover{ filter:brightness(1.08); }.shell-v2 .pend-empty-state{ display:flex; flex-direction:column; align-items:center; text-align:center; gap:6px; padding:28px 12px 8px; }.shell-v2 .pend-empty-icon{ width:38px; height:38px; border-radius:50%; background:var(--success-soft); color:var(--success); display:flex; align-items:center; justify-content:center; }.shell-v2 .pend-empty-icon .icon{ width:18px; height:18px; }.shell-v2 .pend-empty-title{ font-family:'Fraunces', serif; font-size:15px; font-weight:600; }.shell-v2 .pend-empty-sub{ font-size:12px; color:var(--text-muted); }.shell-v2 .compliance-box{
    background:var(--danger-soft); border:1px solid rgba(158,54,45,0.16); border-radius:var(--radius-sm);
    padding:14px 16px; margin-top:12px;
  }.shell-v2 .compliance-box-title{ display:flex; align-items:center; gap:6px; font-weight:700; font-size:12.5px; color:var(--danger); }.shell-v2 .compliance-box ul{ list-style:none; margin-top:9px; display:flex; flex-direction:column; gap:6px; }.shell-v2 .compliance-box li{ font-size:12px; color:var(--text); padding-left:14px; position:relative; }.shell-v2 .compliance-box li::before{ content:'•'; position:absolute; left:0; color:var(--danger); font-weight:700; }.shell-v2 .norm-item{ display:flex; gap:12px; padding:12px 0; border-bottom:1px solid var(--border); }.shell-v2 .norm-item:last-child{ border-bottom:none; }.shell-v2 .norm-icon{
    width:38px; height:38px; border-radius:9px; background:var(--gold-soft); color:var(--gold);
    display:flex; align-items:center; justify-content:center; flex-shrink:0;
  }.shell-v2 .norm-icon .icon{ width:17px; height:17px; }.shell-v2 .norm-tag{ font-size:9.5px; font-weight:700; color:var(--teal); text-transform:uppercase; letter-spacing:0.5px; }.shell-v2 .norm-title{ font-weight:700; font-size:12.5px; margin-top:3px; }.shell-v2 /* Financial intelligence KPI strip (dentro do painel de Receita) */
  .fin-kpi-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:10px; margin-top:2px; }.shell-v2 .fin-kpi{ background:var(--bg); border:1px solid var(--border); border-radius:var(--radius-sm); padding:12px 14px; }.shell-v2 .fin-kpi-label{ font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:0.4px; color:var(--text-faint); }.shell-v2 .fin-kpi-value{ font-family:'Fraunces', serif; font-size:19px; font-weight:600; margin-top:5px; font-variant-numeric:tabular-nums; }.shell-v2 .fin-kpi-value.danger{ color:var(--danger); }.shell-v2 .fin-kpi-trend{ font-size:10.5px; font-weight:700; margin-top:4px; color:var(--text-muted); }.shell-v2 .fin-kpi-trend.up{ color:var(--success); }.shell-v2 .fin-kpi-trend.down{ color:var(--danger); }.shell-v2 /* Distribuição de membros por província — lista clicável + detalhe */
  .prov-bar-row{ display:flex; align-items:center; gap:10px; padding:9px 6px; border-radius:8px; cursor:pointer; transition:background .16s ease; margin:0 -6px; }.shell-v2 .prov-bar-row:hover, .shell-v2 .prov-bar-row.is-active{ background:var(--teal-soft); }.shell-v2 .prov-bar-rank{
    width:20px; height:20px; border-radius:50%; background:var(--teal-soft); color:var(--teal);
    font-size:10.5px; font-weight:700; display:flex; align-items:center; justify-content:center; flex-shrink:0;
    transition:background .16s ease, color .16s ease;
  }.shell-v2 .prov-bar-row.is-active .prov-bar-rank{ background:var(--gold-metal); color:var(--teal-deep); }.shell-v2 .prov-bar-name{ width:110px; font-size:12.5px; font-weight:600; flex-shrink:0; }.shell-v2 .prov-bar-track{ flex:1; height:8px; background:var(--bg); border-radius:20px; overflow:hidden; }.shell-v2 .prov-bar-fill{ height:100%; background:var(--teal); border-radius:20px; transition:width .3s ease, background .16s ease; }.shell-v2 .prov-bar-row.is-active .prov-bar-fill{ background:var(--gold); }.shell-v2 .prov-bar-pct{ width:34px; text-align:right; font-size:12px; font-weight:700; color:var(--text-muted); }.shell-v2 .prov-detail{ background:var(--bg); border:1px solid var(--border); border-radius:var(--radius-md); padding:16px; margin-top:14px; }.shell-v2 .prov-detail-head{ display:flex; align-items:center; justify-content:space-between; }.shell-v2 .prov-detail-name{ font-family:'Fraunces', serif; font-size:16px; font-weight:600; }.shell-v2 .prov-detail-pct{ font-size:11px; font-weight:700; color:var(--gold-text); background:var(--gold-soft); padding:3px 9px; border-radius:20px; }.shell-v2 .prov-detail-stats{ display:grid; grid-template-columns:repeat(3,1fr); gap:10px; margin-top:12px; }.shell-v2 .prov-detail-stat{ text-align:center; }.shell-v2 .prov-detail-stat .n{ font-family:'Fraunces', serif; font-size:18px; font-weight:600; }.shell-v2 .prov-detail-stat .n.warn{ color:var(--danger); }.shell-v2 .prov-detail-stat .l{ font-size:9.5px; color:var(--text-faint); font-weight:700; text-transform:uppercase; letter-spacing:0.3px; margin-top:2px; }.shell-v2 .prov-detail-note{ font-size:11px; color:var(--text-muted); margin-top:10px; }.shell-v2 .prov-detail-note strong{ color:var(--text); }.shell-v2 @media (max-width: 1180px){
    .row-2, .row-2.rev, .news-grid{ grid-template-columns:1fr; }
    .kpi-row{ grid-template-columns:repeat(2,1fr); }
    .fin-kpi-grid{ grid-template-columns:repeat(2,1fr); }
  }.shell-v2 @media (max-width: 880px){
    .sidebar{ display:none; }
    .content{ padding:0 18px 40px; }
    .topbar{ padding:12px 18px; flex-wrap:wrap; gap:10px; }
    .topbar-center{ order:4; max-width:none; width:100%; }
    .role-toggle{ order:3; }
    .role-toggle-note{ display:none; }
  }.shell-v2 @media (max-width: 560px){
    .topbar h1{ font-size:18px; }
    .greet{ display:none; }
    .lang-pill{ display:none; }
    .profile-info{ display:none; }
  }.shell-v2 /* Icons */
  .icon{ width:16px; height:16px; stroke:currentColor; fill:none; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; display:inline-block; vertical-align:middle; flex-shrink:0; }.shell-v2 .kpi-icon .icon{ width:16px; height:16px; }.shell-v2 /* Search input */
  .search-input{ border:none; outline:none; background:transparent; font-size:13px; color:var(--text); width:100%; font-family:'Manrope',sans-serif; }.shell-v2 .search-input::placeholder{ color:var(--text-faint); }.shell-v2 /* Admin/member scoping — a zona "Gestão & Finanças" (#row-mgmt-revenue) já
     desaparece inteira via .scope-admin na própria section; #row-action-cpd
     (Desenvolvimento & Eventos) já não tem painéis admin-only, por isso
     mantém-se sempre a 2 colunas, mesmo na vista de membro. */
  body.role-member .shell-v2 .scope-admin{ display:none !important; }body:not(.role-member) .shell-v2 .scope-member{ display:none !important; }.shell-v2 /* Bottom nav (mobile) */
  .bottom-nav{ display:none; }.shell-v2 @media (max-width:880px){
    .bottom-nav{
      display:flex; position:fixed; bottom:0; left:0; right:0; z-index:60;
      background:var(--surface); border-top:1px solid var(--border);
      box-shadow:0 -2px 12px rgba(11,61,58,0.08);
      padding-bottom:env(safe-area-inset-bottom, 0);
    }
    .bn-item{ flex:1; display:flex; flex-direction:column; align-items:center; gap:3px; padding:9px 0 8px; color:var(--text-muted); font-size:10px; font-weight:700; cursor:pointer; background:none; border:none; font-family:inherit; }
    .bn-item.active{ color:var(--teal); }
    .bn-item.active .icon{ color:var(--gold); }
    .bn-item .icon{ width:19px; height:19px; }
    .content{ padding-bottom:78px; }
  }.shell-v2 /* Mobile nav drawer — dá acesso às 8 secções completas em ecrãs onde a sidebar
     está escondida (<880px). É a sidebar reaproveitada dentro de uma folha
     deslizante, não um menu novo: os .nav-item clonados mantêm o onclick
     original, por isso continuam a chamar openNavItem() sem lógica extra. */
  <!-- Overlay/drawer têm de ficar acima do widget flutuante do AMO Assist
       (z-index:500) — como este é um diálogo modal (aria-modal="true"), .shell-v2 nada
       fora dele deveria continuar visível/clicável por cima do overlay. -->
  .mobile-drawer-overlay{ display:none; position:fixed; inset:0; background:rgba(11,30,28,0.45); z-index:590; }.shell-v2 .mobile-drawer{
    display:none; position:fixed; left:0; right:0; bottom:0; z-index:591;
    max-height:82vh; overflow-y:auto; background:var(--surface);
    border-radius:18px 18px 0 0; box-shadow:0 -8px 28px rgba(11,61,58,0.18);
    padding:14px 16px calc(18px + env(safe-area-inset-bottom,0));
  }.shell-v2 .mobile-drawer-overlay.open, .shell-v2 .mobile-drawer.open{ display:block; }.shell-v2 .mobile-drawer-handle{ width:36px; height:4px; border-radius:2px; background:var(--border); margin:0 auto 14px; }.shell-v2 .mobile-drawer-title{ font-size:13px; font-weight:800; color:var(--text-muted); text-transform:uppercase; letter-spacing:0.4px; margin-bottom:10px; }.shell-v2 /* O colapso da sidebar original anima via max-height/opacity (não display),
     por isso é isso que é preciso anular aqui — display:block sozinho deixava
     os itens com max-height:0, sobrepostos e a bloquear cliques. */
  .mobile-drawer .nav-group.collapsed .nav-group-items{
    max-height:2000px; opacity:1; padding:4px 0 2px 10px; pointer-events:auto;
  }.shell-v2 .mobile-drawer .nav-group-header{ cursor:default; pointer-events:none; }.shell-v2 .mobile-drawer .nav-group-header *{ pointer-events:none; }.shell-v2 .mobile-drawer .nav-chevron{ display:none; }.shell-v2 @media (min-width:881px){
    .mobile-drawer-overlay, .mobile-drawer{ display:none !important; }
  }.shell-v2 /* ===== MOBILE DASHBOARD — experiência própria, não é o desktop encolhido =====
     Ações rápidas em faixa horizontal deslizável (padrão de app bancário),
     KPIs em cards verticais empilhados de leitura fácil, painéis a largura total. */
  @media (max-width:880px){
    .content{ padding:0 14px 40px; }
    .section-divider{ padding:0 2px; }

    /* Ações rápidas: scroll horizontal por gesto, cartões maiores e tocáveis */
    .quick-actions{
      display:flex; flex-wrap:nowrap; overflow-x:auto; scroll-snap-type:x mandatory;
      gap:10px; margin:0 -14px; padding:2px 14px 6px; -webkit-overflow-scrolling:touch;
      scrollbar-width:none;
    }
    .quick-actions::-webkit-scrollbar{ display:none; }
    .qa-item{
      flex:0 0 auto; scroll-snap-align:start; width:84px;
      flex-direction:column; align-items:center; justify-content:center; text-align:center;
      gap:8px; padding:14px 6px 12px; border-radius:16px;
    }
    .qa-icon{ width:38px; height:38px; border-radius:11px; }
    .qa-item span, .qa-item{ font-size:11px; }

    /* KPIs: cards verticais empilhados, um por linha, mais legíveis ao polegar */
    .kpi-row{ grid-template-columns:1fr; gap:10px; }
    .kpi-card{ padding:16px 18px; display:flex; align-items:center; justify-content:space-between; gap:12px; }
    .kpi-top{ flex-direction:column; align-items:flex-start; gap:8px; order:1; }
    .kpi-icon{ width:36px; height:36px; }
    .kpi-value{ font-size:23px; margin-top:0; order:2; }
    .kpi-label{ margin-top:0; }
    .kpi-note{ margin-top:2px; }

    /* Painéis de duas colunas passam a pilha vertical única (herdado, reforçado aqui) */
    .row-2, .row-2.rev{ grid-template-columns:1fr; gap:10px; }

    /* Notícias: destaque em card cheio, secundárias em pilha (herda .news-grid 1fr) */
    .news-main{ min-height:210px; }
  }.shell-v2 /* ===== AMO ASSIST (assistente flutuante, canto inferior direito) ===== */
  .chat-widget{
    position:fixed; right:22px; bottom:22px; z-index:500;
    display:flex; align-items:flex-end; justify-content:flex-end;
  }.shell-v2 .chat-widget-btn{
    width:58px; height:58px; border-radius:50%; flex-shrink:0;
    background:linear-gradient(135deg, var(--teal) 0%, var(--teal-deep) 100%);
    color:#fff; display:flex; align-items:center; justify-content:center;
    position:relative; cursor:pointer; border:none;
    box-shadow:0 10px 26px rgba(8,42,40,0.4), 0 0 0 1px rgba(224,193,113,0.16);
    transition:transform .2s cubic-bezier(0.4,0,0.2,1), box-shadow .2s ease, background .2s ease;
  }.shell-v2 .chat-widget-btn:hover, .shell-v2 .chat-widget-btn:focus-visible{
    transform:translateY(-3px) scale(1.06);
    box-shadow:0 14px 32px rgba(8,42,40,0.48), 0 0 0 1px rgba(224,193,113,0.32);
    outline:none;
  }.shell-v2 .chat-widget-btn:active{ transform:translateY(-1px) scale(0.98); }.shell-v2 /* Avatar da AMO dentro do botão (mesma imagem do rodapé) */
  .amo-assist-avatar{
    width:52px; height:52px; border-radius:50%;
    background:#F4F1E8; display:flex; align-items:center; justify-content:center;
    overflow:hidden; position:relative; z-index:2;
    box-shadow:0 0 0 2px rgba(255,255,255,0.18);
  }.shell-v2 .amo-assist-avatar img{ width:92%; height:92%; object-fit:contain; display:block; }.shell-v2 /* Selo de "assistente inteligente" sobreposto */
  .amo-assist-spark{
    position:absolute; bottom:1px; right:1px; z-index:3;
    width:19px; height:19px; border-radius:50%;
    background:var(--gold); color:var(--teal-deep);
    display:flex; align-items:center; justify-content:center;
    border:2px solid var(--teal-deep);
    box-shadow:0 1px 4px rgba(0,0,0,0.3);
  }.shell-v2 .amo-assist-spark svg{ width:11px; height:11px; stroke:currentColor; fill:none; stroke-width:2.4; stroke-linecap:round; stroke-linejoin:round; }.shell-v2 /* Anéis de pulsação contínua, um pouco mais rápida */
  .chat-pulse-ring{
    position:absolute; inset:0; border-radius:50%;
    border:2px solid rgba(11,61,58,0.35);
    animation:chatPulse 1.7s cubic-bezier(0.4,0,0.2,1) infinite;
    pointer-events:none;
  }.shell-v2 .chat-pulse-ring.delay{ animation-delay:0.85s; }.shell-v2 @keyframes chatPulse{
    0%{ transform:scale(0.92); opacity:0.55; }
    75%{ opacity:0; }
    100%{ transform:scale(1.65); opacity:0; }
  }.shell-v2 /* Painel "AMO Assist" — abre ao hover (desktop) ou clique (touch) */
  .amo-assist-panel{
    position:absolute; bottom:calc(100% + 14px); right:0; width:284px;
    background:var(--surface); border:1px solid var(--border); border-radius:16px;
    box-shadow:var(--shadow-md); padding:14px;
    opacity:0; transform:translateY(8px) scale(0.98); pointer-events:none; transform-origin:bottom right;
    transition:opacity .18s ease, transform .18s ease;
    z-index:10;
  }.shell-v2 .chat-widget:hover .amo-assist-panel, .shell-v2 .chat-widget.is-open .amo-assist-panel, .shell-v2 .chat-widget-btn:focus-visible ~ .amo-assist-panel{
    opacity:1; transform:translateY(0) scale(1); pointer-events:auto;
  }.shell-v2 .amo-assist-panel-head{ margin-bottom:10px; padding-bottom:10px; border-bottom:1px solid var(--border); display:flex; flex-direction:column; gap:2px; }.shell-v2 .amo-assist-panel-title{ font-family:'Fraunces', serif; font-size:15px; font-weight:700; color:var(--teal-deep); }.shell-v2 .amo-assist-panel-sub{ font-size:12px; color:var(--text-muted); font-weight:600; }.shell-v2 .amo-assist-categories{ display:grid; grid-template-columns:repeat(3,1fr); gap:6px; margin-bottom:10px; }.shell-v2 .amo-assist-cat{
    display:flex; flex-direction:column; align-items:center; gap:5px;
    padding:10px 4px 9px; border-radius:12px; border:1px solid var(--border);
    background:var(--bg); cursor:pointer; font-size:10.5px; font-weight:700;
    text-align:center; color:var(--text-muted); line-height:1.2; transition:.15s ease;
  }.shell-v2 .amo-assist-cat:hover, .shell-v2 .amo-assist-cat:focus-visible{ transform:translateY(-2px); border-color:var(--teal); outline:none; }.shell-v2 .amo-assist-cat-icon{ width:26px; height:26px; border-radius:50%; display:flex; align-items:center; justify-content:center; }.shell-v2 .amo-assist-cat-icon .icon{ width:14px; height:14px; stroke:currentColor; fill:none; stroke-width:2.2; }.shell-v2 .amo-assist-cat[data-cat="msg"] .amo-assist-cat-icon{ background:var(--teal-soft); color:var(--teal); }.shell-v2 .amo-assist-cat[data-cat="ai"] .amo-assist-cat-icon{ background:#FBF0DB; color:var(--gold); }.shell-v2 .amo-assist-cat[data-cat="ai"]{ border-color:var(--gold); }.shell-v2 .amo-assist-cat[data-cat="notice"] .amo-assist-cat-icon{ background:#FDEEE9; color:#C0603F; }.shell-v2 .amo-assist-panel-sub-label{ font-size:10px; text-transform:uppercase; letter-spacing:0.6px; color:var(--text-faint); font-weight:700; margin:2px 2px 6px; }.shell-v2 .amo-chat-status{ align-self:flex-start; font-size:11px; color:var(--text-faint); font-style:italic; padding:2px 4px; display:flex; align-items:center; gap:5px; }.shell-v2 .amo-chat-status .icon{ width:11px; height:11px; stroke:currentColor; fill:none; stroke-width:2.2; animation:amoStatusSpin 1.1s linear infinite; }.shell-v2 @keyframes amoStatusSpin{ to{ transform:rotate(360deg); } }.shell-v2 .amo-assist-panel-list{ display:flex; flex-direction:column; gap:3px; }.shell-v2 .amo-assist-opt{
    display:flex; align-items:center; gap:9px; width:100%;
    background:none; border:none; text-align:left; cursor:pointer;
    font-family:inherit; font-size:12.5px; font-weight:600; color:var(--text);
    padding:8px 9px; border-radius:9px; transition:background .15s ease, color .15s ease, transform .15s ease;
  }.shell-v2 .amo-assist-opt .icon{ width:16px; height:16px; color:var(--teal); flex-shrink:0; stroke:currentColor; fill:none; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }.shell-v2 .amo-assist-opt:hover, .shell-v2 .amo-assist-opt:focus-visible{ background:var(--bg); color:var(--teal-deep); transform:translateX(2px); outline:none; }.shell-v2 .amo-assist-opt:hover .icon, .shell-v2 .amo-assist-opt:focus-visible .icon{ color:var(--gold); }.shell-v2 /* Vista de conversa com a IA — inline, dentro do próprio flutuante */
  .amo-assist-panel [hidden]{ display:none !important; }.shell-v2 .amo-assist-view-chat{ display:flex; flex-direction:column; height:360px; }.shell-v2 .amo-assist-chat-head{ display:flex; align-items:center; gap:8px; padding-bottom:10px; border-bottom:1px solid var(--border); margin-bottom:8px; flex-shrink:0; }.shell-v2 .amo-assist-chat-new{
    margin-left:auto; width:22px; height:22px; border-radius:50%; border:none; cursor:pointer;
    background:transparent; color:var(--text-faint); display:flex; align-items:center; justify-content:center;
    transition:background .18s ease, color .18s ease;
  }.shell-v2 .amo-assist-chat-new:hover{ background:var(--teal-soft); color:var(--teal); }.shell-v2 .amo-assist-chat-new .icon{ width:13px; height:13px; stroke:currentColor; fill:none; stroke-width:2.2; stroke-linecap:round; }.shell-v2 .amo-assist-chat-back{
    width:26px; height:26px; border-radius:50%; flex-shrink:0;
    display:flex; align-items:center; justify-content:center;
    background:var(--bg); border:1px solid var(--border); color:var(--text-muted); cursor:pointer;
    transition:background .15s ease, color .15s ease;
  }.shell-v2 .amo-assist-chat-back:hover{ background:var(--teal-soft); color:var(--teal); }.shell-v2 .amo-assist-chat-back .icon{ width:13px; height:13px; transform:rotate(90deg); }.shell-v2 .amo-assist-chat-head-info{ display:flex; flex-direction:column; gap:1px; }.shell-v2 .amo-assist-chat-title{ font-family:'Fraunces', serif; font-weight:700; font-size:14px; color:var(--teal-deep); }.shell-v2 .amo-assist-chat-status{ font-size:10.5px; color:#3E9E6D; font-weight:700; display:flex; align-items:center; gap:4px; }.shell-v2 .amo-assist-chat-status::before{ content:''; width:6px; height:6px; border-radius:50%; background:#5FCB94; display:inline-block; }.shell-v2 .amo-assist-chat-thread{ flex:1; overflow-y:auto; display:flex; flex-direction:column; gap:8px; padding:2px 2px 8px; }.shell-v2 .amo-chat-msg{ max-width:85%; font-size:12px; line-height:1.45; padding:8px 11px; border-radius:12px; white-space:pre-line; }.shell-v2 .amo-chat-msg.from-ai{ align-self:flex-start; background:var(--bg); border:1px solid var(--border); color:var(--text); border-bottom-left-radius:4px; }.shell-v2 .amo-chat-msg.from-user{ align-self:flex-end; background:var(--teal); color:#fff; border-bottom-right-radius:4px; }.shell-v2 .amo-chat-typing{ align-self:flex-start; display:flex; gap:3px; padding:10px 12px; background:var(--bg); border:1px solid var(--border); border-radius:12px; border-bottom-left-radius:4px; }.shell-v2 .amo-chat-typing span{ width:5px; height:5px; border-radius:50%; background:var(--text-faint); display:inline-block; animation:amoTypingDot 1.1s infinite ease-in-out; }.shell-v2 .amo-chat-typing span:nth-child(2){ animation-delay:.15s; }.shell-v2 .amo-chat-typing span:nth-child(3){ animation-delay:.3s; }.shell-v2 @keyframes amoTypingDot{ 0%,60%,100%{ transform:translateY(0); opacity:.4; } 30%{ transform:translateY(-3px); opacity:1; } }.shell-v2 .amo-assist-chat-input-row{ display:flex; align-items:center; gap:6px; border-top:1px solid var(--border); padding-top:8px; flex-shrink:0; }.shell-v2 .amo-assist-chat-input-row input{
    flex:1; border:1px solid var(--border); background:var(--bg); border-radius:20px;
    padding:8px 12px; font-size:12px; font-family:inherit; color:var(--text); outline:none;
    transition:border-color .15s ease;
  }.shell-v2 .amo-assist-chat-input-row input:focus{ border-color:var(--teal); }.shell-v2 .amo-assist-chat-send{
    width:32px; height:32px; border-radius:50%; flex-shrink:0;
    background:var(--teal); color:#fff; border:none; cursor:pointer;
    display:flex; align-items:center; justify-content:center;
    transition:background .15s ease, transform .15s ease;
  }.shell-v2 .amo-assist-chat-send:hover{ background:var(--teal-deep); transform:scale(1.06); }.shell-v2 .amo-assist-chat-send svg{ width:14px; height:14px; stroke:currentColor; fill:none; stroke-width:2.2; stroke-linecap:round; stroke-linejoin:round; }.shell-v2 /* Destaque temporário no conteúdo apontado pelo assistente */
  .amo-focus-flash{ animation:amoFocusFlash 1.8s ease; border-radius:16px; }.shell-v2 @keyframes amoFocusFlash{
    0%{ box-shadow:0 0 0 0 rgba(224,193,113,0); }
    15%{ box-shadow:0 0 0 4px rgba(224,193,113,0.55); }
    100%{ box-shadow:0 0 0 0 rgba(224,193,113,0); }
  }.shell-v2 @media (max-width:880px){
    .chat-widget{ right:14px; left:auto; bottom:88px; }
    .amo-assist-panel{ width:250px; }
  }.shell-v2 /* Respeita a preferência do sistema por menos movimento — desativa loops contínuos */
  @media (prefers-reduced-motion: reduce){
    *, *::before, *::after{
      animation-duration: 0.001ms !important;
      animation-iteration-count: 1 !important;
      transition-duration: 0.001ms !important;
      scroll-behavior: auto !important;
    }
  }.shell-v2 /* ===== TOAST (feedback de ações sem backend) ===== */
  .toast-stack{
    position:fixed; right:20px; bottom:20px; z-index:900;
    display:flex; flex-direction:column-reverse; gap:10px;
    pointer-events:none;
  }.shell-v2 .toast{
    display:flex; align-items:center; gap:10px;
    background:var(--teal-deep); color:#fff;
    padding:12px 16px; border-radius:var(--radius-md);
    box-shadow:var(--shadow-md);
    font-size:12.5px; font-weight:600;
    min-width:220px; max-width:340px;
    border:1px solid rgba(180,145,74,0.35);
    opacity:0; transform:translateY(8px) scale(0.98);
    transition:opacity 0.22s ease, transform 0.22s cubic-bezier(0.4,0,0.2,1);
    pointer-events:auto;
  }.shell-v2 .toast.is-visible{ opacity:1; transform:translateY(0) scale(1); }.shell-v2 .toast-icon{
    width:22px; height:22px; border-radius:50%; flex-shrink:0;
    display:flex; align-items:center; justify-content:center;
    background:var(--gold-metal); color:var(--teal-deep);
  }.shell-v2 .toast-icon svg{ width:13px; height:13px; }.shell-v2 .toast-text{ line-height:1.4; }.shell-v2 @media (max-width:640px){
    .toast-stack{ left:16px; right:16px; bottom:76px; }
    .toast{ max-width:none; }
  }