.npwifi-tool {
	--npwifi-blue: #287bc4;
	--npwifi-blue-dark: #155d9f;
	--npwifi-blue-soft: #e9f4ff;
	--npwifi-green: #138154;
	--npwifi-ink: #07162d;
	--npwifi-muted: #52677f;
	--npwifi-line: #cfe0f2;
	--npwifi-panel: #f3f8fd;
	color: var(--npwifi-ink);
	font-family: inherit;
	margin: 0 auto;
	max-width: 1080px;
}
.npwifi-tool *, .npwifi-tool *::before, .npwifi-tool *::after { box-sizing: border-box; }
.npwifi-shell { background: linear-gradient(135deg, #f6fbff 0%, #ffffff 58%, #f8fbfe 100%); border-top: 5px solid var(--npwifi-blue); box-shadow: 0 18px 55px rgba(7, 22, 45, 0.08); padding: clamp(20px, 4vw, 42px); }
.npwifi-heading { align-items: center; display: flex; gap: 18px; margin-bottom: 24px; }
.npwifi-heading-icon { background: #ffffff; border-radius: 8px; box-shadow: 0 10px 28px rgba(7, 22, 45, 0.08); display: block; flex: 0 0 auto; height: 62px; padding: 11px; width: 62px; }
.npwifi-heading h2 { color: #5b6f88; font-size: clamp(1.05rem, 2.2vw, 1.22rem); font-weight: 900; letter-spacing: 0; line-height: 1.2; margin: 0 0 16px; text-transform: uppercase; }
.npwifi-heading p { color: var(--npwifi-muted); font-size: clamp(1rem, 2vw, 1.1rem); line-height: 1.45; margin: 0; }
.npwifi-local-note { align-items: flex-start; background: var(--npwifi-blue-soft); border: 1px solid #b9d8f4; border-radius: 8px; color: #15233a; display: flex; gap: 12px; line-height: 1.5; margin: 0 0 22px; padding: 15px 16px; }
.npwifi-local-note p { margin: 0; }
.npwifi-local-icon { background: #ffffff; border: 1px solid #cfe0f2; border-radius: 8px; box-shadow: 0 4px 14px rgba(40, 123, 196, 0.12); flex: 0 0 auto; height: 32px; position: relative; width: 32px; }
.npwifi-local-icon::before { border-bottom: 3px solid var(--npwifi-blue); border-left: 3px solid var(--npwifi-blue); content: ""; height: 12px; left: 9px; position: absolute; top: 7px; transform: rotate(-45deg); width: 18px; }
.npwifi-generator-card { align-items: stretch; background: #ffffff; border: 1px solid var(--npwifi-line); border-radius: 8px; display: grid; gap: 28px; grid-template-columns: minmax(0, 1.08fr) minmax(300px, 0.92fr); padding: clamp(16px, 3vw, 24px); }
.npwifi-form, .npwifi-preview { min-width: 0; }
.npwifi-field { margin-bottom: 17px; }
.npwifi-field label, .npwifi-check { color: var(--npwifi-ink); display: block; font-size: 0.98rem; font-weight: 900; margin-bottom: 8px; }
.npwifi-field input, .npwifi-field select { background: #ffffff; border: 1px solid #cbd9e8; border-radius: 8px; color: var(--npwifi-ink); font: inherit; min-height: 48px; outline: none; padding: 11px 13px; transition: border-color 160ms ease, box-shadow 160ms ease; width: 100%; }
.npwifi-field input:focus, .npwifi-field select:focus { border-color: var(--npwifi-blue); box-shadow: 0 0 0 4px rgba(40, 123, 196, 0.14); }
.npwifi-field input:disabled { background: #eef4fa; color: #7a8796; }
.npwifi-password-row { display: flex; gap: 10px; }
.npwifi-password-row input { flex: 1 1 auto; }
.npwifi-check { align-items: center; display: flex; gap: 10px; margin: 2px 0 28px; }
.npwifi-check input { accent-color: var(--npwifi-blue); height: 18px; width: 18px; }
.npwifi-validation { color: var(--npwifi-muted); font-size: 0.92rem; font-weight: 700; line-height: 1.4; margin: 0 0 16px; min-height: 22px; }
.npwifi-validation[data-state="error"] { color: #b42318; }
.npwifi-validation[data-state="success"] { color: var(--npwifi-green); }
.npwifi-actions { display: flex; flex-wrap: wrap; gap: 10px; }
.npwifi-primary-button, .npwifi-secondary-button, .npwifi-ghost-button { align-items: center; border-radius: 8px; cursor: pointer; display: inline-flex; font: inherit; font-weight: 900; justify-content: center; min-height: 48px; padding: 11px 18px; text-decoration: none; transition: background-color 160ms ease, border-color 160ms ease, color 160ms ease, transform 160ms ease; }
.npwifi-primary-button { background: var(--npwifi-blue); border: 1px solid var(--npwifi-blue); color: #ffffff; }
.npwifi-primary-button:hover, .npwifi-primary-button:focus { background: var(--npwifi-blue-dark); border-color: var(--npwifi-blue-dark); color: #ffffff; transform: translateY(-1px); }
.npwifi-secondary-button, .npwifi-ghost-button { background: #f3f8fd; border: 1px solid #cfe0f2; color: #0b5593; }
.npwifi-secondary-button:hover, .npwifi-secondary-button:focus, .npwifi-ghost-button:hover, .npwifi-ghost-button:focus { background: #e9f4ff; border-color: var(--npwifi-blue); color: var(--npwifi-blue-dark); }
.npwifi-secondary-button:disabled { background: #eef4fa; border-color: #d7e2ed; color: #8b99a8; cursor: not-allowed; transform: none; }
.npwifi-preview { background: var(--npwifi-panel); border: 1px solid var(--npwifi-line); border-radius: 8px; display: flex; flex-direction: column; gap: 18px; justify-content: center; padding: 18px; }
.npwifi-qr-shell { align-items: center; aspect-ratio: 1 / 1; background: #ffffff; border: 1px dashed #a9c1dc; border-radius: 8px; display: flex; justify-content: center; margin: 0 auto; max-width: 292px; padding: 22px; position: relative; width: 100%; }
.npwifi-qr-placeholder { color: var(--npwifi-muted); font-weight: 900; line-height: 1.45; max-width: 190px; text-align: center; }
.npwifi-qr-placeholder[hidden] { display: none; }
.npwifi-qr-code { align-items: center; display: flex; justify-content: center; max-width: 232px; width: 100%; }
.npwifi-qr-code canvas, .npwifi-qr-code img { display: block; height: auto !important; max-width: 100%; width: 100% !important; }
.npwifi-preview-actions { justify-content: center; }
.npwifi-print-sheet { display: none; }
@media (max-width: 780px) {
	.npwifi-shell { padding: 18px; }
	.npwifi-heading { align-items: flex-start; }
	.npwifi-generator-card { grid-template-columns: 1fr; }
	.npwifi-password-row { flex-direction: column; }
	.npwifi-primary-button, .npwifi-secondary-button, .npwifi-ghost-button { width: 100%; }
}
@page { margin: 0; size: A4 portrait; }
@media print {
	html, body { background: #ffffff !important; height: 297mm; margin: 0 !important; padding: 0 !important; width: 210mm; }
	body * { visibility: hidden !important; }
	.npwifi-printing .npwifi-print-sheet, .npwifi-printing .npwifi-print-sheet * { visibility: visible !important; }
	.npwifi-printing .npwifi-print-sheet { align-items: center; background: #ffffff; display: flex; height: 297mm; justify-content: center; left: 0; padding: 0; position: fixed; top: 0; width: 210mm; z-index: 999999; }
	.npwifi-print-template { height: 248.77mm; position: relative; width: 189.31mm; }
	.npwifi-print-template svg { display: block; height: 100%; width: 100%; }
}
