/* Penetration Testing — page-specific visuals */
.pt-vis { width: 100%; max-width: 600px; margin-inline: auto; }
.pt-ring { transform-origin: 280px 240px; animation: ptSpin 90s linear infinite; }
.pt-ring--2 { animation-duration: 140s; animation-direction: reverse; }
.pt-ring--3 { animation-duration: 200s; }
.pt-path { stroke-dasharray: 420; stroke-dashoffset: 420; animation: ptDraw 6s var(--ease) infinite; }
.pt-bar { transform-origin: 16px 84px; animation: ptBar 6s var(--ease) infinite; }
@keyframes ptSpin { to { transform: rotate(360deg); } }
@keyframes ptDraw { 0% { stroke-dashoffset: 420; } 50%, 85% { stroke-dashoffset: 0; } 100% { stroke-dashoffset: 0; opacity: 0; } }
@keyframes ptBar { 0%, 30% { transform: scaleX(.15); } 60%, 100% { transform: scaleX(1); } }

/* executive intro: big statement left, two sentences right */
.pt-intro { display: grid; grid-template-columns: minmax(0, 6fr) minmax(0, 5fr); gap: clamp(32px, 6vw, 96px); align-items: end; }
.pt-intro h2 { font-size: clamp(2.6rem, 1.4rem + 4vw, 5.4rem); line-height: .98; max-width: 11ch; }
.pt-intro__copy { display: grid; gap: 18px; padding-top: 24px; border-top: 2px solid var(--gold); }
@media (max-width: 960px) { .pt-intro { grid-template-columns: 1fr; } }

/* four test layers as a numbered grid */
.pt-layers { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0; border-top: 1px solid var(--ink); }
.pt-layer { display: grid; gap: 14px; align-content: start; padding: 32px 28px 36px 0; scroll-margin-top: calc(var(--hdr-h) + 72px); transition: background .4s; }
.pt-layer + .pt-layer { padding-left: 28px; border-left: 1px solid var(--line); }
.pt-layer__n { font-size: .78rem; color: var(--gold-ink); }
.pt-layer h3 { font-size: clamp(1.4rem, 1.1rem + .8vw, 1.9rem); letter-spacing: -.03em; }
.pt-layer p { font-size: .98rem; }
.pt-layer .dash { font-size: .9rem; }
.pt-layer:target { background: linear-gradient(180deg, rgba(91,155,255,.1), transparent 70%); }
@media (max-width: 1080px) { .pt-layers { grid-template-columns: 1fr 1fr; } .pt-layer:nth-child(3) { padding-left: 0; border-left: 0; } .pt-layer:nth-child(n+3) { border-top: 1px solid var(--line); } }
@media (max-width: 640px) { .pt-layers { grid-template-columns: 1fr; } .pt-layer, .pt-layer + .pt-layer { padding-left: 0; border-left: 0; } .pt-layer + .pt-layer { border-top: 1px solid var(--line); } }

@media (min-width: 1081px) { .reqs, .outcomes { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.pt-ind { max-width: 56ch; }
.pt-ind a { color: var(--gold-ink); text-decoration: none; font-weight: 600; white-space: nowrap; }
