diff --git a/default.css b/default.css
index bc4f15d..738d168 100644
--- a/default.css
+++ b/default.css
@@ -1,6 +1,8 @@
body {
- font-family: Arial;
- background-color: black;
+ font-family: Tahoma;
+ height: 98vh;
+ background-image: linear-gradient(#4d4e4f 50%, rgb(154, 156, 156));
+ /*background-color: black;*/
color: white;
penis: in ass;
}
diff --git a/index.html b/index.html
index 299fef4..432b0ed 100644
--- a/index.html
+++ b/index.html
@@ -3,6 +3,7 @@
+
@@ -11,18 +12,21 @@
-
+
+
+ 
Hi.
+ Welcome to my site. :3
@@ -30,5 +34,70 @@
Find me on:
-->
+
+
+
+
+ ❅
+
+
+ ❅
+
+
+ ❆
+
+
+ ❄
+
+
+ ❅
+
+
+ ❆
+
+
+ ❄
+
+
+ ❅
+
+
+ ❆
+
+
+ ❄
+
+
+ ❅
+
+
+ ❅
+
+
+ ❆
+
+
+ ❄
+
+
+ ❅
+
+
+ ❆
+
+
+ ❄
+
+
+ ❅
+
+
+ ❆
+
+
+ ❄
+
+
+
diff --git a/siteimg/deioxpk-xmas1_smol.png b/siteimg/deioxpk-xmas1_smol.png
new file mode 100644
index 0000000..7c3f874
Binary files /dev/null and b/siteimg/deioxpk-xmas1_smol.png differ
diff --git a/siteimg/wxtvavatar.png b/siteimg/wxtvavatar.png
deleted file mode 100644
index a616901..0000000
Binary files a/siteimg/wxtvavatar.png and /dev/null differ
diff --git a/snow.css b/snow.css
new file mode 100644
index 0000000..4d86635
--- /dev/null
+++ b/snow.css
@@ -0,0 +1,11 @@
+/* source: https://codepen.io/codeconvey/pen/xRzQay */
+
+/* customizable snowflake styling */
+.snowflake {
+ color: lightgrey;
+ font-size: 1em;
+ font-family: Arial;
+ text-shadow: 0 0 1px #000;
+ }
+
+ @-webkit-keyframes snowflakes-fall{0%{top:-10%}100%{top:100%}}@-webkit-keyframes snowflakes-shake{0%{-webkit-transform:translateX(0px);transform:translateX(0px)}50%{-webkit-transform:translateX(80px);transform:translateX(80px)}100%{-webkit-transform:translateX(0px);transform:translateX(0px)}}@keyframes snowflakes-fall{0%{top:-10%}100%{top:100%}}@keyframes snowflakes-shake{0%{transform:translateX(0px)}50%{transform:translateX(80px)}100%{transform:translateX(0px)}}.snowflake{position:fixed;top:-10%;z-index:9999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default;-webkit-animation-name:snowflakes-fall,snowflakes-shake;-webkit-animation-duration:10s,3s;-webkit-animation-timing-function:linear,ease-in-out;-webkit-animation-iteration-count:infinite,infinite;-webkit-animation-play-state:running,running;animation-name:snowflakes-fall,snowflakes-shake;animation-duration:10s,3s;animation-timing-function:linear,ease-in-out;animation-iteration-count:infinite,infinite;animation-play-state:running,running}.snowflake:nth-of-type(0){left:1%;-webkit-animation-delay:0s,0s;animation-delay:0s,0s}.snowflake:nth-of-type(1){left:10%;-webkit-animation-delay:1s,1s;animation-delay:1s,1s}.snowflake:nth-of-type(2){left:20%;-webkit-animation-delay:6s,.5s;animation-delay:6s,.5s}.snowflake:nth-of-type(3){left:30%;-webkit-animation-delay:4s,2s;animation-delay:4s,2s}.snowflake:nth-of-type(4){left:40%;-webkit-animation-delay:2s,2s;animation-delay:2s,2s}.snowflake:nth-of-type(5){left:50%;-webkit-animation-delay:8s,3s;animation-delay:8s,3s}.snowflake:nth-of-type(6){left:60%;-webkit-animation-delay:6s,2s;animation-delay:6s,2s}.snowflake:nth-of-type(7){left:70%;-webkit-animation-delay:2.5s,1s;animation-delay:2.5s,1s}.snowflake:nth-of-type(8){left:80%;-webkit-animation-delay:1s,0s;animation-delay:1s,0s}.snowflake:nth-of-type(9){left:90%;-webkit-animation-delay:3s,1.5s;animation-delay:3s,1.5s}
\ No newline at end of file
diff --git a/snowstorm.js b/snowstorm.js
new file mode 100644
index 0000000..bd390b0
--- /dev/null
+++ b/snowstorm.js
@@ -0,0 +1,676 @@
+/** @license
+ * DHTML Snowstorm! JavaScript-based snow for web pages
+ * Making it snow on the internets since 2003. You're welcome.
+ * -----------------------------------------------------------
+ * Version 1.44.20131208 (Previous rev: 1.44.20131125)
+ * Copyright (c) 2007, Scott Schiller. All rights reserved.
+ * Code provided under the BSD License
+ * http://schillmania.com/projects/snowstorm/license.txt
+ */
+
+/*jslint nomen: true, plusplus: true, sloppy: true, vars: true, white: true */
+/*global window, document, navigator, clearInterval, setInterval */
+
+// 10/2021: Yes, some university hotlinked this script. This is an attempt to stop them.
+// Admin: Please download this script and host it on your own site. Thank you.
+/*if (!document.domain.match(/schillmania.com/i)) {
+ alert('SECURITY WARNING\nPlease tell your site administrator to host their own snow script. Thank you.');
+ // try { document.body.innerHTML = 'SECURITY WARNING
Please tell your site administrator to host their own snow script. Thank you.
'; } catch(e) {}; // go away.
+ throw new Error('SECURITY WARNING: Please tell your site administrator to host their own snow script. Thank you.');
+ fail();
+ debugger;
+}*/
+
+var snowStorm = (function(window, document) {
+
+ // --- common properties ---
+
+ this.autoStart = true; // Whether the snow should start automatically or not.
+ this.excludeMobile = true; // Snow is likely to be bad news for mobile phones' CPUs (and batteries.) Enable at your own risk.
+ this.flakesMax = 128; // Limit total amount of snow made (falling + sticking)
+ this.flakesMaxActive = 64; // Limit amount of snow falling at once (less = lower CPU use)
+ this.animationInterval = 33; // Theoretical "miliseconds per frame" measurement. 20 = fast + smooth, but high CPU use. 50 = more conservative, but slower
+ this.useGPU = true; // Enable transform-based hardware acceleration, reduce CPU load.
+ this.className = null; // CSS class name for further customization on snow elements
+ this.excludeMobile = true; // Snow is likely to be bad news for mobile phones' CPUs (and batteries.) By default, be nice.
+ this.flakeBottom = null; // Integer for Y axis snow limit, 0 or null for "full-screen" snow effect
+ this.followMouse = true; // Snow movement can respond to the user's mouse
+ this.snowColor = '#fff'; // Don't eat (or use?) yellow snow.
+ this.snowCharacter = '•'; // • = bullet, · is square on some systems etc.
+ this.snowStick = true; // Whether or not snow should "stick" at the bottom. When off, will never collect.
+ this.targetElement = null; // element which snow will be appended to (null = document.body) - can be an element ID eg. 'myDiv', or a DOM node reference
+ this.useMeltEffect = true; // When recycling fallen snow (or rarely, when falling), have it "melt" and fade out if browser supports it
+ this.useTwinkleEffect = false; // Allow snow to randomly "flicker" in and out of view while falling
+ this.usePositionFixed = false; // true = snow does not shift vertically when scrolling. May increase CPU load, disabled by default - if enabled, used only where supported
+ this.usePixelPosition = false; // Whether to use pixel values for snow top/left vs. percentages. Auto-enabled if body is position:relative or targetElement is specified.
+
+ // --- less-used bits ---
+
+ this.freezeOnBlur = true; // Only snow when the window is in focus (foreground.) Saves CPU.
+ this.flakeLeftOffset = 0; // Left margin/gutter space on edge of container (eg. browser window.) Bump up these values if seeing horizontal scrollbars.
+ this.flakeRightOffset = 0; // Right margin/gutter space on edge of container
+ this.flakeWidth = 8; // Max pixel width reserved for snow element
+ this.flakeHeight = 8; // Max pixel height reserved for snow element
+ this.vMaxX = 5; // Maximum X velocity range for snow
+ this.vMaxY = 4; // Maximum Y velocity range for snow
+ this.zIndex = 0; // CSS stacking order applied to each snowflake
+
+ // --- "No user-serviceable parts inside" past this point, yadda yadda ---
+
+ var storm = this,
+ features,
+ // UA sniffing and backCompat rendering mode checks for fixed position, etc.
+ isIE = navigator.userAgent.match(/msie/i),
+ isIE6 = navigator.userAgent.match(/msie 6/i),
+ isMobile = navigator.userAgent.match(/mobile|opera m(ob|in)/i),
+ isBackCompatIE = (isIE && document.compatMode === 'BackCompat'),
+ noFixed = (isBackCompatIE || isIE6),
+ screenX = null, screenX2 = null, screenY = null, scrollY = null, docHeight = null, vRndX = null, vRndY = null,
+ windOffset = 1,
+ windMultiplier = 2,
+ flakeTypes = 6,
+ fixedForEverything = false,
+ targetElementIsRelative = false,
+ opacitySupported = (function(){
+ try {
+ document.createElement('div').style.opacity = '0.5';
+ } catch(e) {
+ return false;
+ }
+ return true;
+ }()),
+ didInit = false,
+ docFrag = document.createDocumentFragment();
+
+ features = (function() {
+
+ var getAnimationFrame;
+
+ /**
+ * hat tip: paul irish
+ * http://paulirish.com/2011/requestanimationframe-for-smart-animating/
+ * https://gist.github.com/838785
+ */
+
+ function timeoutShim(callback) {
+ window.setTimeout(callback, 1000/(storm.animationInterval || 20));
+ }
+
+ var _animationFrame = (window.requestAnimationFrame ||
+ window.webkitRequestAnimationFrame ||
+ window.mozRequestAnimationFrame ||
+ window.oRequestAnimationFrame ||
+ window.msRequestAnimationFrame ||
+ timeoutShim);
+
+ // apply to window, avoid "illegal invocation" errors in Chrome
+ getAnimationFrame = _animationFrame ? function() {
+ return _animationFrame.apply(window, arguments);
+ } : null;
+
+ var testDiv;
+
+ testDiv = document.createElement('div');
+
+ function has(prop) {
+
+ // test for feature support
+ var result = testDiv.style[prop];
+ return (result !== undefined ? prop : null);
+
+ }
+
+ // note local scope.
+ var localFeatures = {
+
+ transform: {
+ ie: has('-ms-transform'),
+ moz: has('MozTransform'),
+ opera: has('OTransform'),
+ webkit: has('webkitTransform'),
+ w3: has('transform'),
+ prop: null // the normalized property value
+ },
+
+ getAnimationFrame: getAnimationFrame
+
+ };
+
+ localFeatures.transform.prop = (
+ localFeatures.transform.w3 ||
+ localFeatures.transform.moz ||
+ localFeatures.transform.webkit ||
+ localFeatures.transform.ie ||
+ localFeatures.transform.opera
+ );
+
+ testDiv = null;
+
+ return localFeatures;
+
+ }());
+
+ this.timer = null;
+ this.flakes = [];
+ this.disabled = false;
+ this.active = false;
+ this.meltFrameCount = 20;
+ this.meltFrames = [];
+
+ this.setXY = function(o, x, y) {
+
+ if (!o) {
+ return false;
+ }
+
+ if (storm.usePixelPosition || targetElementIsRelative) {
+
+ o.style.left = (x - storm.flakeWidth) + 'px';
+ o.style.top = (y - storm.flakeHeight) + 'px';
+
+ } else if (noFixed) {
+
+ o.style.right = (100-(x/screenX*100)) + '%';
+ // avoid creating vertical scrollbars
+ o.style.top = (Math.min(y, docHeight-storm.flakeHeight)) + 'px';
+
+ } else {
+
+ if (!storm.flakeBottom) {
+
+ // if not using a fixed bottom coordinate...
+ o.style.right = (100-(x/screenX*100)) + '%';
+ o.style.bottom = (100-(y/screenY*100)) + '%';
+
+ } else {
+
+ // absolute top.
+ o.style.right = (100-(x/screenX*100)) + '%';
+ o.style.top = (Math.min(y, docHeight-storm.flakeHeight)) + 'px';
+
+ }
+
+ }
+
+ };
+
+ this.events = (function() {
+
+ var old = (!window.addEventListener && window.attachEvent), slice = Array.prototype.slice,
+ evt = {
+ add: (old?'attachEvent':'addEventListener'),
+ remove: (old?'detachEvent':'removeEventListener')
+ };
+
+ function getArgs(oArgs) {
+ var args = slice.call(oArgs), len = args.length;
+ if (old) {
+ args[1] = 'on' + args[1]; // prefix
+ if (len > 3) {
+ args.pop(); // no capture
+ }
+ } else if (len === 3) {
+ args.push(false);
+ }
+ return args;
+ }
+
+ function apply(args, sType) {
+ var element = args.shift(),
+ method = [evt[sType]];
+ if (old) {
+ element[method](args[0], args[1]);
+ } else {
+ element[method].apply(element, args);
+ }
+ }
+
+ function addEvent() {
+ apply(getArgs(arguments), 'add');
+ }
+
+ function removeEvent() {
+ apply(getArgs(arguments), 'remove');
+ }
+
+ return {
+ add: addEvent,
+ remove: removeEvent
+ };
+
+ }());
+
+ function rnd(n,min) {
+ if (isNaN(min)) {
+ min = 0;
+ }
+ return (Math.random()*n)+min;
+ }
+
+ function plusMinus(n) {
+ return (parseInt(rnd(2),10)===1?n*-1:n);
+ }
+
+ this.randomizeWind = function() {
+ var i;
+ vRndX = plusMinus(rnd(storm.vMaxX,0.2));
+ vRndY = rnd(storm.vMaxY,0.2);
+ if (this.flakes) {
+ for (i=0; i=0 && s.vX<0.2) {
+ s.vX = 0.2;
+ } else if (s.vX<0 && s.vX>-0.2) {
+ s.vX = -0.2;
+ }
+ if (s.vY>=0 && s.vY<0.2) {
+ s.vY = 0.2;
+ }
+ };
+
+ this.move = function() {
+ var vX = s.vX*windOffset, yDiff;
+ s.x += vX;
+ s.y += (s.vY*s.vAmp);
+ if (s.x >= screenX || screenX-s.x < storm.flakeWidth) { // X-axis scroll check
+ s.x = 0;
+ } else if (vX < 0 && s.x-storm.flakeLeftOffset < -storm.flakeWidth) {
+ s.x = screenX-storm.flakeWidth-1; // flakeWidth;
+ }
+ s.refresh();
+ yDiff = screenY+scrollY-s.y+storm.flakeHeight;
+ if (yDiff0.998) {
+ // ~1/1000 chance of melting mid-air, with each frame
+ s.melting = true;
+ s.melt();
+ // only incrementally melt one frame
+ // s.melting = false;
+ }
+ if (storm.useTwinkleEffect) {
+ if (s.twinkleFrame < 0) {
+ if (Math.random() > 0.97) {
+ s.twinkleFrame = parseInt(Math.random() * 8, 10);
+ }
+ } else {
+ s.twinkleFrame--;
+ if (!opacitySupported) {
+ s.o.style.visibility = (s.twinkleFrame && s.twinkleFrame % 2 === 0 ? 'hidden' : 'visible');
+ } else {
+ s.o.style.opacity = (s.twinkleFrame && s.twinkleFrame % 2 === 0 ? 0 : 1);
+ }
+ }
+ }
+ }
+ };
+
+ this.animate = function() {
+ // main animation loop
+ // move, check status, die etc.
+ s.move();
+ };
+
+ this.setVelocities = function() {
+ s.vX = vRndX+rnd(storm.vMaxX*0.12,0.1);
+ s.vY = vRndY+rnd(storm.vMaxY*0.12,0.1);
+ };
+
+ this.setOpacity = function(o,opacity) {
+ if (!opacitySupported) {
+ return false;
+ }
+ o.style.opacity = opacity;
+ };
+
+ this.melt = function() {
+ if (!storm.useMeltEffect || !s.melting) {
+ s.recycle();
+ } else {
+ if (s.meltFrame < s.meltFrameCount) {
+ s.setOpacity(s.o,s.meltFrames[s.meltFrame]);
+ s.o.style.fontSize = s.fontSize-(s.fontSize*(s.meltFrame/s.meltFrameCount))+'px';
+ s.o.style.lineHeight = storm.flakeHeight+2+(storm.flakeHeight*0.75*(s.meltFrame/s.meltFrameCount))+'px';
+ s.meltFrame++;
+ } else {
+ s.recycle();
+ }
+ }
+ };
+
+ this.recycle = function() {
+ s.o.style.display = 'none';
+ s.o.style.position = (fixedForEverything?'fixed':'absolute');
+ s.o.style.bottom = 'auto';
+ s.setVelocities();
+ s.vCheck();
+ s.meltFrame = 0;
+ s.melting = false;
+ s.setOpacity(s.o,1);
+ s.o.style.padding = '0px';
+ s.o.style.margin = '0px';
+ s.o.style.fontSize = s.fontSize+'px';
+ s.o.style.lineHeight = (storm.flakeHeight+2)+'px';
+ s.o.style.textAlign = 'center';
+ s.o.style.verticalAlign = 'baseline';
+ s.x = parseInt(rnd(screenX-storm.flakeWidth-20),10);
+ s.y = parseInt(rnd(screenY)*-1,10)-storm.flakeHeight;
+ s.refresh();
+ s.o.style.display = 'block';
+ s.active = 1;
+ };
+
+ this.recycle(); // set up x/y coords etc.
+ this.refresh();
+
+ };
+
+ this.snow = function() {
+ var active = 0, flake = null, i, j;
+ for (i=0, j=storm.flakes.length; istorm.flakesMaxActive) {
+ storm.flakes[storm.flakes.length-1].active = -1;
+ }
+ }
+ storm.targetElement.appendChild(docFrag);
+ };
+
+ this.timerInit = function() {
+ storm.timer = true;
+ storm.snow();
+ };
+
+ this.init = function() {
+ var i;
+ for (i=0; i