Добавлены функции для аннотирования ссылок и улучшения стилей заголовков в документации

This commit is contained in:
2026-04-23 19:38:55 +03:00
parent ecb0d8ebc2
commit 9227f2de30
4 changed files with 342 additions and 51 deletions

View File

@@ -185,6 +185,99 @@ const topLinks = [
});
};
const trimDestination = (value, maxLength = 42) => {
if (value.length <= maxLength) return value;
return `${value.slice(0, Math.max(0, maxLength - 1))}…`;
};
const decodePath = (value) => {
try {
return decodeURIComponent(value);
} catch {
return value;
}
};
const annotateLinkDestinations = () => {
const links = document.querySelectorAll('a[href]');
links.forEach((linkNode) => {
if (!(linkNode instanceof HTMLAnchorElement)) return;
if (linkNode.dataset.linkAnnotated === 'true') return;
const rawHref = linkNode.getAttribute('href')?.trim();
if (!rawHref || rawHref.toLowerCase().startsWith('javascript:')) return;
let parsedUrl;
try {
parsedUrl = new URL(rawHref, window.location.href);
} catch {
return;
}
const isHashOnly = rawHref.startsWith('#');
const isHttp = parsedUrl.protocol === 'http:' || parsedUrl.protocol === 'https:';
const isMail = parsedUrl.protocol === 'mailto:';
const isTel = parsedUrl.protocol === 'tel:';
const isExternal = isHttp && parsedUrl.origin !== window.location.origin;
const isSamePageAnchor =
!isExternal && !!parsedUrl.hash && parsedUrl.pathname === window.location.pathname;
const isContentLink = linkNode.closest('.sl-markdown-content') instanceof HTMLElement;
const shouldDecorate =
isContentLink &&
!isHashOnly &&
!linkNode.classList.contains('sl-anchor-link') &&
!linkNode.classList.contains('map-cta-button') &&
!linkNode.classList.contains('map-ghost-button') &&
!linkNode.classList.contains('sl-link-button');
if (shouldDecorate) {
let kind = 'internal';
if (isExternal) kind = 'external';
else if (isMail) kind = 'mail';
else if (isTel) kind = 'tel';
else if (isSamePageAnchor) kind = 'anchor';
linkNode.dataset.linkKind = kind;
let destination = '';
if (isExternal) destination = parsedUrl.hostname.replace(/^www\./, '');
else if (isMail) destination = rawHref.replace(/^mailto:/i, '');
else if (isTel) destination = rawHref.replace(/^tel:/i, '');
else destination = `${decodePath(parsedUrl.pathname)}${parsedUrl.hash || ''}`;
if (destination) {
linkNode.dataset.linkDestination = trimDestination(destination);
}
}
if (isExternal) {
const relValues = new Set((linkNode.rel || '').split(/\s+/).filter(Boolean));
relValues.add('noopener');
relValues.add('noreferrer');
linkNode.rel = Array.from(relValues).join(' ');
if (!linkNode.target) {
linkNode.target = '_blank';
}
}
if (!linkNode.title) {
if (isHashOnly || isSamePageAnchor) {
linkNode.title = `Переход к разделу: ${parsedUrl.hash || rawHref}`;
} else if (isExternal) {
linkNode.title = `Внешняя ссылка: ${parsedUrl.hostname.replace(/^www\./, '')}`;
} else if (isMail) {
linkNode.title = `Написать: ${rawHref.replace(/^mailto:/i, '')}`;
} else if (isTel) {
linkNode.title = `Позвонить: ${rawHref.replace(/^tel:/i, '')}`;
} else {
linkNode.title = `Перейти: ${decodePath(parsedUrl.pathname)}${parsedUrl.hash || ''}`;
}
}
linkNode.dataset.linkAnnotated = 'true';
});
};
const copyTextToClipboard = async (value) => {
if (navigator.clipboard?.writeText) {
await navigator.clipboard.writeText(value);
@@ -312,6 +405,7 @@ const topLinks = [
sanitizeNavLabels();
sanitizeDocHeadings();
decorateSectionIcons();
annotateLinkDestinations();
bindCopyIpChips();
setReadProgress();
window.addEventListener('scroll', setReadProgress, { passive: true });
@@ -329,6 +423,7 @@ const topLinks = [
sanitizeNavLabels();
sanitizeDocHeadings();
decorateSectionIcons();
annotateLinkDestinations();
bindCopyIpChips();
setReadProgress();
});

View File

@@ -19,3 +19,20 @@ description: "Общая информация и веб-карта сервер
Как использовать карту для городов
</a>
</div>
---
## Как сменить скин
На сервере доступна система скинов, которая позволяет установить любой внешний вид. Скин будет отображаться в чате, на карте и в других местах.
### Способ 1. Через команду
- для установки: `/skin set <ссылка на скин / ник лицензионного аккаунта>`
- для сброса: `/skin clear`
### Способ 2. Через сайт SkinRestorer
1. Загрузите скин файлом на сайт: [SkinRestorer](https://skinsrestorer.net/upload)
2. Нажмите кнопку `GENERATE` и скопируйте полученную команду.
3. Введите команду в чате Minecraft.

View File

@@ -2,6 +2,10 @@
title: "Правила"
description: "Полный свод правил сервера PARABOX: пункты, подпункты, санкции и порядок разбирательств."
---
# Правила сервера **PARABOX**
---
### Как работает этот документ
Этот документ нужен для того, чтобы на сервере **PARABOX** были:
@@ -116,10 +120,9 @@ description: "Полный свод правил сервера PARABOX: пун
Базовый порядок урегулирования споров на сервере следующий:
1. добровольное мирное урегулирование;
2. консул;
3. президент;
4. верховный суд;
5. главная администрация как высшая инстанция.
2. суд;
3. президент и консул в пределах своих полномочий;
4. главная администрация как высшая инстанция.
#### Взаимная подотчётность ветвей власти
Президент, суд и исполнительная власть находятся в системе взаимного контроля, влияния и подотчётности.
@@ -173,8 +176,8 @@ description: "Полный свод правил сервера PARABOX: пун
### 1.6 Границы мира
Мир сервера ограничен следующими рамками:
- верхний мир — **20 000 × 20 000** блоков;
- нижний мир — **3 000 × 3 000** блоков.
- верхний мир — **20 000 × 20 000** блоков (10000 блоков во все стороны сервера);
- нижний мир — **3 000 × 3 000** блоков (1500 блоков во все стороны сервера).
Выход за установленные границы, обход ограничений мира и попытки использовать их в ущерб серверу запрещены.
@@ -259,7 +262,7 @@ description: "Полный свод правил сервера PARABOX: пун
- по инициативе президента;
- через установленный порядок обсуждения и согласования.
Для вступления изменений в силу требуется согласование с администрацией и предусмотренное сервером подтверждение со стороны игроков, если такая процедура объявлена как обязательная. Также о всех изменениях в своде правил администрация должна оповещать игроков.
Для вступления изменений в силу требуется согласование с администрацией и предусмотренное сервером подтверждение со стороны игроков, если такая процедура объявлена как обязательная.
---
@@ -322,7 +325,6 @@ description: "Полный свод правил сервера PARABOX: пун
- блокировать проходы;
- перекрывать общественные объекты;
- срывать ивенты;
- мешать лору и сюжету;
- преследовать игроков;
- постоянно провоцировать их на конфликт;
- использовать механики для вреда чужому прогрессу.
@@ -353,7 +355,7 @@ description: "Полный свод правил сервера PARABOX: пун
На общественных объектах действуют правила, установленные их владельцами, городом, государством, президентом или судом, если они не противоречат основным правилам сервера.
### 2.14 Ключевые общественные точки
Ближайший общественный портал в Энд, незерская магистраль и иные стратегически важные точки мира, признанные общественными, не могут использоваться в личных интересах, если это ограничивает других игроков.
Ближайший общественный портал в Энд и иные стратегически важные точки мира, признанные общественными, не могут использоваться в личных интересах, если это ограничивает других игроков.
Запрещено:
@@ -476,8 +478,8 @@ description: "Полный свод правил сервера PARABOX: пун
Администрация вправе отдельно разрешать или запрещать иные моды по своему решению.
### 4.4 Freecam + ReplayMode
Использование Freecam + ReplayMode с прохождением через блоки, просмотром скрытых помещений, баз, тайников, шахт и иных недоступных зон запрещено.
### 4.4 Freecam и ReplayMode
Использование Freecam, ReplayMode, миникарт с отображением пещер и сущностей, или модов с хожим функционалом, таким как прохождением через блоки, просмотром скрытых помещений, баз, тайников, шахт и иных недоступных зон и сущностей запрещено.
### 4.5 Прямо запрещённые инструменты
Запрещены, в том числе:
@@ -557,7 +559,7 @@ AFK допускается только в разумных пределах и
- фермы;
- мастерские;
- шахтные комплексы;
- определенные части города;
- города;
- служебные объекты;
- любые явно обозначенные или логически принадлежащие кому-либо места.
@@ -571,7 +573,7 @@ AFK допускается только в разумных пределах и
- признана городом, судом, президентом либо администрацией.
### 5.3 Спавн
Территория спавна составляет **500×500 блоков**.
Территория спавна составляет **500×500 блоков** (250 блоков во все стороны от нулевых координат).
На спавне запрещены:
@@ -583,7 +585,7 @@ AFK допускается только в разумных пределах и
- действия, мешающие использованию спавна как общественной зоны.
### 5.4 Регистрация города
Город считается официальным только после подачи заявки по форме и её подтверждения.
Город считается официальным только после подачи заявки и её подтверждения.
Заявка на регистрацию города подтверждается:
@@ -600,7 +602,7 @@ AFK допускается только в разумных пределах и
- местные проекты;
- участие в суде и политических процессах.
Все внутренние правила города действуют только в части, не противоречащей правилам сервера. Внутренние правила и распорядки города, также могут быть пересмотрены решением вышестоящей власти.
Все внутренние правила города действуют только в части, не противоречащей правилам сервера.
### 5.6 Открытые общественные зоны города
Каждый официальный город обязан иметь открытые территории для приёма игроков и нормального публичного взаимодействия.
@@ -766,15 +768,13 @@ RP является важной частью сервера **PARABOX**, но
### 6.4 Лор сервера
Официальный лор сервера продвигается, направляется и при необходимости корректируется администрацией.
Игроки и города могут участвовать в лоре и развивать собственные сюжеты, если они:
Игроки могут участвовать в лоре и развивать собственные сюжеты, если они:
- не противоречат основным правилам;
- не ломают атмосферу сервера;
- не присваивают игроку необоснованную власть;
- не мешают общему развитию проекта.
Также игроки могут связывать свой лор и идеи, с помощью администрации, после тщательного изучения и одобрения с их стороны.
### 6.5 Политические и государственные процессы
RP-политика, законы, указы, решения органов власти, выборы и государственные процессы допустимы, если они не противоречат правилам сервера и не превращаются в средство злоупотребления.
@@ -804,7 +804,7 @@ RP-политика, законы, указы, решения органов в
### 7.2 Срок полномочий
Президент, судья и консул избираются на срок **1 месяц**.
После завершения срока полномочий проводятся новые выборы или иная предусмотренная сервером процедура подтверждения новой власти. При этом президентом нельзя становиться более 2 сроков за общее время.
После завершения срока полномочий проводятся новые выборы или иная предусмотренная сервером процедура подтверждения новой власти.
### 7.3 Выборность должностей
На сервере могут выбираться:
@@ -818,7 +818,7 @@ RP-политика, законы, указы, решения органов в
Запрещено:
- одновременно занимать две или более высшие выборные должности;
- одновременно занимать две или три высшие выборные должности;
- одновременно участвовать как кандидат сразу в нескольких выборах в рамках одного избирательного цикла;
- использовать снятие кандидатуры с одной должности для скрытого обхода ограничений другой должности, если это нарушает порядок выборов.
@@ -1290,7 +1290,7 @@ RP-политика, законы, указы, решения органов в
Консул не получает автоматически:
- административные команды;
- право отменять суд;
- право отменять суд без причины;
- право подменять администрацию;
- право действовать вне закона и процедуры.
@@ -1312,6 +1312,9 @@ RP-политика, законы, указы, решения органов в
- использовать служебные инструменты проверки, включая **CoreProtect**, если доступ к ним предоставлен сервером;
- устанавливать, кто посещал территорию, кто взаимодействовал с блоками, кто мог совершить кражу или иное действие;
- проводить обследования местности;
- проводить оперативные мероприятия и оперативные расследования в пределах закона и своей компетенции;
- собирать, фиксировать и передавать в суд улики, полученные законным способом;
- использовать данные CoreProtect и иных разрешённых сервером инструментов для получения улик против предполагаемого нарушителя;
- организовывать законные осмотры и проверки;
- проверять инвентарь игрока, если это необходимо для задержания, расследования, исполнения решения суда или иной установленной процедуры;
- назначать исполнителей и распределять обязанности в рамках исполнительной ветви, если это предусмотрено устройством сервера;
@@ -1342,7 +1345,7 @@ RP-политика, законы, указы, решения органов в
- вмешиваться в дела администрации вне своей компетенции.
### 11.7 Основания для действий исполнительной власти
Задержания, обследования, проверки инвентаря, охрана, конфискации и иные исполнительные действия допускаются только при наличии одного из оснований:
Задержания, обследования, проверки инвентаря, охрана, конфискации, оперативные мероприятия, оперативные расследования и иные исполнительные действия допускаются только при наличии одного из оснований:
- решения суда;
- официального расследования;
@@ -1351,6 +1354,8 @@ RP-политика, законы, указы, решения органов в
- прямого поручения уполномоченного органа сервера;
- чрезвычайной ситуации, где требуется немедленное вмешательство.
При оперативных расследованиях исполнительная власть вправе использовать CoreProtect и иные разрешённые сервером инструменты для поиска следов нарушений, установления действий игроков и получения улик, пригодных для передачи в суд или администрации.
### 11.8 Обязанность фиксации
Исполнительная власть обязана по возможности фиксировать свои действия.
@@ -1398,6 +1403,14 @@ RP-политика, законы, указы, решения органов в
- политические и должностные дела;
- иные вопросы, переданные на рассмотрение.
Суд также отвечает за:
- хранение судебных документов;
- ведение делопроизводства;
- оформление решений;
- работу с судебными материалами;
- передачу официальных документов участникам процесса.
### 12.3 Как подаётся дело
Дело может быть подано через:
@@ -1417,7 +1430,40 @@ RP-политика, законы, указы, решения органов в
6. требования заявителя;
7. свидетелей, если они есть.
### 12.4 Ведение доказательств
### 12.4 Досудебный порядок урегулирования
До обращения в суд стороны обязаны попытаться урегулировать конфликт в досудебном порядке, если это возможно по характеру спора.
#### 12.4.1 Что включает досудебный порядок
Досудебный порядок предполагает:
- попытку мирного урегулирования;
- обращение к другой стороне с претензией;
- предложение решить вопрос без судебного разбирательства;
- фиксацию того, что спор действительно пытались урегулировать.
В суде участники не выясняют отношения заново, а излагают свою позицию, предъявляют доказательства и добиваются правового решения.
#### 12.4.2 Если досудебный порядок не соблюдён
Если досудебный порядок отсутствовал без уважительной причины, суд вправе отказать в принятии заявления или оставить дело без рассмотрения до соблюдения предварительного порядка урегулирования.
### 12.5 Государственная пошлина
Подача судебного заявления облагается фиксированной государственной пошлиной в размере **10 ар.**
Иной размер, льготы, освобождение или особый порядок могут быть установлены отдельным решением сервера, суда или администрации.
### 12.6 Предоставление доказательств до заседания
Все основные доказательства необходимо предоставить судье **до начала судебного заседания**.
#### 12.6.1 Кому можно передать доказательства
В крайнем случае доказательства могут быть переданы:
- судье;
- либо любому члену администрации, если судья временно недоступен.
#### 12.6.2 Последствия поздней подачи
Несвоевременная подача доказательств может повлиять на их оценку, допустимость или возможность учёта в конкретном заседании.
### 12.7 Ведение доказательств
Для защиты своих интересов в суде игрокам настоятельно рекомендуется вести фиксацию важных событий.
Желательно использовать:
@@ -1433,7 +1479,7 @@ RP-политика, законы, указы, решения органов в
Чем лучше сторона фиксирует события, тем проще суду установить факты.
### 12.5 Доказательства
### 12.8 Доказательства
Суд вправе учитывать:
- скриншоты;
@@ -1444,25 +1490,69 @@ RP-политика, законы, указы, решения органов в
- показания свидетелей;
- координаты;
- состояние территории;
- логи и технические данные, если они предоставлены уполномоченным лицом.
- логи и технические данные, если они предоставлены уполномоченным лицом;
- улики, полученные исполнительной властью законным способом.
### 12.6 Поведение в суде
Стороны и участники процесса обязаны вести себя в суде уважительно.
### 12.9 Правила поведения в судебном заседании
В судебном заседании участники обязаны вести себя корректно и уважительно.
За непристойное, оскорбительное, срывающее процесс или демонстративно неуважительное поведение суд может вынести:
#### 12.9.1 Запрещается
Запрещается:
- предупреждение;
- удаление с заседания;
- дополнительный штраф;
- иные процессуальные меры в пределах своих полномочий.
- выяснять личные отношения вместо изложения позиции по делу;
- бегать, прыгать и иным образом нарушать порядок;
- отвлекать суд, присяжных, если они предусмотрены процессом, или иных участников;
- оскорблять присяжных, потерпевших, ответчиков, истцов, прокурора, заинтересованных лиц, понятых, свидетелей, судью и иных участников процесса;
- вмешиваться в действия суда и других участников процесса;
- мешать ведению разбирательства репликами, вопросами и комментариями без разрешения суда;
- допускать шум, спам, хаос и иные формы неуважения к процессу.
### 12.7 Участие президента в судебном процессе
#### 12.9.2 Участники обязаны
Участники обязаны:
- выполнять законные требования и распоряжения судьи;
- соблюдать порядок;
- не проявлять неуважение к суду и другим участникам процесса;
- бережно относиться к имуществу суда;
- соблюдать чистоту, тишину и порядок в здании суда и на его территории.
### 12.10 Формы обращения к суду
#### 12.10.1 Допустимые формы обращения
Во время судебного заседания к суду обращаются следующим образом:
- **если гражданский процесс** — **«Уважаемый Суд»**;
- **если уголовный процесс** — **«Ваша честь»**.
### 12.11 Порядок выступления в судебном заседании
Свои объяснения, показания, вопросы другим участникам и ответы на вопросы участники дают **стоя**, если суд не разрешит иное.
#### 12.11.1 Для уголовного процесса
Участники дают объяснение своей позиции и доказывают её, **без споров между собой**.
Они не ведут взаимную полемику и не отвечают по кругу на тезисы друг друга, если суд прямо этого не разрешил.
#### 12.11.2 Для гражданского процесса
Участники дают объяснение своей позиции и доказывают её.
Допускается **один раз** ответить на **один основной тезис** противоположной стороны, без превращения заседания в спор между участниками.
### 12.12 Фото-, видео- и иная фиксация заседания
Лица, присутствующие в зале суда и осуществляющие разрешённую судом фото- и видеосъёмку, трансляцию, запись или иную фиксацию заседания, не должны мешать порядку в судебном заседании.
### 12.13 Отсутствие участника и доверенное лицо
#### 12.13.1 Участие доверенного лица
Если потерпевший, ответчик, истец или иной участник не может присутствовать на судебном заседании, вместо него может присутствовать доверенное лицо, если такой формат допустим по делу и признан судом.
#### 12.13.2 Если доверенное лицо отсутствует
Если доверенное лицо не предусмотрено либо не представлено, суд вправе провести заседание без отсутствующей стороны на основании доказательств, заранее переданных суду, в том числе через Telegram или иной официальный канал связи.
### 12.14 Поведение в суде и участие президента в процессе
#### 12.14.1 В каких ролях может выступать президент
Президент в рамках суда может выступать:
- как адвокат;
- как подсудимый;
- как лицо, исполняющее роль прокурора.
#### 12.14.2 Какие ограничения действуют для президента
Однако при этом президент:
- не получает процессуальных преимуществ;
@@ -1470,27 +1560,45 @@ RP-политика, законы, указы, решения органов в
- не может требовать особого порядка только по причине должности;
- обязан подчиняться регламенту суда наравне с другими участниками.
### 12.8 Ложные обращения
### 12.15 Выдача решений и материалов дела
Все официальные решения суда, ходы дела, постановления и иные документы выдаются участникам процесса после официального постановления суда для последующего:
- обжалования;
- апелляции;
- передачи в вышестоящие органы;
- исполнения решения.
### 12.16 Ложные обращения
Запрещено подавать ложные иски, фальшивые доказательства, поддельные обвинения и использовать суд как инструмент травли.
### 12.9 Решения суда
Суд может выносить, например, следующие наказания и меры:
### 12.17 Меры за нарушение порядка в суде и решения суда
#### 12.17.1 Возможные меры
За нарушение порядка в суде либо по итогам рассмотрения дела суд может применить одну или несколько мер:
- предупреждение;
- удаление с судебного заседания;
- удаление с заседания после **3 предупреждений**;
- дополнительный штраф;
- обязательство вернуть имущество;
- компенсацию;
- штраф;
- общественные работы;
- тюремное заключение;
- ограничение прав;
- временное отстранение от должности;
- запрет на отдельные действия;
- мут в Minecraft при неоднократных нарушениях в игровом чате;
- мут в Discord при неоднократных нарушениях в чате или голосовых каналах;
- наложение ареста на имущество;
- ограничение свободы;
- исправительные работы;
- изъятие имущества с последующим возвращением игроку, законному владельцу либо передаче администрации по законному решению;
- лишение права занимать определённую должность или заниматься определённой деятельностью;
- иные законные меры, предусмотренные сервером.
### 12.10 Исполнение судебных решений
### 12.18 Исполнение судебных решений
Исполнение решений суда обеспечивает консул и исполнительная власть в пределах своих полномочий.
### 12.11 Пределы суда
### 12.19 Пределы суда
Суд не вправе легализовывать:
- читы;
@@ -1500,10 +1608,11 @@ RP-политика, законы, указы, решения органов в
- слив данных;
- любые иные прямые нарушения основных правил сервера.
### 12.12 Апелляция
### 12.20 Апелляция
Сторона вправе обжаловать решение суда в установленном порядке. Высшей инстанцией по исключительным делам и конфликтам между органами власти выступает администрация.
### 12.13 Роль администрации в судебной системе
### 12.21 Роль администрации в судебной системе
#### 12.21.1 Функции администрации
Администрация не обязана заменять суд в обычных спорах, но выступает:
- высшей инстанцией;
@@ -1511,7 +1620,7 @@ RP-политика, законы, указы, решения органов в
- органом вмешательства в исключительных случаях;
- финальной стороной при конфликте между формальным порядком и безопасностью сервера.
### 12.14 Неисполнение судебного решения
### 12.22 Неисполнение судебного решения
Отказ исполнять законное решение суда может повлечь дополнительную ответственность, вплоть до вмешательства исполнительной власти или администрации.
---

View File

@@ -338,7 +338,8 @@ starlight-menu-button button:hover {
.sl-markdown-content h1,
.sl-markdown-content h2,
.sl-markdown-content h3 {
.sl-markdown-content h3,
.sl-markdown-content h4 {
font-family: 'Sora', sans-serif;
letter-spacing: 0.005em;
line-height: 1.24;
@@ -362,6 +363,13 @@ starlight-menu-button button:hover {
margin-bottom: 0.5rem;
}
.sl-markdown-content h4 {
margin-top: 1rem;
margin-bottom: 0.36rem;
font-size: clamp(0.96rem, 0.93rem + 0.18vw, 1.07rem);
color: color-mix(in srgb, var(--sl-color-white) 86%, var(--wiki-blue-2));
}
.sl-markdown-content .sl-heading-wrapper.level-h3 > h3 {
display: inline-flex;
align-items: center;
@@ -413,6 +421,61 @@ starlight-menu-button button:hover {
text-decoration-thickness: 0.07em;
}
.sl-markdown-content :is(p, li, td, blockquote) a[href]:not(.sl-anchor-link):not(.map-cta-button):not(
.map-ghost-button
):not(.sl-link-button):not([href^='#']) {
display: inline-flex;
align-items: center;
justify-content: center;
min-height: 2.44rem;
max-width: min(100%, 100ch);
margin: 0.1rem 0.2rem 0.1rem 0;
padding: 0.55rem 1rem;
border: 1px solid color-mix(in srgb, var(--sl-color-accent) 48%, transparent);
border-radius: 0.2rem;
background: linear-gradient(
110deg,
color-mix(in srgb, var(--wiki-blue-2) 76%, #233145),
color-mix(in srgb, var(--wiki-purple-2) 66%, #273850)
);
color: #f8fbff;
text-decoration: none;
font-family: 'Sora', sans-serif;
font-weight: 600;
font-size: 0.95rem;
letter-spacing: 0.008em;
line-height: 1;
overflow-wrap: anywhere;
box-shadow: 0 6px 14px color-mix(in srgb, var(--sl-color-accent) 18%, transparent);
transition: transform 170ms ease, border-color 170ms ease, box-shadow 170ms ease;
}
.sl-markdown-content :is(p, li, td, blockquote) a[href]:not(.sl-anchor-link):not(.map-cta-button):not(
.map-ghost-button
):not(.sl-link-button):not([href^='#']):hover {
color: #ffffff;
text-decoration: none;
transform: translateY(-1px);
border-color: color-mix(in srgb, var(--sl-color-accent) 64%, transparent);
box-shadow: 0 10px 18px color-mix(in srgb, var(--sl-color-accent) 24%, transparent);
}
.sl-markdown-content :is(p, li, td, blockquote) a[href]:not(.sl-anchor-link):not(.map-cta-button):not(
.map-ghost-button
):not(.sl-link-button):not([href^='#']):focus-visible {
outline: none;
border-color: color-mix(in srgb, var(--sl-color-accent) 72%, transparent);
box-shadow:
0 0 0 1px color-mix(in srgb, var(--sl-color-accent) 30%, transparent),
0 0 0 4px color-mix(in srgb, var(--sl-color-accent) 20%, transparent);
}
.sl-markdown-content :is(p, li, td, blockquote) a[href]:not(.sl-anchor-link):not(.map-cta-button):not(
.map-ghost-button
):not(.sl-link-button):not([href^='#']):active {
transform: translateY(0) scale(0.98);
}
.sl-markdown-content code {
border-radius: 0.16rem;
border: 1px solid color-mix(in srgb, var(--sl-color-hairline) 78%, transparent);
@@ -924,21 +987,28 @@ starlight-theme-select .caret {
min-height: 2.44rem;
padding: 0.55rem 1rem;
border-radius: 0.2rem;
border: 1px solid color-mix(in srgb, var(--sl-color-hairline) 92%, transparent);
background: color-mix(in srgb, var(--wiki-card) 94%, transparent);
color: var(--sl-color-gray-1);
border: 1px solid color-mix(in srgb, var(--sl-color-accent) 48%, transparent);
background: linear-gradient(
110deg,
color-mix(in srgb, var(--wiki-blue-2) 76%, #233145),
color-mix(in srgb, var(--wiki-purple-2) 66%, #273850)
);
color: #f8fbff;
text-decoration: none;
font-family: 'Sora', sans-serif;
font-weight: 600;
font-size: 0.92rem;
transition: border-color 170ms ease, background 170ms ease, color 170ms ease, transform 170ms ease;
font-size: 0.95rem;
letter-spacing: 0.008em;
box-shadow: 0 6px 14px color-mix(in srgb, var(--sl-color-accent) 18%, transparent);
transition: transform 170ms ease, border-color 170ms ease, box-shadow 170ms ease;
}
.map-ghost-button:hover {
color: var(--sl-color-white);
color: #ffffff;
text-decoration: none;
transform: translateY(-1px);
border-color: color-mix(in srgb, var(--sl-color-accent) 44%, transparent);
background: color-mix(in srgb, var(--sl-color-accent-low) 60%, transparent);
border-color: color-mix(in srgb, var(--sl-color-accent) 66%, transparent);
box-shadow: 0 10px 18px color-mix(in srgb, var(--sl-color-accent) 24%, transparent);
}
@media (min-width: 50rem) {