/* Pentestscans login — drop-in styles.
 * Everything is scoped under .psl-root so it won't collide with the host page.
 * No global resets, no bare html/body rules, no shared keyframe names. */

@keyframes psl-blink{0%,100%{opacity:1}50%{opacity:.2}}
@keyframes psl-rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}

.psl-root,.psl-root *{box-sizing:border-box}
.psl-root{
  position:relative;width:100%;height:100vh;min-height:560px;overflow:hidden;
  font-family:'Space Grotesk',sans-serif;color:#d8ecf3;
  background:radial-gradient(120% 120% at 40% 50%, #0a1622 0%, #060c14 48%, #03060b 100%);
}
.psl-root .psl-globe{position:absolute;inset:0;width:100%;height:100%;display:block;z-index:0;cursor:grab}
.psl-root .psl-overlay{position:absolute;inset:0;z-index:1;pointer-events:none}

/* Brand (top-left) */
.psl-root .psl-brand{position:absolute;top:38px;left:40px;pointer-events:auto}
.psl-root .psl-brand-row{display:flex;align-items:center;gap:14px}
.psl-root .psl-brand-logo{width:36px;height:36px;border-radius:9px;box-shadow:0 0 18px rgba(52,225,255,.25);flex:none}
.psl-root .psl-brand-name{font-weight:700;font-size:18px;letter-spacing:1.5px}
.psl-root .psl-brand-alert{font-family:'IBM Plex Mono',monospace;font-size:10px;letter-spacing:3px;color:#ff6b81;margin-top:3px;display:flex;align-items:center;gap:6px}
.psl-root .psl-brand-alert .psl-dot{width:6px;height:6px;border-radius:50%;background:#ff5470;box-shadow:0 0 8px #ff5470;animation:psl-blink 1.2s infinite}
.psl-root .psl-stats{display:flex;gap:30px;margin-top:30px}
.psl-root .psl-stat-k{font-family:'IBM Plex Mono',monospace;font-size:9px;letter-spacing:2px;color:#5f7e8c}
.psl-root .psl-stat-v{font-size:22px;font-weight:600;margin-top:4px}

/* Bottom-left slot */
.psl-root .psl-slot{position:absolute;bottom:38px;left:40px;width:360px;pointer-events:auto}
.psl-root .psl-panel{background:rgba(8,16,24,.55);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid rgba(120,200,225,.14);border-radius:12px}
.psl-root .psl-feed{padding:16px 16px 8px}
.psl-root .psl-feed-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.psl-root .psl-feed-title{font-family:'IBM Plex Mono',monospace;font-size:10px;letter-spacing:3px;color:#7da3b3}
.psl-root .psl-feed-live{display:flex;align-items:center;gap:7px}
.psl-root .psl-feed-live .psl-dot{width:7px;height:7px;border-radius:50%;background:#34e1ff;box-shadow:0 0 8px #34e1ff;animation:psl-blink 1.6s infinite}
.psl-root .psl-feed-live span{font-family:'IBM Plex Mono',monospace;font-size:10px;letter-spacing:2px;color:#34e1ff}
.psl-root .psl-feed-row{display:flex;align-items:center;gap:12px;padding:9px 8px;border-radius:8px;cursor:pointer;transition:background .15s}
.psl-root .psl-feed-row:hover{background:rgba(120,200,225,.07)}
.psl-root .psl-feed-row .psl-swatch{width:8px;height:8px;border-radius:50%;flex:none;box-shadow:0 0 8px currentColor}
.psl-root .psl-feed-row .psl-city{font-size:13px;font-weight:500;line-height:1.3}
.psl-root .psl-feed-row .psl-cc{color:#5f7e8c;font-family:'IBM Plex Mono',monospace;font-size:10px}
.psl-root .psl-feed-row .psl-type{font-family:'IBM Plex Mono',monospace;font-size:10px;color:#6f8a98;margin-top:1px}
.psl-root .psl-feed-row .psl-time{font-family:'IBM Plex Mono',monospace;font-size:10px;color:#516874;flex:none}

.psl-root .psl-detail{background:rgba(8,16,24,.62);border:1px solid rgba(120,200,225,.2);border-radius:12px;padding:18px;animation:psl-rise .25s ease}
.psl-root .psl-detail-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.psl-root .psl-detail-title{font-family:'IBM Plex Mono',monospace;font-size:10px;letter-spacing:3px;color:#7da3b3}
.psl-root .psl-detail-close{cursor:pointer;color:#6f8a98;font-size:16px;line-height:1;padding:2px 6px}
.psl-root .psl-detail-id{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.psl-root .psl-detail-sev{font-family:'IBM Plex Mono',monospace;font-size:9px;font-weight:600;letter-spacing:2px;color:#04070c;padding:3px 8px;border-radius:4px}
.psl-root .psl-detail-city{font-size:20px;font-weight:600}
.psl-root .psl-detail-cc{font-family:'IBM Plex Mono',monospace;font-size:11px;color:#5f7e8c}
.psl-root .psl-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px 18px;margin-bottom:16px}
.psl-root .psl-detail-grid .psl-k{font-family:'IBM Plex Mono',monospace;font-size:9px;letter-spacing:2px;color:#5f7e8c}
.psl-root .psl-detail-grid .psl-v{font-size:13px;margin-top:3px}
.psl-root .psl-detail-grid .psl-v.psl-mono{font-family:'IBM Plex Mono',monospace}
.psl-root .psl-detail-actions{display:flex;gap:10px}
.psl-root .psl-btn-block{flex:1;text-align:center;padding:10px;border-radius:8px;background:#ff5470;color:#1a0008;font-weight:600;font-size:13px;cursor:pointer}
.psl-root .psl-btn-investigate{flex:1;text-align:center;padding:10px;border-radius:8px;border:1px solid rgba(120,200,225,.25);color:#d8ecf3;font-size:13px;cursor:pointer}

/* Login card (right) */
.psl-root .psl-card-wrap{position:absolute;top:50%;right:56px;transform:translateY(-50%);width:384px;pointer-events:auto}
.psl-root .psl-card{background:rgba(7,14,22,.62);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border:1px solid rgba(120,200,225,.16);border-radius:16px;padding:26px 30px;box-shadow:0 30px 80px rgba(0,0,0,.5);max-height:calc(100vh - 28px);overflow-y:auto}
.psl-root .psl-card-head{display:flex;align-items:center;gap:13px;margin-bottom:18px}
.psl-root .psl-card-logo{width:48px;height:48px;border-radius:11px;box-shadow:0 4px 16px rgba(0,0,0,.45);flex:none}
.psl-root .psl-card-brand{font-weight:700;font-size:17px;letter-spacing:.2px;line-height:1.1}
.psl-root .psl-card-status{display:flex;align-items:center;gap:7px;margin-top:5px}
.psl-root .psl-card-status .psl-dot{width:7px;height:7px;border-radius:50%;background:#3ddc84;box-shadow:0 0 8px #3ddc84;animation:psl-blink 1.6s infinite}
.psl-root .psl-card-status span{font-family:'IBM Plex Mono',monospace;font-size:10px;letter-spacing:2px;color:#7da3b3}
.psl-root .psl-card-title{font-size:26px;font-weight:700;letter-spacing:-.3px}
.psl-root .psl-card-sub{color:#6f8a98;font-size:13px;margin-top:6px}
.psl-root .psl-field{margin-top:20px}
.psl-root .psl-field + .psl-field{margin-top:14px}
.psl-root .psl-field label{font-family:'IBM Plex Mono',monospace;font-size:10px;letter-spacing:2px;color:#7da3b3}
.psl-root .psl-field input{width:100%;margin-top:8px;background:rgba(255,255,255,.03);border:1px solid rgba(120,200,225,.16);border-radius:9px;padding:13px 14px;color:#eaf6fb;font-family:'Space Grotesk',sans-serif;font-size:14px;outline:none;transition:border-color .15s,background .15s,box-shadow .15s}
.psl-root .psl-field input:focus{background:rgba(52,225,255,.05);border:1px solid #34e1ff;box-shadow:0 0 0 3px rgba(52,225,255,.12)}
.psl-root .psl-row-opts{display:flex;align-items:center;justify-content:space-between;margin-top:14px;font-size:12px}
.psl-root .psl-row-opts .psl-trust{display:flex;align-items:center;gap:8px;color:#8aa6b3;cursor:pointer}
.psl-root .psl-row-opts .psl-trust input{accent-color:#34e1ff;width:14px;height:14px}
.psl-root .psl-row-opts .psl-recover{color:#34e1ff;cursor:pointer}
.psl-root .psl-auth-btn{margin-top:20px;text-align:center;padding:14px;border-radius:10px;font-weight:600;font-size:14px;letter-spacing:.3px;color:#03070c;cursor:pointer;transition:background .2s;background:#16c3df}
.psl-root .psl-divider{display:flex;align-items:center;gap:12px;margin:16px 0}
.psl-root .psl-divider .psl-line{flex:1;height:1px;background:rgba(120,200,225,.14)}
.psl-root .psl-divider span{font-family:'IBM Plex Mono',monospace;font-size:9px;letter-spacing:2px;color:#516874}
.psl-root .psl-hw-key{text-align:center;padding:13px;border-radius:10px;border:1px solid rgba(120,200,225,.2);font-size:13px;color:#d8ecf3;cursor:pointer;transition:border-color .15s,background .15s}
.psl-root .psl-hw-key:hover{border:1px solid rgba(52,225,255,.5);color:#eaf6fb;background:rgba(52,225,255,.05)}
.psl-root .psl-legal{text-align:center;font-family:'IBM Plex Mono',monospace;font-size:9px;letter-spacing:1.5px;color:#4c6470;margin-top:18px}

/* Narrow viewports: stack panels so they don't overlap the card */
@media (max-width:900px){
  .psl-root .psl-card-wrap{right:50%;transform:translate(50%,-50%);width:min(384px,calc(100% - 32px))}
  .psl-root .psl-slot{display:none}
}
