/* ======================================================================
   PAINEIS — Agenda, Financas e Documentos na linguagem da Noite.

   Paineis sao lidos, nao contemplados: o ceu fica mais escuro atras deles
   (modo 'lendo') e as superficies sao laminas quase opacas, sem desfoque —
   varios cartoes com backdrop-filter sobre um canvas animado custariam
   quadros no celular. O movimento aqui e de dado: barras que crescem,
   colunas que sobem, o dia de hoje que brilha.
   ====================================================================== */

/* ------------------------------------------------------------ comum */
.cal-titulo,.fin-mes h2,#documentos > h3{font-family:var(--f-titulo);font-weight:400;letter-spacing:-.015em;
    font-size:clamp(2rem,3.4vw,2.7rem);line-height:1.05;
    background:linear-gradient(180deg,#fbf7ee 25%,#d6c29c 120%);-webkit-background-clip:text;background-clip:text;color:transparent}
.cal-nav,.cal-vistas,.fin-mes-nav,.fin-segs{background:rgba(5,8,11,.42);border:1px solid var(--fio);border-radius:999px;
    box-shadow:inset 0 1px 2px rgba(0,0,0,.35)}
.cal-nav button,.cal-vistas button,.fin-nav,.fin-seg{color:var(--texto-3);transition:color .3s var(--suave),background .3s var(--suave)}
.cal-nav button:hover,.fin-nav:hover,.cal-vistas button:hover,.fin-seg:hover{background:rgba(236,231,218,.06);color:var(--pergaminho)}
.cal-vistas button.ativo,.fin-seg.ativo{color:var(--pergaminho);
    background:linear-gradient(180deg,rgba(209,171,116,.24),rgba(176,141,87,.1));
    box-shadow:inset 0 0 0 1px rgba(209,171,116,.38),0 0 22px -8px rgba(209,171,116,.55)}

.fin-card,.card,.vazio-bloco,.cal-det,.cal-dia-lista,.cal-dia-vazio{
    background:var(--lamina);border:1px solid var(--vidro-borda);border-radius:22px;
    box-shadow:var(--vidro-brilho),0 30px 70px -40px rgba(0,0,0,.95)}

.fin-btn{background:rgba(236,231,218,.04);border-color:var(--fio-forte);color:var(--pergaminho);height:38px}
.fin-btn:hover{border-color:var(--fio-ouro);color:var(--ouro-luz);background:rgba(209,171,116,.08)}
.fin-primario,.fin-primario:hover,.cal-det-acoes .cal-primario,.cal-det-acoes .cal-primario:hover{
    color:#0b1117;border-color:transparent;background:linear-gradient(180deg,#ecca95,#b08d57);
    box-shadow:0 0 28px -8px rgba(209,171,116,.65),inset 0 1px 0 rgba(255,255,255,.35)}
.fin-primario:hover,.cal-det-acoes .cal-primario:hover{filter:brightness(1.07)}
.fin-primario .fin-ic,.fin-primario:hover .fin-ic{color:#0b1117}

@keyframes crescerX{from{transform:scaleX(0)}to{transform:none}}
@keyframes crescerY{from{transform:scaleY(0)}to{transform:none}}
@keyframes surgePainel{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}

/* ------------------------------------------------------------ agenda */
.cal-semana span{color:var(--texto-3);font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;font-weight:600}
.cal-grade,.cal-sem{background:var(--fio);border:1px solid var(--vidro-borda);border-radius:24px;
    box-shadow:var(--vidro-brilho),0 40px 90px -50px rgba(0,0,0,1)}
.cal-dia,.cal-sem-col{background:rgba(9,14,19,.7);transition:background .35s var(--suave)}
.cal-dia:hover,.cal-sem-col:hover{background:rgba(16,24,31,.78)}
.cal-dia.fora{background:rgba(5,8,11,.74)}
.cal-num{color:var(--texto-2)}
.cal-dia.hoje,.cal-sem-col.hoje{background:linear-gradient(180deg,rgba(209,171,116,.13),rgba(9,14,19,.72) 70%)}
.cal-dia.hoje .cal-num,.cal-sem-col.hoje .cal-sem-cab b{background:linear-gradient(180deg,#f0d3a0,#b08d57);color:#0b1117;
    box-shadow:0 0 20px -2px rgba(209,171,116,.75)}
.cal-ev{border-radius:8px;transition:background .3s var(--suave),transform .3s var(--suave)}
.cal-ev:hover{transform:translateY(-1px)}
.cal-ev::before{box-shadow:0 0 8px 0 var(--cor)}
.cal-item{border-radius:12px}
.cal-item .h::before{box-shadow:0 0 8px 0 var(--cor)}
.cal-det{animation:surgePainel .55s var(--suave);position:relative;overflow:hidden}
.cal-det::after{content:'';position:absolute;left:0;right:0;top:0;height:1px;
    background:linear-gradient(90deg,transparent,rgba(209,171,116,.55),transparent)}
.cal-det-cab b{font-family:var(--f-titulo);font-weight:400;font-size:1.6rem;letter-spacing:-.01em}
.cal-det-ponto{box-shadow:0 0 12px 1px var(--cor)}
.cal-det dt{color:var(--texto-3);letter-spacing:.12em;text-transform:uppercase;font-size:.64rem;font-weight:600}
.cal-det-acoes{border-top-color:var(--fio)}
.cal-det-acoes button{border-color:var(--fio-forte);background:rgba(236,231,218,.04)}
#agenda > h3{font-family:var(--f-titulo);font-weight:400;font-size:1.7rem;letter-spacing:-.01em;margin-top:44px}
.mes-divisor h3{color:var(--texto-3);letter-spacing:.14em;text-transform:uppercase;font-size:.7rem}
.card{border-radius:18px;transition:border-color .35s var(--suave),transform .45s var(--suave),box-shadow .45s var(--suave)}
.card:hover{border-color:var(--fio-ouro);transform:translateY(-2px);box-shadow:var(--vidro-brilho),0 26px 60px -34px rgba(0,0,0,1),0 0 40px -22px rgba(209,171,116,.5)}
.card-ponto{box-shadow:0 0 10px 1px var(--cor,var(--ouro))}
.card button{border-color:var(--fio-forte);background:rgba(236,231,218,.03)}
.vazio-bloco{padding:40px 24px;position:relative}
.vazio-bloco::before{content:'';width:10px;height:10px;border-radius:50%;margin-bottom:10px;
    background:radial-gradient(circle,#fff3d6 0 15%,rgba(209,171,116,.55) 35%,transparent 70%);
    box-shadow:0 0 18px 4px rgba(209,171,116,.25);animation:cintila 4s ease-in-out infinite}
.vazio-bloco b{font-family:var(--f-titulo);font-weight:400;font-size:1.45rem;letter-spacing:-.01em}

/* ------------------------------------------------------------ financas */
.fin-card{border-radius:22px;animation:surgePainel .7s var(--suave) both}
.fin-duplo > .fin-card:nth-child(2),.fin-graficos > .fin-card:nth-child(2){animation-delay:.08s}
.fin-card h3{color:var(--pergaminho);font-weight:600;letter-spacing:-.01em}
.fin-contador{background:rgba(209,171,116,.14);color:var(--ouro-luz)}
.fin-card.fin-resumo{position:relative;overflow:hidden;
    background:radial-gradient(70% 140% at 100% 0%,rgba(209,171,116,.14),transparent 60%),var(--lamina)}
.fin-grupo + .fin-grupo{border-color:var(--fio)}
.fin-grupo h3{color:var(--texto-3);letter-spacing:.16em;text-transform:uppercase;font-size:.66rem;font-weight:600}
.fin-kpi-rot{color:var(--texto-2)}
.fin-valor{font-variant-numeric:tabular-nums;letter-spacing:-.02em;font-weight:600}
.fin-kpi-total{border-color:var(--fio)}
.fin-kpi-total .fin-valor{font-size:2.1rem;font-weight:500;letter-spacing:-.035em;
    background:linear-gradient(180deg,#fbf7ee 20%,#e0c89c 130%);-webkit-background-clip:text;background-clip:text;color:transparent}
.fin-kpi-total .fin-valor.neg{background:none;color:var(--critico)}
.fin-dre-total .fin-valor{font-size:1.8rem;font-weight:500;letter-spacing:-.03em;
    background:linear-gradient(180deg,#f6dcaa,#b08d57);-webkit-background-clip:text;background-clip:text;color:transparent}
.fin-dre-total .fin-valor.neg{background:none;color:var(--critico)}
.fin-dre-sub,.fin-dre-total{border-color:var(--fio)}
.fin-alerta{border-color:var(--fio)}
.fin-alerta-ic{box-shadow:0 0 22px -6px rgba(250,178,25,.55)}
.fin-alerta.critico .fin-alerta-ic{box-shadow:0 0 22px -6px rgba(224,82,79,.65)}
.fin-link{color:var(--ouro-luz)}

.fin-barra-linha:hover,.fin-barra-linha:focus-visible{background:rgba(236,231,218,.04)}
.fin-barra-trilho{background:rgba(57,135,229,.1)}
.fin-barra{background:linear-gradient(90deg,#2f6fc4,#5aa2ff);box-shadow:0 0 16px -4px rgba(90,162,255,.55);
    transform-origin:left;animation:crescerX 1s var(--suave) both}
.fin-barra-linha:nth-child(2) .fin-barra{animation-delay:.05s}
.fin-barra-linha:nth-child(3) .fin-barra{animation-delay:.1s}
.fin-barra-linha:nth-child(4) .fin-barra{animation-delay:.15s}
.fin-barra-linha:nth-child(5) .fin-barra{animation-delay:.2s}
.fin-barra-linha:nth-child(6) .fin-barra{animation-delay:.25s}
.fin-barra-linha:nth-child(n+7) .fin-barra{animation-delay:.3s}
.fin-svg path{transform-box:fill-box;transform-origin:50% 100%;animation:crescerY 1.1s var(--suave) both}
.fin-svg path:nth-of-type(n+3){animation-delay:.06s}
.fin-svg path:nth-of-type(n+5){animation-delay:.12s}
.fin-svg path:nth-of-type(n+7){animation-delay:.18s}
.fin-svg path:nth-of-type(n+9){animation-delay:.24s}
.fin-svg path:nth-of-type(n+11){animation-delay:.3s}
.fin-grade{stroke:rgba(236,231,218,.07)}
.fin-eixo{fill:var(--texto-3)}
.fin-eixo-atual{fill:var(--ouro-luz)}
.fin-tip{background:var(--vidro-forte);-webkit-backdrop-filter:var(--desfoque);backdrop-filter:var(--desfoque);
    border-color:var(--vidro-borda);border-radius:14px}
.fin-trilho{background:rgba(236,231,218,.07)}
.fin-trilho span{transform-origin:left;animation:crescerX 1.1s var(--suave) both;
    background:linear-gradient(90deg,#9c7a45,#e2c28e);box-shadow:0 0 14px -3px rgba(209,171,116,.6)}
.fin-trilho.atencao span{background:linear-gradient(90deg,#c98d12,#fbc34a);box-shadow:0 0 14px -3px rgba(250,178,25,.6)}
.fin-trilho.critico span{background:linear-gradient(90deg,#b23d3a,#f06b67);box-shadow:0 0 14px -3px rgba(224,82,79,.65)}

.fin-tabela th{color:var(--texto-3);letter-spacing:.12em;text-transform:uppercase;font-size:.64rem;font-weight:600;border-bottom-color:var(--fio)}
.fin-tabela td{border-bottom-color:var(--fio)}
.fin-tabela tbody tr:hover{background:rgba(209,171,116,.04)}
.fin-tabela input:focus,.fin-tabela select:focus{background-color:rgba(4,7,10,.55);border-color:var(--ouro)}
.fin-tabela select option{background:#0f171e}
.fin-status.pendente{box-shadow:inset 0 0 0 1px rgba(250,178,25,.25)}
.fin-status.pago{box-shadow:inset 0 0 0 1px rgba(95,152,115,.3)}
.fin-form{border-color:var(--fio-ouro)}
.fin-campos input,.fin-campos select,.fin-form-fixa input,.fin-form-fixa select{background:rgba(4,7,10,.45);border-color:var(--fio-forte);border-radius:12px}
.fin-seg-grupo{background:rgba(5,8,11,.42);border-color:var(--fio)}
.fin-seg-grupo input:checked + span{background:linear-gradient(180deg,rgba(209,171,116,.24),rgba(176,141,87,.1));
    box-shadow:inset 0 0 0 1px rgba(209,171,116,.38)}
.fin-fixa{border-color:var(--fio)}
.fin-fixas{border-color:var(--fio)}
.fin-fixa-dia{background:linear-gradient(180deg,rgba(209,171,116,.16),rgba(176,141,87,.05));box-shadow:inset 0 0 0 1px rgba(209,171,116,.22)}
.fin-reserva{background:rgba(236,231,218,.03);border:1px solid var(--fio);border-radius:16px}
.fin-boas-vindas{background:radial-gradient(60% 120% at 0% 0%,rgba(209,171,116,.14),transparent 60%),var(--lamina)}
.fin-boas-vindas h3{font-size:2.2rem}
.fin-esq{background:linear-gradient(90deg,rgba(15,23,30,.7) 0%,rgba(30,44,56,.7) 50%,rgba(15,23,30,.7) 100%);
    background-size:200% 100%;border-color:var(--fio)}

/* ------------------------------------------------------------ documentos */
.doc-envio{background:radial-gradient(360px circle at var(--mx,20%) var(--my,50%),rgba(209,171,116,.14),transparent 65%),var(--lamina);
    border:1px dashed rgba(209,171,116,.35);border-radius:22px;padding:22px 24px}
.doc-envio:hover,.doc-envio:focus-within{border-color:rgba(209,171,116,.7);box-shadow:0 0 50px -20px rgba(209,171,116,.55)}
.doc-envio-ic{background:linear-gradient(180deg,rgba(209,171,116,.3),rgba(176,141,87,.1));color:var(--ouro-luz);
    box-shadow:0 0 24px -6px rgba(209,171,116,.55)}
.doc-envio-txt b{font-size:1.02rem}
.doc-ic{background:rgba(209,171,116,.1);color:var(--ouro-luz)}

@media (max-width:700px){
  .fin-kpi-total .fin-valor{font-size:1.7rem}
  .cal-grade,.cal-sem{border-radius:18px}
  .cal-titulo,.fin-mes h2{font-size:1.75rem}
}
html.sem-animacao .fin-card,html.sem-animacao .fin-barra,html.sem-animacao .fin-svg path,html.sem-animacao .fin-trilho span,html.sem-animacao .cal-det,html.sem-animacao .vazio-bloco::before{animation:none}

/* ------------------------------------------------------------ bolha que amplia
   Tocar num compromisso nao manda mais o olho para um painel no pe da tela: o
   detalhe cresce a partir da propria bolha. No mes o toque amplia para a
   semana; na semana, de novo, leva ao dia com a edicao ja aberta. */
.cal-item-cx{position:relative;min-width:0}
.cal-sem-col.aberta{z-index:5}
.cal-item.aberto{box-shadow:inset 0 0 0 1px var(--cor),0 0 26px -10px var(--cor)}
.cal-det{transform-origin:top left;animation:ampliarBolha .45s var(--suave)}
.cal-det-bolha{position:absolute;left:0;top:calc(100% + 8px);z-index:6;
    width:min(430px,calc(100vw - 40px));background:var(--vidro-forte);
    -webkit-backdrop-filter:var(--desfoque);backdrop-filter:var(--desfoque);
    box-shadow:var(--vidro-brilho),0 50px 110px -34px rgba(0,0,0,1)}
.cal-sem-col:nth-child(n+5) .cal-det-bolha{left:auto;right:0;transform-origin:top right}
@keyframes ampliarBolha{from{opacity:0;transform:scale(.88) translateY(-10px)}to{opacity:1;transform:none}}
#calendario.cal-ampliando .cal-sem,#calendario.cal-ampliando .cal-dia-lista{animation:ampliarVista .55s var(--suave)}
@keyframes ampliarVista{from{opacity:0;transform:scale(.965)}to{opacity:1;transform:none}}
.cal-det-cab{position:relative;padding-right:34px}
.cal-det-fechar{position:absolute;top:-4px;right:-4px;width:30px;height:30px;border-radius:50%;
    background:transparent;border:1px solid var(--fio);color:var(--texto-3);cursor:pointer;
    display:inline-flex;align-items:center;justify-content:center;transition:color .2s,border-color .2s,background .2s}
.cal-det-fechar:hover{color:var(--pergaminho);border-color:var(--border);background:rgba(236,231,218,.06)}

/* edicao dentro da bolha */
.cal-edicao{display:flex;flex-wrap:wrap;gap:10px;margin-top:4px}
.cal-edicao label{display:flex;flex-direction:column;gap:5px;flex:1 1 150px;min-width:0}
.cal-edicao .cal-edicao-largo{flex:1 1 100%}
.cal-edicao-par{display:flex;gap:10px;flex:1 1 100%}
.cal-edicao span{font-size:.64rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--texto-3)}
.cal-edicao input,.cal-edicao textarea{background:rgba(4,7,10,.5);border:1px solid var(--fio-forte);border-radius:10px;
    color:var(--pergaminho);font:inherit;font-size:.88rem;padding:9px 11px;color-scheme:dark;min-width:0;width:100%;
    transition:border-color .2s,box-shadow .2s}
.cal-edicao textarea{resize:vertical;line-height:1.5}
.cal-edicao input:focus,.cal-edicao textarea:focus{outline:none;border-color:var(--ouro);box-shadow:0 0 0 3px rgba(176,141,87,.14)}
.cal-edicao-acoes{display:flex;justify-content:flex-end;gap:8px;flex:1 1 100%;margin-top:2px}
.cal-edicao-acoes button{height:36px;padding:0 16px;border-radius:999px;font:inherit;font-size:.82rem;cursor:pointer;
    background:rgba(236,231,218,.04);border:1px solid var(--fio-forte);color:var(--pergaminho)}
.cal-edicao-acoes .cal-primario{border-color:transparent;color:#0b1117;font-weight:600;
    background:linear-gradient(180deg,#ecca95,#b08d57);box-shadow:0 0 28px -8px rgba(209,171,116,.65)}
.cal-edicao-acoes button:disabled{opacity:.6;cursor:wait}

/* seletor de mes das Financas: as setas abracam o mes */
.fin-mes{gap:4px}
.fin-mes .fin-nav{width:36px;height:36px;padding:0;background:rgba(5,8,11,.42);border:1px solid var(--fio);border-radius:999px}
.fin-mes h2{margin:0 8px;text-align:center}
.fin-volta-mes{padding:0 0 0 12px;align-self:center}

@media (max-width:700px){
  .cal-det-bolha{position:static;width:auto;margin-top:8px;
    -webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:var(--vidro-brilho),0 30px 70px -40px rgba(0,0,0,.95)}
  .cal-edicao-par{flex-wrap:wrap}
  .fin-mes h2{margin:0 4px}
}
html.sem-animacao .cal-det,html.sem-animacao #calendario.cal-ampliando .cal-sem,html.sem-animacao #calendario.cal-ampliando .cal-dia-lista{animation:none}

/* Com a bolha aberta a grade precisa deixar o cartao passar: ele e mais alto
   que a faixa da semana, e o corte deixava o compromisso pela metade. */
.cal-sem.com-bolha{overflow:visible}

/* ------------------------------------------------------------ agenda tatil */
/* A grade e uma lamina de vidro num espaco com perspectiva: arrastar para o
   lado vira a pagina (translate + rotateY), o mouse inclina um grau, e o
   compromisso levantado vira uma gema que segue o dedo. So transformacoes. */
.cal-tatil{perspective:1600px;perspective-origin:50% 40%}
.cal-tatil .cal-grade,.cal-tatil .cal-sem,.cal-tatil .cal-dia-lista,.cal-tatil .cal-dia-vazio{
    touch-action:pan-y;transform-style:preserve-3d;backface-visibility:hidden;transform-origin:50% 50%}
.cal-lamina-viva{will-change:transform,opacity;transition:none!important}
.cal-tatil .cal-ev,.cal-tatil .cal-item{touch-action:pan-y;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.cal-ev-levantado{opacity:.28!important;filter:saturate(.4)}
.cal-remarcando .cal-dia,.cal-remarcando .cal-sem-col{transition:background .18s var(--suave),box-shadow .18s var(--suave)}
.cal-alvo{background:linear-gradient(180deg,rgba(209,171,116,.22),rgba(209,171,116,.08))!important;
    box-shadow:inset 0 0 0 1px rgba(209,171,116,.55),inset 0 0 30px -10px rgba(209,171,116,.6)}
.cal-gema{position:fixed;z-index:120;pointer-events:none;display:flex;align-items:center;gap:7px;
    padding:6px 10px;border-radius:10px;box-sizing:border-box;min-width:0;max-width:260px;
    font-size:.78rem;line-height:1.3;color:var(--pergaminho);
    background:linear-gradient(180deg,color-mix(in srgb,var(--cor) 38%,#0b1117),color-mix(in srgb,var(--cor) 18%,#0b1117));
    border:1px solid color-mix(in srgb,var(--cor) 55%,transparent);
    box-shadow:0 18px 40px -12px rgba(0,0,0,.85),0 0 0 1px rgba(0,0,0,.4),0 0 32px -8px var(--cor);
    transform-origin:50% 50%;will-change:transform;opacity:0;transition:opacity .14s}
.cal-gema.viva{opacity:1}
.cal-gema .h{flex:0 0 auto;color:var(--texto-2);font-variant-numeric:tabular-nums}
.cal-gema .t{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cal-gema-ponto,.cal-ev::before,.cal-item .h::before{
    background:radial-gradient(circle at 35% 30%,#fff 0,color-mix(in srgb,var(--cor) 70%,#fff) 18%,var(--cor) 45%,color-mix(in srgb,var(--cor) 45%,#000) 100%)!important;
    box-shadow:0 0 8px -1px var(--cor),inset 0 -1px 1px rgba(0,0,0,.35)}
.cal-gema-ponto{flex:0 0 auto;width:8px;height:8px;border-radius:50%}
html.sem-animacao .cal-tatil{perspective:none}
html.sem-animacao .cal-gema{transition:none}

/* ------------------------------------------------------------ financas 3D */
.fin-serie-cx{position:relative;min-height:190px}
.fin-serie-cx.fin-3d .fin-svg{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);opacity:0;pointer-events:none}
.fin3d{display:block;width:100%;height:220px;touch-action:pan-y;cursor:crosshair;border-radius:14px;
    background:radial-gradient(120% 90% at 50% 100%,rgba(209,171,116,.06),transparent 60%)}
.fin3d-rotulos{position:absolute;inset:0;pointer-events:none;overflow:hidden;font-family:'Geist',system-ui,sans-serif}
.fin3d-rotulos > span{position:absolute;left:0;top:0;white-space:nowrap;font-size:.7rem;color:var(--texto-3);
    font-variant-numeric:tabular-nums;letter-spacing:.02em;will-change:transform}
.fin3d-mes.atual{color:var(--ouro-luz);font-weight:600}
.fin3d-nivel{font-size:.64rem;opacity:.8}
.fin3d-dica{position:absolute;left:0;top:0;transform:translate(-50%,-100%);display:flex;flex-direction:column;gap:2px;
    padding:7px 10px;border-radius:10px;background:rgba(8,12,17,.92);border:1px solid var(--fio-forte);
    box-shadow:0 14px 30px -12px rgba(0,0,0,.9);white-space:nowrap;font-size:.74rem;color:var(--pergaminho);will-change:transform}
.fin3d-dica b{font-weight:600;color:var(--texto-2);font-size:.66rem;letter-spacing:.06em;text-transform:uppercase}
.fin3d-dica span{font-size:.92rem;font-weight:600;font-variant-numeric:tabular-nums}

/* Gemas da agenda externa (Google/.ics) sao foscas, sem relevo: so leitura. */
.cal-ev[data-id^="-"]::before,.cal-item[data-id^="-"] .h::before{background:var(--cor)!important;box-shadow:none;opacity:.75}

/* Os KPIs do mes em placas de metal escovado: um fio de luz no topo e uma
   escova horizontal quase invisivel. Os numeros continuam tabulares. */
.fin-card.fin-resumo{background-image:
    repeating-linear-gradient(90deg,rgba(255,255,255,.013) 0 1px,transparent 1px 3px),
    linear-gradient(180deg,rgba(236,231,218,.06),rgba(236,231,218,0) 38%),
    linear-gradient(180deg,var(--lamina),var(--lamina))}
.fin-kpi-total .fin-valor{background:linear-gradient(180deg,#fbf7ee 20%,#d6c29c 120%);-webkit-background-clip:text;background-clip:text;color:transparent}
.fin-kpi-total .fin-valor.neg{background:linear-gradient(180deg,#ffb4b1,#e0524f);-webkit-background-clip:text;background-clip:text;color:transparent}

/* ------------------------------------------------------------ casa */
.casa-conectar{display:flex;flex-direction:column;gap:8px;margin:6px 0 4px}
.casa-conectar input{background:rgba(4,7,10,.5);border:1px solid var(--fio-forte);border-radius:10px;color:var(--pergaminho);
    font:inherit;font-size:.86rem;padding:9px 12px;min-width:0}
.casa-conectar input:focus{outline:none;border-color:var(--ouro);box-shadow:0 0 0 3px rgba(176,141,87,.18)}
.casa-conectar .fin-btn{align-self:flex-start}
.casa-status{font-size:.82rem;color:var(--texto-2);margin:6px 0 10px;overflow-wrap:anywhere}
.casa-status b{color:var(--pergaminho);font-weight:550}
.casa-erro{color:var(--fin-critico)}
.casa-lista{display:flex;flex-direction:column;gap:6px;max-height:320px;overflow:auto;padding-right:4px}
.casa-ent{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;padding:8px 10px;border-radius:12px;
    background:rgba(9,14,19,.6);border:1px solid var(--fio);cursor:pointer;transition:border-color .25s var(--suave),background .25s var(--suave)}
.casa-ent.permitida{border-color:var(--fin-ouro,rgba(209,171,116,.32));background:rgba(209,171,116,.06)}
.casa-ent-nome{display:flex;flex-direction:column;gap:2px;min-width:0}
.casa-ent-nome b{font-weight:550;font-size:.86rem;color:var(--pergaminho);overflow-wrap:anywhere}
.casa-ent-nome small{font-size:.72rem;color:var(--texto-3);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.casa-auto{display:flex;align-items:center;gap:6px;font-size:.72rem;color:var(--texto-2);white-space:nowrap;text-transform:none;letter-spacing:0;margin:0}
.casa-acoes{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 6px}
.casa-detalhe{margin-top:8px}
.casa-detalhe summary{cursor:pointer;font-size:.82rem;color:var(--ouro-claro);padding:6px 0}
.casa-pre{font-size:.68rem;line-height:1.45;background:rgba(4,7,10,.6);border:1px solid var(--fio);border-radius:10px;padding:10px;
    overflow:auto;max-height:280px;color:var(--texto-2);white-space:pre;-webkit-user-select:all;user-select:all}
.casa-ledger{display:flex;flex-direction:column;gap:4px;font-size:.76rem;max-height:220px;overflow:auto}
.casa-ledger-linha{display:grid;grid-template-columns:auto 1fr;gap:2px 10px;padding:6px 0;border-top:1px solid var(--fio)}
.casa-ledger-linha span:first-child{color:var(--texto-3);font-variant-numeric:tabular-nums}
.casa-ledger-linha small{grid-column:2;color:var(--texto-3)}
.casa-ledger-linha.recusado span:nth-child(2){color:var(--fin-critico)}
@media (max-width:640px){ .casa-ent{grid-template-columns:auto 1fr;} .casa-auto{grid-column:2} }

/* ============================================================ financas vivas
   Tudo daqui para baixo e ACRESCIMO: anel 3D das categorias, odometro dos
   KPIs, pele "terminal" e os acabamentos da planilha. Movimento so com
   transform/opacity; com html.sem-animacao (noite.css) tudo vira corte seco. */

/* ------------------------------------------------------------ anel 3D das categorias
   A lista de barras continua no HTML: e ela que aparece sem WebGL, com as
   animacoes desligadas ou se o 3D falhar. Com o anel ligado quem fala com o
   leitor de tela e a legenda (botoes com nome, valor e porcentagem). */
.fin-cat-anel .fin-barras{display:none}
.fin-vista{flex:0 0 auto}
.fin-anel-cx{min-height:300px}                     /* guarda o lugar enquanto o modulo chega */
.fin-anel-cx.fin-anel-vivo{min-height:0}
.fin-anel-palco{position:relative;touch-action:pan-y;cursor:grab;-webkit-user-select:none;user-select:none;
    -webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}
.fin-anel-palco.sobre{cursor:pointer}
.fin-anel-palco.arrastando{cursor:grabbing}
.fin-anel3d{display:block;width:100%;height:260px;border-radius:14px;
    background:radial-gradient(60% 60% at 50% 55%,rgba(209,171,116,.07),transparent 70%)}
.fin-anel-centro{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;
    display:flex;flex-direction:column;align-items:center;gap:2px;text-align:center;max-width:150px;
    font-family:'Geist',system-ui,sans-serif;line-height:1.15}
.fin-anel-centro small{font-size:.62rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--texto-3);
    overflow-wrap:anywhere}
.fin-anel-centro b{font-size:.98rem;font-weight:600;color:var(--pergaminho);font-variant-numeric:tabular-nums;
    letter-spacing:-.02em;white-space:nowrap}
.fin-anel-centro span{font-size:.7rem;color:var(--texto-3);font-variant-numeric:tabular-nums}
.fin-anel-centro.aceso small{color:var(--texto-2)}
.fin-anel-centro.aceso b{font-size:1.08rem}
.fin-anel-centro.aceso span{font-size:.84rem;font-weight:600;color:var(--ouro-luz)}
.fin-anel-legenda{list-style:none;margin:10px 0 0;padding:0;display:grid;
    grid-template-columns:repeat(auto-fill,minmax(min(100%,220px),1fr));gap:2px 14px}
.fin-anel-item{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:8px;width:100%;
    min-height:36px;padding:6px 8px;border:0;border-radius:9px;background:transparent;color:var(--pergaminho);
    font:inherit;font-size:.8rem;text-align:left;cursor:pointer;
    transition:background-color .25s var(--suave),box-shadow .25s var(--suave)}
.fin-anel-item i{width:10px;height:10px;border-radius:3px;box-shadow:inset 0 1px 0 rgba(255,255,255,.35),inset 0 -1px 0 rgba(0,0,0,.3)}
.fin-anel-nome{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fin-anel-val{font-variant-numeric:tabular-nums;white-space:nowrap}
.fin-anel-item small{min-width:4ch;text-align:right;font-size:.72rem;color:var(--texto-3);font-variant-numeric:tabular-nums}
.fin-anel-item:hover,.fin-anel-item.ativo{background:rgba(209,171,116,.08)}
.fin-anel-item.ativo{box-shadow:inset 0 0 0 1px rgba(209,171,116,.35)}
.fin-anel-item.ativo small{color:var(--ouro-luz)}
.fin-anel-item:focus-visible{outline:2px solid var(--ouro-luz);outline-offset:1px}

/* ------------------------------------------------------------ odometro dos KPIs
   So os digitos sao coluna; a fita (0-9 duas vezes) anda por transform. O
   degrade dos totais passa do elemento para cada glifo enquanto rola: com
   filho transformado o background-clip:text do pai deixaria o numero invisivel. */
.fin-valor.fin-odo-rolando{position:relative}
.fin-odo{display:inline-flex;align-items:flex-start;line-height:1.15;white-space:pre}
.fin-odo-fixo,.fin-odo-col{display:block;height:1.15em}
.fin-odo-col{overflow:hidden}
.fin-odo-fita{display:block;transform:translateY(0);transition:transform 1.1s var(--suave);will-change:transform}
.fin-odo-fita b{display:block;height:1.15em;font-weight:inherit}
.fin-kpi-total .fin-valor.fin-odo-rolando,.fin-dre-total .fin-valor.fin-odo-rolando{background:none}
.fin-kpi-total .fin-odo-g{background:linear-gradient(180deg,#fbf7ee 20%,#d6c29c 120%);-webkit-background-clip:text;background-clip:text;color:transparent}
.fin-kpi-total .fin-valor.neg .fin-odo-g{background:linear-gradient(180deg,#ffb4b1,#e0524f);-webkit-background-clip:text;background-clip:text;color:transparent}
.fin-dre-total .fin-odo-g{background:linear-gradient(180deg,#f6dcaa,#b08d57);-webkit-background-clip:text;background-clip:text;color:transparent}
.fin-dre-total .fin-valor.neg .fin-odo-g{background:none;color:var(--critico)}

/* ------------------------------------------------------------ alternador do modo terminal */
.fin-term-alt{display:inline-flex;align-items:center;gap:7px;height:30px;margin-left:10px;padding:0 11px 0 9px;border-radius:8px;
    border:1px solid var(--fio);background:rgba(5,8,11,.42);color:var(--texto-2);font:inherit;font-size:.68rem;font-weight:600;
    letter-spacing:.1em;text-transform:uppercase;cursor:pointer;
    transition:border-color .3s var(--suave),color .3s var(--suave),box-shadow .3s var(--suave),background-color .3s var(--suave)}
.fin-term-sinal{font-family:ui-monospace,SFMono-Regular,'SF Mono',Menlo,Consolas,'Liberation Mono',monospace;font-size:.8rem;
    letter-spacing:0;color:var(--ouro-luz)}
.fin-term-alt:hover{border-color:var(--fio-ouro);color:var(--pergaminho)}
.fin-term-alt:active{transform:translateY(1px)}
.fin-term-alt:focus-visible{outline:2px solid var(--ouro-luz);outline-offset:2px}
.fin-term-alt[aria-pressed=true]{border-color:rgba(209,171,116,.55);color:var(--pergaminho);background-color:rgba(209,171,116,.12);
    box-shadow:0 0 22px -8px rgba(209,171,116,.6),inset 0 0 0 1px rgba(209,171,116,.12)}
@media (max-width:700px){
  .fin-mes{width:100%}
  .fin-term-alt{margin-left:auto;height:36px;padding:0 12px}
  .fin-term-txt{display:none}
}

/* ------------------------------------------------------------ faixa de cotacao (so no terminal)
   Os MESMOS alertas do cartao "Precisa da sua atencao", numa linha que corre.
   Duas copias, -50%: a volta nao tem emenda. Para fora da tela e sob o dedo. */
.fin-ticker{display:none}
#financas.fin-terminal .fin-ticker{display:block;container-type:inline-size;overflow:hidden;margin:0 0 14px;border-radius:6px;
    border:1px solid var(--fio);border-left:2px solid var(--ouro);background:rgba(4,7,10,.55);
    -webkit-mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent);
    mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent)}
.fin-ticker-trilho{display:flex;width:max-content;animation:finTicker var(--dur,30s) linear infinite;will-change:transform}
.fin-ticker-meia{display:flex;flex:0 0 auto;justify-content:space-around;min-width:100vw;min-width:100cqw}
.fin-ticker-item{display:inline-flex;align-items:center;gap:9px;padding:9px 22px;white-space:nowrap;font-size:.72rem;color:var(--texto-2);
    font-family:ui-monospace,SFMono-Regular,'SF Mono',Menlo,Consolas,'Liberation Mono',monospace;font-variant-numeric:tabular-nums}
.fin-ticker-item::before{content:'';flex:0 0 auto;width:6px;height:6px;border-radius:50%;background:#f3cd78;box-shadow:0 0 8px 0 rgba(250,178,25,.7)}
.fin-ticker-item.critico::before{background:#ff8a86;box-shadow:0 0 8px 0 rgba(224,82,79,.8)}
.fin-ticker-item b{font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:#f3cd78}
.fin-ticker-item.critico b{color:#ff8a86}
.fin-ticker:hover .fin-ticker-trilho,.fin-ticker:active .fin-ticker-trilho,.fin-ticker.fora .fin-ticker-trilho{animation-play-state:paused}
@keyframes finTicker{to{transform:translateX(-50%)}}
/* sem movimento a faixa vira uma linha que se arrasta com o dedo, uma copia so */
html.sem-animacao #financas.fin-terminal .fin-ticker{overflow-x:auto;-webkit-mask-image:none;mask-image:none}
html.sem-animacao .fin-ticker-meia + .fin-ticker-meia{display:none}
@media (prefers-reduced-motion:reduce){
  #financas.fin-terminal .fin-ticker{overflow-x:auto;-webkit-mask-image:none;mask-image:none}
  .fin-ticker-trilho{animation:none}
  .fin-ticker-meia + .fin-ticker-meia{display:none}
  .fin-odo-fita{transition:none}
}

/* ------------------------------------------------------------ pele: terminal financeiro
   So CSS e uma classe no #financas: o mesmo dado, outra pele. Numeros na
   monoespacada do sistema (nenhuma fonte baixada), grade fina por tras dos
   cartoes, cabecalhos em caixa alta espacada, cantos retos. */
#financas.fin-terminal{isolation:isolate;
    --fin-mono:ui-monospace,SFMono-Regular,'SF Mono',Menlo,Consolas,'Liberation Mono',monospace}
#financas.fin-terminal::before{content:'';position:absolute;inset:-6px -4px;z-index:-1;pointer-events:none;
    background-image:linear-gradient(rgba(236,231,218,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(236,231,218,.045) 1px,transparent 1px);
    background-size:32px 32px}
#financas.fin-terminal :is(.fin-valor,.fin-barra-val,.fin-meta-num,.fin-fixa-val,.fin-fixa-dia,.fin-contador,.fin-sinal,
    .fin-tabela input,.fin-tabela tfoot td,.fin-tabela td small,.fin3d-rotulos,.fin3d-dica span,.fin-anel-centro,
    .fin-anel-val,.fin-anel-item small,.fin-alerta-txt span,.fin-tip-l b,.fin-eixo,.fin-kpi-dica){font-family:var(--fin-mono);letter-spacing:0}
#financas.fin-terminal .fin-kpi-total .fin-valor,#financas.fin-terminal .fin-dre-total .fin-valor{letter-spacing:-.03em}
#financas.fin-terminal .fin-mes h2{font-family:var(--fin-mono);font-size:1.12rem;letter-spacing:.14em;text-transform:uppercase}
#financas.fin-terminal .fin-card{border-radius:8px;border-color:rgba(236,231,218,.13)}
#financas.fin-terminal .fin-card:not(.fin-boas-vindas) h3,#financas.fin-terminal .fin-ajustes summary span{
    font-family:var(--fin-mono);font-size:.68rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--ouro-luz)}
#financas.fin-terminal .fin-card:not(.fin-boas-vindas) h3::before{content:'';display:inline-block;flex:0 0 auto;width:5px;height:5px;
    margin-right:8px;vertical-align:middle;background:var(--ouro);box-shadow:0 0 8px 0 rgba(209,171,116,.7)}
#financas.fin-terminal .fin-card-topo h3::before{margin-right:0}
#financas.fin-terminal .fin-grupo h3{color:var(--texto-3)}
#financas.fin-terminal .fin-kpi-rot,#financas.fin-terminal .fin-dre-rot,#financas.fin-terminal .fin-meta-nome,
#financas.fin-terminal .fin-barra-rot,#financas.fin-terminal .fin-anel-nome{font-family:var(--fin-mono);font-size:.68rem;letter-spacing:.1em;text-transform:uppercase}
#financas.fin-terminal :is(.fin-btn,.fin-seg,.fin-status,.fin-link){font-family:var(--fin-mono);letter-spacing:.06em;text-transform:uppercase;font-size:.68rem}
#financas.fin-terminal :is(.fin-btn,.fin-segs,.fin-mes .fin-nav,.fin-fixa-dia,.fin-reserva,.fin3d,.fin-anel3d){border-radius:6px}
#financas.fin-terminal :is(.fin-seg,.fin-status,.fin-contador,.fin-anel-item){border-radius:4px}
#financas.fin-terminal :is(.fin-barra,.fin-barra-trilho,.fin-trilho,.fin-trilho span){border-radius:0}
#financas.fin-terminal .fin-valor-cel.receita input{color:#8fd6ab}
#financas.fin-terminal .fin-tabela tbody tr:hover{background:rgba(57,135,229,.06)}
#financas.fin-terminal .fin-aviso{font-family:var(--fin-mono);font-size:.68rem}

/* ------------------------------------------------------------ planilha: acabamentos
   Linha nova acende e assenta; status troca de cor com transicao; linha
   apagada recolhe na hora e as de baixo sobem quando a lista nova chega. */
.fin-tabela tr.fin-linha-nova{animation:finLinhaAssenta .7s var(--mola) both}
.fin-tabela tr.fin-linha-nova td{position:relative}
.fin-tabela tr.fin-linha-nova td::after{content:'';position:absolute;inset:0;pointer-events:none;opacity:0;
    background:rgba(209,171,116,.17);border-top:1px solid rgba(239,214,166,.5);border-bottom:1px solid rgba(239,214,166,.5);
    animation:finLinhaAcende 2.4s var(--suave) both}
@keyframes finLinhaAssenta{from{opacity:0;transform:translateY(-12px) scale(.985)}to{opacity:1;transform:none}}
@keyframes finLinhaAcende{0%{opacity:0}10%,32%{opacity:1}100%{opacity:0}}
/* a troca de cor do .fin-status usa a transicao que o relevo.css ja da ao botao (fundo, cor e sombra) */
.fin-status-indo{pointer-events:none}
.fin-status-mudou{animation:finStatusPulso .55s var(--mola) both}
@keyframes finStatusPulso{from{transform:scale(.86)}to{transform:none}}
.fin-tabela tbody tr.fin-linha-saindo{transform-origin:50% 0;transform:scaleY(.15);opacity:0;pointer-events:none;
    transition:transform .28s var(--suave),opacity .2s var(--suave)}
.fin-tabela tr.fin-linha-sobe{animation:finLinhaSobe .45s var(--suave) both}
@keyframes finLinhaSobe{from{transform:translateY(var(--dy,0px))}to{transform:none}}
@media (prefers-reduced-motion:reduce){
  .fin-tabela tr.fin-linha-nova,.fin-tabela tr.fin-linha-nova td::after,.fin-status-mudou,.fin-tabela tr.fin-linha-sobe{animation:none}
  .fin-tabela tbody tr.fin-linha-saindo{transition:none}
}
