제81기지의 이사관은 재단의 발길이 닿지 않는, 로키 산맥에 자리 잡은 오두막에 있었다. 그는 뒷베란다에 앉아 상쾌한 아침 공기를 즐기고 있었다. 그는 숨을 깊게 쉬고는, 한 번 더 숨을 쉬었고, 호수 밑에 있는 긴 복도와 어두운 방이 아닌 이런 곳에서 숨을 쉬는 게 얼마나 기쁜지 생각하며 웃었다. 그는 제81기지를 사랑했다. 거기엔 이견이 없다. 하지만 제81기지는 몇 영겁 전에 지어진 것처럼 너무 낡았다. 그곳은 연구를 하고 변칙 개체를 격리하는 놀라운 장소이지만, 마음을 쉴 수 있는 곳은 아니었다.
그래도 그 모든 것들은 그의 마음 저 멀리 있었다. 박사는 커피 한 모금을 마시고 팔에 박힌 정맥 주사를 손에서 한가하게 놀렸다. 칼라일은 지금은 옛날에 재단에서 은퇴한 오랜 친구가 선물해준 책을 읽고 있었다. 그들은 청년일 때 만났으며, 강제로 바깥세상과의 연결을 끊을 때도 함께였다. 한 때 그들은 그들만의 방식으로 서로 사랑하는 사이라 말하곤 했다.
그가 재단을 떠날 때가 오자, 그는 칼라일에게 한 권의 책을 주고 한 가지 약속을 했다. 언젠가 악투스도 마침내 은퇴한 뒤에, 다시 만나 이탈리아로 함께 이주하자고. 그들은 언제나 이탈리아를 사랑했다. 칼라일은 웃었고, 책을 받아들며 그와 약속했다.
“하지만 누가 알겠나, 칼라일.” 올리버가 말했다. “어쩌면 넌 여기 영원히 있을지도 모르지. 태양이 사라질 때까지 연구실에서 힘껏 노력하면서 말이야. 오직 신만이 네가 거의 30년 동안 나이를 먹지 않았다는 걸 알거야.”
칼라일은 웃었고, 친구에게 자기를 기다려 달라고 말했다. 올리버 라이츠는 재단을 나가고 고향인 미니애폴리스로 이주했다. 그는 23년 뒤의 어느 날에 죽었다. 눈보라로 생긴 정전으로 그의 집이 어두워졌고, 그는 빈 장작 난로 옆에서 동사했다. 87세의 나이였다.
같은 날, 칼라일은 위험한 SCP를 약간의 제재와 함께 케테르 등급으로 상향해 달라는 요청을 승인했다. 그는 그 이후에도 올리버의 사망 소식을 듣지 못했다. 그는 외출하려는 찰나에 그 책을 집을 때까지 올리버의 죽음을 상상도 하지 않았다.
그의 눈은 표지 안쪽에 새겨진 손글씨에 멈췄다. 나의 가장 소중한 친구에게, 사랑을 담아. 칼라일은 책을 읽었다.
그는 늦은 아침까지 책을 계속 읽었고, 점심 먹을 걸 생각하기 시작했다. 그는 일어서서 문가를 향해 느리고 조심스럽게 걸어간 뒤, 안으로 들어갔다. 책은 밖에 있는 의자 옆의 책상에 올려둔 채였다.
늙은 박사는 간단하게 스트레칭을 하고 샌드위치를 만들기 시작했다. 호밀빵에 칠면조, 직장에서 기본적으로 먹던 음식이다. 오래된 습관은 잘 버려지지 않는다지만, 적어도 여기서는 이 위에 체다 치즈 한 장은 올릴 수 있었다.
그는 냉장고로 손을 뻗었다. 그리고 한 남자가 방 모퉁이에 서있는 걸 눈치 챘고, 동시에 움직임을 멈췄다.
“아.” 칼라일이 냉장고 문을 열면서 느리게 말했다. “여기까지 와줘서 고맙군. 내가 돌아가기엔 좀 이르지 않나? 내 기분 상, 이틀 정도 밖에 안 지난 거 같은데.”
남자는 조용히 움직임 없이 서있었다. 칼라일은 그가 문을 닫는 동안 방을 대충 훑어봤고, 곧 많은 남자와 여자가 벽에 밀착한 채 그의 오두막에 들어와 있는 걸 알아챘다. 누군가는 양복을 입었고, 누군가는 사복을 입었다. 누군가는 무기도 들고 있었다. 그들 모두 조용히 선 채 앞만 바라보았다. 노인은 고개를 가로저으며 웃었다. “내가 볼 땐 이런 격식은 필요 없는 것 같군. 여기엔 자네와 나 말곤 아무도 없지 않나.”
그러자 그들은 두 명만 남기고 자리를 떴다.
“자, 얘기해 보자고.” 칼라일이 거실로 들어가 고급진 소파에 앉으면서 말했다. 그의 동맥 주사는 아직도 팔에 박혀 금속 봉에 걸린 팩에 연결된 채 그가 어디로 가든지 따라갔다. 칼라일이 자리에 앉는 동안, 금속봉은 목재 바닥을 가로질러 굴러왔다. 칼라일이 앉았을 때, 금속봉은 모든 장면을 조용히 지켜보면서 그의 옆에 다가와 멈췄다. “자리에 앉게나, 조슈아. 빨리 끝나진 않을 것 같으니.”
남자는 아무렇지 않게 조용히 걸어갔다. 그는 의자를 향해 걸어간 뒤, 거기에 앉았다. 그의 눈은 방 건너편에 있는 칼라일에 고정되어 있었다. 늙은 박사는 샌드위치를 계속 먹었다.
“그래서,” 칼라일이 한 입 베어 물고 말했다. “자네 같은 사람이 여기까지 와서 나 같은 사람하고 뭘 하는 건가? 게다가 수행원도 빠짐없이 데려오고 말이야.” 그는 신중하게 입술을 핥았다. “그들은 이 악투스 같은 늙은이에게 거물이 아닌 인간을 보낼 순 없는 건가?” 칼라일이 웃었다.
다른 남자는 움직이지 않았다. ““난 당신이 누구이기 때문에 여기 있는 게 아닙니다. 난 당신이 누구였기 때문에 여기 있는 겁니다.””
칼라일은 삼키기엔 충분히 긴 시간동안 말을 멈췄고, 다시 식사를 계속했다. “조슈아, 그 말은 지금의 내가 원래의 나란 인간하고 다르다는 말을 돌려 말한 거 아닌가. 자네도 알고, 이 늙은이도 아는 사실이지.” 그는 다시 한 입 베어 물었다. “난 자네가 다른 곳에선 운이 더 좋으리라 생각하네, 친구.”
불편한 침묵이 밖에서 새가 지저귀는 소리에 깨졌다. 칼라일은 소리 나는 곳을 보고 싶었지만, 이 남자를 시야에 잡아 두는 게 더 낫다는 걸 알고 있었다.
“제가 찾는 건 그 남자의 젊은 시절이 아닙니다, 진.” 남자가 말했다. “그의 무기에 대한 소질도 아니고요.”
칼라일은 어깨를 으쓱거렸다. 목 뒤에 있는 그의 머리카락이 곤두섰다. “그럼 왜 여기 온건가?”
“아시지 않습니까.”
“좀 봐주게, 난 너무 늙었어.”
다른 남자가 일어섰다. “2년 동안 스물다섯 개체를 격리. 행동 양식과 여러가지 변칙적 특성에 대한 해박한 지식. 격리를 용이하게 하는 데에 필요한, 변칙적 개체들에 관한 상황을 조종하는 능력. 그리고—” 그가 말을 멈췄다. “개체의 잠재력을 이해하는 것. 이게 다 당신이 등급 위원회에 들어간 이유입니다. 당신이 그곳의 수장이 된 이유입니다. 당신의 재임 기간 동안 제81기지에 격리 실패가 일어나지 않은 이유입니다.”
칼라일은 고개를 끄덕이고는 샌드위치의 마지막 조각을 입에 넣었다. “자네가 말한 것들은 말이야, 사실이긴 하지. 사실을 부정하진 않겠어. 하지만 난 이제 늙은이라네, 조슈아. 내 냉철함은 확실히 둔해지고 있어. 분명 그들은 나보단 다른 사람을 더 찾으려 할 걸세.”
“그렇지 않습니다.”
“내가 거절한다면? 난 내 일에 만족하고, 내가 하는 짓을 즐기고 있네. 난 자네가 말한 것들을 묻어두고 지냈네, 조슈야. 난 언제나 그랬듯이 과학자일세. 내가 이런 것 또한 버리기 싫다고 한다면 어쩔 텐가?”
“이건 오래된 빚입니다, 진. 당신이 곧 만기일이 찾아오리라 알았던 빚 말입니다. 해가 지나가고, 세월은 모두에게 덮쳐오지만 선택받은 소수에겐 그렇지 않습니다. 질병은 많은 걸 파괴하지만 누군가는 버팁니다. 그 이유를 잊으신 겁니까?”
칼라일의 얼굴이 어두워졌다. “아니, 난 잊지 않았네.”
조슈아는 문을 향해 걸어갔다. “그럼 평의회에 당신의 결정을 알리겠습니다. 안타깝지만, 당신의 휴가는 여기까진 거 같군요. 당신의 요양은 저희 보안 시설에서 계속 받으실 수 있습니다.”
“늙은이가 잠적이라도 할 것 같나?”
“아뇨.” 조슈아가 말했다. “하지만 당신은 보통 늙은이가 아니죠.”
한 무리의 요원들이 나타나 칼라일의 소지품을 모아서 밖으로 가지고 나왔다. 박사는 거실에서 현관까지 발을 끌면서 걸아가, 대기하고 있던 차까지 모셔졌다. 그가 차 안에 막 발을 들였을 때, 그는 멈췄다가 조슈아를 향해 고개를 돌렸다. “이게 가치 있는 일인가?”
“누가 알겠습니까?” 조슈아가 문을 닫으면서 말했다. “산과 직접 마주했을 때, 당신은 그저 하나의 인간이잖아요, 진. 언제 끝날지는 당신 스스로가 결정할 수 있습니다.”
차는 오두막에서 빠져나와 산을 내려가는 기나긴 오솔길을 내려갔다. 조슈아는 오두막을 마지막으로 조사하기까지 충분한 시간 동안 더 머물렀고, 마침내 그도 떠났다.
펼쳐진 책은 아무도 알아보지 못한 채 뒷 베란다의 책상에 놓여있었다. 한 때 감히 함께 인생을 보내기를 꿈꿨던 두 사람의 사랑의 징표였다. 꿈은 부서지고, 기억은 사라졌지만, 책이 남아있었고, 무어가 필요한지를 말하는 증거가 되었다.
그날 밤, 비가 내렸다.
격리실 문이 느리게 열렸고, 한 여자가 먼저 들어왔다. 제나는 이 여자를 알았다. 그녀의 의사이자, 자기가 슬플 때 말을 해주던 여자였다. 제나는 그녀 뒤에 들어오는 남자를 알지 못했다. 하얀 코트와 어두운 안경, 그리고 머리가 벗겨진 남자였다. 그는 그녀에게 웃었고, 그는 거기에 답해 웃었다. 그는 그렇게 무서워 보이지 않았다.
“제나.” 그녀의 의사가 말했다. “여긴 악투스 박사란다. 너에게 몇가지 질문하고 싶은 게 있다고 해서 오셨어. 그리고 몇 가지 일을 더 해보자꾸나, 괜찮지?”
어린 소녀는 고개를 끄덕였고, 바른 자세로 앉았다. 조라 박사는 방구석으로 갔고 악투스 박사는 앞으로 걸어와 제나 앞에 있는 의자에 앉았다. 그는 손을 뻗었고, 제나는 악수했다.
“반갑구나 제나. 네 이름은 칼라일이란다.” 그는 다시 그녀에게 웃어줬다. “날 아무렇게나 불러도 된단다.”
제나는 잠깐 생각하다가 활기차게 말했다. “칼이라 불러도 되요?”
칼라일은 웃었다. “칼이면 괜찮고말고.” 그는 빨간 공을 코트 주머니에서 꺼냈고, 제나 앞에서 보여주었다. “제나, 웬즐리 박사가 널 특별하다고 하셨단다. 난 이게 매우 흥미롭다고 생각했고, 그래서 난 네가 얼마나 특별한지 알고 싶구나.” 그는 공을 위로 던졌다가 다시 받았다. “이 공을 파란색으로 만들 수 있겠니?”
그는 제나에게 공을 넘겼다. 소녀는 공을 받아들고 뚫어져라 쳐다보다가, 몇 번 흔들어보고는, 책상에 내려놓았다. “전 누가 시키면 아무것도 할 수 없어요.”
칼라일이 고개를 끄덕였다. “괜찮단다. 제나. 이 공을 파랗게 만들어주렴.”
어린 소녀의 눈이 잠시 빛났고, 제나는 공을 손에 꼭 쥐었다. 그녀가 손을 폈을 때, 공은 보라색이었다. 제나는 콜록거리더니, 그걸 악투스에게 주었다. 시선은 아래를 향해 있었다.
칼라일은 웃었다. “부끄러워 할 필요 없단다 얘야.” 그가 공을 보고 말했다. “넌 아주 잘했어.”
제나가 고개를 들었다. “하지만 파란색이 아닌걸요.”
박사는 고개를 들었다. “이게? 나에겐 완벽하게 파란색으로 보이는 걸. 보렴, 다른 단어지 않니. 단어들은 사람이 어디에서 왔느냐에 따라 다른 의미를 가진단다. 나에게는, 이게 파란색 같구나. 나의 사람들은 이걸 파란색이라 부른단다.”
제나가 눈을 찡그렸다. “전… 이게 파란색이라고요?”
칼라일이 고개를 끄덕였다. “내 이름이 악투스 박사인 만큼 확실히 파란색이구나. 이제 이 파란 공을 보라색으로 만들어보렴.”
제나는 다시 공을 바라보고, 공을 손에 꼭 쥐었다. 그녀가 손을 폈을 때, 공은 초록색이 되었다. 제나는 궁금해 하며 칼라일을 바라보았다. 노인은 웃었다.
“잘 했다, 제나.” 그가 느리게 고개를 끄덕이며 말했다. “아주 잘했어.”
@supports(display: grid) { :root { --sidebar-width-on-desktop: calc((var(--base-font-size) * (14 / 15)) * 19); --body-width-on-desktop: 45.75rem; } @media only screen and (min-width: 769px) { #side-bar .close-menu { display: block; position: fixed; top: 0.5rem; left: 0.5rem; width: 3rem; height: 3rem; opacity: 1; pointer-events: all; z-index: -1; } #side-bar .close-menu img { color: transparent; } #side-bar .close-menu::before, #side-bar .close-menu::after { content: ""; box-sizing: border-box; position: fixed; display: block; top: 0.5rem; left: 0.5rem; width: 3rem; height: 3rem; padding: 0; margin: 0; text-align: center; pointer-events: all; cursor: pointer; transition: opacity var(--sidebar-transition-timing); } #side-bar .close-menu::before { --mask:url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='utf-8'%3F%3E%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' id='Hamburger' x='0' y='0' baseProfile='tiny' overflow='visible' version='1.2' viewBox='0 0 32 32' xml:space='preserve'%3E%3Cpath d='M4 10h24c1.1 0 2-.9 2-2s-.9-2-2-2H4c-1.1 0-2 .9-2 2s.9 2 2 2zm24 4H4c-1.1 0-2 .9-2 2s.9 2 2 2h24c1.1 0 2-.9 2-2s-.9-2-2-2zm0 8H4c-1.1 0-2 .9-2 2s.9 2 2 2h24c1.1 0 2-.9 2-2s-.9-2-2-2z'/%3E%3C/svg%3E"); z-index: -1; background-color: var(--toggle-icon-color, rgb(var(--sidebar-links-text))) !important; -webkit-mask: var(--mask); mask: var(--mask); -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; -webkit-mask-position: 50% 50%; mask-position: 50% 50%; -webkit-mask-size: 60%; mask-size: 60%; } #side-bar .close-menu::after { z-index: -2; background-color: var(--toggle-button-bg, rgb(var(--sidebar-bg-color))) !important; border-radius: var(--toggle-roundness, 50%); border: var(--toggle-border-color, rgb(var(--sidebar-links-text))) var(--toggle-border-width, 0.25rem) solid; } #side-bar:focus-within .close-menu, #side-bar:not(:has(.close-menu:hover)):not(:focus-within):hover .close-menu { pointer-events: none; } #side-bar:focus-within .close-menu::before, #side-bar:focus-within .close-menu::after { opacity: 0; pointer-events: none; } #side-bar:not(:has(.close-menu:hover)):not(:focus-within):hover .close-menu::before, #side-bar:not(:has(.close-menu:hover)):not(:focus-within):hover .close-menu::after { opacity: 0; pointer-events: none; } #side-bar { display: block; position: fixed; top: 0; left: calc(var(--sidebar-width-on-desktop)*-1); z-index: 10; transition: left 500ms cubic-bezier(0.4, 0, 0.2, 1) 100ms; height: 100%; overflow-y: auto; overflow-x: hidden; margin-top: 0; } #side-bar:focus-within { left: 0; } #side-bar:not(:has(.close-menu:hover)):not(:focus-within):hover { left: 0; } #side-bar .side-block { margin-top: 1rem; background-color: rgb(0, 0, 0, 0); border-radius: 0; border-left-width: 0px; border-right-width: 0px; } #main-content::before { content: ""; display: block; position: fixed; top: 0; right: 0; z-index: -1; opacity: 0; transition: opacity 500ms cubic-bezier(0.4, 0, 0.2, 1) 100ms, width 500ms cubic-bezier(0.4, 0, 0.2, 1) 100ms; margin-left: var(--sidebar-width-on-desktop); background: rgba(var(--swatch-menubg-black-color), .3) 1px 1px repeat; padding-right: 0; width: 100%; height: 100vh; pointer-events: none; z-index: 99; } #side-bar:focus-within ~ #main-content::before { width: calc(100% - var(--sidebar-width-on-desktop)); opacity: 1; pointer-events: all; } #side-bar:not(:has(.close-menu:hover)):not(:focus-within):hover ~ #main-content::before { width: calc(100% - var(--sidebar-width-on-desktop)); opacity: 1; pointer-events: all; } @supports (-moz-appearance:none) and (background-attachment:local) and (not (-moz-osx-font-smoothing:auto)) { #side-bar { padding: inherit; } } #content-wrap { display: flex; flex-direction: row; width: calc(100vw - (100vw - 100%)); min-height: calc(100vh - calc(var(--final-header-height-on-desktop, 10.125rem))); flex-grow: 2; height: auto; position: relative; margin: 0 auto; max-width: inherit; } #main-content { width: 100%; position: initial; max-height: 100%; padding: 2rem 1rem; width: var(--body-width-on-desktop, 45.75rem); max-width: var(--body-width-on-desktop, 45.75rem); margin: 0 auto; } #page-content { max-width: min(90vw, var(--body-width-on-desktop, 45.75rem)); } @supports (-webkit-hyphens:none) { #side-bar { transition: left 500ms cubic-bezier(0.4, 0, 0.2, 1) 100ms, padding-right 500ms cubic-bezier(0.4, 0, 0.2, 1) 100ms, background-color 500ms cubic-bezier(0.4, 0, 0.2, 1) 100ms; padding-right: 0; background-color: rgb(0, 0, 0, 0); pointer-events: all; overflow-x: visible; overflow-y: visible; z-index: 999; } #side-bar::-webkit-scrollbar { opacity: 0; -webkit-transition: opacity 500ms cubic-bezier(0.4, 0, 0.2, 1) 100ms; transition: opacity 500ms cubic-bezier(0.4, 0, 0.2, 1) 100ms; } #side-bar .close-menu::before { z-index: 999; } #side-bar .close-menu::after { z-index: 998; } #side-bar:hover .close-menu::before, #side-bar:hover .close-menu::after { opacity: 0; } #side-bar:hover { left: 0; background-color: rgba(var(--swatch-menubg-color), 1); padding-right: 0; } #side-bar:hover::-webkit-scrollbar { opacity: 1; } #side-bar:hover~#main-content::before { width: calc(100% - var(--sidebar-width-on-desktop)); opacity: 1; pointer-events: all; } } } }
@supports(display: grid) { :root { --sidebar-width-on-desktop: calc((var(--base-font-size) * (14 / 15)) * 19); --body-width-on-desktop: 45.75rem; } @media only screen and (min-width: 769px) { #side-bar .close-menu { display: block; position: fixed; top: 0.5rem; left: 0.5rem; width: 3rem; height: 3rem; opacity: 1; pointer-events: all; z-index: -1; } #side-bar .close-menu img { color: transparent; } #side-bar .close-menu::before, #side-bar .close-menu::after { content: ""; box-sizing: border-box; position: fixed; display: block; top: 0.5rem; left: 0.5rem; width: 3rem; height: 3rem; padding: 0; margin: 0; text-align: center; pointer-events: all; cursor: pointer; transition: opacity var(--sidebar-transition-timing); } #side-bar .close-menu::before { --mask:url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='utf-8'%3F%3E%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' id='Hamburger' x='0' y='0' baseProfile='tiny' overflow='visible' version='1.2' viewBox='0 0 32 32' xml:space='preserve'%3E%3Cpath d='M4 10h24c1.1 0 2-.9 2-2s-.9-2-2-2H4c-1.1 0-2 .9-2 2s.9 2 2 2zm24 4H4c-1.1 0-2 .9-2 2s.9 2 2 2h24c1.1 0 2-.9 2-2s-.9-2-2-2zm0 8H4c-1.1 0-2 .9-2 2s.9 2 2 2h24c1.1 0 2-.9 2-2s-.9-2-2-2z'/%3E%3C/svg%3E"); z-index: -1; background-color: var(--toggle-icon-color, rgb(var(--sidebar-links-text))) !important; -webkit-mask: var(--mask); mask: var(--mask); -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; -webkit-mask-position: 50% 50%; mask-position: 50% 50%; -webkit-mask-size: 60%; mask-size: 60%; } #side-bar .close-menu::after { z-index: -2; background-color: var(--toggle-button-bg, rgb(var(--sidebar-bg-color))) !important; border-radius: var(--toggle-roundness, 50%); border: var(--toggle-border-color, rgb(var(--sidebar-links-text))) var(--toggle-border-width, 0.25rem) solid; } #side-bar:focus-within .close-menu, #side-bar:not(:has(.close-menu:hover)):not(:focus-within):hover .close-menu { pointer-events: none; } #side-bar:focus-within .close-menu::before, #side-bar:focus-within .close-menu::after { opacity: 0; pointer-events: none; } #side-bar:not(:has(.close-menu:hover)):not(:focus-within):hover .close-menu::before, #side-bar:not(:has(.close-menu:hover)):not(:focus-within):hover .close-menu::after { opacity: 0; pointer-events: none; } #side-bar { display: block; position: fixed; top: 0; left: calc(var(--sidebar-width-on-desktop)*-1); z-index: 10; transition: left 500ms cubic-bezier(0.4, 0, 0.2, 1) 100ms; height: 100%; overflow-y: auto; overflow-x: hidden; margin-top: 0; } #side-bar:focus-within { left: 0; } #side-bar:not(:has(.close-menu:hover)):not(:focus-within):hover { left: 0; } #side-bar .side-block { margin-top: 1rem; background-color: rgb(0, 0, 0, 0); border-radius: 0; border-left-width: 0px; border-right-width: 0px; } #main-content::before { content: ""; display: block; position: fixed; top: 0; right: 0; z-index: -1; opacity: 0; transition: opacity 500ms cubic-bezier(0.4, 0, 0.2, 1) 100ms, width 500ms cubic-bezier(0.4, 0, 0.2, 1) 100ms; margin-left: var(--sidebar-width-on-desktop); background: rgba(var(--swatch-menubg-black-color), .3) 1px 1px repeat; padding-right: 0; width: 100%; height: 100vh; pointer-events: none; z-index: 99; } #side-bar:focus-within ~ #main-content::before { width: calc(100% - var(--sidebar-width-on-desktop)); opacity: 1; pointer-events: all; } #side-bar:not(:has(.close-menu:hover)):not(:focus-within):hover ~ #main-content::before { width: calc(100% - var(--sidebar-width-on-desktop)); opacity: 1; pointer-events: all; } @supports (-moz-appearance:none) and (background-attachment:local) and (not (-moz-osx-font-smoothing:auto)) { #side-bar { padding: inherit; } } #content-wrap { display: flex; flex-direction: row; width: calc(100vw - (100vw - 100%)); min-height: calc(100vh - calc(var(--final-header-height-on-desktop, 10.125rem))); flex-grow: 2; height: auto; position: relative; margin: 0 auto; max-width: inherit; } #main-content { width: 100%; position: initial; max-height: 100%; padding: 2rem 1rem; width: var(--body-width-on-desktop, 45.75rem); max-width: var(--body-width-on-desktop, 45.75rem); margin: 0 auto; } #page-content { max-width: min(90vw, var(--body-width-on-desktop, 45.75rem)); } @supports (-webkit-hyphens:none) { #side-bar { transition: left 500ms cubic-bezier(0.4, 0, 0.2, 1) 100ms, padding-right 500ms cubic-bezier(0.4, 0, 0.2, 1) 100ms, background-color 500ms cubic-bezier(0.4, 0, 0.2, 1) 100ms; padding-right: 0; background-color: rgb(0, 0, 0, 0); pointer-events: all; overflow-x: visible; overflow-y: visible; z-index: 999; } #side-bar::-webkit-scrollbar { opacity: 0; -webkit-transition: opacity 500ms cubic-bezier(0.4, 0, 0.2, 1) 100ms; transition: opacity 500ms cubic-bezier(0.4, 0, 0.2, 1) 100ms; } #side-bar .close-menu::before { z-index: 999; } #side-bar .close-menu::after { z-index: 998; } #side-bar:hover .close-menu::before, #side-bar:hover .close-menu::after { opacity: 0; } #side-bar:hover { left: 0; background-color: rgba(var(--swatch-menubg-color), 1); padding-right: 0; } #side-bar:hover::-webkit-scrollbar { opacity: 1; } #side-bar:hover~#main-content::before { width: calc(100% - var(--sidebar-width-on-desktop)); opacity: 1; pointer-events: all; } } } }
:root { /* header measurements */ --header-height-on-desktop: 10rem; --header-height-on-mobile: 10rem; --header-h1-font-size: clamp(2rem, 5vw, 2.8125rem); --header-h2-font-size: clamp(0.875rem, 3vw, 0.9375rem); --logo-image: url("https://nu-scptheme.github.io/Black-Highlighter/img/logo.svg"); } #header { --search-textbox-text-color: var(--swatch-secondary-color); background: none; } #header::before { content: " "; position: absolute; width: 100%; height: 100%; left: 0; top: 0.75rem; background-image: var(--logo-image); background-repeat: no-repeat; background-position: center 0; background-size: auto calc(var(--header-height-on-desktop) - 1.5rem); opacity: 0.8; pointer-events: none; } #header h1, #header h2 { margin: 0; padding: 0; width: 100%; height: var(--header-height-on-desktop); display: flex; align-items: center; justify-content: center; display: flex; align-items: center; justify-content: center; } #header h1 a, #header h1 a::before, #header h2 span, #header h2 span::before { margin: 0; padding: 0; z-index: 0; display: block; text-align: center; } #header h1 { z-index: 1; } #header h1 a::before, #header h1 a::after { content: var(--header-title); } #header h1 a::before { color: rgb(var(--swatch-text-tertiary-color)); z-index: -1; -webkit-text-stroke: 0.325rem rgb(var(--swatch-text-dark)); } #header h1 a::after { color: rgb(var(--swatch-headerh1-color)); z-index: 1; } #header h2 { z-index: 0; text-transform: uppercase; pointer-events: none; } #header h2 span { margin-top: calc(var(--header-height-on-mobile)/2 + var(--header-h1-font-size)/2 - 2em); } #header h2 span::before, #header h2 span::after { --wght: 600; content: var(--header-subtitle); position: absolute; left: 50%; transform: translateY(-50%) translateX(-50%); width: 100%; text-align: center; } #header h2 span::before { -webkit-text-stroke: 0.25rem rgb(var(--swatch-text-dark)); } #header h2 span::after { color: rgb(var(--swatch-headerh2-color)); z-index: 1; } #search-top-box form[id="search-top-box-form"]:not(:focus-within) input[type="text"] { color: rgba(0, 0, 0, 0); } @media (min-width: 36rem) { #login-status { flex-grow: 1; left: 3%; right: initial; } #login-status::before { --mask-image: none; background-color: transparent; } #login-status:not(:focus-within) { color: rgb(var(--login-line-divider-color)); -webkit-user-select: initial; -moz-user-select: initial; -ms-user-select: initial; user-select: initial; } #login-status #account-topbutton, #login-status:not(:focus-within) #account-topbutton { --clip-path: polygon( 0 0, 100% 0, 100% 100%, 0 100% ); background-color: rgba(var(--login-arrow-color), 0); } #login-status #account-topbutton::before{ --clip-path: polygon( 30% 35%, 70% 35%, 50% 60%, 50% 60% ); --mask-image: initial; content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(var(--login-arrow-color), 1); -webkit-clip-path: var(--clip-path); clip-path: var(--clip-path); } #login-status #account-topbutton::before, #login-status:not(:focus-within) #account-topbutton::before, #login-status:not(:focus-within) #account-topbutton:hover::before { --clip-path: polygon( 30% 35%, 70% 35%, 50% 60%, 50% 60% ); --mask-image: initial; } #login-status:not(:focus-within) #account-topbutton::after { display: none; } #login-status:not(:focus-within) *:not(#account-topbutton):not([href*="account/messages"]) { --clip-path: polygon( 0 0, 100% 0, 100% 100%, 0 100% ); pointer-events: all; -webkit-clip-path: var(--clip-path); clip-path: var(--clip-path); } #login-status:not(:focus-within) *:not(#account-topbutton):not(#account-options):not([href*="account/messages"]) { opacity: 1; } #login-status #my-account { --wght: 300; } #account-options { background: var(--gradient-header); } #search-top-box { top: 1.5em; right: 3%; background: rgba(var(--search-focus-textbox-bg-color), 0.4); box-shadow: calc(var(--search-height) / 2 * -1) 0 calc(var(--search-height) / 2) rgba(var(--search-focus-textbox-bg-color), 0.4); } #search-top-box:focus-within ~ #login-status { opacity: 1; } #search-top-box::after { transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-clip-path 150ms cubic-bezier(0.4, 0, 0.2, 1); transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1), clip-path 150ms cubic-bezier(0.4, 0, 0.2, 1); transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1), clip-path 150ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-clip-path 150ms cubic-bezier(0.4, 0, 0.2, 1); } #search-top-box:not(:focus-within)::after { --clip-path: polygon( 0 0, 100% 0, 100% 100%, 0% 100% ); background-color: rgba(var(--search-icon-bg-color, --dark-accent), 1); -webkit-clip-path: var(--clip-path); clip-path: var(--clip-path); } #search-top-box:not(:focus-within):hover::after { --clip-path: polygon( 0 0, 100% 0, 100% 100%, 0 100% ); background-color: rgb(var(--search-icon-hover-bg-color)); } #search-top-box form[id="search-top-box-form"]:not(:focus-within) { max-width: var(--search-width); } #search-top-box form[id="search-top-box-form"]:not(:focus-within) input[type="text"] { max-width: var(--search-width); padding: 0 var(--search-height) 0 1em; outline-width: 0; background-color: rgb(var(--search-focus-textbox-bg-color), 0.35); color: rgba(var(--search-textbox-text-color), 0.4); cursor: pointer; } #search-top-box form[id="search-top-box-form"]:not(:focus-within) input[type="submit"], #search-top-box form[id="search-top-box-form"]:focus-within input[type="submit"] { pointer-events: all; border: none; } } #page-title::after, .meta-title::after, #page-title::before, .meta-title::before { content: ""; flex-grow: 1; height: 0.0625rem; background: rgb(var(--swatch-primary)); } #page-title::before, .meta-title::before { margin: auto 1.25rem auto auto; }
@supports(display: grid) { :root { --sidebar-width-on-desktop: calc((var(--base-font-size) * (14 / 15)) * 19); --body-width-on-desktop: 45.75rem; } @media only screen and (min-width: 769px) { #side-bar .close-menu { display: block; position: fixed; top: 0.5rem; left: 0.5rem; width: 3rem; height: 3rem; opacity: 1; pointer-events: all; z-index: -1; } #side-bar .close-menu img { color: transparent; } #side-bar .close-menu::before, #side-bar .close-menu::after { content: ""; box-sizing: border-box; position: fixed; display: block; top: 0.5rem; left: 0.5rem; width: 3rem; height: 3rem; padding: 0; margin: 0; text-align: center; pointer-events: all; cursor: pointer; transition: opacity var(--sidebar-transition-timing); } #side-bar .close-menu::before { --mask:url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='utf-8'%3F%3E%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' id='Hamburger' x='0' y='0' baseProfile='tiny' overflow='visible' version='1.2' viewBox='0 0 32 32' xml:space='preserve'%3E%3Cpath d='M4 10h24c1.1 0 2-.9 2-2s-.9-2-2-2H4c-1.1 0-2 .9-2 2s.9 2 2 2zm24 4H4c-1.1 0-2 .9-2 2s.9 2 2 2h24c1.1 0 2-.9 2-2s-.9-2-2-2zm0 8H4c-1.1 0-2 .9-2 2s.9 2 2 2h24c1.1 0 2-.9 2-2s-.9-2-2-2z'/%3E%3C/svg%3E"); z-index: -1; background-color: var(--toggle-icon-color, rgb(var(--sidebar-links-text))) !important; -webkit-mask: var(--mask); mask: var(--mask); -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; -webkit-mask-position: 50% 50%; mask-position: 50% 50%; -webkit-mask-size: 60%; mask-size: 60%; } #side-bar .close-menu::after { z-index: -2; background-color: var(--toggle-button-bg, rgb(var(--sidebar-bg-color))) !important; border-radius: var(--toggle-roundness, 50%); border: var(--toggle-border-color, rgb(var(--sidebar-links-text))) var(--toggle-border-width, 0.25rem) solid; } #side-bar:focus-within .close-menu, #side-bar:not(:has(.close-menu:hover)):not(:focus-within):hover .close-menu { pointer-events: none; } #side-bar:focus-within .close-menu::before, #side-bar:focus-within .close-menu::after { opacity: 0; pointer-events: none; } #side-bar:not(:has(.close-menu:hover)):not(:focus-within):hover .close-menu::before, #side-bar:not(:has(.close-menu:hover)):not(:focus-within):hover .close-menu::after { opacity: 0; pointer-events: none; } #side-bar { display: block; position: fixed; top: 0; left: calc(var(--sidebar-width-on-desktop)*-1); z-index: 10; transition: left 500ms cubic-bezier(0.4, 0, 0.2, 1) 100ms; height: 100%; overflow-y: auto; overflow-x: hidden; margin-top: 0; } #side-bar:focus-within { left: 0; } #side-bar:not(:has(.close-menu:hover)):not(:focus-within):hover { left: 0; } #side-bar .side-block { margin-top: 1rem; background-color: rgb(0, 0, 0, 0); border-radius: 0; border-left-width: 0px; border-right-width: 0px; } #main-content::before { content: ""; display: block; position: fixed; top: 0; right: 0; z-index: -1; opacity: 0; transition: opacity 500ms cubic-bezier(0.4, 0, 0.2, 1) 100ms, width 500ms cubic-bezier(0.4, 0, 0.2, 1) 100ms; margin-left: var(--sidebar-width-on-desktop); background: rgba(var(--swatch-menubg-black-color), .3) 1px 1px repeat; padding-right: 0; width: 100%; height: 100vh; pointer-events: none; z-index: 99; } #side-bar:focus-within ~ #main-content::before { width: calc(100% - var(--sidebar-width-on-desktop)); opacity: 1; pointer-events: all; } #side-bar:not(:has(.close-menu:hover)):not(:focus-within):hover ~ #main-content::before { width: calc(100% - var(--sidebar-width-on-desktop)); opacity: 1; pointer-events: all; } @supports (-moz-appearance:none) and (background-attachment:local) and (not (-moz-osx-font-smoothing:auto)) { #side-bar { padding: inherit; } } #content-wrap { display: flex; flex-direction: row; width: calc(100vw - (100vw - 100%)); min-height: calc(100vh - calc(var(--final-header-height-on-desktop, 10.125rem))); flex-grow: 2; height: auto; position: relative; margin: 0 auto; max-width: inherit; } #main-content { width: 100%; position: initial; max-height: 100%; padding: 2rem 1rem; width: var(--body-width-on-desktop, 45.75rem); max-width: var(--body-width-on-desktop, 45.75rem); margin: 0 auto; } #page-content { max-width: min(90vw, var(--body-width-on-desktop, 45.75rem)); } @supports (-webkit-hyphens:none) { #side-bar { transition: left 500ms cubic-bezier(0.4, 0, 0.2, 1) 100ms, padding-right 500ms cubic-bezier(0.4, 0, 0.2, 1) 100ms, background-color 500ms cubic-bezier(0.4, 0, 0.2, 1) 100ms; padding-right: 0; background-color: rgb(0, 0, 0, 0); pointer-events: all; overflow-x: visible; overflow-y: visible; z-index: 999; } #side-bar::-webkit-scrollbar { opacity: 0; -webkit-transition: opacity 500ms cubic-bezier(0.4, 0, 0.2, 1) 100ms; transition: opacity 500ms cubic-bezier(0.4, 0, 0.2, 1) 100ms; } #side-bar .close-menu::before { z-index: 999; } #side-bar .close-menu::after { z-index: 998; } #side-bar:hover .close-menu::before, #side-bar:hover .close-menu::after { opacity: 0; } #side-bar:hover { left: 0; background-color: rgba(var(--swatch-menubg-color), 1); padding-right: 0; } #side-bar:hover::-webkit-scrollbar { opacity: 1; } #side-bar:hover~#main-content::before { width: calc(100% - var(--sidebar-width-on-desktop)); opacity: 1; pointer-events: all; } } } }
:root { /* header measurements */ --header-height-on-desktop: 10rem; --header-height-on-mobile: 10rem; --header-h1-font-size: clamp(2rem, 5vw, 2.8125rem); --header-h2-font-size: clamp(0.875rem, 3vw, 0.9375rem); --logo-image: url("https://nu-scptheme.github.io/Black-Highlighter/img/logo.svg"); } #header { --search-textbox-text-color: var(--swatch-secondary-color); background: none; } #header::before { content: " "; position: absolute; width: 100%; height: 100%; left: 0; top: 0.75rem; background-image: var(--logo-image); background-repeat: no-repeat; background-position: center 0; background-size: auto calc(var(--header-height-on-desktop) - 1.5rem); opacity: 0.8; pointer-events: none; } #header h1, #header h2 { margin: 0; padding: 0; width: 100%; height: var(--header-height-on-desktop); display: flex; align-items: center; justify-content: center; display: flex; align-items: center; justify-content: center; } #header h1 a, #header h1 a::before, #header h2 span, #header h2 span::before { margin: 0; padding: 0; z-index: 0; display: block; text-align: center; } #header h1 { z-index: 1; } #header h1 a::before, #header h1 a::after { content: var(--header-title); } #header h1 a::before { color: rgb(var(--swatch-text-tertiary-color)); z-index: -1; -webkit-text-stroke: 0.325rem rgb(var(--swatch-text-dark)); } #header h1 a::after { color: rgb(var(--swatch-headerh1-color)); z-index: 1; } #header h2 { z-index: 0; text-transform: uppercase; pointer-events: none; } #header h2 span { margin-top: calc(var(--header-height-on-mobile)/2 + var(--header-h1-font-size)/2 - 2em); } #header h2 span::before, #header h2 span::after { --wght: 600; content: var(--header-subtitle); position: absolute; left: 50%; transform: translateY(-50%) translateX(-50%); width: 100%; text-align: center; } #header h2 span::before { -webkit-text-stroke: 0.25rem rgb(var(--swatch-text-dark)); } #header h2 span::after { color: rgb(var(--swatch-headerh2-color)); z-index: 1; } #search-top-box form[id="search-top-box-form"]:not(:focus-within) input[type="text"] { color: rgba(0, 0, 0, 0); } @media (min-width: 36rem) { #login-status { flex-grow: 1; left: 3%; right: initial; } #login-status::before { --mask-image: none; background-color: transparent; } #login-status:not(:focus-within) { color: rgb(var(--login-line-divider-color)); -webkit-user-select: initial; -moz-user-select: initial; -ms-user-select: initial; user-select: initial; } #login-status #account-topbutton, #login-status:not(:focus-within) #account-topbutton { --clip-path: polygon( 0 0, 100% 0, 100% 100%, 0 100% ); background-color: rgba(var(--login-arrow-color), 0); } #login-status #account-topbutton::before{ --clip-path: polygon( 30% 35%, 70% 35%, 50% 60%, 50% 60% ); --mask-image: initial; content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(var(--login-arrow-color), 1); -webkit-clip-path: var(--clip-path); clip-path: var(--clip-path); } #login-status #account-topbutton::before, #login-status:not(:focus-within) #account-topbutton::before, #login-status:not(:focus-within) #account-topbutton:hover::before { --clip-path: polygon( 30% 35%, 70% 35%, 50% 60%, 50% 60% ); --mask-image: initial; } #login-status:not(:focus-within) #account-topbutton::after { display: none; } #login-status:not(:focus-within) *:not(#account-topbutton):not([href*="account/messages"]) { --clip-path: polygon( 0 0, 100% 0, 100% 100%, 0 100% ); pointer-events: all; -webkit-clip-path: var(--clip-path); clip-path: var(--clip-path); } #login-status:not(:focus-within) *:not(#account-topbutton):not(#account-options):not([href*="account/messages"]) { opacity: 1; } #login-status #my-account { --wght: 300; } #account-options { background: var(--gradient-header); } #search-top-box { top: 1.5em; right: 3%; background: rgba(var(--search-focus-textbox-bg-color), 0.4); box-shadow: calc(var(--search-height) / 2 * -1) 0 calc(var(--search-height) / 2) rgba(var(--search-focus-textbox-bg-color), 0.4); } #search-top-box:focus-within ~ #login-status { opacity: 1; } #search-top-box::after { transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-clip-path 150ms cubic-bezier(0.4, 0, 0.2, 1); transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1), clip-path 150ms cubic-bezier(0.4, 0, 0.2, 1); transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1), clip-path 150ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-clip-path 150ms cubic-bezier(0.4, 0, 0.2, 1); } #search-top-box:not(:focus-within)::after { --clip-path: polygon( 0 0, 100% 0, 100% 100%, 0% 100% ); background-color: rgba(var(--search-icon-bg-color, --dark-accent), 1); -webkit-clip-path: var(--clip-path); clip-path: var(--clip-path); } #search-top-box:not(:focus-within):hover::after { --clip-path: polygon( 0 0, 100% 0, 100% 100%, 0 100% ); background-color: rgb(var(--search-icon-hover-bg-color)); } #search-top-box form[id="search-top-box-form"]:not(:focus-within) { max-width: var(--search-width); } #search-top-box form[id="search-top-box-form"]:not(:focus-within) input[type="text"] { max-width: var(--search-width); padding: 0 var(--search-height) 0 1em; outline-width: 0; background-color: rgb(var(--search-focus-textbox-bg-color), 0.35); color: rgba(var(--search-textbox-text-color), 0.4); cursor: pointer; } #search-top-box form[id="search-top-box-form"]:not(:focus-within) input[type="submit"], #search-top-box form[id="search-top-box-form"]:focus-within input[type="submit"] { pointer-events: all; border: none; } } #page-title::after, .meta-title::after, #page-title::before, .meta-title::before { content: ""; flex-grow: 1; height: 0.0625rem; background: rgb(var(--swatch-primary)); } #page-title::before, .meta-title::before { margin: auto 1.25rem auto auto; }
@font-face { font-family: 'MapoDPPA'; src: url('https://cdn.jsdelivr.net/gh/projectnoonnu/noonfonts_2001@1.1/MapoDPPA.woff') format('woff'); font-weight: 700; font-style: normal; } @supports(display: grid) { :root:lang(ko) { --lgurl: var(--logo-image); --header-title: "SCP 재단"; --header-subtitle: "확보 - 격리 - 보호"; /* Typefaces */ --body-font: "Roboto", 'NanumBarunCatsi', sans-serif; --header-font: "Josefin Sans", 'MapoDPPA', sans-serif; --title-font: "Josefin Sans", 'MapoDPPA', sans-serif; --mono-font: "Fira Code", "Andale Mono", "Courier New", Courier, 'Nanum Gothic Coding', monospace; } #header::before { background-image: var(--lgurl); } } .modalbox { background: rgb(var(--dark-gray-monochrome)); box-shadow: 0 2px 6px rgb(0 79 102 / 50%); } .modalbox .close-credits { filter: invert(1); }
/* 폰트 출처: https://noonnu.cc/font_page/776 */ @font-face { font-family: 'establishRetrosansOTF'; src: url('https://cdn.jsdelivr.net/gh/projectnoonnu/noonfonts_2112@1.0/establishRetrosansOTF.woff') format('woff'); font-weight: normal; font-style: normal; } :root:lang(ko){ --header-title: "재 단"; --header-subtitle: "격리부"; --header-font: "Josefin Sans", "establishRetrosansOTF", sans-serif; --title-font: "Josefin Sans", "establishRetrosansOTF", sans-serif; } #header h2 span { transform: translateY(10px); } .top-right-box > .level { line-height: 0.5; } body .danger-diamond > .arrows { background-color: transparent; }