/* Favoritos e temperatura: um único estilo reutilizado no feed e no detalhe.
   Sem sobrepor regras globais nem usar prioridades artificiais. */
.fc-favorite-toggle{position:relative;z-index:4;display:grid;place-items:center;flex:0 0 38px;width:38px;height:38px;margin-left:auto;padding:0;border:0;border-radius:50%;background:transparent;color:#828b91;cursor:pointer;transition:color .17s ease,transform .17s ease}
.fc-favorite-toggle svg{width:20px;height:20px;display:block;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linejoin:round;stroke-linecap:round}
.fc-favorite-toggle:hover{color:#ff3131;background:transparent}
.fc-favorite-toggle[data-saved="true"]{color:#ff3131;background:transparent}
.fc-favorite-toggle[data-saved="true"] svg{fill:currentColor}
.fc-favorite-toggle[data-pending="true"]{opacity:.6;cursor:progress}
.fc-favorite-toggle:focus-visible{outline:2px solid #71787e;outline-offset:3px}
.fc-favorite-toggle:disabled{cursor:progress}
.fc-card-author .fc-favorite-toggle{align-self:flex-start;margin-top:2px}
.fc-heat-indicator{display:inline-flex;align-items:center;gap:8px;color:#606f7b;font-size:.72rem;line-height:1.3;font-weight:650}
/* Três barras crescentes: frio (cinza), morno (dourado), quente (vermelho GCAPTAL).
   O estado é derivado do vencimento real e nunca depende de texto visível. */
.fc-heat-bars{display:inline-flex;align-items:flex-end;justify-content:center;gap:3px;height:17px;min-width:21px;flex:none}
.fc-heat-bars i{display:block;flex:0 0 5px;width:5px;border-radius:2px 2px 1px 1px;opacity:.30;transition:opacity .18s ease,filter .18s ease}
.fc-heat-bars i:nth-child(1){height:7px;background:#9da8b2}
.fc-heat-bars i:nth-child(2){height:12px;background:#d7a020}
.fc-heat-bars i:nth-child(3){height:17px;background:#ff3131}
[data-heat-state="cold"] .fc-heat-bars i:first-child,
[data-heat-state="warm"] .fc-heat-bars i:nth-child(2),
[data-heat-state="hot"] .fc-heat-bars i:nth-child(3){opacity:1;filter:drop-shadow(0 1px 1px rgb(0 0 0 / 10%))}
[data-heat-state="expired"] .fc-heat-bars i{background:#aeb4b9;opacity:.4;filter:none}
@media(prefers-reduced-motion:reduce){.fc-heat-bars i{transition:none}}
/* Único componente de prazo para feed, favoritos e detalhe: a mesma cor
   é determinada exclusivamente pela faixa diária do vencimento real. */
.fc-expiry-chip{display:inline-flex;align-items:center;justify-content:center;min-height:25px;padding:4px 8px;border-radius:999px;border:1px solid #d8dcdf;background:#f0f2f2;color:#555e66;font-size:.68rem;font-weight:760;line-height:1.2;white-space:nowrap}
.fc-expiry-chip[hidden]{display:none}
.fc-card-author .fc-expiry-chip{padding-inline:7px;font-size:.64rem;letter-spacing:-.01em}
[data-expiry-day="7"] .fc-expiry-chip{background:#edf2fd;border-color:#c2d2f5;color:#285eab}
[data-expiry-day="6"] .fc-expiry-chip{background:#e9f5ff;border-color:#b2dbf6;color:#176f9c}
[data-expiry-day="5"] .fc-expiry-chip{background:#e8f8f2;border-color:#a8dfc5;color:#217650}
[data-expiry-day="4"] .fc-expiry-chip{background:#f1f8e7;border-color:#cde8ac;color:#567d24}
[data-expiry-day="3"] .fc-expiry-chip{background:#fff5d9;border-color:#f2d48a;color:#936300}
[data-expiry-day="2"] .fc-expiry-chip{background:#fff0df;border-color:#f2c092;color:#ad5516}
[data-expiry-day="1"] .fc-expiry-chip{background:#ffe6e6;border-color:#ffb4b4;color:#d72323}
/* Metadados da solicitação: temperatura e favorito junto da categoria, não na badge. */
.sm-meta .sm-detail-heat{display:inline-flex;align-items:center;min-height:32px;padding-inline:2px}
.sm-meta .sm-favorite-toggle{display:grid;place-items:center;flex:0 0 34px;width:34px;height:34px;margin:0;border:0;background:transparent}
.sm-meta .sm-favorite-toggle svg{width:20px;height:20px}
.fc-favorites-heading{display:flex;align-items:center;justify-content:space-between;gap:18px;margin:6px 0 22px}
.fc-favorites-heading h1{margin:0;color:#17212b;font-size:clamp(1.55rem,3vw,2.2rem);line-height:1.2;letter-spacing:-.04em}
.fc-favorites-heading p{margin:6px 0 0;color:#687583;font-size:.9rem}
.fc-browse-link{color:#1a5d93;font-weight:700;text-decoration:none}
.fc-browse-link:hover{text-decoration:underline}
.fc-favorites-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;min-height:300px;padding:38px 20px;text-align:center;border:0;border-radius:0;background:transparent}
.fc-favorites-empty[hidden]{display:none}
.fc-favorites-empty h2{margin:0;color:#1e2b35;font-size:1.2rem}
.fc-favorites-empty p{max-width:430px;margin:0;color:#687583;font-size:.86rem;line-height:1.6}
.fc-favorite-feedback{position:fixed;z-index:1000;bottom:20px;left:50%;transform:translateX(-50%);width:min(calc(100vw - 32px),400px);padding:12px 16px;border:1px solid #e3e6ea;border-radius:12px;background:#fff;color:#34414c;font-size:.88rem;line-height:1.4;box-shadow:0 8px 30px rgb(18 30 43 / 12%);text-align:center}
.fc-favorite-feedback[hidden]{display:none}
@media(max-width:700px){.fc-favorites-heading{gap:10px;margin:8px 16px 19px}.sm-meta .sm-favorite-toggle{min-width:34px}}
@media(prefers-reduced-motion:reduce){.fc-favorite-toggle{transition:none}}
/* Confirmação de favoritos: o coração e os detalhes DENTRO do botão animam.
   O card, seu tamanho e sua sombra não recebem transformações. */
.fc-favorite-toggle{isolation:isolate}
.fc-favorite-toggle svg{position:relative;z-index:2;transform-origin:center}
.fc-favorite-toggle::before,.fc-favorite-toggle::after{
  content:"";position:absolute;pointer-events:none;opacity:0;transform-origin:center;border-radius:50%
}
/* A grade compacta pode ter botões de 24x28px: o aro deve ter dimensões
   próprias, iguais nos dois eixos, e não herdar a proporção do botão. */
.fc-favorite-toggle::before{
  inset:auto;top:50%;left:50%;width:26px;height:26px;
  margin:-13px 0 0 -13px;box-sizing:border-box;
  border:1.5px solid #ff3131;
}
.fc-favorite-toggle::after{
  inset:calc(50% - 2px);background:#ff3131;
  box-shadow:0 -10px 0 -2px #ff6868,9px -6px 0 -2px #ff6868,9px 6px 0 -2px #ff6868,
    0 10px 0 -2px #ff6868,-9px 6px 0 -2px #ff6868,-9px -6px 0 -2px #ff6868
}
@keyframes fc-heart-pop{0%{transform:scale(.76)}35%{transform:scale(1.23)}62%{transform:scale(.93)}83%{transform:scale(1.06)}100%{transform:scale(1)}}
@keyframes fc-heart-release{0%{transform:scale(1)}50%{transform:scale(.83)}100%{transform:scale(1)}}
@keyframes fc-heart-ring{0%{opacity:.85;transform:scale(.5)}100%{opacity:0;transform:scale(1.2)}}
@keyframes fc-heart-sparks{0%{opacity:0;transform:scale(.55)}35%{opacity:.85;transform:scale(1)}100%{opacity:0;transform:scale(1.28)}}
.fc-favorite--burst:not(.fc-favorite--waapi)[data-saved="true"] svg{animation:fc-heart-pop .54s cubic-bezier(.22,.76,.29,1)}
.fc-favorite--release:not(.fc-favorite--waapi) svg{animation:fc-heart-release .34s ease-out}
.fc-favorite--burst:not(.fc-favorite--waapi)[data-saved="true"]::before{animation:fc-heart-ring .56s ease-out}
.fc-favorite--burst:not(.fc-favorite--waapi)[data-saved="true"]::after{animation:fc-heart-sparks .52s ease-out}
/* Recuperação Web Animations no desktop, sem animar o card ou duplicar o CSS. */
.fc-favorite-activation{position:absolute;inset:0;pointer-events:none;z-index:1}
.fc-favorite-activation-ring,.fc-favorite-activation-sparks{position:absolute;pointer-events:none;opacity:0;border-radius:50%;transform-origin:center}
.fc-favorite-activation-ring{
  inset:auto;top:50%;left:50%;width:26px;height:26px;
  margin:-13px 0 0 -13px;box-sizing:border-box;
  border:1.5px solid #ff3131;
}
.fc-favorite-activation-sparks{
  inset:calc(50% - 2px);background:#ff3131;
  box-shadow:0 -10px 0 -2px #ff6868,9px -6px 0 -2px #ff6868,9px 6px 0 -2px #ff6868,
    0 10px 0 -2px #ff6868,-9px 6px 0 -2px #ff6868,-9px -6px 0 -2px #ff6868
}
@media(prefers-reduced-motion:reduce){
  .fc-favorite-toggle,.fc-favorite-toggle svg,.fc-favorite-toggle::before,.fc-favorite-toggle::after{animation:none;transition:none}
}
