/* Nercone TLS Test — shared styles. Palette uses CSS vars from /assets/css/style.css. */ /* ------ Landing page ------ */ .tls-landing { min-height: calc(100vh - 220px); display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 40px 24px; text-align: center; gap: 0; } .tls-landing-title { margin: 0 0 8px 0; font-size: clamp(40pt, 6vw, 64pt); line-height: 1.1; letter-spacing: -0.01em; } .tls-landing-subtitle { margin: 0 0 40px 0; font-size: 13pt; } .tls-landing-form { display: flex; align-items: stretch; gap: 10px; width: min(560px, 100%); margin: 0 auto; } .tls-landing-input { flex: 1; min-width: 0; background-color: #3a3a3a; color: var(--color-light-grey); border: 1px solid #4a4a4a; border-radius: 6px; padding: 12px 16px; font-family: inherit; font-size: 13pt; } .tls-landing-input::placeholder { color: var(--color-light-grey-alt); } .tls-landing-input:focus { outline: none; border-color: var(--color-bright-blue); } .tls-landing-submit { background-color: #0096D0; color: var(--color-white); border: none; border-radius: 6px; padding: 12px 28px; font-family: inherit; font-size: 13pt; transition: background-color 0.15s ease; } .tls-landing-submit:hover { background-color: #00B4F0; } .tls-landing-submit:active { background-color: #0080B8; } .tls-landing-error { margin-top: 12px; } .tls-landing-links { margin-top: 180px; display: flex; gap: 20px; justify-content: center; flex-wrap: wrap; } .tls-landing-links a { color: var(--color-light-grey-alt); text-decoration: underline; } .tls-landing-links a:hover { color: var(--color-light-grey); } .tls-aux-section { max-width: 900px; margin: 0 auto; scroll-margin-top: 80px; } .tls-aux-section ul { padding-left: 20px; } .tls-aux-section li { margin: 4px 0; line-height: 1.6; } /* ------ Status page ------ */ .tls-status { display: flex; flex-direction: column; align-items: center; padding: 24px 16px 40px; text-align: center; } .tls-status-subtitle { margin: 4px 0 28px 0; font-size: 14pt; } .tls-status-progress { width: min(800px, 100%); margin: 0 auto 28px auto; } .tls-status-phase { margin: 0 0 8px 0; } .tls-status-testid { margin: 10px 0 0 0; } .tls-progress-track { width: 100%; height: 6px; background-color: #2a2a2a; border-radius: 3px; overflow: hidden; } .tls-progress-bar { height: 100%; background-color: var(--color-bright-green); transition: width 0.25s ease; } /* Status-page log block wrapper (the lighter-gray card in Image 2) */ .tls-log-wrap { width: min(1100px, 100%); margin: 0 auto; background-color: var(--color-dark-grey-alt); border-radius: 8px; padding: 18px 22px; text-align: left; } /* ------ Log (shared between status + results) ------ */ .tls-log { font-family: "MesloLGS Nerd Font", "MesloLGS NF", "Menlo", "Consolas", monospace; font-size: 10.5pt; line-height: 1.55; max-height: 60vh; overflow-y: auto; } .tls-log-row { display: grid; grid-template-columns: 13em minmax(28em, auto) 1fr; column-gap: 16px; padding: 1px 0; word-break: break-word; align-items: baseline; } .tls-log-cat { white-space: nowrap; } .tls-log-msg { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .tls-log-msg > .font-bold { margin-right: 6px; } .tls-log-detail { min-width: 0; } /* narrower viewports: collapse to 2 rows per entry */ @media (max-width: 900px) { .tls-log-row { grid-template-columns: 1fr; padding: 3px 0; } .tls-log-msg { white-space: normal; } } /* ------ Results page ------ */ /* The banner header that replaces the site header on results pages. * The global `header { position: fixed }` rule in https://assets.nercone.dev/css/style.css is * overridden here because our banner flows inline — unlike the site header * which floats over everything. We also neutralise the 60px top-padding * that
carries to clear the (now absent) floating site header. */ .tls-results-header { position: static; display: block; background-color: var(--color-dark-grey-alt); padding: 28px clamp(16px, 4vw, 40px) 0; margin-bottom: 0; border-bottom: 1px solid var(--color-dark-grey); backdrop-filter: none; } .tls-results-header::before { /* the global header::before adds a blurred backdrop — suppress it */ display: none !important; } .tls-results-header + main { padding-top: 24px; } .tls-results-head { display: flex; align-items: center; gap: 20px; flex-wrap: wrap; } .tls-rank-badge { width: 110px; height: 110px; border-radius: 50%; background-color: currentColor; display: flex; flex-direction: column; align-items: center; justify-content: center; flex-shrink: 0; box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.05); } .tls-rank-badge > * { color: #0a0a0a; } .tls-rank-letters { font-size: 30pt; font-weight: 600; line-height: 1; letter-spacing: -0.02em; } .tls-rank-score { font-size: 10pt; font-weight: 600; margin-top: 2px; opacity: 0.75; } .tls-results-meta { min-width: 220px; } .tls-results-target { margin: 0 0 4px 0; font-size: 22pt; font-weight: 700; word-break: break-all; } .tls-results-metaline { margin: 0 0 2px 0; font-size: 10.5pt; display: flex; gap: 8px; flex-wrap: wrap; } .tls-results-testid { margin: 4px 0 0 0; font-size: 10pt; } .tls-results-testid code { padding: 0; } .tls-results-actions { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; } .tls-btn { display: inline-block; padding: 12px 22px; border-radius: 6px; border: none; font-family: inherit; font-size: 11pt; text-decoration: none; transition: background-color 0.15s ease, color 0.15s ease; line-height: 1.2; } .tls-btn-secondary { background-color: #3a3a3a; color: var(--color-light-grey); } .tls-btn-secondary:hover { background-color: #4a4a4a; } .tls-btn-primary { background-color: #0096D0; color: var(--color-white); } .tls-btn-primary:hover { background-color: #00B4F0; } .tls-btn-primary.is-done { background-color: var(--color-green); } /* Tabs — sit at the bottom of the results header banner. */ .tls-results-header .tls-tabs { margin: 24px -1px 0 -1px; padding: 0; } .tls-tabs { display: flex; flex-wrap: wrap; gap: 0; margin: 12px 0 16px 0; border-bottom: 1px solid var(--color-dark-grey); } .tls-tab { background: transparent; color: var(--color-light-grey-alt); border: none; border-bottom: 2px solid transparent; padding: 10px 18px 10px 18px; font-family: inherit; font-size: 12pt; transition: color 0.15s ease, border-color 0.15s ease; margin-bottom: -1px; } .tls-tab:hover { color: var(--color-light-grey); } .tls-tab.is-active { color: var(--color-white); font-weight: 600; border-bottom-color: var(--color-light-grey); } .tls-tab-panels { padding: 0 clamp(16px, 4vw, 40px) 40px; } .tls-tab-panel { display: none; } .tls-tab-panel.is-active { display: block; } /* Structured sections inside each tab panel. */ .tls-section { margin-top: 24px; } .tls-section:first-child { margin-top: 4px; } .tls-section-title { font-size: 14pt; font-weight: 600; margin: 0 0 10px 0; padding-bottom: 6px; border-bottom: 1px solid #3a3a3a; } /* Standard result tables. */ .tls-table { width: 100%; border-collapse: collapse; font-size: 11pt; background-color: #202020; border-radius: 6px; overflow: hidden; color: var(--color-light-grey); } .tls-table th, .tls-table td { padding: 10px 12px; text-align: left; vertical-align: top; border-bottom: 1px solid #2c2c2c; } .tls-table thead th { background-color: #2a2a2a; color: var(--color-light-grey-alt); font-weight: 500; font-size: 10.5pt; text-transform: uppercase; letter-spacing: 0.03em; } .tls-table tbody tr:last-child th, .tls-table tbody tr:last-child td { border-bottom: none; } .tls-table code { font-size: 10.5pt; background-color: transparent; padding: 0; } /* Cipher suites per version. */ .tls-cipher-block { margin-top: 14px; } .tls-cipher-version { margin: 0 0 6px 0; font-size: 11.5pt; color: var(--color-light-grey); font-weight: 600; } .tls-cipher-list { list-style: none; padding: 10px 14px; margin: 0; background-color: #202020; border-radius: 6px; display: grid; grid-template-columns: repeat(auto-fill, minmax(360px, 1fr)); gap: 4px 16px; } .tls-cipher-list code { font-size: 10pt; color: var(--color-light-grey); background: transparent; padding: 0; } /* JSON tab. */ .tls-json-meta { display: flex; gap: 10px; align-items: center; justify-content: space-between; flex-wrap: wrap; margin-bottom: 10px; } .tls-raw { max-height: 640px; overflow: auto; background-color: #202020; padding: 14px 16px; border-radius: 6px; font-size: 10pt; margin: 0; } .tls-raw code { white-space: pre; background: transparent; padding: 0; } /* Print stylesheet — "PDFをダウンロード" uses window.print(). Hide chrome and * expand all tab panels so the resulting PDF contains every finding. */ @media print { html, body { background: #ffffff !important; color: #101010 !important; } footer, .tls-tabs, .tls-results-actions, #tls-copy-json, script, .tls-landing-links { display: none !important; } .tls-results-header { background: transparent !important; border: 0 !important; padding: 0 0 16px 0 !important; border-bottom: 1px solid #cccccc !important; } .tls-tab-panels { padding: 0 !important; } .tls-tab-panel { display: block !important; break-inside: avoid; page-break-inside: avoid; } .tls-tab-panel + .tls-tab-panel { margin-top: 16px; } .tls-section-title { color: #101010 !important; border-bottom: 1px solid #cccccc !important; } .tls-table, .tls-cipher-list, .tls-raw { background: #ffffff !important; color: #101010 !important; } .tls-table thead th, .tls-table th, .tls-table td { border-color: #cccccc !important; background: transparent !important; color: #101010 !important; } .tls-log-row { color: #101010 !important; border-bottom: 1px dotted #cccccc; padding: 4px 0; } .tls-rank-badge { print-color-adjust: exact; -webkit-print-color-adjust: exact; } .tls-results-target { color: #101010 !important; } a { color: #101010 !important; text-decoration: none !important; } }