@font-face{font-family:Roboto;src:url(/fonts/roboto.woff2)format('woff2');font-weight:100 900;font-display:swap}@font-face{font-family:roboto mono;src:url(/fonts/roboto-mono.woff2)format('woff2');font-weight:100 700;font-display:swap}:root{--royal:#4169e1;--gray:#d1d1d1;--text:#1f2947;--muted:#5b6379;--bg:#fff;--bg-soft:#f3f6fb;--bg-hover:#e6edf9;--shadow:0 1px 2px color-mix(in srgb, var(--text) 8%, transparent), 0 6px 16px -4px color-mix(in srgb, var(--text) 14%, transparent);color-scheme:light}*{box-sizing:border-box}body{margin:0;min-height:100vh;display:flex;flex-direction:column;font-family:Roboto,system-ui,sans-serif;line-height:1.6;color:var(--text);background:var(--bg)}main{flex:1;width:100%;max-width:60rem;margin:0 auto;padding:2rem 1rem 4rem}a{color:var(--royal)}h1,h2,h3{color:var(--text);line-height:1.25}h1{font-size:clamp(1.6rem,4vw,2.4rem)}img{max-width:100%;height:auto}hr{width:calc(100%/6);margin:3rem auto;border:0;border-top:2px solid var(--gray)}.sql{font-family:roboto mono,monospace;overflow-wrap:anywhere}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.site-header{display:flex;flex-wrap:wrap;gap:.5rem 1.5rem;align-items:center;justify-content:space-between;padding:.75rem 1rem;border-bottom:1px solid var(--bg-hover)}.brand{display:flex;align-items:center;gap:.5rem;font-weight:700;font-size:1.25rem;color:var(--text);text-decoration:none}.site-header nav{display:flex;flex-wrap:wrap;gap:1rem}.site-header nav a{color:var(--text);text-decoration:none;font-weight:500}.site-header nav a[aria-current],.site-header nav a:hover{color:var(--royal);text-decoration:underline}.site-footer{background:var(--text);color:#fff;padding:1.5rem 1rem}.site-footer ul{max-width:60rem;margin:0 auto;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:.5rem 1.5rem}.site-footer a{display:inline-flex;align-items:center;gap:.4rem;color:#fff}.hero{display:flex;gap:2rem;align-items:center}.hero h1{margin-top:0}@media(max-width:40rem){.hero{flex-direction:column;align-items:flex-start}.hero img{width:90px}}.button{display:inline-flex;align-items:center;gap:.5rem;padding:.6rem 1.2rem;border:2px solid var(--royal);border-radius:.4rem;background:var(--royal);color:#fff;text-decoration:none;font-weight:500}.button:hover{background:var(--text);border-color:var(--text)}.button.secondary{background:0 0;color:var(--royal)}.button.secondary:hover{background:var(--bg-soft)}.actions{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem}.icon{width:1.25em;height:1.25em;flex:none}.icon-link{display:inline-flex;padding:.25rem;color:var(--royal)}.icon-link .icon{width:2rem;height:2rem}.icon-link:hover{color:var(--text)}.cards{display:grid;gap:1rem}.card{display:grid;grid-template-columns:1fr auto;gap:.4rem 1rem;padding:1rem 1.25rem;background:var(--bg-soft);border-radius:.3rem;color:var(--text);text-decoration:none}.card:hover{background-color:var(--bg-hover)}.card.next{box-shadow:var(--shadow)}.card time{font-weight:700}.card .place{display:flex;flex-wrap:wrap;gap:.4rem 1rem}.card .venue,.card .sponsors{font-size:.9rem;display:flex;align-items:center;gap:.35rem}.card .venue svg,.card .sponsors svg{flex:none;width:16px;height:16px;color:var(--royal)}.card>*{grid-column:1}.card .resource-count{grid-column:2;grid-row:1/span 3;align-self:center;display:inline-flex;align-items:center;gap:.35rem;padding:.3rem .7rem;border-radius:999px;background:var(--royal);color:#fff;font-weight:700}.meetup{display:grid;gap:0 2.5rem;grid-template-areas:"head" "side" "body"}.meetup-head{grid-area:head}.meetup-body{grid-area:body}.meetup-side{grid-area:side;align-self:start;display:flex;flex-wrap:wrap;gap:1rem;margin-top:1rem}.calendar{flex:1 1 18rem;align-self:flex-start;display:flex;align-items:center;gap:1.25rem}.calendar div{display:flex;flex-direction:column;align-items:flex-start;gap:.5rem}.status{padding:.1rem .6rem;border-radius:999px;background:var(--bg-hover);color:var(--muted);font-size:.75rem;font-weight:700}.add-to-calendar{display:inline-flex;align-items:center;gap:.4rem;font-weight:500;text-decoration:none;white-space:nowrap}.add-to-calendar:hover{text-decoration:underline}.leaf{flex:none;display:flex;flex-direction:column;width:5.5rem;aspect-ratio:1;text-align:center;background:var(--bg);border-radius:.5rem;overflow:hidden;box-shadow:var(--shadow)}.leaf .month{padding:.15rem 0;background:var(--royal);color:#fff;font-size:.8rem;font-weight:700;text-transform:uppercase}.leaf .day{flex:1;display:grid;place-items:center;font-size:2.25rem;font-weight:700;line-height:1}.leaf .year{padding-bottom:.3rem;font-size:.75rem;color:var(--muted)}.when{display:flex;flex-direction:column;margin:0;font-size:1.25rem;line-height:1.3}.when strong{font-size:1.5rem}.when strong::first-letter{text-transform:uppercase}.venue{flex:2 1 22rem;min-width:0}.venue .map{border-radius:.5rem;overflow:hidden;mask-image:linear-gradient(#000,#000)}.venue iframe{display:block;width:100%;aspect-ratio:2;border:0}.venue address{margin-top:.75rem;font-style:normal}.map-links{margin:.5rem 0 0;font-size:.8rem}.map-links a{white-space:nowrap}.map-links .icon{width:1em;height:1em;vertical-align:middle;margin-right:.25rem}@media(min-width:64rem){main:has(.meetup){max-width:84rem}.meetup{grid-template-columns:minmax(0,1fr)minmax(20rem,28rem);grid-template-rows:auto 1fr;grid-template-areas:"head side" "body side"}.meetup-side{flex-direction:column;flex-wrap:nowrap}.calendar,.venue{flex:none}.venue iframe{aspect-ratio:1}}.talks{list-style:none;padding:0}.talks{display:grid;gap:1rem;list-style:none;padding:0}.talks>li{padding:1.25rem 1.5rem;background:var(--bg-soft);border-radius:.5rem}.talks h2{margin:0;font-size:1.25rem}.speakers{margin:.25rem 0;font-style:italic}.resources{display:flex;flex-wrap:wrap;gap:.5rem;list-style:none;margin:1rem 0 0;padding:0}.resources .button{padding:.4rem .9rem;background:var(--bg)}.resources .button:hover{background:var(--bg-hover)}.resources .meta{margin:0;font-weight:400}.meta{font-size:.85rem;color:var(--muted);margin:0 .5rem}.organizer-link{margin:3rem 0 0;font-size:.75rem;text-align:right}.organizer-link a{color:var(--gray);text-decoration:none}.organizer-link a:hover{color:var(--muted);text-decoration:underline}.logos{list-style:none;padding:0;display:flex;flex-wrap:wrap;gap:2rem;align-items:center}.logos img{max-height:4rem;max-width:12rem}.organizers{list-style:none;padding:0;display:flex;flex-wrap:wrap;gap:2rem}.organizers li{display:flex;flex-direction:column;align-items:center;text-align:center}.organizers img{width:120px;height:120px;border-radius:50%;object-fit:cover;border:3px solid var(--royal);margin-bottom:.5rem}