ASOx32

ASOx32 theme in Windows 95 style Made by Derpz ♥

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name     ASOx32
// @name:ru  ASOx32
// @version  1.2
// @grant    none
// @match		 https://xn--d1ah4a.com/*
// @namespace ASOx32
// @license MIT
// @description ASOx32 theme in Windows 95 style Made by Derpz ♥
// @description:ru ASOx32 тема в стиле Windows 95 Made by Derpz ♥
// ==/UserScript==

const style = document.createElement('style');
style.innerHTML = `
body {
  background: url('https://raw.githubusercontent.com/1dxrpz/ASOx32/refs/heads/main/bliss.jpg') !important;
  background-size: cover !important;          /* Scales to cover container */
  background-position: center !important;      /* Centers the image within the container */
  background-repeat: no-repeat !important;
  background-attachment: fixed !important;
  --text-secondary: black !important;
  --text-primary: black !important;
}

.BLErSWUX {
	border-radius: 0 !important;
}

article .lE9vN8i6,
.MtmuinE5 span,
.MtmuinE5 .vPid2PoY {
	color: white !important;
  font-weight: 600;
}

article .cGo-pqMK,
._8yAtdePh .MtmuinE5,
.jnSbHonP .MtmuinE5 {
	position: absolute;
  left: 10px;
  top: 5px;
  color: white !important;
  width: 100%;
}

.JNwvD1Vo,
.rjatUzSP,
.mJqJVajZ,
.QT6-NgzT,
section,
.mPvkVXNc,
article,
.CsIbGceP,
._4DLI4vxA,
.jnSbHonP,
.PUa4FZiJ,
._8yAtdePh,
.crrL7XgI {
  position: relative;
  background: #c0c0c0 !important;
  padding: 28px 12px 12px 12px; /* extra top space for title */
  font-family: Consolas, sans-serif !important;
  color: black !important;

  /* outer bevel */
  border-top: 2px solid #ffffff;
  border-left: 2px solid #ffffff;
  border-bottom: 2px solid #404040;
  border-right: 2px solid #404040;
  border-radius: 0 !important;
  /* inner bevel */
  box-shadow:
    inset -2px -2px 0 #808080,
    inset 2px 2px 0 #dfdfdf;
}

.cZnuRugG {
	padding: 0;
  background: #c0c0c0 !important;
}

section span,
article span,
.CsIbGceP span,
._4DLI4vxA,
div[contenteditable="true"] {
  font-family: Consolas, Arial, sans-serif !important;
  color: black !important;
}

article.FdYjPIR3 {
  padding: 10px !important;
  padding-top: 40px !important;
  padding-bottom: 20px !important;
  padding-right: 20px !important;
}

button {
	user-select: none !important;
}

/* title bar using ::before */
section::before,
.mPvkVXNc::before,
article::before,
.CsIbGceP::before,
._8yAtdePh::before,
.jnSbHonP::before {
  content: "";
  position: absolute;
  top: 2px;
  left: 2px;
  right: 2px;
  height: 24px;
  background: linear-gradient(to right, #000080, #1084d0);
  color: white;
  font-weight: bold;
  font-size: 13px;
  line-height: 20px;
  padding-left: 6px;
}

article path,
.CsIbGceP path,
._4DLI4vxA path{
  stroke: black !important;
}
.lqZNoMkv a {
	display: block;
	width: 100% !important;
}

.VLVaXrye,
.MMIk7qf0,
.yIp1zbgr::after,
.lqZNoMkv a,
button,
article footer button,
nav a,
.DecvAv-7 > span,
.r2TckDeC,
._4DLI4vxA button,
.GstMeOlK,
.L6foA0ob,
._0haeBjBl button,
.hSN99swS {
  border-radius: 0 !important;
  background: #c0c0c0 !important;
  padding: 4px 12px !important;
  font-family: "MS Sans Serif", Arial, sans-serif !important;
  font-size: 13px !important;
  color: black !important;
  cursor: pointer !important;

  /* classic raised bevel */
  border-top: 2px solid #ffffff !important;
  border-left: 2px solid #ffffff !important;
  border-bottom: 2px solid #404040 !important;
  border-right: 2px solid #404040 !important;

  box-shadow:
    inset -2px -2px 0 #808080,
    inset 2px 2px 0 #dfdfdf;
}

.L6foA0ob {
	padding: 5px 0 !important;
  position: relative;
  bottom: -10px;
}

nav a {
  margin-bottom: 10px;
}

/* pressed effect */
.VLVaXrye:active,
.lqZNoMkv a:active,
button:active,
.hSN99swS:active,
article footer button:active,
nav a:active,
._4DLI4vxA button:active,
._0haeBjBl button:active,
.GstMeOlK:active,
.L6foA0ob:active {
  border-top: 2px solid #404040;
  border-left: 2px solid #404040;
  border-bottom: 2px solid #ffffff;
  border-right: 2px solid #ffffff;

  box-shadow:
    inset 2px 2px 0 #808080,
    inset -2px -2px 0 #dfdfdf;
}

.lqZNoMkv a:focus,
button:focus,
article footer button:focus,
nav a:focus,
._4DLI4vxA button:focus,
.GstMeOlK:focus,
._0haeBjBl button:focus {
  outline: 1px dotted black;
  outline-offset: -4px;
}

.CNP0fBGd {
	display: flex;
}


.UK-OMndz {
	height: 50px !important;
  top: 50%;
}

.C4SARhpg {
	padding: 0 !important;
  border: none !important;
}
.hWCpL6Hf {
	padding: 9px 10px !important;
}
/* focus state (slightly darker text edge feel) */
.C4SARhpg:focus,
._2sS6K7hx:focus {
  outline: none;
  background: #ffffff;
}

/* disabled look */
.C4SARhpg:disabled {
  background: #c0c0c0;
  color: #808080;
}

.C4SARhpg {
	border-radius: 0;
  oveflow: visible !important;
//   flex: 0 !important;
}

._2mmgs8Ne {
	display: block;
}
.M1orzhg7 {
  flex: 0 !important;
  width: calc(100% - 40px);
}

.Zm7GdliE.vqhGsmVx {
	margin: 0 !important;
  padding: 0 !important;
  transform: none;
  position: absolute;
  z-index: 1;
  top: 0;
  right: 0;
  width: 40px !important;
  height: 100% !important;
}

.UoWopgfe,
textarea,
input.VUVtn1zM,
._2sS6K7hx,
.GKtAeZvh {
	border-radius: 0 !important;
	background: #eee !important;
  border: 2px solid !important;
  border-color: #404040 #FFFFFF #FFFFFF #404040 !important; /* sunken effect */
  padding: 3px 4px !important;
  font-family: Consolas, sans-serif !important;
  font-size: 16px !important;
  color: #000 !important;
  outline: none !important;
  box-sizing: border-box !important;
}

._2sS6K7hx {
	height: 40px;
  padding: 7px !important;
}

input.VUVtn1zM {
	padding: 10px !important;
  padding-left: 50px !important;
}

input:focus {
  border-color: #000000 #FFFFFF #FFFFFF #000000 !important;
  background: #fff !important;
}

.-irX9LBI:not(:last-child) {
  border-bottom: 1px solid #fff;
}

.TCFYTRkG:not(:first-child) {
  padding-left: 30px;
}

.TCFYTRkG:not(:last-child) .VgMMM-FP {
  padding-bottom: 30px;
}

.gRf2HMVj,
.sgbXxBQt {
	border-radius: 0 !important;
  width: 200px;
  background: #C0C0C0;
  border: 2px solid;
  border-radius: 0;
  border-color: #FFFFFF #404040 #404040 #FFFFFF; /* 3D effect */
  padding: 2px;
  font-family: Consolas, sans-serif;
  font-size: 13px;
  color: black;
  box-shadow: none;
}

.sgbXxBQt button {
	transition: 0;
	border: 0 !important;
  box-shadow: none !important;
  padding: 4px 20px 4px 24px !important;
  position: relative;
  cursor: pointer !important;
  white-space: nowrap !important;
}

.sgbXxBQt button:hover,
.csorFBDI:hover {
	transition: 0 !important;
  background: #000080 !important; /* classic navy blue */
  color: #FFFFFF !important;
}
.sgbXxBQt button:hover svg,
.csorFBDI:hover span {
	stroke: #fff;
  color: #fff;
}
.sgbXxBQt svg {
	stroke: #000;
  color: #000;
}

.yfGqJGgk {
	gap: 0;
}

.jnSbHonP {
	padding-bottom: 50px;
}

.nDnu9hhf {
	padding: 0 !important;
}

h1 {
	font-family: Consolas, sans-serif;
  
}

a.jjAXXJME,
.d4whLTgb,
a.NTrrYRK4 {
	text-decoration: none;
  color: magenta !important;
}

a.jjAXXJME:hover {
	text-decoration: underline;
}

.P1lAENLs {
	justify-content: end !important;
  gap: 20px !important;
}

.BZs335wO, .MRPN0AlG {
	border-bottom: none !important;
}
._4M-jb-Yf button {
	padding: 0 !important;
  padding: 0 !important;
  width: 30px;
  height: 23px;
}
._4M-jb-Yf span {
	color: #fff !important;
}
._4M-jb-Yf {
	padding: 0 !important;
  position: absolute !important;
  top: 1px !important;
  width: calc(100% - 30px);
  left: 15px;
}

.bDtnMOtP {
	background: none !important;
  gap: 10px;
}

.mPvkVXNc {
	padding: 30px 0px 0px 0px;
}

.docWdaJH {
	position: relative;
  top: -21px;
  color: #fff;
}

.docWdaJH h2 {
	color: #fff;
}

.QT6-NgzT .d4whLTgb:hover {
	text-decoration: underline;
}

.yIp1zbgr::after {
	padding: 0 !important;
  top: 0 !important;
}

.rvWQR6Xa {
	background: none !important;
}

.BbGOi3lO nav {
	row-gap: 8px;
  display: flex;
  flex-direction: column;
}

.gRf2HMVj {
	background: none !important;
}

.gRf2HMVj button {
	border: 0 !important;
  box-shadow: none;
  
}

.gRf2HMVj button:hover {
	background: #000080 !important;
  color: #fff !important;
}

.mC4WabM6 {
	padding: 5px !important;
  position: relative;
  top: 44px;
  z-index: 1;
  height: 23px;
  right: 15px;
}

.bDtnMOtP {
	backdrop-filter: none !important;
}

input {
	border-radius: none !important;
}

html {
	--bg-primary: #c0c0c0 !important;
}

button.yAXdi86A,
button.elFWsy5U,
button._6XVFDO74,
button.y-9i4poD,
.JNwvD1Vo button{
	padding: 5px !important;
}

._3x0lVqeJ {
	padding-top: 30px;
}

`;
document.head.appendChild(style);

