/* ===== Runic Gateway design tokens (from the Claude Design handoff) ===== */ :root { --bg: #0e1318; --bg-deep: #0b0f14; --panel-a: #192231; --panel-b: #141a21; --panel-flat: #11161d; --line: #2a3544; --line-soft: #1d2733; --accent: #7f99bd; --accent-bright: #cdd9e8; --ink: #eef3f8; --head: #e6edf6; --text: #c4cdd8; --muted: #aeb8c4; --dim: #6f7d8e; --blue: #13243c; --mode-live: #5fb98a; --mode-maint: #e6c26a; --serif: Georgia, "Times New Roman", serif; --display: Cinzel, Georgia, serif; --sans: "Helvetica Neue", Arial, sans-serif; --shadow-card: 0 14px 34px rgba(0, 0, 0, 0.3); --panel-grad: linear-gradient(180deg, var(--panel-a), var(--panel-b)); /* Corner radius, by the kind of surface rather than by the pixel value, so a theme preset can restyle all of them at once (see docs/website/THEMING_AND_NAV.md §4.7). Seeded at the values already in use — this promotion is a no-op, and every existing instance must keep looking exactly as it does today. Deliberately four tokens, not three: .card/.panel are 10px and .panel-flat is 12px, so collapsing them would have restyled every card on every install. The 7px (.rte-btn) and 6px (.rte-linkmenu-item) values stay literals — interior editor chrome, not brand surface — as do the 50% circles, which are shapes rather than radii. */ --radius-pill: 999px; --radius-panel: 12px; --radius-card: 10px; --radius-input: 8px; } * { box-sizing: border-box; } html, body { margin: 0; } body { background: var(--bg); color: var(--ink); font-family: var(--serif); line-height: 1.6; -webkit-font-smoothing: antialiased; } a { color: inherit; } /* ===== Typography helpers ===== */ .display { font-family: var(--display); font-weight: 600; color: var(--head); } .sans { font-family: var(--sans); } .eyebrow { margin: 0 0 14px; color: var(--accent); font-family: var(--sans); font-size: 0.74rem; font-weight: 700; letter-spacing: 0.18em; text-transform: uppercase; } /* ===== Layout shells ===== */ .shell { width: min(1080px, calc(100% - 32px)); margin: 0 auto; } .shell-mid { width: min(880px, calc(100% - 32px)); margin: 0 auto; } .shell-narrow { width: min(760px, calc(100% - 32px)); margin: 0 auto; } .shell-wide { width: min(1280px, calc(100% - 32px)); margin: 0 auto; } .page { min-height: 100vh; display: flex; flex-direction: column; } .page-body { flex: 1; padding: 56px 0 64px; } /* ===== Cards / panels ===== */ .card { display: flex; flex-direction: column; padding: 24px; border: 1px solid var(--line); border-radius: var(--radius-card); text-decoration: none; color: var(--ink); background: var(--panel-grad); box-shadow: var(--shadow-card); transition: border-color 0.18s, transform 0.18s; } a.card:hover, a.card:focus-visible { border-color: var(--accent); transform: translateY(-3px); outline: none; } .card-kicker { color: var(--accent); font-family: var(--sans); font-size: 0.68rem; font-weight: 700; letter-spacing: 0.15em; text-transform: uppercase; margin-bottom: 12px; } .panel { border: 1px solid var(--line); border-radius: var(--radius-card); background: var(--panel-grad); } .panel-flat { border: 1px solid var(--line); border-radius: var(--radius-panel); overflow: hidden; background: var(--panel-flat); } .note { border: 1px solid var(--line); border-left: 3px solid var(--accent); border-radius: var(--radius-input); background: rgba(19, 36, 60, 0.4); padding: 18px 22px; color: var(--muted); } /* ===== Grids ===== */ .grid-2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; } .grid-3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; } .grid-4 { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; } @media (max-width: 860px) { .grid-2, .grid-3, .grid-4 { grid-template-columns: 1fr; } } /* ===== Pills / buttons ===== */ .pill { border: 1px solid var(--line); border-radius: var(--radius-pill); padding: 7px 14px; color: var(--muted); background: rgba(11, 22, 48, 0.5); font-family: var(--sans); font-size: 0.86rem; /* Stated, not inherited. A