/* ===================================================================
   NAVALHA — COMPONENTES COMPARTILHADOS
   =================================================================== */

/* -------- Botões -------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.5rem;
  padding:.8rem 1.5rem;border-radius:var(--r-sm);font-weight:600;font-size:.92rem;
  transition:transform var(--dur) var(--ease), background var(--dur) var(--ease), border-color var(--dur) var(--ease), color var(--dur) var(--ease), box-shadow var(--dur) var(--ease);
  white-space:nowrap;border:1px solid transparent;
}
.btn:active{transform:scale(.97);}
.btn-lg{padding:1rem 2rem;font-size:1rem;}
.btn-sm{padding:.55rem 1.1rem;font-size:.82rem;}
.btn-block{width:100%;}
.btn-icon{padding:.6rem;border-radius:var(--r-sm);}

.btn-primary{background:var(--accent);color:var(--accent-ink);}
.btn-primary:hover{background:var(--accent-light);box-shadow:var(--shadow-md);}

.btn-ghost{border-color:var(--border-soft);color:var(--ink);}
.btn-ghost:hover{border-color:var(--accent);color:var(--accent-light);}
.theme-light .btn-ghost{border-color:var(--l-border);color:var(--l-ink);}
.theme-light .btn-ghost:hover{border-color:var(--accent);color:var(--accent);}

.btn-subtle{background:var(--bg-elevated);color:var(--ink);}
.btn-subtle:hover{background:var(--bg-elevated-2);}
.theme-light .btn-subtle{background:var(--l-surface-alt);color:var(--l-ink);}
.theme-light .btn-subtle:hover{background:var(--l-border);}

.btn-danger{background:var(--danger-bg);color:var(--danger);}
.btn-danger:hover{background:var(--danger);color:#fff;}

.btn:disabled{opacity:.4;cursor:not-allowed;pointer-events:none;}

/* -------- Cards -------- */
.card{
  background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--r-lg);
  padding:var(--sp-5);
}
.theme-light .card{background:var(--l-surface);border-color:var(--l-border);box-shadow:var(--shadow-l-sm);}
.card-hover{transition:transform var(--dur) var(--ease), box-shadow var(--dur) var(--ease), border-color var(--dur) var(--ease);}
.card-hover:hover{transform:translateY(-4px);border-color:var(--accent);box-shadow:var(--shadow-md);}
.theme-light .card-hover:hover{box-shadow:var(--shadow-l-md);}

/* -------- Badges / pills -------- */
.badge{
  display:inline-flex;align-items:center;gap:.35rem;padding:.3rem .7rem;border-radius:var(--r-pill);
  font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;
}
.badge-dot::before{content:'';width:6px;height:6px;border-radius:50%;background:currentColor;}
.badge-success{background:var(--success-bg);color:var(--success);}
.badge-warning{background:var(--warning-bg);color:var(--warning);}
.badge-danger{background:var(--danger-bg);color:var(--danger);}
.badge-info{background:var(--info-bg);color:var(--info);}
.badge-neutral{background:var(--bg-elevated-2);color:var(--ink-dim);}
.theme-light .badge-neutral{background:var(--l-surface-alt);color:var(--l-ink-dim);}
.badge-accent{background:rgba(192,138,62,.14);color:var(--accent-light);}
.theme-light .badge-accent{color:var(--accent);}

/* -------- Inputs -------- */
.field{display:flex;flex-direction:column;gap:.45rem;}
.field label{font-size:.82rem;font-weight:600;color:var(--ink-dim);}
.theme-light .field label{color:var(--l-ink-dim);}
.input,.select,.textarea{
  background:var(--bg-elevated-2);border:1px solid var(--border-soft);border-radius:var(--r-sm);
  padding:.75rem .9rem;font-size:.92rem;color:var(--ink);width:100%;
  transition:border-color var(--dur) var(--ease), background var(--dur) var(--ease);
}
.input::placeholder{color:var(--ink-mute);}
.input:focus,.select:focus,.textarea:focus{border-color:var(--accent);}
.theme-light .input,.theme-light .select,.theme-light .textarea{
  background:var(--l-surface);border-color:var(--l-border);color:var(--l-ink);
}
.theme-light .input::placeholder{color:var(--l-ink-mute);}
.textarea{resize:vertical;min-height:90px;}
.select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%237C766C' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .9rem center;padding-right:2.2rem;}

.checkbox-row{display:flex;align-items:center;gap:.6rem;font-size:.88rem;cursor:pointer;}
.checkbox-row input[type="checkbox"]{
  appearance:none;width:19px;height:19px;border:1.5px solid var(--border-soft);border-radius:5px;
  display:grid;place-items:center;flex-shrink:0;transition:background var(--dur) var(--ease), border-color var(--dur) var(--ease);
}
.theme-light .checkbox-row input[type="checkbox"]{border-color:var(--l-border);}
.checkbox-row input[type="checkbox"]:checked{background:var(--accent);border-color:var(--accent);}
.checkbox-row input[type="checkbox"]:checked::after{content:'';width:5px;height:9px;border:solid var(--accent-ink);border-width:0 2px 2px 0;transform:rotate(45deg) translate(-1px,-1px);}

