:root{--bg:#f4f6fb;--surface:#fff;--surface-2:#f8f9fc;--ink:#172033;--muted:#6f7890;--line:#e5e8f0;--primary:#5368e8;--primary-dark:#3d50c6;--nav:#111827;--nav-soft:#202a3c;--green:#18a779;--green-soft:#e8f8f2;--amber:#df8b13;--amber-soft:#fff5df;--red:#d84b5c;--red-soft:#fff0f2;--blue-soft:#edf0ff;--shadow:0 16px 45px rgba(31,42,68,.08);--radius:18px}*{box-sizing:border-box}body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;background:var(--bg);color:var(--ink)}a{text-decoration:none;color:inherit}button,input,select{font:inherit}.app-shell{min-height:100vh;display:grid;grid-template-columns:255px 1fr}.sidebar{position:fixed;inset:0 auto 0 0;width:255px;background:var(--nav);color:#fff;padding:26px 18px;display:flex;flex-direction:column;z-index:20}.brand{display:flex;align-items:center;gap:12px;padding:0 8px}.brand-mark{width:38px;height:38px;border-radius:11px;background:linear-gradient(135deg,#6a7dff,#4257d7);display:grid;place-items:center;font-weight:800;color:#fff;box-shadow:0 10px 28px rgba(78,98,232,.36)}.brand span:last-child{display:grid}.brand strong{font-size:17px;letter-spacing:.1px}.brand small{font-size:10px;text-transform:uppercase;letter-spacing:1.5px;color:#8893a8;margin-top:2px}.nav-menu{display:grid;gap:7px;margin-top:42px}.nav-item{display:flex;align-items:center;gap:13px;padding:12px 14px;color:#aeb7c8;border-radius:11px;font-size:14px;font-weight:600}.nav-item span{width:23px;font-size:18px;text-align:center}.nav-item:hover,.nav-item.active{background:var(--nav-soft);color:#fff}.nav-item.active{box-shadow:inset 3px 0 0 #7180ff}.sidebar-note{margin-top:auto;display:flex;gap:10px;align-items:flex-start;padding:14px;border:1px solid #2a3549;border-radius:12px;background:#151f2f}.sidebar-note div,.user-card div{display:grid;min-width:0}.sidebar-note strong{font-size:12px}.sidebar-note small,.user-card small{font-size:10px;color:#8994a8;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dot{width:8px;height:8px;border-radius:50%;margin-top:4px}.dot-green{background:#31d298;box-shadow:0 0 0 4px rgba(49,210,152,.12)}.user-card{display:grid;grid-template-columns:36px minmax(0,1fr) 22px;gap:9px;align-items:center;margin-top:auto;padding:13px 8px 0;border-top:1px solid #283246}.avatar{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:#29354b;font-size:12px;font-weight:800}.user-card strong{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.logout{color:#808ba0;font-size:17px}.main-content{grid-column:2;padding:28px 34px 50px;min-width:0}.topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.eyebrow,.section-kicker{margin:0 0 5px;text-transform:uppercase;letter-spacing:1.5px;font-size:10px;font-weight:800;color:#8992a6}.topbar h1{font-size:26px;margin:0;letter-spacing:-.5px}.top-actions{display:flex;gap:10px}.btn{border:0;border-radius:10px;padding:11px 16px;font-weight:750;font-size:13px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:7px}.btn-primary{color:#fff;background:var(--primary);box-shadow:0 8px 18px rgba(83,104,232,.22)}.btn-primary:hover{background:var(--primary-dark)}.btn-secondary{background:#fff;border:1px solid var(--line);color:#384259}.btn-sap{width:100%;background:#0a6ed1;color:#fff;margin-top:10px}.metrics-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:18px}.metric-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:20px;display:flex;gap:15px;align-items:center;box-shadow:0 8px 22px rgba(31,42,68,.035)}.metric-icon{width:43px;height:43px;border-radius:12px;background:var(--blue-soft);color:var(--primary);display:grid;place-items:center;font-size:19px;font-weight:800}.metric-icon.warning{background:var(--amber-soft);color:var(--amber)}.metric-icon.success{background:var(--green-soft);color:var(--green)}.metric-icon.money{background:#f0ecff;color:#7253c7}.metric-card div:last-child{display:grid}.metric-card span{font-size:11px;color:var(--muted);font-weight:650}.metric-card strong{font-size:23px;margin:2px 0}.metric-card small{font-size:10px;color:#a0a7b7}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 8px 25px rgba(31,42,68,.035)}.panel-header{display:flex;justify-content:space-between;align-items:flex-start;padding:21px 23px}.panel-header h2{font-size:17px;margin:0 0 4px}.panel-header p{font-size:12px;color:var(--muted);margin:0}.panel-header>a{font-size:12px;color:var(--primary);font-weight:750}.content-grid{display:grid;gap:18px}.dashboard-grid{grid-template-columns:minmax(0,1fr) 300px}.table-wrap{overflow:auto}.data-table{width:100%;border-collapse:collapse;font-size:12px}.data-table th{text-align:left;padding:11px 17px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--surface-2);color:#858da0;font-size:9px;text-transform:uppercase;letter-spacing:1px}.data-table td{padding:15px 17px;border-bottom:1px solid #eef0f5;vertical-align:middle;color:#40495d}.data-table tr:last-child td{border-bottom:0}.data-table td strong,.data-table td small{display:block}.data-table td strong{color:var(--ink);font-size:12px}.data-table td small{color:#939bad;font-size:9px;margin-top:3px}.data-table .amount{font-weight:800;color:var(--ink);white-space:nowrap}.table-action,.row-actions a{color:var(--primary);font-weight:750;font-size:11px}.row-actions{display:flex;gap:12px;white-space:nowrap}.status{display:inline-flex;align-items:center;border-radius:100px;padding:5px 8px;font-size:9px!important;font-weight:800!important;line-height:1;white-space:nowrap}.status-validada,.status-enviada,.status-success,.success{background:var(--green-soft);color:var(--green)}.status-corregida_ia{background:var(--blue-soft);color:var(--primary)}.status-requiere_revision,.status-error{background:var(--amber-soft);color:#a66600}.status-no_enviada{background:#f1f3f7;color:#737c8e}.process-panel{padding-bottom:8px}.process-list{list-style:none;padding:0 22px 16px;margin:0;display:grid}.process-list li{display:grid;grid-template-columns:30px 1fr;gap:12px;position:relative;padding:9px 0}.process-list li:not(:last-child):before{content:"";position:absolute;left:14px;top:38px;bottom:-2px;width:1px;background:#dfe3eb}.process-list li>span{width:29px;height:29px;border-radius:50%;display:grid;place-items:center;background:#eef1f6;color:#8e96a7;font-size:10px;font-weight:800;z-index:1}.process-list li.done>span{background:var(--green-soft);color:var(--green)}.process-list div{display:grid}.process-list strong{font-size:12px}.process-list small{font-size:10px;color:var(--muted);margin-top:2px}.toast-stack{position:fixed;top:22px;right:25px;z-index:100;display:grid;gap:9px}.toast{min-width:320px;background:#fff;border:1px solid var(--line);border-left:4px solid var(--primary);box-shadow:var(--shadow);border-radius:10px;padding:12px 14px;display:flex;align-items:center;justify-content:space-between;font-size:12px;transition:.25s}.toast-success{border-left-color:var(--green)}.toast-error{border-left-color:var(--red)}.toast-warning{border-left-color:var(--amber)}.toast button{border:0;background:none;font-size:18px;color:#8992a3}.toast-hide{opacity:0;transform:translateY(-6px);pointer-events:none}.login-body{background:#0e1727}.login-layout{min-height:100vh;display:grid;grid-template-columns:46% 54%}.login-panel{background:#fff;display:grid;place-items:center;padding:40px}.login-card{width:min(460px,90%)}.brand-dark{padding:0;margin-bottom:85px;color:var(--ink)}.login-copy .pill{margin-bottom:18px}.pill{display:inline-flex;padding:7px 10px;border-radius:100px;font-size:10px;text-transform:uppercase;letter-spacing:1px;font-weight:850}.pill-blue{background:var(--blue-soft);color:var(--primary)}.login-copy h1{font-size:39px;line-height:1.12;letter-spacing:-1.5px;margin:0 0 18px}.login-copy p{font-size:15px;line-height:1.7;color:var(--muted);max-width:410px}.google-button{height:52px;margin-top:35px;border:1px solid #dfe3eb;border-radius:11px;display:flex;align-items:center;justify-content:center;gap:12px;font-size:14px;font-weight:750;box-shadow:0 6px 17px rgba(31,42,68,.05)}.google-button:hover{border-color:#bfc6d5;background:#fafbfe}.google-icon{width:25px;height:25px;border-radius:50%;display:grid;place-items:center;background:#fff;border:1px solid #e2e5ec;color:#4285f4;font-weight:900}.login-disclaimer{font-size:10px!important;text-align:center;margin-top:14px;max-width:none!important}.login-visual{position:relative;overflow:hidden;background:radial-gradient(circle at 30% 20%,#324877 0,#142139 44%,#0d1627 100%);color:#fff}.visual-grid{position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px);background-size:38px 38px;mask-image:linear-gradient(to bottom,black,transparent 85%)}.floating-card{position:absolute;background:rgba(255,255,255,.94);color:var(--ink);border-radius:16px;padding:16px 18px;box-shadow:0 28px 70px rgba(0,0,0,.28);display:flex;align-items:center;gap:13px;backdrop-filter:blur(15px)}.floating-card div{display:grid}.floating-card small{font-size:9px;color:var(--muted);text-transform:uppercase;letter-spacing:.7px}.floating-card strong{font-size:12px;margin-top:3px}.fc-one{top:20%;left:16%;width:370px}.fc-two{top:41%;right:9%;width:330px}.fc-three{top:60%;left:20%;width:350px}.icon-box{width:38px;height:38px;border-radius:11px;background:var(--blue-soft);color:var(--primary);display:grid;place-items:center;font-size:22px}.ai-orb{width:38px;height:38px;border-radius:12px;background:linear-gradient(145deg,#6f7cff,#7650bd);color:white;display:grid;place-items:center;font-size:10px;font-weight:900;box-shadow:0 8px 20px rgba(100,80,210,.25);flex:0 0 auto}.ai-orb.large{width:55px;height:55px;border-radius:17px;font-size:13px}.sap-logo{background:#0873c9;color:#fff;font-weight:900;font-style:italic;padding:8px 10px;clip-path:polygon(0 0,100% 0,85% 100%,0 100%);font-size:12px}.hero-copy{position:absolute;left:16%;bottom:8%}.hero-copy span{color:#8496ba;font-size:11px;text-transform:uppercase;letter-spacing:2px}.hero-copy h2{font-size:28px;line-height:1.15;margin:8px 0}.upload-layout{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:18px}.upload-panel{min-height:540px}.upload-form{padding:0 23px 24px}.drop-zone{position:relative;height:330px;border:2px dashed #cfd5e1;border-radius:16px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;background:#fafbfe;cursor:pointer;transition:.2s}.drop-zone:hover{border-color:var(--primary);background:#f7f8ff}.file-input{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%}.upload-icon{width:57px;height:57px;border-radius:16px;background:var(--blue-soft);display:grid;place-items:center;color:var(--primary);font-size:28px;margin-bottom:16px}.drop-zone strong{font-size:15px}.drop-zone small{color:var(--muted);font-size:11px;margin-top:6px}.selected-file{font-size:10px;color:var(--primary);font-weight:700;margin-top:18px}.upload-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.info-panel{padding:27px}.info-panel h3{margin:18px 0 23px;font-size:19px}.info-step{display:grid;grid-template-columns:29px 1fr;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}.info-step>span{font-size:9px;font-weight:850;color:var(--primary)}.info-step strong{font-size:12px}.info-step p{font-size:11px;color:var(--muted);line-height:1.5;margin:4px 0}.privacy-note{background:#f6f7fb;border-radius:12px;padding:14px;margin-top:22px}.privacy-note strong{font-size:11px}.privacy-note p{font-size:10px;line-height:1.5;color:var(--muted);margin:5px 0 0}.form-error{background:var(--red-soft);color:var(--red);padding:10px 12px;border-radius:9px;margin-top:10px;font-size:11px}.list-header{align-items:center}.invoice-search{display:flex;align-items:center;width:300px;min-height:40px;border:1px solid var(--line);border-radius:9px;background:#fff;overflow:hidden}.invoice-search:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px rgba(83,104,232,.1)}.invoice-search button{flex:0 0 auto;border:0;background:transparent;color:#8e97a8;padding:9px 8px 9px 12px;cursor:pointer}.invoice-search input{flex:1;min-width:0;border:0;outline:0;background:transparent;color:var(--ink);padding:9px 6px;font-size:11px}.invoice-search input::placeholder{color:#a1a8b6}.invoice-search-clear{flex:0 0 auto;padding:8px 12px 8px 6px;color:#8e97a8;font-size:16px;line-height:1}.invoice-search-clear:hover{color:var(--ink)}.large-table td{padding-top:17px;padding-bottom:17px}.review-heading{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:17px;padding:0 2px}.review-heading h2{font-size:23px;margin:8px 0 3px}.review-heading p{font-size:12px;color:var(--muted);margin:0}.review-meta{text-align:right;display:grid}.review-meta span{font-size:9px;color:var(--muted);text-transform:uppercase;letter-spacing:1px}.review-meta strong{font-size:11px;margin:3px 0}.review-meta small{font-size:9px;color:#a1a8b5}.review-grid{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:18px}.review-main{display:grid;gap:16px}.ai-panel{border-radius:var(--radius);background:linear-gradient(135deg,#f2f4ff,#fff);border:1px solid #dfe3ff;padding:18px 20px}.ai-panel-title{display:flex;align-items:center;gap:12px}.ai-panel-title div{display:grid}.ai-panel-title strong{font-size:13px}.ai-panel-title p{font-size:10px;color:var(--muted);margin:3px 0}.ai-panel-title .status{margin-left:auto}.correction-row{display:grid;grid-template-columns:120px 20px 120px 1fr;gap:12px;align-items:center;margin-top:15px;padding:13px;background:#fff;border:1px solid #e8eaf5;border-radius:11px}.correction-row div{display:grid}.correction-row small{font-size:8px;text-transform:uppercase;letter-spacing:.8px;color:#9098a9}.correction-row s{font-size:12px;color:#8d95a6;margin-top:3px}.correction-row strong{font-size:12px;color:var(--green);margin-top:3px}.correction-reason span{font-size:10px;line-height:1.4;color:#555f73;margin-top:3px}.review-form .panel-header{border-bottom:1px solid var(--line)}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;padding:22px}.form-field{display:grid;gap:7px}.form-field label{font-size:10px;font-weight:800;color:#566074}.form-field input{width:100%;height:43px;border:1px solid #dce1ea;border-radius:9px;padding:0 12px;color:var(--ink);background:#fff;outline:none}.form-field input:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(83,104,232,.1)}.form-field.has-error input{border-color:var(--red)}.error-text{font-size:9px;color:var(--red)}.source-tag{float:right;font-size:7px;font-weight:850;text-transform:uppercase;letter-spacing:.8px;background:#f0f2f6;color:#8790a1;padding:4px 6px;border-radius:100px}.source-ai{background:var(--blue-soft);color:var(--primary)}.form-footer{display:flex;justify-content:space-between;align-items:center;padding:15px 22px;border-top:1px solid var(--line)}.form-footer span{font-size:9px;color:var(--muted)}.review-side{display:grid;gap:15px;align-content:start}.knowledge-card .panel-header{align-items:center}.knowledge-provider{display:flex;gap:11px;align-items:center;padding:0 22px 16px}.provider-logo{width:40px;height:40px;border-radius:12px;background:#edf0ff;color:var(--primary);display:grid;place-items:center;font-weight:850}.knowledge-provider div:last-child{display:grid}.knowledge-provider strong{font-size:12px}.knowledge-provider small{font-size:9px;color:var(--muted);margin-top:3px}.knowledge-list{padding:0 22px 19px;margin:0;display:grid}.knowledge-list div{display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid #edf0f4}.knowledge-list div:last-child{border-bottom:0}.knowledge-list dt{font-size:10px;color:var(--muted)}.knowledge-list dd{margin:0;font-size:10px;font-weight:750;text-align:right}.sap-card{padding:19px}.sap-heading{display:flex;align-items:center;gap:10px;margin-bottom:13px}.sap-heading div:last-child{display:grid}.sap-heading strong{font-size:12px}.sap-heading small{font-size:9px;color:var(--muted)}.sap-card>p{font-size:10px;line-height:1.5;color:var(--muted)}.sap-success{display:flex;align-items:center;gap:11px;background:var(--green-soft);padding:12px;border-radius:10px}.sap-success>span{width:28px;height:28px;border-radius:50%;background:var(--green);color:white;display:grid;place-items:center}.sap-success div{display:grid}.sap-success strong{font-size:11px;color:#137958}.sap-success small{font-size:9px;color:#34866e}.link-danger{border:0;background:transparent;color:var(--red);font-size:10px;font-weight:750;cursor:pointer;width:100%;padding:8px}.history-layout{display:grid;grid-template-columns:280px minmax(0,1fr);gap:18px}.history-summary{padding:22px;height:max-content}.history-summary h2{font-size:18px;margin:6px 0 3px}.history-summary>p{font-size:11px;color:var(--muted)}.summary-list{margin:20px 0 0}.summary-list div{display:grid;grid-template-columns:1fr 1fr;padding:10px 0;border-top:1px solid var(--line)}.summary-list dt{font-size:9px;color:var(--muted)}.summary-list dd{font-size:10px;font-weight:750;text-align:right;margin:0}.timeline-panel{padding-bottom:22px}.timeline{padding:0 25px}.timeline-item{display:grid;grid-template-columns:35px 1fr;gap:13px;position:relative;padding-bottom:20px}.timeline-item:not(:last-child):before{content:"";position:absolute;left:17px;top:35px;bottom:-3px;width:1px;background:#dfe3eb}.timeline-dot{width:35px;height:35px;border-radius:50%;background:var(--blue-soft);color:var(--primary);display:grid;place-items:center;font-size:9px;font-weight:900;z-index:1}.timeline-card{border:1px solid var(--line);border-radius:12px;padding:14px}.timeline-header{display:flex;justify-content:space-between}.timeline-header div{display:grid}.timeline-header strong{font-size:11px}.timeline-header small,.timeline-header time{font-size:9px;color:var(--muted);margin-top:3px}.timeline-card>p{font-size:10px;color:#5d6678;margin:10px 0}.timeline-card details{font-size:9px;color:var(--primary)}.json-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:9px}.json-grid pre{white-space:pre-wrap;word-break:break-word;background:#f7f8fb;border-radius:8px;padding:9px;color:#596176;font-size:8px}.provider-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px;padding:0 22px 22px}.provider-card{border:1px solid var(--line);border-radius:14px;padding:16px}.provider-card-head{display:grid;grid-template-columns:40px 1fr auto;gap:10px;align-items:center}.provider-card-head div:nth-child(2){display:grid;min-width:0}.provider-card-head strong{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.provider-card-head small{font-size:9px;color:var(--muted);margin-top:3px}.knowledge-list.compact{padding:13px 0 0}.empty-state{text-align:center!important;padding:35px!important;color:var(--muted)!important}.login-body .toast-stack{z-index:200}@media(max-width:1100px){.metrics-grid{grid-template-columns:repeat(2,1fr)}.dashboard-grid,.upload-layout,.review-grid{grid-template-columns:1fr}.provider-grid{grid-template-columns:repeat(2,1fr)}.review-side{grid-template-columns:1fr 1fr}.login-layout{grid-template-columns:1fr}.login-visual{display:none}}@media(max-width:760px){.app-shell{display:block}.sidebar{position:relative;width:auto;height:auto}.main-content{padding:22px 16px}.nav-menu{grid-template-columns:repeat(3,1fr);margin-top:20px}.nav-item{justify-content:center;font-size:0}.nav-item span{font-size:18px}.user-card{display:none}.metrics-grid,.provider-grid,.form-grid,.review-side,.history-layout{grid-template-columns:1fr}.topbar{align-items:flex-end}.topbar h1{font-size:21px}.correction-row{grid-template-columns:1fr}.login-panel{padding:25px}.brand-dark{margin-bottom:55px}.login-copy h1{font-size:31px}.list-header{display:block}.invoice-search{margin-top:15px;width:100%}}
.change-list {
    display: grid;
    gap: 8px;
    margin: 14px 0;
}

.change-row {
    display: grid;
    grid-template-columns: minmax(140px, 1fr) 2fr;
    align-items: center;
    gap: 14px;
    padding: 10px 12px;
    border: 1px solid #e2e7ef;
    border-radius: 8px;
    background: #f8f9fc;
}

.change-row strong {
    font-size: 11px;
}

.change-values {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 11px;
    overflow-wrap: anywhere;
}

.old-value {
    color: #a33b44;
    text-decoration: line-through;
}

.new-value {
    color: #087f5b;
    font-weight: 700;
}

.change-arrow {
    color: #8a94a8;
}

.timeline-card form {
    margin-top: 12px;
}

/* Revisión SAP basada en factura + reglas contables */
.sap-review-form {
    display: grid;
    gap: 16px;
}

.sap-review-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 330px;
    gap: 18px;
    align-items: start;
}

