:root { color-scheme: light dark; --color-red: light-dark(#FF3B30, #FF453A); --color-orange: light-dark(#FF9500, #FF9F0A); --color-yellow: light-dark(#FFCC00, #FFD60A); --color-green: light-dark(#30D158, #30D158); --color-mint: light-dark(#00C7BE, #63E6E2); --color-teal: light-dark(#30B0C7, #40C8E0); --color-cyan: light-dark(#32ADE6, #64D2FF); --color-blue: light-dark(#007AFF, #0A84FF); --color-indigo: light-dark(#5856D6, #5E5CE6); --color-purple: light-dark(#AF52DE, #BF5AF2); --color-pink: light-dark(#FF2D55, #FF375F); --color-brown: light-dark(#A2845E, #AC8E68); --color-gray: #8E8E93; --color-gray2: light-dark(#AEAEB2, #636366); --color-gray3: light-dark(#C7C7CC, #48484A); --color-gray4: light-dark(#D1D1D6, #3A3A3C); --color-gray5: light-dark(#E5E5EA, #2C2C2E); --color-gray6: light-dark(#F2F2F7, #1C1C1E); --color-label: light-dark(#000000, #EEEEEE); --color-label-secondary: light-dark( rgba(60, 60, 67, 0.78), rgba(235, 235, 245, 0.6) ); --color-label-tertiary: light-dark( rgba(60, 60, 67, 0.5), rgba(235, 235, 245, 0.3) ); --color-label-quaternary: light-dark( rgba(60, 60, 67, 0.35), rgba(235, 235, 245, 0.18) ); --color-link: light-dark(#007AFF, #0984FF); --color-separator: light-dark( rgba(60, 60, 67, 0.20), rgba(84, 84, 88, 0.65) ); --color-bg: light-dark(#FFFFFF, #111111); --color-bg-secondary: light-dark(#F2F2F7, #1C1C1E); --color-bg-tertiary: light-dark(#FFFFFF, #2C2C2E); } *, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: "Inter", "Segoe UI", system-ui, -apple-system, sans-serif; color: var(--color-label); background: var(--color-bg); accent-color: var(--color-blue); -webkit-font-smoothing: antialiased; } main { max-inline-size: 540px; margin-block-start: 80px; margin-inline: auto; padding-inline: 20px; } .sr-only { position: absolute; inline-size: 1px; block-size: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; } .search-form { display: flex; .search-input-wrap { flex: 1; position: relative; } .search-icon { position: absolute; inset-inline-start: 12px; inset-block-start: 50%; translate: 0 -50%; color: var(--color-label-tertiary); font-size: 14px; pointer-events: none; } input { inline-size: 100%; block-size: 38px; padding-inline: 34px 12px; border: 1px solid var(--color-separator); border-radius: 6px; font-size: 14px; font-family: inherit; color: var(--color-label); background: var(--color-bg); &:focus-visible { outline: 2px solid var(--color-blue); outline-offset: -1px; } &::placeholder { color: var(--color-label-tertiary); } } } .ip-display { text-align: center; font-size: clamp(28px, 6vw, 42px); font-weight: 200; margin-block: 28px 20px; letter-spacing: -0.5px; overflow-wrap: break-word; word-break: break-all; } .info-table { inline-size: 100%; border-collapse: collapse; table-layout: fixed; th, td { padding-block: 10px; border-block-start: 1px solid var(--color-separator); font-size: 15px; vertical-align: top; overflow-wrap: break-word; } tr:last-child th, tr:last-child td { border-block-end: 1px solid var(--color-separator); } th { inline-size: 42%; padding-inline: 24px 32px; font-weight: 600; color: var(--color-label); text-align: start; } .bool-true { color: var(--color-green); } .bool-false { color: var(--color-label-secondary); } } .faq { margin-block-start: 48px; .faq-title { font-size: 22px; font-weight: 600; margin-block-end: 16px; } summary { padding-block: 12px; font-size: 15px; font-weight: 600; color: var(--color-label); cursor: pointer; list-style: disclosure-closed inside; &::marker { color: var(--color-label-secondary); } } details[open] > summary { list-style: disclosure-open inside; } .faq-content { padding-block-end: 16px; font-size: 14px; line-height: 1.6; color: var(--color-label-secondary); p { margin-block-end: 12px; &:last-child { margin-block-end: 0; } } a { color: var(--color-link); text-decoration: none; &:hover { text-decoration: underline; } } code { font-family: ui-monospace, "SF Mono", "Cascadia Code", "Segoe UI Mono", Menlo, Consolas, monospace; font-size: 0.9em; padding-inline: 4px; padding-block: 1px; border-radius: 4px; background: var(--color-bg-secondary); } pre { margin-block-end: 12px; padding: 12px; border-radius: 6px; background: var(--color-bg-secondary); overflow-x: auto; &:last-child { margin-block-end: 0; } code { padding: 0; border-radius: 0; background: none; font-size: 13px; line-height: 1.5; } } ul { margin-block-end: 12px; padding-inline-start: 20px; &:last-child { margin-block-end: 0; } li { margin-block-end: 6px; &:last-child { margin-block-end: 0; } } } } } .error-banner { text-align: center; margin-block: 28px; padding: 16px 20px; border-radius: 8px; background: light-dark(#FFF3F3, #3A1C1C); border: 1px solid var(--color-red); color: var(--color-red); font-size: 15px; font-weight: 600; } .error-page { text-align: center; padding-block-start: 60px; } .error-code { font-size: clamp(64px, 15vw, 120px); font-weight: 200; letter-spacing: -2px; color: var(--color-label-tertiary); line-height: 1; } .error-status { font-size: 20px; font-weight: 600; margin-block-start: 8px; color: var(--color-label); } .error-detail { font-size: 15px; margin-block-start: 12px; color: var(--color-label-secondary); } .error-home-link { display: inline-block; margin-block-start: 28px; padding: 10px 24px; border-radius: 8px; background: var(--color-blue); color: #FFFFFF; font-size: 15px; font-weight: 600; text-decoration: none; &:hover { text-decoration: none; opacity: 0.85; } } .site-footer { max-inline-size: 700px; margin-block-start: 64px; margin-inline: auto; padding-inline: 20px; padding-block-end: 48px; border-block-start: 1px solid var(--color-separator); font-size: 13px; line-height: 1.6; color: var(--color-label-secondary); .footer-inner { display: flex; justify-content: space-between; align-items: flex-start; gap: 24px; padding-block-start: 24px; } .footer-left { text-align: start; } .footer-right { flex-shrink: 0; } a { color: var(--color-link); text-decoration: none; &:hover { text-decoration: underline; } } .footer-license { margin-block-end: 8px; } .footer-links { margin-block-end: 16px; } .footer-sep { margin-inline: 8px; color: var(--color-label-tertiary); } .footer-attribution { p { margin-block-end: 6px; } ul { list-style: none; display: flex; flex-wrap: wrap; justify-content: flex-start; gap: 4px 16px; } } .footer-lang { margin-block-start: 0; } .lang-select { appearance: none; padding: 6px 28px 6px 10px; border: 1px solid var(--color-separator); border-radius: 6px; font-family: inherit; font-size: 13px; color: var(--color-label-secondary); background-color: var(--color-bg); background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%238E8E93'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 10px center; cursor: pointer; &:focus-visible { outline: 2px solid var(--color-blue); outline-offset: -1px; } } } [dir="rtl"] .lang-select { background-position: left 10px center; padding: 6px 10px 6px 28px; } @media (max-width: 480px) { main { margin-block-start: 40px; padding-inline: 16px; } .search-form input { block-size: 44px; } .ip-display { margin-block: 20px 16px; } .info-table th, .info-table td { font-size: 14px; } .faq { margin-block-start: 32px; summary { font-size: 14px; } .faq-content { font-size: 13px; } } .site-footer { margin-block-start: 40px; padding-inline: 16px; padding-block-end: 32px; font-size: 12px; .footer-inner { flex-direction: column; align-items: flex-start; } .footer-lang { margin-block-start: 16px; } } .error-banner { font-size: 14px; margin-block: 20px; } .error-page { padding-block-start: 40px; } .error-status { font-size: 18px; } .error-detail { font-size: 14px; } } @media (max-width: 360px) { .info-table th { inline-size: 36%; padding-inline: 12px 16px; } } @media (prefers-contrast: more) { :root { --color-separator: light-dark( rgba(0, 0, 0, 0.5), rgba(255, 255, 255, 0.5) ); --color-label-secondary: light-dark( rgba(0, 0, 0, 0.75), rgba(255, 255, 255, 0.75) ); --color-label-tertiary: light-dark( rgba(0, 0, 0, 0.5), rgba(255, 255, 255, 0.5) ); } .search-form input { border-width: 2px; } } @media (prefers-reduced-motion: reduce) { *, *::before, *::after { transition-duration: 0.01ms !important; animation-duration: 0.01ms !important; scroll-behavior: auto !important; } }