(function () {
  // Inject CSS
  const style = document.createElement('style');
  style.textContent = `
    #root {
      opacity: 0;
      transition: opacity 2s ease;
    }

    #win95-login {
      position: fixed;
      inset: 0;
      background: #008080;
      display: flex;
      align-items: center;
      justify-content: center;
      transition: opacity 1s ease;
      z-index: 9999;
    }

    #win95-login.hidden {
      opacity: 0;
      pointer-events: none;
    }

    .win95-window {
      width: 300px;
      background: #C0C0C0;
      border: 2px solid;
      border-color: #FFFFFF #404040 #404040 #FFFFFF;
      font-family: Tahoma, sans-serif;
      font-size: 13px;
    }

    .title-bar {
      background: #000080;
      color: white;
      padding: 4px 6px;
      font-weight: bold;
    }

    .content {
      padding: 12px;
      display: flex;
      flex-direction: column;
      gap: 8px;
    }

    input {
      border: 2px solid;
      border-color: #404040 #FFFFFF #FFFFFF #404040;
      padding: 4px;
      font-family: inherit;
    }

    button {
      align-self: flex-end;
      padding: 4px 10px;
      background: #C0C0C0;
      border: 2px solid;
      border-color: #FFFFFF #404040 #404040 #FFFFFF;
      cursor: pointer;
    }

    button:active {
      border-color: #404040 #FFFFFF #FFFFFF #404040;
    }
    
    .bDtnMOtP {
    	padding: 0 !important;
      background: none !important;
      gap: 10px;
    }
    .prof_cont {
    	height: 50px;
      font-size: 24pt !important;
    }
    .prof_cont .profile_link {
    	display: inline;
    }
    .prof_cont .profile_link {
    	color: magenta;
      text-decoration: none !important;
    }
    
    .prof_cont .profile_link:hover {
    	text-decoration: underline !important;
    }
  `;
  document.head.appendChild(style);

  // Wait for DOM
  window.addEventListener('load', () => {
    const root = document.querySelector('#root');

    // Create login UI
    const login = document.createElement('div');
    login.id = 'win95-login';
    login.innerHTML = `
      <div class="win95-window">
        <div class="title-bar">Welcome to ASO x32 v1.2</div>
        <div class="content">
        	<div class="prof_cont">
          Made by <a href="https://итд.com/@derpz" class="profile_link">Dxrpz</a>
          </div>
          <button id="win95-login-btn">Login</button>
        </div>
      </div>
    `;
    document.body.appendChild(login);

    const btn = document.getElementById('win95-login-btn');
    
    btn.addEventListener('click', () => {
      const audio = new Audio('https://github.com/1dxrpz/ASOx32/raw/refs/heads/main/win95.ogg');
      audio.volume = 0.6;

      audio.play().catch(() => {
        const resume = () => {
          audio.play();
          window.removeEventListener('click', resume);
        };
        window.addEventListener('click', resume);
      });

      // Fade out login
      login.classList.add('hidden');

      // Show root
      setTimeout(() => {
        if (root) root.style.opacity = '1';
      }, 500);

      // Remove login after animation
      setTimeout(() => {
        login.remove();
      }, 1000);
    });
  });
})();

const clickSound = new Audio('https://github.com/1dxrpz/ASOx32/raw/refs/heads/main/click.mp3');
  clickSound.volume = 0.5;

  function playClickSound() {
    // clone so rapid clicks don't cut off sound
    const s = clickSound.cloneNode();
    s.play().catch(() => {});
  }

  document.addEventListener('click', (e) => {
    const target = e.target.closest('button, a');
    if (target) {
      playClickSound();
    }
  });