:root{
  --bg:#0b1220;
  --panel:#0f1a30;
  --card:#101e38;
  --muted:#9fb0d0;
  --text:#e9f0ff;
  --line:rgba(255,255,255,.08);
  --accent:#7c5cff;
  --accent2:#36d399;
  --danger:#ff5c7a;
  --shadow: 0 10px 30px rgba(0,0,0,.35);
  --radius:16px;
  --bn-inset: 0px; /* altura reservada para bottom-nav (solo móvil) */

  /* AJUSTES RÁPIDOS (móvil): sheets + / Más */
  --sheetFabPadAdjust: -50px;  /* ↑↓ modal del botón + : usa valores negativos para BAJAR, positivos para SUBIR */
  --sheetMorePadAdjust: -3px; /* ↑↓ modal del menú Más: negativos BAJAN, positivos SUBEN */
  --sheetMoreRightAdjust: 10px; /* → modal Más: positivos lo mueven MÁS A LA DERECHA (translateX), negativos a la izquierda */

  /* TRANSPARENCIA del fondo (overlay) para TODOS los sheets/modales tipo "fh-sheet-overlay" */
  --sheetOverlayDim: 0.28;   /* 0 = nada oscuro, 1 = negro total. Recomendado 0.20 - 0.35 */
  --sheetOverlayBlur: 0px;   /* evita el "borroso". Si quieres leve blur: 2px - 4px */
}

*{box-sizing:border-box}
html,body{height:100%; overflow-x:hidden}

/* IMPORTANTE: asegura que el atributo hidden oculte siempre */
[hidden]{ display:none !important; }

