.admin-page { margin: 0; background: var(--bg); color: var(--ink); }
.admin-topbar { max-width: 1380px; margin: auto; padding: 24px 40px; display: flex; align-items: center; justify-content: space-between; gap: 24px; }
.admin-topbar a { color: var(--ink); text-decoration: none; }
.admin-brand { display: flex; align-items: center; gap: 12px; font-weight: 700; letter-spacing: .1em; }
.admin-main { max-width: 1380px; margin: 24px auto 80px; padding: 0 40px; }
.admin-main h1 { font-size: clamp(30px, 4vw, 52px); font-weight: 600; line-height: 1.12; margin: 0 0 20px; letter-spacing: -.035em; }
.admin-main h2 { font-size: 26px; font-weight: 600; margin: 0; }
.admin-login { max-width: 490px; margin: 8vh auto; padding: 40px; }
.admin-login h1 { font-size: clamp(26px, 4vw, 36px); overflow-wrap: anywhere; }
.admin-login form { display: grid; gap: 22px; margin-top: 32px; }
.admin-login label { display: grid; gap: 8px; font-size: 14px; }
.admin-login input { width: 100%; min-width: 0; border: 1px solid #d9dfe1; border-radius: 4px; background: #fff; padding: 13px; font: inherit; }
.admin-login input:focus-visible, .admin-page a:focus-visible, .admin-page button:focus-visible { outline: 2px solid var(--cyan); outline-offset: 3px; }
.admin-submit { width: 100%; justify-content: space-between; }
.admin-main .admin-error { color: #a32222; }
.infra-summary { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; margin: 32px 0; }
.infra-summary article { background: #fff; box-shadow: var(--shadow-card); border-radius: 8px; padding: 26px; display: grid; gap: 10px; }
.infra-summary span, .infra-summary small { color: var(--muted); font-size: 13px; }
.infra-summary strong { font-size: 27px; font-weight: 600; }
.infra-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 28px; align-items: start; }
.infra-card { margin-bottom: 28px; min-width: 0; }
.infra-card header { display: flex; justify-content: space-between; align-items: start; gap: 20px; flex-wrap: wrap; margin-bottom: 24px; }
.infra-card .eyebrow { font-size: 11px; margin-bottom: 12px; }
.infra-badge { font-size: 12px; color: #397073; box-shadow: 0 2px 12px #1014160d; padding: 7px 12px; border-radius: 4px; }
.infra-details { margin: 20px 0; }
.infra-details > div { display: grid; grid-template-columns: minmax(130px, 32%) minmax(0, 1fr); gap: 20px; padding: 13px 0; border-bottom: 1px solid #edf0f1; font-size: 14px; }
.infra-details dt { color: var(--muted); }
.infra-details dd { margin: 0; overflow-wrap: anywhere; }
.infra-note, .infra-footnote { color: var(--muted); font-size: 12px; line-height: 1.65; }
.admin-sources { margin: 36px 0 54px; }
.admin-sources h3 { font-size: 23px; font-weight: 600; margin: 0; }
.admin-sources h3 a, .source-links a { color: var(--ink); text-decoration-color: var(--cyan); text-underline-offset: 4px; }
.source-metrics .source-date { font-size: 21px; }
.source-links { padding: 0; list-style: none; }
.source-links li { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px; padding: 10px 0; font-size: 14px; }
.source-links span { color: var(--muted); }
.project-tabs { display: flex; flex-wrap: wrap; gap: 10px; margin: 28px 0; }
.project-navigation-group { margin: 24px 0; }
.project-navigation-group > h2 { font-size: 13px; color: var(--muted); font-weight: 600; margin: 0 0 12px; }
.project-navigation-group .project-tabs { margin: 0; }
.projects-masonry { columns: 3 280px; column-gap: 28px; margin: 32px 0; }
.project-tile { display: inline-block; width: 100%; box-sizing: border-box; break-inside: avoid; margin: 0 0 28px; overflow-wrap: anywhere; }
.project-tile h2 { font-size: 32px; }
.project-tile h2 a { color: var(--ink); text-decoration: none; }
.project-tile-topics { padding-left: 18px; color: var(--muted); font-size: 14px; line-height: 1.8; }
.project-tile-open { display: flex; justify-content: space-between; align-items: center; gap: 18px; margin-top: 24px; color: var(--ink); text-decoration-color: var(--cyan); text-underline-offset: 4px; }
.project-tabs a { color: var(--ink); padding: 10px 14px; background: #fff; box-shadow: var(--shadow-card); border-radius: 5px; text-decoration: none; }
.project-tabs a[aria-current="page"] { box-shadow: var(--shadow); border-left: 3px solid var(--cyan); }
.project-filters form { display: flex; flex-wrap: wrap; align-items: end; gap: 18px; }
.project-filters label { display: grid; gap: 7px; font-size: 14px; max-width: 100%; }
.project-filters input[type="search"], .project-filters select { max-width: 100%; width: 290px; padding: 10px; border: 1px solid #d9dfe1; border-radius: 4px; background: #fff; color: var(--ink); font: inherit; }
.project-filters .project-check { display: flex; align-items: center; gap: 9px; padding-bottom: 10px; }
.project-check input { accent-color: var(--cyan); }
.project-filters details { margin-top: 22px; }
.project-record { padding: 24px 0; border-bottom: 1px solid #edf0f1; overflow-wrap: anywhere; }
.project-record h3 { font-size: 20px; font-weight: 600; margin: 8px 0; }
.project-record .infra-details { margin: 12px 0; }
.project-record .infra-details dt { max-height: 8em; overflow: auto; }
.project-links { display: flex; flex-wrap: wrap; gap: 12px 24px; padding-left: 20px; }
.project-hash { font: 12px Consolas, monospace; overflow-wrap: anywhere; }
.project-pagination { display: flex; justify-content: center; flex-wrap: wrap; gap: 24px; padding: 28px 0; }
.project-original { margin-top: 28px; overflow-wrap: anywhere; }
.project-original > p { font-size: 13px; line-height: 1.7; }
.journal-table-wrap { max-width: 100%; overflow-x: auto; }
.journal-table { width: 100%; min-width: 820px; border-collapse: collapse; font-size: 14px; text-align: left; }
.journal-table th, .journal-table td { padding: 16px 12px; vertical-align: top; border-bottom: 1px solid #edf0f1; }
.journal-table th { color: var(--muted); font-weight: 600; white-space: nowrap; }
.journal-table td:first-child { min-width: 260px; width: 46%; }
.journal-table td { overflow-wrap: anywhere; }
.journal-table strong { font-weight: 600; }
.journal-table details { margin-top: 12px; font-size: 12px; }
.journal-table summary { color: var(--muted); cursor: pointer; }
.journal-table dt { color: var(--muted); margin-top: 10px; }
.journal-table dd { margin: 4px 0 0; }
.journal-issn { min-width: 150px; font-family: Consolas, monospace; }
.whitelist-bar { display: grid; grid-template-columns: minmax(120px, 1fr) 2fr 70px; gap: 18px; align-items: center; margin: 22px 0; font-size: 14px; }
.whitelist-bar meter { width: 100%; height: 20px; accent-color: var(--cyan); }
.whitelist-bar meter::-webkit-meter-optimum-value { background: var(--cyan); }
.whitelist-bar meter::-moz-meter-bar { background: var(--cyan); }
.whitelist-bar a { text-align: right; }
.whitelist-category-table { min-width: 320px; }
.whitelist-category-table td:first-child { min-width: 0; width: auto; }
.comparison-kpis strong a { color: var(--ink); text-decoration-color: var(--cyan); text-underline-offset: 5px; }
.comparison-value { text-align: right; }
.comparison-category-table { min-width: 480px; }
@media (max-width: 540px) { .whitelist-bar { grid-template-columns: 1fr 60px; gap: 10px; } .whitelist-bar meter { grid-column: 1; grid-row: auto; } .whitelist-bar span { grid-column: 1 / -1; } }
.journal-filters input[type="search"], .journal-filters select { width: 220px; box-sizing: border-box; }
.project-filters select:focus-visible, .project-filters input:focus-visible, .admin-page summary:focus-visible { outline: 2px solid var(--cyan); outline-offset: 3px; }
@media (max-width: 540px) { .project-tabs:not(.admin-sections) { flex-wrap: nowrap; overflow-x: auto; padding: 10px 0 18px; } .project-tabs:not(.admin-sections) a { flex-shrink: 0; } }
@media (max-width: 800px) { .infra-grid { grid-template-columns: 1fr; gap: 0; } .infra-summary { gap: 14px; } .infra-summary article { padding: 20px; } }
@media (max-width: 540px) { .admin-topbar { padding: 20px; } .admin-main { padding: 0 20px; } .admin-login { padding: 24px; margin-top: 36px; } .infra-summary { grid-template-columns: 1fr; } .infra-details > div { grid-template-columns: 1fr; gap: 6px; } .infra-card { padding: 22px; } }
