*{margin:0;padding:0;box-sizing:border-box}
:root{
  --bem-primary:#3b82f6;
  --bem-secondary:#8b5cf6;
  --bem-success:#10b981;
  --bem-danger:#ef4444;
  --bem-warning:#f59e0b;
  --bem-dark:#1f2937;
  --bem-light:#f3f4f6;
  --bem-bg:#ffffff;
  --bem-surface:#ffffff;
  --bem-text:#1f2937;
  --bem-text-muted:#6b7280;
  --bem-border:#e5e7eb;
  --bem-spacing-xs:.25rem;
  --bem-spacing-sm:.5rem;
  --bem-spacing-md:1rem;
  --bem-spacing-lg:1.5rem;
  --bem-spacing-xl:2rem;
  --bem-font-base:-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
  --bem-font-mono:'Courier New', monospace;
  --bem-radius-sm:.25rem;
  --bem-radius-md:.5rem;
  --bem-radius-lg:1rem;
  --bem-shadow-sm:0 1px 2px 0 rgba(0,0,0,.05);
  --bem-shadow-md:0 4px 6px -1px rgba(0,0,0,.1);
  --bem-shadow-lg:0 10px 15px -3px rgba(0,0,0,.1);
}
[data-theme="dia"]{
  --bem-primary:#8b5cf6;
  --bem-bg:#f5f5f7;
}
[data-theme="tarde"]{
  --bem-primary:#f97316;
  --bem-secondary:#d946ef;
  --bem-bg:#fdf5ee;
  --bem-surface:#fffaf7;
  --bem-text-muted:#78716c;
  --bem-border:#e7d5c4;
  --bem-light:#fae8d5;
}
[data-theme="noite"]{
  --bem-primary:#2dd4bf;
  --bem-secondary:#a78bfa;
  --bem-success:#34d399;
  --bem-danger:#f87171;
  --bem-bg:#0f172a;
  --bem-surface:#1e293b;
  --bem-text:#f1f5f9;
  --bem-text-muted:#94a3b8;
  --bem-border:#334155;
  --bem-light:#334155;
}
body{
  font-family:var(--bem-font-base);
  line-height:1.5;
  color:var(--bem-text);
  background:var(--bem-bg);
  transition:background .25s, color .25s;
}
.bem-container{
  width:100%;
  max-width:1200px;
  margin:0 auto;
  padding:0 var(--bem-spacing-md);
}
.bem-container--fluid{ max-width:100% }
.bem-container--narrow{ max-width:800px }
.bem-grid { display: grid; gap: var(--bem-spacing-md) }
.bem-btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:var(--bem-spacing-sm) var(--bem-spacing-lg);
  font-size:1rem;
  font-weight:500;
  border:none;
  border-radius:var(--bem-radius-md);
  cursor:pointer;
  transition:all .2s ease;
  text-decoration:none;
  gap:var(--bem-spacing-sm);
}
.bem-btn:hover{ transform:translateY(-1px);box-shadow:var(--bem-shadow-md) }
.bem-btn:active{ transform:translateY(0) }
.bem-btn--primary{ background-color:var(--bem-primary);color:#fff }
.bem-btn--primary:hover{ filter:brightness(.9) }
.bem-btn--secondary{ background-color:var(--bem-secondary);color:#fff }
.bem-btn--secondary:hover{ filter:brightness(.9) }
.bem-btn--success{ background-color:var(--bem-success);color:#fff }
.bem-btn--danger{ background-color:var(--bem-danger);color:#fff }
.bem-btn--outline{
  background-color:transparent;
  border:2px solid var(--bem-primary);
  color:var(--bem-primary);
}
.bem-btn--outline:hover{ background-color:var(--bem-primary);color:#fff }
.bem-btn--sm{ padding:var(--bem-spacing-xs) var(--bem-spacing-md);font-size:.875rem }
.bem-btn--lg{ padding:var(--bem-spacing-md) var(--bem-spacing-xl);font-size:1.125rem }
.bem-btn--block{ width:100% }
.bem-btn:disabled,.bem-btn--disabled{ opacity:.5;cursor:not-allowed;pointer-events:none }
.bem-btn__icon{ display:inline-flex;font-size:1.25em }
.bem-btn__text{ display:inline-flex }
.bem-card{
  background-color:var(--bem-surface);
  border-radius:var(--bem-radius-lg);
  box-shadow:var(--bem-shadow-md);
  overflow:hidden;
  transition:all .3s ease;
}
.bem-card:hover{ box-shadow:var(--bem-shadow-lg);transform:translateY(-2px) }
.bem-card--flat{ box-shadow:none;border:1px solid var(--bem-border) }
.bem-card__header{ padding:var(--bem-spacing-lg);border-bottom:1px solid var(--bem-border) }
.bem-card__title{ font-size:1.25rem;font-weight:600;margin:0;color:var(--bem-text) }
.bem-card__subtitle{ font-size:.875rem;color:var(--bem-text-muted);margin-top:var(--bem-spacing-xs) }
.bem-card__body{ padding:var(--bem-spacing-lg) }
.bem-card__footer{
  padding:var(--bem-spacing-lg);
  border-top:1px solid var(--bem-border);
  background-color:var(--bem-light);
}
.bem-card__image{ width:100%;height:auto;display:block }
.bem-card__actions{ display:flex;gap:var(--bem-spacing-sm);align-items:center }
.bem-form{ display:flex;flex-direction:column;gap:var(--bem-spacing-md) }
.bem-form__group{ display:flex;flex-direction:column;gap:var(--bem-spacing-xs) }
.bem-form__label{ font-weight:500;font-size:.875rem;color:var(--bem-text) }
.bem-form__label--required::after{ content:' *';color:var(--bem-danger) }
.bem-form__input,
.bem-form__textarea,
.bem-form__select{
  width:100%;
  padding:var(--bem-spacing-sm) var(--bem-spacing-md);
  border:2px solid var(--bem-border);
  border-radius:var(--bem-radius-md);
  font-size:1rem;
  font-family:inherit;
  transition:all .2s ease;
  background:var(--bem-surface);
  color:var(--bem-text);
}
.bem-form__input:focus,
.bem-form__textarea:focus,
.bem-compare__range:focus-visible{
  opacity:.01;
  outline:3px solid var(--bem-primary);
  outline-offset:-3px;
}
@keyframes bem-fade-in{ from{ opacity:0}to{ opacity:1}}
@keyframes bem-slide-up{ from{ opacity:0;transform:translateY(20px)}to{ opacity:1;transform:translateY(0)}}
@keyframes bem-scale-up{ from{ opacity:0;transform:scale(0.95)}to{ opacity:1;transform:scale(1)}}
.bem-animate-fade-in{ animation:bem-fade-in 0.3s ease forwards}
.bem-animate-slide-up{ animation:bem-slide-up 0.4s ease forwards}
.bem-grid-auto{ display:grid;grid-template-columns:repeat(auto-fit, minmax(280px, 1fr));gap:var(--bem-spacing-md)}
.bem-flex-1{ flex:1}
.bem-flex-wrap{ flex-wrap:wrap}
.bem-h-screen{ height:100vh}
.bem-min-h-screen{ min-height:100vh}
.bem-w-screen{ width:100vw}
.bem-m-0{ margin:0}
.bem-p-0{ padding:0}
.bem-mx-auto{ margin-left:auto;margin-right:auto}
.bem-my-auto{ margin-top:auto;margin-bottom:auto}
.bem-mt-auto{ margin-top:auto}
.bem-pt-xl{ padding-top:var(--bem-spacing-xl)}
.bem-pb-xl{ padding-bottom:var(--bem-spacing-xl)}
.bem-px-lg{ padding-left:var(--bem-spacing-lg);padding-right:var(--bem-spacing-lg)}
.bem-gap-lg{ gap:var(--bem-spacing-lg)}
.bem-gap-xl{ gap:var(--bem-spacing-xl)}
.bem-text-primary{ color:var(--bem-primary)}
.bem-text-secondary{ color:var(--bem-secondary)}
.bem-text-success{ color:var(--bem-success)}
.bem-text-danger{ color:var(--bem-danger)}
.bem-text-muted-util{ color:var(--bem-text-muted)}
.bem-font-bold{ font-weight:700}
.bem-font-medium{ font-weight:500}
.bem-text-xl{ font-size:1.25rem}
.bem-text-2xl{ font-size:1.5rem}
.bem-text-xs{ font-size:0.75rem}
.bem-text-sm{ font-size:0.875rem}
.bem-icon-lg{ font-size:2rem;display:inline-flex;justify-content:center;align-items:center}
.bem-text-underline{ text-decoration:underline}
.bem-bg-glass{ background-color:rgba(255,255,255,.2);backdrop-filter:blur(4px);border:1px solid rgba(255,255,255,.3)}
[data-theme="noite"] .bem-bg-glass{ background-color:rgba(15,23,42,.4);border-color:rgba(255,255,255,.1)}
.bem-border-primary{ border-color:var(--bem-primary)}
.bem-border-top-primary{ border-top:3px solid var(--bem-primary)}
.bem-border-top-secondary{ border-top:3px solid var(--bem-secondary)}
.bem-border-left-success{ border-left-color:var(--bem-success)}
.bem-border-default{ border:1px solid var(--bem-border)}
.bem-max-w-xxs{ max-width:220px}
.bem-max-w-xs{ max-width:280px}
.bem-max-w-sm{ max-width:400px}
.bem-form__input--error,.bem-form__textarea--error,.bem-form__select--error{ border-color:var(--bem-danger) }
.bem-form__input--success,.bem-form__textarea--success,.bem-form__select--success{ border-color:var(--bem-success) }
.bem-form__textarea{ min-height:100px;resize:vertical }
.bem-form__help{ font-size:.875rem;color:var(--bem-text-muted) }
.bem-form__error{ font-size:.875rem;color:var(--bem-danger) }
.bem-form__checkbox,.bem-form__radio{ display:flex;align-items:center;gap:var(--bem-spacing-sm) }
.bem-form__checkbox input,.bem-form__radio input{ width:auto }
.bem-alert{
  padding:var(--bem-spacing-md);
  border-radius:var(--bem-radius-md);
  border-left:4px solid;
  display:flex;
  align-items:flex-start;
  gap:var(--bem-spacing-sm);
}
.bem-alert--info{ background-color:#dbeafe;border-color:var(--bem-primary);color:#1e40af }
.bem-alert--success{ background-color:#d1fae5;border-color:var(--bem-success);color:#065f46 }
.bem-alert--warning{ background-color:#fef3c7;border-color:var(--bem-warning);color:#92400e }
.bem-alert--danger{ background-color:#fee2e2;border-color:var(--bem-danger);color:#991b1b }
.bem-alert__icon{ font-size:1.25rem;flex-shrink:0 }
.bem-alert__content{ flex:1 }
.bem-alert__title{ font-weight:600;margin-bottom:var(--bem-spacing-xs) }
.bem-alert__message{ font-size:.875rem }
.bem-alert__close{
  background:none;border:none;cursor:pointer;padding:0;
  font-size:1.25rem;opacity:.6;transition:opacity .2s;
  color:inherit;
}
.bem-alert__close:hover{ opacity:1 }
.bem-navbar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:var(--bem-spacing-md) var(--bem-spacing-lg);
  background-color:var(--bem-surface);
  box-shadow:var(--bem-shadow-sm);
  border-bottom:1px solid var(--bem-border);
  transition:background .25s;
  position:sticky; top:0; z-index:100;
}
.bem-navbar--dark{ background-color:var(--bem-dark);color:#fff }
.bem-navbar__brand{ font-size:1.5rem;font-weight:700;text-decoration:none;color:inherit }
.bem-navbar__menu{ display:flex;gap:var(--bem-spacing-lg);list-style:none;align-items:center }
.bem-navbar__item{ display:inline-flex }
.bem-navbar__link{ text-decoration:none;color:var(--bem-text-muted);padding:var(--bem-spacing-sm);transition:color .2s }
.bem-navbar__link:hover{ color:var(--bem-primary) }
.bem-navbar__link--active{ color:var(--bem-primary);font-weight:600 }
.bem-navbar__toggle{ display:none;background:none;border:none;font-size:1.5rem;cursor:pointer;color:var(--bem-text) }
.bem-modal{
  position:fixed;inset:0;
  background-color:rgba(0,0,0,.5);
  display:flex;align-items:center;justify-content:center;
  z-index:1000;padding:var(--bem-spacing-md);
  animation:bem-fade-in 0.2s ease forwards;
}
.bem-modal--hidden{ display:none }
.bem-modal__dialog{
  background-color:var(--bem-surface);
  border-radius:var(--bem-radius-lg);
  box-shadow:var(--bem-shadow-lg);
  max-width:500px;width:100%;max-height:90vh;overflow:auto;
  animation:bem-scale-up 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards;
}
.bem-modal__header{
  padding:var(--bem-spacing-lg);
  border-bottom:1px solid var(--bem-border);
  display:flex;align-items:center;justify-content:space-between;
}
.bem-modal__title{ font-size:1.25rem;font-weight:600;margin:0;color:var(--bem-text) }
.bem-modal__close{
  background:none;border:none;font-size:1.5rem;cursor:pointer;
  padding:0;color:var(--bem-text-muted);transition:color .2s;
}
.bem-modal__close:hover{ color:var(--bem-text) }
.bem-modal__body{ padding:var(--bem-spacing-lg) }
.bem-modal__footer{
  padding:var(--bem-spacing-lg);
  border-top:1px solid var(--bem-border);
  display:flex;gap:var(--bem-spacing-sm);justify-content:flex-end;
}
.bem-navbar__checkbox{ display:none }
.bem-theme-toggle{
  position:fixed;bottom:1.5rem;right:1.5rem;z-index:9999;
  display:flex;gap:.25rem;
  background:var(--bem-surface);
  padding:.375rem;
  border-radius:9999px;
  box-shadow:var(--bem-shadow-lg);
  border:1px solid var(--bem-border);
  transition:background .25s, border-color .25s;
}
.bem-theme-toggle__btn{
  background:none;border:none;cursor:pointer;
  font-size:1.125rem;padding:.375rem .5rem;
  border-radius:9999px;transition:background .15s;
  line-height:1;color:var(--bem-text);
}
.bem-theme-toggle__btn:hover{ background:var(--bem-light) }
.bem-theme-toggle__btn--active{ background:var(--bem-primary);color:#fff }
.bem-text-center{ text-align:center }
.bem-text-left{ text-align:left }
.bem-text-right{ text-align:right }
.bem-mt-sm{ margin-top:var(--bem-spacing-sm) }
.bem-mt-md{ margin-top:var(--bem-spacing-md) }
.bem-mt-lg{ margin-top:var(--bem-spacing-lg) }
.bem-mb-sm{ margin-bottom:var(--bem-spacing-sm) }
.bem-mb-md{ margin-bottom:var(--bem-spacing-md) }
.bem-mb-lg{ margin-bottom:var(--bem-spacing-lg) }
.bem-p-sm{ padding:var(--bem-spacing-sm) }
.bem-p-md{ padding:var(--bem-spacing-md) }
.bem-p-lg{ padding:var(--bem-spacing-lg) }
.bem-flex{ display:flex }
.bem-flex-col{ flex-direction:column }
.bem-items-center{ align-items:center }
.bem-justify-center{ justify-content:center }
.bem-justify-between{ justify-content:space-between }
.bem-gap-sm{ gap:var(--bem-spacing-sm) }
.bem-gap-md{ gap:var(--bem-spacing-md) }
.bem-w-full{ width:100% }
.bem-h-full{ height:100% }
.bem-rounded{ border-radius:var(--bem-radius-md) }
.bem-rounded-full{ border-radius:9999px }
.bem-shadow{ box-shadow:var(--bem-shadow-md) }
.bem-shadow-lg{ box-shadow:var(--bem-shadow-lg) }
.bem-grid-auto-4{ display:grid;grid-template-columns:repeat(auto-fit, minmax(60px, 1fr))}
@media(max-width:768px){
  .bem-grid--cols-2,.bem-grid--cols-3,.bem-grid--cols-4 { grid-template-columns: 1fr }
  .bem-navbar__menu{ display:none }
  .bem-navbar__toggle{ display:block; cursor:pointer; margin-left:auto; }
  .bem-hide-mobile{ display:none !important }
  .bem-navbar__checkbox:checked ~ .bem-navbar__menu {
    display:flex !important;
    flex-direction:column;
    align-items: stretch;
    position:absolute; top:100%; left:0; right:0;
    background-color:var(--bem-surface);
    padding:var(--bem-spacing-md);
    box-shadow:var(--bem-shadow-md);
    animation:bem-slide-up 0.3s forwards;
    z-index: 1000;
  }
}