.switch{position:relative;display:inline-block;width:42px;height:24px;flex-shrink:0;}
.switch input{position:absolute;opacity:0;width:100%;height:100%;margin:0;cursor:pointer;z-index:1;}
.switch-track{position:absolute;inset:0;background:var(--bg-elevated-2);border:1px solid var(--border-soft);border-radius:var(--r-pill);transition:background var(--dur) var(--ease);}
.theme-light .switch-track{background:var(--l-surface-alt);border-color:var(--l-border);}
.switch-track::after{content:'';position:absolute;top:2px;left:2px;width:18px;height:18px;background:var(--ink-mute);border-radius:50%;transition:transform var(--dur) var(--ease), background var(--dur) var(--ease);}
.switch input:checked ~ .switch-track{background:var(--accent);border-color:var(--accent);}
.switch input:checked ~ .switch-track::after{transform:translateX(18px);background:var(--accent-ink);}

/* -------- Tabela -------- */
.table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--r-lg);}
.theme-light .table-wrap{border-color:var(--l-border);}
table.data-table{width:100%;border-collapse:collapse;font-size:.88rem;min-width:640px;}
.data-table th{text-align:left;padding:.9rem 1.1rem;font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-mute);background:var(--bg-elevated);border-bottom:1px solid var(--border);}
.theme-light .data-table th{background:var(--l-surface-alt);color:var(--l-ink-mute);border-color:var(--l-border);}
.data-table td{padding:1rem 1.1rem;border-bottom:1px solid var(--border);vertical-align:middle;}
.theme-light .data-table td{border-color:var(--l-border);}
.data-table tbody tr{background:var(--bg-elevated);transition:background var(--dur) var(--ease);}
.theme-light .data-table tbody tr{background:var(--l-surface);}
.data-table tbody tr:hover{background:var(--bg-elevated-2);cursor:pointer;}
.theme-light .data-table tbody tr:hover{background:var(--l-surface-alt);}
.data-table tbody tr:last-child td{border-bottom:none;}

/* -------- Modal -------- */
.modal-overlay{
  position:fixed;inset:0;background:rgba(6,6,7,.6);backdrop-filter:blur(3px);
  display:flex;align-items:center;justify-content:center;padding:1.25rem;z-index:900;
  opacity:0;pointer-events:none;transition:opacity var(--dur) var(--ease);
}
.modal-overlay.is-open{opacity:1;pointer-events:auto;}
.modal{
  background:var(--bg-elevated);border:1px solid var(--border-soft);border-radius:var(--r-lg);
  width:100%;max-width:460px;max-height:88vh;overflow-y:auto;box-shadow:var(--shadow-lg);
  transform:translateY(16px) scale(.98);opacity:0;transition:transform var(--dur) var(--ease), opacity var(--dur) var(--ease);
}
.theme-light .modal{background:var(--l-surface);}
.modal-overlay.is-open .modal{transform:none;opacity:1;}
.modal-lg{max-width:640px;}
.modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-5) var(--sp-5) 0;}
.modal-body{padding:var(--sp-5);}
.modal-footer{display:flex;justify-content:flex-end;gap:.75rem;padding:0 var(--sp-5) var(--sp-5);}
.modal-close{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;color:var(--ink-mute);}
.modal-close:hover{background:var(--bg-elevated-2);color:var(--ink);}
.theme-light .modal-close:hover{background:var(--l-surface-alt);color:var(--l-ink);}

/* -------- Toast -------- */
#toast-region{position:fixed;bottom:1.5rem;right:1.5rem;display:flex;flex-direction:column;gap:.6rem;z-index:1000;max-width:340px;}
.toast{
  background:var(--bg-elevated-2);border:1px solid var(--border-soft);border-left:3px solid var(--accent);
  border-radius:var(--r-sm);padding:.9rem 1.1rem;box-shadow:var(--shadow-md);font-size:.86rem;
  display:flex;align-items:flex-start;gap:.6rem;animation:toastIn var(--dur) var(--ease) both;
}
.theme-light .toast{background:var(--l-surface);}
.toast.toast-success{border-left-color:var(--success);}
.toast.toast-danger{border-left-color:var(--danger);}
.toast.leaving{animation:toastOut var(--dur) var(--ease) both;}
@keyframes toastIn{from{opacity:0;transform:translateX(20px);}to{opacity:1;transform:none;}}
@keyframes toastOut{to{opacity:0;transform:translateX(20px);}}

