/* ============================================================
   DEVECO Engineering AI — Design System
   Industrial B2B SaaS UI — Siemens/Autodesk/SAP inspired
   ============================================================ */

:root{
  /* Core palette */
  --navy-950:#060f1a;
  --navy-900:#0a1a2c;
  --navy-800:#0f2438;
  --navy-700:#15304a;
  --navy-600:#1c3f5e;
  --graphite-900:#1b2229;
  --graphite-700:#3a4451;
  --graphite-500:#5c6b7a;
  --graphite-300:#8a96a3;
  --gray-100:#f3f6f8;
  --gray-150:#eef1f4;
  --gray-200:#e4e9ee;
  --gray-300:#d3dbe2;
  --white:#ffffff;

  --blue-700:#0f4c8c;
  --blue-600:#155ea3;
  --blue-500:#1b74c4;
  --cyan-500:#12b8d4;
  --cyan-400:#2fd3ec;

  --green-700:#127a44;
  --green-600:#189a56;
  --green-100:#e3f7ec;
  --amber-700:#a86400;
  --amber-600:#d98a00;
  --amber-100:#fff2dd;
  --red-700:#a52a2a;
  --red-600:#d0453f;
  --red-100:#fbe6e5;

  --shadow-sm:0 1px 2px rgba(10,26,44,.06), 0 1px 1px rgba(10,26,44,.04);
  --shadow-md:0 4px 14px rgba(10,26,44,.08), 0 1px 3px rgba(10,26,44,.06);
  --shadow-lg:0 12px 32px rgba(10,26,44,.14), 0 2px 8px rgba(10,26,44,.08);
  --radius-sm:6px;
  --radius-md:10px;
  --radius-lg:16px;
  --sidebar-w:260px;
  --header-h:64px;
}

*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{
  font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  background:var(--gray-100);
  color:var(--graphite-900);
  font-size:14px;
  line-height:1.45;
  -webkit-font-smoothing:antialiased;
  overflow:hidden;
  height:100vh;
}
h1,h2,h3,h4,h5{margin:0;font-weight:700;letter-spacing:-.01em;}
p{margin:0;}
ul{margin:0;padding:0;list-style:none;}
button{font-family:inherit;cursor:pointer;}
a{color:inherit;text-decoration:none;}
::selection{background:var(--cyan-400);color:var(--navy-950);}

