/* ---------- Tokens ---------- */ :root { --bg-void: #080b14; --bg-panel: #10151f; --bg-panel-raised: #161c29; --line: #232b3d; --text-primary: #eaeef7; --text-dim: #7a88a6; --accent-oiii: #4fd8c4; --accent-star: #f2c572; --font-display: "Fraunces", serif; --font-body: "Inter", system-ui, sans-serif; --font-mono: "IBM Plex Mono", monospace; --radius: 3px; } * { box-sizing: border-box; } html, body { margin: 0; padding: 0; background: var(--bg-void); color: var(--text-primary); font-family: var(--font-body); min-height: 100%; } /* ---------- Starfield backdrop ---------- */ .sky { position: fixed; inset: 0; z-index: -1; background-color: var(--bg-void); background-image: radial-gradient(1px 1px at 10% 20%, rgba(234,238,247,0.5), transparent), radial-gradient(1px 1px at 80% 10%, rgba(234,238,247,0.4), transparent), radial-gradient(1.5px 1.5px at 60% 70%, rgba(234,238,247,0.5), transparent), radial-gradient(1px 1px at 30% 85%, rgba(234,238,247,0.35), transparent), radial-gradient(1px 1px at 90% 60%, rgba(234,238,247,0.4), transparent), radial-gradient(1.5px 1.5px at 45% 40%, rgba(234,238,247,0.3), transparent), radial-gradient(1px 1px at 15% 55%, rgba(234,238,247,0.3), transparent); background-repeat: repeat; background-size: 400px 400px; } /* ---------- Header ---------- */ .site-header { display: flex; align-items: center; gap: 0.9rem; padding: 2rem 1.5rem 1.25rem; max-width: 1100px; margin: 0 auto; } .site-header__mark { color: var(--accent-star); font-size: 1.5rem; line-height: 1; } .site-header h1 { font-family: var(--font-display); font-weight: 500; font-size: 1.6rem; margin: 0; letter-spacing: 0.01em; } .site-header p { margin: 0.15rem 0 0; color: var(--text-dim); font-family: var(--font-mono); font-size: 0.78rem; letter-spacing: 0.04em; text-transform: uppercase; } /* ---------- Layout ---------- */ .layout { max-width: 1100px; margin: 0 auto; padding: 0 1.5rem 3rem; display: grid; grid-template-columns: 260px 1fr; gap: 1.5rem; align-items: start; } /* ---------- Catalog list ---------- */ .catalog__title { font-family: var(--font-mono); font-size: 0.72rem; letter-spacing: 0.12em; text-transform: uppercase; color: var(--text-dim); margin: 0 0 0.75rem 0.25rem; } .catalog__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.35rem; } .catalog__item button { width: 100%; text-align: left; background: var(--bg-panel); border: 1px solid var(--line); border-radius: var(--radius); color: var(--text-primary); padding: 0.65rem 0.8rem; cursor: pointer; font-family: var(--font-body); transition: border-color 0.15s ease, background 0.15s ease; } .catalog__item button:hover { border-color: var(--accent-oiii); } .catalog__item button.active { background: var(--bg-panel-raised); border-color: var(--accent-oiii); } .catalog__item .name { display: block; font-size: 0.92rem; font-weight: 500; } .catalog__item .cat { display: block; font-family: var(--font-mono); font-size: 0.68rem; color: var(--text-dim); margin-top: 0.15rem; letter-spacing: 0.02em; } .catalog__item button.active .cat { color: var(--accent-oiii); } /* ---------- Viewer ---------- */ .viewer { background: var(--bg-panel); border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; min-height: 420px; } .viewer__empty { padding: 3rem 1.5rem; color: var(--text-dim); text-align: center; font-family: var(--font-mono); font-size: 0.85rem; } /* Log strip: catalog-card / FITS-header style data row */ .viewer__log { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0.5rem 1rem; padding: 0.85rem 1.25rem; border-bottom: 1px solid var(--line); font-family: var(--font-mono); font-size: 0.72rem; color: var(--text-dim); background: var(--bg-panel-raised); } .viewer__log dt { text-transform: uppercase; letter-spacing: 0.06em; font-size: 0.62rem; margin: 0 0 0.15rem; } .viewer__log dd { margin: 0; color: var(--text-primary); } .viewer__image-wrap { background: #000; display: flex; align-items: center; justify-content: center; } .viewer__image-wrap img { width: 100%; height: auto; max-height: 60vh; object-fit: contain; display: block; } .viewer__body { padding: 1.5rem 1.5rem 1.75rem; } .viewer__body h2 { font-family: var(--font-display); font-weight: 500; font-size: 1.6rem; margin: 0 0 0.6rem; } .viewer__body p.desc { margin: 0 0 1.1rem; line-height: 1.6; color: var(--text-primary); max-width: 62ch; } .viewer__wiki-link { display: inline-flex; align-items: center; gap: 0.4rem; font-family: var(--font-mono); font-size: 0.78rem; color: var(--accent-oiii); text-decoration: none; border-bottom: 1px solid transparent; transition: border-color 0.15s ease; } .viewer__wiki-link:hover { border-bottom-color: var(--accent-oiii); } /* ---------- Footer ---------- */ .site-footer { max-width: 1100px; margin: 0 auto; padding: 1.5rem 1.5rem 2.5rem; color: var(--text-dim); font-family: var(--font-mono); font-size: 0.7rem; letter-spacing: 0.02em; } /* ---------- Accessibility ---------- */ button:focus-visible, a:focus-visible { outline: 2px solid var(--accent-oiii); outline-offset: 2px; } @media (prefers-reduced-motion: reduce) { * { transition: none !important; } } /* ---------- Responsive: tablet ---------- */ @media (max-width: 860px) { .layout { grid-template-columns: 1fr; } .catalog__list { flex-direction: row; overflow-x: auto; padding-bottom: 0.25rem; scrollbar-width: thin; } .catalog__item { flex: 0 0 auto; } .catalog__item button { white-space: nowrap; } .viewer__log { grid-template-columns: repeat(2, 1fr); } } /* ---------- Responsive: mobile ---------- */ @media (max-width: 480px) { .site-header h1 { font-size: 1.3rem; } .viewer__body h2 { font-size: 1.3rem; } .viewer__log { grid-template-columns: repeat(2, 1fr); font-size: 0.68rem; } }