이 CSS 코드는 "Guardian Headline Full"이라는 사용자 정의 글꼴 패밀리를 정의하며, 여러 글꼴 두께와 스타일을 포함합니다. 라이트, 레귤러, 미디엄, 세미볼드 두께가 각각 일반체와 이탤릭체 변형으로 제공됩니다. 글꼴은 다양한 브라우저 간 호환성을 보장하기 위해 Guardian 서버에서 WOFF2, WOFF, TrueType 형식으로 로드됩니다.
@font-face {
font-family: Guardian Headline Full;
src: url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-Bold.woff2) format("woff2"),
url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-Bold.woff) format("woff"),
url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-Bold.ttf) format("truetype");
font-weight: 700;
font-style: normal;
}
@font-face {
font-family: Guardian Headline Full;
src: url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-BoldItalic.woff2) format("woff2"),
url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-BoldItalic.woff) format("woff"),
url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-BoldItalic.ttf) format("truetype");
font-weight: 700;
font-style: italic;
}
@font-face {
font-family: Guardian Headline Full;
src: url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-Black.woff2) format("woff2"),
url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-Black.woff) format("woff"),
url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-Black.ttf) format("truetype");
font-weight: 900;
font-style: normal;
}
@font-face {
font-family: Guardian Headline Full;
src: url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-BlackItalic.woff2) format("woff2"),
url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-BlackItalic.woff) format("woff"),
url(https://assets.guim.co.uk/static/frontend/fonts/guardian-headline/noalts-not-hinted/GHGuardianHeadline-BlackItalic.ttf) format("truetype");
font-weight: 900;
font-style: italic;
}
@font-face {
font-family: Guardian Titlepiece;
src: url(https://assets.guim.co.uk/static/frontend/fonts/guardian-titlepiece/noalts-not-hinted/GTGuardianTitlepiece-Bold.woff2) format("woff2"),
url(https://assets.guim.co.uk/static/frontend/fonts/guardian-titlepiece/noalts-not-hinted/GTGuardianTitlepiece-Bold.woff) format("woff"),
url(https://assets.guim.co.uk/static/frontend/fonts/guardian-titlepiece/noalts-not-hinted/GTGuardianTitlepiece-Bold.ttf) format("truetype");
font-weight: 700;
font-style: normal;
}
@media (min-width: 71.25em) {
.content__main-column--interactive {
margin-left: 160px;
}
}
@media (min-width: 81.25em) {
.content__main-column--interactive {
margin-left: 240px;
}
}
.content__main-column--interactive .element-atom {
max-width: 620px;
}
@media (max-width: 46.24em) {
.content__main-column--interactive .element-atom {
max-width: 100%;
}
}
.content__main-column--interactive .element-showcase {
margin-left: 0;
}
@media (min-width: 46.25em) {
.content__main-column--interactive .element-showcase {
max-width: 620px;
}
}
@media (min-width: 71.25em) {
.content__main-column--interactive .element-showcase {
max-width: 860px;
}
}
.content__main-column--interactive .element-immersive {
max-width: 1100px;
}
@media (max-width: 46.24em) {
.content__main-column--interactive .element-immersive {
width: calc(100vw - var(--scrollbar-width, 0px));
position: relative;
left: 50%;
right: 50%;
margin-left: calc(-50vw + var(--half-scrollbar-width, 0px)) !important;
margin-right: calc(-50vw + var(--half-scrollbar-width, 0px)) !important;
}
}
@media (min-width: 46.25em) {
.content__main-column--interactive .element-immersive {
transform: translate(-20px);
width: calc(100% + 60px);
}
}
@media (max-width: 71.24em) {
.content__main-column--interactive .element-immersive {
margin-left: 0;
margin-right: 0;
}
}
@media (min-width: 71.25em) {
.content__main-column--interactive .element-immersive {
transform: translate(0);
width: auto;
}
}
@media (min-width: 81.25em) {
.content__main-column--interactive .element-immersive {
max-width: 1260px;
}
}
.content__main-column--interactive p,
.content__main-column--interactive ul {
max-width: 620px;
}
.content__main-column--interactive:before {
position: absolute;
top: 0;
height: calc(100% + 15px);
min-height: 100px;
content: "";
}
@media (min-width: 71.25em) {.content__main-column--interactive:before {
border-left: 1px solid #dcdcdc;
z-index: -1;
left: -10px;
}
@media (min-width: 81.25em) {
.content__main-column--interactive:before {
border-left: 1px solid #dcdcdc;
left: -11px;
}
}
.content__main-column--interactive .element-atom {
margin-top: 0;
margin-bottom: 0;
padding-bottom: 12px;
padding-top: 12px;
}
.content__main-column--interactive p + .element-atom {
padding-top: 0;
padding-bottom: 0;
margin-top: 12px;
margin-bottom: 12px;
}
.content__main-column--interactive .element-inline {
max-width: 620px;
}
@media (min-width: 61.25em) {
figure[data-spacefinder-role="inline"].element {
max-width: 620px;
}
}
:root {
--dateline: #606060;
--headerBorder: #dcdcdc;
--captionText: #999;
--captionBackground: hsla(0, 0%, 7%, 0.72);
--feature: #c70000;
--new-pillar-colour: var(--primary-pillar, var(--feature));
}
:root:root {
--subheading-text: var(--secondary-pillar);
--pullquote-text: var(--secondary-pillar);
--pullquote-icon: var(--secondary-pillar);
--block-quote-text: var(--article-text);
}
:root:root blockquote {
--block-quote-fill: var(--secondary-pillar);
}
@media (prefers-color-scheme: dark) {
:root:root:not([data-color-scheme="light"]) {
--subheading-text: var(--darkmode-pillar);
--pullquote-text: var(--darkmode-pillar);
--pullquote-icon: var(--darkmode-pillar);
}
:root:root:not([data-color-scheme="light"]) blockquote {
--block-quote-fill: var(--darkmode-pillar);
}
}
.content__main-column--interactive .element.element-atom,
.element.element-atom {
padding: 0;
}
#article-body > div .element-atom:first-of-type + p:first-of-type,
#article-body > div .element-atom:first-of-type + .sign-in-gate + p:first-of-type,
#article-body > div .element-atom:first-of-type + #sign-in-gate + p:first-of-type,
#article-body > div hr:not(.last-horizontal-rule) + p,
.content--interactive > div .element-atom:first-of-type + p:first-of-type,
.content--interactive > div .element-atom:first-of-type + .sign-in-gate + p:first-of-type,
.content--interactive > div .element-atom:first-of-type + #sign-in-gate + p:first-of-type,
.content--interactive > div hr:not(.last-horizontal-rule) + p,
#comment-body .element-atom:first-of-type + p:first-of-type,
#comment-body .element-atom:first-of-type + .sign-in-gate + p:first-of-type,
#comment-body .element-atom:first-of-type + #sign-in-gate + p:first-of-type,
#comment-body hr:not(.last-horizontal-rule) + p,
[data-gu-name="body"] .element-atom:first-of-type + p:first-of-type,
[data-gu-name="body"] .element-atom:first-of-type + .sign-in-gate + p:first-of-type,
[data-gu-name="body"] .element-atom:first-of-type + #sign-in-gate + p:first-of-type,
[data-gu-name="body"] hr:not(.last-horizontal-rule) + p,
#feature-body .element-atom:first-of-type + p:first-of-type,
#feature-body .element-atom:first-of-type + .sign-in-gate + p:first-of-type,
#feature-body .element-atom:first-of-type + #sign-in-gate + p:first-of-type,
#feature-body hr:not(.last-horizontal-rule) + p {
padding-top: 14px;
}
#article-body > div .element-atom:first-of-type + p:first-of-type:first-letter,
#article-body > div .element-atom:first-of-type + .sign-in-gate + p:first-of-type:first-letter,
#article-body > div .element-atom:first-of-type + #sign-in-gate + p:first-of-type:first-letter,
#article-body > div hr:not(.last-horizontal-rule) + p:first-letter,
.content--interactive > div .element-atom:first-of-type + p:first-of-type:first-letter,
.content--interactive > div .element-atom:first-of-type + .sign-in-gate + p:first-of-type:first-letter,
.content--interactive > div .element-atom:first-of-type + #sign-in-gate + p:first-of-type:first-letter,
.content--interactive > div hr:not(.last-horizontal-rule) + p:first-letter,
#comment-body .element-atom:first-of-type + p:first-of-type:first-letter,
#comment-body .element-atom:first-of-type + .sign-in-gate + p:first-of-type:first-letter,
#comment-body .element-atom:first-of-type + #sign-in-gate + p:first-of-type:first-letter,
#comment-body hr:not(.last-horizontal-rule) + p:first-letter,
[data-gu-name="body"] .element-atom:first-of-type + p:first-of-type:first-letter,
[data-gu-name="body"] .element-atom:first-of-type + .sign-in-gate + p:first-of-type:first-letter,
[data-gu-name="body"] .element-atom:first-of-type + #sign-in-gate + p:first-of-type:first-letter,
[data-gu-name="body"] hr:not(.last-horizontal-rule) + p:first-letter,
#feature-body .element-atom:first-of-type + p:first-of-type:first-letter,
기사 본문의 첫 번째 단락이나 로그인 게이트 또는 수평선과 같은 특정 요소 뒤에 오는 첫 번째 단락의 첫 글자는 큰 드롭 캡으로 스타일링됩니다. 특정 헤드라인 글꼴을 사용하며, 볼드체, 대문자, 왼쪽으로 플로팅되고 테마 변수로 색상이 지정됩니다.
수평선 뒤에 오는 단락은 상단 패딩이 없습니다. 기사 본문 내 풀쿼트는 최대 너비 620픽셀로 제한됩니다.
쇼케이스 요소의 캡션은 정적으로 위치하며 최대 너비 620픽셀을 가집니다.
몰입형 요소는 스크롤바를 고려하여 전체 뷰포트 너비를 차지합니다. 더 큰 화면에서는 최대 너비로 제한되며, 캡션 패딩이 다양한 화면 크기에 맞게 조정됩니다. 더 작은 모바일 화면에서는 이러한 요소가 왼쪽 가장자리로 이동합니다.
더 넓은 화면의 경우, 기사 헤더는 CSS 그리드 레이아웃을 사용합니다. 이 그리드는 제목, 헤드라인, 메타데이터, 스탠드퍼스트(부제), 포트레이트 영역을 구성합니다. 헤드라인에는 상단 테두리가 적용되고, 메타데이터는 작은 상단 패딩으로 위치하며, 스탠드퍼스트 내 링크는 사용자 정의 색상으로 밑줄이 그어지고 호버 시 색상이 변경됩니다.
CSS 코드는 "furniture-wrapper"라는 레이아웃 래퍼 클래스에 대한 스타일을 정의합니다. 그리드 구조를 설정하고 다양한 화면 크기에서 헤드라인, 메타 정보, 스탠드퍼스트(소개 텍스트)와 같은 다양한 요소의 모양과 위치를 조정합니다.
더 큰 화면(71.25em 이상 너비)의 경우, 다중 열 그리드를 생성합니다. 헤드라인 글꼴 크기가 증가하고 장식선과 테두리가 조정되거나 제거됩니다. 스탠드퍼스트 텍스트는 왼쪽에 수직 테두리를 가집니다.
중간 화면(61.25em에서 71.25em 사이)의 경우, 스탠드퍼스트의 첫 번째 단락에서 상단 테두리를 제거합니다. 또한 그림 여백과 너비를 조정합니다.
이 범위에서 가장 작은 화면의 경우, 스탠드퍼스트의 첫 번째 단락에 상단 테두리를 추가합니다. 다른 규칙은 소셜 공유 버튼, 댓글 수, 레이아웃 선의 가시성을 제어하고 CSS 변수(`--headerBorder`)를 사용하여 테두리와 선에 특정 색상을 설정합니다.
CSS 코드는 다양한 요소에 대한 스타일을 설정합니다. furniture-wrapper 클래스 내의 미디어 요소는 너비 100%이고 수평 여백이 없습니다. 더 큰 화면(61.25em 이상)에서는 이러한 미디어 요소에 하단 여백이 없습니다. 더 작은 화면(46.24em 이하)에서는 전체 뷰포트 너비로 조정되고 음수 왼쪽 여백을 가지며, 30em에서 46.24em 사이의 화면에서는 약간 증가합니다.
그림 캡션은 특정 패딩, 배경 및 텍스트 색상으로 하단에 절대적으로 위치합니다. 캡션 내 첫 번째 span은 숨겨지고, 두 번째는 표시되며 너비의 90%로 제한됩니다. 30em 이상의 화면에서는 캡션 패딩이 증가합니다. 캡션 버튼은 원형 배경과 스케일된 아이콘으로 오른쪽 하단에 위치합니다.
매우 큰 화면(71.25em 이상)의 대화형 콘텐츠 열의 경우 위치와 높이 조정이 이루어집니다. 이러한 열 내의 제목은 너비가 620px로 제한됩니다.
어두운 배경과 피처 색상에 대한 색상 변수가 정의되며, iOS 및 Android의 다크 모드에 대한 조정이 포함됩니다. 이러한 모바일 플랫폼에서는 기사 컨테이너 내 특정 요소 뒤에 오는 첫 번째 단락의 첫 글자가 보조 필러 색상으로 스타일링됩니다. iOS 및 Android의 기사 헤더도 특정 스타일링을 받습니다.
Android 기기의 경우, 댓글 기사에서 기사 헤더 높이