/* Scrollbars */
::-webkit-scrollbar{width:9px;height:9px;}
::-webkit-scrollbar-track{background:transparent;}
::-webkit-scrollbar-thumb{background:#c3cdd6;border-radius:6px;}
::-webkit-scrollbar-thumb:hover{background:#a9b6c1;}

/* ============ APP SHELL ============ */
#app{display:flex;height:100vh;width:100vw;}

/* ---------- SIDEBAR ---------- */
.sidebar{
  width:var(--sidebar-w);
  flex-shrink:0;
  background:linear-gradient(180deg,var(--navy-950) 0%, var(--navy-900) 60%, var(--navy-800) 100%);
  color:#cfe0ee;
  display:flex;
  flex-direction:column;
  height:100vh;
  border-right:1px solid rgba(255,255,255,.06);
}
.sidebar__brand{
  display:flex;align-items:center;gap:10px;
  padding:20px 20px 16px;
  border-bottom:1px solid rgba(255,255,255,.08);
}
.brand-mark{
  width:38px;height:38px;border-radius:9px;
  background:linear-gradient(135deg,var(--cyan-400),var(--blue-600));
  display:flex;align-items:center;justify-content:center;
  font-weight:800;color:var(--navy-950);font-size:15px;
  box-shadow:0 0 0 3px rgba(47,211,236,.15);
  flex-shrink:0;
}
.brand-text{line-height:1.15;}
.brand-text .l1{font-weight:800;font-size:15px;color:#fff;letter-spacing:.02em;}
.brand-text .l2{font-size:11px;color:#8fb3cf;font-weight:500;}

.sidebar__nav{flex:1;overflow-y:auto;padding:14px 12px;}
.nav-section-label{
  font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;
  color:#5d7f98;padding:14px 10px 6px;font-weight:700;
}
.nav-item{
  display:flex;align-items:center;gap:11px;
  padding:10px 12px;margin-bottom:2px;border-radius:8px;
  color:#b9cee0;font-size:13.4px;font-weight:500;
  cursor:pointer;transition:background .15s, color .15s;
  position:relative;
}
.nav-item i{width:17px;text-align:center;font-size:14px;color:#7ea3bf;transition:color .15s;}
.nav-item:hover{background:rgba(255,255,255,.06);color:#fff;}
.nav-item:hover i{color:var(--cyan-400);}
.nav-item.active{
  background:linear-gradient(90deg,rgba(47,211,236,.16),rgba(47,211,236,.02));
  color:#fff;
  box-shadow:inset 3px 0 0 var(--cyan-400);
}
.nav-item.active i{color:var(--cyan-400);}
.nav-item .nav-badge{
  margin-left:auto;background:var(--red-600);color:#fff;font-size:10px;font-weight:700;
  padding:1px 6px;border-radius:20px;
}
.nav-item .nav-badge.amber{background:var(--amber-600);}
.nav-item .nav-badge.blue{background:var(--blue-500);}

.sidebar__footer{
  padding:14px 18px;border-top:1px solid rgba(255,255,255,.08);
  font-size:11px;color:#5d7f98;
}
.sidebar__footer strong{color:#9fc1da;}

/* ---------- MAIN AREA ---------- */
.main{flex:1;display:flex;flex-direction:column;height:100vh;min-width:0;}

.topbar{
  height:var(--header-h);flex-shrink:0;
  background:#fff;border-bottom:1px solid var(--gray-300);
  display:flex;align-items:center;justify-content:space-between;
  padding:0 22px;gap:18px;
}
.topbar__left{display:flex;align-items:center;gap:14px;min-width:0;}
.context-chip{
  display:flex;align-items:center;gap:8px;
  background:var(--gray-150);border:1px solid var(--gray-300);
  padding:6px 12px;border-radius:20px;font-size:12.5px;font-weight:600;color:var(--navy-800);
  white-space:nowrap;
}
.context-chip i{color:var(--blue-600);}
.context-chip .sep{color:var(--graphite-300);font-weight:400;}
.topbar__title{font-size:16px;font-weight:700;color:var(--navy-900);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.topbar__subtitle{font-size:12px;color:var(--graphite-500);white-space:nowrap;}

.topbar__right{display:flex;align-items:center;gap:14px;flex-shrink:0;}
.icon-btn{
  width:36px;height:36px;border-radius:9px;border:1px solid var(--gray-300);
  background:#fff;display:flex;align-items:center;justify-content:center;color:var(--graphite-500);
  font-size:14px;position:relative;transition:all .15s;
}
.icon-btn:hover{background:var(--gray-150);color:var(--navy-800);}
.icon-btn .dot{position:absolute;top:6px;right:6px;width:7px;height:7px;border-radius:50%;background:var(--red-600);border:1.5px solid #fff;}
.user-chip{display:flex;align-items:center;gap:9px;padding:5px 10px 5px 6px;border-radius:22px;border:1px solid var(--gray-300);}
.user-avatar{width:28px;height:28px;border-radius:50%;background:linear-gradient(135deg,var(--blue-500),var(--navy-700));color:#fff;display:flex;align-items:center;justify-content:center;font-size:11.5px;font-weight:700;}
.user-chip .u-name{font-size:12.5px;font-weight:600;color:var(--navy-900);}
.user-chip .u-role{font-size:10.5px;color:var(--graphite-500);}

.view-scroll{flex:1;overflow-y:auto;padding:24px 28px 60px;}
.view{display:none;}
.view.active{display:block;animation:fadein .25s ease;}
@keyframes fadein{from{opacity:0;transform:translateY(4px);}to{opacity:1;transform:translateY(0);}}

.view-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:20px;gap:20px;}
.view-header h1{font-size:22px;color:var(--navy-900);}
.view-header .view-desc{font-size:13px;color:var(--graphite-500);margin-top:4px;}
.view-header-actions{display:flex;gap:10px;flex-shrink:0;}

/* ============ BUTTONS ============ */
.btn{
  display:inline-flex;align-items:center;gap:8px;
  padding:9px 16px;border-radius:8px;border:1px solid transparent;
  font-size:13px;font-weight:600;transition:all .15s;white-space:nowrap;
}
.btn i{font-size:12.5px;}
.btn-primary{background:linear-gradient(135deg,var(--blue-600),var(--navy-700));color:#fff;box-shadow:var(--shadow-sm);}
.btn-primary:hover{box-shadow:var(--shadow-md);transform:translateY(-1px);}
.btn-cyan{background:linear-gradient(135deg,var(--cyan-500),var(--blue-600));color:#fff;}
.btn-cyan:hover{transform:translateY(-1px);box-shadow:var(--shadow-md);}
.btn-outline{background:#fff;border-color:var(--gray-300);color:var(--navy-800);}
.btn-outline:hover{background:var(--gray-150);border-color:var(--graphite-300);}
.btn-ghost{background:transparent;color:var(--graphite-500);border-color:transparent;}
.btn-ghost:hover{background:var(--gray-150);color:var(--navy-800);}
.btn-success{background:var(--green-600);color:#fff;}
.btn-success:hover{background:var(--green-700);}
.btn-danger{background:#fff;color:var(--red-600);border-color:var(--red-100);}
.btn-danger:hover{background:var(--red-100);}
.btn-sm{padding:6px 11px;font-size:12px;}
.btn:disabled{opacity:.5;cursor:not-allowed;}
.btn-block{width:100%;justify-content:center;}

/* ============ CARDS ============ */
.card{
  background:#fff;border:1px solid var(--gray-200);border-radius:var(--radius-md);
  box-shadow:var(--shadow-sm);
}
.card-pad{padding:20px;}
.card-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--gray-200);}
.card-header h3{font-size:14px;color:var(--navy-900);display:flex;align-items:center;gap:8px;}
.card-header h3 i{color:var(--blue-600);}
.card-header .card-sub{font-size:11.5px;color:var(--graphite-500);font-weight:500;}

.grid{display:grid;gap:18px;}
.grid-4{grid-template-columns:repeat(4,1fr);}
.grid-3{grid-template-columns:repeat(3,1fr);}
.grid-2{grid-template-columns:repeat(2,1fr);}
.grid-12{grid-template-columns:repeat(12,1fr);}

/* KPI cards */
.kpi-card{
  background:#fff;border:1px solid var(--gray-200);border-radius:var(--radius-md);
  padding:18px 20px;box-shadow:var(--shadow-sm);position:relative;overflow:hidden;
}
.kpi-card::before{content:"";position:absolute;top:0;left:0;width:4px;height:100%;background:var(--blue-500);}
.kpi-card.amber::before{background:var(--amber-600);}
.kpi-card.cyan::before{background:var(--cyan-500);}
.kpi-card.green::before{background:var(--green-600);}
.kpi-value{font-size:28px;font-weight:800;color:var(--navy-900);letter-spacing:-.02em;}
.kpi-label{font-size:12px;color:var(--graphite-500);font-weight:600;margin-top:2px;}
.kpi-icon{position:absolute;top:16px;right:16px;font-size:22px;color:var(--gray-200);}

/* ============ BADGES ============ */
.badge{
  display:inline-flex;align-items:center;gap:5px;
  padding:3px 9px;border-radius:20px;font-size:11px;font-weight:700;letter-spacing:.01em;
  white-space:nowrap;
}
.badge-green{background:var(--green-100);color:var(--green-700);}
.badge-amber{background:var(--amber-100);color:var(--amber-700);}
.badge-red{background:var(--red-100);color:var(--red-700);}
.badge-blue{background:#e5eff9;color:var(--blue-700);}
.badge-gray{background:var(--gray-200);color:var(--graphite-700);}
.badge dot{width:6px;height:6px;border-radius:50%;}
.badge::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.85;}

/* ============ TABLES ============ */
.table-wrap{overflow-x:auto;}
table.data-table{width:100%;border-collapse:collapse;font-size:12.8px;}
table.data-table thead th{
  text-align:left;padding:10px 14px;background:var(--gray-150);
  color:var(--graphite-700);font-weight:700;font-size:11px;text-transform:uppercase;letter-spacing:.03em;
  border-bottom:1px solid var(--gray-300);position:sticky;top:0;
}
table.data-table tbody td{padding:11px 14px;border-bottom:1px solid var(--gray-200);color:var(--graphite-900);}
table.data-table tbody tr{transition:background .12s;cursor:default;}
table.data-table tbody tr.clickable{cursor:pointer;}
table.data-table tbody tr.clickable:hover{background:#f2f8fd;}
table.data-table tbody tr.selected{background:#e7f3fc;}
table.data-table tfoot td{padding:10px 14px;font-weight:700;background:var(--gray-150);border-top:2px solid var(--gray-300);}
.mono{font-family:'SF Mono',Consolas,monospace;font-size:12px;color:var(--navy-800);font-weight:600;}
.text-right{text-align:right;}
.text-center{text-align:center;}
.num{font-weight:700;color:var(--navy-900);}

/* ============ PROGRESS ============ */
.progress-track{height:7px;border-radius:6px;background:var(--gray-200);overflow:hidden;}
.progress-fill{height:100%;border-radius:6px;background:linear-gradient(90deg,var(--blue-500),var(--cyan-400));}
.progress-fill.green{background:linear-gradient(90deg,var(--green-600),#4bcf8a);}

/* ============ STEPPER ============ */
.stepper{display:flex;align-items:flex-start;gap:0;margin:6px 0 4px;overflow-x:auto;padding-bottom:6px;}
.step{flex:1;min-width:130px;position:relative;padding-right:14px;}
.step:not(:last-child)::after{
  content:"";position:absolute;top:15px;left:calc(100% - 6px);width:calc(100% - 8px);
  height:2px;background:var(--gray-300);
}
.step.done:not(:last-child)::after{background:var(--green-600);}
.step-dot{
  width:30px;height:30px;border-radius:50%;background:#fff;border:2px solid var(--gray-300);
  display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:var(--graphite-500);
  margin-bottom:8px;
}
.step.done .step-dot{background:var(--green-600);border-color:var(--green-600);color:#fff;}
.step.active .step-dot{background:var(--blue-600);border-color:var(--blue-600);color:#fff;box-shadow:0 0 0 4px rgba(21,94,163,.15);}
.step-title{font-size:11.5px;font-weight:700;color:var(--navy-900);}
.step-status{font-size:10.5px;color:var(--graphite-500);margin-top:2px;font-weight:600;}
.step.done .step-status{color:var(--green-700);}
.step.active .step-status{color:var(--blue-600);}

/* ============ PROJECT LIST (Dashboard) ============ */
.project-row{
  display:grid;grid-template-columns:110px 2fr 1.2fr 130px 90px 100px;gap:14px;align-items:center;
  padding:14px 16px;border-bottom:1px solid var(--gray-200);transition:background .12s;cursor:pointer;
}
.project-row:hover{background:#f7fafc;}
.project-row.active-project{background:#eaf4fc;box-shadow:inset 3px 0 0 var(--blue-600);}
.project-row .p-name{font-weight:700;color:var(--navy-900);font-size:13.5px;}
.project-row .p-client{font-size:11.5px;color:var(--graphite-500);}
.project-row .p-progress-wrap{display:flex;align-items:center;gap:8px;}
.project-row .p-progress-wrap span{font-size:11.5px;font-weight:700;color:var(--navy-800);width:32px;}

/* ============ AI PANELS ============ */
.ai-panel{
  border:1px solid #bfe6ee;background:linear-gradient(135deg,#f2fbfd,#eef7fc);
  border-radius:var(--radius-md);padding:18px 20px;position:relative;
}
.ai-panel .ai-tag{
  display:inline-flex;align-items:center;gap:6px;background:var(--navy-900);color:#fff;
  font-size:10.5px;font-weight:700;padding:3px 10px;border-radius:20px;margin-bottom:10px;letter-spacing:.03em;
}
.ai-panel .ai-tag i{color:var(--cyan-400);}
.ai-panel p{font-size:13px;color:var(--graphite-900);line-height:1.6;}

/* ============ DOC UPLOAD GRID ============ */
.doc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:14px;}
.doc-card{
  border:1px solid var(--gray-200);border-radius:var(--radius-md);padding:16px;background:#fff;
  display:flex;flex-direction:column;gap:10px;transition:box-shadow .15s,transform .15s;
}
.doc-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px);}
.doc-icon{width:42px;height:42px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:17px;color:#fff;}
.doc-name{font-size:12.5px;font-weight:700;color:var(--navy-900);word-break:break-word;}
.doc-meta{font-size:11px;color:var(--graphite-500);}

/* Processing overlay */
.processing-overlay{
  position:fixed;inset:0;background:rgba(6,15,26,.72);display:none;align-items:center;justify-content:center;z-index:200;
  backdrop-filter:blur(2px);
}
.processing-overlay.active{display:flex;}
.processing-box{
  background:#0f2438;border:1px solid #1f4363;border-radius:16px;padding:34px 40px;width:460px;color:#fff;
  box-shadow:0 30px 80px rgba(0,0,0,.4);
}
.processing-box h3{font-size:16px;margin-bottom:18px;display:flex;align-items:center;gap:10px;}
.processing-box h3 i{color:var(--cyan-400);}
.proc-step{display:flex;align-items:center;gap:10px;padding:7px 0;font-size:12.8px;color:#7ea3bf;opacity:.5;transition:opacity .2s,color .2s;}
.proc-step.active{opacity:1;color:#fff;}
.proc-step.done{opacity:1;color:#7be0a8;}
.proc-step .pi{width:16px;text-align:center;}
.proc-progress-track{height:5px;background:#1a3652;border-radius:6px;margin-top:16px;overflow:hidden;}
.proc-progress-fill{height:100%;width:0%;background:linear-gradient(90deg,var(--cyan-400),var(--blue-500));transition:width .3s;}

/* ============ SPLIT VIEW (Requisitos) ============ */
.split-view{display:grid;grid-template-columns:1fr 1.15fr;gap:18px;align-items:stretch;height:calc(100vh - 250px);min-height:520px;}
.doc-viewer{
  background:#e9edf1;border:1px solid var(--gray-300);border-radius:var(--radius-md);
  position:relative;overflow:auto;padding:26px;
}
.doc-page{
  background:#fff;width:100%;max-width:560px;margin:0 auto;padding:34px 36px;
  box-shadow:0 4px 18px rgba(0,0,0,.12);font-size:12px;color:#2a333c;border-radius:2px;position:relative;
  font-family:'SF Mono',Consolas,monospace;line-height:1.9;
}
.doc-page h4{font-size:13px;margin-bottom:14px;color:#111;border-bottom:2px solid #111;padding-bottom:8px;}
.doc-line{position:relative;padding:2px 4px;border-radius:3px;margin:1px -4px;}
.doc-line.hl{background:#fff3b0;box-shadow:0 0 0 2px #f0c200;font-weight:700;}
.doc-line .hl-tag{position:absolute;right:-8px;top:-10px;background:var(--navy-900);color:var(--cyan-400);font-size:9px;padding:2px 6px;border-radius:8px;transform:translateX(100%);white-space:nowrap;font-family:'Inter',sans-serif;font-weight:700;}

.req-panel{display:flex;flex-direction:column;background:#fff;border:1px solid var(--gray-200);border-radius:var(--radius-md);overflow:hidden;}
.req-panel .req-list{flex:1;overflow-y:auto;}

/* ============ INCONSISTENCY CARD ============ */
.conflict-card{
  border:1px solid #f3c8c6;background:#fef6f5;border-radius:var(--radius-md);padding:16px 18px;margin-bottom:12px;
}
.conflict-card .conflict-title{display:flex;align-items:center;gap:8px;color:var(--red-700);font-weight:700;font-size:12.5px;margin-bottom:10px;}
.conflict-compare{display:flex;gap:24px;margin:10px 0;}
.conflict-compare .cc-item{flex:1;background:#fff;border:1px solid var(--gray-200);border-radius:8px;padding:10px 12px;}
.conflict-compare .cc-item .cc-label{font-size:10.5px;color:var(--graphite-500);font-weight:700;text-transform:uppercase;}
.conflict-compare .cc-item .cc-val{font-size:16px;font-weight:800;color:var(--navy-900);margin-top:2px;}
.conflict-compare .cc-diff{align-self:center;text-align:center;font-size:11px;color:var(--red-700);font-weight:700;}
.conflict-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px;}

/* ============ SEARCH SEMANTIC ============ */
.semantic-box{
  display:flex;gap:10px;background:#fff;border:1px solid var(--gray-300);border-radius:10px;padding:6px 6px 6px 16px;
  align-items:center;box-shadow:var(--shadow-sm);
}
.semantic-box input{flex:1;border:none;outline:none;font-size:13.5px;font-family:inherit;color:var(--navy-900);}
.semantic-box i{color:var(--blue-600);}

.similar-card{
  border:1px solid var(--gray-200);border-radius:var(--radius-md);padding:16px;background:#fff;position:relative;
}
.similar-card .sim-score{
  position:absolute;top:14px;right:14px;font-size:16px;font-weight:800;color:var(--green-700);
}
.similar-card .sim-id{font-size:15px;font-weight:800;color:var(--navy-900);}
.similar-card .sim-desc{font-size:11.5px;color:var(--graphite-500);margin:4px 0 10px;}

/* ============ CAD VIEWER ============ */
.cad-viewer{
  background:#101c2b;border-radius:var(--radius-md);padding:0;position:relative;overflow:hidden;border:1px solid #1c3348;
  min-height:420px;display:flex;align-items:center;justify-content:center;
}
.cad-grid-bg{position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.05) 1px,transparent 1px);background-size:26px 26px;}
.cad-svg-wrap{position:relative;z-index:2;padding:30px;}
.cad-legend{position:absolute;bottom:14px;left:14px;display:flex;gap:16px;z-index:3;background:rgba(6,15,26,.7);padding:8px 14px;border-radius:8px;}
.cad-legend .lg-item{display:flex;align-items:center;gap:6px;font-size:11px;color:#dbe8f2;font-weight:600;}
.cad-legend .lg-dot{width:10px;height:10px;border-radius:3px;}

/* ============ COST BREAKDOWN ============ */
.cost-bar{display:flex;height:34px;border-radius:8px;overflow:hidden;box-shadow:var(--shadow-sm);}
.cost-bar div{height:100%;}
.cost-legend{display:flex;flex-wrap:wrap;gap:14px;margin-top:14px;}
.cost-legend .cl-item{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--graphite-700);}
.cl-dot{width:11px;height:11px;border-radius:3px;flex-shrink:0;}

.price-tag{display:inline-flex;align-items:center;gap:5px;font-size:10.5px;font-weight:700;padding:2px 8px;border-radius:5px;}
.price-tag.supplier{background:#e5eff9;color:var(--blue-700);}
.price-tag.historic{background:var(--gray-200);color:var(--graphite-700);}
.price-tag.ai{background:#eafaf1;color:var(--green-700);}

/* Slider */
.slider-wrap{display:flex;flex-direction:column;gap:6px;}
input[type=range]{
  width:100%;height:6px;border-radius:6px;background:var(--gray-300);outline:none;-webkit-appearance:none;
}
input[type=range]::-webkit-slider-thumb{
  -webkit-appearance:none;width:20px;height:20px;border-radius:50%;
  background:linear-gradient(135deg,var(--cyan-400),var(--blue-600));border:3px solid #fff;box-shadow:0 0 0 1px var(--blue-600),var(--shadow-md);cursor:pointer;
}
.slider-labels{display:flex;justify-content:space-between;font-size:11px;color:var(--graphite-500);font-weight:600;}

/* ============ MODAL ============ */
.modal-overlay{position:fixed;inset:0;background:rgba(6,15,26,.55);display:none;align-items:center;justify-content:center;z-index:300;padding:30px;}
.modal-overlay.active{display:flex;}
.modal-box{background:#fff;border-radius:14px;width:100%;max-width:720px;max-height:88vh;overflow-y:auto;box-shadow:0 40px 90px rgba(0,0,0,.35);}
.modal-box.wide{max-width:900px;}
.modal-header{display:flex;align-items:center;justify-content:space-between;padding:18px 24px;border-bottom:1px solid var(--gray-200);position:sticky;top:0;background:#fff;z-index:2;}
.modal-header h3{font-size:15.5px;color:var(--navy-900);display:flex;align-items:center;gap:10px;}
.modal-close{width:30px;height:30px;border-radius:8px;border:none;background:var(--gray-150);color:var(--graphite-700);font-size:14px;}
.modal-close:hover{background:var(--gray-200);}
.modal-body{padding:22px 24px;}
.modal-footer{padding:16px 24px;border-top:1px solid var(--gray-200);display:flex;justify-content:flex-end;gap:10px;}

/* ============ TOAST ============ */
.toast-wrap{position:fixed;bottom:24px;right:24px;z-index:400;display:flex;flex-direction:column;gap:10px;}
.toast{
  background:var(--navy-900);color:#fff;padding:13px 18px;border-radius:10px;font-size:13px;font-weight:600;
  box-shadow:0 12px 30px rgba(0,0,0,.25);display:flex;align-items:center;gap:10px;min-width:280px;
  animation:toastin .25s ease;border-left:4px solid var(--cyan-400);
}
.toast.success{border-left-color:var(--green-600);}
.toast.warn{border-left-color:var(--amber-600);}
@keyframes toastin{from{opacity:0;transform:translateX(30px);}to{opacity:1;transform:translateX(0);}}

/* ============ CHAT / COPILOT ============ */
.chat-shell{display:grid;grid-template-columns:280px 1fr;gap:18px;height:calc(100vh - 190px);min-height:520px;}
.chat-suggestions{display:flex;flex-direction:column;gap:8px;overflow-y:auto;}
.suggestion-chip{
  text-align:left;background:#fff;border:1px solid var(--gray-200);border-radius:9px;padding:11px 13px;font-size:12px;
  color:var(--navy-800);font-weight:600;transition:all .15s;
}
.suggestion-chip:hover{border-color:var(--blue-500);background:#f4faff;transform:translateX(2px);}
.chat-panel{display:flex;flex-direction:column;background:#fff;border:1px solid var(--gray-200);border-radius:var(--radius-md);overflow:hidden;}
.chat-messages{flex:1;overflow-y:auto;padding:20px;display:flex;flex-direction:column;gap:16px;}
.msg{max-width:78%;display:flex;flex-direction:column;gap:6px;}
.msg.user{align-self:flex-end;align-items:flex-end;}
.msg.ai{align-self:flex-start;}
.msg-bubble{padding:12px 15px;border-radius:12px;font-size:13px;line-height:1.6;}
.msg.user .msg-bubble{background:var(--blue-600);color:#fff;border-radius:12px 12px 2px 12px;}
.msg.ai .msg-bubble{background:var(--gray-150);color:var(--graphite-900);border-radius:12px 12px 12px 2px;}
.msg-sources{display:flex;gap:6px;flex-wrap:wrap;}
.src-chip{font-size:10.5px;background:#e5eff9;color:var(--blue-700);padding:2px 8px;border-radius:12px;font-weight:600;}
.chat-input-bar{display:flex;gap:10px;padding:14px 16px;border-top:1px solid var(--gray-200);background:#fafbfc;}
.chat-input-bar input{flex:1;border:1px solid var(--gray-300);border-radius:9px;padding:11px 14px;font-size:13px;outline:none;font-family:inherit;}
.chat-input-bar input:focus{border-color:var(--blue-500);}
.typing-dots span{display:inline-block;width:6px;height:6px;background:var(--graphite-500);border-radius:50%;margin-right:3px;animation:blink 1.2s infinite;}
.typing-dots span:nth-child(2){animation-delay:.2s;}
.typing-dots span:nth-child(3){animation-delay:.4s;}
@keyframes blink{0%,80%,100%{opacity:.25;}40%{opacity:1;}}

/* ============ TREE (Expediente) ============ */
.tree{font-size:13px;}
.tree-node{margin-bottom:2px;}
.tree-row{display:flex;align-items:center;gap:9px;padding:8px 12px;border-radius:7px;cursor:pointer;}
.tree-row:hover{background:var(--gray-150);}
.tree-row i.tree-caret{font-size:10px;color:var(--graphite-500);width:10px;}
.tree-row i.tree-icon{color:var(--blue-600);width:16px;text-align:center;}
.tree-children{margin-left:26px;border-left:1px dashed var(--gray-300);padding-left:10px;display:none;}
.tree-node.open>.tree-children{display:block;}
.tree-node.open>.tree-row i.tree-caret{transform:rotate(90deg);}

/* ============ TRACE CHAIN ============ */
.trace-chain{display:flex;align-items:center;gap:0;overflow-x:auto;padding:20px 4px;}
.trace-node{
  flex-shrink:0;min-width:118px;text-align:center;padding:14px 10px;border-radius:10px;background:#fff;
  border:1.5px solid var(--gray-300);font-size:11.5px;font-weight:700;color:var(--navy-800);position:relative;
}
.trace-node i{display:block;font-size:18px;color:var(--blue-600);margin-bottom:6px;}
.trace-arrow{color:var(--graphite-300);font-size:16px;padding:0 8px;flex-shrink:0;}

/* ============ RISK TABLE STATUS ============ */
.risk-level{display:inline-flex;align-items:center;gap:5px;font-weight:700;font-size:11px;}
.risk-level.high{color:var(--red-700);}
.risk-level.med{color:var(--amber-700);}
.risk-level.low{color:var(--green-700);}

/* ============ CHECKLIST (Normativa) ============ */
.check-item{display:flex;align-items:flex-start;gap:12px;padding:13px 6px;border-bottom:1px solid var(--gray-200);}
.check-item:last-child{border-bottom:none;}
.check-box{width:22px;height:22px;border-radius:6px;border:2px solid var(--gray-300);display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px;cursor:pointer;transition:all .15s;}
.check-box.checked{background:var(--green-600);border-color:var(--green-600);color:#fff;}
.check-item .ci-title{font-weight:700;font-size:13px;color:var(--navy-900);}
.check-item .ci-desc{font-size:12px;color:var(--graphite-500);margin-top:2px;}

/* ============ METRICS FINAL ============ */
.metric-card{text-align:center;background:#fff;border:1px solid var(--gray-200);border-radius:var(--radius-md);padding:22px 14px;}
.metric-card .m-val{font-size:30px;font-weight:800;color:var(--green-700);}
.metric-card .m-label{font-size:11.5px;color:var(--graphite-500);font-weight:600;margin-top:6px;}

.flow-diagram{display:flex;align-items:center;justify-content:center;gap:6px;flex-wrap:wrap;}
.flow-box{background:#fff;border:1.5px solid var(--gray-300);border-radius:9px;padding:10px 16px;font-size:12px;font-weight:700;color:var(--navy-800);}
.flow-box.dim{background:var(--gray-150);color:var(--graphite-500);border-style:dashed;}
.flow-box.hl{background:linear-gradient(135deg,var(--navy-800),var(--blue-700));color:#fff;border:none;}
.flow-arrow-down{width:100%;text-align:center;color:var(--graphite-300);font-size:16px;padding:4px 0;}

/* utility */
.mb-0{margin-bottom:0;}
.mt-0{margin-top:0;}
.flex{display:flex;}
.flex-col{flex-direction:column;}
.items-center{align-items:center;}
.justify-between{justify-content:space-between;}
.gap-8{gap:8px;}
.gap-12{gap:12px;}
.gap-16{gap:16px;}
.muted{color:var(--graphite-500);}
.small{font-size:11.5px;}
.section-gap{margin-bottom:22px;}
hr.sep{border:none;border-top:1px solid var(--gray-200);margin:16px 0;}

@media (max-width:1300px){
  .grid-4{grid-template-columns:repeat(2,1fr);}
  .grid-3{grid-template-columns:repeat(2,1fr);}
  .split-view{grid-template-columns:1fr;height:auto;}
  .chat-shell{grid-template-columns:1fr;}
}