.sap-review-main {
    display: grid;
    gap: 16px;
}

.review-section .panel-header {
    border-bottom: 1px solid var(--line);
}

.sap-field-grid,
.glossary-form-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
    padding: 22px;
}

.sap-field-grid .form-field:nth-child(2) {
    grid-column: span 1;
}

.glossary-field {
    display: grid;
    gap: 7px;
    align-content: start;
}

.glossary-field > label,
.glossary-other label {
    font-size: 10px;
    font-weight: 800;
    color: #566074;
}

.glossary-select,
.glossary-other-input,
.sap-field-grid input {
    width: 100%;
    min-height: 43px;
    border: 1px solid #dce1ea;
    border-radius: 9px;
    padding: 0 12px;
    color: var(--ink);
    background: #fff;
    outline: none;
}

.glossary-select:focus,
.glossary-other-input:focus,
.sap-field-grid input:focus {
    border-color: var(--primary);
    box-shadow: 0 0 0 3px rgba(83, 104, 232, .1);
}

.glossary-field.has-error .glossary-select,
.glossary-field.has-error .glossary-other-input {
    border-color: var(--red);
}

.glossary-other {
    display: grid;
    gap: 7px;
    margin-top: 4px;
    padding: 11px;
    border-radius: 10px;
    background: #f7f8fc;
    border: 1px dashed #d9deea;
}

