.article-viewer-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:9999;background-color:#000000bf;justify-content:center;align-items:center;padding:1rem;animation:.2s ease-out fadeIn;display:flex;position:fixed;top:0;bottom:0;left:0;right:0}.article-viewer-modal{background-color:#fff;border-radius:1rem;flex-direction:column;width:100%;max-width:900px;height:90vh;animation:.3s ease-out slideUp;display:flex;overflow:hidden;box-shadow:0 25px 50px -12px #00000040}.article-header{background-color:#f8fafc;border-bottom:1px solid #e2e8f0;justify-content:space-between;align-items:flex-start;padding:1.5rem;display:flex}.article-actions{align-items:center;gap:.75rem;display:flex}.action-btn{cursor:pointer;border:1px solid #0000;border-radius:.5rem;align-items:center;padding:.5rem 1rem;font-size:.875rem;font-weight:500;transition:all .2s;display:inline-flex}.btn-primary{color:#fff;background-color:#2563eb}.btn-primary:hover{background-color:#1d4ed8}.btn-secondary{color:#475569;background-color:#fff;border-color:#cbd5e1}.btn-secondary:hover{background-color:#f1f5f9;border-color:#94a3b8}.btn-close{color:#64748b;background:0 0;border-radius:.5rem;padding:.5rem}.btn-close:hover{color:#0f172a;background-color:#e2e8f0}.article-content{color:#334155;scroll-behavior:smooth;flex:1;padding:2rem;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;line-height:1.7;overflow-y:auto}.article-markdown h1{color:#0f172a;margin-bottom:1.5rem;font-size:2.25rem;font-weight:800;line-height:1.2}.article-markdown h2{color:#1e293b;border-bottom:1px solid #e2e8f0;margin-top:2.5rem;margin-bottom:1.25rem;padding-bottom:.5rem;font-size:1.75rem;font-weight:700}.article-markdown h3{color:#334155;margin-top:2rem;margin-bottom:1rem;font-size:1.35rem;font-weight:600}.article-markdown p{margin-bottom:1.25rem;font-size:1.05rem}.article-markdown ol,.article-markdown ul{margin-bottom:1.5rem;padding-left:1.5rem}.article-markdown li{margin-bottom:.5rem;position:relative}.article-markdown strong{color:#0f172a;font-weight:600}.article-markdown a{color:#c026d3;font-weight:500;text-decoration:underline;transition:color .2s}.article-markdown a:hover{color:#a21caf;text-decoration:underline}.article-markdown blockquote{color:#1e40af;background-color:#eff6ff;border-left:4px solid #3b82f6;border-radius:0 .5rem .5rem 0;margin:1.5rem 0;padding:1rem 1.5rem;font-style:italic}.article-markdown table{border-collapse:collapse;width:100%;margin:1.5rem 0;font-size:.95rem}.article-markdown th{color:#1e293b;text-align:left;background-color:#f8fafc;font-weight:600}.article-markdown td,.article-markdown th{border:1px solid #e2e8f0;padding:.75rem 1rem}.article-markdown td{color:#475569}.article-markdown tr:nth-child(2n){background-color:#fcfcfc}@media print{body *{visibility:hidden}.article-content,.article-content *,.article-viewer-modal,.article-viewer-overlay{visibility:visible}.article-viewer-overlay{background:#fff;width:100%;height:auto;padding:0;display:block;position:absolute;top:0;left:0}.article-viewer-modal{box-shadow:none;border-radius:0;width:100%;max-width:100%;height:auto;position:static;overflow:visible}.article-header{display:none}.article-content{color:#000;padding:0;overflow:visible}.article-markdown h1{color:#000;margin-bottom:.5cm;font-size:24pt}.article-markdown h2{page-break-after:avoid;color:#000;border-bottom:2px solid #000;margin-top:1cm;font-size:18pt}.article-markdown h3{page-break-after:avoid;color:#000;font-size:14pt}.article-markdown li,.article-markdown p{orphans:3;widows:3;font-size:11pt;line-height:1.5}.article-markdown a{color:#000;text-decoration:none}.article-markdown a[href^=http]:after{color:#555;content:" (" attr(href) ")";font-size:9pt}.article-markdown table{page-break-inside:avoid;border:1px solid #000}.article-markdown td,.article-markdown th{border:1px solid #000}.article-content:after{color:#666;content:"Generated by TenderProSA | tenderprosa.co.za";text-align:center;border-top:1px solid #ccc;margin-top:2cm;padding-top:10px;font-size:9pt;display:block}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}
