/* /assets/css/base.css */

/* TOKENS */
:root{
  --brand:#1f5c7a;
  --brand-600:#184b63;
  --fg:#0f172a;
  --muted:#475569;
  --bg:#f8fafc;
  --card:#ffffff;
  --bd:#e2e8f0;
  --shadow:0 8px 24px rgba(15,23,42,.07);
  --radius:14px;
}
@media (prefers-color-scheme: dark){
  :root{
    --fg:#e6edf3;
    --muted:#94a3b8;
    --bg:#0b1220;
    --card:#0f172a;
    --bd:#1e293b;
    --shadow:0 12px 32px rgba(0,0,0,.35);
  }
}

/* BASE */
*{ box-sizing:border-box; }
html,body{height:100%}
body{
  margin:0;
  background:var(--bg);
  color:var(--fg);
  font:16px/1.55 system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;
}
.wrap{
  max-width:980px;
  margin:48px auto;
  padding:0 18px;
  padding-bottom:64px;
}
h1{
  margin:0 0 20px;
  font-weight:800;
  font-size:clamp(22px,4vw,32px);
}
h2{
  margin:0 0 8px;
  font-weight:700;
  font-size:18px;
}
.card{
  background:var(--card);
  border:1px solid var(--bd);
  border-radius:var(--radius);
  box-shadow:var(--shadow);
  padding:20px;
  margin-top:18px;
}
.cards{ display:grid; gap:18px; }
.card-link{ text-decoration:none; color:inherit; }

/* HEADER */
.header{
  width:100%;
  background:var(--card);
  border-bottom:1px solid var(--bd);
  padding:14px 22px;
  display:flex;
  justify-content:space-between;
  align-items:center;
  position:sticky;
  top:0; z-index:100;
  box-shadow:var(--shadow);
}
.header-left{
  display:flex; align-items:center; gap:12px;
  font-weight:800; color:var(--brand); font-size:18px;
}
.header-logo{ height:32px; width:auto; display:block; }
.header-nav{ display:flex; align-items:center; gap:18px; }
.header-nav a{
  text-decoration:none; color:var(--fg);
  font-weight:600; padding:6px 10px; border-radius:8px; transition:.15s;
}
.header-nav a:hover{ background:rgba(31,92,122,0.08); }
.header-nav .logout{ font-weight:700; color:var(--brand); }

/* Botão hamburguer */
.header-toggle{
  display:none; background:none; border:0; padding:6px; margin-left:auto; cursor:pointer;
}
.header-toggle span{
  display:block; width:20px; height:2px; background:var(--fg);
  border-radius:2px; margin:4px 0; transition:.15s;
}

/* FORM / CAMPOS */
label{ display:block; color:var(--muted); font-weight:600; margin-top:10px; }
input[type="text"],
input[type="number"],
input[type="email"],
input[type="password"],
textarea{
  width:100%; margin-top:6px; padding:10px 12px;
  border-radius:10px; border:1px solid var(--bd);
  background:#fff0; color:var(--fg);
}
textarea{ resize:vertical; }
input:focus, textarea:focus{
  outline:none; border-color:var(--brand);
  box-shadow:0 0 0 3px rgba(31,92,122,.18);
}

