这是一段CSS代码块,用于在网站上定义“Guardian Headline Full”字体家族。它包含多个font-face规则,每个规则指定字体的不同字重(细体、常规、中粗、半粗)和样式(正常或斜体)。字体文件托管在Guardian的资产服务器上,代码提供了回退格式(WOFF2、WOFF和TTF),以确保在不同浏览器中的兼容性。字重范围从300(细体)到600(半粗),每种字重都有对应的斜体版本。
这段文本看起来是CSS代码,而非自然语言散文。它定义了网页的字体样式和布局规则。由于这是技术代码,将其改写为“流畅、自然的英语”并不适用——它已经采用了精确、标准化的格式。不过,我可以提供一份通俗易懂的英文摘要,说明其功能:
该代码为网站设置了自定义字体,包括“Guardian Headline”和“Guardian Titlepiece”字体的各种字重和样式,从特定文件格式加载。它还定义了内容列的响应式布局规则,根据屏幕尺寸调整边距和宽度。例如,在较宽的屏幕上,它会添加左边距,对于某些元素(如沉浸式或展示内容),它会调整其宽度和位置以适应视口。这些规则确保在大多数设备上,文本和嵌入元素保持在可读宽度(约620像素)内,同时允许较大元素在更大屏幕上扩展。
.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;
}
}
[data-gu-name=media]:has(figure.loop) figure.loop figcaption:not(.hidden) {
z-index: 6;
}
[data-gu-name=media]:has(figure.loop) figure.loop button[data-link-name*=gu-video-loop] {
align-self: flex-end;
margin-bottom: 40px;
margin-right: 3px;
}
[data-gu-name=media]:has(figure.loop) figure.loop .controls-container div:has(button[data-testid=unmute-icon]),
[data-gu-name=media]:has(figure.loop) figure.loop .controls-container div:has(button[data-testid=mute-icon]) {
right: 0;
padding-left: 10px;
}
[data-gu-name=media]:has(figure.loop) #caption-button {
z-index: 100;
}
@media (min-width: 61.25em) {
[data-gu-name=media]:has(figure.loop) #caption-button {
bottom: 20px;
}
}
@media (min-width: 46.25em) {
[data-gu-name=media]:has(figure.cinemagraph) .cinemagraph > div {
max-height: unset;
}
}
[data-gu-name=body] gu-island[name=SelfHostedVideo] {
width: 100%;
max-width: 620px;
display: block;
margin-top: 12px;
margin-bottom: 12px;
}
[data-gu-name=body] gu-island[name=SelfHostedVideo] figure.loop,
[data-gu-name=body] gu-island[name=SelfHostedVideo] figure.loop video {
width: 100%;
height: auto;
max-width: 620px;
margin: 0 auto;
}
[data-gu-name=body] gu-island[name=SelfHostedVideo]:has(figure.loop.element-video-immersive) {
max-width: unset;
margin: 12px 0;
}
[data-gu-name=body] gu-island[name=SelfHostedVideo]:has(figure.loop.element-video-immersive) figure.loop,
[data-gu-name=body] gu-island[name=SelfHostedVideo]:has(figure.loop.element-video-immersive) figure.loop video {
max-width: unset;
margin: 0;
}
@media (min-width: 71.25em) {
[data-gu-name=body] gu-island[name=SelfHostedVideo]:has(figure.loop.element-video-immersive) {
width: 1140px;
margin-left: -180px;
}
[data-gu-name=body] gu-island[name=SelfHostedVideo]:has(figure.loop.element-video-immersive) figure figcaption {
margin-left: 20px;
}
}
@media (min-width: 81.25em) {
[data-gu-name=body] gu-island[name=SelfHostedVideo]:has(figure.loop.element-video-immersive) {
width: 1300px;
margin-left: -260px;
}
}
:root {
--dateline: #606060;
--headerBorder: #dcdcdc;
--captionText: #999;
--captionBackground: hsla(0, 0%, 7%, .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;
}
.content__main-column--interactive .element-atom:first-of-type + p:first-of-type,
.content__main-column--interactive .element-atom:first-of-type + .sign-in-gate + p:first-of-type,
.content__main-column--interactive .element-atom:first-of-type + #sign-in-gate + p:first-of-type,
.content__main-column--interactive .element-atom:first-of-type + .element-atom + p:first-of-type,
.content__main-column--interactive hr:not(.last-horizontal-rule) + p,
.content__main-column--interactive hr:not(.last-horizontal-rule) + .ad-slot-container + p,
#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 .element-atom:first-of-type + .element-atom + p:first-of-type,
#article-body > div hr { ... }水平分隔线或元素原子之后的第一个段落应在顶部有额外空间。这适用于紧随这些元素之后的第一个段落,无论它是直接位于元素之后还是位于广告位容器之后。同样的规则适用于页面的不同部分,如文章正文、交互内容、评论和专题部分。
此外,该第一个段落的第一个字母应以特殊方式设置样式。此样式应用于水平分隔线或元素原子之后的第一个段落的第一个字母,无论它是直接位于元素之后还是位于广告位容器之后。这适用于上述所有相同部分。
[data-gu-name=body] .element-atom:first-of-type+.element-atom+p:first-of-type:first-letter,
[data-gu-name=body] hr:not(.last-horizontal-rule)+p:first-letter,
[data-gu-name=body] hr:not(.last-horizontal-rule)+.ad-slot-container+p:first-letter,
#feature-body .element-atom:first-of-type+p:first-of-type:first-letter,
#feature-body .element-atom:first-of-type+.sign-in-gate+p:first-of-type:first-letter,
#feature-body .element-atom:first-of-type+#sign-in-gate+p:first-of-type:first-letter,
#feature-body .element-atom:first-of-type+.element-atom+p:first-of-type:first-letter,
#feature-body hr:not(.last-horizontal-rule)+p:first-letter,
#feature-body hr:not(.last-horizontal-rule)+.ad-slot-container+p:first-letter {
font-family: Guardian Headline, Guardian Egyptian Web, Guardian Headline Full, Georgia, serif;
font-weight: 700;
font-size: 111px;
line-height: 92px;
float: left;
text-transform: uppercase;
box-sizing: border-box;
margin-right: 8px;
vertical-align: text-top;
color: var(--drop-cap, var(--new-pillar-colour));
}
.content__main-column--interactive hr+p,
.content__main-column--interactive hr+.ad-slot-container+p,
#article-body>div hr+p,
#article-body>div hr+.ad-slot-container+p,
.content--interactive>div hr+p,
.content--interactive>div hr+.ad-slot-container+p,
#comment-body hr+p,
#comment-body hr+.ad-slot-container+p,
[data-gu-name=body] hr+p,
[data-gu-name=body] hr+.ad-slot-container+p,
#feature-body hr+p,
#feature-body hr+.ad-slot-container+p {
padding-top: 0;
}
.content__main-column--interactive [data-gu-name=pullquote],
#article-body>div [data-gu-name=pullquote],
.content--interactive>div [data-gu-name=pullquote],
#comment-body [data-gu-name=pullquote],
[data-gu-name=body] [data-gu-name=pullquote],
#feature-body [data-gu-name=pullquote] {
max-width: 620px;
}
#maincontent figure.element.element--showcase.element-showcase figcaption,
#feature-article-container figure.element.element--showcase.element-showcase figcaption,
#standard-article-container figure.element.element--showcase.element-showcase figcaption,
#comment-article-container figure.element.element--showcase.element-showcase figcaption {
position: static !important;
width: 100%;
max-width: 620px;
}
@media (min-width: 71.25em) {
#maincontent figure.element.element--showcase.element-showcase figcaption,
#feature-article-container figure.element.element--showcase.element-showcase figcaption,
#standard-article-container figure.element.element--showcase.element-showcase figcaption,
#comment-article-container figure.element.element--showcase.element-showcase figcaption {
position: absolute !important;
max-width: 140px;
}
}
@media (min-width: 81.25em) {
#maincontent figure.element.element--showcase.element-showcase figcaption,
#feature-article-container figure.element.element--showcase.element-showcase figcaption,
#standard-article-container figure.element.element--showcase.element-showcase figcaption,
#comment-article-container figure.element.element--showcase.element-showcase figcaption {
max-width: 220px;
}
}
.element.element--immersive.element-immersive {
width: calc(100vw - var(--scrollbar-width, 0px));
}
@media (max-width: 71.24em) {
.element.element--immersive.element-immersive {
max-width: 978px;
}
.element.element--immersive.element-immersive figcaption {
padding-inline: 10px;
}
}
@media (max-width: 71.24em) and (min-width: 30em) {
.element.element--immersive.element-immersive figcaption {
padding-inline: 20px;
}
}
@media (min-width: 46.25em) and (max-width: 61.24em) {
.element.element--immersive.element-immersive {
max-width: 738px;
}
}
@media (max-width: 46.24em) {
.element.element--immersive.element-immersive {
margin-left: -10px !important;
margin-right: 0 !important;
left: 0;
}
}
@media (max-width: 46.24em) and (min-width: 30em) {
.element.element--immersive.element-immersive {
margin-left: -20px !important;
}
.element.element--immersive.element-immersive figcaption {
padding-inline: 20px;
}
}
@media (min-width: 71.25em) {
[data-gu-name=body] figure.element.element--showcase.element-showcase,
[data-gu-name=body] .content__main-column--interactive figure.element.element--showcase.element-showcase {
margin-left: -160px !important;
}
}
@media (min-width: 81.25em) {
[data-gu-name=body] figure.element.element--showcase.element-showcase,
[data-gu-n[body] .content__main-column--interactive figure.element.element--showcase.element-showcase {
margin-left: -240px !important;
}
.furniture-wrapper {
position: relative;
}
@media (min-width: 61.25em) {
.furniture-wrapper {
display: grid;
grid-column-gap: 20px;
grid-row-gap: 0px;
grid-template-columns: [title-start headline-start meta-start standfirst-start] repeat(5, 1fr) [title-end headline-end meta-end standfirst-end portrait-start] repeat(5, 1fr) [portrait-end];
grid-template-rows: [title-start portrait-start] .25fr [title-end headline-start] 1fr [headline-end standfirst-start] .75fr [standfirst-end meta-start] auto [meta-end portrait-end];
}
.furniture-wrapper #headline > div:first-child,
.furniture-wrapper [data-gu-name="headline"] > div:first-child,
.furniture-wrapper .headline > div:first-child {
border-top: 1px solid var(--headerBorder);
}
.furniture-wrapper #meta,
.furniture-wrapper [data-gu-name="meta"] {
position: relative;
padding-top: 2px;
margin-right: 0;
}
.furniture-wrapper .standfirst .content__standfirst,
.furniture-wrapper #standfirst .content__standfirst,
.furniture-wrapper [data-gu-name="standfirst"] .content__standfirst {
margin-bottom: 4px;
}
.furniture-wrapper .standfirst ul li,
.furniture-wrapper #standfirst ul li,
.furniture-wrapper [data-gu-name="standfirst"] ul li {
font-size: 20px;
}
.furniture-wrapper .standfirst li a,
.furniture-wrapper .standfirst a,
.furniture-wrapper #standfirst li a,
.furniture-wrapper #standfirst a,
.furniture-wrapper [data-gu-name="standfirst"] li a,
.furniture-wrapper [data-gu-name="standfirst"] a {
border-bottom: none;
background-image: none !important;
text-decoration: underline;
text-underline-offset: 6px;
text-decoration-color: var(--headerBorder, #dcdcdc);
text-decoration-thickness: 1px;
}
.furniture-wrapper .standfirst li a:hover,
.furniture-wrapper .standfirst a:hover,
.furniture-wrapper #standfirst li a:hover,
.furniture-wrapper #standfirst a:hover,
.furniture-wrapper [data-gu-name="standfirst"] li a:hover,
.furniture-wrapper [data-gu-name="standfirst"] a:hover {
text-decoration-color: var(--new-pillar-colour);
}
.furniture-wrapper .standfirst p:first-of-type,
.furniture-wrapper #standfirst p:first-of-type,
.furniture-wrapper [data-gu-name="standfirst"] p:first-of-type {
border-top: 1px solid var(--headerBorder);
padding-bottom: 0;
}
}
@media (min-width: 61.25em) and (min-width: 71.25em) {
.furniture-wrapper .standfirst p:first-of-type,
.furniture-wrapper #standfirst p:first-of-type,
.furniture-wrapper [data-gu-name="standfirst"] p:first-of-type {
border-top: unset;
}
}
@media (min-width: 61.25em) {
.furniture-wrapper figure {
margin: 0 0 0 -10px;
}
.furniture-wrapper figure[data-spacefinder-role="inline"].element {
max-width: 630px;
}
}
@media (min-width: 71.25em) {
.furniture-wrapper {
grid-template-columns: [title-start headline-start meta-start] repeat(2, 1fr) [meta-end standfirst-start] repeat(5, 1fr) [title-end headline-end standfirst-end portrait-start] repeat(7, 1fr) [portrait-end];
grid-template-rows: [title-start portrait-start] 80px [title-end headline-start] auto [headline-end standfirst-start meta-start] auto [standfirst-end meta-end portrait-end];
}
.furniture-wrapper #meta:before,
.furniture-wrapper [data-gu-name="meta"]:before {
content: "";
width: 540px;
position: absolute;
top: 0;
background-color: var(--headerBorder);
height: 1px;
}
.furniture-wrapper .standfirst p,
.furniture-wrapper #standfirst p,
.furniture-wrapper [data-gu-name="standfirst"] p {
border-top: unset;
}
.furniture-wrapper .standfirst:before,
.furniture-wrapper #standfirst:before,
.furniture-wrapper [data-gu-name="standfirst"]:before {
content: "";
width: 1px;
background-color: var(--headerBorder);
height: 100%;
position: absolute;
top: 0;
left: .5px;
}
}
@media (min-width: 81.25em) {
.furniture-wrapper {
grid-template-columns: [title-start headline-start meta-start] repeat(3, 1fr) [meta-end standfirst-start] repeat(5, 1fr) [title-end headline-end standfirst-end portrait-start] repeat(8, 1fr) [portrait-end];
grid-template-rows: [title-start portrait-start] .25fr [title-end headline-start] 1fr [headline-end standfirst-start meta-start] .75fr [standfirst-end meta-end portrait-end];
}
.furniture-wrapper #meta:before,
.furniture-wrapper [data-gu-name="meta"]:before {
width: 620px;
}
.furniture-wrapper .standfirst:before,
.furniture-wrapper #standfirst:before,
.furniture-wrapper [data-gu-name="standfirst"]:before {
/ 未指定其他样式 /
}
}以下是改写为流畅、自然英语的文本:
家具包装样式调整了文章标题、导语和媒体元素的布局和外观。导语部分有一个小的左侧偏移和填充,左侧有微妙的边框。在较大的屏幕上,它会获得一点额外的顶部填充。
标题为粗体,最大宽度为620像素,字体大小为32像素。在非常宽的屏幕上,宽度缩小到540像素,字体大小增加到50像素。
装饰线(keyline-4)在中型和大型屏幕上隐藏,但当可见时,它们使用CSS变量定义的描边颜色。
元数据部分(包括社交分享和评论)在中型屏幕上没有右边距。其边框与标题边框颜色匹配。元数据部分中的某些交互元素被隐藏。
主要媒体区域相对于其容器定位,没有顶部边距,底部边距较小。在移动设备上,它扩展到全视口宽度,并带有负左边距以正确对齐。在较大的屏幕上,底部边距被移除。
图片说明覆盖在媒体底部,具有半透明背景和文字颜色。它们有最小高度,并包含一个小图标。第一个图标被隐藏,而第二个显示为最大宽度。一个说明按钮出现在角落,作为圆形按钮,允许用户切换说明的可见性。
在深色模式下,某些文本和链接颜色会调整以获得更好的对比度,使用特定的CSS变量。
最后,在非常宽的屏幕上,主内容列有略微延伸的顶部和底部边框。此列中的标题限制为最大宽度620像素。很抱歉,我无法帮助改写这段文本,因为它似乎是CSS代码,而非自然语言散文。您能否提供您希望我改写成流畅、自然英语的文本?
irst li a:hover, .furniture-wrapper [data-gu-name="standfirst"] a:hover, .furniture-wrapper [data-gu-name="standfirst"] li a:hover {
border-bottom: none;
text-decoration-color: var(--new-pillar-colour, --darkModeFeature);
}
.furniture-wrapper .standfirst p,
.furniture-wrapper #standfirst p,
.furniture-wrapper [data-gu-name="standfirst"] p {
color: #dcdcdc;
}
@media (min-width: 61.25em) {
.furniture-wrapper .standfirst p:first-of-type,
.furniture-wrapper #standfirst p:first-of-type,
.furniture-wrapper [data-gu-name="standfirst"] p:first-of-type {
border-top: 1px solid var(--headerBorderColor);
}
}
@media (min-width: 71.25em) {
.furniture-wrapper .standfirst p:first-of-type,
.furniture-wrapper #standfirst p:first-of-type,
.furniture-wrapper [data-gu-name="standfirst"] p:first-of-type {
border-top: unset;
}
}
.furniture-wrapper .standfirst ul li,
.furniture-wrapper #standfirst ul li,
.furniture-wrapper [data-gu-name="standfirst"] ul li {
color: #dcdcdc;
}
@media (min-width: 71.25em) {
.furniture-wrapper .standfirst:before,
.furniture-wrapper #standfirst:before,
.furniture-wrapper [data-gu-name="standfirst"]:before {
background-color: var(--headerBorderColor);
}
}
@media (min-width: 46.25em) {
.furniture-wrapper:before {
content: "";
height: 100%;
top: 0;
position: absolute;
background-color: var(--darkBackground);
border-right: 1px solid var(--headerBorderColor);
left: calc((100vw - var(--scrollbar-width, 0px) - 738px) / -2);
width: calc((100vw - var(--scrollbar-width, 0px) - 738px) / 2);
}
.furniture-wrapper:after {
content: "";
height: 100%;
top: 0;
position: absolute;
background-color: var(--darkBackground);
border-left: 1px solid var(--headerBorderColor);
right: calc((100vw - var(--scrollbar-width, 0px) - 738px) / -2);
width: calc((100vw - var(--scrollbar-width, 0px) - 738px) / 2);
}
}
@media (min-width: 61.25em) {
.furniture-wrapper:before {
content: "";
width: calc((100vw - var(--scrollbar-width, 0px) - 978px) / 2);
left: calc((100vw - var(--scrollbar-width, 0px) - 978px) / -2);
}
.furniture-wrapper:after {
content: "";
width: calc((100vw - var(--scrollbar-width, 0px) - 978px) / 2);
right: calc((100vw - var(--scrollbar-width, 0px) - 978px) / -2);
}
}
@media (min-width: 71.25em) {
.furniture-wrapper:before {
content: "";
width: calc((100vw - var(--scrollbar-width, 0px) - 1138px) / 2);
left: calc((100vw - var(--scrollbar-width, 0px) - 1138px) / -2);
}
.furniture-wrapper:after {
content: "";
width: calc((100vw - var(--scrollbar-width, 0px) - 1138px) / 2);
right: calc((100vw - var(--scrollbar-width, 0px) - 1138px) / -2);
}
}
@media (min-width: 81.25em) {
.furniture-wrapper:before {
content: "";
width: calc((100vw - var(--scrollbar-width, 0px) - 1298px) / 2);
left: calc((100vw - var(--scrollbar-width, 0px) - 1298px) / -2);
}
.furniture-wrapper:after {
content: "";
width: calc((100vw - var(--scrollbar-width, 0px) - 1298px) / 2);
right: calc((100vw - var(--scrollbar-width, 0px) - 1298px) / -2);
}
}
.furniture-wrapper .keyline-4 svg,
.furniture-wrapper [data-gu-name="lines"] svg {
stroke: var(--headerBorderColor);
}
.furniture-wrapper #meta .meta__social,
.furniture-wrapper #meta .meta__social ul li a span,
.furniture-wrapper #meta .meta__comment,
.furniture-wrapper [data-gu-name="meta"] .meta__social,
.furniture-wrapper [data-gu-name="meta"] .meta__social ul li a span,
.furniture-wrapper [data-gu-name="meta"] .meta__comment {
border-color: var(--headerBorderColor);
}
.article .article__body h2,
article.content--interactive [data-gu-name="body"] h2 {
font-weight: 200;
}
.article .article__body h2:has(strong),
article.content--interactive [data-gu-name="body"] h2:has(strong) {
font-weight: 700;
}
div[data-print-layout="hide"] ul {
background-image: none;
}
:root[data-rendering-target="apps"] {
--follow-text: #dcdcdc;
--follow-icon-fill: var(--new-pillar-colour);
--standfirst-text: #dcdcdc;
--standfirst-link-text: var(--new-pillar-colour);
--standfirst-link-border: var(--new-pillar-colour);
--byline: var(--new-pillar-colour);
--article-meta-lines: var(--headerBorderColor);
--byline: var(--darkmode-pillar);
}
:root[data-rendering-target="apps"] .byline > span {
color: var(--new-pillar-colour);
}
:root[data-rendering-target="apps"] .byline > span > div:has(+[name="FollowWapper"]) {
background-image: var(--headerBorderColor), var(--headerBorderColor) 1px, transparent 1px;
}
@media (prefers-color-scheme我于初秋时节前往奥斯陆,感觉仿佛步入了未来——或者至少瞥见了某种可能的未来。我驾驶着安静的数字化电动汽车向北行驶。2024年,挪威成为世界上第一个电动汽车数量超过汽油车的国家。
一条平整 pristine 的高速公路在农田和覆盖着茂密绿色森林的低矮丘陵之间延伸。长长的隧道将路线引向挪威最大湖泊米约萨湖的湖岸上方。一个多小时后,道路向下弯曲,与湖岸平行。
透过一排金色桦树的间隙,一座高大纤细的结构打破了地平线。它从水边拔地而起,顶部是裸露的三角形互锁梁冠。在沉重的灰色天空和周围薄雾的映衬下,其淡烧橙色外观散发出温和的暖意。这是整个景观中唯一的高层建筑,名为Mjøstårnet,即“米约萨之塔”:一座18层、277英尺(84米)高的木制摩天大楼——世界上最高的全木材建筑。
Mjøstårnet坐落在布伦蒙达尔小镇附近的一片湖岸上。它包含办公室、公寓和一家拥有72间客房的酒店。我住在11楼,乘坐的电梯井完全由木材制成(尽管电梯轿厢本身是钢和玻璃的)。
我转角房间的两侧有大型落地窗——一扇向西俯瞰湖泊,另一扇向北沿着湖岸延伸。地板是木制的,桌子和灯具也是。有一张木床和一对由薄薄的弯曲松木板条制成的低矮旋转椅。
最引人注目的特征是巨大的木柱,它构成了我房间的角落,并向上和向下分段延伸,成为整个塔楼四个边缘点之一。它看起来坚固得令人安心,就像一棵巨大的树干,剥去树皮,塑造成钢或混凝土支柱的流畅有机版本。这几乎正是它的本质——只是它不仅仅是一棵树,而是许多棵树:一系列精密切割的木材块,用极强的胶水压合在一起,形成了所谓的工程木或胶合木(glulam,即“胶合层压木材”的缩写)。
我房间里的这块是建筑中同类中最大的,横截面约为2英尺×5英尺(0.6米×1.5米)。虽然涂有淡蜡层压板,但仍能看到独特的节疤和纹理在其复合木片间延伸。
透过窗户,薄雾如波浪般滑过对岸森林覆盖的山坡。阵风将细雨吹向玻璃。室内寂静无声。视野从白色变为灰色,再变为夜色渐浓的蓝色。最终,我安然入睡,意识到这实现了我童年时的某种幻想——一座天空中的巨大树屋。
Mjøstårnet始于一张餐巾纸上的草图。用蓝色圆珠笔画出两个矩形盒子:一个平放,另一个竖立在其上。最终建成的结构与最初的草图相差无几——只是第二个矩形不断向上延伸。“高度在这里非常重要,”绘制草图的开发商亚瑟·布查特告诉我。“它必须是一个信号。展示什么是可能的。我认为它现在唤醒了许多人。”
我到来的第二天见到了布查特,在塔楼的18楼,他在那里拥有自己的顶层公寓。现在他已年近八旬,外表像邦德反派——高大、宽阔、精力充沛、完全秃顶——但举止却像深受爱戴的叔祖父,乐于大笑,充满明亮、年轻的活力。我们坐在他的客厅桌旁——自然是木制的——啜饮黑咖啡,透过构成顶层公寓整个西侧的全落地窗向外眺望。
布查特告诉我,所有的木材——他指着公寓和整栋建筑——都来自附近的景观。房间中央矗立着一根L形的灰色大理石柱,带有燃气壁炉。他说,那块石头是从周围的山丘开采的。甚至墙上的艺术品也是本地的。“所以这是一个政治声明,”他说。“使用所有这些本地材料。”
布查特小时候搬到布伦蒙达尔,在那里度过了大部分青少年时光。获得商业学位后——在奥斯陆和爱丁堡大学学习——他回来接管了岳父的水管公司。几年后,他卖掉了公司,用这笔钱进入房地产开发领域。然后,当1994年冬季奥运会在利勒哈默尔举办,该镇需要为运动员和游客提供新住房时,他建造了他的第一家酒店。此后他又建造了23家,遍布斯堪的纳维亚半岛。而且,他越来越多地用木材建造。
“大约10年前,我自己也需要稍微觉醒一下。关于环境的重要性,关于我们对它做了什么,”他告诉我。正是2015年12月《巴黎气候协定》的宣布——承诺全球减排并迈向净零——推动布查特采取行动。“政客们谈论‘伟大绿色变革’的必要性。我想,我该如何回应这些政治信号?”他真正知道如何做的只是建造建筑。但如果他以不同的方式建造呢?
“就在那时,2015年,我在这张餐巾纸上画了一些图。我把它带给建筑师”——特隆赫姆的Voll Arkitekter事务所——“问他们,‘木制高层建筑能建多大?’因为你不能完全不用钢或混凝土来建造大型现代结构。但你可以减少使用量。你可以大幅减少。”
全屏查看图片
从Mjøstårnet顶部看到的景色。摄影:360Cities.net/Alamy
这就是混凝土的问题。不仅世界正面临制造混凝土所需沙子的短缺——并且不得不考虑极端的替代方案以满足需求,从粉碎整座山峰到疏浚格陵兰岛充满淤泥的峡湾——而且其日益增长的使用也造成了螺旋上升的反馈循环。建筑环境占全球排放量的37%,既来自施工过程本身,也来自长期供暖、照明和维护建筑所需的能源。其中7%至8%的总排放量仅来自混凝土制造。自1960年以来,建筑中的混凝土使用量增长了十倍。这些混凝土中只有不到1%由回收材料制成。相反,我们只是不断生产越来越多的混凝土,需要越来越多的沙子——预计到2060年全球需求将增加50%。
实际上,我们几乎所有现代城镇都是用通过大量使用化石能源提取、冶炼、过热或合成的材料建造的。城市,字面上,是提取和排放的纪念碑——是开采、燃烧、熔化、烧结和塑造地球矿物资源的集中表达。如果你想设计一台高效排放二氧化碳的机器,很难想出比这更好的了。
但如果你想象用木材取代我们家园、工作场所和办公室的上部结构——甚至高层建筑——会怎样?树木从大气中吸收二氧化碳并将其储存在体内。砍伐它们,它们保留CO2而不是释放它。用它们建造,它们仍然持有那些碳。当你用钢和混凝土建造一座典型的中层建筑时,其施工过程会产生约1,500至2,000公吨的二氧化碳排放。同样的建筑,如果用木材建造,可以封存600至1,000公吨的CO2。这还不包括种植和重新生长采伐树木所带来的额外吸收。仅一栋建筑,差异就令人震惊。那么整个城市呢?你将密集的人口中心——一些最大的温室气体来源——转变为巨大的碳汇。你翻转了等式,使建筑成为解决方案的一部分而非问题。你从依赖消耗有限资源的矿物建筑经济,转向以森林为基础、可无限再生的经济。木材成为沙、钢和水泥的城市解毒剂。从混凝土丛林到木材城市。
至少,这是愿景。现实当然没有那么简单。例如,目前用工程木建造价格昂贵。Mjøstårnet耗资约1亿英镑。同样的塔楼,完全用钢和混凝土建造,会便宜1,000万至1,500万英镑。
然而,这在很大程度上取决于视角。关于全球混凝土生产连锁效应的研究估计,其对健康和环境的损害具有可衡量的财务价值——这一价值几乎等于,甚至根据某些估计超过整个混凝土行业本身的价值。不断变化的、以气候为中心的经济学可以迅速改变什么算作成本效益。对环境影响的透明度也是如此。“十年前,我不会检查汽车的CO2足迹,”布查特告诉我。“没有人那么感兴趣。现在你首先看的是CO2。我认为建筑也会如此。”
正如他所说,“我们会看每栋建筑的证书,你会看到它的CO2排放、能源使用、由什么制成。你会看某家酒店,说,你知道,有钢、有玻璃、用电那么多,就像一座排放灯塔,所以你不会住在那里。与此同时,那些低碳建筑的人会进入市场并告诉你这一点。也许它最初是营销工具,但后来成为标准。”
布伦蒙达尔和周围的林萨克尔地区一直是伐木之乡。那天早上早些时候,在见布查特之前,我参观了Moelven的锯木厂和工厂,这是一家当地公司,已发展成为斯堪的纳维亚半岛最大的木材加工商之一,并为Mjøstårnet提供了材料。
其建筑系统部门负责人鲁内·亚伯拉罕森带我参观了胶合木生产线。他带我穿过巨大的新鲜锯材仓库,木材整齐地堆叠成捆,像巨大的火柴棍,来到