:root{
  --bg:#f5f8ff; --surface:#ffffff; --surface-warm:#eaf1ff;
  --fg:#101828; --fg-2:#344054; --muted:#667085; --meta:#2563eb;
  --border:#d7e0ef; --border-soft:#edf2f8;
  --accent:#2563eb; --accent-on:#ffffff;
  --accent-hover:color-mix(in srgb,var(--accent),black 8%);
  --success:#16a34a; --warn:#f59e0b; --danger:#ef4444;
  --font-display:Poppins,Inter,system-ui,-apple-system,sans-serif;
  --font-body:Poppins,Inter,system-ui,-apple-system,sans-serif;
  --font-mono:"SF Mono",ui-monospace,Menlo,monospace;
  --text-xs:12px; --text-sm:14px; --text-base:16px; --text-lg:18px; --text-xl:24px; --text-2xl:36px;
  --space-1:4px; --space-2:8px; --space-3:12px; --space-4:16px; --space-5:20px; --space-6:24px; --space-8:32px; --space-12:48px;
  --radius-sm:10px; --radius-md:16px; --radius-lg:24px; --radius-pill:9999px;
  --elev-ring:0 0 0 1px var(--border);
  --elev-raised:0 20px 52px rgba(16,24,40,.11);
  --focus-ring:0 0 0 4px rgba(37,99,235,.22);
  --motion-fast:150ms; --motion-base:240ms; --ease:cubic-bezier(.2,0,0,1);
  --container-max:1180px;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{background:var(--bg);color:var(--fg);font-family:var(--font-body);font-size:var(--text-base);line-height:1.52;-webkit-font-smoothing:antialiased}
button{font:inherit;cursor:pointer}
input,select,textarea{font:inherit}
:focus-visible{outline:none;box-shadow:var(--focus-ring)}
.hidden{display:none!important}

/* ---------- LOGIN ---------- */
.login-wrap{min-height:100vh;display:grid;place-items:center;padding:var(--space-6) var(--space-4)}
.login-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--elev-raised);max-width:420px;width:100%;padding:var(--space-8)}
.brand{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-2)}
.brand-mark{width:40px;height:40px;border-radius:var(--radius-sm);background:var(--fg);color:#fff;display:grid;place-items:center;font-weight:700}
.brand h1{font-size:var(--text-xl);margin:0;letter-spacing:-.02em}
.brand-sub{color:var(--muted);font-size:var(--text-sm);margin:0 0 var(--space-6)}
.field{margin-bottom:var(--space-4)}
.field label{display:block;font-size:var(--text-sm);font-weight:600;margin-bottom:var(--space-2)}
.field input{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:#fff;transition:border-color var(--motion-fast) var(--ease)}
.field input:focus{border-color:var(--accent)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);border:none;border-radius:var(--radius-sm);padding:10px 18px;font-weight:600;transition:background var(--motion-fast) var(--ease),transform var(--motion-fast) var(--ease)}
.btn-primary{background:var(--accent);color:var(--accent-on);width:100%}
.btn-primary:hover{background:var(--accent-hover)}
.btn-ghost{background:transparent;border:1px solid var(--border);color:var(--fg-2)}
.btn-ghost:hover{background:var(--surface-warm)}
.login-error{color:var(--danger);font-size:var(--text-sm);min-height:20px;margin:var(--space-2) 0}
.login-hint{background:var(--surface-warm);border:1px solid var(--border-soft);border-radius:var(--radius-sm);padding:var(--space-3);font-size:var(--text-sm);color:var(--fg-2);margin-top:var(--space-4)}
.login-hint code{font-family:var(--font-mono);background:#fff;border:1px solid var(--border);border-radius:6px;padding:1px 6px}
.api-base-row{display:flex;align-items:center;gap:var(--space-2);margin-top:var(--space-4);font-size:var(--text-sm);color:var(--muted)}
.api-base-row label{font-weight:600}
.api-base-row input{flex:1;min-width:0;padding:7px 10px;border:1px solid var(--border);border-radius:8px;font-size:var(--text-sm);font-family:var(--font-mono);background:#fff;color:var(--fg-2)}
.norm-search{display:flex;gap:var(--space-2);margin-bottom:var(--space-3)}
.norm-chips{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);margin-bottom:var(--space-4);font-size:var(--text-sm);color:var(--muted)}
.norm-chips .btn{width:auto}
.norm-search input{flex:1;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:#fff}
.norm-search select{padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:#fff;color:var(--fg-2)}
.form-card .mod-actions .btn-primary{width:auto}
.norm-search .btn{width:auto}
.norm-msg{font-size:var(--text-sm);color:var(--muted);margin:0 0 var(--space-4);min-height:20px}
.norm-meta{color:var(--muted);font-size:var(--text-sm)}
.card a{color:var(--accent)}
button.card{cursor:pointer;text-align:left;font:inherit;color:inherit}

/* ---------- APP SHELL ---------- */
.shell{display:grid;grid-template-rows:56px 1fr;height:100vh}
.topbar{display:flex;align-items:center;justify-content:space-between;padding:0 var(--space-5);background:var(--surface);border-bottom:1px solid var(--border)}
.topbar .brand h1{font-size:var(--text-lg)}
.topbar-right{display:flex;align-items:center;gap:var(--space-3)}
.user-chip{font-size:var(--text-sm);color:var(--muted)}

/* ---------- ALERT CENTER ---------- */
.icon-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;flex:none;background:transparent;border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--fg-2)}
.icon-btn:hover{background:var(--surface-warm)}
.icon-btn svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.alert-wrap{position:relative}
.alert-badge{position:absolute;top:-6px;right:-6px;min-width:20px;height:20px;padding:0 5px;border-radius:var(--radius-pill);background:var(--danger);color:#fff;font-size:var(--text-xs);font-weight:700;display:grid;place-items:center}
.alert-panel{position:absolute;top:calc(100% + 8px);right:0;width:min(360px,90vw);max-height:min(480px,70vh);overflow-y:auto;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--elev-raised);z-index:40;padding:var(--space-3)}
.alert-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);margin-bottom:var(--space-2)}
.alert-head strong{font-size:var(--text-base)}
.alert-head .btn{padding:6px 12px;font-size:var(--text-sm);width:auto}
.alert-item{display:flex;gap:var(--space-3);width:100%;text-align:left;background:transparent;border:1px solid transparent;border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3)}
.alert-item:hover{background:var(--surface-warm);border-color:var(--border-soft)}
.alert-item strong{display:block;font-size:var(--text-sm)}
.alert-item p{margin:2px 0 0;font-size:var(--text-sm);color:var(--fg-2)}
.alert-item .norm-meta{margin-top:2px}
.alert-dot{flex:none;width:10px;height:10px;border-radius:50%;margin-top:6px;background:var(--meta)}
.alert-dot.red{background:var(--danger)}
.alert-dot.amber{background:var(--warn)}
.menu-btn{display:none;align-items:center;justify-content:center;width:40px;height:40px;flex:none;background:transparent;border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--fg-2)}
.menu-btn svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round}
.scrim{display:none}
.body{display:grid;grid-template-columns:248px 1fr;min-height:0}
.sidebar{background:var(--surface);border-right:1px solid var(--border);padding:var(--space-4);overflow-y:auto}
.nav-section{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:var(--space-4) var(--space-2) var(--space-2)}
.nav-item{display:flex;align-items:center;gap:var(--space-3);width:100%;text-align:left;background:transparent;border:none;border-radius:var(--radius-sm);padding:9px 12px;color:var(--fg-2);font-size:var(--text-sm);transition:background var(--motion-fast) var(--ease)}
.nav-item svg{flex:none;width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.nav-item:hover{background:var(--surface-warm)}
.nav-item.active{background:var(--fg);color:#fff}
.main{padding:var(--space-6);overflow-y:auto;max-width:var(--container-max)}
.main h2{font-size:var(--text-xl);margin:0 0 var(--space-1);letter-spacing:-.02em}
.main .lede{color:var(--muted);margin:0 0 var(--space-6);font-size:var(--text-sm)}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:var(--space-4)}
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-5);box-shadow:var(--elev-ring);transition:box-shadow var(--motion-base) var(--ease),transform var(--motion-base) var(--ease)}
.card:hover{box-shadow:var(--elev-raised)}
.card h3{margin:0 0 var(--space-2);font-size:var(--text-base)}
.card p,.card li{font-size:var(--text-sm);color:var(--fg-2)}
.card ul{margin:var(--space-2) 0 0;padding-left:18px}
.badge{display:inline-block;font-size:var(--text-xs);font-weight:700;border-radius:var(--radius-pill);padding:2px 10px;margin-bottom:var(--space-2)}
.badge.warn{background:#fef3c7;color:#92400e}
.badge.ok{background:#dcfce7;color:#166534}
.badge.info{background:var(--surface-warm);color:var(--meta)}
.placeholder{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-8);text-align:center;color:var(--muted)}
.guide-ol,.guide-ul{margin:var(--space-2) 0 0;padding-left:18px;font-size:var(--text-sm);color:var(--fg-2);display:grid;gap:6px}
.guide-ol ul,.guide-ul ul{margin-top:6px}
.guide-mod{margin-top:var(--space-4)}
.guide-mod summary{width:auto}
.guide-mod pre{font-family:var(--font-mono);font-size:var(--text-sm);white-space:pre-wrap;background:var(--surface-warm);border:1px solid var(--border-soft);border-radius:var(--radius-sm);padding:var(--space-4);margin:var(--space-4) 0 0;color:var(--fg)}

/* ---------- CHAT SECTION ---------- */
.chat-settings{display:grid;grid-template-columns:1.2fr 1.4fr 1fr auto;gap:var(--space-2);margin-bottom:var(--space-2);align-items:center}
.chat-settings input{width:100%;padding:7px 10px;border:1px solid var(--border);border-radius:8px;font-size:var(--text-sm);background:#fff}
.rag-toggle{display:flex;align-items:center;gap:6px;font-size:var(--text-sm);color:var(--fg-2);white-space:nowrap}
.rag-toggle input{width:auto;accent-color:var(--accent)}
.agent-note{font-size:var(--text-xs);color:var(--muted);margin:0 0 var(--space-4)}
.chat-layout{display:grid;grid-template-columns:240px 1fr;gap:var(--space-4);height:calc(100vh - 260px);min-height:420px}
.chat-side{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-3);overflow-y:auto}
.chat-side .btn{width:100%;margin-bottom:var(--space-3)}
.chat-side ul{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-1)}
.chat-side li{display:flex;gap:var(--space-1);align-items:center}
.convo{flex:1;text-align:left;background:transparent;border:none;border-radius:var(--radius-sm);padding:8px 10px;font-size:var(--text-sm);color:var(--fg-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.convo:hover{background:var(--surface-warm)}
.convo.active{background:var(--fg);color:#fff}
.convo-del{background:none;border:none;color:var(--muted);font-size:16px;line-height:1;padding:4px 6px;border-radius:6px}
.convo-del:hover{background:#fef2f2;color:var(--danger)}
.convo-empty{font-size:var(--text-sm);color:var(--muted);padding:var(--space-2)}
.chat-main{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);display:flex;flex-direction:column;overflow:hidden;min-height:0}
.chat-msgs{flex:1;overflow-y:auto;padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-3)}
.chat-empty{color:var(--muted);font-size:var(--text-sm);text-align:center;margin:auto}
.msg{max-width:90%;padding:var(--space-2) var(--space-3);border-radius:12px;font-size:var(--text-sm);white-space:pre-wrap;word-wrap:break-word}
.msg.user{align-self:flex-end;background:var(--fg);color:#fff}
.msg.asst{align-self:flex-start;background:var(--surface-warm);border:1px solid var(--border-soft);color:var(--fg)}
.msg.err{align-self:flex-start;background:#fef2f2;border:1px solid #fecaca;color:#991b1b}
.chat-form{display:flex;gap:var(--space-2);padding:var(--space-3);border-top:1px solid var(--border);align-items:flex-end}
.chat-form textarea{flex:1;padding:9px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);resize:vertical;min-height:44px}
.chat-actions{display:flex;gap:var(--space-2)}
.chat-actions button{background:var(--accent);color:#fff;border:none;border-radius:var(--radius-sm);padding:9px 16px;font-weight:600}
.chat-actions button:hover{background:var(--accent-hover)}
.chat-actions button:disabled{opacity:.6;cursor:wait}
.chat-actions .btn-ghost{background:transparent;border:1px solid var(--border);color:var(--fg-2)}
.chat-actions .btn-ghost:hover{background:var(--surface-warm)}

@media (max-width:767px){
  html,body{overflow-x:hidden}
  .menu-btn{display:inline-flex}
  .topbar{padding:0 var(--space-3);gap:var(--space-2)}
  .topbar .brand{gap:var(--space-2);margin-bottom:0;min-width:0}
  .topbar .brand h1{font-size:var(--text-base);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .topbar .brand-mark{width:32px;height:32px;flex:none}
  .topbar-right{gap:var(--space-2);min-width:0}
  .user-chip{display:none}
  .topbar-right .btn{padding:8px 12px;font-size:var(--text-sm);white-space:nowrap}
  .body{grid-template-columns:1fr;min-width:0}
  .sidebar{position:fixed;top:56px;bottom:0;left:0;width:min(280px,84vw);z-index:30;display:block;overflow-y:auto;border-right:1px solid var(--border);border-bottom:none;transform:translateX(-100%);transition:transform var(--motion-base) var(--ease)}
  .sidebar.open{transform:none}
  .scrim:not([hidden]){display:block;position:fixed;inset:56px 0 0 0;z-index:20;background:rgba(16,24,40,.45)}
  .main{padding:var(--space-4);max-width:100%;min-width:0;overflow-x:hidden}
  .cards{grid-template-columns:1fr}
  .card,.chat-main,.chat-side{min-width:0;max-width:100%}
  .chat-settings{grid-template-columns:1fr}
  .chat-layout{grid-template-columns:1fr;height:auto;min-height:0}
  .chat-side{max-height:180px}
  .chat-msgs{min-height:300px;max-height:60vh}
  .chat-form{flex-direction:column;align-items:stretch}
  .chat-form textarea{width:100%;min-width:0}
  .chat-actions{display:flex}
  .chat-actions button{flex:1}
  .norm-search{flex-direction:column}
  .norm-search .btn{width:100%}
  .ag-row{min-width:0}
  .ag-row>span:nth-child(2){flex:1;min-width:0;overflow-wrap:anywhere}
}

/* ---------- MODELOS ---------- */
.mod-layout{display:grid;grid-template-columns:minmax(280px,380px) 1fr;gap:var(--space-4);align-items:start}
.mod-form{margin-top:0}
.mod-prev-card h3{margin-bottom:var(--space-2)}
.mod-count{font-size:var(--text-sm);color:var(--muted);margin:0 0 var(--space-3)}
.mod-count.bad{color:#991b1b;font-weight:700}
.mod-preview{background:#fff;border:1px solid var(--border-soft);border-radius:var(--radius-sm);padding:var(--space-4);white-space:pre-wrap;font-size:var(--text-sm);color:var(--fg);line-height:1.6}
.ph-miss{background:#fef3c7;color:#92400e;border-radius:4px;padding:0 4px;font-weight:700}
.mod-actions{display:flex;gap:var(--space-2);flex-wrap:wrap;margin-top:var(--space-4)}
.mod-actions .btn{width:auto}
#modDown:disabled{opacity:.6;cursor:not-allowed}
.mod-confirm{display:flex;gap:var(--space-2);align-items:center;font-size:var(--text-sm);color:var(--fg-2);margin-top:var(--space-3);cursor:pointer}
.mod-confirm input{width:18px;height:18px;flex:none}
.mod-list-prev{margin:var(--space-3) 0 0;max-height:11em;overflow:hidden}
.mod-list-det{margin-top:var(--space-3)}
.mod-list-det summary{display:inline-flex;cursor:pointer}
.mod-list-det pre{margin:var(--space-3) 0 0}
@media (max-width:767px){.mod-layout{grid-template-columns:1fr}.mod-actions .btn{flex:1}}
.exp-ficha{display:none}
@media print{
  body *{visibility:hidden}
  #modPreview,#modPreview *{visibility:visible}
  #modPreview{position:absolute;left:0;top:0;width:100%;border:none;padding:0;white-space:pre-wrap}
  #modPreview .ph-miss{background:none;border:1px solid #000}
  #expFicha,#expFicha *{visibility:visible}
  #expFicha{display:block;position:absolute;left:0;top:0;width:100%;background:#fff;color:#000;padding:0}
  #expFicha h2{font-size:18px;margin:0 0 4px}
  #expFicha h3{font-size:14px;margin:12px 0 4px}
  #expFicha p,#expFicha li{font-size:12px;color:#000}
  #expFicha ul{margin:4px 0 0;padding-left:18px}
}

/* ---------- EXPEDIENTES / AGENDA ---------- */
.offline-note{font-size:var(--text-sm);color:var(--fg-2);background:var(--surface-warm);border:1px solid var(--border);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);margin:0 0 var(--space-4)}
.form-card{margin-top:var(--space-4)}
.form-card form{display:grid;gap:var(--space-1)}
.form-card .field{margin-bottom:var(--space-2)}
.form-card input,.form-card select,.form-card textarea{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:#fff}
.form-card .btn-primary{width:auto;justify-self:start}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}
@media (max-width:767px){.grid2{grid-template-columns:1fr}}
#expList{margin-bottom:var(--space-2)}
.timeline{list-style:none;margin:var(--space-2) 0 0;padding:0;display:grid;gap:var(--space-3)}
.timeline li{border-left:3px solid var(--border);padding-left:var(--space-3);font-size:var(--text-sm);color:var(--fg-2)}
.tl{list-style:none;margin:var(--space-2) 0 0;padding:0;display:grid;gap:var(--space-3)}
.tl li{position:relative;padding-left:26px;font-size:var(--text-sm);color:var(--fg-2)}
.tl li::before{content:"";position:absolute;left:6px;top:18px;bottom:-12px;width:2px;background:var(--border)}
.tl li:last-child::before{display:none}
.tl-dot{position:absolute;left:0;top:2px;width:14px;height:14px;border-radius:50%;background:var(--accent);border:2px solid var(--surface);box-shadow:var(--elev-ring)}
.tl p{margin:0 0 var(--space-1)}
.ag-row{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3);border:1px solid var(--border-soft);border-radius:var(--radius-sm);margin-bottom:var(--space-2);cursor:pointer}
.ag-row input{width:18px;height:18px;flex:none}
.ag-row .ag-badge{margin-left:auto;flex:none}
.ag-row.done{opacity:.65}
.ag-row.done strong{text-decoration:line-through}
.ag-row.overdue{border-color:#fecaca;background:#fef2f2}
.badge.danger{background:#fee2e2;color:#991b1b}
.plazo-res{font-size:var(--text-lg);color:var(--fg)}
#plBreak details{margin-top:var(--space-2)}
#plBreak summary{cursor:pointer;color:var(--meta);font-size:var(--text-sm)}
.liq-table{width:100%;border-collapse:collapse;font-size:var(--text-sm);margin-top:var(--space-3)}
.liq-table td{padding:var(--space-2) 0;border-top:1px solid var(--border-soft);color:var(--fg-2)}
.liq-table td:last-child{text-align:right;font-weight:600;color:var(--fg);white-space:nowrap}
.liq-warn{background:#fef3c7;color:#92400e;border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);font-size:var(--text-sm);font-weight:700;margin:0 0 var(--space-3)}
.cli-head{display:flex;align-items:center;gap:var(--space-3)}
.cli-head h3{margin:0}
.cli-avatar{position:relative;flex:none;width:40px;height:40px;border-radius:50%;background:var(--surface-warm);color:var(--meta);display:grid;place-items:center;font-weight:700;overflow:hidden}
.cli-avatar img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
#rentChartBox{margin-top:var(--space-3)}
#rentChart{width:100%;display:block}
.rent-legend{display:flex;gap:var(--space-4);font-size:var(--text-sm);color:var(--fg-2);margin:0 0 var(--space-2)}
.rent-legend .sw{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:6px;vertical-align:baseline}
.sw-fact{background:var(--accent)}
.sw-cob{background:var(--success)}
.rent-fallback{margin:var(--space-2) 0 0;padding-left:18px}
#liqIntRes details,#liqIntRes ol{margin-top:var(--space-2)}
#liqIntRes summary{cursor:pointer;color:var(--meta);font-size:var(--text-sm)}

/* ---------- SHARE (vista pública cliente) ---------- */
.share-view{min-height:100vh;display:grid;place-items:start center;padding:var(--space-8) var(--space-4);gap:var(--space-4)}
.share-head{display:flex;align-items:center;gap:var(--space-3)}
.share-head h1{font-size:var(--text-lg);margin:0}
.share-head p{margin:0;color:var(--muted);font-size:var(--text-sm)}
.share-card{max-width:640px}
.share-card h2{margin:0 0 var(--space-2);font-size:var(--text-xl);letter-spacing:-.02em}
.share-card h3{margin:var(--space-5) 0 var(--space-2);font-size:var(--text-base)}
.share-foot{margin-top:var(--space-6);color:var(--muted);font-size:var(--text-sm);border-top:1px solid var(--border-soft);padding-top:var(--space-4)}