/* Select e Date com identidade */
.select,.date{
  appearance:none; -webkit-appearance:none; -moz-appearance:none;
  width:100%; padding:12px 44px 12px 12px;
  border:1px solid var(--bd); border-radius:12px;
  background:var(--card); color:var(--fg); font:inherit; line-height:1.2;
  box-shadow:0 1px 0 rgba(0,0,0,.02);
  transition:border .15s, box-shadow .15s, background .15s, filter .15s;
}
.select:hover,.date:hover{ border-color:#cbd5e1; }
.select:focus,.date:focus{
  outline:none; border-color:var(--brand);
  box-shadow:0 0 0 4px color-mix(in sRGB, var(--brand) 22%, transparent);
  background:color-mix(in sRGB, var(--brand) 4%, transparent);
}
.select:disabled,.date:disabled{ filter:grayscale(.3); opacity:.7; cursor:not-allowed; }

/* seta select */
.select{
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 24 24'%3E%3Cpath fill='%23475569' d='M7 10l5 5 5-5z'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right 12px center; background-size:18px;
}
@media (prefers-color-scheme: dark){
  .select{
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 24 24'%3E%3Cpath fill='%2394a3b8' d='M7 10l5 5 5-5z'/%3E%3C/svg%3E");
  }
}

/* ícone calendário */
.date{ position:relative; padding-right:44px; }
.date::-webkit-calendar-picker-indicator{ opacity:0; }
.date::after{
  content:''; position:absolute; right:12px; top:50%; width:20px; height:20px; transform:translateY(-50%);
  pointer-events:none; background-repeat:no-repeat; background-size:20px 20px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke='%23475569' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='18' height='18' x='3' y='4' rx='2'/%3E%3Cpath d='M16 2v4M8 2v4M3 10h18'/%3E%3C/g%3E%3C/svg%3E");
}
@media (prefers-color-scheme: dark){
  .date::after{
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke='%2394a3b8' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='18' height='18' x='3' y='4' rx='2'/%3E%3Cpath d='M16 2v4M8 2v4M3 10h18'/%3E%3C/g%3E%3C/svg%3E");
  }
}

/* GRID */
.grid{ display:grid; gap:12px; }
.grid.cols-2{ grid-template-columns:repeat(2,minmax(0,1fr)); }

/* BOTÕES */
.actions{
  display:flex; gap:10px; margin-top:18px; flex-wrap:wrap;
}
.btn{
  border:0; border-radius:12px; padding:10px 18px;
  background:linear-gradient(180deg,var(--brand),var(--brand-600));
  color:#fff; font-weight:700; cursor:pointer; white-space:nowrap;
}
.btn[disabled],.btn:disabled{
  filter:grayscale(35%); opacity:.6; cursor:not-allowed; box-shadow:none;
}
.btn-small{
  display:inline-block; padding:6px 10px; border-radius:10px;
  background:var(--brand); color:#fff; font-size:13px; text-decoration:none;
}
.totals{
  margin-top:10px; padding:10px 12px; border-radius:10px;
  border:1px dashed var(--brand); font-weight:700; font-size:14px;
}
.error{ color:#b91c1c; margin-bottom:12px; }
.result{ margin-top:12px; }

/* DESKTOP CARDS */
@media(min-width:900px){
  .cards{ grid-template-columns:repeat(3,1fr); }
}

/* AJUSTES TABLET */
@media(max-width:900px){
  .wrap{ margin:32px auto; padding:0 14px; }
  .header{ padding:10px 14px; }
}

/* MOBILE + MENU */
@media(max-width:720px){
  .wrap{ margin:24px auto; padding:0 12px; }
  .header{ padding:8px 12px; flex-wrap:wrap; }
  .header-left{ font-size:16px; }
  .header-logo{ height:28px; }
  .header-toggle{ display:block; }
  .header-nav{
    width:100%; flex-direction:column; align-items:flex-start; gap:8px;
    margin-top:10px; display:none;
  }
  .header.header--open .header-nav{ display:flex; }
  .grid.cols-2{ grid-template-columns:1fr; }
  .card{ padding:16px; margin-top:14px; }
  .actions{ flex-direction:column; }
  .actions .btn,.actions .btn-small{ width:100%; text-align:center; }
  input[type="text"],input[type="number"],input[type="email"],input[type="password"],textarea{
    font-size:15px; padding:9px 11px;
  }
  .select,.date{ padding:14px 48px 14px 14px; font-size:16px; }
  .totals{ font-size:13px; }
}

/* TELEMÓVEIS PEQUENOS */
@media(max-width:480px){
  h1{ font-size:20px; margin-bottom:16px; }
  .wrap{ padding:0 10px; }
  .card{ padding:14px; }
}

/* Estados opcionais */
.input-success{ border-color:#16a34a !important; box-shadow:0 0 0 4px rgba(22,163,74,.18) !important; }
.input-error{ border-color:#ef4444 !important; box-shadow:0 0 0 4px rgba(239,68,68,.18) !important; }

/* ====== CLASSES ADICIONAIS PARA COMPATIBILIDADE ====== */

/* Dicas e estados */
.hint{ font-size:12px; color:var(--muted); margin-top:6px; }
.success{ color:#166534; background:rgba(22,101,52,.08); border:1px solid rgba(22,101,52,.25); padding:10px 12px; border-radius:10px; }

/* Botões variantes */
.btn-secondary{
  background:transparent; color:var(--brand);
  border:1px solid color-mix(in sRGB, var(--brand) 40%, var(--bd));
}
.btn-secondary:hover{ background:rgba(31,92,122,.08); }
.btn-ghost{
  background:transparent; color:var(--fg); border:1px dashed var(--bd);
}
.btn-danger{
  background:linear-gradient(180deg,#dc2626,#b91c1c);
  color:#fff;
}

/* Resultados e ações */
.card.result{ display:flex; flex-direction:column; gap:8px; }
.result .actions{ display:flex; gap:8px; margin-top:8px; }

/* Drawer lateral (visualização de documento) */
.drawer{ position:fixed; inset:0; pointer-events:none; }
.drawer-panel{
  position:absolute; right:0; top:0; height:100%; width:min(720px, 92vw);
  background:var(--card); border-left:1px solid var(--bd);
  box-shadow:-16px 0 40px rgba(0,0,0,.25);
  transform:translateX(100%); transition:transform .25s ease;
  display:flex; flex-direction:column;
}
.drawer.open{ pointer-events:auto; background:rgba(15,23,42,.45); }
.drawer.open .drawer-panel{ transform:translateX(0); }
.drawer-header{
  padding:12px 16px; border-bottom:1px solid var(--bd);
  display:flex; align-items:center; justify-content:space-between;
}
.drawer-title{ font-weight:700; }
.drawer-body{ padding:0; overflow:auto; height:100%; }
.drawer-close{
  background:transparent; border:0; cursor:pointer; font-weight:700; color:var(--muted);
}

/* Modal genérico (sincronização) */
.modal{ position:fixed; inset:0; display:none; align-items:center; justify-content:center; background:rgba(15,23,42,.45); z-index:200; }
.modal.open{ display:flex; }
.modal-card{
  background:#ffffff; border-radius:12px; max-width:480px; width:92%;
  padding:20px; box-shadow:0 10px 40px rgba(0,0,0,.35);
}

/* Tabela simples */
.table{ width:100%; border-collapse:collapse; }
.table th,.table td{ padding:10px 12px; border-bottom:1px solid var(--bd); text-align:left; }
.table th{ color:var(--muted); font-weight:700; }

/* Utilidades */
.hidden{ display:none !important; }
.text-right{ text-align:right; }
.text-center{ text-align:center; }
.badge{
  display:inline-block; padding:2px 8px; border-radius:999px;
  background:rgba(31,92,122,.12); color:var(--brand); font-size:12px; font-weight:700;
}

/* Compatibilidade: aplicar skin também a elementos sem classe */
select{ appearance:none; }
select:not(.no-skin){ border:1px solid var(--bd); border-radius:12px; padding:12px 44px 12px 12px; background:var(--card); color:var(--fg); }
input[type="date"]:not(.no-skin){ border:1px solid var(--bd); border-radius:12px; padding:12px 14px; background:var(--card); color:var(--fg); }