diff --git a/web/index.html b/web/index.html index 6998911..269a25a 100644 --- a/web/index.html +++ b/web/index.html @@ -553,6 +553,76 @@ section { } } +/* --- Lightbox --- */ +.lightbox { + position: fixed; + inset: 0; + z-index: 10000; + background: rgba(0, 0, 0, 0.92); + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 1rem; + opacity: 0; + visibility: hidden; + transition: opacity 0.2s, visibility 0.2s; + cursor: zoom-out; +} + +.lightbox[aria-hidden="false"] { + opacity: 1; + visibility: visible; +} + +.lightbox-img { + max-width: 90vw; + max-height: 80vh; + object-fit: contain; + border: 1px solid rgba(0, 229, 255, 0.25); + border-radius: var(--radius); + box-shadow: 0 0 40px rgba(0, 229, 255, 0.08), 0 0 80px rgba(0, 0, 0, 0.5); + cursor: default; +} + +.lightbox-caption { + font-family: var(--font-mono); + font-size: 0.82rem; + color: var(--text-muted); + text-align: center; + max-width: 600px; +} + +.lightbox-caption .caption-label { + color: var(--cyan); + font-weight: 600; +} + +.lightbox-close { + position: absolute; + top: 1rem; + right: 1.5rem; + background: none; + border: 1px solid var(--border); + border-radius: var(--radius); + color: var(--text-muted); + font-family: var(--font-mono); + font-size: 1.25rem; + width: 36px; + height: 36px; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + transition: color 0.15s, border-color 0.15s, box-shadow 0.15s; +} + +.lightbox-close:hover { + color: var(--cyan); + border-color: rgba(0, 229, 255, 0.4); + box-shadow: var(--glow-cyan); +} + /* --- Architecture section --- */ .arch-section { border-top: 1px solid var(--border); @@ -719,6 +789,24 @@ td:first-child { font-size: 0.82rem; } +/* --- Security section --- */ +.security-section { + border-top: 1px solid var(--border); +} + +.security-grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 1.25rem; +} + +@media (max-width: 768px) { + .security-grid { + grid-template-columns: 1fr; + gap: 1rem; + } +} + /* --- Install section --- */ .install-section { border-top: 1px solid var(--border); @@ -998,7 +1086,7 @@ td:first-child {
ublproxy decrypts your traffic to block ads. That power comes with responsibilities and limitations.
+All HTTPS traffic is decrypted, inspected, and re-encrypted. That's the point — but it means you should only run this on a network you control. Self-hosted, not cloud.
+Banking apps, security tools, and some system services use certificate pinning and will reject MITM certs. Add passthrough rules (@@||domain^) for these.
iOS and Android don't support HTTPS proxy connections. Mobile devices use HTTP CONNECT on port 8080 — the target hostname is visible on your LAN, though the tunneled content stays TLS-encrypted.
+