:root{--accent:#1877CC;--ink:#0F1B2D;--ink2:#33405A;--muted:#55627A;--line:#E6E9EE;--line2:#EEF0F3;--field:#DDE1E7;--bg:#F7F8FA;--err:#8E1F3E;--errbg:#FDF0F3;--errline:#F0C4CF;--okbg:#E8F4EC;--okline:#BFE0CA;--okink:#1E6B3E}
*{box-sizing:border-box}
body{margin:0;font-family:'Inter',system-ui,sans-serif;color:var(--ink);font-feature-settings:'cv11','ss01';background:#fff;-webkit-font-smoothing:antialiased}
a{text-decoration:none;color:inherit}a:hover{opacity:.88}
button,input,select,textarea{font-family:inherit}
h1{margin:0;font-size:22px;font-weight:600;letter-spacing:-.02em}
h2{margin:0;font-size:16px;font-weight:600;letter-spacing:-.01em}
.muted{color:var(--muted)}.small{font-size:13px}.num{font-variant-numeric:tabular-nums}.right{text-align:right}

/* Estructura de la app */
.shell{display:flex;flex-wrap:wrap;min-height:100vh}
.side{flex:0 0 232px;padding:24px 14px 20px;background:var(--bg);border-right:1px solid var(--line);display:flex;flex-direction:column;gap:24px}
.brand{display:flex;align-items:center;gap:10px;padding:0 8px;font-size:16px;font-weight:600;letter-spacing:-.015em}
.side ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}
.side li a,.side li span{display:flex;align-items:center;gap:10px;height:44px;padding:0 10px;border-radius:8px;font-size:14px;font-weight:500;color:#46526A}
.side li a.on{background:#E9ECF1;color:var(--ink);font-weight:600}
.side li a.on svg path{stroke:var(--accent)}
.side li span{opacity:.45;cursor:default}
.side li span em{margin-left:auto;font-style:normal;font-size:11px;font-weight:500}
.side .foot{margin-top:auto;padding:14px 10px 0;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:4px;font-size:13px}
.side .foot b{font-weight:600}.side .foot .who{color:var(--muted);word-break:break-all}
.link-btn{background:none;border:0;padding:0;color:var(--accent);font-size:13px;font-weight:500;cursor:pointer;text-align:left}
.main{flex:999 1 560px;min-width:0;padding:28px 40px 48px;display:flex;flex-direction:column;gap:24px}
.top{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px}
.top .tools{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.sub{font-size:13px;color:var(--muted)}

/* Controles */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:44px;padding:0 18px;border-radius:8px;border:1px solid var(--accent);background:var(--accent);color:#fff;font-size:14px;font-weight:600;cursor:pointer}
.btn.ghost{background:#fff;color:var(--ink);border-color:var(--field);font-weight:500}
.btn.danger{background:#fff;color:var(--err);border-color:var(--errline);font-weight:500}
.btn.sm{height:36px;padding:0 12px;font-size:13px}
.btn.block{width:100%;height:48px;font-size:15px}
.field{display:flex;flex-direction:column;gap:6px}
.field label,.lbl{font-size:13px;font-weight:500;color:var(--ink2)}
.in,select.in,textarea.in{height:44px;padding:0 14px;border:1px solid var(--field);border-radius:8px;background:#fff;font-size:14px;color:var(--ink);width:100%}
textarea.in{height:auto;padding:10px 14px;min-height:80px}
.in:focus{outline:2px solid #BBD8F3;border-color:var(--accent)}
.in.bad{border-color:var(--err)}
.err{font-size:13px;color:var(--err)}
.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px}
.check{display:flex;align-items:center;gap:10px;min-height:44px;font-size:14px;color:var(--ink2)}
.check input{width:18px;height:18px;margin:0;accent-color:var(--accent)}

/* Avisos */
.flash{padding:12px 16px;border-radius:10px;font-size:14px;border:1px solid}
.flash.ok{background:var(--okbg);border-color:var(--okline);color:var(--okink)}
.flash.error{background:var(--errbg);border-color:var(--errline);color:var(--err)}

/* Cifras y tablas */
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr));gap:1px;border:1px solid var(--line);border-radius:12px;background:var(--line);overflow:hidden}
.kpi{padding:20px 24px;background:#fff;display:flex;flex-direction:column;gap:10px}
.kpi b{font-size:30px;font-weight:600;letter-spacing:-.025em;line-height:1.1}
.tabs{display:flex;flex-wrap:wrap;gap:22px;border-bottom:1px solid var(--line)}
.tabs a{height:44px;display:flex;align-items:center;margin-bottom:-1px;border-bottom:2px solid transparent;font-size:14px;color:var(--muted);font-weight:500}
.tabs a.on{border-color:var(--accent);color:var(--ink);font-weight:600}
.tbl{overflow-x:auto}.tbl>div{min-width:680px}
.tr{display:grid;gap:16px;align-items:center;padding:14px 8px;border-top:1px solid var(--line2);font-size:14px}
.tr.head{border-top:0;padding:14px 8px 10px;font-size:12px;font-weight:500;color:var(--muted)}
a.tr:hover{background:var(--bg);opacity:1}
.cols-inv{grid-template-columns:1.1fr 2fr 1fr 1.2fr 1fr}
.cols-exp{grid-template-columns:2fr 1.6fr 1fr 1.1fr 1fr}
.cols-cus{grid-template-columns:2.2fr 1.3fr 1.4fr 1.2fr 1.2fr}
.status{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:500;color:var(--ink2)}
.dot{width:8px;height:8px;border-radius:999px;background:#A3ABB8}
.dot.pending{background:#8B7FE8}.dot.paid{background:var(--accent)}.dot.overdue{background:#D9670F}.dot.draft{background:#A3ABB8}
.avatar{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:999px;background:#EEF0F4;color:var(--ink2);font-size:13px;font-weight:600;flex:0 0 32px}
.empty{padding:40px 8px;text-align:center;color:var(--muted);font-size:14px;border-top:1px solid var(--line2)}
.card{border:1px solid var(--line);border-radius:12px;padding:20px;display:flex;flex-direction:column;gap:16px}
.notice{display:flex;gap:12px;align-items:flex-start;padding:14px 20px;border-radius:12px;border:1px solid var(--line);font-size:13px;line-height:1.5;color:var(--muted)}

/* Editor de factura */
.editor{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:28px;align-items:start}
@media(max-width:1100px){.editor{grid-template-columns:1fr}}
.seg{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.seg label{border:1px solid var(--field);border-radius:10px;padding:12px 14px;display:flex;gap:10px;cursor:pointer;font-size:14px}
.seg label:has(input:checked){border-color:var(--accent);background:#F2F8FE}
.seg input{margin-top:3px;accent-color:var(--accent)}
.seg small{display:block;color:var(--muted);font-size:12px;margin-top:2px}
.lines{display:flex;flex-direction:column;gap:10px}
.line{display:grid;grid-template-columns:minmax(0,3fr) 78px 104px 84px 36px;gap:8px;align-items:center}
.line .x{height:44px;width:36px;border:0;background:none;color:var(--muted);font-size:18px;cursor:pointer}
.line.hd{font-size:12px;color:var(--muted);font-weight:500}
.preview{border:1px solid var(--line);border-radius:12px;padding:28px;background:#fff;position:sticky;top:16px;font-size:13px;display:flex;flex-direction:column;gap:18px;box-shadow:0 1px 2px rgba(15,27,45,.04)}
.preview .ph{display:flex;justify-content:space-between;gap:16px}
.preview table{width:100%;border-collapse:collapse}
.preview th{font-size:11px;font-weight:500;color:var(--muted);text-align:left;padding:6px 0;border-bottom:1px solid var(--line)}
.preview th.right{text-align:right}
.preview td{padding:7px 0;border-bottom:1px solid var(--line2);vertical-align:top}
.preview .tot{margin-left:auto;min-width:220px;display:flex;flex-direction:column;gap:6px}
.preview .tot div{display:flex;justify-content:space-between;gap:24px}
.preview .tot .big{font-size:16px;font-weight:600;border-top:1px solid var(--line);padding-top:8px}
.paper{max-width:760px;margin:0 auto;width:100%}

/* Acceso */
.guest{min-height:100vh;display:flex;flex-direction:column}
.guest header{padding:24px 40px}
.guest main{flex:1;display:flex;align-items:center;justify-content:center;padding:24px 24px 96px}
.guest form{width:100%;max-width:400px;display:flex;flex-direction:column;gap:24px}
.guest h1{font-size:28px;letter-spacing:-.03em;line-height:1.15}
.guest .lead{margin:8px 0 0;font-size:15px;line-height:1.5;color:var(--muted)}
.cols-stf{grid-template-columns:2fr 1.2fr 1.2fr .8fr .8fr 1fr}.cols-aud{grid-template-columns:1.3fr 1.2fr 3fr}
