/* Vendor partner pages (/partners/<vendor>). --vc is the vendor accent colour. */
.pt { --vc: #94d4f4; }
.pt-hero .hero-bg .pt-glow { position: absolute; width: 620px; height: 620px; right: -120px; top: -80px; border-radius: 50%; background: radial-gradient(circle, color-mix(in srgb, var(--vc) 40%, transparent), transparent 65%); opacity: .45; filter: blur(10px); animation: pt-breathe 7s ease-in-out infinite; }
@keyframes pt-breathe { 50% { opacity: .25; transform: scale(1.08); } }
.pt-hero .pill { border-color: color-mix(in srgb, var(--vc) 60%, rgba(148,212,244,.4)); }
.pt-hero .pill .dot-pulse { background: var(--vc); }
.pt-hero .rule { background: linear-gradient(90deg, var(--vc), var(--accent)); }
.pt-logo { background: #fff; border-radius: 16px; padding: 14px 20px; display: grid; place-items: center; box-shadow: 0 20px 50px rgba(0,0,0,.4), 0 0 0 1px rgba(255,255,255,.4), 0 0 40px color-mix(in srgb, var(--vc) 45%, transparent); }
.pt-logo img { max-width: 150px; max-height: 46px; width: auto; height: auto; display: block; }
.pt-vis { position: relative; width: min(460px, 100%); aspect-ratio: 1; margin: 0 auto; }
.pt-vis svg { overflow: visible; }

/* intel radar */
.pt-radar .pt-disc { position: absolute; inset: 10%; border-radius: 50%; overflow: hidden; border: 1px solid rgba(148,212,244,.35); background: radial-gradient(circle, color-mix(in srgb, var(--vc) 22%, transparent), rgba(0,21,52,.5) 70%); }
.pt-sweep { position: absolute; inset: 0; background: conic-gradient(from 0deg, color-mix(in srgb, var(--vc) 55%, transparent), transparent 70deg); animation: cr-rot 4.5s linear infinite; border-radius: 50%; }
.pt-ring { position: absolute; border-radius: 50%; border: 1px solid rgba(148,212,244,.22); } .pt-ring.a { inset: 18%; } .pt-ring.b { inset: 36%; }
.pt-blip { position: absolute; left: var(--x); top: var(--y); width: 10px; height: 10px; border-radius: 50%; background: var(--vc); box-shadow: 0 0 14px var(--vc); animation: pt-ping 4.5s ease-out infinite; animation-delay: var(--d); opacity: 0; }
@keyframes pt-ping { 0% { opacity: 0; transform: scale(.4); } 8% { opacity: 1; transform: scale(1.3); } 40% { opacity: .9; transform: scale(1); } 100% { opacity: 0; } }
.pt-src { position: absolute; left: 50%; top: 50%; transform: rotate(var(--a)) translateY(calc(min(460px, 100vw - 48px) * -.49)) rotate(calc(var(--a) * -1)) translate(-50%, -50%); font-size: 12px; font-weight: 600; color: rgba(255,255,255,.8); background: rgba(0,21,52,.75); border: 1px solid var(--line-dark); padding: 4px 10px; border-radius: 999px; white-space: nowrap; transform-origin: 0 0; }
.pt-radar > .pt-logo, .pt-soc > .pt-logo, .pt-ppl > .pt-logo, .pt-val > .pt-logo, .pt-grc > .pt-logo, .pt-mailv > .pt-logo { position: absolute; z-index: 3; }
.pt-radar > .pt-logo { left: 50%; top: 50%; transform: translate(-50%, -50%); }

/* network + sase */
.pt-net > svg { position: absolute; inset: 0; width: 100%; height: 100%; }
.pt-net > svg path { stroke: rgba(148,212,244,.28); stroke-width: 2; fill: none; stroke-dasharray: 6 6; animation: pt-dash 1.4s linear infinite; }
@keyframes pt-dash { to { stroke-dashoffset: -24; } }
.pt-net .pk { fill: var(--accent); filter: drop-shadow(0 0 6px var(--accent)); }
.pt-net .pk.bad { fill: #ff5d5d; filter: drop-shadow(0 0 6px #ff5d5d); }
.pt-node { position: absolute; transform: translate(-50%, -50%); display: grid; justify-items: center; gap: 6px; z-index: 2; }
.pt-node svg { width: 46px; height: 46px; padding: 11px; border-radius: 12px; background: var(--navy-card); border: 1px solid rgba(148,212,244,.35); color: var(--accent); }
.pt-node b { font-size: 11.5px; color: rgba(255,255,255,.85); background: rgba(0,21,52,.7); padding: 1px 7px; border-radius: 5px; white-space: nowrap; }
.pt-hub { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); z-index: 3; }
.pt-hub::before { content: ""; position: absolute; inset: -26px; border-radius: 26px; border: 1.5px solid color-mix(in srgb, var(--vc) 70%, transparent); animation: pt-pulse-ring 2.4s ease-out infinite; }
@keyframes pt-pulse-ring { 0% { transform: scale(.85); opacity: .9; } 100% { transform: scale(1.35); opacity: 0; } }
.pt-cloudring { position: absolute; inset: 22%; border-radius: 50%; border: 1px dashed color-mix(in srgb, var(--vc) 70%, transparent); background: radial-gradient(circle, color-mix(in srgb, var(--vc) 18%, transparent), transparent 70%); animation: cr-rot 40s linear infinite; }

/* soc */
.pt-soc { display: grid; align-content: center; gap: 18px; justify-items: center; }
.pt-soc > .pt-logo { position: relative; }
.pt-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; width: 82%; }
.pt-ep { aspect-ratio: 1.2; display: grid; place-items: center; border-radius: 10px; background: rgba(148,212,244,.06); border: 1px solid var(--line-dark); color: rgba(148,212,244,.7); animation: pt-scan 6s ease-in-out infinite; animation-delay: calc(var(--k) * .12s); }
.pt-ep svg { width: 22px; height: 22px; }
@keyframes pt-scan { 0%, 100% { border-color: var(--line-dark); } 8% { border-color: rgba(148,212,244,.55); } }
.pt-ep.hit { animation: pt-hit 6s ease-in-out infinite; }
@keyframes pt-hit { 0%, 18% { background: rgba(148,212,244,.06); color: rgba(148,212,244,.7); border-color: var(--line-dark); } 25%, 55% { background: rgba(255,93,93,.18); color: #ff8a8a; border-color: #ff5d5d; box-shadow: 0 0 20px rgba(255,93,93,.45); } 70%, 100% { background: rgba(52,211,153,.14); color: #6ee7b7; border-color: #34d399; box-shadow: none; } }
.pt-log { list-style: none; margin: 0; padding: 12px 16px; width: 82%; border-radius: 12px; background: rgba(0,21,52,.7); border: 1px solid var(--line-dark); display: grid; gap: 6px; font-size: 12.5px; color: rgba(255,255,255,.8); }
.pt-log li { display: flex; align-items: center; gap: 8px; opacity: .25; animation: pt-logline 6s ease-in-out infinite; animation-delay: calc(1.2s + var(--k) * .9s); }
.pt-log li i { width: 7px; height: 7px; border-radius: 50%; background: var(--vc); flex: none; }
.pt-log li:last-child i { background: #34d399; }
@keyframes pt-logline { 0% { opacity: .25; } 6%, 60% { opacity: 1; } 75%, 100% { opacity: .25; } }

/* people */
.pt-ppl { display: grid; align-content: center; justify-items: center; gap: 20px; }
.pt-ppl > .pt-logo { position: relative; }
.pt-avs { display: grid; grid-template-columns: repeat(6, 1fr); gap: 10px; width: 86%; }
.pt-av { aspect-ratio: 1; border-radius: 50%; display: grid; place-items: center; background: rgba(148,212,244,.06); border: 2px solid #f5b84a; color: rgba(255,255,255,.85); animation: pt-safe 8s ease-in-out infinite; animation-delay: calc(var(--k) * .35s); }
.pt-av svg { width: 55%; height: 55%; }
@keyframes pt-safe { 0%, 15% { border-color: #ff6b6b; } 35% { border-color: #f5b84a; } 60%, 100% { border-color: #34d399; box-shadow: 0 0 14px rgba(52,211,153,.35); } }
.pt-meter { width: 86%; display: grid; grid-template-columns: 1fr 1fr; gap: 6px; font-size: 12px; color: rgba(255,255,255,.75); }
.pt-meter span { grid-column: 1 / -1; font-weight: 700; color: #fff; }
.pt-meter b { grid-column: 1 / -1; height: 10px; border-radius: 6px; background: linear-gradient(90deg, #ff6b6b, #f5b84a, #34d399); position: relative; }
.pt-meter b i { position: absolute; top: -4px; width: 18px; height: 18px; border-radius: 50%; background: #fff; box-shadow: 0 0 0 3px var(--navy), 0 4px 10px rgba(0,0,0,.4); animation: pt-meter 8s ease-in-out infinite; }
@keyframes pt-meter { 0%, 10% { left: 2%; } 60%, 100% { left: calc(98% - 18px); } }
.pt-meter em { font-style: normal; } .pt-meter em:last-child { text-align: right; }

/* validate */
.pt-val { display: grid; align-content: center; justify-items: center; gap: 24px; }
.pt-val > .pt-logo { position: relative; }
.pt-chain { position: relative; width: 88%; display: grid; gap: 12px; }
.pt-chain::before { content: ""; position: absolute; left: 27px; top: 20px; bottom: 20px; width: 2px; background: repeating-linear-gradient(var(--line-dark) 0 6px, transparent 6px 12px); }
.pt-attacker { position: absolute; left: 21px; top: 14px; width: 14px; height: 14px; border-radius: 50%; background: #ff5d5d; box-shadow: 0 0 14px #ff5d5d; z-index: 2; animation: pt-attack 8s ease-in-out infinite; }
@keyframes pt-attack { 0% { top: 14px; } 22% { top: 14px; } 30% { top: calc(25% + 10px); } 48% { top: calc(25% + 10px); } 56% { top: calc(50% + 6px); } 74% { top: calc(50% + 6px); } 82% { top: calc(75% + 2px); } 100% { top: calc(75% + 2px); } }
.pt-step { position: relative; display: grid; grid-template-columns: 56px 1fr auto; align-items: center; gap: 12px; padding: 10px 14px 10px 0; border-radius: 12px; background: rgba(148,212,244,.05); border: 1px solid var(--line-dark); }
.pt-step svg { width: 40px; height: 40px; padding: 9px; margin-left: 8px; border-radius: 10px; background: var(--navy-card); color: var(--accent); position: relative; z-index: 1; }
.pt-step b { font-size: 14px; color: #fff; }
.pt-step em { font-style: normal; font-size: 11px; font-weight: 700; padding: 3px 9px; border-radius: 6px; opacity: 0; animation: pt-badge 8s ease-in-out infinite; animation-delay: calc(1.6s + var(--k) * 2s); }
.pt-step em.r0::after { content: "Prevented"; } .pt-step em.r1::after { content: "Detected"; } .pt-step em.r2::after { content: "Missed"; } .pt-step em.r3::after { content: "Prevented"; }
.pt-step em.r0, .pt-step em.r3 { background: rgba(52,211,153,.15); color: #6ee7b7; } .pt-step em.r1 { background: rgba(245,184,74,.15); color: #f5c76a; } .pt-step em.r2 { background: rgba(255,93,93,.15); color: #ff9a9a; }
@keyframes pt-badge { 0% { opacity: 0; transform: scale(.8); } 4%, 70% { opacity: 1; transform: none; } 90%, 100% { opacity: 0; } }

/* grc */
.pt-grc { display: grid; align-content: center; justify-items: center; gap: 22px; }
.pt-grc > .pt-logo { position: relative; }
.pt-board { width: 92%; display: grid; grid-template-columns: 1fr 120px; gap: 18px; align-items: center; padding: 20px; border-radius: 16px; background: rgba(0,21,52,.7); border: 1px solid var(--line-dark); }
.pt-board ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 9px; }
.pt-board li { display: flex; gap: 10px; align-items: center; font-size: 13px; color: rgba(255,255,255,.85); }
.pt-board li i { width: 18px; height: 18px; border-radius: 5px; border: 1.5px solid rgba(148,212,244,.4); flex: none; position: relative; animation: pt-tick 7s ease-in-out infinite; animation-delay: calc(.5s + var(--k) * .55s); }
@keyframes pt-tick { 0%, 4% { background: transparent; border-color: rgba(148,212,244,.4); } 8%, 85% { background: var(--vc) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.5'%3E%3Cpath d='m5 12 5 5 9-10'/%3E%3C/svg%3E") center / 12px no-repeat; border-color: var(--vc); } 100% { background: transparent; } }
.pt-donut { position: relative; width: 120px; height: 120px; }
.pt-donut svg { width: 100%; height: 100%; transform: rotate(-90deg); }
.pt-donut circle { fill: none; stroke-width: 10; }
.pt-donut .trk { stroke: rgba(148,212,244,.12); }
.pt-donut .arc { stroke: var(--vc); stroke-linecap: round; stroke-dasharray: 100; stroke-dashoffset: 100; animation: pt-arc 7s ease-in-out infinite; }
@keyframes pt-arc { 0%, 6% { stroke-dashoffset: 100; } 50%, 85% { stroke-dashoffset: 0; } 100% { stroke-dashoffset: 100; } }
.pt-donut b { position: absolute; inset: 0; display: grid; place-items: center; text-align: center; font-size: 13px; color: #fff; line-height: 1.2; }

/* email */
.pt-mailv { display: grid; align-content: center; justify-items: center; gap: 14px; }
.pt-mailv > .pt-logo { position: relative; }
.pt-stream { position: relative; width: 80%; height: 70px; overflow: hidden; }
.pt-mail { position: absolute; top: 14px; left: -60px; width: 46px; height: 46px; border-radius: 10px; display: grid; place-items: center; background: var(--navy-card); border: 1px solid rgba(148,212,244,.35); color: var(--accent); animation: pt-flow 6s linear infinite; animation-delay: calc(var(--k) * -1s); }
.pt-mail svg { width: 24px; height: 24px; }
.pt-mail.bad { color: #ff8a8a; border-color: rgba(255,93,93,.5); }
@keyframes pt-flow { to { left: 110%; } }
.pt-filter { width: 80%; padding: 14px; border-radius: 14px; text-align: center; border: 1.5px solid color-mix(in srgb, var(--vc) 70%, transparent); background: color-mix(in srgb, var(--vc) 14%, transparent); position: relative; overflow: hidden; }
.pt-filter span { font-weight: 700; letter-spacing: .14em; text-transform: uppercase; font-size: 12px; color: #fff; }
.pt-filter::after { content: ""; position: absolute; top: 0; bottom: 0; width: 30%; left: -30%; background: linear-gradient(90deg, transparent, rgba(255,255,255,.25), transparent); animation: pt-sheen 2.4s linear infinite; }
@keyframes pt-sheen { to { left: 110%; } }
.pt-bins { width: 80%; display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.pt-bins span { display: flex; align-items: center; justify-content: center; gap: 8px; padding: 12px; border-radius: 12px; font-size: 13px; font-weight: 600; }
.pt-bins svg { width: 18px; height: 18px; }
.pt-bins .ok { background: rgba(52,211,153,.12); color: #6ee7b7; border: 1px solid rgba(52,211,153,.35); }
.pt-bins .no { background: rgba(255,93,93,.12); color: #ff9a9a; border: 1px solid rgba(255,93,93,.35); animation: pt-blinkbin 3s ease-in-out infinite; }
@keyframes pt-blinkbin { 50% { box-shadow: 0 0 20px rgba(255,93,93,.4); } }

/* partnership */
.pt-split { align-items: start; }
.pt-whys { display: grid; gap: 14px; }
.pt-why { display: grid; grid-template-columns: 52px 1fr; gap: 16px; padding: 20px 22px; border-radius: 14px; background: #fff; border: 1px solid var(--line); transition: transform .25s, box-shadow .25s, border-color .25s; }
.pt-why:hover { transform: translateX(6px); border-color: var(--vc); box-shadow: 0 14px 30px rgba(0,21,52,.08); }
.pt-why span svg { width: 52px; height: 52px; padding: 13px; border-radius: 14px; background: var(--navy); color: var(--accent); }
.pt-why b { display: block; color: var(--navy); font-size: 17px; margin-bottom: 4px; }
.pt-why p { margin: 0; color: var(--muted); font-size: 15px; }
.pt-quote { margin: 0; padding: 26px 28px; border-radius: 16px; background: var(--navy); color: #fff; position: relative; overflow: hidden; }
.pt-quote::before { content: "\201C"; position: absolute; right: 18px; top: -18px; font-size: 140px; line-height: 1; color: color-mix(in srgb, var(--vc) 50%, transparent); font-family: Georgia, serif; }
.pt-quote blockquote { margin: 0 0 18px; font-size: 15.5px; line-height: 1.7; color: rgba(255,255,255,.88); position: relative; }
.pt-quote figcaption { display: flex; gap: 12px; align-items: center; }
.pt-quote figcaption > span { width: 42px; height: 42px; border-radius: 50%; display: grid; place-items: center; background: var(--vc); font-weight: 700; color: #fff; }
.pt-quote small { display: block; color: var(--accent); font-size: 13px; }

/* capabilities */
.pt-caps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; margin-top: 10px; }
.pt-cap { position: relative; padding: 28px 26px; border-radius: 16px; background: #fff; border: 1px solid var(--line); overflow: hidden; transition: transform .3s var(--ease), box-shadow .3s, border-color .3s; }
.pt-cap::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 3px; background: linear-gradient(90deg, var(--vc), var(--accent)); transform: scaleX(0); transform-origin: 0 50%; transition: transform .4s var(--ease); }
.pt-cap:hover { transform: translateY(-6px); box-shadow: 0 24px 44px rgba(0,21,52,.1); border-color: color-mix(in srgb, var(--vc) 40%, var(--line)); }
.pt-cap:hover::after { transform: scaleX(1); }
.pt-cap .n { position: absolute; right: 20px; top: 16px; font-size: 34px; font-weight: 800; color: color-mix(in srgb, var(--vc) 16%, transparent); }
.pt-cap .ic svg { width: 50px; height: 50px; padding: 12px; border-radius: 14px; background: var(--navy); color: var(--accent); transition: background .3s, color .3s, transform .3s; }
.pt-cap:hover .ic svg { background: var(--vc); color: #fff; transform: rotate(-6deg); }
.pt-cap h3 { font-size: 18px; color: var(--navy); margin: 18px 0 8px; }
.pt-cap p { margin: 0; color: var(--muted); font-size: 15px; line-height: 1.6; }

/* interactive: intel flow */
.pt-act .lead { color: rgba(255,255,255,.75); }
.pt-flow { max-width: 980px; margin: 30px auto 0; }
.pt-flow-row { position: relative; display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }
.pt-flow-line { position: absolute; left: 12%; right: 12%; top: 38px; height: 2px; background: rgba(148,212,244,.15); z-index: 0; }
.pt-flow-line b { display: block; height: 100%; width: var(--p, 0%); background: linear-gradient(90deg, var(--vc), var(--accent)); transition: width .6s var(--ease); }
.pt-flow-b { position: relative; z-index: 1; display: grid; justify-items: center; gap: 10px; background: none; border: 0; cursor: pointer; color: rgba(255,255,255,.7); font: 600 15px var(--font); }
.pt-flow-b svg { width: 76px; height: 76px; padding: 22px; border-radius: 50%; background: var(--navy-card); border: 1.5px solid var(--line-dark); color: var(--accent); transition: all .3s; }
.pt-flow-b.on { color: #fff; } .pt-flow-b.on svg { background: var(--vc); border-color: var(--vc); color: #fff; box-shadow: 0 0 0 8px color-mix(in srgb, var(--vc) 22%, transparent); }
.pt-flow-ps { margin-top: 28px; min-height: 90px; padding: 24px 28px; border-radius: 16px; background: rgba(148,212,244,.06); border: 1px solid var(--line-dark); text-align: center; }
.pt-flow-p { display: none; margin: 0; font-size: 17px; color: rgba(255,255,255,.88); } .pt-flow-p.on { display: block; animation: cr-in .4s var(--ease); }

/* interactive: traffic sim */
.pt-sim { max-width: 980px; margin: 30px auto 0; }
.pt-sim-b { display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; margin-bottom: 30px; }
.pt-sim-b button { font: 600 14px var(--font); padding: 11px 18px; border-radius: 999px; border: 1px solid var(--line-dark); background: rgba(148,212,244,.06); color: #fff; cursor: pointer; transition: all .2s; }
.pt-sim-b button:hover, .pt-sim-b button.on { border-color: var(--vc); background: color-mix(in srgb, var(--vc) 25%, transparent); }
.pt-sim-stage { display: grid; grid-template-columns: auto 1fr auto 1fr auto; align-items: center; gap: 10px; padding: 30px; border-radius: 18px; background: rgba(0,21,52,.5); border: 1px solid var(--line-dark); }
.pt-sim-n { display: grid; justify-items: center; gap: 8px; font-size: 13px; color: rgba(255,255,255,.85); }
.pt-sim-n svg { width: 58px; height: 58px; padding: 15px; border-radius: 16px; background: var(--navy-card); border: 1px solid rgba(148,212,244,.35); color: var(--accent); }
.pt-sim-n.hub svg { background: var(--vc); border-color: var(--vc); color: #fff; }
.pt-sim-track { position: relative; height: 4px; border-radius: 4px; background: rgba(148,212,244,.15); }
.pt-sim-pk { position: absolute; top: -6px; left: 0; width: 16px; height: 16px; border-radius: 50%; background: var(--accent); opacity: 0; box-shadow: 0 0 12px var(--accent); }
.pt-sim.run .pt-sim-track:not(.t2) .pt-sim-pk { animation: pt-go1 .9s var(--ease) forwards; }
.pt-sim.run.ok .t2 .pt-sim-pk { animation: pt-go1 .9s var(--ease) .9s forwards; }
.pt-sim.run.bad .pt-sim-track:not(.t2) .pt-sim-pk { background: #ff5d5d; box-shadow: 0 0 12px #ff5d5d; }
.pt-sim.run.bad .hub svg { animation: pt-shake .5s ease .85s; background: #e5484d; border-color: #e5484d; }
@keyframes pt-go1 { 0% { opacity: 1; left: 0; } 100% { opacity: 1; left: calc(100% - 16px); } }
@keyframes pt-shake { 25% { transform: translateX(-6px); } 50% { transform: translateX(6px); } 75% { transform: translateX(-3px); } }
.pt-sim-out { margin: 20px 0 0; text-align: center; font-size: 16px; color: rgba(255,255,255,.85); min-height: 1.6em; }
.pt-sim-out b.ok { color: #6ee7b7; } .pt-sim-out b.bad { color: #ff9a9a; }

/* interactive: soc timeline */
.pt-tl { max-width: 900px; margin: 30px auto 0; display: grid; gap: 24px; justify-items: center; }
.pt-tl .btn svg { width: 18px; height: 18px; margin-right: 8px; }
.pt-tl ol { list-style: none; margin: 0; padding: 0; width: 100%; display: grid; gap: 12px; position: relative; }
.pt-tl li { display: grid; grid-template-columns: 80px 52px 1fr; gap: 16px; align-items: center; padding: 16px 20px; border-radius: 14px; background: rgba(148,212,244,.05); border: 1px solid var(--line-dark); opacity: .35; transition: opacity .4s, border-color .4s, background .4s, transform .4s; }
.pt-tl li.on { opacity: 1; border-color: color-mix(in srgb, var(--vc) 60%, transparent); background: color-mix(in srgb, var(--vc) 10%, transparent); transform: translateX(6px); }
.pt-tl .tm { font-family: ui-monospace, Menlo, monospace; font-weight: 700; color: var(--accent); font-size: 14px; }
.pt-tl .ic svg { width: 46px; height: 46px; padding: 11px; border-radius: 12px; background: var(--navy-card); color: var(--accent); }
.pt-tl li.on .ic svg { background: var(--vc); color: #fff; }
.pt-tl b { color: #fff; font-size: 16px; } .pt-tl p { margin: 4px 0 0; color: rgba(255,255,255,.72); font-size: 14.5px; }

/* interactive: quiz */
.pt-quiz { max-width: 1040px; margin: 30px auto 0; display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.pt-q { padding: 24px; border-radius: 16px; background: rgba(148,212,244,.06); border: 1px solid var(--line-dark); display: flex; flex-direction: column; gap: 16px; transition: border-color .3s, background .3s; }
.pt-q > p:first-child { margin: 0; color: #fff; font-size: 15.5px; line-height: 1.6; flex: 1; }
.pt-q-b { display: flex; gap: 10px; }
.pt-q-b button { flex: 1; font: 700 14px var(--font); padding: 10px; border-radius: 10px; border: 1px solid var(--line-dark); background: rgba(0,21,52,.5); color: #fff; cursor: pointer; transition: all .2s; }
.pt-q-b button:hover { border-color: var(--accent); }
.pt-q.right { border-color: #34d399; background: rgba(52,211,153,.08); } .pt-q.wrong { border-color: #f5b84a; background: rgba(245,184,74,.08); }
.pt-q-fb { margin: 0; font-size: 14px; color: rgba(255,255,255,.8); min-height: 0; } .pt-q-fb:empty { display: none; }
.pt-q-fb b { color: #fff; }

/* interactive: validation run */
.pt-run { max-width: 820px; margin: 30px auto 0; display: grid; gap: 20px; justify-items: center; }
.pt-run .btn svg { width: 18px; height: 18px; margin-right: 8px; }
.pt-run ol { list-style: none; margin: 0; padding: 0; width: 100%; display: grid; gap: 10px; }
.pt-run li { display: grid; grid-template-columns: 46px 1fr auto; gap: 14px; align-items: center; padding: 14px 18px; border-radius: 12px; background: rgba(148,212,244,.05); border: 1px solid var(--line-dark); }
.pt-run li svg { width: 40px; height: 40px; padding: 9px; border-radius: 10px; background: var(--navy-card); color: var(--accent); }
.pt-run li b { color: #fff; }
.pt-run li em { font-style: normal; font-size: 12px; font-weight: 700; padding: 5px 12px; border-radius: 6px; background: rgba(148,212,244,.1); color: rgba(255,255,255,.5); }
.pt-run li em::after { content: "Waiting"; }
.pt-run li.busy em::after { content: "Testing…"; } .pt-run li.busy { border-color: var(--accent); }
.pt-run li.done[data-r=prevented] em { background: rgba(52,211,153,.15); color: #6ee7b7; } .pt-run li.done[data-r=prevented] em::after { content: "Prevented"; }
.pt-run li.done[data-r=detected] em { background: rgba(245,184,74,.15); color: #f5c76a; } .pt-run li.done[data-r=detected] em::after { content: "Detected"; }
.pt-run li.done[data-r=missed] em { background: rgba(255,93,93,.15); color: #ff9a9a; } .pt-run li.done[data-r=missed] em::after { content: "Missed"; } .pt-run li.done[data-r=missed] { border-color: rgba(255,93,93,.5); }
.pt-run-sum { margin: 0; color: rgba(255,255,255,.85); text-align: center; min-height: 1.5em; }

/* interactive: frameworks */
.pt-fw { max-width: 860px; margin: 30px auto 0; }
.pt-fw-t { display: flex; justify-content: center; gap: 8px; margin-bottom: 20px; flex-wrap: wrap; }
.pt-fw-t button { font: 600 14px var(--font); padding: 10px 20px; border-radius: 999px; border: 1px solid var(--line-dark); background: rgba(148,212,244,.06); color: #fff; cursor: pointer; }
.pt-fw-t button.on { background: var(--vc); border-color: var(--vc); }
.pt-fw ul { display: none; list-style: none; margin: 0; padding: 0; gap: 10px; } .pt-fw ul.on { display: grid; }
.pt-fw li { display: grid; grid-template-columns: 26px 1fr auto; gap: 14px; align-items: center; padding: 16px 20px; border-radius: 12px; background: rgba(148,212,244,.05); border: 1px solid var(--line-dark); }
.pt-fw li i { width: 22px; height: 22px; border-radius: 6px; border: 1.5px solid rgba(148,212,244,.4); }
.pt-fw ul.on li i { animation: pt-tick1 .4s ease forwards; animation-delay: calc(.3s + var(--k) * .45s); }
@keyframes pt-tick1 { to { background: var(--vc) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.5'%3E%3Cpath d='m5 12 5 5 9-10'/%3E%3C/svg%3E") center / 13px no-repeat; border-color: var(--vc); } }
.pt-fw li b { color: #fff; } .pt-fw li span { font-size: 13px; color: var(--accent); }

/* interactive: email */
.pt-mail-x { max-width: 960px; margin: 30px auto 0; display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.pt-mail-l { display: grid; gap: 10px; }
.pt-mail-l button { text-align: left; display: grid; gap: 4px; padding: 16px 18px; border-radius: 12px; border: 1px solid var(--line-dark); background: rgba(148,212,244,.05); color: #fff; font: 600 15px var(--font); cursor: pointer; transition: all .2s; }
.pt-mail-l button small { font-weight: 400; font-size: 13px; color: rgba(255,255,255,.6); }
.pt-mail-l button.on { border-color: var(--vc); background: color-mix(in srgb, var(--vc) 16%, transparent); }
.pt-mx { display: none; padding: 24px; border-radius: 16px; border: 1px solid var(--line-dark); background: rgba(0,21,52,.5); } .pt-mx.on { display: block; animation: cr-in .4s var(--ease); }
.pt-mx-v { display: inline-block; font-weight: 800; font-size: 13px; letter-spacing: .1em; text-transform: uppercase; padding: 6px 12px; border-radius: 8px; margin-bottom: 14px; }
.pt-mx.bad .pt-mx-v { background: rgba(255,93,93,.15); color: #ff9a9a; } .pt-mx.ok .pt-mx-v { background: rgba(52,211,153,.15); color: #6ee7b7; }
.pt-mx ul { margin: 0; padding-left: 18px; color: rgba(255,255,255,.85); display: grid; gap: 8px; }

/* use cases */
.pt-ucs { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; margin-top: 10px; }
.pt-uc { position: relative; display: flex; flex-direction: column; gap: 10px; padding: 30px 28px; border-radius: 18px; background: linear-gradient(160deg, #fff, var(--light)); border: 1px solid var(--line); overflow: hidden; transition: transform .3s var(--ease), box-shadow .3s; }
.pt-uc::before { content: ""; position: absolute; width: 180px; height: 180px; right: -60px; top: -60px; border-radius: 50%; background: radial-gradient(circle, color-mix(in srgb, var(--vc) 22%, transparent), transparent 70%); transition: transform .5s var(--ease); }
.pt-uc:hover { transform: translateY(-6px); box-shadow: 0 24px 44px rgba(0,21,52,.1); } .pt-uc:hover::before { transform: scale(1.5); }
.pt-uc .ic svg { width: 48px; height: 48px; padding: 12px; border-radius: 14px; background: var(--vc); color: #fff; position: relative; }
.pt-uc small { font-size: 12px; letter-spacing: .12em; text-transform: uppercase; color: var(--blue); font-weight: 700; position: relative; }
.pt-uc h3 { font-size: 20px; color: var(--navy); margin: 0; position: relative; }
.pt-uc p { color: var(--muted); margin: 0; flex: 1; position: relative; }
.pt-uc a { display: inline-flex; gap: 8px; align-items: center; color: var(--blue); font-weight: 600; text-decoration: none; position: relative; }
.pt-uc a svg { width: 16px; height: 16px; transition: transform .2s; } .pt-uc a:hover svg { transform: translateX(4px); }

/* delivery path */
.pt-path { list-style: none; margin: 30px 0 0; padding: 0; display: grid; grid-template-columns: repeat(5, 1fr); gap: 10px; position: relative; }
.pt-path::before { content: ""; position: absolute; left: 10%; right: 10%; top: 36px; height: 3px; background: var(--line); }
.pt-path::after { content: ""; position: absolute; left: 10%; right: 10%; top: 36px; height: 3px; background: linear-gradient(90deg, var(--vc), var(--accent)); transform: scaleX(0); transform-origin: 0 50%; transition: transform 2s var(--ease); }
.pt-path.in::after { transform: scaleX(1); }
.pt-path li { position: relative; z-index: 1; display: grid; justify-items: center; gap: 12px; text-align: center; }
.pt-path li span svg { width: 74px; height: 74px; padding: 21px; border-radius: 50%; background: #fff; border: 2px solid var(--line); color: var(--blue); transition: all .4s var(--ease); transition-delay: calc(var(--k) * .35s); }
.pt-path.in li span svg { background: var(--navy); border-color: var(--vc); color: var(--accent); }
.pt-path b { color: var(--navy); font-size: 16px; }

/* insights */
.pt-posts { display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px; margin-top: 10px; }
.pt-post { display: grid; grid-template-columns: 200px 1fr; border-radius: 16px; overflow: hidden; background: #fff; border: 1px solid var(--line); text-decoration: none; color: var(--ink); transition: box-shadow .3s, transform .3s; }
.pt-post:hover { box-shadow: 0 20px 40px rgba(0,21,52,.1); transform: translateY(-4px); }
.pt-post .im { background: var(--navy); min-height: 150px; } .pt-post .im img { width: 100%; height: 100%; object-fit: cover; display: block; }
.pt-post .tx { display: grid; gap: 6px; padding: 20px 22px; align-content: start; }
.pt-post small { color: var(--blue); font-weight: 700; letter-spacing: .1em; text-transform: uppercase; font-size: 11.5px; }
.pt-post b { color: var(--navy); font-size: 16.5px; line-height: 1.35; }
.pt-post .tx > span { color: var(--muted); font-size: 14px; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.pt-svcs { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin-top: 26px; }
.pt-svcs > span { font-weight: 700; color: var(--navy); margin-right: 6px; }
.pt-svc { display: inline-flex; gap: 8px; align-items: center; padding: 10px 16px; border-radius: 999px; border: 1px solid var(--line); background: #fff; color: var(--navy); font-weight: 600; font-size: 14px; text-decoration: none; transition: border-color .2s, gap .2s; }
.pt-svc svg { width: 15px; height: 15px; } .pt-svc:hover { border-color: var(--vc); gap: 12px; }

@media (max-width: 1080px) {
  .pt-caps, .pt-ucs { grid-template-columns: 1fr 1fr; }
  .pt-quiz { grid-template-columns: 1fr; }
  .pt-posts { grid-template-columns: 1fr; }
}
@media (max-width: 720px) {
  .pt-vis { width: min(360px, 100%); }
  .pt-src { font-size: 10.5px; padding: 3px 8px; transform: rotate(var(--a)) translateY(calc(min(360px, 100vw - 48px) * -.47)) rotate(calc(var(--a) * -1)) translate(-50%, -50%); }
  .pt-logo img { max-width: 120px; max-height: 38px; }
  .pt-node svg { width: 38px; height: 38px; padding: 9px; } .pt-node b { font-size: 10px; }
  .pt-caps, .pt-ucs { grid-template-columns: 1fr; }
  .pt-flow-row { grid-template-columns: 1fr 1fr; row-gap: 20px; } .pt-flow-line { display: none; }
  .pt-flow-b svg { width: 60px; height: 60px; padding: 17px; }
  .pt-sim-stage { grid-template-columns: auto 1fr auto 1fr auto; padding: 18px 10px; gap: 6px; }
  .pt-sim-n svg { width: 44px; height: 44px; padding: 11px; } .pt-sim-n b { font-size: 11px; }
  .pt-tl li { grid-template-columns: 1fr; gap: 8px; } .pt-tl .ic { display: none; }
  .pt-mail-x { grid-template-columns: 1fr; }
  .pt-path { grid-template-columns: 1fr; gap: 14px; } .pt-path::before, .pt-path::after { display: none; }
  .pt-path li { grid-template-columns: 60px 1fr; justify-items: start; text-align: left; align-items: center; }
  .pt-path li span svg { width: 56px; height: 56px; padding: 15px; }
  .pt-post { grid-template-columns: 1fr; } .pt-post .im { min-height: 160px; }
  .pt-board { grid-template-columns: 1fr 90px; padding: 14px; } .pt-donut { width: 90px; height: 90px; }
  .pt-avs { gap: 7px; }
}
@media (prefers-reduced-motion: reduce) {
  .pt-vis *, .pt-hero .pt-glow { animation: none !important; }
}
