:root{--ink:#173242;--muted:#607685;--line:#d6e1e7;--panel:#fff;--bg:#f2f6f8;--brand:#15516e;--brand-dark:#0f3d55;--accent:#2383a6;--ok:#166534;--warn:#8a5a00;--bad:#a32119;--shadow:0 8px 24px rgba(21,81,110,.08);font-family:Inter,Segoe UI,Roboto,Arial,sans-serif;color:var(--ink);background:var(--bg);font-synthesis:none}*{box-sizing:border-box}html{min-width:320px}body{margin:0;min-height:100vh;background:var(--bg)}button,input,select,textarea{font:inherit}button{cursor:pointer}img{max-width:100%}[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.login-shell{min-height:100vh;display:grid;place-items:center;padding:20px;background:linear-gradient(150deg,#103d55,#1d6c8c)}.login-card{width:min(100%,460px);background:#fff;border-radius:20px;padding:24px;box-shadow:0 28px 80px rgba(0,0,0,.25)}.login-logo{display:block;width:100%;margin:0 auto 22px}.login-card h1{font-size:1.35rem;margin:0}.login-card p{color:var(--muted)}label{display:grid;gap:6px;font-size:.84rem;font-weight:700;color:#355463}input,select,textarea{width:100%;min-width:0;border:1px solid #c8d7df;border-radius:10px;background:#fff;color:var(--ink);padding:11px 12px;outline:none}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(35,131,166,.15)}textarea{resize:vertical}.login-card form{display:grid;gap:14px}.button{border:1px solid transparent;border-radius:10px;padding:10px 14px;font-weight:750;display:inline-flex;align-items:center;justify-content:center;gap:7px}.button.primary{background:var(--brand);color:#fff}.button.primary:hover{background:var(--brand-dark)}.button.secondary{background:#e9f3f7;border-color:#c4dce7;color:#205d75}.button.ghost{background:transparent;border-color:#bfd0d9;color:inherit}.button.danger{background:#fff0ef;border-color:#efc6c2;color:var(--bad)}.button:disabled{opacity:.5;cursor:not-allowed}.full{width:100%}.form-error{min-height:1.2em;margin:0;color:var(--bad);font-size:.85rem}.app-shell{min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:260px;background:linear-gradient(180deg,#103d55,#175f7e 65%,#103d55);color:#fff;padding:18px;display:flex;flex-direction:column;z-index:50;transform:translateX(-100%);transition:transform .2s ease}.sidebar.open{transform:none}.sidebar-brand{display:grid;gap:4px;padding:8px 8px 20px}.sidebar-brand span{font-size:.82rem;color:#cfe1e9}.sidebar-brand strong{font-size:1.15rem}.sidebar nav{display:grid;gap:6px}.nav-button{border:0;border-radius:10px;background:transparent;color:#dbeaf0;text-align:left;padding:12px}.nav-button:hover,.nav-button.active{background:rgba(255,255,255,.14);color:#fff}.sidebar-user{margin-top:auto;display:grid;gap:10px;border-top:1px solid rgba(255,255,255,.18);padding-top:16px;font-size:.85rem}.main{min-width:0}.topbar{position:sticky;top:0;z-index:30;background:#fff;border-bottom:1px solid var(--line);padding:12px}.topbar-row{display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:center}.topbar-row h1{font-size:1.08rem;margin:0}.topbar-row p{font-size:.75rem;color:var(--muted);margin:3px 0 0}.icon-button{border:1px solid var(--line);background:#edf3f6;border-radius:9px;width:42px;height:42px;font-size:1.2rem}.area-control{grid-column:1/-1}.top-logo{display:block;width:min(100%,680px);margin:12px auto 0}.content{padding:14px;max-width:1500px;margin:auto}.page{display:none}.page.active{display:block}.metrics{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:14px}.metric-card{background:#fff;border:1px solid var(--line);border-radius:13px;padding:14px;box-shadow:0 3px 12px rgba(20,72,96,.05)}.metric-card span{display:block;color:var(--muted);font-size:.75rem}.metric-card strong{display:block;font-size:1.2rem;margin-top:6px;overflow-wrap:anywhere}.panel{background:var(--panel);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);margin-bottom:15px;padding:16px}.panel-heading{display:flex;flex-direction:column;gap:10px;margin-bottom:16px}.panel-heading h2{font-size:1.05rem;margin:0}.panel-heading p{font-size:.8rem;color:var(--muted);margin:4px 0 0}.badge{display:inline-flex;width:max-content;border-radius:999px;padding:5px 9px;background:#fff3d6;color:#7a5200;font-size:.75rem;font-weight:700}.form-grid,.account-picker,.filters,.upload-form{display:grid;gap:12px}.form-grid+.form-grid,.account-picker{margin-top:12px}.form-actions,.button-row{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px;margin-top:14px}.callout{margin-top:13px;border:1px solid #c8dce6;background:#eef7fa;border-radius:11px;padding:12px;font-size:.85rem;line-height:1.45}.callout.error{border-color:#efc6c2;background:#fff2f1;color:var(--bad)}.checkbox-row{display:flex;align-items:center;gap:8px;margin-top:12px}.checkbox-row input{width:auto}.filters{margin-bottom:14px}.summary-line{font-size:.82rem;color:var(--muted);margin:10px 0}.data-list{display:grid;gap:9px}.data-card{border:1px solid var(--line);border-radius:12px;padding:12px;display:grid;gap:8px;background:#fff;overflow-wrap:anywhere}.data-card:hover{border-color:#b2cbd7}.data-card-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}.data-card h3{font-size:.9rem;margin:0}.data-card .meta{font-size:.76rem;color:var(--muted)}.data-fields{display:grid;grid-template-columns:1fr 1fr;gap:8px}.data-field span{display:block;font-size:.7rem;color:var(--muted)}.data-field strong{display:block;font-size:.84rem;margin-top:2px}.data-actions{display:flex;flex-wrap:wrap;gap:6px}.data-actions .button{padding:7px 9px;font-size:.75rem}.status{display:inline-flex;border-radius:999px;padding:4px 8px;font-size:.7rem;font-weight:750}.status.ok{background:#e7f6ed;color:var(--ok)}.status.warn{background:#fff5d9;color:var(--warn)}.status.bad{background:#fdeceb;color:var(--bad)}.level-legend{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 14px;font-size:.75rem}.level-legend span{border:1px solid var(--line);border-radius:999px;padding:4px 8px}.level-0{color:#050505;font-weight:800}.level-1{color:#2b2b2b;font-weight:750}.level-2{color:#4a4a4a;font-weight:700}.level-3{color:#686868;font-weight:650}.level-4{color:#858585;font-weight:600}.account-code{font-variant-numeric:tabular-nums}.indent-1{padding-left:12px}.indent-2{padding-left:24px}.indent-3{padding-left:36px}.indent-4{padding-left:48px}.cas-editor{display:grid;grid-template-columns:auto 1fr;gap:8px;align-items:center}.cas-editor input[type=radio]{width:auto}.cas-editor input[type=number]:disabled{background:#eef2f4;color:#71828c}.pagination{display:flex;justify-content:center;align-items:center;gap:12px;margin-top:14px}.progress-message{padding:16px;border-radius:10px;background:#eef7fa;color:#215c73;margin-top:12px}.preview-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:14px}.preview-stat{border:1px solid var(--line);border-radius:10px;padding:10px}.preview-stat span{display:block;font-size:.72rem;color:var(--muted)}.preview-stat strong{font-size:1rem}.dialog{border:0;border-radius:16px;padding:20px;width:min(92vw,760px);max-height:85vh;box-shadow:0 20px 60px rgba(0,0,0,.25)}.dialog::backdrop{background:rgba(7,27,38,.55)}.dialog-close{float:right;border:0;background:#edf3f6;border-radius:8px;width:36px;height:36px;font-size:1.2rem}.toast{position:fixed;right:14px;bottom:14px;max-width:min(420px,calc(100vw - 28px));background:#123e55;color:#fff;border-radius:10px;padding:12px 14px;box-shadow:0 10px 30px rgba(0,0,0,.22);transform:translateY(130%);transition:transform .2s;z-index:100}.toast.show{transform:none}.negative{color:var(--bad)}.positive{color:var(--ok)}
@media(min-width:700px){.topbar-row{grid-template-columns:auto 1fr minmax(180px,260px)}.area-control{grid-column:auto}.metrics{grid-template-columns:repeat(4,1fr)}.form-grid.three,.filters.three,.account-picker{grid-template-columns:repeat(3,minmax(0,1fr))}.form-grid.five{grid-template-columns:130px 160px 190px minmax(220px,1fr) 190px}.form-grid.five .span-2{grid-column:auto}.filters.four{grid-template-columns:repeat(4,minmax(0,1fr))}.upload-form{grid-template-columns:minmax(140px,220px) 1fr auto;align-items:end}.panel-heading{flex-direction:row;justify-content:space-between;align-items:flex-start}.data-card{grid-template-columns:minmax(180px,1.2fr) repeat(3,minmax(120px,.8fr)) auto;align-items:center}.data-card .data-fields{display:contents}.data-actions{justify-content:flex-end}.preview-grid{grid-template-columns:repeat(4,1fr)}}
@media(min-width:1024px){.app-shell{display:grid;grid-template-columns:260px minmax(0,1fr)}.sidebar{position:sticky;top:0;height:100vh;transform:none}.icon-button{display:none}.topbar{padding:16px 24px}.content{padding:20px 24px 50px}.top-logo{width:min(100%,760px)}.panel{padding:18px}.form-grid.five .span-2{grid-column:span 2}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
.login-users-fieldset,.permission-fieldset{border:1px solid var(--line);border-radius:12px;padding:12px;margin:0}.login-users-fieldset legend,.permission-fieldset legend{padding:0 6px;font-size:.84rem;font-weight:800;color:#355463}.login-user-list{display:grid;gap:8px;max-height:260px;overflow:auto}.login-user-option{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:11px;padding:11px 12px;background:#fff;color:var(--ink);font-weight:700;cursor:pointer}.login-user-option:hover{border-color:#9fc1d1;background:#f5fafc}.login-user-option:has(input:checked){border-color:var(--accent);background:#eaf6fa;box-shadow:0 0 0 2px rgba(35,131,166,.12)}.login-user-option input{width:auto;flex:0 0 auto}.choice-grid{display:grid;gap:9px}.choice-card,.checkbox-card{display:flex;align-items:center;gap:9px;border:1px solid var(--line);border-radius:11px;padding:11px 12px;background:#f9fbfc;min-height:46px}.choice-card input,.checkbox-card input{width:auto}.permission-fieldset{margin-top:14px}.permission-toolbar{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.permissions-list{display:grid;gap:14px}.permission-group{display:grid;gap:8px}.permission-group h3{font-size:.88rem;margin:0;color:var(--brand)}.permission-options{display:grid;gap:8px}.permission-option{display:flex;gap:9px;align-items:flex-start;border:1px solid var(--line);border-radius:10px;padding:10px;background:#fff}.permission-option input{width:auto;margin-top:2px}.permission-option strong{display:block;font-size:.82rem}.permission-option span{display:block;color:var(--muted);font-size:.74rem;font-weight:500;margin-top:2px;line-height:1.35}.user-status-row{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.small-dialog{width:min(92vw,480px)}.data-card.user-card{grid-template-columns:1fr}.privilege-summary{display:flex;flex-wrap:wrap;gap:5px}.privilege-chip{display:inline-flex;border:1px solid var(--line);border-radius:999px;padding:3px 7px;font-size:.68rem;color:#49616e;background:#f7fafb}.empty-state{text-align:center;padding:20px;color:var(--muted)}
@media(min-width:700px){.choice-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.permission-options{grid-template-columns:repeat(2,minmax(0,1fr))}.data-card.user-card{grid-template-columns:minmax(200px,1.2fr) minmax(220px,1fr) auto;align-items:center}}
.dashboard-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.decision-alerts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:15px}.decision-alert{border:1px solid var(--line);border-radius:13px;background:#fff;padding:13px;display:grid;gap:4px;box-shadow:0 3px 12px rgba(20,72,96,.05)}.decision-alert strong{font-size:1.35rem}.decision-alert span{font-size:.76rem;color:var(--muted);line-height:1.35}.decision-alert small{font-size:.72rem;font-weight:700}.decision-alert.ok{border-left:5px solid #2f8f55}.decision-alert.warn{border-left:5px solid #d98d16}.decision-alert.bad{border-left:5px solid #c33b32}.dashboard-grid{display:grid;gap:15px}.dashboard-panel{min-width:0}.dashboard-chart{width:100%;overflow-x:auto}.dashboard-chart svg{display:block;width:100%;min-width:720px;height:auto}.chart-legend,.semaphore-legend{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 12px;font-size:.72rem;font-weight:700}.chart-legend span,.semaphore-legend span{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:999px;padding:5px 8px;background:#fff}.chart-legend span::before,.semaphore-legend span::before{content:"";width:9px;height:9px;border-radius:50%;background:#9aaab3}.legend-requirements::before{background:#d0713e!important}.legend-cas::before{background:#d6a12d!important}.legend-available::before{background:#4c9a67!important}.semaphore-legend .green::before{background:#2f8f55!important}.semaphore-legend .yellow::before{background:#d6a12d!important}.semaphore-legend .orange::before{background:#d9782f!important}.semaphore-legend .red::before{background:#c33b32!important}.dashboard-svg-code{font-size:12px;font-weight:800;fill:#173242}.dashboard-svg-name{font-size:10px;fill:#607685}.dashboard-svg-budget{fill:#edf2f4}.dashboard-svg-requirements{fill:#d0713e}.dashboard-svg-cas{fill:#d6a12d}.dashboard-svg-available{fill:#4c9a67}.dashboard-svg-percent{font-size:11px;font-weight:800}.dashboard-svg-green{fill:#166534}.dashboard-svg-yellow{fill:#8a5a00}.dashboard-svg-orange{fill:#b65d13}.dashboard-svg-red{fill:#a32119}.dashboard-svg-value{font-size:9px;fill:#607685}.dashboard-svg-axis{stroke:#cbd7dd;stroke-width:1}.dashboard-svg-month{fill:#2383a6}.dashboard-svg-month-label{font-size:10px;fill:#607685}.dashboard-svg-month-count{font-size:9px;font-weight:800;fill:#173242}.dashboard-svg-ranking{fill:#2383a6}.dashboard-table-wrap{overflow-x:auto}.dashboard-table{width:100%;border-collapse:collapse;font-size:.78rem}.dashboard-table th,.dashboard-table td{border-bottom:1px solid var(--line);padding:9px 8px;text-align:right;vertical-align:top;white-space:nowrap}.dashboard-table th:first-child,.dashboard-table td:first-child{text-align:left;white-space:normal;min-width:230px}.dashboard-table th{font-size:.7rem;color:var(--muted);background:#f7fafb}.dashboard-table td small{display:block;color:var(--muted);font-size:.68rem;margin-top:2px}.dashboard-status{display:inline-flex;border-radius:999px;padding:4px 7px;font-size:.68rem;font-weight:800}.dashboard-status.green{background:#e7f6ed;color:#166534}.dashboard-status.yellow{background:#fff5d9;color:#8a5a00}.dashboard-status.orange{background:#fff0df;color:#a45210}.dashboard-status.red{background:#fdeceb;color:#a32119}.decision-account-list,.ranking-list{display:grid;gap:9px}.decision-account-card{border:1px solid var(--line);border-radius:12px;padding:12px;display:grid;gap:10px}.decision-account-card h3{font-size:.88rem;margin:7px 0 2px}.decision-account-card p{margin:0;color:var(--muted);font-size:.75rem}.decision-account-values{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.decision-account-values span{font-size:.68rem;color:var(--muted)}.decision-account-values strong{display:block;margin-top:3px;font-size:.78rem;color:var(--ink)}.decision-account-values strong.negative{color:var(--bad)}.decision-account-values strong.positive{color:var(--ok)}.ranking-row{display:grid;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:10px;border-bottom:1px solid var(--line);padding:9px 0}.ranking-number{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:#e9f3f7;color:#205d75;font-size:.72rem;font-weight:800}.ranking-row strong{font-size:.78rem}.ranking-row small{display:block;color:var(--muted);font-size:.68rem;margin-top:2px}.ranking-track{margin-top:6px;height:10px}.ranking-track svg{display:block;width:100%;height:10px}.ranking-row>strong:last-child{white-space:nowrap;text-align:right}.dashboard-panel .panel-heading{margin-bottom:10px}
@media(min-width:700px){.dashboard-metrics{grid-template-columns:repeat(5,minmax(0,1fr))}.decision-alerts{grid-template-columns:repeat(4,minmax(0,1fr))}.decision-account-card{grid-template-columns:minmax(0,1fr) minmax(300px,.9fr);align-items:center}.dashboard-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* Adquisiciones / órdenes de compra */
.acquisition-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.workflow-note{margin:14px 0;padding:12px 14px;border:1px solid #b9d8e5;border-radius:12px;background:#eef8fb;color:#214d61;font-size:.78rem;line-height:1.45}.workflow-note strong{display:inline}.acquisition-list{display:grid;gap:12px;margin-top:12px}.acquisition-card{border:1px solid var(--line);border-radius:14px;background:#fff;padding:14px;box-shadow:0 3px 14px rgba(20,72,96,.05);display:grid;gap:13px}.acquisition-card-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.acquisition-card-head h3{margin:7px 0 3px;font-size:1rem}.acquisition-card-head p{margin:0;color:var(--ink);font-size:.84rem;line-height:1.4}.acquisition-card-head small{display:block;color:var(--muted);font-size:.72rem;margin-top:5px}.procurement-badge{display:inline-flex;border-radius:999px;padding:4px 8px;font-size:.68rem;font-weight:800;background:#e9f3f7;color:#205d75}.status-en_adquisiciones{background:#eef2ff;color:#4450a5}.status-en_licitacion{background:#fff5d9;color:#8a5a00}.status-adjudicado{background:#fff0df;color:#a45210}.status-oc_emitida{background:#e7f6ed;color:#166534}.status-cerrado{background:#e8edf0;color:#43535c}.acquisition-financial-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.acquisition-financial-grid>div{border:1px solid var(--line);border-radius:10px;padding:9px;background:#fafcfd}.acquisition-financial-grid span{display:block;color:var(--muted);font-size:.68rem}.acquisition-financial-grid strong{display:block;margin-top:3px;font-size:.82rem}.acquisition-dialog{width:min(96vw,1080px)}.acq-dialog-header{padding-right:48px}.acq-dialog-header .eyebrow{display:block;text-transform:uppercase;letter-spacing:.08em;font-size:.64rem;color:var(--accent);font-weight:900}.acq-dialog-header h2{margin:5px 0 4px}.acq-dialog-header p{margin:0;color:var(--muted);font-size:.78rem}.acquisition-preview{grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:14px}.status-form{display:grid;gap:10px;border:1px solid var(--line);border-radius:12px;padding:12px;background:#f9fbfc;margin-bottom:12px}.close-requirement{align-self:end}.reconciliation-explainer{border-left:5px solid #2383a6;background:#eef8fb;border-radius:10px;padding:11px 12px;margin:12px 0;display:grid;gap:4px}.reconciliation-explainer strong{font-size:.8rem}.reconciliation-explainer span{font-size:.73rem;color:#486675;line-height:1.4}.order-panel{border-top:1px solid var(--line);padding-top:14px;margin-top:14px}.order-panel h3,.orders-section h3{margin:0 0 10px;font-size:.95rem}.order-form{display:grid;gap:10px}.orders-section{border-top:1px solid var(--line);padding-top:14px;margin-top:18px}.purchase-order-list{display:grid;gap:9px}.purchase-order-card{display:grid;gap:9px;border:1px solid var(--line);border-radius:12px;padding:12px;background:#fff}.purchase-order-card p{margin:4px 0 2px;font-size:.77rem}.purchase-order-card small{color:var(--muted);font-size:.69rem}.order-title{display:flex;gap:7px;align-items:center;flex-wrap:wrap}.order-amount{font-size:1rem;font-weight:900;color:var(--brand)}.cas-chip{display:inline-flex;border-radius:999px;padding:3px 7px;font-size:.64rem;font-weight:800}.cas-chip.reconciled{background:#e7f6ed;color:#166534}.cas-chip.pending{background:#fff5d9;color:#8a5a00}
@media(min-width:700px){.acquisition-metrics{grid-template-columns:repeat(5,minmax(0,1fr))}.acquisition-financial-grid{grid-template-columns:repeat(6,minmax(0,1fr))}.acquisition-preview{grid-template-columns:repeat(4,minmax(0,1fr))}.status-form{grid-template-columns:minmax(180px,280px) minmax(280px,1fr) auto;align-items:end}.purchase-order-card{grid-template-columns:minmax(0,1fr) 150px auto;align-items:center}}
.legend-requested::before{background:#2383a6!important}.legend-orders::before{background:#7b61a8!important}.dashboard-svg-month-orders{fill:#7b61a8}
@media(min-width:700px){.dashboard-metrics{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(min-width:1100px){.dashboard-metrics{grid-template-columns:repeat(7,minmax(0,1fr))}}