.glossary-other[hidden] {
    display: none;
}

.source-manual {
    background: #fff2e5;
    color: #b96800;
}

.source-glossary {
    background: var(--green-soft);
    color: var(--green);
}

.sap-review-side {
    position: sticky;
    top: 20px;
}

.sap-summary-card {
    padding: 19px;
}

.sap-summary-card .knowledge-list {
    padding: 0;
}

.full-width {
    width: 100%;
    margin-top: 14px;
}

.post-review-actions {
    display: grid;
    grid-template-columns: minmax(240px, 330px);
    justify-content: end;
    gap: 10px;
    margin-top: 16px;
}

.post-review-actions form {
    width: 100%;
}

.post-review-actions .btn-sap {
    margin-top: 0;
}

.btn:disabled,
button:disabled {
    cursor: not-allowed;
    opacity: .55;
}

@media(max-width: 1100px) {
    .sap-review-layout {
        grid-template-columns: 1fr;
    }

    .sap-review-side {
        position: static;
    }
}

@media(max-width: 760px) {
    .sap-field-grid,
    .glossary-form-grid {
        grid-template-columns: 1fr;
    }

    .post-review-actions {
        grid-template-columns: 1fr;
    }

    .change-row {
        grid-template-columns: 1fr;
    }

    .change-values {
        flex-wrap: wrap;
    }
}
/* MVP: revisión simplificada y bloqueo posterior al envío SAP */
.simple-heading {
    align-items: center;
}

