:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}html{height:100%;overflow-x:hidden}body{margin:0;padding:0;min-width:320px;min-height:100vh;height:100%;overflow-x:hidden;-webkit-overflow-scrolling:touch}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media(prefers-color-scheme:light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}.welcome-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eea,#764ba2);padding:20px}.welcome-card{background:#fff;border-radius:16px;box-shadow:0 20px 60px #0000004d;padding:24px 32px;max-width:350px;width:100%;height:420px;text-align:center;display:flex;flex-direction:column;justify-content:space-between}.logo-section{margin-bottom:12px}.welcome-logo{width:150px;height:auto;animation:fadeIn .6s ease-in}.welcome-title{font-size:28px;font-weight:700;color:#1e293b;margin:0 0 8px;animation:fadeIn .8s ease-in}.welcome-tagline{font-size:14px;color:#64748b;line-height:1.4;margin:0 0 20px;animation:fadeIn 1s ease-in}.login-form{display:flex;flex-direction:column;gap:12px;animation:fadeIn 1.2s ease-in}.form-group{display:grid;grid-template-columns:100px auto;gap:12px;align-items:center}.form-group label{font-size:14px;font-weight:600;color:#475569;text-align:left}.form-input{flex:1;max-width:200px;padding:10px 12px;font-size:14px;border:2px solid #e2e8f0;border-radius:8px;outline:none;transition:all .2s;box-sizing:border-box}.form-input:focus{border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.form-input:disabled{background-color:#f1f5f9;cursor:not-allowed;color:#94a3b8}.enter-button{margin-top:8px;padding:12px 32px;font-size:16px;font-weight:600;color:#fff;background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:8px;cursor:pointer;transition:all .3s;box-shadow:0 4px 12px #667eea4d}.enter-button:hover{transform:translateY(-2px);box-shadow:0 6px 20px #667eea66}.enter-button:active{transform:translateY(0)}@keyframes fadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.welcome-card{padding:24px 20px;height:auto;min-height:420px}.welcome-title{font-size:24px}.welcome-tagline{font-size:13px}.form-group{flex-direction:column;align-items:flex-start;gap:6px}.form-group label{min-width:auto;text-align:left}.form-input{width:100%}}.header{background-color:#2c3e50;color:#fff;padding:.5rem 0;box-shadow:0 2px 4px #0000001a;position:fixed;top:0;left:0;right:0;z-index:1000;width:100%;transform:translateZ(0);-webkit-transform:translate3d(0,0,0);backface-visibility:hidden;-webkit-backface-visibility:hidden;will-change:transform;perspective:1000;-webkit-perspective:1000}.header-container{width:85%;max-width:1300px;margin:0 auto;padding:0 1rem;display:flex;justify-content:space-between;align-items:center;gap:2rem}.logo{flex:1;min-width:0}.logo a{display:flex;align-items:center;gap:.75rem;font-size:1.1rem;font-weight:600;color:#fff;text-decoration:none;transition:color .3s ease}.logo a:hover{color:#3498db}.logo a span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.logo-img{height:30px;width:auto;flex-shrink:0;filter:brightness(1.2)}.nav-menu{display:flex;gap:1rem;flex-shrink:0}.nav-link{color:#fff;text-decoration:none;font-size:1rem;transition:color .3s ease;padding:.5rem 1rem;border-radius:4px;white-space:nowrap}.nav-link:hover{color:#3498db;background-color:#3498db1a}.logout-button{background:none;border:none;color:#fff;cursor:pointer;padding:.5rem;border-radius:4px;transition:all .3s ease;display:flex;align-items:center;justify-content:center}.logout-button:hover{color:#3498db;background-color:#3498db1a}@media(max-width:768px){.header{padding:.75rem 0}.header-container{width:95%;padding:0 .5rem;flex-direction:column;gap:.75rem}.logo{width:100%}.logo a{font-size:.9rem;gap:.5rem;justify-content:center}.logo a span{white-space:normal;line-height:1.4;text-align:center}.logo-img{height:30px}.nav-menu{gap:.5rem;width:100%;justify-content:center}.nav-link{font-size:.9rem;padding:.4rem .8rem}}.footer{background-color:#2c3e50;color:#fff;padding:.5rem 0;position:fixed;bottom:0;left:0;right:0;z-index:100;width:100%;transform:translateZ(0);-webkit-transform:translate3d(0,0,0);backface-visibility:hidden;-webkit-backface-visibility:hidden;will-change:transform;perspective:1000;-webkit-perspective:1000}.footer-container{width:75%;margin:0 auto;text-align:center}.footer p{margin:0;font-size:.95rem}@media(max-width:768px){.footer{padding:.6rem 0}.footer-container{width:95%;padding:0 .5rem}.footer p{font-size:.8rem;line-height:1.4}}:root{--bg: #f8fafc;--card: #ffffff;--border: #e5e7eb;--text: #0f172a;--muted: #64748b;--primary: #2563eb;--primary-dark: #1d4ed8;--success: #10b981;--warning: #f59e0b;--danger: #ef4444;--radius: 14px;--shadow: 0 6px 18px rgba(15, 23, 42, .08);--panel-blue: #eff6ff;--panel-green: #ecfdf5;--panel-purple: #f5f3ff;--panel-gray: #f8fafc}.speed-test-container{padding:7rem 2rem 2rem;max-width:1400px;margin:0 auto;background:var(--bg);min-height:calc(100vh - 100px)}.page-header{position:fixed;top:60px;left:0;right:0;z-index:100;display:flex;justify-content:space-between;align-items:center;padding:.75rem 2rem;max-width:1400px;margin:0 auto;background:var(--card);border:1px solid var(--border);border-radius:0 0 var(--radius) var(--radius);box-shadow:var(--shadow)}.header-message{position:absolute;left:50%;transform:translate(-50%);background:#10b981;color:#fff;padding:.5rem 1.5rem;border-radius:8px;font-size:.9rem;font-weight:500;animation:slideDown .3s ease-out;box-shadow:0 4px 6px #10b9814d}@keyframes slideDown{0%{opacity:0;transform:translate(-50%) translateY(-10px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.app-title{font-size:1.25rem;font-weight:700;font-family:system-ui,-apple-system,sans-serif;margin:0;display:flex;align-items:center;gap:.5rem;color:var(--text)}.app-title svg{color:var(--primary)}.action-buttons{display:flex;gap:.6rem;flex-wrap:wrap}.copy-button,.download-button,.test-all-button,.reset-button,.report-button{padding:.45rem .9rem;font-size:.82rem;font-weight:600;border-radius:10px;cursor:pointer;display:flex;align-items:center;gap:.4rem;transition:all .2s ease}.test-all-button{background:var(--primary);border:none;color:#fff}.test-all-button:hover{background:var(--primary-dark)}.reset-button{background:#f1f5f9;border:1px solid var(--border);color:var(--text)}.reset-button:hover{background:#e2e8f0}.download-button{background:var(--success);border:none;color:#fff}.download-button:hover{opacity:.9}.copy-button{background:#334155;border:none;color:#fff}.copy-button:hover{opacity:.92}.report-button{background:#ef4444;border:none;color:#fff}.report-button:hover{background:#dc2626}.section-title{font-size:1.35rem;font-weight:700;font-family:system-ui,-apple-system,sans-serif;margin:2rem 0 1rem;padding:0;text-align:center!important;color:var(--text);width:100%;display:block;clear:both;position:relative;left:0;right:0}.section-title-compact{font-size:1rem;font-weight:700;font-family:system-ui,-apple-system,sans-serif;margin:1.5rem 0 .6rem;text-align:center;color:var(--text)}.test-grid{padding:1.25rem;border-radius:var(--radius);background:var(--panel-blue);border:1px solid #dbeafe}.table-container{padding:.5rem;border-radius:var(--radius);background:var(--panel-green);border:2px solid #10b981;box-shadow:var(--shadow)}.table-container-compact{padding:1rem;border-radius:var(--radius);background:#fff;border:2px solid #e5e7eb;box-shadow:var(--shadow)}.container-browser-diagnostics{padding:.5rem;border-radius:var(--radius);background:#fff;border:2px solid #f59e0b;box-shadow:var(--shadow)}.container-server-version{padding:.5rem;border-radius:var(--radius);background:#fff;border:2px solid #3b82f6;box-shadow:var(--shadow)}.container-server-infrastructure{padding:.5rem;border-radius:var(--radius);background:#fff;border:2px solid #8b5cf6;box-shadow:var(--shadow)}.container-client-info{padding:.5rem;border-radius:var(--radius);background:#fff;border:2px solid #14b8a6;box-shadow:var(--shadow)}.test-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:1rem;margin-bottom:2rem}.test-card{background:#ffffffe6;border:1px solid var(--border);border-radius:var(--radius);padding:1rem;box-shadow:var(--shadow);transition:.2s ease}.test-card:hover{border-color:var(--primary);transform:translateY(-2px)}.test-card h2{font-size:.9rem;font-weight:700;margin-bottom:.75rem;display:flex;justify-content:center;gap:.4rem;align-items:center;color:var(--text)}.test-card h2 svg:first-child{color:var(--primary)}.test-card:nth-child(1) h2 svg{color:#3b82f6}.test-card:nth-child(2) h2 svg{color:#f59e0b}.test-card:nth-child(3) h2 svg{color:#10b981}.test-card:nth-child(4) h2 svg{color:#8b5cf6}.test-card:nth-child(5) h2 svg{color:#14b8a6}.test-card p{font-size:1.1rem;font-weight:800;text-align:center;margin:.5rem 0;color:var(--primary)}.conn-details{font-size:.8rem;color:var(--muted);text-align:center}.retry-button{width:100%;padding:.45rem;border-radius:10px;border:1px solid var(--border);background:#f1f5f9;color:var(--text);font-size:.82rem;font-weight:600;cursor:pointer;display:flex;justify-content:center;gap:.4rem;align-items:center;transition:all .2s ease}.retry-button:hover{background:var(--primary);border-color:var(--primary);color:#fff}.history-table{width:100%;border-collapse:collapse;font-size:.85rem;background:#fff;border-radius:var(--radius);overflow:hidden;border:2px solid #10b981}.history-table thead{background:#f1f5f9}.history-table th,.history-table td{padding:.65rem;border-bottom:1px solid var(--border);text-align:center;color:var(--text)}.history-table th svg{vertical-align:middle}.history-table th:nth-child(3) svg{color:#14b8a6}.history-table th:nth-child(4) svg{color:#8b5cf6}.history-table th:nth-child(5) svg{color:#10b981}.history-table th:nth-child(6) svg{color:#f59e0b}.history-table tbody tr:nth-child(2n){background:#f8fafc}.history-table tbody tr:nth-child(odd){background:#fff}.history-table tbody tr:hover{background:#e0f2fe}.no-tests{padding:1rem;text-align:center;color:var(--muted)}.server-version-table{width:100%;border-collapse:collapse;font-size:.85rem;background:#fff;border-radius:var(--radius);overflow:hidden;border:2px solid #3b82f6}.server-version-table td{padding:.65rem;border-bottom:1px solid var(--border)}.server-version-table tbody tr:nth-child(2n){background:#f8fafc}.server-version-table tbody tr:nth-child(odd){background:#fff}.server-version-table tbody tr:hover{background:#e0f2fe}.server-version-table td:first-child{width:35%;font-weight:700;color:var(--muted)}.server-version-table td:last-child{width:65%;color:var(--text)}.server-infrastructure-table{width:100%;border-collapse:collapse;font-size:.85rem;background:#fff;border-radius:var(--radius);overflow:hidden;border:2px solid #8b5cf6}.server-infrastructure-table td{padding:.65rem;border-bottom:1px solid var(--border)}.server-infrastructure-table tbody tr:nth-child(2n){background:#f8fafc}.server-infrastructure-table tbody tr:nth-child(odd){background:#fff}.server-infrastructure-table tbody tr:hover{background:#e0f2fe}.server-infrastructure-table td:first-child{width:35%;font-weight:700;color:var(--muted)}.server-infrastructure-table td:last-child{width:65%;color:var(--text)}.client-info-table{width:100%;border-collapse:collapse;font-size:.85rem;background:#fff;border-radius:var(--radius);overflow:hidden;border:2px solid #14b8a6}.client-info-table td{padding:.65rem;border-bottom:1px solid var(--border)}.client-info-table tbody tr:nth-child(2n){background:#f8fafc}.client-info-table tbody tr:nth-child(odd){background:#fff}.client-info-table tbody tr:hover{background:#e0f2fe}.client-info-table td:first-child{width:35%;font-weight:700;color:var(--muted)}.client-info-table td:last-child{width:65%;color:var(--text)}.browser-diagnostics-table{width:100%;border-collapse:collapse;font-size:.85rem;background:#fff;border-radius:var(--radius);overflow:hidden;border:2px solid #f59e0b}.browser-diagnostics-table td{padding:.65rem;border-bottom:1px solid var(--border)}.browser-diagnostics-table tbody tr:nth-child(2n){background:#f8fafc}.browser-diagnostics-table tbody tr:nth-child(odd){background:#fff}.browser-diagnostics-table tbody tr:hover{background:#e0f2fe}.browser-diagnostics-table td:first-child{width:35%;font-weight:700;color:var(--muted)}.browser-diagnostics-table td:last-child{width:65%;color:var(--text)}.info-table-compact{width:100%;border-collapse:collapse;font-size:.82rem;background:#fff}.info-table-compact tbody tr:nth-child(2n){background:#f8fafc}.info-table-compact tbody tr:nth-child(odd){background:#fff}.info-table-compact td{padding:.55rem .75rem;border-bottom:1px solid var(--border)}.info-table-compact td:first-child{width:35%;font-weight:700;color:var(--muted)}.info-table-compact td:last-child{width:65%;color:var(--text)}.status-badge{background:var(--success);color:#fff;padding:.25rem .85rem;border-radius:999px;font-size:.75rem;font-weight:700}.footer-note{margin-top:2rem;font-size:.8rem;color:var(--muted);text-align:center}@media(max-width:1024px){.test-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:768px){.test-grid{grid-template-columns:1fr}.speed-test-container{padding:11rem 1rem 1rem}.page-header{padding:.75rem 1rem;flex-direction:column;gap:.75rem;align-items:stretch}.app-title{font-size:1rem;justify-content:center;text-align:center;line-height:1.4;flex-wrap:wrap}.action-buttons{justify-content:center;width:100%;gap:.5rem;flex-wrap:wrap}.copy-button,.download-button,.test-all-button,.reset-button,.report-button{flex:1 1 calc(50% - .25rem);min-width:0;padding:.6rem .7rem;font-size:.8rem;justify-content:center}.copy-button svg,.download-button svg,.test-all-button svg,.reset-button svg,.report-button svg{width:15px;height:15px}.section-title{font-size:1.15rem}.table-container{overflow-x:auto}.history-table,.browser-diagnostics-table,.server-version-table,.server-infrastructure-table{font-size:.75rem}.history-table th,.history-table td,.browser-diagnostics-table td,.server-version-table td,.server-infrastructure-table td{padding:.5rem .3rem;font-size:.75rem}.history-table th{font-size:.7rem}}
