Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8" />
- <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
- <title>Alembic of Antique Aesthetics</title>
- <style>
- @import url('https://fonts.googleapis.com/css2?family=VT323&family=Press+Start+2P&display=swap');
- *{margin:0;padding:0;box-sizing:border-box}
- :root{
- --panel-max-h: calc(100vh - 220px);
- --artifact-pad: 14px;
- --artifact-radius: 10px;
- }
- body{
- font-family:'VT323',monospace;
- background:linear-gradient(45deg,#0a0a0a 25%,#1a1a1a 25%,#1a1a1a 50%,#0a0a0a 50%,#0a0a0a 75%,#1a1a1a 75%,#1a1a1a);
- background-size:20px 20px;min-height:100vh;overflow:hidden;position:relative;
- }
- .stars{
- position:fixed;inset:0;pointer-events:none;
- background-image:
- radial-gradient(2px 2px at 20px 30px,#fff,transparent),
- radial-gradient(2px 2px at 40px 70px,#fff,transparent),
- radial-gradient(1px 1px at 50px 50px,#fff,transparent);
- background-repeat:repeat;background-size:200px 200px;animation:twinkle 5s infinite;
- }
- @keyframes twinkle{0%,100%{opacity:.3}50%{opacity:.8}}
- .title{
- text-align:center;padding:20px;font-family:'Press Start 2P',cursive;font-size:24px;
- background:linear-gradient(90deg,#ff00ff,#00ffff,#ffff00,#ff00ff);
- background-size:200% 100%;animation:gradient 3s linear infinite;
- -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;
- text-shadow:2px 2px 4px rgba(255,0,255,.5);position:relative;z-index:10;
- }
- @keyframes gradient{0%{background-position:0% 50%}100%{background-position:200% 50%}}
- .lab-container{
- max-width:1200px;margin:0 auto;padding:20px;
- display:grid;grid-template-columns:1fr 320px 1fr;gap:30px;align-items:start;position:relative;z-index:5;
- }
- .ingredients-panel,.results-panel{
- background:rgba(0,0,0,.9);border:3px solid #00ff00;border-radius:12px;padding:20px;
- box-shadow:0 0 20px #00ff00,inset 0 0 20px rgba(0,255,0,.08);
- }
- .results-panel{max-height:var(--panel-max-h);overflow:auto}
- .panel-title{color:#00ff00;font-size:24px;margin-bottom:16px;text-align:center;text-shadow:0 0 10px currentColor}
- .ingredient{
- background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);border:2px solid #fff;border-radius:8px;
- padding:12px;margin:10px 0;cursor:grab;transition:.25s;color:#fff;font-size:18px;text-align:center;position:relative;overflow:hidden;
- }
- .ingredient:hover{transform:scale(1.05);box-shadow:0 5px 15px rgba(102,126,234,.6)}
- .ingredient.dragging{opacity:.5;cursor:grabbing}
- .ingredient::before{content:'';position:absolute;top:-50%;left:-50%;width:200%;height:200%;
- background:linear-gradient(45deg,transparent,rgba(255,255,255,.3),transparent);transform:rotate(45deg);transition:.5s}
- .ingredient:hover::before{animation:shimmer .5s}
- @keyframes shimmer{0%{transform:translateX(-100%) translateY(-100%) rotate(45deg)}100%{transform:translateX(100%) translateY(100%) rotate(45deg)}}
- .cauldron-section{display:flex;flex-direction:column;align-items:center}
- .cauldron{
- width:260px;height:205px;background:radial-gradient(ellipse at center bottom,#2a2a2a,#000);
- border-radius:50% 50% 40% 40%/60% 60% 40% 40%;border:5px solid #444;position:relative;
- box-shadow:0 10px 30px rgba(0,0,0,.8),inset 0 -20px 40px rgba(0,0,0,.5);margin-top:18px;
- }
- .cauldron-contents{
- position:absolute;width:90%;height:60%;left:5%;top:25%;
- border-radius:50% 50% 40% 40%/60% 60% 40% 40%;background:linear-gradient(180deg,#4a0080,#8b008b);
- overflow:hidden;transition:.5s
- }
- .cauldron.brewing .cauldron-contents{background:linear-gradient(180deg,#00ff00,#ff00ff,#00ffff);animation:bubble 2s infinite}
- @keyframes bubble{0%,100%{transform:scale(1)}50%{transform:scale(1.05)}}
- .bubbles{position:absolute;inset:0;display:none}
- .cauldron.brewing .bubbles{display:block}
- .bubble{position:absolute;background:radial-gradient(circle,rgba(255,255,255,.8),rgba(255,255,255,.2));border-radius:50%;animation:rise 2s infinite}
- @keyframes rise{0%{bottom:0;opacity:0}10%{opacity:1}100%{bottom:100%;opacity:0}}
- .drop-zone{
- min-height:110px;border:3px dashed #666;border-radius:10px;margin:12px 0 0;padding:10px;transition:.3s;background:rgba(0,0,0,.35)
- }
- .drop-zone.drag-over{border-color:#00ff00;background:rgba(0,255,0,.08)}
- .chips{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;padding:6px}
- .chip{
- display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:999px;background:#222;border:1px solid #00ffaa;color:#00ffaa;font-size:14px
- }
- .chip button{all:unset;cursor:pointer;font-weight:bold}
- .transmute-btn{
- margin-top:18px;padding:14px 36px;font-family:'Press Start 2P',cursive;font-size:14px;background:linear-gradient(45deg,#ff00ff,#00ffff);
- border:none;color:#fff;cursor:pointer;border-radius:8px;position:relative;overflow:hidden;text-shadow:2px 2px 4px rgba(0,0,0,.5);transition:.25s
- }
- .transmute-btn:hover{transform:translateY(-2px);box-shadow:0 10px 20px rgba(255,0,255,.5)}
- .transmute-btn:active{transform:translateY(0)}
- .transmute-btn::before{content:'';position:absolute;inset:0;left:-100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.4),transparent);transition:left .5s}
- .transmute-btn:hover::before{left:100%}
- .instructions{
- background:rgba(0,0,0,.8);border:2px dashed #ffff00;padding:12px;margin:10px auto 0;max-width:800px;color:#00ff00;text-align:center;font-size:18px
- }
- /* Results / Artifact sizing guards */
- #resultsContainer{display:grid;grid-template-columns:1fr;gap:14px}
- .artifact{
- width:100%;max-width:100%;overflow:hidden;background:#000;border:3px ridge #888;border-radius:var(--artifact-radius);
- padding:var(--artifact-pad);margin:0;position:relative;min-height:80px;contain:content
- }
- .artifact *{max-width:100%}
- .artifact h3{font-size:18px;color:#0ff;margin-bottom:6px}
- .meta{font-size:14px;color:#aaa;margin-top:6px}
- /* Retro styles — all constrained to fit */
- .marquee-artifact{background:#111;padding:10px}
- .marquee-window{width:100%;overflow:hidden;border:2px inset #333;background:repeating-linear-gradient(90deg,#ff0,#ff0 10px,#000 10px,#000 20px);padding:6px;border-radius:6px}
- .marquee-text{color:#ff0000;font-size:20px;font-weight:bold;animation:marquee 10s linear infinite;white-space:nowrap;text-shadow:2px 2px 0 #000;will-change:transform}
- @keyframes marquee{0%{transform:translateX(100%)}100%{transform:translateX(-100%)}}
- .counter-artifact{background:#001244;border:5px inset #c0c0c0;text-align:center;font-family:'Courier New',monospace}
- .counter-display{background:#000;color:#0f0;padding:8px;font-size:18px;border:2px inset #808080;margin:8px auto;max-width:280px;border-radius:4px}
- .tiled-artifact{
- background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAQElEQVQoU2NkYGD4z8DAwMiABPhFCQiA5EEKkQWRFEIVwhXCFcIUIhXCFEIVwhXCFEIUwhTCFEIVwhXCFGIUAgCLHgYDqiAqmQAAAABJRU5ErkJggg==');
- background-repeat:repeat;color:#ffff00;text-align:center;padding:12px;border-radius:6px
- }
- .tiled-artifact .blink-text{animation:blink 1s steps(2) infinite}
- @keyframes blink{0%{opacity:1}50%{opacity:0}100%{opacity:1}}
- .rainbow-text{
- background:linear-gradient(90deg,#f00,#f90,#ff0,#0f0,#00f,#4b0082,#9400d3);
- -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:rainbow 3s linear infinite;background-size:200% 100%;
- font-size:22px;font-weight:bold
- }
- @keyframes rainbow{0%{background-position:0% 50%}100%{background-position:200% 50%}}
- /* guestbook */
- .guestbook-artifact{background:#fff;border:5px double #000;padding:12px;font-family:'Comic Sans MS',cursive;color:#000}
- .guestbook-title{color:#ff00ff;font-size:20px;text-align:center;margin-bottom:6px}
- .guestbook-entry{border:1px dotted #888;padding:8px;margin:6px 0;background:#ffffcc}
- /* webring */
- .webring-artifact{background:linear-gradient(180deg,#c0c0c0,#808080);border:3px outset #fff;padding:12px;text-align:center}
- .webring-nav{display:flex;justify-content:space-around;margin:8px 0}
- .webring-btn{background:#00f;color:#ff0;padding:5px 10px;border:2px outset #fff;cursor:pointer;text-decoration:none;font-family:'Times New Roman',serif;border-radius:4px}
- .webring-btn:active{border-style:inset}
- /* NEW retro patterns */
- .popup-artifact{background:#c0c0c0;border:3px outset #fff;color:#000}
- .popup-title{display:flex;justify-content:space-between;align-items:center;background:#000080;color:#fff;padding:6px 8px;font-weight:bold}
- .popup-body{background:#e6e6e6;border:2px inset #999;padding:10px}
- .badge-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
- .badge{background:#222;color:#0ff;border:1px solid #0ff;text-align:center;padding:6px;border-radius:4px;font-size:14px}
- .crt-artifact{background:#001100;color:#39ff14;border:2px solid #114411;box-shadow:inset 0 0 20px #003300}
- .crt-screen{font-family:Courier,monospace;line-height:1.2;filter:contrast(1.1) brightness(1.05)}
- .crt-scan{position:absolute;inset:0;background:linear-gradient(rgba(0,0,0,.0) 50%,rgba(0,0,0,.08) 50%);background-size:100% 4px;pointer-events:none}
- .frames-artifact{background:#dcdcdc;border:4px ridge #999;color:#000}
- .frame-row{display:grid;grid-template-columns:1fr 1fr;gap:6px}
- .frame{border:2px inset #888;background:#fff;padding:8px;min-height:40px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
- .status-artifact{background:#003;color:#0ff;border:2px solid #09f;position:relative}
- .status-bar{font-family:Courier,monospace;background:#012;padding:6px;border:2px inset #045;overflow:hidden}
- .status-txt{display:inline-block;white-space:nowrap;animation:marquee 12s linear infinite}
- .sparkle-artifact{background:#111;border:2px dashed #ff0;position:relative}
- .sparkle-row{display:flex;gap:8px;flex-wrap:wrap;justify-content:center}
- .sparkle{width:18px;height:18px;background:radial-gradient(circle,#fff 10%,#ff0 35%,transparent 60%);filter:blur(.2px)}
- .undercon-artifact{text-align:center;background:#111;border:2px solid #f90}
- .gif-bar{display:grid;grid-template-columns:repeat(8,1fr);gap:4px;margin-top:6px}
- .gif{height:12px;background:repeating-linear-gradient(90deg,#f00 0 4px,#ff0 4px 8px,#0f0 8px 12px,#0ff 12px 16px,#00f 16px 20px,#f0f 20px 24px)}
- .meta-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-top:8px}
- /* helper anim */
- @keyframes fadeIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
- </style>
- </head>
- <body>
- <div class="stars"></div>
- <h1 class="title">⚗️ ALEMBIC OF ANTIQUE AESTHETICS ⚗️</h1>
- <div class="instructions">
- <p>🧙♂️ Drag <strong>exactly three</strong> Modern Ingredients (order matters) into the cauldron, then TRANSMUTE to discover a unique Retro Artifact. No duplicates, no overflow.</p>
- </div>
- <div class="lab-container">
- <!-- INGREDIENTS -->
- <div class="ingredients-panel">
- <h2 class="panel-title">✨ Modern Ingredients (8) ✨</h2>
- <div class="ingredient" draggable="true" data-type="navbar">🧭 Navigation Bar</div>
- <div class="ingredient" draggable="true" data-type="carousel">🎠 Image Carousel</div>
- <div class="ingredient" draggable="true" data-type="button">🔘 Call-to-Action Button</div>
- <div class="ingredient" draggable="true" data-type="form">📝 Contact Form</div>
- <div class="ingredient" draggable="true" data-type="hero">🦸 Hero Section</div>
- <div class="ingredient" draggable="true" data-type="social">💬 Social Links</div>
- <!-- NEW -->
- <div class="ingredient" draggable="true" data-type="search">🔍 Search Bar</div>
- <div class="ingredient" draggable="true" data-type="video">📺 Video Player</div>
- </div>
- <!-- CAULDRON -->
- <div class="cauldron-section">
- <div class="cauldron" id="cauldron">
- <div class="cauldron-contents">
- <div class="bubbles"></div>
- </div>
- <div class="drop-zone" id="dropZone">
- <div class="chips" id="chips"></div>
- </div>
- </div>
- <button class="transmute-btn" id="transmuteBtn">⚡ TRANSMUTE ⚡</button>
- </div>
- <!-- RESULTS -->
- <div class="results-panel">
- <h2 class="panel-title">🌟 Retro Artifacts 🌟</h2>
- <div id="resultsContainer"></div>
- </div>
- </div>
- <script>
- class DigitalAlchemy {
- constructor(){
- this.cauldron = document.getElementById('cauldron');
- this.dropZone = document.getElementById('dropZone');
- this.chips = document.getElementById('chips');
- this.transmuteBtn = document.getElementById('transmuteBtn');
- this.resultsContainer = document.getElementById('resultsContainer');
- this.ingredients = document.querySelectorAll('.ingredient');
- this.cauldronIngredients = []; // ordered
- this.visitorCount = Math.floor(Math.random()*99999)+10000;
- this.allTypes = ['navbar','carousel','button','form','hero','social','search','video'];
- this.discovered = new Set(); // combo keys already shown (prevents exact duplicate outputs)
- this.initializeBubbles();
- this.setupDragAndDrop();
- this.setupTransmutation();
- }
- initializeBubbles(){
- const bubblesContainer = this.cauldron.querySelector('.bubbles');
- for(let i=0;i<10;i++){
- const b=document.createElement('div');
- b.className='bubble';
- const size = Math.random()*20+5;
- b.style.width = size+'px';
- b.style.height = size+'px';
- b.style.left = Math.random()*100+'%';
- b.style.animationDelay = Math.random()*2+'s';
- b.style.animationDuration = (Math.random()*2+2)+'s';
- bubblesContainer.appendChild(b);
- }
- }
- setupDragAndDrop(){
- this.ingredients.forEach(el=>{
- el.addEventListener('dragstart',e=>{
- e.dataTransfer.effectAllowed='copy';
- e.dataTransfer.setData('text/plain', e.target.dataset.type);
- el.classList.add('dragging');
- });
- el.addEventListener('dragend',()=>el.classList.remove('dragging'));
- });
- const canAccept = ()=> this.cauldronIngredients.length < 3;
- this.dropZone.addEventListener('dragover',e=>{
- if(!canAccept()) return;
- e.preventDefault(); this.dropZone.classList.add('drag-over');
- });
- this.dropZone.addEventListener('dragleave',()=>this.dropZone.classList.remove('drag-over'));
- this.dropZone.addEventListener('drop',e=>{
- e.preventDefault(); this.dropZone.classList.remove('drag-over');
- const type = e.dataTransfer.getData('text/plain');
- if(type && canAccept()){
- this.addIngredient(type);
- this.cauldron.classList.add('brewing');
- this.showBrewing();
- }
- });
- // click-to-add for accessibility
- this.ingredients.forEach(el=>{
- el.addEventListener('click',()=>{
- if(this.cauldronIngredients.length<3){
- this.addIngredient(el.dataset.type);
- this.cauldron.classList.add('brewing');
- this.showBrewing();
- }
- });
- });
- }
- addIngredient(type){
- this.cauldronIngredients.push(type);
- // chip UI
- const chip = document.createElement('span');
- chip.className='chip';
- chip.dataset.type = type;
- chip.innerHTML = `${this.icon(type)} ${this.pretty(type)} <button title="remove">×</button>`;
- chip.querySelector('button').addEventListener('click',()=>{
- const idx = Array.from(this.chips.children).indexOf(chip);
- if(idx>-1){
- this.cauldronIngredients.splice(idx,1);
- chip.remove();
- }
- if(this.cauldronIngredients.length===0){
- this.cauldron.classList.remove('brewing');
- }
- });
- this.chips.appendChild(chip);
- }
- setupTransmutation(){
- this.transmuteBtn.addEventListener('click',()=>{
- if(this.cauldronIngredients.length!==3){
- this.flashMessage('Add exactly 3 ingredients (order matters)!', '#ff8080');
- return;
- }
- this.performTransmutation();
- });
- }
- icon(t){
- const map = {navbar:'🧭',carousel:'🎠',button:'🔘',form:'📝',hero:'🦸',social:'💬',search:'🔍',video:'📺'};
- return map[t]||'✨';
- }
- pretty(t){ return ({
- navbar:'Navigation Bar',carousel:'Image Carousel',button:'CTA Button',form:'Contact Form',
- hero:'Hero Section',social:'Social Links',search:'Search Bar',video:'Video Player'
- }[t]||t); }
- showBrewing(){
- const msg=document.createElement('div');
- Object.assign(msg.style,{
- position:'absolute',top:'-28px',left:'50%',transform:'translateX(-50%)',
- color:'#00ff00',fontSize:'14px',whiteSpace:'nowrap'
- });
- msg.textContent = `${this.cauldronIngredients.length}/3 ingredients added`;
- this.cauldron.appendChild(msg);
- setTimeout(()=>msg.remove(),1600);
- }
- performTransmutation(){
- const comboKey = this.cauldronIngredients.join('>');
- if(this.discovered.has(comboKey)){
- this.flashMessage('That combo is already discovered. Try a new ORDER or INGREDIENTS!', '#ffd166');
- } else {
- const artifact = this.createArtifactFromCombo(this.cauldronIngredients);
- artifact.style.animation='fadeIn .45s ease-out both';
- artifact.dataset.combo = comboKey;
- this.resultsContainer.prepend(artifact);
- this.discovered.add(comboKey);
- }
- // reset
- this.cauldronIngredients = [];
- this.chips.innerHTML='';
- setTimeout(()=>this.cauldron.classList.remove('brewing'),600);
- }
- /* ======= Combo → Artifact (deterministic, order-sensitive) ======= */
- hashString(s){
- // simple 32-bit FNV-1a
- let h=0x811c9dc5;
- for(let i=0;i<s.length;i++){ h^=s.charCodeAt(i); h = (h>>>0)*0x01000193; }
- return h>>>0;
- }
- rng(seed){ // mulberry32
- let t = seed>>>0;
- return function(){
- t += 0x6D2B79F5; t = t>>>0;
- let r = Math.imul(t ^ t>>>15, 1|t);
- r ^= r + Math.imul(r ^ r>>>7, 61|r);
- return ((r ^ r>>>14)>>>0) / 4294967296;
- }
- }
- createArtifactFromCombo(order){
- const key = order.join('>');
- const h = this.hashString(key);
- const rand = this.rng(h);
- // artifact templates (12 variants) — each returns a DOM node sized safely
- const templates = [
- ()=>this.t_marquee(rand),
- ()=>this.t_tiled(rand),
- ()=>this.t_blinkAd(rand),
- ()=>this.t_guestbook(rand),
- ()=>this.t_counter(rand),
- ()=>this.t_webring(rand),
- ()=>this.t_popup(rand),
- ()=>this.t_badgeGrid(rand),
- ()=>this.t_crt(rand),
- ()=>this.t_frames(rand),
- ()=>this.t_status(rand),
- ()=>this.t_sparkles(rand),
- ()=>this.t_underConstruction(rand)
- ];
- const tmpl = templates[h % templates.length];
- const artifact = tmpl();
- // meta strip
- const meta = document.createElement('div');
- meta.className='meta meta-row';
- const orderLabel = document.createElement('span');
- orderLabel.textContent = `Order: ${order.map(t=>this.pretty(t)).join(' → ')}`;
- const hashLabel = document.createElement('span');
- hashLabel.textContent = `Combo ID: ${('00000000'+h.toString(16)).slice(-8)}`;
- meta.appendChild(orderLabel); meta.appendChild(hashLabel);
- artifact.appendChild(meta);
- return artifact;
- }
- // ======== Templates (all constrained) ========
- t_marquee(rand){
- const el = document.createElement('div'); el.className='artifact marquee-artifact';
- const title = document.createElement('h3'); title.textContent='Neon Highway Marquee';
- const win = document.createElement('div'); win.className='marquee-window';
- const text = document.createElement('div'); text.className='marquee-text';
- const slogans = [
- '🔥 WELCOME TO THE INFORMATION SUPERHIGHWAY!!! 🔥 BEST VIEWED IN NETSCAPE 4.0!!! 🔥',
- '✨ CLICK HERE FOR 1,000,000 COUPONS ✨ NO SPYWARE GUARANTEED ✨',
- '🕹️ ENTER THE RETRO ZONE 🕹️ FRAMES • GIFS • MIDI • COUNTERS'
- ];
- text.textContent = slogans[Math.floor(rand()*slogans.length)];
- win.appendChild(text);
- el.appendChild(title); el.appendChild(win);
- return el;
- }
- t_tiled(rand){
- const el = document.createElement('div'); el.className='artifact tiled-artifact';
- const title = document.createElement('h3'); title.textContent='Checkerboard Shrine';
- const b1 = document.createElement('div'); b1.className='blink-text'; b1.textContent='🌟 UNDER CONSTRUCTION 🌟';
- const b2 = document.createElement('div'); b2.textContent = ['Optimized for 800×600!','Right-click forbidden!','Welcome, net traveler!'][Math.floor(rand()*3)];
- el.appendChild(title); el.appendChild(b1); el.appendChild(b2);
- return el;
- }
- t_blinkAd(rand){
- const el = document.createElement('div'); el.className='artifact';
- el.style.textAlign='center';
- const title = document.createElement('h3'); title.textContent='Banner Of Temptation';
- const a=document.createElement('div'); a.className='rainbow-text'; a.textContent='!!! CLICK HERE TO WIN !!!';
- const b=document.createElement('div'); b.className='blink-text'; b.style.color='#ff0'; b.style.fontSize='18px'; b.style.marginTop='8px';
- b.textContent = ['YOU ARE THE 1,000,000th VISITOR!','FREE TRIAL • NO CREDIT CARD','CONGRATS! YOU WON A NEW MODEM!'][Math.floor(rand()*3)];
- el.appendChild(title); el.appendChild(a); el.appendChild(b);
- return el;
- }
- t_guestbook(rand){
- const el = document.createElement('div'); el.className='artifact guestbook-artifact';
- const t = document.createElement('div'); t.className='guestbook-title'; t.textContent='📖 Sign My Guestbook! 📖';
- const entries = [
- "<strong>XxDarkAngel99xX:</strong> kewl site!!! add me on AIM! ^_^",
- "<strong>WebMaster2000:</strong> Nice frames! Check out my hamster hub!",
- "<strong>~*StarGirl*~:</strong> OMG love the midi music!!! <3"
- ];
- el.appendChild(t);
- for(let i=0;i<3;i++){
- const e=document.createElement('div'); e.className='guestbook-entry'; e.innerHTML = entries[(i+Math.floor(rand()*3))%entries.length];
- el.appendChild(e);
- }
- return el;
- }
- t_counter(rand){
- this.visitorCount++;
- const el = document.createElement('div'); el.className='artifact counter-artifact';
- const t = document.createElement('div'); t.style.color='#ff0'; t.style.fontSize='16px'; t.textContent='You are visitor number:';
- const d = document.createElement('div'); d.className='counter-display';
- d.innerHTML = `<span style="font-family:'Digital',monospace;">${this.visitorCount.toString().padStart(6,'0')}</span>`;
- const s = document.createElement('div'); s.style.color='#c0c0c0'; s.style.fontSize='14px';
- s.textContent = ['Since Jan 1, 1997','Since Y2K','Since 56k Dawn'][Math.floor(rand()*3)];
- el.appendChild(t); el.appendChild(d); el.appendChild(s);
- return el;
- }
- t_webring(rand){
- const el = document.createElement('div'); el.className='artifact webring-artifact';
- const top=document.createElement('div'); top.style.fontWeight='bold'; top.style.marginBottom='8px'; top.textContent='🔗 Ye Olde Web Ring 🔗';
- const nav=document.createElement('div'); nav.className='webring-nav';
- ['<< Previous','Random','Next >>'].forEach(txt=>{
- const a=document.createElement('a'); a.href='#'; a.className='webring-btn'; a.textContent=txt; nav.appendChild(a);
- });
- const small=document.createElement('div'); small.style.fontSize='12px'; small.style.marginTop='8px';
- small.textContent = ['Awesome 90s Sites','Ring of GIF Masters','Frames & Flames'][Math.floor(rand()*3)];
- el.appendChild(top); el.appendChild(nav); el.appendChild(small);
- return el;
- }
- t_popup(rand){
- const el = document.createElement('div'); el.className='artifact popup-artifact';
- const title=document.createElement('div'); title.className='popup-title';
- title.innerHTML = `<span>Windows 98 Notification</span><span>🗕 🗗 ✖</span>`;
- const body=document.createElement('div'); body.className='popup-body';
- body.textContent = ['Install ActiveX Control?','Free Cursor Effects Available!','Your trial has expired (just kidding).'][Math.floor(rand()*3)];
- el.appendChild(title); el.appendChild(body);
- return el;
- }
- t_badgeGrid(rand){
- const el=document.createElement('div'); el.className='artifact';
- const t=document.createElement('h3'); t.textContent='88×31 Button Wall';
- const grid=document.createElement('div'); grid.className='badge-grid';
- const labels = ['Best Viewed','HTML3.2','Under Const.','Netscape','IE4 Ready','Y2K OK','No Tables','Blink 4ever','CSS?!','MIDI ON','Guestbook','Top 100'];
- for(let i=0;i<12;i++){
- const b=document.createElement('div'); b.className='badge'; b.textContent=labels[(i+Math.floor(rand()*labels.length))%labels.length];
- grid.appendChild(b);
- }
- el.appendChild(t); el.appendChild(grid);
- return el;
- }
- t_crt(rand){
- const el=document.createElement('div'); el.className='artifact crt-artifact';
- const screen=document.createElement('div'); screen.className='crt-screen'; screen.style.padding='10px';
- screen.innerHTML = [
- '> dir<br>GIFS MIDI FRAMES README.TXT<br>> type README.TXT<br>WELCOME TO THE FUTURE OF 1999.',
- '> ping geocities.com<br>Reply from 23.23.23.23: bytes=32 time=120ms',
- '> run retro.exe<br>Loading... ███████████ 100%'
- ][Math.floor(rand()*3)];
- const scan=document.createElement('div'); scan.className='crt-scan';
- el.appendChild(screen); el.appendChild(scan);
- return el;
- }
- t_frames(rand){
- const el=document.createElement('div'); el.className='artifact frames-artifact';
- const t=document.createElement('h3'); t.textContent='Fake Frameset';
- const row=document.createElement('div'); row.className='frame-row';
- for(let i=0;i<2;i++){
- const f=document.createElement('div'); f.className='frame';
- f.textContent=['Home • Links • Guestbook','Site News • Updates • Credits','Music • GIFs • Awards'][Math.floor(rand()*3)];
- row.appendChild(f);
- }
- el.appendChild(t); el.appendChild(row);
- return el;
- }
- t_status(rand){
- const el=document.createElement('div'); el.className='artifact status-artifact';
- const t=document.createElement('h3'); t.textContent='Scrolling Status Bar';
- const bar=document.createElement('div'); bar.className='status-bar';
- const txt=document.createElement('div'); txt.className='status-txt';
- txt.textContent = ['Welcome to my homepage — sign the guestbook!','New: 88×31 buttons pack','Counter reset after 999,999 😭'][Math.floor(rand()*3)];
- bar.appendChild(txt); el.appendChild(t); el.appendChild(bar);
- return el;
- }
- t_sparkles(rand){
- const el=document.createElement('div'); el.className='artifact sparkle-artifact';
- const t=document.createElement('h3'); t.textContent='Cursor Sparkles Preview';
- const row=document.createElement('div'); row.className='sparkle-row';
- for(let i=0;i<32;i++){ const s=document.createElement('div'); s.className='sparkle'; row.appendChild(s); }
- el.appendChild(t); el.appendChild(row);
- return el;
- }
- t_underConstruction(rand){
- const el=document.createElement('div'); el.className='artifact undercon-artifact';
- const t=document.createElement('h3'); t.textContent='🚧 Under Construction 🚧';
- const p=document.createElement('p'); p.textContent='Pardon our dust while we add more GIFs.';
- const bar=document.createElement('div'); bar.className='gif-bar';
- for(let i=0;i<8;i++){ const g=document.createElement('div'); g.className='gif'; bar.appendChild(g); }
- el.appendChild(t); el.appendChild(p); el.appendChild(bar);
- return el;
- }
- flashMessage(text,color='#00ff00'){
- const m=document.createElement('div');
- Object.assign(m.style,{
- position:'fixed',left:'50%',top:'20px',transform:'translateX(-50%)',
- background:'#000',border:'2px solid '+color,color:color,padding:'8px 12px',
- zIndex:'9999',borderRadius:'8px',boxShadow:'0 0 12px '+color,fontFamily:'Press Start 2P, monospace',fontSize:'12px'
- });
- m.textContent=text; document.body.appendChild(m); setTimeout(()=>m.remove(),1600);
- }
- }
- document.addEventListener('DOMContentLoaded',()=>new DigitalAlchemy());
- // secret hotkey remains
- document.addEventListener('keydown',(e)=>{
- if(e.key==='Enter' && e.ctrlKey){
- alert('🎉 You found the secret hotkey! Welcome to the elite hackers club! 🎉');
- }
- });
- </script>
- </body>
- </html>
Add Comment
Please, Sign In to add comment