elsaofarendelle

Elsa Theme Redo by Naomi

Apr 13th, 2026
17
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.05 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.  
  5. <meta charset="UTF-8">
  6. <title>{Title}</title>
  7.  
  8. <link rel="shortcut icon" href="{Favicon}">
  9. <link rel="alternate" type="application/rss+xml" href="{RSS}">
  10.  
  11. <meta name="image:background" content="">
  12. <meta name="image:sidebar" content="">
  13.  
  14. <link href="https://fonts.googleapis.com/css2?family=Caveat:wght@400;600&display=swap" rel="stylesheet">
  15.  
  16. <style>
  17.  
  18. /* =========================
  19. ❄️ BASE
  20. ========================= */
  21.  
  22. * { margin:0; padding:0; box-sizing:border-box; }
  23.  
  24. body {
  25. background: url("{image:background}") center/cover fixed no-repeat;
  26. overflow-x: hidden;
  27.  
  28. font-family: 'Caveat', cursive;
  29. font-size: 18px; /* makes it feel like handwriting */
  30. color: #6f6a9e;
  31. }
  32.  
  33. /* =========================
  34. ❄️ SNOW
  35. ========================= */
  36.  
  37. .snow {
  38. position: fixed;
  39. top: 0;
  40. left: 0;
  41. width: 100%;
  42. height: 100%;
  43. pointer-events: none;
  44. z-index: 1;
  45. overflow: hidden;
  46. }
  47.  
  48. .snow span {
  49. position: absolute;
  50. top: -10px;
  51. border-radius: 50%;
  52. background: radial-gradient(circle, #ffffff, #dfe9ff);
  53. opacity: 0.8;
  54. animation: snowFall linear infinite;
  55. }
  56.  
  57. .snow span:nth-child(3n){ width:4px;height:4px;animation-duration:12s;opacity:.5;}
  58. .snow span:nth-child(2n){ width:6px;height:6px;animation-duration:18s;opacity:.7;}
  59. .snow span:nth-child(4n){ width:8px;height:8px;animation-duration:22s;opacity:.9;}
  60.  
  61. @keyframes snowFall {
  62. 0% { transform: translateY(-10vh) translateX(0); }
  63. 100% { transform: translateY(110vh) translateX(60px); }
  64. }
  65.  
  66. /* =========================
  67. 💜 LINKS (MAGIC)
  68. ========================= */
  69.  
  70. a, a:visited, a:active {
  71. position: relative;
  72. color:#8e7dff !important;
  73. text-decoration:none;
  74. }
  75.  
  76. a::before{
  77. content:"";
  78. position:absolute;
  79. top:0;
  80. left:-100%;
  81. width:100%;
  82. height:100%;
  83. background:linear-gradient(120deg,transparent,rgba(255,255,255,0.5),transparent);
  84. transition:0.6s;
  85. }
  86.  
  87. a:hover::before{ left:100%; }
  88.  
  89. a::after{
  90. content:"";
  91. position:absolute;
  92. left:0;
  93. bottom:-2px;
  94. width:0%;
  95. height:2px;
  96. background:linear-gradient(90deg,#c6b6ff,#e0d4ff,#b39dff);
  97. transition:0.4s;
  98. }
  99.  
  100. a:hover::after{ width:100%; }
  101.  
  102. a:hover{ color:#e0d4ff !important; }
  103.  
  104. /* =========================
  105. 🧊 ICE LINKS PANEL
  106. ========================= */
  107.  
  108. #links a {
  109. display:block;
  110. margin:10px 0;
  111. padding:10px;
  112. text-align:center;
  113.  
  114. background:rgba(220,230,255,0.12);
  115. border:1px solid rgba(200,220,255,0.25);
  116.  
  117. backdrop-filter: blur(10px);
  118.  
  119. overflow:hidden;
  120. position:relative;
  121. }
  122.  
  123. /* frost spread */
  124. #links a::after{
  125. content:"";
  126. position:absolute;
  127. top:0;
  128. left:0;
  129. width:0%;
  130. height:100%;
  131. background:linear-gradient(120deg,rgba(255,255,255,0.2),rgba(200,220,255,0.25));
  132. transition:0.5s;
  133. }
  134.  
  135. #links a:hover::after{ width:100%; }
  136.  
  137. #links a:hover{
  138. transform:translateY(-2px) scale(1.02);
  139. color:white !important;
  140. }
  141.  
  142. /* =========================
  143. ✨ FLOAT + GLOW
  144. ========================= */
  145.  
  146. @keyframes float{
  147. 0%{transform:translateY(0);}
  148. 50%{transform:translateY(-4px);}
  149. 100%{transform:translateY(0);}
  150. }
  151.  
  152. @keyframes glowPurple{
  153. 0%{box-shadow:0 0 15px rgba(180,160,255,0.2);}
  154. 50%{box-shadow:0 0 30px rgba(210,190,255,0.4);}
  155. 100%{box-shadow:0 0 15px rgba(180,160,255,0.2);}
  156. }
  157.  
  158. /* =========================
  159. 🧊 POSTS
  160. ========================= */
  161.  
  162. #container {
  163. position:absolute;
  164. top:80px;
  165. left:490px;
  166.  
  167. width:min(400px,90vw);
  168. max-width:500px;
  169. height:700px;
  170.  
  171. padding:10px;
  172.  
  173. overflow-y:auto;
  174.  
  175. background:rgba(200,190,255,0.08);
  176. border:1px solid rgba(210,200,255,0.35);
  177.  
  178. backdrop-filter:blur(16px);
  179.  
  180. animation:float 6s infinite, glowPurple 6s infinite;
  181. }
  182.  
  183. /* =========================
  184. 🧊 SIDEBAR
  185. ========================= */
  186.  
  187. #sidebar {
  188. position:fixed;
  189. top:75px;
  190. left:1000px;
  191.  
  192. width:240px;
  193. height:750px;
  194.  
  195. padding:10px;
  196.  
  197. background:rgba(200,190,255,0.08);
  198. border:1px solid rgba(210,200,255,0.35);
  199.  
  200. backdrop-filter:blur(16px);
  201.  
  202. animation:float 7s infinite, glowPurple 7s infinite;
  203. }
  204.  
  205. #sidebar img{
  206. width:100%;
  207. height:240px;
  208. object-fit:cover;
  209. margin-bottom:10px;
  210. }
  211.  
  212. /* =========================
  213. ❄️ SCROLLBAR
  214. ========================= */
  215.  
  216. #container::-webkit-scrollbar{ width:8px; }
  217.  
  218. #container::-webkit-scrollbar-thumb{
  219. background:linear-gradient(180deg,rgba(180,160,255,0.8),rgba(230,220,255,0.5));
  220. border-radius:10px;
  221. }
  222.  
  223. /* =========================
  224. 🧊 ICE SHARD
  225. ========================= */
  226.  
  227. .ice-shard{
  228. position:absolute;
  229. width:10px;
  230. height:40px;
  231. background:linear-gradient(180deg,rgba(220,250,255,0.95),rgba(150,210,255,0.2));
  232. animation:shardFly .9s forwards;
  233. pointer-events:none;
  234. z-index:99999;
  235. }
  236.  
  237. @keyframes shardFly{
  238. 0%{opacity:1;transform:translate(0,0);}
  239. 100%{opacity:0;transform:translate(var(--dx),var(--dy));}
  240. }
  241.  
  242. /* =========================
  243. 🧊 ICE CRACK WAVE
  244. ========================= */
  245.  
  246. .crack{
  247. position:absolute;
  248. width:10px;
  249. height:10px;
  250. border-radius:50%;
  251. background:radial-gradient(circle,rgba(255,255,255,0.9),rgba(180,220,255,0.2),transparent);
  252. animation:crackPulse 0.6s ease-out forwards;
  253. pointer-events:none;
  254. z-index:99998;
  255. }
  256.  
  257. @keyframes crackPulse{
  258. 0%{transform:scale(0);opacity:1;}
  259. 50%{transform:scale(6);opacity:0.6;}
  260. 100%{transform:scale(12);opacity:0;}
  261. }
  262.  
  263. /* =========================
  264. ✨ SPARKLE
  265. ========================= */
  266.  
  267. .sparkle{
  268. position:absolute;
  269. width:4px;
  270. height:4px;
  271. background:white;
  272. border-radius:50%;
  273. pointer-events:none;
  274. animation:fade .6s forwards;
  275. }
  276.  
  277. @keyframes fade{
  278. 0%{opacity:1;}
  279. 100%{opacity:0;transform:scale(2);}
  280. }
  281.  
  282. h1 {
  283. font-family: 'Caveat', cursive;
  284. font-size: 28px;
  285. font-weight: 600;
  286.  
  287. background: linear-gradient(90deg,#c6b6ff,#b39dff,#e0d4ff);
  288. -webkit-background-clip: text;
  289. -webkit-text-fill-color: transparent;
  290. }
  291. </style>
  292. </head>
  293.  
  294. <body>
  295.  
  296.  
  297. <!-- ❄️ SNOW -->
  298. <div class="snow">
  299. <span style="left:5%"></span><span style="left:10%"></span><span style="left:15%"></span>
  300. <span style="left:20%"></span><span style="left:25%"></span><span style="left:30%"></span>
  301. <span style="left:35%"></span><span style="left:40%"></span><span style="left:45%"></span>
  302. <span style="left:50%"></span><span style="left:55%"></span><span style="left:60%"></span>
  303. <span style="left:65%"></span><span style="left:70%"></span><span style="left:75%"></span>
  304. <span style="left:80%"></span><span style="left:85%"></span><span style="left:90%"></span>
  305. </div>
  306.  
  307. <div id="container">
  308. {block:Posts}
  309. <div id="post">
  310.  
  311. {block:Text}
  312. <h1>{Title}</h1>
  313. {Body}
  314. {/block:Text}
  315.  
  316. {block:Photo}
  317. <img src="{PhotoURL-highres}">
  318. {/block:Photo}
  319.  
  320. <div id="info">
  321. <a href="{Permalink}">posted</a> • {NoteCount} notes
  322. </div>
  323.  
  324. </div>
  325. {/block:Posts}
  326. </div>
  327.  
  328. <div id="sidebar">
  329. <img src="{image:sidebar}">
  330. <div id="links">
  331. <a href="/">refresh</a>
  332. <a href="/ask">messages</a>
  333. <a href="/rules">rules</a>
  334. <a href="/about">archive</a>
  335. </div>
  336. </div>
  337.  
  338. <audio id="icesound" src="https://assets.mixkit.co/sfx/preview/mixkit-ice-glass-break-2207.mp3"></audio>
  339.  
  340. <script>
  341.  
  342. /* ❄️ ICE FRACTURE CLICK */
  343. document.addEventListener("click", e => {
  344.  
  345. const sound = document.getElementById("icesound");
  346. if(sound){ sound.currentTime=0; sound.play().catch(()=>{}); }
  347.  
  348. /* crack pulse */
  349. const crack = document.createElement("div");
  350. crack.className = "crack";
  351. crack.style.left = e.pageX + "px";
  352. crack.style.top = e.pageY + "px";
  353. document.body.appendChild(crack);
  354. setTimeout(()=>crack.remove(),600);
  355.  
  356. /* shards */
  357. for(let i=0;i<18;i++){
  358. const shard = document.createElement("div");
  359. shard.className = "ice-shard";
  360.  
  361. const angle = (Math.PI*2)*(i/18);
  362. const dist = 80 + Math.random()*160;
  363.  
  364. shard.style.left = e.pageX + "px";
  365. shard.style.top = e.pageY + "px";
  366.  
  367. shard.style.setProperty("--dx", Math.cos(angle)*dist + "px");
  368. shard.style.setProperty("--dy", Math.sin(angle)*dist + "px");
  369.  
  370. document.body.appendChild(shard);
  371. setTimeout(()=>shard.remove(),900);
  372. }
  373. });
  374.  
  375. /* ✨ CURSOR SPARKLE */
  376. document.addEventListener("mousemove", e=>{
  377. const s=document.createElement("div");
  378. s.className="sparkle";
  379. s.style.left=e.pageX+"px";
  380. s.style.top=e.pageY+"px";
  381. document.body.appendChild(s);
  382. setTimeout(()=>s.remove(),600);
  383. });
  384.  
  385. </script>
  386.  
  387. </body>
  388. </html>
Advertisement
Add Comment
Please, Sign In to add comment