:root{--bg:#f8f9fa;--surface:#ffffff;--border:#e2e8f0;--text:#1a202c;--text-secondary:#718096;--text-muted:#a0aec0;--primary:#2563eb;--primary-hover:#1d4ed8;--primary-light:#eff6ff;--danger:#ef4444;--danger-light:#fef2f2;--success:#22c55e;--success-light:#f0fdf4;--warning:#f59e0b;--warning-light:#fffbeb;--radius:8px;--shadow:0 1px 3px rgba(0,0,0,0.08),0 1px 2px rgba(0,0,0,0.06)}*,:after,:before{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:24px;box-shadow:var(--shadow)}.btn{display:inline-flex;align-items:center;gap:8px;padding:10px 20px;border:none;border-radius:var(--radius);font-size:14px;font-weight:500;cursor:pointer;transition:all .15s}.btn-primary{background:var(--primary);color:white}.btn-primary:hover{background:var(--primary-hover)}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-outline{background:transparent;border:1px solid var(--border);color:var(--text)}.btn-outline:hover{background:var(--bg)}.btn-danger{background:var(--danger);color:white}.btn-danger:hover{background:#dc2626}.btn-sm{padding:6px 12px;font-size:13px}.input{width:100%;padding:10px 14px;border:1px solid var(--border);border-radius:var(--radius);font-size:14px;color:var(--text);background:var(--surface);transition:border-color .15s}.input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(37,99,235,.1)}.label{display:block;font-size:13px;color:var(--text-secondary);margin-bottom:6px}.badge,.label{font-weight:500}.badge{display:inline-flex;padding:2px 10px;border-radius:12px;font-size:12px}.badge-success{background:var(--success-light);color:#16a34a}.badge-warning{background:var(--warning-light);color:#d97706}.badge-danger{background:var(--danger-light);color:var(--danger)}.badge-primary{background:var(--primary-light);color:var(--primary)}.progress-bar{height:8px;background:#e2e8f0;border-radius:4px;overflow:hidden}.progress-bar-fill{height:100%;border-radius:4px;transition:width .5s ease}.table{width:100%;border-collapse:collapse}.table td,.table th{padding:12px 16px;text-align:left;border-bottom:1px solid var(--border);font-size:14px}.table th{font-weight:500;color:var(--text-secondary);font-size:13px}.table tbody tr:hover{background:var(--bg)}.error-msg{color:var(--danger);font-size:13px;margin-top:6px}.spinner{width:20px;height:20px;border:2px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:12px 16px}.grid-2,.grid-3{display:grid;gap:12px 16px}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:12px 16px}.toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end}.muted{color:var(--text-secondary);font-size:13px}.field,.section-title{margin-bottom:12px}.section-title{font-size:15px;font-weight:600}.modal-backdrop{position:fixed;inset:0;background:rgba(15,23,42,.45);display:flex;align-items:center;justify-content:center;z-index:50;padding:16px}.modal{background:var(--surface);border-radius:var(--radius);padding:24px;width:100%;max-width:520px;max-height:90vh;overflow-y:auto;box-shadow:0 10px 30px rgba(0,0,0,.2)}.btn:disabled{opacity:.5;cursor:not-allowed}@media (max-width:800px){.grid-2,.grid-3{grid-template-columns:1fr}}@media print{.no-print{display:none!important}body{background:#fff}}@media (max-width:1100px){.doc-layout{grid-template-columns:minmax(0,1fr)!important}}.contract-public{font-family:"PT Serif",Times New Roman,serif;font-size:15px;line-height:1.6;text-align:justify}.contract-public h1{font-size:20px;text-align:center;margin-bottom:6px}.contract-public h2{font-size:16px;text-align:center;margin:20px 0 8px}.contract-public p{margin-bottom:8px}.contract-public ul{margin:0 0 8px 22px}.contract-public table{width:100%;border-collapse:collapse;margin:6px 0 12px}.contract-public table.grid td,.contract-public table.grid th{border:1px solid #94a3b8;padding:4px 6px;text-align:left}.contract-public table.requisites td{width:50%;vertical-align:top;font-size:13px;padding-right:12px}