body{
  margin:0;
  font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Arial, "Apple Color Emoji","Segoe UI Emoji";
  background: radial-gradient(1200px 800px at 20% 10%, #152a54 0%, var(--bg) 60%);
  color:var(--text);
  padding-bottom: env(safe-area-inset-bottom);
}

.topbar{
  position:sticky; top:0; z-index:10;
  display:flex; align-items:center; justify-content:space-between;
  padding:14px 16px;
  border-bottom:1px solid var(--line);
  background: rgba(11,18,32,.75);
  backdrop-filter: blur(10px);
}

.brand{display:flex; gap:12px; align-items:center}

.brand-logo{
  width:45px;
  height:45px;
  border-radius:10px;
  object-fit:cover;
  box-shadow: 0 10px 24px rgba(0,0,0,.25);
}

.dot{
  width:12px; height:12px; border-radius:999px;
  background: linear-gradient(135deg,var(--accent),#3aa0ff);
  box-shadow: 0 0 0 6px rgba(124,92,255,.15);
}
.brand-title{font-weight:700; letter-spacing:.2px}
.brand-sub{color:var(--muted); font-size:12px; margin-top:2px}

.top-actions{
  display:flex;
  align-items:center;
  gap:8px;
  flex-wrap:wrap;
}

.btn-install-app{
  border-color: rgba(54,211,153,.28);
  background: rgba(54,211,153,.08);
}
.btn-install-app:hover{
  background: rgba(54,211,153,.14);
}

.install-helper{
  max-width:1050px;
  margin:8px auto 0;
  padding:0 16px;
  color:var(--muted);
  font-size:12px;
}

.install-helper > span{
  display:inline-flex;
  align-items:center;
  gap:6px;
}

.install-helper__icon{
  color:#9fc7ff;
  display:inline-flex;
  align-items:center;
}

@media (max-width: 820px){
  .top-actions{
    gap:6px;
  }
  .top-actions .btn{
    padding:9px 10px;
    border-radius:10px;
    font-size:12px;
  }
  .install-helper{
    margin-top:6px;
    font-size:11.5px;
  }
}

.container{max-width:1050px; margin:0 auto; padding:18px 16px 48px}
.card{
  background: linear-gradient(180deg, rgba(255,255,255,.05), rgba(255,255,255,.03));
  border:1px solid var(--line);
  border-radius: var(--radius);
  padding:16px;
  box-shadow: var(--shadow);
}

/* ===== AUTH (mobile-first) ===== */
.auth-shell{
  display:grid;
  grid-template-columns: 1fr;
  gap:14px;
  align-items:start;
}
.auth-hero{
  padding:18px;
  background:
    radial-gradient(520px 220px at 0% 0%, rgba(124,92,255,.18), transparent 70%),
    radial-gradient(360px 220px at 100% 10%, rgba(54,211,153,.14), transparent 70%),
    linear-gradient(180deg, rgba(255,255,255,.05), rgba(255,255,255,.03));
}
.auth-hero__pill{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:6px 10px;
  border-radius:999px;
  border:1px solid rgba(255,255,255,.10);
  background: rgba(255,255,255,.04);
  font-size:12px;
  color:var(--muted);
  margin-bottom:10px;
}
.auth-hero__title{
  margin:0 0 8px;
  font-size:22px;
  line-height:1.2;
}
.auth-hero__copy{
  margin:0;
  line-height:1.45;
}
.auth-hero__list{
  display:grid;
  gap:8px;
  margin-top:14px;
}
.auth-hero__item{
  border:1px solid rgba(255,255,255,.08);
  background: rgba(255,255,255,.03);
  border-radius:12px;
  padding:10px 12px;
  font-size:13px;
}
.auth-hero__foot{ margin-top:12px; }
.auth-panel{
  padding:18px;
}
.auth-panel__head p{ margin:0 0 6px; }
.auth-grid{
  display:grid;
  grid-template-columns: 1fr;
  gap:12px;
}
.auth-check{
  display:flex;
  align-items:flex-start;
  gap:10px;
  margin-top:12px;
  font-size:13px;
  line-height:1.35;
  color:var(--muted);
}
.auth-check input{
  width:16px;
  height:16px;
  margin-top:2px;
  accent-color: var(--accent);
  flex:0 0 auto;
}
.auth-legal-links{
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:6px;
  margin-top:8px;
  color:var(--muted);
}
.auth-link-btn{
  border:none;
  background:transparent;
  color:#b7c7ee;
  padding:0;
  cursor:pointer;
  text-decoration:underline;
  font-size:12px;
}
.auth-link-btn:hover{ color:var(--text); }
.auth-actions{
  margin-top:12px;
}
.auth-actions .btn{
  flex:1 1 180px;
  min-height:42px;
}
@media (min-width: 900px){
  .auth-shell{ grid-template-columns: 1.05fr .95fr; }
}

h1,h2,h3{margin:0 0 10px}
h1{font-size:22px}
h2{font-size:18px}
h3{font-size:15px}
.muted{color:var(--muted)}
.small{font-size:12px}

.hr{height:1px; background:var(--line); margin:14px 0}

.row{display:flex; align-items:center}
.between{justify-content:space-between}
.gap{gap:10px}
.wrap{flex-wrap:wrap}

.grid2{display:grid; grid-template-columns: 1fr 1fr; gap:12px}
.grid3{display:grid; grid-template-columns: 1fr 1fr 1fr; gap:12px}
@media (max-width:820px){
  .grid2,.grid3{grid-template-columns:1fr}
}

.field{display:flex; flex-direction:column; gap:6px}
.field span{font-size:12px; color:var(--muted)}
.input, input, .select, select{
  width:100%;
  padding:10px 12px;
  border-radius:12px;
  border:1px solid var(--line);
  background: rgba(0,0,0,.18);
  color:var(--text);
  outline:none;
}
input::placeholder{color:rgba(233,240,255,.45)}

/* Selects con flecha visible (homogénea) */
select,
select.select,
select.input{
  appearance: none;
  -webkit-appearance: none;
  -moz-appearance: none;
  padding-right: 34px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23E9F0FF' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 10px center;
  background-size: 12px 12px;
}
select option{color:#0b1220}

.btn{
  border:1px solid var(--line);
  background: rgba(255,255,255,.06);
  color:var(--text);
  padding:10px 12px;
  border-radius:12px;
  cursor:pointer;
  transition: transform .04s ease, background .15s ease;
  user-select:none;
}
.btn:hover{background: rgba(255,255,255,.1)}
.btn:active{transform: translateY(1px)}
.btn.primary{
  border-color: rgba(124,92,255,.45);
  background: linear-gradient(135deg, rgba(124,92,255,.95), rgba(58,160,255,.85));
}
.btn.ghost{background: transparent}
.btn.danger{border-color: rgba(255,92,122,.45); background: rgba(255,92,122,.12)}

.notice{
  margin-top:10px;
  padding:10px 12px;
  border-radius:12px;
  border:1px solid var(--line);
  background: rgba(255,255,255,.06);
  color: var(--text);
}

.tabs{
  display:flex; gap:8px; flex-wrap:wrap;
  margin-bottom:12px;
}
.tab{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:10px 12px;
  border-radius:999px;
  border:1px solid var(--line);
  background: rgba(255,255,255,.06);
  color:var(--text);
  cursor:pointer;
}
.tab.active{
  border-color: rgba(124,92,255,.45);
  background: rgba(124,92,255,.18);
}
.tab.is-premium-locked{
  border-style:dashed;
  opacity:.92;
}

.panel{display:none}
.panel.active{display:block}

.cards{
  display:grid;
  grid-template-columns: repeat(auto-fit, minmax(0, 1fr));
  gap:12px;
  margin:12px 0;
}
@media (max-width:820px){ .cards{grid-template-columns:1fr} }

.kpi{padding:14px}
.kpi-label{color:var(--muted); font-size:12px}
.kpi-value{font-size:20px; font-weight:800; margin-top:6px}
.kpi.mini .kpi-value{font-size:16px}

@media (min-width:1024px){
  .kpi-value{font-size:22px}
  .kpi.mini .kpi-value{font-size:18px}
}

.list{display:flex; flex-direction:column; gap:10px}
.item{
  padding:12px;
  border-radius:14px;
  border:1px solid var(--line);
  background: rgba(0,0,0,.14);
}
.item-title{font-weight:700}
.item-sub{color:var(--muted); font-size:12px; margin-top:4px}
.item-actions{display:flex; gap:8px; margin-top:10px; flex-wrap:wrap}
.badge{
  display:inline-block;
  padding:2px 8px;
  border-radius:999px;
  border:1px solid rgba(255,255,255,.12);
  background: rgba(255,255,255,.06);
  font-size: 12px;
}

/* Badges semáforo (tarjetas) */
.badge.danger{ background:#3b1b1b; border-color:#7a2f2f; color:#ffd3d3; }
.badge.warn{ background:#3a2c12; border-color:#8a6a1d; color:#ffe9b5; }
.badge.success{ background:#163023; border-color:#2b6a4b; color:#c7ffe1; }

/* Bloques PRO de tarjetas */
.card-statement{ margin-top:6px; opacity:.95; }
.card-guidance{
  margin-top:6px;
  padding:10px 12px;
  border:1px solid rgba(255,255,255,.08);
  border-radius:12px;
  background:rgba(255,255,255,.03);
}
.card-guidance .mini-grid{
  display:grid;
  grid-template-columns: 1fr auto;
  gap:6px 12px;
  align-items:baseline;
}
.card-guidance .muted{ opacity:.85; font-size:12px; }

/* =========================
   PLAN: Tabs internos + tabla 12 meses (minimalista)
   ========================= */

.subtabs{
  display:flex; gap:8px; flex-wrap:wrap;
  margin: 6px 0 10px;
}
.subtab{
  padding:10px 12px;
  border-radius:999px;
  border:1px solid var(--line);
  background: rgba(255,255,255,.06);
  color:var(--text);
  cursor:pointer;
}
.subtab.active{
  border-color: rgba(124,92,255,.45);
  background: rgba(124,92,255,.18);
}

.subpanel{display:none}
.subpanel.active{display:block}

.table-wrap{
  border:1px solid var(--line);
  border-radius:14px;
  background: rgba(0,0,0,.10);
  overflow:auto;
  -webkit-overflow-scrolling: touch;
}

/* tabla minimalista (no estilo Excel) */
.min-table{
  width:100%;
  border-collapse: collapse;
  min-width: 920px; /* permite scroll horizontal en móvil */
}
.min-table th,
.min-table td{
  padding:10px 12px;
  border-bottom: 1px solid var(--line);
  font-size:12px;
  white-space: nowrap;
}
.min-table thead th{
  position: sticky;
  top: 0;
  z-index: 2;
  background: rgba(11,18,32,.92);
  backdrop-filter: blur(10px);
  color: var(--muted);
  font-weight: 700;
}
.min-table .col-cat{
  min-width: 220px;
  font-weight: 700;
}
.min-table tbody tr:hover td{
  background: rgba(255,255,255,.03);
}
.min-table .mutedcell{
  color: var(--muted);
  font-weight: 600;
}
.min-table .num{
  text-align:right;
  font-variant-numeric: tabular-nums;
}
.min-table .indent{
  padding-left: 22px;
  font-weight: 600;
}
.min-table .total-row td{
  border-top: 1px solid var(--line);
  background: rgba(255,255,255,.03);
  font-weight: 800;
}

.report-card{
  background: rgba(255,255,255,.03);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 14px;
}
.report-card h3{
  margin-top:0;
}

.mini-table{
  display:flex;
  flex-direction:column;
  gap: 8px;
}
.mini-row{
  display:flex;
  justify-content:space-between;
  gap:12px;
  padding: 8px 0;
  border-bottom: 1px solid var(--line);
}
.mini-row:last-child{
  border-bottom: none;
}
.mini-row .value{
  text-align:right;
  font-variant-numeric: tabular-nums;
}

/* Comparación: delta en verde/rojo + botón de expandir */
.delta.pos{ color: rgba(54,211,153,.95); font-weight:800; }
.delta.neg{ color: rgba(255,92,122,.95); font-weight:800; }

.iconbtn{
  width:24px;
  height:24px;
  border-radius:8px;
  border:1px solid var(--line);
  background: rgba(255,255,255,.06);
  color: var(--text);
  cursor:pointer;
  font-weight:900;
  line-height: 1;
  display:inline-flex;
  align-items:center;
  justify-content:center;
}
.iconbtn:hover{ background: rgba(255,255,255,.10); }

/* ===== TX Filters PRO (panel + chips) ===== */
.filterbtn-wrap{ position: relative; display:inline-flex; align-items:center; }
.filter-panel{
  position: absolute;
  top: calc(100% + 8px);
  right: 0;
  z-index: 50;

  width: min(92vw, 520px);
  max-width: 92vw;
  max-height: 85vh;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;

  padding: 12px;
  border-radius: 14px;
  border: 1px solid rgba(255,255,255,0.10);
  background: rgba(20,20,24,0.98);
  box-shadow: 0 12px 30px rgba(0,0,0,0.35);
}
.chips{ display:flex; gap:8px; flex-wrap:wrap; align-items:center; }
.chip{
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding: 6px 10px;
  border-radius: 999px;
  border: 1px solid rgba(255,255,255,0.14);
  background: rgba(255,255,255,0.06);
  color: inherit;
  cursor: pointer;
}
.chip:hover{ background: rgba(255,255,255,0.10); }

@media (max-width: 768px){
  .filter-panel{
    position: static;
    width: 100%;
    max-width: 100%;
    max-height: none;
    border-radius: 14px;
    padding: 10px;
    box-shadow: none;
    border-color: rgba(255,255,255,0.10);
    background: rgba(255,255,255,0.04);
  }
}

/* =========================
   Reportes: Sub-tabs + paneles
   ========================= */
.rep-panel{ display:none; }
.rep-panel.active{ display:block; }

/* visual del chip activo en sub-tabs */
.repSubTab.active{
  background: rgba(255,255,255,0.14);
  border-color: rgba(255,255,255,0.22);
}

/* ===== REPORTES: selector + fechas compactas en una sola fila ===== */
.rep-filters-bar{ align-items:center; }
.rep-filters-bar > select{
  width: 180px;
  max-width: 70vw;
  flex: 0 0 auto;
}
.rep-filters-bar > input[type="date"]{
  width: 160px;
  max-width: 45vw;
  flex: 0 0 auto;
}

/* ===== TX header/listado (mobile-first) ===== */
.tx-head-main{
  gap: 10px;
  margin-bottom: 8px;
}
.tx-head-main h2{ margin-bottom: 0; }

.tx-toolbar{
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 8px;
}
.tx-toolbar h2{
  margin: 0;
  flex: 0 0 auto;
}

.tx-period{
  flex: 0 1 auto;
  min-width: 0;
}

.tx-period .dash-period{
  width: auto;
}

.tx-period .dash-period-pill-wrap{
  flex: 0 0 auto;
  min-width: 0;
}

.tx-period .dash-period-pill{
  width: auto;
  min-width: 220px;
  max-width: 320px;
  padding: 9px 12px;
}

.tx-period .dash-period-main{ font-size: 12px; }
.tx-period .dash-period-sub{ font-size: 11px; }

.tx-filter-dates-hidden{
  display: none !important;
}

.tx-filters-actions{
  flex: 0 0 auto;
  justify-content: flex-end;
  margin-left: auto;
}

.tx-toolbar > .tx-newtx-btn{
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  white-space: nowrap;
}

.tx-newtx-btn__icon{
  display: none;
  font-weight: 800;
  line-height: 1;
}

.tx-toolbar .iconbtn{
  height: 40px;
  width: 40px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
}

@media (min-width: 769px){
  .tx-toolbar{
    flex-wrap: nowrap;
    gap: 10px;
  }

  .tx-toolbar .tx-period{
    margin-left: 40px; /* más separación visible con el título */
  }
}

.btn-small-fit{
  height: 34px;
  min-height: 34px;
  padding: 0 12px;
  border-radius: 10px;
  white-space: nowrap;
}

.tx-new-card{
  padding: 16px;
}
.tx-new-topbar{
  align-items: center;
  gap: 10px;
  margin-bottom: 10px;
}
.tx-new-topbar h2{ margin: 0; }

.tx-form-shell{
  display: grid;
  gap: 12px; /* separación entre tarjetas internas (desktop) | súbelo a 16-20px si quieres más aire, bájalo a 12px si lo quieres más compacto */
}
.tx-form-block{
  border: 1px solid rgba(255,255,255,.08);
  border-radius: 14px;
  background: rgba(7,14,28,.22);
  padding: 10px;
}
.tx-form-grid{
  display: grid;
  gap: 8px;
}
.tx-form-grid + .tx-form-grid{ margin-top: 8px; }
.tx-form-grid--3{ grid-template-columns: repeat(3, minmax(0,1fr)); }
.tx-form-grid--2{ grid-template-columns: repeat(2, minmax(0,1fr)); }
.tx-form-grid--meta{ grid-template-columns: minmax(0,1.35fr) minmax(0,.95fr); }
#fieldCategory{ grid-column:1; grid-row:1; }
#fieldMethod{ grid-column:2; grid-row:1; }
#fieldPurpose{ grid-column:1; grid-row:2; }
#fieldOwner{ grid-column:2; grid-row:2; }

/* Desktop: reordenar fila Método/Categoría respetando anchos actuales
   (Método estrecho a la izquierda, Categoría ancha a la derecha) */
@media (min-width: 769px){
  .tx-form-grid--meta{
    grid-template-columns: repeat(12, minmax(0,1fr));
    gap: 8px; /* aquí ajustas separación interna de esta tarjeta en desktop (Método/Categoría/Propósito/Propietario) */
  }

  /* Fila 1 (desktop): Método primero (estrecho) + Categoría después (ancha) */
  #fieldMethod{ grid-column:1 / span 5; grid-row:1; }   /* aquí haces Método más/menos ancho: span 4-6 */
  #fieldCategory{ grid-column:6 / -1; grid-row:1; }     /* empieza en (span de Método + 1) */

  /* Fila 2 (desktop): Propósito (ancho) + Propietario (estrecho) */
  #fieldPurpose{ grid-column:1 / span 7; grid-row:2; }  /* aquí haces Propósito más/menos ancho: span 6-8 */
  #fieldOwner{ grid-column:8 / -1; grid-row:2; }        /* empieza en (span de Propósito + 1) */

  /* Transferencia (desktop): al ocultarse Categoría/Propósito,
     Propietario sube y ocupa el lugar visual de Categoría */
  .tx-form-grid--meta:has(#fieldPurpose[hidden]) #fieldOwner,
  .tx-form-grid--meta:has(#fieldPurpose[style*="display:none"]) #fieldOwner,
  .tx-form-grid--meta:has(#fieldPurpose[style*="display: none"]) #fieldOwner{
    grid-column:6 / -1;
    grid-row:1;
  }
}

.tx-form-grid .field > span{
  margin-left: 5px; /* aquí es donde se le da y se quita margen a los títulos (desktop) */
  margin-bottom: 3px; /* separación vertical entre título y casilla */
}
.tx-form-grid .field input,
.tx-form-grid .field select{
  min-height: 40px;
  height: 40px;
  padding-top: 0;
  padding-bottom: 0;
}

/* Monto alineado a la derecha también en desktop (igual que móvil) */
.tx-form-grid--header .tx-field--amount input{
  text-align: right; /* aquí controlas la alineación del monto */
  font-variant-numeric: tabular-nums;
}

.tx-form-actions{
  align-items: center;
  gap: 10px;
  margin-top: 12px;
}
.tx-form-actions .btn{
  min-height: 40px;
}
.tx-form-actions .notice{
  margin-top: 0;
  flex: 1 1 260px;
}

.tx-filters-modal-shell .filter-panel{
  display: block !important;
}
.tx-filters-modal-shell .muted.small{
  margin-top: 6px;
}

.btn.small{ padding: 8px 10px; font-size: 12px; }

@media (max-width: 768px){
  .tx-head-main > .btn{
    width: 100%;
  }

  .tx-toolbar{
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    grid-template-rows: auto auto;
    align-items: center;
    gap: 10px 8px;
  }

  /* Fila 1: Título + Fecha */
  .tx-toolbar h2{
    grid-column: 1;
    grid-row: 1;
    font-size: 18px;
    white-space: nowrap;
    align-self: center;
  }

  .tx-toolbar .tx-period{
    grid-column: 2 / 4; /* ocupa el resto del ancho arriba */
    grid-row: 1;
    min-width: 0;
    margin-left: 0;
    flex: 0 1 auto;
    align-self: stretch;
  }

  .tx-toolbar .tx-period .dash-period{
    width: 100%;
    gap: 4px;
    align-items: stretch; /* misma altura visual tipo dashboard */
  }

  .tx-toolbar .tx-period .dash-period > .btn.icon{
    display: inline-flex;
    width: 30px;
    min-width: 30px;
    height: 44px;          /* antes 30px */
    padding: 0;
    border-radius: 12px;
    flex: 0 0 30px;
    align-items: center;
    justify-content: center;
  }

  .tx-toolbar .tx-period .dash-period-pill-wrap{
    flex: 1 1 auto;
    min-width: 0;
  }

  .tx-toolbar .tx-period .dash-period-pill{
    width: 100%;
    min-width: 0;
    max-width: none;
    min-height: 44px;      /* altura similar a dashboard */
    padding: 6px 8px;
    border-radius: 12px;
    display: flex;
    flex-direction: column;
    justify-content: center;
  }

  .tx-toolbar .tx-period .dash-period-main{
    font-size: 13px;
    line-height: 1.1;
  }

.tx-toolbar .tx-period .dash-period-sub{
  display: block;
  margin-top: 2px;
  font-size: 12px;   /* igual que Inicio */
  line-height: 1.1;
  opacity: .82;      /* igual estilo visual de Inicio */
  white-space: nowrap; /* si no cabe, cámbialo a normal */
}

  /* Fila 2: Filtros + Limpiar (a la derecha) */
  .tx-toolbar .tx-filters-actions{
    grid-column: 2;
    grid-row: 2;
    width: auto;
    min-width: 0;
    margin-left: 0;
    justify-content: flex-end;
    justify-self: end;
    flex-wrap: nowrap;
    gap: 8px;
  }

  .tx-toolbar .tx-filters-actions .filterbtn-wrap{
    flex: 0 0 auto;
  }

  .tx-toolbar .tx-filters-actions .btn.ghost.small{
    flex: 0 0 auto;
    width: auto;
    white-space: nowrap;
    height: 34px;
    padding: 0 12px;
    border-radius: 10px;
    display: inline-flex;
    align-items: center;
  }

  /* Fila 2: botón + después de limpiar filtros */
  .tx-toolbar > .tx-newtx-btn{
    grid-column: 3;
    grid-row: 2;
    width: 34px;
    min-width: 34px;
    height: 34px;
    padding: 0;
    border-radius: 10px;
    justify-content: center;
    gap: 0;
  }

  .tx-toolbar .tx-newtx-btn__label{
    display: none;
  }

  .tx-toolbar .tx-newtx-btn__icon{
    display: inline-block;
    font-size: 20px;
    transform: translateY(-1px);
  }

  .tx-toolbar .iconbtn{
    width: 34px;
    height: 34px;
  }

  .tx-new-card{
    padding: 12px;
  }

  .tx-new-topbar h2{
    font-size: 17px;
    line-height: 1.1;
  }

  .tx-new-topbar .btn-small-fit{
    height: 34px; /* ajuste recomendado: 34px | rango útil: 32px-36px */
    min-height: 34px; /* mismo valor que height */
    padding: 0 10px; /* si quieres botón más ancho: 10px-14px */
    font-size: 12px;
    border-radius: 9px; /* rango útil: 9px-11px */
  }

  .tx-form-shell{
    gap: 8px; /* separación entre tarjetas internas (móvil) | súbelo a 16-20px si quieres más aire, bájalo a 12px si lo quieres más compacto */
  }

  .tx-form-block{
    padding: 10px; /* aire interno de cada tarjeta (esto no cambia la separación entre tarjetas) */
    border-radius: 12px;
    border-color: rgba(255,255,255,.12);
    background: rgba(7,14,28,.26);
  }

  .tx-form-grid{
    gap: 8px;
  }

  .tx-form-grid + .tx-form-grid{
    margin-top: 10px;
  }

  .tx-form-grid .field > span{
    font-size: 12px;
    margin-left: 5px; /* aquí es donde se le da y se quita margen a los títulos (móvil) */
    margin-bottom: 1px; /* separación vertical entre título y casilla */
  }

  .tx-form-grid .field input{	
    min-height: 40px;
    height: 40px;
    font-size: 12px;
    padding-left: 10px;
    padding-right: 10px;
    border-radius: 10px;
  }

  .tx-form-grid .field select{
    min-height: 40px;
    height: 40px;
    font-size: 12px;
    padding-left: 10px;
    padding-right: 32px; /* si quieres más espacio para flecha: 32-36px */
    border-radius: 10px;

    /* Fuerza flecha en móvil (mismo color que desktop: #E9F0FF) */
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23E9F0FF' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 10px center; /* mueve flecha | rango útil: 8-12px */
    background-size: 12px 12px; /* tamaño flecha | rango útil: 10-14px */
  }

  .tx-form-grid--header .tx-field--date > span{
    margin-bottom: 0;
    white-space: nowrap;
    min-width: 132px; /* ancho del label "Fecha de Operación" | súbelo a 136-148px si quieres más aire */
  }

  .tx-form-grid--header .tx-field--date input{
    text-align: left;
    padding-inline: 10px;
    min-width: 0;
  }

  .tx-form-grid--header .tx-field--type select{
    padding-inline: 10px 32px; /* deja espacio para flecha del select tipo */
  }

  .tx-form-grid--header .tx-field--amount input{
    padding-inline: 10px;
    text-align: right;
    font-variant-numeric: tabular-nums;
  }

  /* NUEVO LAYOUT MÓVIL:
     Fila 1 = Fecha de Operación (label + selector)
     Fila 2 = Tipo + Monto */
  .tx-form-grid--header{
    grid-template-columns: repeat(12, minmax(0,1fr));
    column-gap: 10px;
    row-gap: 10px;
    align-items: end;
  }

  .tx-form-grid--header .tx-field--date{
    grid-column: 1 / span 5; /* deja la fecha en toda la fila para que quepa el título largo */
    grid-row: 1;
    display: grid;
    grid-template-columns: 132px minmax(0,1fr); /* 1ra columna=título | 2da=selector (si quieres selector más corto, cambia 2da por 170px) */
    align-items: center;
    gap: 8px;
  }

  .tx-form-grid--header .tx-field--type{
    grid-column: 1 / span 8; /* si quieres más espacio a Monto, usa span 7 */
    grid-row: 2;
  }

  .tx-form-grid--header .tx-field--amount{
    grid-column: 9 / -1; /* si Tipo usa span 7, aquí empieza en 8 */
    grid-row: 2;
  }

  .tx-form-grid--meta{
    grid-template-columns: repeat(12, minmax(0,1fr));
    gap:10px; /* separación Método/Categoría/Propósito/Propietario | rango útil: 8px-12px */
  }
  .tx-form-grid--meta #fieldMethod{ min-width: 68px; }
  .tx-form-grid--meta #fieldOwner{ min-width: 70px; }

  /* Fila 2: Método (estrecho) + Categoría (ancha) */
  #fieldMethod{ grid-column:1 / span 4; grid-row:1; } /* si quieres Método más ancho: span 5 */
  #fieldCategory{ grid-column:5 / -1; grid-row:1; }

  /* Fila 3: Propósito (ancho) + Propietario (estrecho) */
  #fieldPurpose{ grid-column:1 / span 7; grid-row:2; }
  #fieldOwner{ grid-column:8 / -1; grid-row:2; }

  /* Transferencia (Categoría/Propósito ocultos):
     Propietario sube a la posición donde estaba Categoría (lado derecho de Método).
     Esto evita el problema del selector "~" que no podía seleccionar hacia atrás. */
  .tx-form-grid--meta:has(#fieldPurpose[hidden]) #fieldOwner,
  .tx-form-grid--meta:has(#fieldPurpose[style*="display:none"]) #fieldOwner,
  .tx-form-grid--meta:has(#fieldPurpose[style*="display: none"]) #fieldOwner{
    grid-column:5 / -1; /* misma posición visual de Categoría */
    grid-row:1;
  }

  .tx-form-grid--accounts{
    grid-template-columns: 1fr;
  }

  .tx-form-grid--details{
    grid-template-columns: 1fr;
  }

  .tx-form-actions{
    margin-top: 10px;
    gap: 8px;
  }

  .tx-form-actions .btn{
    min-height: 40px; /* tamaño táctil mejor | rango útil: 38px-44px */
    padding: 0 12px; /* si quieres botones más anchos: 12px-16px */
    border-radius: 10px;
    font-size: 12px;
  }

  .tx-form-actions .notice{
    width: 100%;
    flex-basis: 100%;
    margin-top: 2px;
  }

  #btnTxPeriod{
    pointer-events: none;
  }
}

/* ===== TX Listado agrupado por día (mobile-first) ===== */
.tx-day-card{
  padding: 0;
  overflow: hidden;
}

.tx-day-head{
  padding: 12px 12px 10px;
  border-bottom: 1px solid rgba(255,255,255,.08);
  background: rgba(255,255,255,.02);
}

.tx-day-date{
  font-size: 13px;
  font-weight: 800;
  letter-spacing: .2px;
}

.tx-day-body{
  display: flex;
  flex-direction: column;
}

.tx-entry + .tx-entry{
  border-top: 1px solid rgba(255,255,255,.06);
}

.tx-row{
  padding: 10px 12px;
}

.tx-row + .tx-row{
  border-top: 1px dashed rgba(255,255,255,.08);
}

.tx-row-main{
  display: flex;
  align-items: flex-start;
  gap: 8px;
}

.tx-row-title{
  flex: 1 1 auto;
  min-width: 0;
  font-size: 13px;
  font-weight: 700;
  line-height: 1.2;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.tx-row-right{
  margin-left: auto;
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.tx-row-amount{
  font-size: 13px;
  font-weight: 800;
  line-height: 1;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}

.tx-row-amount.pos{ color: rgba(54,211,153,.95); }
.tx-row-amount.neg{ color: rgba(255,92,122,.95); }
.tx-row-amount.neutral{ color: var(--text); opacity: .92; }

.tx-row-actions{
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.tx-row-actions .iconbtn{
  width: 30px;
  height: 30px;
  border-radius: 10px;
  background: rgba(255,255,255,.04);
}

.tx-row-actions .iconbtn svg{
  width: 15px;
  height: 15px;
  opacity: .95;
}

.tx-row-actions .iconbtn.is-disabled{
  opacity: .45;
  border-color: rgba(255,255,255,.10);
  background: rgba(255,255,255,.02);
}

.tx-row-actions .iconbtn.is-disabled:hover{
  background: rgba(255,255,255,.02);
}

.tx-row-actions [data-del-id]{
  border-color: rgba(255,92,122,.24);
  background: rgba(255,92,122,.06);
}

.tx-row-actions [data-del-id]:hover{
  background: rgba(255,92,122,.14);
}

.tx-row-actions [data-del-id].is-disabled{
  border-color: rgba(255,255,255,.10);
  background: rgba(255,255,255,.02);
}

.tx-row-actions [data-del-id].is-disabled:hover{
  background: rgba(255,255,255,.02);
}

.tx-row-meta{
  margin-top: 4px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.2;
  padding-right: 4px;
  word-break: break-word;
}

.tx-row--mirror .tx-row-title{
  opacity: .9;
}

.tx-day-foot{
  display: flex;
  justify-content: flex-end;
  align-items: center;
  gap: 8px;
  padding: 10px 12px 12px;
  border-top: 1px solid rgba(255,255,255,.08);
  background: rgba(255,255,255,.015);
}

.tx-day-sum-label{
  font-size: 12px;
  color: var(--muted);
  font-weight: 700;
}

.tx-day-sum-value{
  font-size: 13px;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
}

.tx-day-sum-value.pos{ color: rgba(54,211,153,.95); }
.tx-day-sum-value.neg{ color: rgba(255,92,122,.95); }
.tx-day-sum-value.neutral{ color: var(--text); }

@media (min-width: 769px){
  .tx-day-head{
    padding: 12px 14px 10px;
  }

  .tx-day-date{
    font-size: 13px;
  }

  .tx-row{
    padding: 10px 14px;
  }

  .tx-row-title{
    font-size: 14px;
  }

  .tx-row-amount{
    font-size: 14px;
  }

  .tx-day-foot{
    padding: 10px 14px 12px;
  }
}

@media (max-width: 768px){
  .tx-row-main{
    align-items: center;
    gap: 6px;
  }

  .tx-row-title{
    font-size: 13px;
  }

  .tx-row-amount{
    font-size: 12px;
  }

  .tx-row-actions{
    gap: 4px;
  }

  .tx-row-actions .iconbtn{
    width: 28px;
    height: 28px;
    border-radius: 9px;
  }

  .tx-row-actions .iconbtn svg{
    width: 14px;
    height: 14px;
  }

  .tx-row-meta{
    font-size: 11px;
  }

  .tx-day-date{
    font-size: 12px;
  }

  .tx-day-sum-value{
    font-size: 12px;
  }
}

/* ============ Plan: Reglas (Auto) ============ */
#planRulesIncomeList .input{
  max-width: 120px;
}

#planRulesIncomeTotal{
  font-size: 18px;
}

#planRulesExpenseAccountList select.input,
#planRulesCategoryPurposeList select.input{
  max-width: 260px;
}

/* ============ Plan: Reglas (Auto) - UI colapsable ============ */
.rules-block{
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 12px;
  padding: 10px 12px;
  background: rgba(255,255,255,0.02);
}

.rules-block + .hr{ margin-top: 14px; }

.rules-summary{
  cursor: pointer;
  list-style: none;
  font-weight: 600;
  user-select: none;
}

.rules-block summary::-webkit-details-marker{ display:none; }
.rules-summary:before{
  content: "▸";
  display: inline-block;
  margin-right: 8px;
  opacity: .8;
  transform: translateY(-1px);
}
.rules-block[open] .rules-summary:before{ content: "▾"; }

.rules-body{ margin-top: 10px; }

.rule-details{ padding: 8px 10px; }
.rule-details > summary{ cursor:pointer; }
.rule-summary{ list-style:none; }
.rule-details summary::-webkit-details-marker{ display:none; }

.rule-body{ margin-top: 10px; }

.rule-grid{
  display: grid;
  grid-template-columns: 1fr;
  gap: 8px;
}

.rule-grid-row{
  display: grid;
  grid-template-columns: 1fr 120px;
  gap: 10px;
  align-items: center;
}

.rule-grid-label{
  font-size: 13px;
  opacity: .9;
}

#planRulesExpensePctList .input{ max-width: 120px; }

/* ============ Plan: Reglas (Auto) - Propósitos toggle ============ */
.plan-purpose-head{
  display:flex;
  align-items:center;
  gap:10px;
  margin: 0 0 6px;
}

.plan-purpose-head input[type="checkbox"]{
  width:18px;
  height:18px;
  margin:0;
  accent-color: var(--accent);
}

.plan-purpose-head-text{
  font-size:15px;
  font-weight:700;
}

.plan-purpose-help{ margin:0 0 10px; }

/* =========================
   PLAN: acordeón por categorías (madres colapsables)
   ========================= */

.plan-group{
  border:1px solid var(--line);
  border-radius:14px;
  background: rgba(0,0,0,.14);
  overflow:hidden;
}

.plan-group summary::-webkit-details-marker{ display:none; }
.plan-group-summary{
  list-style:none;
  cursor:pointer;
  padding:12px;
}
.plan-group-summary:hover{ background: rgba(255,255,255,.03); }

.plan-group-summary:before{
  content:"▸";
  display:inline-block;
  margin-right:8px;
  color: var(--muted);
}
.plan-group[open] .plan-group-summary:before{ content:"▾"; }

.plan-group-total{
  font-variant-numeric: tabular-nums;
  font-weight:800;
}

.plan-group-body{ padding: 0 12px 12px; }
.plan-child{ margin-top:10px; }

/* ================================
   Bottom Navigation + Sheets (PRO)
   Solo móvil (mobile-first)
   ================================ */

/* Deja espacio para la bottom nav en móvil */
@media (max-width: 768px){
  :root{
    --bn-inset: calc(72px + env(safe-area-inset-bottom, 0px));
  }

  body{
    padding-bottom: calc(72px + env(safe-area-inset-bottom, 0px));
  }

  /* Dash month (mobile) — IGUAL QUE PLAN:
     El usuario debe tocar el <input type="month"> (aunque sea transparente) para que iOS/Safari abra el picker nativo.
     AJUSTE RÁPIDO (si quieres): cambia el padding/alto del botón, NO vuelvas a poner pointer-events:none aquí.
  */
  .dash-period-pill-wrap{ display: inline-block; position: relative; }
  .dash-month-input{
    position:absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    opacity: 0;          /* transparente */
    pointer-events: auto; /* ✅ imprescindible para que el picker nativo se abra en iOS */
    z-index: 5;          /* por encima de la píldora */
    border: 0;
    background: transparent;
  }
  /* Opcional: evitamos dobles clicks. La interacción real la lleva el input transparente */
  #btnDashPeriod{ pointer-events: none; }

  /* Oculta chips/tabs superiores en móvil */
  nav.tabs{
    display: none !important;
  }
}

.bottom-nav{
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 9990;
  height: 72px;
  padding: 10px 12px calc(10px + env(safe-area-inset-bottom, 0px));
  display: none; /* por defecto, solo móvil */
  gap: 8px;
  align-items: center;
  justify-content: space-between;
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border-top: 1px solid rgba(255,255,255,0.08);
  background: rgba(10, 18, 35, 0.72);
}

@media (max-width: 768px){
  .bottom-nav{
    display: flex;
  }
}

.bottom-nav .tab--bottom,
.bottom-nav .bottom-more{
  flex: 1;
  height: 100%;
  border: 0;
  border-radius: 16px;
  background: rgba(255,255,255,0.06);

  /* Inactivo más sutil (PRO) */
  color: rgba(233,240,255,0.82);

  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  font-size: 12px;
}

.bottom-nav .tab--bottom.active{
  background: rgba(130, 93, 255, 0.22);
  outline: 1px solid rgba(130, 93, 255, 0.35);

  /* Activo más presente (PRO) */
  color: rgba(233,240,255,0.96);
}

.bottom-nav .tab--bottom.active{
  background: rgba(130, 93, 255, 0.22);
  outline: 1px solid rgba(130, 93, 255, 0.35);
}

/* Iconos PRO (SVG monocromo) */
.bn-icon{
  display:flex;
  align-items:center;
  justify-content:center;
  width: 20px;
  height: 20px;
  line-height: 0;
}

/* SVGs heredan color desde el botón (currentColor) */
.bn-svg{
  display:block;
  width: 20px;
  height: 20px;
}

/* FAB centrado con SVG (sin depender de font-size) */
.fab{
  width: 62px;
  height: 62px;
  border-radius: 22px;
  border: 0;
  margin: 0 4px;

  display:flex;
  align-items:center;
  justify-content:center;

  color: #fff;
  background: linear-gradient(135deg, rgba(130,93,255,1), rgba(84,172,255,1));
  box-shadow: 0 12px 26px rgba(0,0,0,0.35);
}

.fab-svg{
  display:block;
  width: 22px;
  height: 22px;
}

/* FAB: swap + ↔ X cuando está abierto */
.fab .fab-ico-x{ display:none; }
.fab[aria-expanded="true"] .fab-ico-plus{ display:none; }
.fab[aria-expanded="true"] .fab-ico-x{ display:block; }

/* Sheets (overlay) */
.fh-sheet-overlay{
  /* IMPORTANTE: NO cubrimos el bottom-nav; el overlay termina justo encima */
  position: fixed;
  top: 0;
  right: 0;
  bottom: var(--bn-inset, 0px);
  left: 0;
  z-index: 9995;
  display: none;
  align-items: flex-end;
  justify-content: center;

  /* Transparencia suave SIN blur (como referencia). Ajustable desde :root */
  background: rgba(0,0,0,var(--sheetOverlayDim, 0.28));
  backdrop-filter: blur(var(--sheetOverlayBlur, 0px));
  -webkit-backdrop-filter: blur(var(--sheetOverlayBlur, 0px));

  padding: 14px 14px 14px;
}

.fh-sheet-overlay.open{
  display: flex;
}

.fh-sheet{
  /* Compacto y centrado (evita full-width feo) */
  width: min(520px, calc(100% - 28px));
  max-width: 520px;
  margin: 0 auto;

  max-height: 78vh;
  overflow: auto;
  overscroll-behavior: contain;

  border-radius: 22px;

  /* Panel ligeramente distinto al fondo para jerarquía */
  background: rgba(14, 22, 40, 0.93);
  border: 1px solid rgba(255,255,255,0.10);
  box-shadow: 0 26px 70px rgba(0,0,0,0.00);

  padding: 14px;
}

@media (max-width: 420px){
  .fh-sheet{
    width: calc(100% - 24px);
    max-width: none;
  }
}

.fh-sheet-card{
  /* Contenido interno con aire y separación */
  padding: 2px 2px;
}

.fh-sheet__handle{
  width: 54px;
  height: 5px;
  border-radius: 99px;
  margin: 2px auto 10px;
  background: rgba(255,255,255,.20);
}

.fh-sheet__title{
  font-size: 14px;
  opacity: 0.85;
  margin-bottom: 10px;
}

.fh-sheet__item,
.fh-sheet__cancel{
  width: 100%;
  border: 0;
  border-radius: 16px;
  padding: 14px 14px;
  margin: 6px 0;
  text-align: left;
  background: rgba(255,255,255,0.06);
  color: rgba(255,255,255,0.92);
}

/* Sheet UI (FAB / Más) — layout pro, tipografía homogénea */
/* FAB: centrado (como referencia) */
#sheetFab.fh-sheet-overlay{
  justify-content: center;
  padding-bottom: calc(14px + var(--sheetFabPadAdjust)); /* AJUSTE: ↑↓ sube/baja este modal */
}

/* Más: alineado a la derecha, “nace” del botón Más (como referencia) */
#sheetMore.fh-sheet-overlay{
  justify-content: flex-end;
  padding-right: 14px;
  padding-bottom: calc(14px + var(--sheetMorePadAdjust)); /* AJUSTE: ↑↓ sube/baja este modal */
}

.fh-sheet__list{
  display: grid;
  gap: 8px;
}

.fh-sheet__grid{
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}

.fh-sheet__ico{
  width: 40px;
  height: 40px;
  border-radius: 999px;
  display: grid;
  place-items: center;
  flex: 0 0 40px;
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.10);
}

.fh-sheet__ico--tile{
  background: transparent;
  border: 0;
  width: 44px;
  height: 44px;
}

.fh-ico-svg{
  display: block;
}

#sheetFab .fh-sheet__item{
  display: flex;
  align-items: center;
  gap: 12px;
  font-size: 14px; /* mismo orden de tamaño que el dashboard */
  padding: 10px 6px;
  margin: 0;
  background: transparent; /* SIN contenedores/bordes por item (como referencia) */
  border: 0;
}
#sheetFab .fh-sheet__item:hover{ background: rgba(255,255,255,0.04); border-radius: 14px; }
#sheetFab .fh-sheet__item:active{ background: rgba(255,255,255,0.06); }

#sheetMore .fh-sheet__item{
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  text-align: center;
  font-size: 13px; /* homogéneo, no “texto grande” */
  padding: 14px 10px;
}

#sheetMore .fh-sheet__text{
  opacity: 0.95;
}

.fh-sheet__cancel{
  background: rgba(255,255,255,0.10);
  margin-top: 10px;
}

/* =========================
   Dashboard Widgets (PRO)
   ========================= */

.dash-top{
  position: sticky;
  top: 0;
  z-index: 5;
  backdrop-filter: blur(8px);
}

/* =========================
   Dashboard Período (PRO)
   Mobile/Tablet: píldora + flechas
   Desktop: se posiciona por layout existente
   ========================= */
.dash-head{
  gap: 10px;
}

.dash-period{
  display:flex;
  position: relative;
  align-items: center;
  gap: 8px;
  flex-wrap: nowrap;
}

.dash-period-pill-wrap{
  position: relative;
  display: inline-block;
}

.dash-month-input{
  position:absolute;
  top:0;
  left:0;
  opacity:0;
  border:0;
  padding:0;
  margin:0;
  /* IMPORTANTE:
     No definir width/height/pointer-events aquí.
     En móvil se controla arriba (overlay 100% + pointer-events:auto).
     Esta regla base NO debe pisar la versión móvil. */
}

.dash-period-pill{
  border: 1px solid rgba(255,255,255,0.10);
  background: rgba(255,255,255,0.06);
  color: rgba(255,255,255,0.92);
  border-radius: 999px;
  padding: 10px 14px;
  min-width: 190px;
  text-align: center;
  line-height: 1.1;
}

.dash-period-main{
  font-weight: 800;
  font-size: 13px;
}

.dash-period-sub{
  margin-top: 4px;
  font-size: 12px;
  opacity: 0.82;
}

.btn.icon{
  padding: 10px 10px;
  border-radius: 14px;
}

/* Wheel (lista desplazable) */
.dash-wheel{
  max-height: 320px;
  overflow: auto;
  border-radius: 16px;
  border: 1px solid rgba(255,255,255,0.08);
  background: rgba(255,255,255,0.04);
  padding: 10px;
}

.dash-wheel .wheel-item{
  padding: 10px 12px;
  border-radius: 14px;
  margin: 6px 0;
  background: rgba(255,255,255,0.06);
  color: rgba(255,255,255,0.92);
  display:flex;
  align-items:center;
  justify-content: space-between;
}

.dash-wheel .wheel-item.active{
  background: rgba(130,93,255,0.22);
  border: 1px solid rgba(130,93,255,0.35);
}

@media (min-width: 900px){
  /* En desktop no hace falta elevar tanto el sheet (FAB no estorba igual) */
  .fh-sheet-overlay{
    padding-bottom: calc(14px + env(safe-area-inset-bottom, 0px));
  }
}

.dash-widgets{
  display: grid;
  grid-template-columns: 1fr;
  gap: 12px;
  margin-top: 12px;
}

@media (min-width: 640px){
  .dash-widgets{ grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (min-width: 1024px){
  .dash-widgets{ grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

.widget-card{
  position: relative;
  overflow: hidden;
}

.widget-head{
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 10px;
}

.widget-title{
  font-weight: 700;
  margin: 0;
}

.widget-cta{
  margin-top: 10px;
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

.widget-cta .btn{
  padding: 8px 12px;
  border-radius: 12px;
}

.widget-kpis{
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}

.widget-kpi{
  padding: 10px;
  border-radius: 14px;
  border: 1px solid rgba(255,255,255,0.08);
  background: rgba(255,255,255,0.03);
}

.widget-kpi .kpi-label{
  font-size: 12px;
  opacity: 0.8;
}

.widget-kpi .kpi-value{
  font-size: 16px;
  font-weight: 800;
  margin-top: 4px;
}

.widget-bar{height:10px; border-radius:10px; background:rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.08); overflow:hidden}
.widget-bar > span{display:block; height:100%; width:0%; background:rgba(70,140,255,.85)}

/* Variantes de color para barras (PRO) */
.widget-bar-pos > span{background:#39d98a}
.widget-bar-warn > span{background:#ffb300}
.widget-bar-neg > span{background:#ff5c7a}

.widget-bar-pos > span{
  background: rgba(88, 214, 141, 0.75);
}

.widget-bar-neg > span{
  background: rgba(255, 99, 99, 0.78);
}

.widget-lock{
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(17,17,20,0.40), rgba(17,17,20,0.85));
  display: flex;
  align-items: flex-end;
  justify-content: center;
  padding: 14px;
}

.widget-lock-inner{
  width: 100%;
  border: 1px solid rgba(255,255,255,0.12);
  background: rgba(0,0,0,0.25);
  border-radius: 16px;
  padding: 12px;
}

.widget-lock-title{
  font-weight: 800;
  margin: 0 0 6px;
}

.widget-lock-sub{
  margin: 0 0 10px;
  opacity: 0.85;
  font-size: 13px;
}

/* ===== Sheets: ajustes PRO (móvil) ===== */
#sheetFab .fh-sheet{
  width:auto;
  max-width:min(360px, 92vw);
  border-radius:18px;
  margin-bottom:12px;
}
#sheetFab .fh-sheet__item{
  display:flex; align-items:center; gap:14px;
}
#sheetFab .fh-sheet__ic{
  width:38px; height:38px; border-radius:999px;
  display:inline-flex; align-items:center; justify-content:center;
  background:rgba(255,255,255,.06);
  border:1px solid var(--line);
  font-size:20px;
}
#sheetFab .fh-sheet__txt{font-weight:600}

#sheetMore .fh-sheet{
  width:auto;
  max-width:min(520px, 94vw);
  margin-left: auto;  /* AJUSTE: ancla a la derecha */
  margin-right: 0;   /* AJUSTE: ancla a la derecha */
  transform: translateX(var(--sheetMoreRightAdjust)); /* AJUSTE: fine-tune horizontal */
}

#sheetMore .fh-sheet__grid{
  display:grid;
  grid-template-columns:repeat(2, minmax(0, 1fr));
  gap:14px;
  padding:8px 2px 2px;
}
#sheetMore .fh-sheet__gridItem{
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  gap:10px;
  padding:16px 12px;
  background:rgba(255,255,255,.05);
  border:1px solid var(--line);
  border-radius:16px;
  color:var(--text);
}
#sheetMore .fh-sheet__gridIc{
  width:48px; height:48px; border-radius:999px;
  display:flex; align-items:center; justify-content:center;
  background:rgba(255,255,255,.06);
  border:1px solid var(--line);
  font-size:22px;
}
#sheetMore .fh-sheet__gridTxt{font-weight:600; color:rgba(233,240,255,.92); font-size:14px}

/* ===== Widget: Relación Gasto/Ingreso ===== */
.gi-lines .gi-line{display:flex; align-items:flex-end; justify-content:space-between}
.gi-lines .gi-label{font-size:12px; color:rgba(233,240,255,.78); font-weight:600}
.gi-lines .gi-amount{font-size:16px; font-weight:800}
.gi-bar{height:10px; border-radius:10px}
.gi-income span{background:#39d98a}
.gi-expense span{background:#ff5c7a}
.gi-footer{margin-top:14px; padding-top:12px; border-top:1px solid var(--line)}
.gi-foot-label{font-size:12px; color:rgba(233,240,255,.78); font-weight:700}
.gi-foot-value{font-size:16px; font-weight:800; letter-spacing:-.2px}
.gi-foot-value.pos{color:#39d98a}
.gi-foot-value.neg{color:#ff5c7a}