donphan/app/javascript/styles/win95.scss

2685 lines
52 KiB
SCSS

// win95 theme from cybrespace.
// Modified by kibi! to use webpack package syntax for urls (eg,
// `url(~images/…)`) for easy importing into skins.
$win95-bg: #bfbfbf;
$win95-dark-grey: #404040;
$win95-mid-grey: #808080;
$win95-window-header: #00007f;
$win95-tooltip-yellow: #ffffcc;
$win95-blue: blue;
$win95-cyan: #008080;
$ui-base-lighter-color: $win95-dark-grey;
$ui-highlight-color: $win95-window-header;
@mixin win95-border-outset() {
border-left: 2px solid #efefef;
border-top: 2px solid #efefef;
border-right: 2px solid #404040;
border-bottom: 2px solid #404040;
border-radius:0px;
}
@mixin win95-border-outset-sides-only() {
border-left: 2px solid #efefef;
border-right: 2px solid #404040;
border-radius:0px;
}
@mixin win95-outset() {
box-shadow: inset -1px -1px 0px #000000,
inset 1px 1px 0px #ffffff,
inset -2px -2px 0px #808080,
inset 2px 2px 0px #dfdfdf;
border-radius:0px;
}
@mixin win95-outset-no-highlight() {
box-shadow: inset -1px -1px 0px #000000,
inset -2px -2px 0px #808080;
border-radius:0px;
}
@mixin win95-border-inset() {
border-left: 2px solid #404040;
border-top: 2px solid #404040;
border-right: 2px solid #efefef;
border-bottom: 2px solid #efefef;
border-radius:0px;
}
@mixin win95-border-slight-inset() {
border-left: 1px solid #404040;
border-top: 1px solid #404040;
border-right: 1px solid #efefef;
border-bottom: 1px solid #efefef;
border-radius:0px;
}
@mixin win95-inset() {
box-shadow: inset 1px 1px 0px #000000,
inset -1px -1px 0px #ffffff,
inset 2px 2px 0px #808080,
inset -2px -2px 0px #dfdfdf;
border-width:0px;
border-radius:0px;
}
@mixin win95-tab() {
box-shadow: inset -1px 0px 0px #000000,
inset 1px 0px 0px #ffffff,
inset 0px 1px 0px #ffffff,
inset 0px 2px 0px #dfdfdf,
inset -2px 0px 0px #808080,
inset 2px 0px 0px #dfdfdf;
border-radius:0px;
border-top-left-radius: 1px;
border-top-right-radius: 1px;
}
@mixin win95-border-groove() {
border-radius: 0px;
border: 2px groove #bfbfbf;
}
@mixin win95-reset() {
box-shadow: unset;
border: 0px solid transparent;
}
@font-face {
font-family:"premillenium";
src: url('~fonts/premillenium/MSSansSerif.ttf') format('truetype');
}
@import 'application';
/* borrowed from cybrespace style: wider columns and full column width images */
@media screen and (min-width: 1300px) {
.drawer {
width: 17%; /* Not part of the flex fun */
max-width: 400px;
min-width: 330px;
}
.layout-multiple-columns .column {
flex-grow: 1 !important;
max-width: 400px;
}
}
/* Don't show outline around statuses if we're in
* mouse or touch mode (rather than keyboard) */
[data-whatinput="mouse"], [data-whatinput="touch"] {
.status__content:focus, .status:focus,
.status__wrapper:focus, .status__content__text:focus {
outline: none;
}
}
/* Less emphatic show more */
.status__content__read-more-button {
font-size: 14px;
color: $dark-text-color;
.status__prepend-icon {
padding-right: 4px;
}
}
/* Show a little arrowey thing after the time in a
* status to signal that you can click it to see
* a detailed view */
.status time:after,
.detailed-status__datetime span:after {
font: normal normal normal 14px/1 FontAwesome;
content: "\00a0\00a0\f08e";
}
/* Don't display the elephant mascot (we have our
* own, thanks) */
.drawer__inner__mastodon {
display: none;
}
/* Let the compose area/drawer be short, but
* expand if necessary */
.drawer .drawer__inner {
overflow: visible;
height:inherit;
background-image: none;
}
.drawer__pager {
overflow-y:auto;
}
/* Put a reasonable background on the single-column compose form */
.layout-single-column .compose-panel {
background-color: $ui-base-color;
height: auto;
max-height: 100%;
overflow-y: visible;
margin-top: 65px;
}
/* Better distinguish the search bar */
.layout-single-column .compose-panel .search {
position:relative;
top: -55px;
margin-bottom: -55px;
}
/* Use display: none instead of visibility:hidden
* to hide the suggested follows list on non-mobile */
@media screen and (min-width: 630px) {
.search-results .trends {
display:none;
}
}
/* Don't display the weird triangles on the modal layout,
* because they look strange on cybrespace themes. */
.modal-layout__mastodon {
display:none;
}
/* main win95 style */
html {
scrollbar-color: $win95-mid-grey transparent;
}
body {
font-size:13px;
font-family: "MS Sans Serif", "premillenium", sans-serif;
color:black;
}
.ui,
.ui .columns-area,
body.admin {
background: $win95-cyan;
}
.loading-bar {
height:5px;
background-color: #000080;
}
.tabs-bar__wrapper {
background-color: $win95-cyan;
}
.tabs-bar {
background: $win95-bg;
@include win95-outset();
height: 30px;
}
.tabs-bar__link {
color:black;
border:2px outset $win95-bg;
border-top-width: 1px;
border-left-width: 1px;
margin:2px;
padding:3px;
}
.tabs-bar__link.active {
@include win95-inset();
color:black;
}
.tabs-bar__link:last-child::before {
content:"Start";
color:black;
font-weight:bold;
font-size:15px;
width:80%;
display:block;
position:absolute;
right:0px;
}
.tabs-bar__link:last-child {
position:relative;
flex-basis:60px !important;
font-size:0px;
color:$win95-bg;
background-image: url("~images/start.png");
background-repeat:no-repeat;
background-position:8%;
background-clip:padding-box;
background-size:auto 50%;
}
.drawer .drawer__inner {
overflow: visible;
height:inherit;
background:$win95-bg;
}
.drawer:after {
display:block;
content: " ";
position:absolute;
bottom:15px;
left:15px;
width:132px;
height:117px;
background-image:url("~images/clippy_wave.gif"), url("~images/clippy_frame.png");
background-repeat:no-repeat;
background-position: 4px 20px, 0px 0px;
z-index:0;
}
.drawer__pager {
overflow-y:auto;
z-index:1;
}
.privacy-dropdown__dropdown {
z-index:2;
}
.column > .scrollable {
background: $win95-bg;
@include win95-border-outset();
border-top-width:0px;
}
.column-header__wrapper {
color:white;
font-weight:bold;
background:#7f7f7f;
}
.column-header {
padding:0px;
font-size:13px;
background:#7f7f7f;
@include win95-border-outset();
border-bottom-width:0px;
color:white;
font-weight:bold;
align-items:baseline;
min-height: 24px;
}
.column-header > button {
padding: 0px;
min-height: 22px;
}
.column-header__wrapper.active {
background:$win95-window-header;
}
.column-header__wrapper.active::before {
display:none;
}
.column-header.active {
box-shadow:unset;
background:$win95-window-header;
}
.column-header.active .column-header__icon {
color:white;
}
.column-header__buttons {
max-height: 20px;
margin: 2px;
margin-left: -2px;
}
.column-header__buttons button {
margin-left: 2px;
}
.column-header__button {
background: $win95-bg;
color: black;
@include win95-outset();
line-height:0px;
font-size:14px;
padding:0px 4px;
&:hover {
color: black;
}
}
.column-header__button.active, .column-header__button.active:hover {
@include win95-inset();
background-color:#7f7f7f;
}
// selectivity -- needs to override .column-header > button
.column-header .column-header__back-button {
background: $win95-bg;
color: black;
padding:2px;
padding-right: 4px;
max-height: 20px;
min-height: unset;
margin: 2px;
@include win95-outset();
font-size: 13px;
line-height: 17px;
font-weight:bold;
}
.column-header__buttons .column-header__back-button {
margin: 0;
}
.column-back-button {
background:$win95-bg;
color:black;
@include win95-outset();
font-size:13px;
font-weight:bold;
padding: 2px;
height: 26px;
}
.column-back-button--slim-button {
position:absolute;
top:-22px;
right:4px;
max-height:20px;
padding: 1px 6px 0 2px;
box-sizing: border-box;
}
.column-back-button__icon {
font-size:11px;
margin-top:-3px;
}
.column-header__collapsible {
border-left:2px outset $win95-bg;
border-right:2px outset $win95-bg;
}
.column-header__collapsible-inner {
background:$win95-bg;
color:black;
}
.column-header__collapsible__extra {
color:black;
}
.column-header__collapsible__extra div[role="group"] {
border: 2px groove #eee;
margin-bottom: 11px;
padding: 4px;
}
.column-inline-form {
background-color: $win95-bg;
@include win95-border-outset();
border-bottom-width:0px;
border-top-width:0px;
align-items: baseline;
}
.column-inline-form .icon-button {
font-size: 14px!important;
line-height: 17px!important;
}
.column-inline-form .setting-text {
line-height: 17px;
padding-left: 4px;
}
.column-settings__section {
color:black;
font-weight:bold;
font-size:11px;
}
[role="group"] .column-settings__section {
display:inline-block;
background-color:$win95-bg;
position:relative;
top: -14px;
top: calc(-1em - 0.5ex);
left: 4px;
padding: 0px 4px;
margin-bottom: 0px;
}
.setting-meta__label, .setting-toggle__label {
color:black;
font-weight:normal;
}
.setting-meta__label span:before {
content:"(";
}
.setting-meta__label span:after {
content:")";
}
.setting-toggle {
line-height:13px;
}
.react-toggle .react-toggle-track {
border-radius:0px;
background-color:white;
@include win95-border-inset();
width:12px;
height:12px;
}
.react-toggle:hover:not(.react-toggle--disabled) .react-toggle-track {
background-color:white;
}
.react-toggle .react-toggle-track-check {
left:2px;
transition:unset;
}
.react-toggle .react-toggle-track-check svg path {
fill: black;
}
.react-toggle .react-toggle-track-x {
display:none;
}
.react-toggle .react-toggle-thumb {
border-radius:0px;
display:none;
}
.text-btn {
background-color:$win95-bg;
@include win95-outset();
padding:4px;
}
.text-btn:hover {
text-decoration:none;
color:black;
}
.text-btn:active {
@include win95-inset();
}
.setting-text {
color:black;
background-color:white;
@include win95-inset();
font-size:13px;
padding:2px;
}
.setting-text:active, .setting-text:focus,
.setting-text.light:active, .setting-text.light:focus {
color:black;
border-bottom:2px inset $win95-bg;
}
.column-header__setting-arrows .column-header__setting-btn {
padding:3px 10px;
}
.column-header__setting-arrows .column-header__setting-btn:last-child {
padding:3px 10px;
}
.missing-indicator {
background-color:$win95-bg;
color:black;
@include win95-outset();
}
.missing-indicator > div {
background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAACXBIWXMAAC4jAAAuIwF4pT92AAAAF3pUWHRUaXRsZQAACJnLyy9Jyy/NSwEAD5IDblIFOhoAAAAXelRYdEF1dGhvcgAACJlLzijKz0vMAQALmgLoDsFj8gAAAQpJREFUOMuVlD0OwjAMhd2oQl04Axfo0IGBgYELcAY6cqQuSO0ZOEAZGBg6VKg74gwsEaoESRVHjusI8aQqzY8/PbtOEz1qkFSn2YevlaNOpLMJh2DwvixhuXtOa6/LCh51DUMEFkAsgAZD207Doin8mQ562JpRE5CHBAAhmIqD1L8AqzUUUJkxc6kr3AgAJ+NuvIWRdk7WcrKl0AUqcIBBHOiEbpS4m27mIL5Onfg3k0rgggeQuS2sDOGSahKR+glgqaGLgUJs951NN1q9D72cQqQWR9cr3sm9YcEssEuz6eEuZh2bu0aSOhQ1MBezu2O/+TVSvEFII3qLsZWrSA2AAUQIh1HpyP/kC++zjVSMj6ntAAAAAElFTkSuQmCC') no-repeat;
background-position:center center;
}
.empty-column-indicator,
.error-column {
background: $win95-bg;
color: black;
}
.notification__filter-bar {
background: $win95-bg;
@include win95-border-outset-sides-only();
padding-top: 10px;
padding-left: 10px;
padding-right: 10px;
border-bottom: 2px solid #efefef;
overflow-y: visible;
button {
background: transparent;
color: black;
padding: 8px 0;
align-self: end;
@include win95-tab();
&.active {
color: black;
top: 2px;
background-color: $win95-bg;
&::before, &::after {
display:none;
}
}
}
}
.status__wrapper {
border: 2px groove $win95-bg;
margin:4px;
}
.status {
@include win95-border-slight-inset();
background-color:white;
margin:4px;
padding-bottom:40px;
margin-bottom:8px;
}
.status.status-direct {
background:$win95-bg;
&:focus, &:active {
background:$win95-bg;
}
&:not(.read) {
background: white;
}
}
.focusable:focus .status.status-direct {
background:$win95-bg;
}
[data-whatinput="mouse"], [data-whatinput="touch"] {
.status__content:focus, .status:focus,
.status__wrapper:focus, .status__content__text:focus {
background-color: $win95-bg;
}
.status.status-direct, .detailed-status {
&:not(.read) {
.status__content:focus {
background-color: white;
}
}
}
}
.status__content, .reply-indicator__content {
font-size:13px;
color: black;
}
.status.light .status__relative-time,
.status.light .display-name span {
color: #7f7f7f;
}
.status__action-bar {
box-sizing:border-box;
position:absolute;
bottom:-1px;
left:-1px;
background:$win95-bg;
width:calc(100% + 2px);
padding-left:10px;
padding: 4px 2px;
padding-bottom:4px;
border-bottom:2px groove $win95-bg;
border-top:1px outset $win95-bg;
text-align: right;
}
.status__wrapper .status__action-bar {
border-bottom-width:0px;
}
.status__action-bar-button {
float:right;
}
.status__action-bar-dropdown {
margin-left:auto;
margin-right:10px;
.icon-button {
min-width:28px;
}
}
.status.light .status__content a {
color:blue;
}
.focusable:focus {
background: $win95-bg;
.detailed-status__action-bar {
background: $win95-bg;
}
.status, .detailed-status {
background: white;
outline:2px dotted $win95-mid-grey;
}
}
.dropdown__trigger.icon-button {
padding-right:6px;
}
.detailed-status__action-bar-dropdown .icon-button {
min-width:28px;
}
.detailed-status {
background:white;
background-clip:padding-box;
margin:4px;
border: 2px groove $win95-bg;
padding:4px;
}
.detailed-status__display-name {
color:#7f7f7f;
}
.detailed-status__display-name strong {
color:black;
font-weight:bold;
}
.account__avatar,
.account__avatar-overlay-base,
.account__header__avatar,
.account__avatar-overlay-overlay {
@include win95-border-slight-inset();
clip-path:none;
filter: saturate(1.8) brightness(1.1);
}
.detailed-status__action-bar {
background-color:$win95-bg;
border:0px;
border-bottom:2px groove $win95-bg;
margin-bottom:8px;
justify-items:left;
padding-left:4px;
}
.icon-button {
background:$win95-bg;
@include win95-border-outset();
padding:0px 0px 0px 0px;
margin-right:4px;
color:#3f3f3f;
&.inverted, &:hover, &.inverted:hover, &:active, &:focus {
color:#3f3f3f;
}
}
.icon-button:active {
@include win95-border-inset();
}
.status__action-bar > .icon-button {
padding:0px 15px 0px 0px;
min-width:25px;
}
.icon-button.star-icon,
.icon-button.star-icon:active {
background:transparent;
border:none;
}
.icon-button.star-icon.active {
color: $gold-star;
&:active, &:hover, &:focus {
color: $gold-star;
}
}
.icon-button.star-icon > i {
background:$win95-bg;
@include win95-border-outset();
padding-bottom:3px;
}
.icon-button.star-icon:active > i {
@include win95-border-inset();
}
.text-icon-button {
color:$win95-dark-grey;
}
.detailed-status__action-bar-dropdown {
margin-left:auto;
justify-content:right;
padding-right:16px;
}
.detailed-status__button {
flex:0 0 auto;
}
.detailed-status__button .icon-button {
padding-left:2px;
padding-right:25px;
}
.status-card, .status-card.compact, a.status-card, a.status-card.compact {
border-radius:0px;
background:white;
border: 1px solid black;
color:black;
&:hover {
background-color:white;
}
}
.status-card__title {
color:blue;
text-decoration:underline;
font-weight:bold;
}
.load-more {
width:auto;
margin:5px auto;
background: $win95-bg;
@include win95-outset();
color:black;
padding: 2px 5px;
&:hover {
background: $win95-bg;
color:black;
}
}
.status-card__description {
color:black;
}
.account__display-name strong, .status__display-name strong {
color:black;
font-weight:bold;
}
.account .account__display-name {
color:black;