﻿/* =========================================================
   MELHORES DO ANO
   Design tokens, layout e componentes
   ========================================================= */

/* 0) Preferências do usuário --------------------------------------------- */
@media (prefers-reduced-motion: reduce){
  * { animation: none !important; transition: none !important; }
}

/* 1) TOKENS (cores, sombras, etc.) ---------------------------------------- */
:root{
  /* Fundo */
  --bg: #f6faff;
  --bg-grad-1: #f1f6ff;
  --bg-grad-2: #e8f0ff;

  /* Azul (escala) */
  --primary-50:  #eff6ff;
  --primary-100: #dbeafe;
  --primary-200: #bfdbfe;
  --primary-300: #93c5fd;
  --primary-400: #60a5fa;
  --primary-500: #3b82f6;
  --primary-600: #2563eb;
  --primary-700: #1d4ed8;

  /* Texto e neutros */
  --text:  #0b1220;
  --muted: #5b657a;

  /* Card */
  --card-bg: #ffffff;
  --card-border: rgba(59,130,246,.25);
  --shadow: 0 10px 30px rgba(37,99,235,.12);
}

/* Garante que [hidden] sempre esconda o elemento */
[hidden] { display: none !important; }

/* (opcional) classe usada como fallback pelo script */
.is-hidden { display: none !important; }

