:root {
  --pr:#2563eb; --pr-d:#1d4ed8; --ok:#16a34a; --err:#dc2626;
  --bg:#f1f5f9; --card:#fff; --brd:#e2e8f0; --txt:#1e293b; --muted:#64748b;
  --hh:56px; --nh:48px;
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;background:var(--bg);color:var(--txt);font-size:14px;line-height:1.5}

/* LOGIN */
#loginScreen{display:flex;align-items:center;justify-content:center;min-height:100vh;background:linear-gradient(135deg,#0f172a 0%,#1e40af 100%)}
.login-box{background:#fff;padding:2.5rem;border-radius:16px;width:100%;max-width:380px;box-shadow:0 25px 60px rgba(0,0,0,.4)}
.login-box h1{text-align:center;font-size:1.8rem;margin-bottom:.25rem}
.login-sub{text-align:center;color:var(--muted);margin-bottom:1.5rem;font-size:.875rem}
#authTabs{display:flex;gap:.5rem;margin-bottom:1.25rem}
.auth-tab{flex:1;padding:.5rem;border:2px solid var(--brd);background:none;border-radius:8px;cursor:pointer;font-size:.85rem;font-weight:600;color:var(--muted);transition:all .2s}
.auth-tab.active{background:var(--pr);color:#fff;border-color:var(--pr)}
.auth-form{display:flex;flex-direction:column;gap:1rem}

/* HEADER */
.app-header{background:#0f172a;color:#fff;height:var(--hh);display:flex;align-items:center;justify-content:space-between;padding:0 1.5rem;position:sticky;top:0;z-index:100;box-shadow:0 2px 8px rgba(0,0,0,.3)}
.hdr-logo{font-size:1.1rem;font-weight:700}
.hdr-right{display:flex;align-items:center;gap:1rem}
.hdr-user{color:#94a3b8;font-size:.85rem}

/* NAV */
.app-nav{background:#fff;display:flex;border-bottom:2px solid var(--brd);position:sticky;top:var(--hh);z-index:99;overflow-x:auto}
.tab-btn{padding:.875rem 1.25rem;border:none;background:none;cursor:pointer;font-size:.9rem;font-weight:500;color:var(--muted);border-bottom:3px solid transparent;margin-bottom:-2px;white-space:nowrap;transition:color .2s}
.tab-btn.active{color:var(--pr);border-bottom-color:var(--pr)}
.tab-btn:hover{color:var(--pr)}

/* MAIN */
.app-main{max-width:1200px;margin:0 auto;padding:1.5rem}
.sec-hdr{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.25rem}
h2{font-size:1.25rem;font-weight:700;margin-bottom:1.25rem}

/* CURRENCY TOGGLE */
.cur-toggle-grp{display:flex;gap:.5rem}
.cur-toggle{padding:.4rem 1rem;border:2px solid var(--brd);background:#fff;border-radius:20px;cursor:pointer;font-size:.85rem;font-weight:500;transition:all .2s}
.cur-toggle.active{background:var(--pr);color:#fff;border-color:var(--pr)}

/* CARDS */
.cards-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-bottom:1.5rem}
.card{background:#fff;border-radius:12px;padding:1.25rem;box-shadow:0 1px 4px rgba(0,0,0,.07);border-left:4px solid var(--brd)}
.c-pos{border-left-color:var(--ok)}.c-neg{border-left-color:var(--err)}.c-inc{border-left-color:var(--ok)}.c-exp{border-left-color:var(--err)}
.card-lbl{font-size:.75rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.5rem}
.card-val{font-size:1.4rem;font-weight:700}
.inc{color:var(--ok)}.exp{color:var(--err)}

/* CHARTS */
.charts-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.chart-card{background:#fff;border-radius:12px;padding:1.25rem;box-shadow:0 1px 4px rgba(0,0,0,.07)}
.chart-pie-card{grid-column:1 / -1;display:flex;justify-content:center;align-items:center;min-height:320px}
.chart-pie-card canvas{max-height:350px;max-width:700px}

/* FORMS */
.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem;background:#fff;padding:1.5rem;border-radius:12px;box-shadow:0 1px 4px rgba(0,0,0,.07)}
.inp-g{display:flex;flex-direction:column;gap:.375rem}
.inp-g label{font-size:.75rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.inp-g input,.inp-g select{padding:.6rem .75rem;border:1.5px solid var(--brd);border-radius:8px;font-size:.9rem;outline:none;transition:border-color .2s;background:#fff}
.inp-g input:focus,.inp-g select:focus{border-color:var(--pr)}
.form-submit{grid-column:1 / -1;display:flex;justify-content:flex-end;padding-top:.5rem}

/* BUTTONS */
.btn-primary{background:var(--pr);color:#fff;border:none;padding:.65rem 1.5rem;border-radius:8px;cursor:pointer;font-size:.9rem;font-weight:600;transition:background .2s}
.btn-primary:hover{background:var(--pr-d)}
.btn-primary:disabled{opacity:.6;cursor:not-allowed}
.btn-primary.fw{width:100%;padding:.75rem}
.btn-primary.btn-lg{padding:.875rem 2rem;font-size:1rem}
.btn-logout{background:transparent;color:#94a3b8;border:1px solid #475569;padding:.4rem .875rem;border-radius:6px;cursor:pointer;font-size:.85rem;transition:all .2s}
.btn-logout:hover{background:#475569;color:#fff}
.btn-del{background:none;border:none;cursor:pointer;font-size:1rem;padding:.25rem;opacity:.5;transition:opacity .2s}
.btn-del:hover{opacity:1}

/* MESSAGES */
.msg{padding:.75rem 1rem;border-radius:8px;font-size:.875rem}
.msg:empty{display:none;padding:0}
.msg.ok{background:#dcfce7;color:#166534}
.msg.er{background:#fee2e2;color:#991b1b}

/* FILTERS */
.filters-bar{display:flex;align-items:flex-end;gap:.75rem;flex-wrap:wrap;background:#fff;padding:1rem 1.25rem;border-radius:12px;margin-bottom:1rem;box-shadow:0 1px 4px rgba(0,0,0,.07)}
.flt-g{display:flex;flex-direction:column;gap:.25rem;min-width:90px}
.flt-g label{font-size:.7rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.flt-g select{padding:.5rem .625rem;border:1.5px solid var(--brd);border-radius:6px;font-size:.85rem;outline:none;background:#fff}
.flt-g select:focus{border-color:var(--pr)}
.hist-totals{padding:.75rem 1.25rem;background:#f8fafc;border:1px solid var(--brd);border-radius:8px;margin-bottom:1rem;font-size:.875rem}

/* TABLE */
.tbl-wrap{background:#fff;border-radius:12px;overflow:hidden;box-shadow:0 1px 4px rgba(0,0,0,.07);overflow-x:auto}
.tx-table{width:100%;border-collapse:collapse}
.tx-table th{background:#f8fafc;padding:.75rem 1rem;text-align:left;font-size:.75rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;border-bottom:2px solid var(--brd)}
.tx-table td{padding:.75rem 1rem;border-bottom:1px solid var(--brd);font-size:.875rem}
.tx-table tr:last-child td{border-bottom:none}
.tx-table tr:hover td{background:#f8fafc}
.badge{display:inline-block;padding:.2rem .5rem;border-radius:20px;font-size:.75rem;font-weight:600}
.badge-ARS{background:#dbeafe;color:#1e40af}
.badge-USD{background:#dcfce7;color:#166534}
.no-data{text-align:center;color:var(--muted);padding:2.5rem;font-style:italic}
.col-r{text-align:right}

/* IMPORT */
.import-info{background:#eff6ff;border:1px solid #bfdbfe;border-radius:10px;padding:1rem 1.25rem;margin-bottom:1.25rem;color:#1e40af;font-size:.875rem;line-height:1.7}
.import-info p+p{margin-top:.4rem}
.import-info code{background:#dbeafe;padding:.1rem .35rem;border-radius:4px;font-family:monospace;font-size:.8rem}
.import-form{display:flex;gap:1rem;align-items:center;flex-wrap:wrap;background:#fff;padding:1.25rem;border-radius:12px;box-shadow:0 1px 4px rgba(0,0,0,.07);margin-bottom:1rem}

/* IMPORT PREVIEW PANEL */
#importPreviewPanel{margin-top:.5rem}
.imp-preview-hdr{display:flex;flex-wrap:wrap;gap:.75rem;margin-bottom:1rem}
.ips-stat{padding:.6rem 1rem;border-radius:8px;font-size:.875rem}
.ips-ok{background:#dcfce7;color:#166534}
.ips-err{background:#fef3c7;color:#92400e}
.imp-section{margin-bottom:1.25rem}
.imp-section-ttl{font-size:.9rem;font-weight:700;margin-bottom:.6rem}
.err-ttl{color:var(--err)}
.ok-ttl{color:var(--ok)}
.issue-err{color:#991b1b;font-size:.82rem}
.issue-warn{color:#92400e;font-size:.82rem}
.orig-data{font-size:.78rem;color:var(--muted);max-width:320px}
.orig-kv{display:inline-block;margin-right:.5rem;white-space:nowrap}
.orig-kv em{font-style:normal;color:#94a3b8}
.imp-confirm-bar{display:flex;gap:.75rem;align-items:center;margin-top:1rem;padding:.75rem 0}

/* PERIOD MATRIX */
#periodMatrix{margin-top:1.75rem}
.matrix-title{font-size:1rem;font-weight:700;margin-bottom:.75rem;color:var(--txt)}
.period-matrix-table tfoot tr.matrix-total td{font-weight:700;background:#f1f5f9;border-top:2px solid var(--brd)}
.period-matrix-table tfoot tr.matrix-total:hover td{background:#f1f5f9}

/* RESPONSIVE */
@media(max-width:768px){
  .cards-grid{grid-template-columns:1fr}
  .charts-grid{grid-template-columns:1fr}
  .form-grid{grid-template-columns:1fr}
  .chart-pie-card{grid-column:auto}
  .app-main{padding:1rem}
  .imp-preview-hdr{flex-direction:column}
}

/* SHARE */
.view-selector{padding:.4rem .75rem;border:1.5px solid #475569;background:#1e293b;color:#fff;border-radius:6px;font-size:.85rem;cursor:pointer;outline:none;margin-right:.5rem}
.viewing-banner{font-size:.8rem;background:#fef3c7;color:#92400e;padding:.3rem .75rem;border-radius:20px;margin-top:.4rem;display:inline-block}
.share-section{background:#fff;border-radius:12px;padding:1.5rem;margin-bottom:1rem;box-shadow:0 1px 4px rgba(0,0,0,.07)}
.share-title{font-size:1rem;font-weight:700;margin-bottom:.5rem;color:var(--txt)}
.share-desc{font-size:.875rem;color:var(--muted);margin-bottom:1rem}
.share-invite{display:flex;gap:.75rem;margin-bottom:1rem;flex-wrap:wrap}
.share-input{flex:1;min-width:150px;padding:.6rem .75rem;border:1.5px solid var(--brd);border-radius:8px;font-size:.9rem;outline:none}
.share-input:focus{border-color:var(--pr)}
.share-item{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;border:1px solid var(--brd);border-radius:8px;margin-bottom:.5rem;background:#f8fafc}
