/* =========================================================
			   PORT SCANNER
			   ========================================================= */

			.portscan-header{
				margin-bottom:24px;
			}

			.portscan-title{
				margin:0;
				font-size:32px;
				font-weight:800;
			}

			.portscan-subtitle{
				margin:8px 0 0;
				opacity:.7;
			}

			.portscan-form{
				display:grid;
				grid-template-columns:2fr 1fr 1fr 1fr;
				gap:14px;
				margin-top:24px;
			}

			.portscan-field{
				display:flex;
				flex-direction:column;
				gap:7px;
			}

			.portscan-field label{
				font-size:13px;
				font-weight:700;
				opacity:.75;
			}

			.portscan-field input,
			.portscan-field select{
				width:100%;
				height:46px;
				padding:0 14px;
				border:1px solid rgba(127,127,127,.25);
				border-radius:10px;
				background:rgba(127,127,127,.08);
				color:inherit;
				outline:none;
				font-size:14px;
				transition:.2s;
			}

			.portscan-field input:focus,
			.portscan-field select:focus{
				border-color:#4c8dff;
				box-shadow:0 0 0 3px rgba(76,141,255,.12);
			}

			.portscan-actions{
				display:flex;
				gap:10px;
				margin-top:18px;
			}

			.portscan-button{
				min-width:130px;
				height:46px;
				padding:0 20px;
				border:0;
				border-radius:10px;
				cursor:pointer;
				font-weight:700;
				font-size:14px;
				transition:.2s;
			}

			.portscan-button.primary{
				background:#3d82f6;
				color:#fff;
			}

			.portscan-button.primary:hover{
				background:#2f72df;
			}

			.portscan-button.secondary{
				background:rgba(127,127,127,.12);
				color:inherit;
			}

			.portscan-button:hover{
				transform:translateY(-1px);
			}

			.portscan-button:disabled{
				opacity:.45;
				cursor:not-allowed;
				transform:none;
			}

			.portscan-warning{
				margin-top:18px;
				padding:13px 15px;
				border-radius:10px;
				background:rgba(255,190,70,.08);
				border:1px solid rgba(255,190,70,.2);
				font-size:13px;
				line-height:1.7;
			}

			.portscan-stats{
				display:grid;
				grid-template-columns:repeat(4,1fr);
				gap:12px;
				margin-top:24px;
			}

			.portscan-stat{
				padding:17px;
				border-radius:12px;
				background:rgba(127,127,127,.06);
				border:1px solid rgba(127,127,127,.15);
			}

			.portscan-stat-label{
				font-size:12px;
				opacity:.6;
				margin-bottom:7px;
			}

			.portscan-stat-value{
				font-size:20px;
				font-weight:800;
				word-break:break-all;
			}

			.portscan-progress{
				margin-top:22px;
			}

			.portscan-progress-top{
				display:flex;
				justify-content:space-between;
				align-items:center;
				margin-bottom:8px;
				font-size:12px;
				opacity:.65;
			}

			.portscan-progress-track{
				height:9px;
				background:rgba(127,127,127,.12);
				border-radius:999px;
				overflow:hidden;
			}

			.portscan-progress-bar{
				height:100%;
				width:0%;
				border-radius:999px;
				background:#3d82f6;
				transition:width .15s ease;
			}

			.portscan-results{
				display:grid;
				grid-template-columns:1fr 1fr;
				gap:16px;
				margin-top:24px;
			}

			.portscan-result{
				border:1px solid rgba(127,127,127,.15);
				border-radius:13px;
				overflow:hidden;
				background:rgba(127,127,127,.04);
			}

			.portscan-result-header{
				display:flex;
				justify-content:space-between;
				align-items:center;
				padding:14px 16px;
				border-bottom:1px solid rgba(127,127,127,.13);
			}

			.portscan-result-title{
				font-weight:800;
			}

			.portscan-result-count{
				font-size:12px;
				opacity:.6;
			}

			.portscan-port-list{
				display:flex;
				flex-wrap:wrap;
				gap:8px;
				padding:16px;
				min-height:75px;
			}

			.portscan-port{
				padding:7px 10px;
				border-radius:8px;
				font-size:12px;
				font-weight:700;
				border:1px solid rgba(127,127,127,.2);
				background:rgba(127,127,127,.08);
			}

			.portscan-port.tcp{
				color:#6fa5ff;
			}

			.portscan-port.udp-open{
				color:#59d39a;
				border-color:rgba(89,211,154,.25);
				background:rgba(89,211,154,.08);
			}

			.portscan-port.udp-filtered{
				color:#d6b56d;
				border-color:rgba(214,181,109,.25);
				background:rgba(214,181,109,.08);
			}

			.portscan-empty{
				width:100%;
				padding:8px 0;
				font-size:13px;
				opacity:.55;
			}

			.portscan-console{
				margin-top:18px;
				border:1px solid rgba(127,127,127,.15);
				border-radius:13px;
				overflow:hidden;
				background:rgba(0,0,0,.16);
			}

			.portscan-console-header{
				padding:13px 16px;
				font-size:13px;
				font-weight:800;
				border-bottom:1px solid rgba(127,127,127,.13);
			}

			.portscan-console-body{
				height:260px;
				padding:13px 15px;
				overflow:auto;
				font-family:
					Consolas,
					"SFMono-Regular",
					monospace;
				font-size:12px;
				line-height:1.7;
				white-space:pre-wrap;
				word-break:break-word;
			}

			.portscan-log-info{
				color:#78aefb;
			}

			.portscan-log-ok{
				color:#68d391;
			}

			.portscan-log-warn{
				color:#d8b66e;
			}

			.portscan-log-error{
				color:#ef7676;
			}

			.portscan-note{
				margin-top:18px;
				font-size:12px;
				line-height:1.7;
				opacity:.55;
			}

			@media(max-width:900px){

				.portscan-form{
					grid-template-columns:1fr 1fr;
				}

				.portscan-stats{
					grid-template-columns:1fr 1fr;
				}
			}

			@media(max-width:650px){

				.portscan-title{
					font-size:25px;
				}

				.portscan-form{
					grid-template-columns:1fr;
				}

				.portscan-stats{
					grid-template-columns:1fr 1fr;
				}

				.portscan-results{
					grid-template-columns:1fr;
				}

				.portscan-actions{
					flex-direction:column;
				}

				.portscan-button{
					width:100%;
				}
			}