/* RCG Impuestos · estilos (azul marino, marfil, serif clásica + Inter) */
:root{
  --navy:#0B1F45;--navy2:#132C5E;--ivory:#F6F5F1;--card:#FFFFFF;--ink:#1B2333;--muted:#5B6478;--line:#E6E4DE;--line2:#F1EFEA;
  --sky:#4AA8DE;--sky2:#7FC4EA;--brand:#0B1F45;--brand2:#EEF1F6;
  --ok:#1F6B47;--okbg:#E7F4EC;--warn:#8A5200;--warnbg:#FFF3DC;--bad:#A12A1E;--badbg:#FDECEB;--info:#234B80;--infobg:#EAF0F8;
  --serif:'Cormorant Garamond',Georgia,'Times New Roman',serif;--sans:Inter,system-ui,-apple-system,'Segoe UI',sans-serif;--r:14px;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--ivory);color:var(--ink);font-family:var(--sans);font-size:15px;line-height:1.45}
a{color:var(--navy)}a:hover{color:#2A6FB0}
.hidden{display:none!important}.cerrado{display:none!important}
h1,h2{font-family:var(--serif);font-weight:600;color:var(--navy);letter-spacing:-.2px}
h2{font-size:23px;margin:0 0 12px}
h3{font-size:11px;text-transform:uppercase;letter-spacing:.9px;color:var(--muted);margin:18px 0 8px;font-weight:600}
label{display:block;font-size:12px;font-weight:600;color:var(--muted);margin-bottom:5px}
input,select,textarea{width:100%;font:inherit;color:var(--ink);background:#fff;border:1px solid #D9DCE3;border-radius:10px;padding:10px 12px}
input:focus,select:focus,textarea:focus{outline:2px solid var(--sky);outline-offset:0;border-color:var(--sky)}
input:disabled,select:disabled{background:#F3F3F1;color:#6B7488}
button{font:inherit;font-weight:600;border:1px solid #D9DCE3;border-radius:10px;padding:10px 15px;cursor:pointer;background:#fff;color:var(--navy);transition:background .15s,border-color .15s}
button:hover{border-color:#B9C0CD}
button.primary{background:var(--navy);border-color:var(--navy);color:#fff}
button.primary:hover{background:var(--navy2)}
button.danger{background:#fff;border-color:#E8C9C5;color:var(--bad)}
button:disabled{opacity:.5;cursor:default}
.big{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;padding:17px;font-size:16px;border-radius:12px}
.muted{color:var(--muted);font-size:13px}
.row{display:flex;gap:12px;flex-wrap:wrap}.row>*{flex:1 1 160px;min-width:0}

/* ---------- login ---------- */
#loginView{min-height:100vh;display:flex}
.loginIzq{flex:1 1 50%;background:var(--navy);color:#fff;padding:56px 64px;display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden}
.loginIzq::after{content:"";position:absolute;right:-180px;bottom:-180px;width:560px;height:560px;border-radius:50%;border:1px solid rgba(255,255,255,.1);box-shadow:0 0 0 80px rgba(255,255,255,.03),0 0 0 160px rgba(255,255,255,.02)}
.loginIzq img{width:230px}
.loginIzq .eyebrow{font-size:12px;letter-spacing:2px;text-transform:uppercase;color:var(--sky2);font-weight:600}
.loginIzq h1{color:#fff;font-weight:500;font-size:52px;line-height:1.05;margin:14px 0 18px}
.loginIzq p{color:#C9D3E6;font-size:16px;line-height:1.6;max-width:470px;margin:0}
.loginIzq small{color:#8C9AB5;font-size:12px}
.loginDer{flex:1 1 50%;display:flex;align-items:center;justify-content:center;padding:32px}
.loginCard{width:100%;max-width:400px;display:flex;flex-direction:column;gap:18px}
.loginCard h2{font-size:36px;margin:0}
.loginCard .logoMovil{display:none;width:200px}
#loginMsg{min-height:18px;font-size:13px;color:var(--bad);margin:0}
.nota{display:flex;gap:8px;align-items:center;font-size:12px;color:var(--muted)}
@media(max-width:860px){.loginIzq{display:none}.loginCard .logoMovil{display:block}}

/* ---------- estructura ---------- */
#appView{display:flex;min-height:100vh}
.side{width:248px;flex:none;background:var(--navy);color:#fff;display:flex;flex-direction:column;padding:26px 18px;gap:26px;position:sticky;top:0;height:100vh;overflow-y:auto}
.side .logo{width:172px;margin:0 6px}
.side nav{display:flex;flex-direction:column;gap:3px}
.side nav a{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:10px;color:#C9D3E6;text-decoration:none;font-size:14px}
.side nav a:hover{background:rgba(255,255,255,.06);color:#fff}
.side nav a.on{background:rgba(255,255,255,.11);color:#fff;font-weight:600}
.side nav a svg{flex:none}
.side nav .badge{margin-left:auto;background:var(--sky);color:var(--navy);font-size:11px;font-weight:700;padding:1px 8px;border-radius:99px}
.side .yo{margin-top:auto;display:flex;align-items:center;gap:11px;padding-top:16px;border-top:1px solid rgba(255,255,255,.12)}
.side .avatar{width:38px;height:38px;border-radius:99px;background:var(--sky);color:var(--navy);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px;flex:none}
.side .yo b{display:block;font-size:14px;font-weight:600}.side .yo span{font-size:12px;color:#A9B6CE}
.side .yo button{margin-left:auto;background:transparent;border-color:rgba(255,255,255,.2);color:#fff;padding:6px 9px;font-size:12px}
.contenido{flex:1;min-width:0;display:flex;flex-direction:column}
.top{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;padding:30px 40px 6px;flex-wrap:wrap}
.top .eyebrow{font-size:12px;letter-spacing:1.6px;text-transform:uppercase;color:#6B7488;font-weight:600}
.top h1{margin:4px 0 0;font-size:38px;line-height:1.1}
.top .acciones{display:flex;gap:10px;flex-wrap:wrap}
#btnMenu{display:none}
main{padding:18px 40px 60px;display:flex;flex-direction:column;gap:18px;max-width:1360px;width:100%}
.barraMovil{display:none}
@media(max-width:900px){
  .side{position:fixed;left:0;top:0;z-index:30;transform:translateX(-100%);transition:transform .2s;box-shadow:0 0 40px rgba(0,0,0,.3)}
  body.menuAbierto .side{transform:none}
  .barraMovil{display:flex;align-items:center;justify-content:space-between;background:var(--navy);padding:12px 16px;position:sticky;top:0;z-index:20}
  .barraMovil img{height:30px}
  .barraMovil button{background:transparent;border-color:rgba(255,255,255,.25);color:#fff;padding:8px 10px}
  .top{padding:20px 16px 4px}.top h1{font-size:30px}
  main{padding:12px 16px 50px}
}

/* ---------- tarjetas ---------- */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:20px 22px}
.grid2{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:18px}
@media(max-width:1100px){.grid2{grid-template-columns:minmax(0,1fr)}}
.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
@media(max-width:1100px){.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
.kpi{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:18px 20px;display:flex;flex-direction:column;gap:6px}
.kpi span{font-size:12px;color:#6B7488;font-weight:500}
.kpi b{font-family:var(--serif);font-size:36px;font-weight:600;color:var(--navy);line-height:1}
.kpi small{font-size:12px;color:var(--muted)}
.kpi.oscuro{background:var(--navy);border-color:var(--navy)}.kpi.oscuro span{color:#A9B6CE}.kpi.oscuro b{color:#fff;font-size:28px}.kpi.oscuro small{color:var(--sky2)}
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.stat{background:var(--ivory);border-radius:10px;padding:12px 14px}
.stat b{display:block;font-family:var(--serif);font-size:24px;font-weight:600;color:var(--navy);font-variant-numeric:tabular-nums}
.stat span{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px}
.inv{display:flex;justify-content:space-between;gap:12px;padding:13px 4px;border-top:1px solid var(--line2);cursor:pointer;border-radius:8px}
.inv:hover{background:#FAFAF8}
.inv:first-child{border-top:0}
.inv .l{min-width:0}.inv .l b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600}
.inv .r{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.inv .r b{font-weight:600}
.tag{display:inline-block;font-size:11px;font-weight:600;padding:3px 9px;border-radius:99px;margin-top:4px;background:var(--brand2);color:var(--info)}
.tag.ok{background:var(--okbg);color:var(--ok)}.tag.warn{background:var(--warnbg);color:var(--warn)}.tag.bad{background:var(--badbg);color:var(--bad)}.tag.info{background:var(--infobg);color:var(--info)}
.issues{margin:8px 0 0;padding:0;list-style:none}
.issues li{font-size:13px;padding:8px 12px;border-radius:9px;margin-top:6px;line-height:1.45}
.issues li.bad{background:var(--badbg);color:var(--bad)}.issues li.warn{background:var(--warnbg);color:var(--warn)}
.issues li.ok{background:var(--okbg);color:var(--ok)}.issues li.info{background:var(--infobg);color:var(--info)}
.chips{display:flex;gap:8px;flex-wrap:wrap}
.chips button{border-radius:99px;padding:8px 14px;font-size:13px}
.chips button.on{background:var(--navy);border-color:var(--navy);color:#fff}
table.t{width:100%;border-collapse:collapse;font-size:13.5px;font-variant-numeric:tabular-nums}
table.t th{text-align:right;font-size:11px;color:#6B7488;font-weight:600;padding:8px 6px;border-bottom:1px solid var(--line);text-transform:uppercase;letter-spacing:.6px}
table.t td{text-align:right;padding:10px 6px;border-bottom:1px solid var(--line2)}
table.t th:first-child,table.t td:first-child{text-align:left}
table.t tr.tot td{font-weight:700;border-bottom:0}
table.t td.izq,table.t th.izq{text-align:left}
.bar{height:6px;border-radius:3px;background:var(--navy);margin-top:4px;min-width:2px}
.scroll{overflow-x:auto}
.proy{display:grid;grid-template-columns:1fr auto;font-variant-numeric:tabular-nums}
.proy div{padding:9px 0;border-bottom:1px solid var(--line2)}
.proy div:nth-child(even){text-align:right;font-weight:600}
.proy .h{grid-column:1/-1;font-size:11px;text-transform:uppercase;letter-spacing:.8px;color:var(--muted);border:0;padding-top:16px;font-weight:600}
.proy .big2{font-family:var(--serif);font-size:20px;color:var(--navy)}
.chk{display:flex;align-items:center;gap:8px;padding:6px 0;font-weight:500;color:var(--ink);font-size:14px;margin:0}
.chk input{width:auto}
#ueClientes,#nuClientes{max-height:240px;overflow:auto;border:1px solid var(--line);border-radius:10px;padding:4px 12px;margin-top:6px}
.cal{display:flex;gap:14px;align-items:center;padding:10px 12px;border-radius:10px;background:var(--ivory);margin-top:8px}
.cal .d{width:46px;text-align:center;flex:none}.cal .d b{display:block;font-family:var(--serif);font-size:26px;color:var(--navy);line-height:1}
.cal .d span{font-size:11px;color:#6B7488;text-transform:uppercase}
.cal .t b{display:block;font-size:14px;font-weight:600}.cal .t span{font-size:12px;color:var(--muted)}

/* ---------- editor (panel deslizable) ---------- */
.sheet{position:fixed;inset:0;background:rgba(11,31,69,.35);display:none;align-items:stretch;justify-content:flex-end;z-index:40}
.sheet.open{display:flex}
.sheet .panel{background:#fff;width:100%;max-width:640px;overflow:auto;padding:24px 26px 30px;box-shadow:-20px 0 50px rgba(0,0,0,.15)}
@media(max-width:700px){.sheet{align-items:flex-end}.sheet .panel{max-height:94vh;border-radius:18px 18px 0 0}}
.status{display:flex;align-items:center;gap:10px;padding:12px 14px;border-radius:10px;background:var(--infobg);color:var(--info);font-weight:500;margin-bottom:12px}
.spin{width:18px;height:18px;border:3px solid currentColor;border-right-color:transparent;border-radius:50%;animation:s 1s linear infinite;flex:none}
@keyframes s{to{transform:rotate(360deg)}}
.preview{width:100%;max-height:260px;object-fit:contain;border-radius:10px;background:var(--ivory);border:1px solid var(--line);margin-bottom:12px}
.toast{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);background:var(--navy);color:#fff;padding:12px 18px;border-radius:12px;font-size:14px;z-index:60;display:none;max-width:90vw;box-shadow:0 10px 30px rgba(0,0,0,.2)}
.devolver{background:var(--badbg);border-radius:10px;padding:12px;margin-top:12px}

/* ---------- portal del cliente ---------- */
#portalView{max-width:560px;margin:0 auto;min-height:100vh;background:var(--ivory)}
.pHead{background:var(--navy);color:#fff;padding:22px 22px 72px}
.pHead .fila{display:flex;justify-content:space-between;align-items:center}
.pHead img{width:132px}
.pHead button{background:rgba(255,255,255,.12);border-color:transparent;color:#fff;padding:8px 12px;font-size:13px}
.pHead span{display:block;margin-top:18px;font-size:13px;color:#A9B6CE}
.pHead h1{color:#fff;margin:4px 0 0;font-size:30px;line-height:1.1}
.pSubir{margin:-52px 18px 0;background:#fff;border-radius:16px;padding:20px;box-shadow:0 10px 30px rgba(11,31,69,.1);display:flex;flex-direction:column;gap:12px}
.pSec{padding:20px 18px 0}
.pSec h2{font-size:22px;margin:0 0 10px}
.pItem{background:#fff;border-radius:12px;padding:14px;display:flex;gap:12px;align-items:center;margin-bottom:8px}
.pIco{width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;flex:none}
.pItem .tx{flex:1;min-width:0}.pItem .tx b{display:block;font-size:14px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pItem .tx span{font-size:12px;color:var(--muted)}
body:not(.rol-admin) .soloAdmin{display:none!important}