/* 2) BASE ------------------------------------------------------------------ */
*{ box-sizing:border-box; }
html, body{
  margin:0;
  color: var(--text);
  font-family: system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,sans-serif;
  background:
    radial-gradient(1200px 600px at -10% -10%, var(--bg-grad-2) 0%, transparent 55%),
    radial-gradient(900px 500px at 110% -10%, var(--primary-50) 0%, transparent 60%),
    radial-gradient(1000px 600px at 50% 120%, #e6f0ff 0%, transparent 60%),
    var(--bg);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
h1{ margin:0 0 8px; font-weight:800; letter-spacing:-.02em; }
.container{ max-width:980px; margin:0 auto; padding:16px; }
.small{ font-size:.875rem; }
.muted{ color: var(--muted); }
.sr-only{ position:absolute !important; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); border:0; }

/* 3) GRID DE CATEGORIAS ---------------------------------------------------- */
.category-list{
  display:grid;
  grid-template-columns: repeat(auto-fill, minmax(310px, 1fr));
  gap:24px;
}

/* 4) CARDS ----------------------------------------------------------------- */
.card, .category-card{
  background: linear-gradient(180deg, #fff, #f9fbff);
  border: 1px solid var(--card-border);
  border-radius: 16px;
  box-shadow: var(--shadow);
  padding: 20px 20px 18px;
  transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}
.card:hover, .category-card:hover{
  transform: translateY(-2px);
  box-shadow: 0 18px 45px rgba(37,99,235,.18);
  border-color: var(--primary-300);
}
.card h2, .category-card h2{ font-size:1.25rem; margin:.25rem 0 .5rem; color:#0f172a; }
.card p,  .category-card p { color: var(--muted); }

/* 5) FORM ELEMENTS --------------------------------------------------------- */
.input-row{ display:flex; gap:12px; margin-top:12px; }
.card input, .category-card input{
  flex:1; padding:12px 14px;
  border:1.5px solid #e5e7eb; border-radius:12px; background:#fff;
  outline:none; font-size:.95rem; transition: border-color .2s, box-shadow .2s;
}
.card input:focus, .category-card input:focus{
  border-color: var(--primary-400);
  box-shadow: 0 0 0 4px rgba(59,130,246,.15);
}
.btn, .save-btn, .card button, .category-card button{
  padding:10px 14px; border-radius:12px; border:0; cursor:pointer;
  background: linear-gradient(135deg, var(--primary-500), var(--primary-600));
  color:#fff; font-weight:600;
  box-shadow: 0 8px 20px rgba(37,99,235,.25);
  transition: transform .15s ease, filter .2s ease, box-shadow .2s ease;
}
.btn:hover, .save-btn:hover, .card button:hover, .category-card button:hover{
  filter: brightness(1.05); box-shadow: 0 12px 28px rgba(37,99,235,.35);
}
.btn:active, .save-btn:active, .card button:active, .category-card button:active{
  transform: translateY(1px);
}
.btn:disabled, .save-btn:disabled{ opacity:.55; cursor:not-allowed; }

/* 6) SWIPER / CARROSSEL ---------------------------------------------------- */
/* Contêiner */
.swiper{ width:100%; height:auto; }

/* Paginação (bolinhas) oculta */
#carousel .swiper-pagination{ display:none !important; }

/* Barra de navegação com setas ABAIXO (fora do overlay) */
#carousel .swiper-controls{
  display:flex !important;
  justify-content:flex-end;
  gap:12px;
  margin-top:12px;
}

/* Setas como botões “normais” */
#carousel .swiper-button-next,
#carousel .swiper-button-prev{
  position: static !important; inset:auto !important; transform:none !important;
  width:44px; height:44px;
  background: rgba(59,130,246,.08);
  border-radius:12px;
  color: var(--primary-600);
  display:inline-flex; align-items:center; justify-content:center;
  box-shadow: 0 6px 16px rgba(37,99,235,.18);
}
#carousel .swiper-button-next:hover,
#carousel .swiper-button-prev:hover{ background: rgba(59,130,246,.16); }
#carousel .swiper-button-next::after,
#carousel .swiper-button-prev::after{ font-size:18px; font-weight:700; }
#carousel .swiper-button-next, #carousel .swiper-button-prev{ margin:0; }

/* 7) FAB (menu flutuante) -------------------------------------------------- */
/* Posição: use data-pos="bottom-right|bottom-left|top-right|top-left|auto" */
.fab{ position:fixed; z-index:1000; }
.fab[data-pos="bottom-right"]{ right:20px; bottom: calc(20px + env(safe-area-inset-bottom,0px)); }
.fab[data-pos="bottom-left"] { left: 20px; bottom: calc(20px + env(safe-area-inset-bottom,0px)); }
.fab[data-pos="top-right"]   { right:20px; top:20px; }
.fab[data-pos="top-left"]    { left: 20px; top:20px; }
/* Responsivo automático: embaixo no mobile, topo no desktop */
.fab[data-pos="auto"]{ right:20px; bottom: calc(20px + env(safe-area-inset-bottom,0px)); }
@media (min-width:1024px){
  .fab[data-pos="auto"]{ top:20px; bottom:auto; }
}
.fab-btn{
  width:58px; height:58px; border-radius:50%; border:0; cursor:pointer;
  background: linear-gradient(135deg, var(--primary-500), var(--primary-600));
  color:#fff; font-size:22px; line-height:1; box-shadow: 0 14px 30px rgba(37,99,235,.35);
}
.fab-btn:hover{ filter: brightness(1.05); }
.fab-menu{
  position:absolute; right:0; min-width:200px; display:none;
  background:#fff; border:1px solid rgba(59,130,246,.22); border-radius:14px;
  box-shadow: 0 18px 45px rgba(37,99,235,.18); padding:8px;
}
.fab[data-pos="bottom-right"] .fab-menu,
.fab[data-pos="bottom-left"]  .fab-menu,
.fab[data-pos="auto"]         .fab-menu{ bottom:70px; top:auto; }
.fab[data-pos="top-right"]    .fab-menu,
.fab[data-pos="top-left"]     .fab-menu{ top:70px; bottom:auto; }
.fab-menu a{
  display:block; padding:12px 14px; border-radius:10px; text-decoration:none;
  color: var(--text); font-weight:600;
}
.fab-menu a:hover{ background: var(--primary-50); }
.fab-backdrop{ position:fixed; inset:0; background:transparent; display:block; }
.fab-backdrop[hidden]{ display:none; }

/* Se o FAB ficar embaixo à direita, dá um respiro nas setas do carrossel */
.fab[data-pos="bottom-right"] ~ .swiper-controls { margin-right:84px; }

/* 8) DARK MODE ------------------------------------------------------------- */
@media (prefers-color-scheme: dark){
  :root{
    --bg:#0b1220; --bg-grad-1:#0f1730; --bg-grad-2:#0c1a3b;
    --text:#e5ecff; --muted:#9fb0d1;
    --card-bg:#0f1629; --card-border: rgba(99,102,241,.35);
  }
  .card, .category-card{
    background: linear-gradient(180deg, #0f1629, #0b1020);
    border-color: var(--card-border);
    box-shadow: 0 12px 30px rgba(2,6,23,.45);
  }
  .card h2, .category-card h2{ color:#e5ecff; }
  .card input, .category-card input{ background:#0b1220; color:#e5ecff; border-color:#1f2937; }

  /* --- ADICIONE ESTAS LINHAS: melhora contraste do menu no dark --- */
  .fab-menu{
    background:#0f1629;
    border-color: rgba(99,102,241,.35);
    box-shadow: 0 18px 45px rgba(2,6,23,.65);
  }
  .fab-menu a{ color:#e5ecff; }
  .fab-menu a:hover{ background: rgba(99,102,241,.18); }
}


/* Se o FAB estiver nos cantos ESQUERDOS, abre para a DIREITA */
.fab[data-pos="bottom-left"] .fab-menu,
.fab[data-pos="top-left"] .fab-menu {
  left: 0;
  right: auto;   /* sobrescreve o right:0 padrão */
}

/* Seletor “Ir para categoria” */
.category-jump{
  margin-top: 12px;
  display: flex;
  justify-content: flex-end; /* fica alinhado às setas */
}
.category-jump select{
  min-width: 260px;
  padding: 10px 12px;
  border: 1.5px solid #e5e7eb;
  border-radius: 12px;
  background: #fff;
  color: var(--text);
  font-size: .95rem;
  box-shadow: 0 6px 16px rgba(37,99,235,.10);
  outline: none;
  transition: border-color .2s, box-shadow .2s;
}
.category-jump select:focus{
  border-color: var(--primary-400);
  box-shadow: 0 0 0 4px rgba(59,130,246,.15);
}

@media (max-width: 640px){
  .category-jump{ justify-content: stretch; }
  .category-jump select{ width: 100%; min-width: 0; }
}

/* Dark mode para o seletor */
@media (prefers-color-scheme: dark){
  .category-jump select{
    background: #0f1629;
    color: #e5ecff;
    border-color: #1f2937;
  }
}

/* --- Caixa de ajuda/guia --- */
.tipbox{
  display:flex; align-items:flex-start; gap:12px;
  background:#eef4ff; border:1px solid rgba(59,130,246,.25);
  border-radius:12px; padding:12px 14px; margin-top:12px;
  box-shadow: 0 4px 16px rgba(37,99,235,.12);
}
.tipbox p{ margin:0; color:#0b1220; }
.btn-light{
  border:0; cursor:pointer; border-radius:10px; padding:8px 10px;
  background: #e5edff; color:#1d4ed8; font-weight:600;
}
.btn-light:hover{ filter: brightness(1.05); }

/* destaque rápido quando vier por link com cat/name */
.input-highlight{
  box-shadow: 0 0 0 4px rgba(59,130,246,.22) !important;
  border-color: var(--primary-400) !important;
  animation: fadeGlow 2.2s ease 1;
}
@keyframes fadeGlow{
  0%{ box-shadow: 0 0 0 6px rgba(59,130,246,.35); }
  100%{ box-shadow: 0 0 0 0 rgba(59,130,246,0); }
}

/* Dark mode da tipbox */
@media (prefers-color-scheme: dark){
  .tipbox{
    background:#0f1629; border-color: rgba(99,102,241,.35);
    box-shadow: 0 8px 24px rgba(2,6,23,.45);
  }
  .tipbox p{ color:#e5ecff; }
  .btn-light{
    background:#18223d; color:#93c5fd;
  }
}