/* -------- Tooltip -------- */
[data-tooltip]{position:relative;}
[data-tooltip]::after{
  content:attr(data-tooltip);position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%) translateY(4px);
  background:var(--bg-elevated-2);color:var(--ink);border:1px solid var(--border-soft);padding:.4rem .7rem;border-radius:6px;
  font-size:.74rem;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity var(--dur) var(--ease), transform var(--dur) var(--ease);z-index:50;
}
[data-tooltip]:hover::after{opacity:1;transform:translateX(-50%) translateY(0);}

/* -------- Skeleton loading -------- */
.skeleton{background:linear-gradient(90deg,var(--bg-elevated) 25%,var(--bg-elevated-2) 37%,var(--bg-elevated) 63%);background-size:400% 100%;animation:skeletonShine 1.4s ease infinite;border-radius:var(--r-sm);}
.theme-light .skeleton{background:linear-gradient(90deg,var(--l-surface-alt) 25%,var(--l-border) 37%,var(--l-surface-alt) 63%);background-size:400% 100%;}
@keyframes skeletonShine{0%{background-position:100% 0;}100%{background-position:-100% 0;}}

/* -------- Empty state -------- */
.empty-state{text-align:center;padding:var(--sp-8) var(--sp-4);color:var(--ink-mute);}
.theme-light .empty-state{color:var(--l-ink-mute);}
.empty-state .empty-icon{width:56px;height:56px;margin:0 auto var(--sp-3);opacity:.5;}

/* -------- Avatar -------- */
.avatar{border-radius:50%;object-fit:cover;background:var(--bg-elevated-2);flex-shrink:0;}
.avatar-fallback{display:grid;place-items:center;font-family:var(--font-display);font-weight:700;background:var(--accent);color:var(--accent-ink);border-radius:50%;flex-shrink:0;}

/* -------- Stars -------- */
.stars{color:var(--accent-light);font-size:.85rem;letter-spacing:1px;}
.theme-light .stars{color:var(--accent);}

/* -------- Stepper -------- */
.stepper{display:flex;align-items:center;gap:0;margin-bottom:var(--sp-6);}
.stepper-item{display:flex;align-items:center;gap:.6rem;flex:1;}
.stepper-item:not(:last-child)::after{content:'';flex:1;height:1px;background:var(--border-soft);margin:0 .5rem;}
.theme-light .stepper-item:not(:last-child)::after{background:var(--l-border);}
.stepper-item.is-done:not(:last-child)::after{background:var(--accent);}
.stepper-num{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;font-size:.82rem;font-weight:700;flex-shrink:0;background:var(--bg-elevated-2);color:var(--ink-mute);border:1px solid var(--border-soft);}
.theme-light .stepper-num{background:var(--l-surface-alt);color:var(--l-ink-mute);border-color:var(--l-border);}
.stepper-item.is-active .stepper-num{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);}
.stepper-item.is-done .stepper-num{background:transparent;color:var(--accent);border-color:var(--accent);}
.stepper-label{font-size:.82rem;font-weight:600;color:var(--ink-mute);display:none;}
.theme-light .stepper-label{color:var(--l-ink-mute);}
.stepper-item.is-active .stepper-label{color:var(--ink);}
.theme-light .stepper-item.is-active .stepper-label{color:var(--l-ink);}
@media (min-width:640px){.stepper-label{display:block;}}

/* -------- Accordion -------- */
.accordion-item{border-bottom:1px solid var(--border);}
.theme-light .accordion-item{border-color:var(--l-border);}
.accordion-trigger{width:100%;display:flex;justify-content:space-between;align-items:center;padding:var(--sp-4) 0;text-align:left;font-weight:600;font-size:1rem;}
.accordion-trigger .chev{transition:transform var(--dur) var(--ease);color:var(--accent-light);flex-shrink:0;margin-left:1rem;}
.theme-light .accordion-trigger .chev{color:var(--accent);}
.accordion-item.is-open .accordion-trigger .chev{transform:rotate(180deg);}
.accordion-panel{max-height:0;overflow:hidden;transition:max-height var(--dur-slow) var(--ease);}
.accordion-panel-inner{padding-bottom:var(--sp-4);color:var(--ink-dim);}
.theme-light .accordion-panel-inner{color:var(--l-ink-dim);}

/* -------- Utilitário de grid responsivo -------- */
.grid{display:grid;gap:var(--sp-5);}
.grid-2{grid-template-columns:repeat(2,1fr);}
.grid-3{grid-template-columns:repeat(3,1fr);}
.grid-4{grid-template-columns:repeat(4,1fr);}
@media (max-width:900px){.grid-3,.grid-4{grid-template-columns:repeat(2,1fr);}}
@media (max-width:640px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr;}}
