Files
2026-05-07 10:42:46 -05:00

240 lines
8.6 KiB
CSS

/* ============================================================
Keysat docs — shared layout. Inline-only deps allowed.
============================================================ */
@import url('https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700&family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap');
:root {
--navy-950:#0E1F33; --navy-900:#142A47; --navy-800:#1E3A5F; --navy-700:#2A4A75;
--navy-100:#E4EAF1;
--cream-50:#FBF9F2; --cream-100:#F5F1E8; --cream-200:#EDE7D7;
--gold-700:#8A6F3D; --gold-500:#BFA068; --gold-400:#D4B985;
--ink-900:#0E1F33; --ink-700:#2C3E54; --ink-500:#5A6B7F; --ink-400:#7E8C9D;
--success:#2D7A5F; --success-bg:#E3F0EA;
--warning:#B8861F; --warning-bg:#F7EFD7;
--danger:#B23A3A; --danger-bg:#F4E0E0;
--border-1:rgba(14,31,51,0.12);
--border-2:rgba(14,31,51,0.20);
--font-display:'Manrope','Helvetica Neue',Arial,sans-serif;
--font-body:'Inter','Helvetica Neue',Arial,sans-serif;
--font-mono:'JetBrains Mono',ui-monospace,'SF Mono',Menlo,monospace;
}
*{box-sizing:border-box} html,body{margin:0;padding:0}
body{
font-family:var(--font-body); color:var(--ink-900); background:var(--cream-100);
background-image:
radial-gradient(rgba(14,31,51,0.022) 1px, transparent 1px),
radial-gradient(rgba(138,111,61,0.020) 1px, transparent 1px);
background-size:3px 3px, 7px 7px;
-webkit-font-smoothing:antialiased;
}
a{color:var(--navy-800); text-decoration:none}
a:hover{text-decoration:underline; text-decoration-thickness:1.5px; text-underline-offset:3px}
/* Top nav */
.topnav{
position:sticky; top:0; z-index:10;
background:rgba(245,241,232,0.9); backdrop-filter:blur(10px);
border-bottom:1px solid var(--border-1);
padding:14px 28px; display:flex; align-items:center; gap:18px;
}
.topnav .brand{
display:flex; align-items:center; gap:10px;
font-family:var(--font-display); font-weight:500;
color:var(--navy-900); font-size:14px;
letter-spacing:0.28em; text-transform:uppercase;
}
.topnav .brand img{width:26px; height:26px}
.topnav .docs-tag{
font-size:11px; font-weight:700; letter-spacing:0.18em;
text-transform:uppercase; color:var(--gold-700);
padding-left:10px; border-left:1px solid var(--border-2);
}
.topnav nav{margin-left:auto; display:flex; gap:22px; font-size:13.5px; color:var(--ink-700)}
.topnav nav a{color:var(--ink-700)}
.topnav nav a:hover{color:var(--navy-900); text-decoration:none}
.topnav nav a.active{color:var(--navy-900); font-weight:600}
/* Layout */
.layout{
display:grid; grid-template-columns:240px 1fr 220px;
max-width:1280px; margin:0 auto; gap:32px;
padding:28px 28px 64px;
}
aside.side{
position:sticky; top:74px; align-self:start;
font-size:13.5px; max-height:calc(100vh - 90px);
overflow:auto; padding-right:8px;
}
aside.side .group{margin-bottom:18px}
aside.side .group .glabel{
font-size:10.5px; font-weight:700; letter-spacing:0.16em;
text-transform:uppercase; color:var(--gold-700);
margin:6px 8px 6px;
}
aside.side a{
display:block; padding:5px 10px; border-radius:5px;
color:var(--ink-700); line-height:1.4;
}
aside.side a:hover{background:var(--cream-200); text-decoration:none}
aside.side a.active{background:var(--navy-800); color:var(--cream-50); font-weight:600}
main.prose{min-width:0}
.prose .crumb{font-size:12px; color:var(--ink-500); margin-bottom:8px; letter-spacing:0.04em}
.prose h1{
font-family:var(--font-display); font-weight:500; font-size:38px;
letter-spacing:-0.022em; color:var(--navy-950);
margin:0 0 8px; line-height:1.1;
}
.prose .lead{
font-size:17px; line-height:1.55; color:var(--ink-700);
margin:0 0 24px; max-width:640px;
}
.prose h2{
font-family:var(--font-display); font-weight:700; font-size:24px;
letter-spacing:-0.015em; color:var(--navy-950);
margin:36px 0 12px;
padding-top:24px; border-top:1px solid var(--border-1);
}
.prose h3{
font-family:var(--font-display); font-weight:700; font-size:17px;
color:var(--navy-950); margin:22px 0 8px; letter-spacing:-0.01em;
}
.prose p{font-size:15px; line-height:1.65; color:var(--ink-700); margin:0 0 14px; max-width:680px}
.prose ul, .prose ol{padding-left:22px; margin:0 0 14px; max-width:680px}
.prose li{font-size:15px; line-height:1.65; color:var(--ink-700); margin-bottom:4px}
.prose code{
font-family:var(--font-mono); font-size:13px;
background:var(--cream-200); padding:2px 6px; border-radius:4px;
color:var(--navy-900);
}
.prose strong{color:var(--navy-950); font-weight:700}
.prose em{color:var(--ink-700)}
.prose a{color:var(--navy-800); font-weight:500}
pre.code{
background:var(--navy-950); color:var(--cream-50);
padding:18px 22px; border-radius:10px;
overflow-x:auto;
font-family:var(--font-mono); font-size:13px; line-height:1.7;
margin:14px 0 20px; border:1px solid var(--navy-900);
max-width:680px;
}
pre.code .c{color:rgba(245,241,232,0.45)}
pre.code .k{color:var(--gold-400)}
pre.code .s{color:#d4b985}
pre.code .f{color:var(--cream-50)}
pre.code .n{color:#a6b7cf}
pre.code .p{color:rgba(245,241,232,0.55)}
.callout{
border:1px solid var(--border-1); border-left:3px solid var(--gold-500);
background:var(--cream-50); border-radius:8px;
padding:14px 16px; margin:14px 0 22px;
display:flex; gap:12px; align-items:flex-start;
max-width:680px;
}
.callout [data-lucide]{
color:var(--gold-700); width:18px; height:18px;
flex-shrink:0; margin-top:2px;
}
.callout p{margin:0; font-size:14px}
.callout strong{color:var(--navy-950); font-weight:700}
.callout.warn{border-left-color:var(--warning); background:var(--warning-bg)}
.callout.warn [data-lucide]{color:var(--warning)}
.callout.danger{border-left-color:var(--danger); background:var(--danger-bg)}
.callout.danger [data-lucide]{color:var(--danger)}
/* Right TOC */
aside.toc{
position:sticky; top:74px; align-self:start;
font-size:12.5px; border-left:1px solid var(--border-1);
padding:8px 0 8px 18px;
max-height:calc(100vh - 90px); overflow:auto;
}
aside.toc .label{
font-size:10.5px; font-weight:700; letter-spacing:0.16em;
text-transform:uppercase; color:var(--gold-700); margin-bottom:10px;
}
aside.toc a{
display:block; padding:4px 0; color:var(--ink-500); line-height:1.4;
}
aside.toc a:hover{color:var(--navy-900); text-decoration:none}
aside.toc a.active{
color:var(--navy-900); font-weight:600;
border-left:2px solid var(--gold-500);
margin-left:-20px; padding-left:18px;
}
/* Tables in prose */
table.t{
width:100%; border-collapse:separate; border-spacing:0;
background:var(--cream-50); border:1px solid var(--border-1);
border-radius:10px; overflow:hidden; margin:14px 0 20px; max-width:680px;
}
table.t th{
text-align:left; font-size:11px; font-weight:700;
letter-spacing:0.12em; text-transform:uppercase; color:var(--ink-500);
padding:12px 16px; background:var(--cream-100);
border-bottom:1px solid var(--border-1);
}
table.t td{
padding:12px 16px; border-bottom:1px solid var(--border-1);
font-size:13.5px; color:var(--ink-700); vertical-align:top;
}
table.t tr:last-child td{border-bottom:0}
table.t code{font-size:12.5px}
/* Cards inside prose for "what's next" links */
.next-grid{
display:grid; grid-template-columns:1fr 1fr; gap:16px;
margin:18px 0 24px; max-width:680px;
}
.next-card{
display:block; background:var(--cream-50);
border:1px solid var(--border-1); border-radius:10px;
padding:18px; transition:all 120ms;
}
.next-card:hover{
border-color:var(--border-2); text-decoration:none;
background:var(--cream-100);
}
.next-card .eyebrow{
font-size:10.5px; font-weight:700; letter-spacing:0.18em;
text-transform:uppercase; color:var(--gold-700);
margin-bottom:6px; display:block;
}
.next-card h4{
font-family:var(--font-display); font-weight:700; font-size:15px;
margin:0 0 4px; letter-spacing:-0.01em; color:var(--navy-950);
}
.next-card p{
font-size:13px; color:var(--ink-700); line-height:1.5;
margin:0; max-width:none;
}
/* Code-language tabs (for SDK examples) */
.lang-tabs{
display:flex; gap:0; margin:14px 0 0; max-width:680px;
border-bottom:1px solid var(--border-1);
}
.lang-tabs button{
background:transparent; border:0; cursor:pointer;
font-family:var(--font-body); font-weight:500; font-size:13px;
color:var(--ink-500); padding:10px 16px;
border-bottom:2px solid transparent;
margin-bottom:-1px;
}
.lang-tabs button:hover{color:var(--navy-900)}
.lang-tabs button.active{color:var(--navy-900); font-weight:600; border-bottom-color:var(--gold-500)}
@media (max-width: 980px){
.layout{grid-template-columns:1fr; gap:18px; padding:18px}
aside.side, aside.toc{position:static; max-height:none; overflow:visible; border:0; padding:0}
aside.toc{display:none}
.topnav nav{display:none}
.next-grid{grid-template-columns:1fr}
}