/* Penetration testing section (parts/pentest.php). */
.ptx{position:relative;overflow:hidden}
.ptx:before{content:"";position:absolute;inset:-30% -10% auto;height:120%;background:radial-gradient(closest-side,rgba(250,82,82,.12),transparent 70%);pointer-events:none;animation:drift 16s ease-in-out infinite alternate}
.ptx-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:22px;position:relative}
@media (max-width:960px){.ptx-grid{grid-template-columns:1fr}}
.ptx-map{display:flex;flex-direction:column;gap:16px;padding:26px!important}
.ptx-radar{position:relative;aspect-ratio:1.5;border-radius:16px;background:radial-gradient(circle at 50% 50%,#0F2E58 0,#0A1F3D 70%);overflow:hidden}
.ptx-ring{position:absolute;left:50%;top:50%;border-radius:50%;border:1px solid rgba(46,224,214,.18);transform:translate(-50%,-50%)}
.ptx-ring.r1{width:30%;aspect-ratio:1}.ptx-ring.r2{width:60%;aspect-ratio:1}.ptx-ring.r3{width:90%;aspect-ratio:1}
.ptx-sweep{position:absolute;left:50%;top:50%;width:140%;aspect-ratio:1;transform:translate(-50%,-50%);border-radius:50%;background:conic-gradient(from 0deg,rgba(46,224,214,.38),rgba(46,224,214,0) 22%,transparent);animation:spin 3.6s linear infinite}
.ptx-links{position:absolute;inset:0;width:100%;height:100%}
.ptx-links line{stroke:rgba(94,230,223,.25);stroke-width:.4;stroke-dasharray:1.5 1.5;animation:dash 6s linear infinite}
@keyframes dash{to{stroke-dashoffset:-30}}
.ptx-node{position:absolute;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:6px;z-index:2}
.ptx-node i{width:16px;height:16px;border-radius:50%;background:#2B4C7E;border:2px solid #5EE6DF;transition:background .4s,border-color .4s,box-shadow .4s}
.ptx-node b{font-size:11.5px;font-weight:700;color:#B9C8E2;background:rgba(4,18,42,.7);padding:2px 8px;border-radius:999px;white-space:nowrap}
.ptx-node.scanned i{background:#2EE0D6;box-shadow:0 0 14px #2EE0D6}
.ptx-node.risk i{background:#FA5252;border-color:#FFA8A8;box-shadow:0 0 0 0 rgba(250,82,82,.7);animation:riskping 1.4s infinite}
.ptx-node.fixed i{background:#40C057;border-color:#B2F2BB;box-shadow:0 0 14px #40C057;animation:none}
@keyframes riskping{70%{box-shadow:0 0 0 12px rgba(250,82,82,0)}100%{box-shadow:0 0 0 0 rgba(250,82,82,0)}}
.ptx-side{display:flex;flex-direction:column;gap:18px}
.ptx-score{display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center}
.ptx-score small{color:#9FB3D3;font-weight:700;letter-spacing:.08em;text-transform:uppercase;font-size:12px}
.ptx-gauge{position:relative;width:180px}
.ptx-gauge svg{width:100%;display:block}
.ptx-gauge .g-bg,.ptx-gauge .g-fg{fill:none;stroke-width:10;stroke-linecap:round}
.ptx-gauge .g-bg{stroke:#16365F}
.ptx-gauge .g-fg{stroke:#FA5252;stroke-dasharray:100;stroke-dashoffset:100;transition:stroke-dashoffset .6s,stroke .6s}
.ptx-gauge b{position:absolute;left:0;right:0;bottom:2px;font-family:Sora,sans-serif;font-size:30px;color:#fff;font-variant-numeric:tabular-nums}
.ptx-score p{margin:0;color:#B9C8E2;font-weight:600}
.ptx-feed{list-style:none;margin:0;padding:16px!important;display:flex;flex-direction:column;gap:8px;flex:1}
.ptx-feed li{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border-radius:12px;background:#0F2E58;font-size:14px;opacity:0;transform:translateX(12px);transition:opacity .45s,transform .45s,background .4s}
.ptx-feed li.in{opacity:1;transform:none}
.ptx-feed li.fixed{background:rgba(64,192,87,.14)}
.ptx-feed li.fixed .sev{background:#40C057;color:#04122A}
.ptx-feed li.fixed .sev:after{content:" ✓"}
.ptx-feed small{display:block;color:#7E93B5;font-size:12px}
.sev{flex-shrink:0;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;padding:4px 8px;border-radius:6px}
.sev.high{background:#FA5252;color:#fff}.sev.medium{background:#FCC419;color:#04122A}.sev.low{background:#74C0FC;color:#04122A}
.ptx-tools .svc-ico{background:linear-gradient(145deg,#FFF0F0,#EEF4FF)}.ptx-tools .svc-ico svg{color:#E03131}
.ptx-tools li:after{background:linear-gradient(90deg,#E03131,#0866FF)}
.ptx-steps{list-style:none;margin:48px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr));gap:14px;counter-reset:none;position:relative}
.ptx-steps:before{content:"";position:absolute;left:5%;right:5%;top:26px;height:3px;background:linear-gradient(90deg,#E03131,#0866FF,#00BFB8);opacity:.25}
.js .ptx-steps>.reveal{transition-delay:calc(var(--i,0) * 130ms)}
.ptx-steps li{position:relative;text-align:center;display:flex;flex-direction:column;gap:6px;align-items:center}
.ptx-steps li span{width:52px;height:52px;border-radius:50%;background:#fff;border:3px solid #0866FF;color:#0866FF;font-family:Sora,sans-serif;font-weight:800;font-size:20px;display:flex;align-items:center;justify-content:center;transition:background .4s,color .4s,transform .4s}
.ptx-steps li.on span{background:linear-gradient(135deg,#E03131,#0866FF);color:#fff;border-color:transparent;transform:scale(1.12)}
.ptx-steps small{color:var(--muted);font-size:13.5px;line-height:1.5}
.ptx-deliver{margin-top:40px;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.3fr) auto;gap:24px;align-items:center;padding:28px!important}
.ptx-deliver h3{font-size:22px;margin-top:6px}
@media (max-width:860px){.ptx-deliver{grid-template-columns:1fr}}
@media (prefers-reduced-motion:reduce){.ptx:before,.ptx-sweep,.ptx-links line,.ptx-node.risk i{animation:none}}