.simple-heading h2 {
    margin: 0;
}

[data-glossary-provider] {
    width: 100%;
    min-height: 43px;
    border: 1px solid #dce1ea;
    border-radius: 9px;
    padding: 0 12px;
    color: var(--ink);
    background: #fff;
    outline: none;
}

[data-glossary-provider]:focus {
    border-color: var(--primary);
    box-shadow: 0 0 0 3px rgba(83, 104, 232, .1);
}

.invoice-locked-notice {
    display: flex;
    align-items: center;
    gap: 13px;
    margin-bottom: 16px;
    padding: 15px 17px;
    border: 1px solid #cdebdc;
    border-radius: 13px;
    background: var(--green-soft);
}

.locked-icon {
    width: 34px;
    height: 34px;
    flex: 0 0 auto;
    display: grid;
    place-items: center;
    border-radius: 50%;
    background: var(--green);
    color: #fff;
    font-weight: 900;
}

.invoice-locked-notice div {
    display: grid;
    gap: 3px;
}

.invoice-locked-notice strong {
    font-size: 12px;
    color: #137958;
}

.invoice-locked-notice p {
    margin: 0;
    color: #34866e;
    font-size: 10px;
    line-height: 1.45;
}

.sap-review-form.is-locked input:disabled,
.sap-review-form.is-locked select:disabled,
.sap-review-form.is-locked textarea:disabled {
    color: #70798a;
    background: #eef1f5;
    border-color: #dfe3ea;
    cursor: not-allowed;
    opacity: 1;
}

