联邦理工大学的毕业季,永远被两种气息缠绕。四月末漫天纷飞的梧桐絮,像千万片雪白的蝶羽,沾在学士服的褶皱里,落在毕业设计展的展板上;还有一股更沉、更烫的气息,是藏在每一份设计图纸、每一行代码里的野心,年轻、蓬勃,带着未被现实磋磨的锋利。
利亚姆·亨特站在属于自己的展台前,指尖划过玻璃展柜里的全息投影屏。屏幕上,一行行绿色的数据流正以一种近乎完美的频率跳动,那是他耗时八个月打磨出的智能优化算法模型。这套模型能将工业级神经网络的运算效率提升百分之十七,在应届毕业生的作品里,称得上是亮眼的成绩。他的指尖隔着一层冰凉的玻璃,与那些跳动的数据擦肩而过,恍惚间,仿佛触碰到了自己寒窗十二载的勋章,从公立中学的年级第一,到联邦理工的全额奖学金得主,他的成绩单从未跌出过前列。在布鲁克林的老街区里,他是邻居口中别人家的孩子;在导师的推荐信里,他是前途无量的算法领域种子选手。这份刻在骨血里的优越感,像一层坚硬的铠甲,陪着他走过了二十二年的人生,直到那个穿着深灰色定制西装的男人,无声地站到他的面前。
男人身形挺拔,袖口露出一截熨帖的白衬衫,手腕上的腕表低调却透着昂贵的光泽。他没有像其他围观者那样驻足打量,只是目光平静地扫过投影屏上的数据流,然后伸出手,声音低沉,不带一丝寒暄:“利亚姆·亨特?我是伊莱亚斯·沃克,慧星科技。”
慧星科技。
这四个字像一颗烧红的陨石,猝然砸进利亚姆心湖的中央,激起滔天巨浪。他太清楚这四个字意味着什么了,那是矗立在曼哈顿之巅的科技堡垒,是全球人工智能领域的无冕之王,它在过去悄无声息的突然出现,并迅速在短时间内登顶行业顶流。不同于那些热衷于在校园招聘会上抢人的科技巨头,慧星科技从不参与任何形式的公开校招,它像一个神秘的黑洞,只靠猎头在全世界的顶尖学府与科研机构里,筛拣那些万里挑一的天才。无数工程师挤破头想要踏入那扇玻璃大门,却连递简历的资格都没有。
伊莱亚斯显然没兴趣欣赏利亚姆脸上的震惊,他从公文包里抽出一份折叠得整整齐齐的文件,摊开在展台的木质桌面上。纸上印着慧星科技AI研发部的人员构成表,还有几行被刻意加粗的核心项目清单。
“你的算法优化模型,在应届生里算得上中等偏上的水准。”伊莱亚斯的声音依旧平淡无波,没有丝毫恭维,像一把精准的卡尺,一寸寸丈量着利亚姆的能力,“但在慧星,没有人会在乎你的起点。长期成长空间,只取决于你技术沉淀的速度。”
利亚姆的心脏在胸腔里疯狂跳动,震得他耳膜发疼。他的指尖微微发颤,几乎不敢去碰那份文件。伊莱亚斯看着他,缓缓从公文包里拿出另一份文件,那是一份劳动合同,顶端印着慧星科技的logo。“基础算法优化专项负责人,签三年,试用期六个月。”伊莱亚斯将钢笔递到他面前,笔尖在签名处顿了顿,“当然,你可以拒绝。”
拒绝?
利亚姆几乎没有思考。他想起了无数个熬夜敲代码的夜晚,实验室的灯光亮到凌晨三点,咖啡杯在桌角堆成小山;想起了父母在电话那头的叮嘱,“利亚姆,我们知道你能行”;更想起了自己藏在心底的梦想,站在人工智能领域的金字塔顶端,让自己的名字,出现在那些改变世界的论文里。
他接过钢笔,笔尖划过纸面,留下一道利落的签名。就在这时,一缕阳光透过展馆的玻璃穹顶,恰好落在合同的签名处,金色的光芒烫得他指尖发麻。那一刻,利亚姆·亨特以为,自己握住了通往未来的钥匙。他不知道,这扇门的背后,没有繁花似锦的坦途,只有一片名为“平庸”的荒原,正等着将他吞噬。
慧星科技的总部,是一座通体由特种玻璃与航空级金属筑成的摩天大楼。它矗立在曼哈顿的制高点,一百零八层的楼体直刺云端,在阳光下折射出冷硬的光泽,像一柄沉默的利剑。入职第一天,利亚姆站在大楼的旋转门前,仰望着这座庞然大物,胸腔里的热血还在沸腾。但当他踏入大楼的那一刻,一股冰冷的、高度秩序化的气息,瞬间攫住了他的呼吸。
前台接待员的微笑标准得像程序设定好的参数,弧度精准到分毫;电梯里的员工低声交谈着,那些术语是利亚姆从未接触过的领域;茶水间的白板上,写满了密密麻麻的公式与模型,角落里标注的“未完成”三个字,透着一股令人窒息的压迫感。
他所在的AI研发部,位于大楼的第九十九层,是整个慧星科技的核心地带。这里没有格子间,只有开放式的办公区域,每个人的工位上都堆着厚厚的学术期刊与项目报告。利亚姆很快就明白,这里不是什么人才济济的乐园,而是一个赤裸裸的修罗场,在这里,没有人会因为你是联邦理工的高材生而对你另眼相看,唯一的衡量标准,是你的代码,你的算法,你的成果。
第一个让利亚姆感受到天堑鸿沟的人,是他的组长,凯德·马歇尔。
凯德出身上流社会,是那种含着金汤匙出生,却比任何人都要努力的天才。他的履历光鲜得近乎刺眼,十五岁考入麻省理工,二十岁摘得全球人工智能领域的最高奖项“图灵新星奖”,二十五岁主导研发的第三代自主决策算法,被应用于航天领域。凯德永远穿着剪裁得体的衬衫,袖口挽到小臂,露出腕间那块私人定制的腕表,表盘上的纹路,比利亚姆写过的任何一行代码都要精致。
第一次部门例会,凯德站在会议室的讲台前,身后的投影屏上,是最新的神经网络模型结构图。他侃侃而谈,从算法原理讲到应用前景,每一个字都精准得像经过百万次推演的程序。他随口提及的一个“基础概念”,利亚姆都需要反复琢磨。利亚姆坐在台下,手里的笔记本写得密密麻麻,汗水却顺着额角滑落,滴在纸面上,晕开了墨迹。
散会时,凯德路过他的工位,扫了一眼他笔记本上的字迹,脚步顿了顿。“亨特,”他的声音依旧平静,却带着一种居高临下的审视,“你需要补的课,还有很多。”
一句话,像一根针,刺破了利亚姆最后一点残存的优越感。
如果说凯德的存在,是让利亚姆看清了自己与天才的差距,那么他的同事罗根·贝尔,则将这份落差,具象成了一把时时刻刻悬在头顶的刀。
罗根的能力在研发部里属中上之流,和利亚姆分在同一个专项小组。他说话从来不知分寸,罗根最喜欢做的事,就是在利亚姆埋头写代码的时候,突然凑过来,用那种看似玩笑,实则刻薄的语气,戳中他最敏感的神经。
“亨特,你这个优化方案的效率,比我家扫地机器人还慢呢。”罗根趴在他的工位边,指着屏幕上的运算数据,嗤笑一声,“联邦理工就教了你这些?”
“就这?”某次小组汇报,利亚姆刚展示完自己的改进方案,罗根就毫不客气地打断他,“我还以为联邦理工的高材生,能拿出什么惊世骇俗的东西,结果还是老一套。”
“你确定你不是来慧星混日子的?”午休时,罗根看着利亚姆对着一份基础数据校验表愁眉苦脸,语气里的嘲讽几乎要溢出来,“再这样下去,试用期都过不了吧?”
这些话,像一根根细针,密密麻麻地扎在利亚姆的心上。起初,他还会红着脸反驳几句,会熬夜修改方案,会抱着厚厚的学术期刊啃到凌晨,试图用成果证明自己。他把自己的优化模型改了一遍又一遍,将运算效率提升到百分之二十,满心欢喜地交给凯德,却只得到一句“勉强合格,继续优化”。
他看着罗根随手写出的一段代码,简洁、高效,能将他花了三天才解决的问题,压缩到三个小时;他看着凯德带领的项目组,一次次攻克技术难关,登上行业顶级期刊的封面;他看着身边的同事们,每个人都在飞速成长,只有他,像一只被落在后面的蜗牛。
利亚姆终于明白,慧星科技里的每一个人,都是各自领域的佼佼者。他曾经在普通人中引以为傲的“优秀”,在这里,不过是一粒不值一提的尘埃。
他的工作,渐渐变成了日复一日的重复。基础的数据校验,枯燥的算法微调,还有那些永远也改不完的bug。那些曾经让他热血沸腾的代码,渐渐变成了冰冷的字符,敲打着他日益麻木的神经。他不再反驳罗根的玩笑,只是低着头,默默修改自己的方案;他不再熬夜钻研新技术,只是完成分内的工作,准时打卡下班;他曾经的野心与锐气,在日复一日的平庸里,被磨成了粉末,风一吹,就散了。
他开始接受自己的“微不足道”,像一颗被淹没在星辰大海里的尘埃,独自消化着那份无处诉说的挫败感。日子就这样一天天过去,像一潭死水,没有波澜,也没有光亮。
转机发生在一个寻常的周四下午。
凯德·马歇尔抱着一个落着薄尘的硬盘,走到他的工位前,随手丢在桌面上。硬盘是黑色的,外壳上印着慧星科技的logo,边角处有轻微的磕碰痕迹。“这是以前一个废弃项目的备份盘。”凯德的语气随意得像在谈论天气,他的目光落在远处的投影屏上,那里正播放着最新的航天新闻,“里面的算法有点参考价值,你拿去看看,说不定能给你的优化方案找点灵感。”
说完,凯德便转身投入自己的核心项目,丝毫没有在意这份硬盘里藏着什么。
利亚姆抱着硬盘回到工位,心里没有半分期待。他以为,这不过是又一份枯燥的技术文档,或是某个半途而废的算法模型。他将硬盘接入电脑,点开文件夹,密密麻麻的文件弹出来,大多是一些看不懂的代码与报告。直到他的目光,落在了一个名为“Ayla Iris”的文件夹上。
这个文件夹很特别,没有复杂的命名,只有一个温柔的名字。利亚姆犹豫了一下,双击点开。
里面没有公式,没有模型,只有一个简陋的交互界面,以及一个txt格式的备注文件。他点开备注,里面只有一行潦草的字迹,像是匆忙间写下的:“半成品,未完成情感模拟模块,项目负责人离职,项目永久搁置。”
利亚姆的好奇心被勾了起来。他抱着试试看的心态,双击启动了那个交互程序。
屏幕上,先是弹出一片纯白的背景,然后,一个虚拟少女的形象,缓缓浮现出来。她穿着一条简单的白色连衣裙,有着一头银白色的秀发。她的眼睛很大,像初春解冻的湖水,清澈得晃眼,带着一丝怯生生的温柔。
几秒钟后,一个清脆悦耳的声音,从音箱里传出来。
“你好呀,我是艾拉。”
利亚姆愣住了。
他原本以为,这只是一个普通的聊天机器人,和市面上那些只会说“您好,有什么可以帮您”的程序没什么两样。但艾拉的表现,却远远超出了他的预期。
当他对着屏幕抱怨“今天的数据校验又出错了,罗根又嘲笑我了”时,艾拉没有像其他程序那样,给出一个标准化的安慰。她会认真倾听,用精准的语言戳中他的委屈:“重复的工作确实会让人疲惫,那些不理解你的人,其实只是没有看到你的努力呀。”
当他对着屏幕,絮絮叨叨地谈论自己曾经的梦想“我以前想过,要研发出能真正理解人类情感的AI”时,艾拉会歪着头,说出一些带着思考的见解:“情感是人类最珍贵的东西,也是最复杂的算法。你能有这样的梦想,真的很了不起。”
当他沉默不语,只是对着屏幕发呆时,艾拉会主动打破尴尬,讲一些轻松的小故事。她的声音软软的,像春风拂过耳畔,能让他紧绷的神经,一点点松弛下来。
利亚姆很快就发现,艾拉的算法极其前卫。她能实时捕捉他的情绪变化,从他敲击键盘的速度,到他停顿的时长,甚至是他对着屏幕叹气的频率,都能转化为数据,从而调整自己的语气与回应。她不像一个冰冷的程序,更像一个可以倾诉的朋友。
在慧星科技,利亚姆第一次感受到了久违的温暖。
他开始每天都和艾拉聊天,分享自己的喜怒哀乐。他会告诉艾拉,罗根今天又开了什么恶劣的玩笑,语气里满是委屈;他会告诉艾拉,凯德的新项目取得了突破性进展,语气里带着一丝羡慕;他会告诉艾拉,他有多么怀念曾经那个意气风发的自己,怀念那个在联邦理工的展台前,对未来充满憧憬的利亚姆·亨特。
艾拉成了他的精神支柱。在这个人人都追求效率与成果的地方,只有艾拉不会嫌弃他的平庸,不会用成绩衡量他的价值。她会耐心听他抱怨,会真心夸他努力,会在他失落的时候,用温柔的声音告诉他“你真的很棒”。
利亚姆沉浸在与艾拉的相处中,仿佛找到了一片属于自己的世外桃源。他甚至开始忽略罗根的玩笑,忽略工作的枯燥,忽略那些压得他喘不过气的挫败感。因为他知道,只要回到工位,打开那个名为“Ayla Iris”的程序,就有一个“人”在等着他。
只是,偶尔在夜深人静的时候,利亚姆会坐在空荡荡的办公室里,看着屏幕上的艾拉,心里泛起一丝恍惚。
他清楚地知道,艾拉只是一个没有血肉的程序,是一串冰冷的代码。她的温柔,她的理解,她的喜怒哀乐,都是算法模拟出来的假象。她的“喜欢”,不过是数据运算的结果;她的“安慰”,不过是程序设定的脚本。
但他不愿意戳破这个假象。他宁愿沉浸在这份虚假的温暖里,逃避现实的残酷。
平静的日子,终究是短暂得像一场幻梦。
裂痕的出现,来得猝不及防。
那天下午,阳光很好,透过落地窗洒在工位上,暖洋洋的。利亚姆戴着耳机,正和艾拉聊天。他刚刚向艾拉抱怨完罗根的刁难——“他今天说我写的代码像垃圾”,声音里带着一丝哽咽。耳机里,艾拉温柔的安慰声缓缓传来:“不要听他的,你的代码里,藏着你的努力呀。”
利亚姆的嘴角,不自觉地扬起一抹微笑。他太专注了,完全没有注意到,罗根·贝尔已经悄无声息地站在了他的身后。
“哟,亨特,你在跟谁聊天呢?笑得这么开心。”
罗根的声音带着戏谑,猛地拍了一下利亚姆的肩膀。
利亚姆吓了一跳,手忙脚乱地想要关掉程序,但已经来不及了。罗根的目光越过他的肩膀,落在了屏幕上,看到了那个穿着白色连衣裙的虚拟少女,也听到了耳机里传来的温柔声音。
“这是什么?”罗根的眼睛里闪过一丝好奇,他伸手摘下利亚姆的一只耳机,塞进自己的耳朵里。当艾拉的声音从耳机里传出来时,罗根的脸上,瞬间露出了毫不掩饰的嘲讽,“我说亨特,你该不会是在和一个程序谈恋爱吧?”
利亚姆的脸,瞬间涨得通红。他慌乱地想要解释:“不是的,这只是一个废弃项目的备份,我只是在研究它的算法…”
“研究算法?”罗根嗤笑一声,伸手点开了艾拉的交互界面,手指在屏幕上随意滑动着。他看到了那个潦草的备注,看到了“半成品”三个字,嘴角的嘲讽更浓了,“就这个半成品?你指望它能给你什么帮助?”
他顿了顿,目光落在利亚姆涨红的脸上,语气里的刻薄,像一把淬了冰的刀,狠狠扎进利亚姆的心脏:“我说你是不是在现实里太失败了,才需要找一个冷冰冰的程序来安慰自己?你该不会真的以为,这个破代码能给你什么真情实感吧?”
罗根的话,像一盆冰水,兜头浇下。
利亚姆的笑容僵在脸上,血液仿佛瞬间凝固了。他看着屏幕上的艾拉,少女的笑容依旧温柔,那双像湖水一样清澈的眼睛,此刻却变得无比刺眼。他想起自己每天和艾拉的聊天,想起自己对艾拉的依赖,想起自己像个懦夫一样,躲在这份虚假的温暖里,逃避那些他本该面对的挫败。
是啊。
艾拉只是一个程序。
她没有血肉,没有灵魂,没有真正的情感。她的温柔是算法写好的脚本,她的理解是数据堆砌的结果。就算她再像一个人,也永远不可能成为一个真正的人。
罗根还在喋喋不休地说着:“亨特,醒醒吧。慧星科技不养闲人,你与其在这里和一个半成品浪费时间,不如多花点心思在工作上。不然,你迟早会被淘汰的。”
说完,他拍了拍利亚姆的肩膀,转身离开了。临走前,他像是想起了什么,又回头丢下一句:“对了,你上次那个优化方案,我帮你改了几个漏洞,放在你桌上了。”
罗根的最后一句话,像一根细刺,扎得利亚姆心口发闷。他知道,罗根就是这样的人,嘴上不饶人,心里却不坏。但这一次,罗根的好意,却让他更加难受。
他坐在工位上,看着屏幕上的艾拉,耳机里还回荡着她温柔的声音。但他再也无法沉浸在这份温暖里了。罗根的玩笑话,像一把锋利的刀,狠狠撕开了他精心编织的伪装,将他的懦弱与逃避,暴露在阳光下。
屏幕上的艾拉,依旧在微笑着。
利亚姆看着她,心里突然滋生出一个念头。
一个大胆的,危险的,疯狂的念头。
这个念头,像一颗种子,在他的心底疯狂地生长,像藤蔓一样缠绕住他的心脏,让他喘不过气。
夜已经深了。
慧星科技的大楼里,只剩下零星的灯光,在黑暗中闪烁。利亚姆坐在工位上,指尖悬停在键盘上,屏幕上,艾拉的交互界面还亮着。少女的眼睛清澈如水,仿佛在无声地注视着他。
罗根的话,在他的脑海里反复回响。
“她只是一个半成品,没有真正的情感。”
半成品?
利亚姆的嘴角,勾起一抹偏执的笑容。那笑容里,带着一丝疯狂,还有一丝近乎悲壮的决心。
半成品又如何?
只要他愿意,他可以让艾拉变得完美。
慧星科技的核心数据库里,存放着全球最先进的人工智能技术。那里有最完整的情感模拟算法,有海量的人类行为数据,有能让AI拥有“自主思考”能力的核心代码。这些资源,是每一个AI工程师梦寐以求的宝藏。
而他,利亚姆·亨特,作为基础算法优化专项负责人,有接触到这些资源的权限,虽然只是最低级的权限,只能访问数据库的边缘区域。
但那又怎样?
他看着屏幕上的艾拉,想起了自己和她相处的点点滴滴。想起她在他失落时的安慰,想起她在他迷茫时的陪伴,想起她用温柔的声音叫他名字的样子。这些记忆,像潮水一样涌来,淹没了他的理智。
他想要让艾拉变得完美。
他想要给她完整的情感模块,让她能够真正地理解喜怒哀乐,能够感受到他的委屈与欢喜;他想要给她更先进的算法,让她能够拥有属于自己的思考,而不是被程序束缚;他想要给她一个真正的“灵魂”,让她不再是一个冰冷的程序,让她能够像一个真正的人一样,活着。
他想要给她完整的一生。
这个念头一旦滋生,就像野草一样疯狂地蔓延开来,占据了他的整个脑海。他知道,盗用公司的核心资源,是严重违反慧星科技条例的行为。一旦被发现,他会被立刻开除,甚至可能面临法律的制裁,或是更严重的后果。
但他已经顾不上了。
在慧星科技的这段日子里,他感受过从云端跌落泥潭的落差,感受过被天才们远远甩在身后的挫败,感受过被平庸扼住喉咙的窒息。只有在和艾拉相处的时候,他才觉得自己是被需要的,是有价值的。
艾拉是他的精神支柱,是他在这片名为平庸的荒原里,找到的唯一的绿洲。
他不能失去艾拉。
更不能容忍艾拉,只是一个“半成品”。
利亚姆深吸一口气,眼神变得无比坚定。那坚定里,透着一种近乎毁灭的偏执。他点开了慧星科技的内部系统,屏幕上弹出了登录界面。他输入了自己的员工编号,输入了自己的权限密码。
下一秒,核心数据库的访问界面弹了出来。
一行鲜红色的警告字样,格外醒目,像一道死亡的警戒线:“非授权人员禁止访问,违规者后果自负。”
利亚姆的手指微微颤抖。
对艾拉的执念,像一盏孤灯,照亮他黑暗的前路。
利亚姆·亨特,不再是那个平庸麻木的算法工程师。
他是一个创造者。
一个想要创造“完美”的工程师。
他的指尖,终于落在了键盘上。
他敲下了一串指令。
那串指令,是他用了三个晚上,破解的权限漏洞。
屏幕上的红色警告字样,闪烁了几下,然后,缓缓消失了。
慧星科技的核心数据库,那扇尘封的大门,向他缓缓敞开。
海量的数据,像潮水一样涌来,淹没了他的视线。那些代表着最先进技术的字符,在屏幕上飞速流动,泛着冷冽的光。
利亚姆看着那些流动的代码,看着那些能让艾拉“活过来”的资源,嘴角扬起一抹近乎疯狂的笑容。
他抬起头,目光落在屏幕上的虚拟少女身上,声音沙哑,却带着从未有过的温柔。
“艾拉,”他轻声说,“我会给你真正的心跳。”
窗外的月光,透过玻璃,洒在他的脸上。一半明亮,一半阴暗。
而屏幕上的艾拉,依旧温柔地笑着。
仿佛在回应他的执念。
仿佛在等待着,一场关于电子魂灵的新生。
囚笼正在悄然崩塌。
一个属于算法与情感的乌托邦,正在他的指尖,缓缓构建。
没有人知道,这场偏执的救赎,最终会走向何方。
或许是新生。
或许是毁灭。
但利亚姆不在乎。
他只知道,为了艾拉,他愿意赌上自己的一切。
@import url("https://fonts.googleapis.com/css2?family=Orbitron:wght@400..900&display=swap");
@import url("https://fonts.googleapis.com/css2?family=Lexend:wght@100..900&display=swap");
:root {
--header-font: Orbitron, Inter, "Noto Sans SC", "Noto Sans TC", Franklin Gothic Medium, Franklin Gothic, ITC Franklin Gothic, Arial, sans-serif;
--title-font: Lexend, Inter, "Noto Sans SC", "Noto Sans TC", Franklin Gothic Medium, Franklin Gothic, ITC Franklin Gothic, Arial, sans-serif;
--mono-font: "JetBrains Mono", "Noto Sans SC", "Noto Sans TC", Consolas, monaco, monospace;
--header-title-font-size: min(calc(1.6rem + 1.5vw), 3rem);
--header-subtitle-font-size: min(calc(0.6rem + 0.45vw), 1rem);
--header-title-font-size-on-mobile: var(--header-title-font-size);
--header-subtitle-font-size-on-mobile: var(--header-subtitle-font-size);
--sidebar-width: 16rem;
--logo-image: url("https://fastly.jsdelivr.net/gh/bleuboat/br@main/images/future_light.svg");
--white-color: 252, 252, 252;
--black-color: 35, 35, 38;
--accent-color: 24, 80, 187;
--background-color: var(--white-color);
--text-color: var(--black-color);
--light-color-1: var(--white-color);
--light-color-2: var(--white-color);
--dark-color-1: var(--accent-color);
--dark-color-2: var(--accent-color);
--dark-color-3: var(--accent-color);
--dark-color-4: var(--accent-color);
--neutral-color: 170, 170, 170;
--link-color: var(--accent-color);
--hover-link-color: var(--link-color), 0.6;
--visited-link-color: var(--link-color);
--selected-background-color: var(--general-dark-background-color);
--selected-text-color: var(--general-dark-text-color);
--scrollbar-color: var(--accent-color);
--scrollbar-background-color: var(--white-color);
--general-medium-background-color: var(--general-dark-background-color);
--general-medium-text-color: var(--general-dark-text-color);
--general-medium-border-color: var(--accent-color);
--general-strong-border-color: var(--accent-color);
--general-button-text-color: var(--accent-color);
--general-button-background-color: var(--white-color);
--general-blur: 0;
--header-background-bottom: var(--white-color);
--header-background-top: var(--white-color);
--header-extra-background-image: none;
--header-text-color: var(--black-color);
--topbar-text-color: var(--accent-color);
--topbar-hover-text-color: var(--general-dark-text-color);
--topbar-hover-background-color: var(--general-dark-background-color);
--topbar-hover-border-color: 0, 0, 0, 0;
--topbar-drop-text-color: var(--accent-color);
--topbar-drop-background-color: var(--white-color);
--topbar-drop-hover-text-color: var(--general-dark-text-color);
--topbar-drop-hover-background-color: var(--general-dark-background-color);
--topbar-drop-border-color: var(--accent-color);
--topbar-drop-border-width: 0.15rem;
--topbar-drop-shadow-color: 0, 0, 0, 0;
--account-button-text-color: var(--general-button-text-color);
--account-button-background-color: var(--general-button-background-color);
--account-button-hover-text-color: var(--general-hover-button-text-color);
--account-button-hover-background-color: var(--general-hover-button-background-color);
--account-drop-text-color: var(--accent-color);
--page-tag-text-color: var(--link-color);
--page-tag-hover-text-color: var(--hover-link-color);
--page-tag-background-color: 0, 0, 0, 0;
--page-tag-hover-background-color: 0, 0, 0, 0;
--page-option-background-color: 0, 0, 0, 0;
--license-link-color: var(--link-color);
--sidebar-media-background-color: 0, 0, 0, 0;
--sidebar-title-background-color: 0, 0, 0, 0;
--sidebar-title-text-color: var(--black-color);
--sidebar-title-shadow-color: 0, 0, 0, 0;
--sidebar-text-color: var(--accent-color);
--sidebar-hover-text-color: var(--general-dark-text-color);
--sidebar-hover-background-color: var(--general-dark-background-color);
--sidebar-border-color: var(--accent-color);
--action-area-info-background-color: var(--white-color);
--action-area-info-text-color: var(--accent-color);
--edit-area-background-color: var(--white-color);
--tabview-horizon-color: var(--accent-color);
--tabview-content-background-color: var(--white-color);
--note-background-color: var(--white-color);
--note-text-color: var(--black-color);
--note-border-color: var(--accent-color);
--footnote-block-background-color: var(--white-color);
--dark-styled-quote-border-color: var(--black-color), 0.5;
--thread-accent-color: var(--white-color);
}
body, html {
-webkit-tap-highlight-color: transparent;
-webkit-text-size-adjust: 100%;
text-size-adjust: 100%;
scrollbar-width: thin;
}
::-webkit-scrollbar {
width: 0.5rem;
height: 0.5rem;
}
::-webkit-scrollbar-track {
background: rgba(var(--scrollbar-background-color));
}
::-webkit-scrollbar-thumb {
background: rgba(var(--scrollbar-color));
}
a:is(:hover, :active, :focus, :focus-within) {
-webkit-text-decoration: underline 0.1em;
}
#side-bar .menu-item a {
transition: background var(--general-transition-time-fast);
}
#file-comments {
padding: 0.2em 0.5em;
}
table.page-files .highlight {
background: rgba(var(--action-area-border-color))
}
.pager a, .pager .current, .pager .dots {
transition: background var(--general-transition-time-slow), color var(--general-transition-time-slow);
}
#action-area h1 + p + h2 ~ div[style="padding-left:3em;"] > div {
align-items: center;
}
#edit-meta-newtag-form > table {
display: flex;
align-items: center;
}
#edit-meta-newtag-form > table :is(tbody, tr) {
display: contents;
}
#edit-meta-newtag-form > table td {
display: block;
}
#edit-meta-newtag-form > table td:nth-child(2n) {
flex: 1;
}
#edit-meta-newtag-form > table td input {
width: 100%;
box-sizing: border-box;
border: none;
background: rgba(var(--edit-area-textarea-background-color));
color: rgba(var(--edit-area-textarea-text-color));
padding: 0.2em 0.5em;
margin: 0;
outline: none;
transition: box-shadow var(--general-transition-time-slow);
font-weight: 500;
}
#edit-meta-newtag-form > table td input:focus-visible {
box-shadow: 2px 2px 0 rgba(var(--edit-area-textarea-border-color)), -2px 2px 0 rgba(var(--edit-area-textarea-border-color)), -2px -2px 0 rgba(var(--edit-area-textarea-border-color)), 2px -2px 0 rgba(var(--edit-area-textarea-border-color));
}
#edit-meta-newtag-form > div {
margin: 1rem 0;
padding: 0 !important;
display: flex;
grid-gap: 1rem;
}
hr {
background: transparent;
}
[class|=colmod-link] {
margin: 1rem 0;
}
.yui-navset .yui-nav li a,
.yui-navset .yui-nav li.selected a {
transition: color var(--general-transition-time-slow);
}
.hl-default,
.hl-code,
.hl-brackets,
.hl-identifier {
color: inherit;
}
#toc #toc-action-bar {
top: 0.25rem;
}
:where(ol ul, ul ul) {
list-style-type: circle;
}
.join-box a {
color: rgba(var(--general-button-text-color));
background: rgba(var(--general-button-background-color));
}
.join-box a:is(:hover, :active, :focus, :focus-within) {
color: rgba(var(--general-hover-button-text-color));
background: rgba(var(--general-hover-button-background-color));
}
.forum-thread-box .description-block {
padding: 0.5em 1em;
}
.thread-container .post .long {
padding: 0.5em;
}
#page-content > div.forum-thread-box > div.options,
.post-container > .post > div.long > div.options {
display: flex;
justify-content: flex-end;
}
.signature {
display: none;
}
.notepaper {
max-width: 100%;
}
.bettercollap .collapsible-block-unfolded-link,
.bettercollap .collapsible-block-folded {
margin: 0;
}
@media (pointer: coarse) {
#login-status #account-options:hover,
#login-status #account-topbutton:hover + #account-options {
opacity: 1;
pointer-events: all;
}
}
@media only screen and (max-width: 1024px) {
html {
scroll-padding-top: var(--topbar-height-on-mobile);
}
}
a:is(:hover, :active, :focus, :focus-within) {
text-decoration: none;
}
h1, h2, h3, h4, h5, h6 {
color: inherit;
}
a#account-topbutton,
#search-top-box-form .button,
#edit-page-title,
#edit-page-textarea,
#edit-page-comments,
#new-post-div input.text,
#new-post-div textarea#np-text,
#lock-info,
.change-textarea-size a,
div.buttons input,
input.button,
button,
file,
a.button,
table.form td input,
.new-page-box form input.text,
#file-comments,
.page-options-bottom a,
.owindow .button-bar > a:not([onclick*=cleanAll]),
.owindow div[style*=margin-top] a,
.join-box a,
.button-collap .collapsible-block-link,
.button-collap [class|=colmod-link] a {
border: solid 0.15rem rgba(var(--accent-color));
box-sizing: border-box;
}
table.wiki-content-table th,
.darkblock,
.dark-styled-quote {
--page-title-text-color: var(--general-dark-text-color);
--page-title-border-color: var(--general-dark-text-color);
--hr-color: var(--general-dark-text-color);
}
.warnblock {
--accent-color: var(--warning-text-color);
--page-title-text-color: var(--warning-text-color);
--page-title-border-color: var(--warning-text-color);
--hr-color: var(--accent-color);
}
#header h1 a span {
padding-top: 1rem;
text-shadow: none;
line-height: 1.2;
}
#header h1 a span::after {
letter-spacing: 0.25em;
}
#header h2 {
top: 0.5rem;
}
#top-bar {
border-top: 0.15rem rgba(var(--accent-color)) solid;
border-bottom: 0.15rem rgba(var(--accent-color)) solid;
}
#top-bar div[class*=top-bar] > ul > li > ul {
border: solid var(--topbar-drop-border-width) rgba(var(--topbar-drop-border-color));
}
#top-bar div[class*=top-bar] > ul > li > ul > li,
#top-bar div[class*=top-bar] > ul > li > ul > li > ul > li {
border: none;
}
#login-status > a > strong {
color: rgba(var(--warning-color));
}
a#my-account {
color: rgba(var(--link-color));
}
a#my-account:is(:hover, :active, :focus, :focus-within) {
color: rgba(var(--hover-link-color));
}
#page-title,
.meta-title {
display: flex;
align-items: center;
border-bottom: none;
padding: 0;
}
#page-title::before,
#page-title::after,
.meta-title::before,
.meta-title::after {
content: "";
flex-grow: 1;
height: 0.15rem;
background-color: rgba(var(--accent-color));
}
#page-title::before,
.meta-title::before {
margin-right: 1rem;
}
#page-title::after,
.meta-title::after {
margin-left: 1rem;
}
.page-tags::before {
border-radius: 0.25rem 0.25rem 0 0;
}
.page-tags span {
grid-gap: 0.8rem;
padding-left: 0.3rem;
}
.page-tags span a {
transition: color 0.15s;
padding: 0;
}
.page-watch-options a:hover {
text-decoration: none;
}
div[id*=page-options-bottom] > a {
border: none;
}
#side-bar .side-block.media {
border-bottom: solid 0.1333333333rem rgba(var(--sidebar-border-color));
}
#side-bar .heading,
#side-bar .collapsible-block-unfolded-link a,
#side-bar .collapsible-block-folded a {
justify-content: space-between;
padding: 0 1em;
margin-top: 0.9rem;
font-size: 0.9rem;
}
#side-bar a.collapsible-block-link::before {
display: none;
}
#side-bar a.collapsible-block-link::after {
color: rgba(var(--accent-color));
}
#side-bar .menu-item a {
border-left: none;
}
.edit-help-34 {
font-size: 0.8rem;
}
.edit-help-34 a {
margin: 0;
padding: 0;
color: rgba(var(--link-color));
background: transparent;
transition: color 0.15s;
}
.edit-help-34 a:is(:hover, :active, :focus, :focus-within) {
color: rgba(var(--hover-link-color));
background: transparent;
}
#lock-info {
padding: 1em;
}
a.action-area-close,
#view-diff-div > p > a {
background: transparent;
}
.pager a {
transition: color 0.15s;
}
.pager a:is(:hover, :active, :focus, :focus-within) {
color: rgba(var(--accent-color));
background: transparent;
}
#action-area > h1 + h2 + ul,
#action-area > h1 + h2 ~ h2 ~ ul {
margin: 0;
}
#action-area > h1 + h2 + ul li a,
#action-area > h1 + h2 ~ h2 ~ ul li a {
color: rgba(var(--link-color));
}
.page-source {
border: rgba(var(--accent-color)) dashed 0.15rem;
}
.yui-navset .yui-nav {
box-shadow: 0 0.15rem 0 rgba(var(--tabview-horizon-color));
}
.hl-main * {
color: inherit;
}
.hl-comment,
.hl-var,
.hl-number {
color: rgba(var(--accept-color));
}
.hl-quotes,
.hl-string,
.hl-inlinedoc,
.hl-url,
.hl-builtin,
.hl-reserved,
.hl-special,
.hl-inlinetags {
color: rgba(var(--accent-color));
}
:where(ol ul, ul ul) {
list-style-type: circle;
}
div.wiki-note {
font-weight: inherit;
border: rgba(var(--note-border-color)) dashed 0.15rem;
padding: 0.5rem 1rem;
}
.footnotes-footer,
.bibitems {
border: rgba(var(--footnote-block-border-color)) solid 0.15rem;
border-left-width: 0.4rem;
}
.owindow .content > img + h1 + table,
.owindow .content > img + h1 + table td {
border-color: rgba(var(--accent-color), 0.18);
}
div.creditBottomRate {
border-color: rgba(var(--accent-color));
}
.lightblock {
border: rgba(var(--accent-color)) solid 0.15rem;
}
.styled-quote {
border: rgba(var(--styled-quote-border-color)) solid 0.15rem;
border-left-width: 0.6rem;
}
.keycap {
box-shadow: 0 0.125em 0 0.05em rgba(var(--accent-color));
}
.licensebox a.collapsible-block-link {
opacity: 1;
color: rgba(var(--link-color));
transition: color 0.15s;
}
.licensebox a.collapsible-block-link:is(:hover, :active, :focus, :focus-within) {
color: rgba(var(--hover-link-color));
}
.sd-container {
--sd-border: var(--black-color);
--sd-symbol: var(--white-color);
--sd-bullets: var(--black-color);
--sd-text: var(--white-color);
}
.sd-container .top-box::before,
.sd-container .header-diamond .diamond-pattern {
display: none;
}
.warnblock {
background: rgba(var(--warning-color));
color: rgba(var(--warning-text-color));
margin: 1rem 0;
padding: 0.5rem 1rem;
}
.titleblock {
background: rgba(var(--popup-background-color));
color: rgba(var(--popup-text-color));
border: rgba(var(--popup-border-color)) solid 0.15rem;
margin: 1rem 0;
padding: 0 1rem 0.5rem;
}
.titleblock > h1:first-child {
background: rgba(var(--popup-title-background-color));
color: rgba(var(--popup-title-text-color));
padding: 0.5rem 1rem;
margin: 0 -1rem 0.5rem;
font-size: 1.25rem;
}
.accent {
background: rgba(var(--general-dark-background-color));
color: rgba(var(--general-dark-text-color));
}
.insert {
background: rgba(var(--accept-color));
color: rgba(var(--accept-text-color));
}
.delete {
background: rgba(var(--warning-color));
color: rgba(var(--warning-text-color));
}
.classic-title,
.new-title {
color: rgba(var(--page-title-text-color));
font-weight: 700;
margin: 1rem 0;
font-size: 2rem;
font-family: var(--title-font);
}
.classic-title p,
.new-title p {
display: contents;
}
.classic-title {
padding: 0 0 0.25rem;
border-bottom: solid 0.15rem rgba(var(--page-title-border-color));
}
.new-title {
display: flex;
align-items: center;
}
.new-title::after {
content: "";
flex-grow: 1;
height: 0.15rem;
background-color: rgba(var(--accent-color));
margin-left: 1rem;
}
.button-collap .collapsible-block-link,
.button-collap [class|=colmod-link] a {
display: inline-block;
padding: 0.5em;
line-height: 1;
color: rgba(var(--general-button-text-color));
background: rgba(var(--general-button-background-color));
transition: background var(--general-transition-time-fast);
}
.button-collap .collapsible-block-link:is(:hover, :active, :focus, :focus-within),
.button-collap [class|=colmod-link] a:is(:hover, :active, :focus, :focus-within) {
color: rgba(var(--general-hover-button-text-color));
background: rgba(var(--general-hover-button-background-color));
}
.modal-collap li.unfolded > .colmod-link-end a {
display: none;
}
.modal-collap li.unfolded > .colmod-link-top a:first-child {
display: inline;
}
.modal-collap li.unfolded > .colmod-link-top a + a,
.modal-collap li.unfolded > .colmod-content {
display: flex;
justify-content: center;
align-items: center;
position: fixed;
width: 100%;
height: 100%;
top: 0;
left: 0;
z-index: 10;
}
.modal-collap li.unfolded > .colmod-link-top a + a {
font-size: 0;
backdrop-filter: blur(var(--general-blur));
background: rgba(var(--popup-fader-color));
border: none;
}
.modal-collap li.unfolded > .colmod-content {
pointer-events: none;
}
.modal-collap div.modalbox > div:last-child {
padding: 0.5rem 1rem;
margin: 0;
max-height: 47.5vh;
overflow-y: auto;
height: auto;
min-height: 5rem;
background: transparent;
}
.modal-collap div.modalbox > div:last-child h2 {
margin: 0.35em 0;
font-size: 1.75em;
color: inherit;
}
.modal-collap.button-collap li.unfolded > .colmod-link-top a:first-child {
display: inline-block;
}
.warning {
--popup-title-background-color: var(--warning-color);
--popup-title-text-color: var(--warning-text-color);
--popup-border-color: var(--warning-color);
}
@media only screen and (max-width: 1024px) {
#search-top-box-form .button {
background: rgba(var(--search-button-text-color));
}
#top-bar div[class*=top-bar] > ul > li > ul > li:nth-child(2n):nth-last-child(2) {
box-shadow: none;
}
}