/* ==UserStyle==
@name Yasashii
@description 官方缺美工,咱就自己上!比WF官方主题好看亿点点~
@namespace github.com/openstyles/stylus
@version 1.1
@author YYYYang
@license MIT
==/UserStyle== */
@-moz-document regexp("workflowy.com") {
/*------------ BODY ------------- */
:root {
--bg-in: hsla(35, 36%, 96%, 1);
/* 内板色 */
--bg-edge: hsla(34, 34%, 90%, 1);
/* 边缘色 */
}
._theme-default {
.pageContainer {
background: var(--bg-edge);
}
.pageContainer .page {
background: var(--bg-in);
}
.header {
background: var(--bg-edge);
border-image: linear-gradient(to right, hsla(36, 38%, 73%, 1), rgba(66, 72, 75, 0) 65%) 1;
}
.leftBar > div {
background: var(--bg-edge);
}
}
._theme-dark {
.header {
/*------------ Header 渐进色底线 ------------- */
border-image: linear-gradient(to right, rgb(66, 72, 75), 40%, rgba(66, 72, 75, 0) 65%) 1;
}
}
}
@-moz-document domain("workflowy.com") {
/*------------ TODO Checkbox ------------- */
/* 让todo方块节点与bullet普通节点 竖直对齐 */
.checkmark:not(.boardColumn):not(.boardCard):not(.dashboard-card) > .name {
a.bullet {
opacity: 0;
}
> .prefix,
> .content {
left: -22px;
}
}
.checkmark:not(.boardColumn):not(.boardCard):not(.dashboard-card) > .name:hover {
a.bullet {
opacity: 1;
transition: opacity 3s ease-in-out;
}
> .prefix,
> .content {
-webkit-animation: slide-right 1.2s 1.5s cubic-bezier(0.250, 0.460, 0.450, 0.940) both;
animation: slide-right 0.2s 1.2s cubic-bezier(0.250, 0.460, 0.450, 0.940) both;
}
> .prefix label:hover {
-webkit-animation: shake-bottom 1s cubic-bezier(0.455, 0.030, 0.515, 0.955) both;
animation: shake-bottom 1s cubic-bezier(0.455, 0.030, 0.515, 0.955) both;
}
}
/* * ----------------------------------------
/* * animation slide-right
/* * ---------------------------------------- */
@-webkit-keyframes slide-right {
0% {
-webkit-transform: translateX(0);
transform: translateX(0);
}
100% {
-webkit-transform: translateX(22px);
transform: translateX(22px);
}
}
@keyframes slide-right {
0% {
-webkit-transform: translateX(0);
transform: translateX(0);
}
100% {
-webkit-transform: translateX(22px);
transform: translateX(22px);
}
}
/* * ----------------------------------------
/* * animation shake-bottom
/* * ---------------------------------------- */
@-webkit-keyframes shake-bottom {
0%,
100% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
-webkit-transform-origin: 50% 100%;
transform-origin: 50% 100%;
}
10% {
-webkit-transform: rotate(2deg);
transform: rotate(2deg);
}
20%,
40%,
60% {
-webkit-transform: rotate(-4deg);
transform: rotate(-4deg);
}
30%,
50%,
70% {
-webkit-transform: rotate(4deg);
transform: rotate(4deg);
}
80% {
-webkit-transform: rotate(-2deg);
transform: rotate(-2deg);
}
90% {
-webkit-transform: rotate(2deg);
transform: rotate(2deg);
}
}
@keyframes shake-bottom {
0%,
100% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
-webkit-transform-origin: 50% 100%;
transform-origin: 50% 100%;
}
10% {
-webkit-transform: rotate(2deg);
transform: rotate(2deg);
}
20%,
40%,
60% {
-webkit-transform: rotate(-4deg);
transform: rotate(-4deg);
}
30%,
50%,
70% {
-webkit-transform: rotate(4deg);
transform: rotate(4deg);
}
80% {
-webkit-transform: rotate(-2deg);
transform: rotate(-2deg);
}
90% {
-webkit-transform: rotate(2deg);
transform: rotate(2deg);
}
}
}
@-moz-document domain("workflowy.com") {
/*------------ 字体 IBM Plex Mono ------------- */
@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&display=swap');
.dialog-box,
.breadcrumbs,
.content,
.MobileBreadcrumbs {
font-family: 'IBM Plex Mono', monospace !important;
}
}
@-moz-document domain("workflowy.com") {
/*------------ Backlink 双链索引 ------------- */
:root {
--referencesBG: hsla(201, 13%, 15%, 1.00);
}
.references.boardCard {
padding-top: 1px;
border-radius: 10px;
}
._theme-dark .references.boardCard {
background: var(--referencesBG);
border: 1px solid hsla(203, 5%, 28%, 1.00);
}
}
@-moz-document domain("workflowy.com") {
/*------------ Board Kanban 看板视图 放大视野 ------------- */
.board {
/* zoom: 0.8; */
zoom: 0.94;
}
}
@-moz-document domain("workflowy.com") {
/*------------ Hover Cursor 鼠标悬停在链接跳转时的光标样式 ↔ + ↗ ------------- */
/* cursor: cell; */
/* 外站超链接 */
.contentLink:hover {
cursor: alias;
/* ↗ */
}
/* 站内链接 */
.contentLink[href^="https://beta.workflowy.com"]:hover,
.contentLink[href^="https://workflowy.com"]:hover {
cursor: ne-resize;
/* ↔ */
}
}
@-moz-document domain("workflowy.com") {
/*------------ Underline 下划线 黄线 ------------- */
u {
text-decoration: none !important;
background: linear-gradient(#ffffff00 70%, #FFCF02 5%);
/* padding-bottom: 2px; */
transition: background-color 0.5s ease-in-out, height 0.5s ease-in-out;
}
/* 鼠标悬停阴影 */
u:hover {
background-color: #8686865e;
border-radius: 4px 4px 0 0;
}
}
@-moz-document domain("workflowy.com") {
/*------------ 代码块 ------------- */
:root {
--background-alt-light: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3E%3Cpath fill='%23000000' fill-opacity='0.16' d='M1 3h1v1H1V3zm2-2h1v1H3V1z'%3E%3C/path%3E%3C/svg%3E");
--background-alt-dark: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3E%3Cpath fill='%23ffffff' fill-opacity='0.16' d='M1 3h1v1H1V3zm2-2h1v1H3V1z'%3E%3C/path%3E%3C/svg%3E");
--code-background-light: var(--background-alt-light);
--code-background-dark: var(--background-alt-dark);
--background-light-border: #E0E0E0;
--background-dark-border: #767272;
}
._theme-default .code-block > .name > .content {
background: var(--code-background-light);
border: 2px dashed var(--background-light-border);
}
._theme-dark .code-block > .name > .content {
background: var(--code-background-dark);
border: 2px dashed var(--background-dark-border);
}
}
@-moz-document domain("workflowy.com") {
/*------------ Quote 引用块 ------------- */
:root {
/* --quote-bg-light: */
/* --quote-bg-dark: #767272; */
}
._theme-default {
.quote-block > .name > .content {
/* border-left-width: 4px; */
/* padding: unset; */
padding: 1px;
/* padding-top: 0px; */
background: #086DDD21;
background: linear-gradient(135deg, #086DDD21, #FFFFFF);
border-top-left-radius: 8px;
border-bottom-left-radius: 8px;
> .innerContentContainer {
border-width: 3px;
border-radius: 4px;
border-left-color: #086DDD;
/* border-left: none; */
}
}
.quote-block > .name > .content:after {
content: "";
position: absolute;
top: auto;
right: 0;
bottom: 0;
left: auto;
width: 1.5em;
height: 1.5em;
background: linear-gradient(to bottom right, #086DDD21, 50%, #FFFFFF 50%);
-webkit-backdrop-filter: blur(2.5px);
backdrop-filter: blur(2.5px);
transition: all 0.2s ease-in-out;
box-shadow: -4px -1px 2px 0px rgba(0, 0, 0, 0.2);
}
.quote-block > .name > .content:hover:after {
width: 0;
height: 0;
}
}
._theme-dark .quote-block > .name > .content {
/* background: var(--quote-bg-dark); */
/* border: 2px dashed var(--background-dark-border); */
}
}
@-moz-document domain("workflowy.com") {
/*------------ Tag 标签 ------------- */
.contentTag {
padding: 0 6px !important;
border-radius: 10px !important;
font-size: 0.8em;
border: 0.1em solid #FFFFFF8C;
/* font-style: italic; */
/* line-height: 10px; */
/* 修正添加tag后 多出来的细微1px行高差 */
.contentTagText {
text-decoration: none !important;
/* color: var(--wf-yellow-200); */
}
}
.contentTag:hover {
/* filter: brightness(125%) !important; */
transition: 200ms ease-in-out;
/* cursor: cell; */
font-size: 1em;
}
/*tag 标签颜色 */
/* .contentTag[data-val="#purple"] */
}
@-moz-document domain("workflowy.com") {
/*------------ Kanban 看板视图 ------------- */
/* 看板边距微调 视野更宽 */
._theme-default .page:has( > .root.board) {
padding-top: 20px;
padding-left: 40px;
.board {
/* padding: 20px 0; */
> .children {
/* padding: 10px; */
/* border-radius: 5%; */
.boardColumn {
/* overflow: hidden; */
background-color: #F8F9FB;
margin-right: 10px;
/* padding-top: 14px; */
border-radius: 12px;
> .name {
background-color: #FFFFFF;
border: 1px solid #C7CDD7;
border-radius: 8px;
margin: 12px 9px;
padding: 0px 0px 6px 20px;
font-size: 20px;
font-weight: normal;
box-shadow: 3px 3px 6px 0px rgba(0, 0, 0, .1);
position: relative;
> .content {
line-height: 26px;
}
a.bullet {
/* ⊙ Zoom指示器 */
/* position: absolute; */
/* background: rgba(129, 129, 129, .35); */
top: 14px !important;
right: 16px;
/* bottom: 20%; */
/* left: calc(100% - 22px); */
/* left: 10px; */
}
a.bullet:hover {
/* BUG 阴影位置 */
background: rgba(129, 129, 129, .35);
background: transparent;
/* bottom: -13px; */
/* left: -3px; */
/* left: calc(100% - 22px); */
}
> a.bullet::before {
/* 大圈 */
border: 1px dashed #6D686896;
background: rgba(129, 129, 129, .35);
width: 27px;
height: 27px;
/* top: 4px; */
/* left: calc(100% - 22px); */
}
> a.bullet::after {
/* 中圈 */
width: 14px;
height: 14px;
top: -3px;
left: -3px;
}
> a.bullet svg {
/* 小点 */
top: -4px;
right: 4px;
}
/* 看板标题的折叠箭头 */
/* BUG 有些页面偏移 */
> a.expand > div > svg {
position: relative;
left: -21px;
top: -10px;
color: rgb(86, 156, 214);
/* width: 28px; */
/* height: 28px; */
}
> a.expand > div > svg:hover {
width: 36px;
height: 36px;
transition: width 0.2s ease-in-out;
}
/* 汉堡菜单按钮 ⁝ */
> .itemMenu svg {
/* position: relative; */
position: absolute;
right: 12px;
top: -8px;
width: 32px;
height: 17px;
transform: rotateZ(90deg);
color: rgb(5, 98, 174);
background-color: rgba(110, 158, 188, .12);
}
}
/* 看板卡片 */
.children .boardCard {
background-color: #FFFFFF;
/* border-radius: 0 10px 10px 0; */
border-radius: 10px;
/* BUG 后面的(…) 会被遮挡 */
margin-left: -1px !important;
margin-right: 9px !important;
/* 看板文字内容边距尽量缩小??? */
> .name {
> .content {
padding-top: 0px;
/* padding-right: 0px; */
/* border-radius: 4px; */
}
> a.expand > div > svg {
position: relative;
left: 12px;
top: -4px;
color: rgb(86, 156, 214);
}
> a.expand > div > svg:hover {
width: 32px;
height: 32px;
transition: width 0.2s ease-in-out;
}
}
}
::-webkit-scrollbar {
display: none;
}
}
}
}
}
/* Bullet视图下的 mini看板 */
.page .root:not(.board) .board {
.children {
padding-bottom: 10px;
}
::-webkit-scrollbar {
display: none;
}
}
/* nameButtons */
}
@-moz-document domain("workflowy.com") {
/*------------ 小彩蛋 ------------- */
/* 当节点数用量超额时 忽视并屏蔽超额提示板 以此获得无限量的节点额度 */
div#app > .pageContainer > div:last-child:not(.page):has( > div > button > span) {
display: none;
}
div#app > div.dialog-backdrop:has( > div.dialog-box > button.primary) {
display: none;
}
}