.sap-review-form.is-locked .source-tag {
    opacity: .65;
}
/* Revisión con comprobante a la izquierda */
.document-validation-layout {
    display: grid;
    grid-template-columns:
        minmax(420px, .95fr)
        minmax(520px, 1.05fr);
    gap: 18px;
    align-items: start;
}

.document-preview-panel {
    position: sticky;
    top: 20px;
    overflow: hidden;
}

.preview-toolbar {
    min-height: 66px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 15px 18px;
    border-bottom: 1px solid var(--line);
}

.preview-toolbar > div {
    min-width: 0;
    display: grid;
    gap: 4px;
}

.preview-toolbar strong {
    font-size: 12px;
}

.preview-toolbar small {
    max-width: 360px;
    overflow: hidden;
    color: var(--muted);
    font-size: 9px;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.preview-open-link {
    flex: 0 0 auto;
    color: var(--primary);
    font-size: 10px;
    font-weight: 800;
    text-decoration: none;
}

.preview-canvas {
    min-height: 720px;
    background: #e7e9ee;
}

.invoice-preview-frame {
    display: block;
    width: 100%;
    height: 720px;
    border: 0;
    background: #fff;
}

.invoice-preview-image {
    display: block;
    width: 100%;
    max-height: 720px;
    object-fit: contain;
    background: #fff;
}

.preview-empty-state {
    min-height: 720px;
    display: grid;
    place-content: center;
    justify-items: center;
    gap: 10px;
    padding: 35px;
    text-align: center;
    color: var(--muted);
}

.preview-empty-state > span {
    font-size: 38px;
}

.preview-empty-state strong {
    color: var(--ink);
    font-size: 13px;
}

.preview-empty-state p {
    max-width: 330px;
    margin: 0;
    font-size: 10px;
    line-height: 1.55;
}

.document-data-panel {
    overflow: hidden;
}

.provider-expense-grid,
.document-data-grid {
    display: grid;
    grid-template-columns:
        repeat(2, minmax(0, 1fr));
    gap: 16px;
    padding: 20px 22px 0;
}

.document-data-grid {
    padding-bottom: 22px;
}

.document-data-panel .form-field,
.horizontal-field {
    display: grid;
    gap: 7px;
    align-content: start;
}

.document-data-panel input,
.document-data-panel select,
.horizontal-field input,
.horizontal-field select {
    width: 100%;
    min-height: 43px;
    border: 1px solid #dce1ea;
    border-radius: 9px;
    padding: 0 12px;
    color: var(--ink);
    background: #fff;
    outline: none;
}

.horizontal-detail-panel {
    /* Los autocompletes de Cuenta/BU/AREA/SERVICE usan menús absolutos.
       No recortar el menú al borde del panel: debe comportarse igual que
       el buscador de Proveedor y poder desplegarse por encima del contenido
       siguiente. */
    position: relative;
    overflow: visible;
    z-index: 5;
}

.horizontal-fields-scroll {
    width: 100%;
    overflow: visible;
    padding: 20px 22px 24px;
}

.horizontal-fields-grid {
    min-width: 0;
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: 18px 14px;
    align-items: start;
}

.review-save-panel {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    padding: 17px 20px;
}

.review-save-panel > div {
    display: grid;
    gap: 4px;
}

.review-save-panel strong {
    font-size: 12px;
}

.review-save-panel small {
    color: var(--muted);
    font-size: 9px;
}

@media(max-width: 1280px) {
    .document-validation-layout {
        grid-template-columns: 1fr;
    }

    .horizontal-fields-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .document-preview-panel {
        position: static;
    }

    .preview-canvas,
    .invoice-preview-frame,
    .preview-empty-state {
        min-height: 600px;
        height: 600px;
    }
}

@media(max-width: 760px) {
    .provider-expense-grid,
    .document-data-grid {
        grid-template-columns: 1fr;
        padding-left: 16px;
        padding-right: 16px;
    }

    .preview-canvas,
    .invoice-preview-frame,
    .preview-empty-state {
        min-height: 480px;
        height: 480px;
    }

    .horizontal-fields-grid {
        grid-template-columns: 1fr;
    }

    .review-save-panel {
        align-items: stretch;
        flex-direction: column;
    }

    .review-save-panel .btn {
        width: 100%;
    }
}
/* ==========================================================
   EXTRACCIÓN Y REVISIÓN ADMINISTRATIVA
   ========================================================== */

.upload-processing-note {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 14px 16px;
    border: 1px solid var(--border);
    border-radius: 12px;
    background: var(--surface-soft, rgba(127, 127, 127, 0.06));
}

.upload-processing-note[hidden] {
    display: none;
}

.upload-processing-note > div {
    display: grid;
    gap: 3px;
}

.upload-processing-note small,
.extraction-summary-header p,
.extraction-safety-note,
.field-validation-message {
    color: var(--muted);
}

.processing-spinner {
    width: 20px;
    height: 20px;
    flex: 0 0 auto;
    border: 2px solid var(--border);
    border-top-color: var(--primary, currentColor);
    border-radius: 50%;
    animation: extraction-spin 0.8s linear infinite;
}

@keyframes extraction-spin {
    to {
        transform: rotate(360deg);
    }
}

.extraction-summary-panel {
    display: grid;
    gap: 18px;
    margin-bottom: 20px;
    padding: 20px;
}

.extraction-summary-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 18px;
}

