Something went wrong. Try again.
Website hub for the atmosphere community, aggregating posts, events, regional, and more
Something went wrong. Try again.
7.3 kB · 329 lines
CSS
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330/* ============================================ atmosphere.community — Design System Default theme: "horizon" - warm, breezy, people-forward Layering: tokens.base — base tokens, themes redefine here tokens.semantic — semantic mappings (theme-agnostic) tokens.components — scoped component tokens global — reset, base elements, components ============================================ */
@import "./tokens.base.css";@import "./tokens.semantic.css";@import "./tokens.components.css";
/* --- Structural tokens (NOT themed) --- */:root { /* --- Spacing (4pt base) --- */ --space-xs: 4px; --space-sm: 8px; --space-md: 12px; --space-base: 16px; --space-lg: 24px; --space-xl: 32px; --space-2xl: 48px; --space-3xl: 64px; --space-4xl: 96px;
/* --- Typography --- */ --font-display: "Bitter", Georgia, serif; --font-body: "Source Sans 3", "Source Sans Pro", system-ui, sans-serif;
--text-xs: clamp(0.65rem, 0.6rem + 0.2vw, 0.75rem); --text-sm: clamp(0.78rem, 0.74rem + 0.2vw, 0.875rem); --text-base: clamp(0.875rem, 0.84rem + 0.2vw, 1rem); --text-lg: clamp(1.1rem, 1rem + 0.3vw, 1.25rem); --text-xl: clamp(1.4rem, 1.2rem + 0.6vw, 1.75rem); --text-2xl: clamp(1.75rem, 1.4rem + 1vw, 2.25rem);
--leading-tight: 1.2; --leading-normal: 1.55; --leading-relaxed: 1.7;
/* --- Layout --- */ --content-width: 960px; --content-narrow: 720px; --radius-sm: 6px; --radius-md: 10px; --radius-lg: 16px; --radius-pill: 999px;
/* --- Stacking --- */ --z-content: 1; --z-feedback: 5; --z-header: 10; --z-popover: 20; --z-popover-raised: 30; --z-top: 100;}
/* --- Reset & Base --- */*,*::before,*::after { box-sizing: border-box; margin: 0; padding: 0;}
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; scroll-behavior: smooth;}
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; }}
body { font-family: var(--font-body); font-size: var(--text-base); line-height: var(--leading-normal); color: var(--foreground); background: var(--background); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; min-height: 100dvh;}
img,svg { display: block; max-width: 100%; height: auto;}
a { color: var(--link); text-decoration: none; transition: color 0.15s ease;}a:hover { color: var(--link-hover);}a:focus-visible { outline: 2px solid var(--ring); outline-offset: 2px; border-radius: 2px;}
a[target="_blank"]:not(.btn):not(.hero-secondary):not(.post-card__link):not(.community-pill--link):not(.highlight-card):not(.event-card__details):not([data-external-icon="hidden"])::after { content: ""; display: inline-block; width: 0.95em; height: 0.95em; margin-inline-start: 0.25em; vertical-align: -0.125em; background-color: currentColor; mask: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='black' d='M19 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2h6v2H5v12h12v-6zM13 3v2h4.586l-7.793 7.793l1.414 1.414L19 6.414V11h2V3z'/%3E%3C/svg%3E") center / contain no-repeat; -webkit-mask: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='black' d='M19 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2h6v2H5v12h12v-6zM13 3v2h4.586l-7.793 7.793l1.414 1.414L19 6.414V11h2V3z'/%3E%3C/svg%3E") center / contain no-repeat;}
h1,h2,h3,h4 { font-family: var(--font-display); line-height: var(--leading-tight); color: var(--foreground); text-wrap: balance;}
h1 { font-size: var(--text-2xl); font-weight: 700;}h2 { font-size: var(--text-xl); font-weight: 600;}h3 { font-size: var(--text-lg); font-weight: 600;}h4 { font-size: var(--text-base); font-weight: 600;}
p + p { margin-top: var(--space-base);}
/* --- Utility Classes --- */.container { width: 100%; max-width: var(--content-width); margin-inline: auto; padding-inline: var(--space-lg);}
@media (min-width: 640px) { .container { padding-inline: var(--space-2xl); }}
.container--narrow { max-width: var(--content-narrow);}
.visually-hidden { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;}
/* --- Card base --- */.card { background: var(--card); color: var(--card-foreground); border: 1px solid var(--card-border); border-radius: var(--radius-md); padding: var(--space-base);}
/* The HTML `hidden` attribute should always win over author display rules. */[hidden] { display: none !important;}
/* --- Badge / Pill --- */.badge { display: inline-flex; align-items: center; padding: var(--space-xs) var(--space-sm); border-radius: var(--radius-pill); font-size: var(--text-xs); font-weight: 600; line-height: 1; white-space: nowrap;}
.badge--tag { background: var(--badge-tag-bg); color: var(--badge-tag-fg);}
.badge--location { background: var(--badge-location-bg); color: var(--badge-location-fg);}
.badge--online { background: var(--badge-online-bg); color: var(--badge-online-fg);}
/* --- Button --- */.btn { display: inline-flex; align-items: center; gap: var(--space-sm); padding: var(--space-sm) var(--space-base); border: none; border-radius: var(--radius-sm); font-family: var(--font-body); font-size: var(--text-sm); font-weight: 600; line-height: 1; cursor: pointer; transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease; text-decoration: none;}
.btn--primary { background: var(--btn-primary-bg); color: var(--btn-primary-fg);}.btn--primary:hover { background: var(--btn-primary-bg-hover); color: var(--btn-primary-fg);}
.btn--ghost { background: transparent; color: var(--primary); border: 1px solid var(--btn-ghost-border);}.btn--ghost:hover { background: var(--btn-ghost-bg-hover); border-color: var(--btn-ghost-border-hover);}
.btn--small { padding: var(--space-xs) var(--space-sm); font-size: var(--text-xs);}
/* --- Section spacing --- */.section { padding-block: var(--space-2xl) var(--space-3xl);}
@media (min-width: 640px) { .section { padding-block: var(--space-3xl) var(--space-4xl); }}
.section__header { margin-bottom: var(--space-xl);}
.section__title { font-size: var(--text-xl);}
.section__subtitle { color: var(--foreground-secondary); font-size: var(--text-sm); margin-top: var(--space-xs);}
.section__more { font-size: var(--text-sm); font-weight: 500;}
/* --- Grid --- */.grid-2 { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: var(--space-base);}
/* --- Skip link --- */.skip-link { position: absolute; top: -100%; left: var(--space-base); padding: var(--space-sm) var(--space-base); background: var(--primary); color: var(--primary-foreground); border-radius: var(--radius-sm); font-weight: 600; z-index: var(--z-top);}.skip-link:focus { top: var(--space-sm);}