.extraction-summary-header h2 {
    margin: 4px 0 5px;
}

.extraction-summary-header p,
.extraction-safety-note {
    margin: 0;
}

.extraction-summary-badges {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
    flex-wrap: wrap;
}

.extraction-confidence,
.field-validation-badge {
    display: inline-flex;
    align-items: center;
    border: 1px solid var(--border);
    border-radius: 999px;
    font-weight: 700;
    white-space: nowrap;
}

.extraction-confidence {
    min-height: 28px;
    padding: 5px 10px;
    font-size: 11px;
}

.field-validation-badge {
    min-height: 22px;
    padding: 3px 8px;
    font-size: 10px;
}

.extraction-confidence-alta,
.field-validation-badge.is-validated {
    border-color: rgba(30, 140, 90, 0.45);
    background: rgba(30, 140, 90, 0.10);
}

.extraction-confidence-media,
.extraction-confidence-baja,
.field-validation-badge.is-review {
    border-color: rgba(190, 125, 20, 0.55);
    background: rgba(190, 125, 20, 0.11);
}

.field-validation-badge.is-optional {
    border-color: rgba(80, 95, 120, 0.28);
    background: rgba(80, 95, 120, 0.08);
    color: var(--muted);
}

.extraction-metrics {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
}

.extraction-metrics > div {
    display: grid;
    gap: 5px;
    padding: 12px;
    border: 1px solid var(--border);
    border-radius: 10px;
}

.extraction-metrics small {
    color: var(--muted);
}

.extraction-metrics strong {
    overflow-wrap: anywhere;
}

.extraction-review-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 12px;
}

.extraction-review-block {
    padding: 14px;
    border: 1px solid var(--border);
    border-radius: 10px;
}

.extraction-review-block.is-warning {
    border-color: rgba(190, 125, 20, 0.45);
    background: rgba(190, 125, 20, 0.07);
}

.extraction-review-block.is-missing {
    border-color: rgba(185, 65, 65, 0.40);
    background: rgba(185, 65, 65, 0.06);
}

.extraction-review-block ul {
    margin: 8px 0 0;
    padding-left: 18px;
}

.extraction-review-block li + li {
    margin-top: 5px;
}

.extraction-safety-note {
    font-size: 11px;
}

.extraction-field-validated {
    border-color: rgba(30, 140, 90, 0.55) !important;
}

.extraction-field-review {
    border-color: rgba(190, 125, 20, 0.75) !important;
    box-shadow: 0 0 0 2px rgba(190, 125, 20, 0.10);
}

.field-validation-message {
    display: block;
    margin-top: 5px;
    font-size: 10px;
}

@media(max-width: 900px) {
    .extraction-metrics {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media(max-width: 600px) {
    .extraction-summary-header {
        flex-direction: column;
    }

    .extraction-summary-badges {
        justify-content: flex-start;
    }

    .extraction-metrics {
        grid-template-columns: 1fr;
    }
}


.extraction-user-note {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 18px;
    padding: 14px 16px;
    border: 1px solid rgba(83, 104, 232, 0.28);
    border-radius: 12px;
    background: rgba(83, 104, 232, 0.07);
}

.extraction-user-note > span {
    width: 28px;
    height: 28px;
    flex: 0 0 auto;
    display: grid;
    place-items: center;
    border-radius: 50%;
    background: var(--primary);
    color: #fff;
    font-weight: 800;
}

.extraction-user-note p {
    margin: 0;
    color: var(--ink);
    font-size: 12px;
    line-height: 1.45;
}

.provider-match-note {
    display: block;
    margin-top: 5px;
    font-size: 10px;
    line-height: 1.4;
}

.provider-match-note.is-found {
    color: var(--green);
}

.provider-match-note.is-missing {
    color: var(--amber);
}

/* Autocomplete de catálogos normalizados */
.source-catalog {
    background: var(--green-soft);
    color: var(--green);
}

.catalog-autocomplete {
    position: relative;
    width: 100%;
    min-width: 0;
}

.catalog-autocomplete:focus-within {
    /* El menú del campo activo debe quedar por encima de los campos vecinos
       y de los paneles siguientes. */
    z-index: 120;
}

.catalog-autocomplete > input {
    width: 100%;
}

.catalog-autocomplete-menu {
    position: absolute;
    z-index: 130;
    top: calc(100% + 5px);
    left: 0;
    right: 0;
    max-height: 260px;
    overflow-y: auto;
    border: 1px solid #dce1ea;
    border-radius: 10px;
    background: #fff;
    box-shadow: 0 12px 30px rgba(25, 32, 56, .14);
}

.catalog-autocomplete-menu[hidden] {
    display: none;
}

.catalog-autocomplete-option {
    display: block;
    width: 100%;
    padding: 10px 12px;
    border: 0;
    border-bottom: 1px solid #eef1f6;
    background: #fff;
    color: var(--ink);
    font: inherit;
    font-size: 11px;
    line-height: 1.35;
    text-align: left;
    white-space: normal;
    overflow-wrap: anywhere;
    word-break: normal;
    cursor: pointer;
}

.catalog-autocomplete-option:last-child {
    border-bottom: 0;
}

.catalog-autocomplete-option:hover,
.catalog-autocomplete-option:focus {
    background: #f5f7ff;
    outline: none;
}

.catalog-autocomplete-empty {
    padding: 11px 12px;
    color: #737d90;
    font-size: 11px;
}

.field-helper {
    display: block;
    color: #737d90;
    font-size: 10px;
    line-height: 1.4;
}

/* ==========================================================
   AUTOCOMPLETE MULTILÍNEA / SOCIEDAD-ARTÍCULO
   ========================================================== */

.document-data-panel textarea,
.horizontal-field textarea,
.catalog-autocomplete > textarea {
    width: 100%;
    min-height: 64px;
    border: 1px solid #dce1ea;
    border-radius: 9px;
    padding: 10px 12px;
    color: var(--ink);
    background: #fff;
    outline: none;
    font: inherit;
    line-height: 1.35;
    resize: none;
    overflow: hidden;
    white-space: pre-wrap;
    overflow-wrap: anywhere;
}

.document-data-panel textarea:focus,
.horizontal-field textarea:focus,
.catalog-autocomplete > textarea:focus {
    border-color: var(--primary);
    box-shadow: 0 0 0 3px rgba(83, 104, 232, .1);
}

.catalog-multiline-input {
    min-height: 64px;
}

.payment-condition-helper {
    color: var(--green);
}

/* La imputación sigue siendo horizontal, pero los campos de catálogo
   pueden crecer en alto para mostrar el valor completo sin truncarlo. */
.horizontal-fields-grid {
    align-items: stretch;
}

.horizontal-field .catalog-autocomplete {
    align-self: start;
}
/* Estado de análisis de factura: progreso indeterminado mientras responde el backend. */
.processing-copy {
    width: 100%;
}

.processing-progress {
    position: relative;
    display: block;
    width: 100%;
    height: 4px;
    margin-top: 8px;
    overflow: hidden;
    border-radius: 999px;
    background: rgba(83, 104, 232, .12);
}

.processing-progress > span {
    position: absolute;
    inset: 0 auto 0 -35%;
    width: 35%;
    border-radius: inherit;
    background: var(--primary);
    animation: processing-progress 1.25s ease-in-out infinite;
}

.upload-processing-note.is-visible {
    animation: processing-note-in .2s ease-out;
}

@keyframes processing-progress {
    0% { left: -35%; }
    55% { left: 55%; }
    100% { left: 100%; }
}

@keyframes processing-note-in {
    from { opacity: 0; transform: translateY(-4px); }
    to { opacity: 1; transform: translateY(0); }
}

.toast-error {
    border: 2px solid #b42318;
    border-left-width: 6px;
    background: #fff0f0;
    color: #831c15;
    font-size: 15px;
    line-height: 1.5;
    max-width: min(640px, calc(100vw - 32px));
}
.message-error-title { display: block; font-size: 18px; margin-bottom: 6px; }
