Help
RSS
API
Feed
Maltego
Contact
Domain > extended-deck.com
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2025-09-23
16.15.204.234
(
ClassC
)
2026-01-28
3.175.34.47
(
ClassC
)
Port 80
HTTP/1.1 301 Moved PermanentlyServer: CloudFrontDate: Wed, 28 Jan 2026 11:50:34 GMTContent-Type: text/htmlContent-Length: 167Connection: keep-aliveLocation: https://extended-deck.com/X-Cache: Redirect from cloudfrontVia: 1.1 17220d5b0843b7d6f37da152096b8a14.cloudfront.net (CloudFront)X-Amz-Cf-Pop: HIO52-P3X-Amz-Cf-Id: JCakmcc2h5p9sCoOsMOpDPKs273xHQzp7dP6G_sPS7vFOkiQjWTEEg html>head>title>301 Moved Permanently/title>/head>body>center>h1>301 Moved Permanently/h1>/center>hr>center>CloudFront/center>/body>/html>
Port 443
HTTP/1.1 200 OKContent-Type: text/htmlContent-Length: 39410Connection: keep-aliveLast-Modified: Wed, 14 Jan 2026 01:58:00 GMTServer: AmazonS3Date: Wed, 28 Jan 2026 01:57:37 GMTCache-Control: image/*:max-age31536000,publicETag: 29bf83d391b5e89eb05907e445a22cb2X-Cache: Hit from cloudfrontVia: 1.1 e46509f22800a7c13e2737ab1c5f5990.cloudfront.net (CloudFront)X-Amz-Cf-Pop: HIO52-P3X-Amz-Cf-Id: RcpVnfCgR7bcWWBdftWZX2HTIhGzpRl0NQSisvvB8Fgr4UmeHASRJQAge: 35578 !DOCTYPE html>html langen>head> meta charsetUTF-8> meta nameviewport contentwidthdevice-width, initial-scale1.0> title>The Extended Deck/title> !-- Meta Description --> meta namedescription contentComing soon: The Extended Deck - familiar card games enhanced with Draw, Reverse, and Skip cards. Transform poker, blackjack, spades, and more with strategic action cards.> !-- Open Graph (Facebook, LinkedIn, etc.) --> meta propertyog:title contentThe Extended Deck - Coming Soon> meta propertyog:description contentFamiliar card games + Draw, Reverse, and Skip cards. Transform poker, blackjack, spades, and more with strategic action cards.> meta propertyog:type contentwebsite> meta propertyog:url contenthttps://extended-deck.com> meta propertyog:image contenthttps://extended-deck.com/images/cards/20250330_John-H_Expanded-Deck_MASTER-LAYOUT_V2_D HEARTS.png> meta propertyog:image:width content1200> meta propertyog:image:height content630> meta propertyog:site_name contentThe Extended Deck> !-- Twitter Cards --> meta nametwitter:card contentsummary_large_image> meta nametwitter:title contentThe Extended Deck - Coming Soon> meta nametwitter:description contentFamiliar card games + Draw, Reverse, and Skip cards. Transform poker, blackjack, spades, and more with strategic action cards.> meta nametwitter:image contenthttps://extended-deck.com/images/cards/20250330_John-H_Expanded-Deck_MASTER-LAYOUT_V2_D HEARTS.png> !-- Additional Meta Tags --> meta nameauthor contentJohn Hayes> meta namekeywords contentcard games, poker, blackjack, spades, hearts, rummy, extended deck, action cards, draw cards, reverse cards, skip cards> meta namerobots contentindex, follow> link relcanonical hrefhttps://extended-deck.com> !-- Favicon --> link relicon typeimage/png sizes32x32 hreffavicon.png> link relapple-touch-icon sizes180x180 hrefapple-touch-icon.png> link relpreconnect hrefhttps://fonts.googleapis.com> link relpreconnect hrefhttps://fonts.gstatic.com crossorigin> link hrefhttps://fonts.googleapis.com/css2?familyInter:wght@300;400;500;600;700&displayswap relstylesheet> link relstylesheet hrefstyles.css>/head>body> main> section classhero> div classcards-background>/div> div classhero-content> img srcimages/logo-black-wordmark.png altThe Extended Deck classhero-logo> p>Familiar card games + Draw, Reverse, and Skip cards./p> p classcoming-soon>Coming Soon/p> form idemail-signup classemail-signup-form> input typeemail idemail nameemail placeholderEnter your email required> button typesubmit classbtn btn-primary>Email me updates/button> /form> /div> /section> !-- TEMPORARILY HIDDEN SECTIONS --> !-- section idabout classabout> div classcontainer> div classabout-grid> div classabout-item> h3>Additional Cards/h3> p>Standard 52-card deck plus Draw, Reverse, and Skip cards of each suit./p> /div> div classabout-item> h3>Universal Rules/h3> p>Extended cards do the same thing in every game. Poker, Blackjack, Spades, Hearts, & more./p> /div> div classabout-item> h3>New Depth/h3> p>Card effects turn familiar games into engaging new variants./p> /div> /div> /div> /section> section idrules classrules> div classcontainer> div classrules-grid> div classrule-card> h3>Draw Cards/h3> div classcard-icon>img srcimages/cards/20250330_John-H_Expanded-Deck_MASTER-LAYOUT_V2_D SPADES.png altDraw Card />/div> p>strong>Reveal:/strong> Get redealt as 2 cards.br>strong>Play:/strong> Next player draws 2 cards./p> /div> div classrule-card> h3>Reverse Cards/h3> div classcard-icon>img srcimages/cards/20250330_John-H_Expanded-Deck_MASTER-LAYOUT_V2_R CLUBS.png altReverse Card />/div> p>strong>Reveal or Play:/strong> Reverse the current order of play./p> /div> div classrule-card> h3>Skip Cards/h3> div classcard-icon>img srcimages/cards/20250330_John-H_Expanded-Deck_MASTER-LAYOUT_V2_S HEARTS.png altSkip Card />/div> p>strong>Reveal:/strong> End your turn immediately.br>strong>Play:/strong> End the next players turn immediately./p> /div> div classrule-card> h3>Jokers/h3> div classcard-icon>JOKER/div> p>Represent any card in the standard deck./p> /div> /div> /div> /section> section idgames classgames> div classcontainer> p classgames-intro game-card>The Extended Deck works with multiplayer turn-taking card games./p> div classgames-grid> button classgame-card data-gamepoker> h3>Poker/h3> p>All variants (Texas Holdem, 7-Card Stud, etc.). Community cards add strategic layers, revealed cards affect betting order./p> /button> button classgame-card data-gameblackjack> h3>Blackjack/h3> p>Action cards trigger on your turn. Draw cards give you extra cards, Skip ends your turn, Reverse changes deal order./p> /button> button classgame-card data-gamespades> h3>Spades/h3> p>52 cards dealt normally with 16-card draw pile. Action cards in tricks affect the next players turn./p> /button> button classgame-card data-gamehearts> h3>Hearts/h3> p>Same dealing as Spades. Action cards create dynamic turn order changes and strategic passing opportunities./p> /button> button classgame-card data-gamerummy> h3>Rummy/h3> p>Action cards can be melded together but not in runs. Discarded action cards affect the next player./p> /button> /div> /div> /section> section iddownload classdownload> div classcontainer> div classdownload-content> a href../Extended Deck Rules.md classbtn btn-large download>Download Rules/a> /div> /div> /section> --> /main> footer> div classcontainer> p>Card illustrations by Joseph Fitz. © 2025 John Hayes./p> /div> /footer> !-- Game Rules Modal --> div idgame-modal classmodal> div classmodal-content> div classmodal-header> h2 idmodal-title>Game Rules/h2> button classmodal-close idmodal-close> svg classw-6 h-6 fillnone strokecurrentColor viewBox0 0 24 24> path stroke-linecapround stroke-linejoinround stroke-width2 dM6 18L18 6M6 6l12 12>/path> /svg> /button> /div> div classmodal-body idmodal-body> !-- Game-specific content will be inserted here --> /div> /div> /div> script> // Game Rules Data const gameRules { poker: { title: Poker with Extended Deck, rules: { icon: `svg fillnone strokecurrentColor viewBox0 0 24 24>path stroke-linecapround stroke-linejoinround stroke-width2 dM9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z>/path>/svg>`, text: Jokers are wild. Jokers may not duplicate another card in the players hand. Multiple players may have the same exact hand. }, { icon: `svg fillnone strokecurrentColor viewBox0 0 24 24>path stroke-linecapround stroke-linejoinround stroke-width2 dM4 6a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2H6a2 2 0 01-2-2V6zM14 6a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2V6zM4 16a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2H6a2 2 0 01-2-2v-2zM14 16a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2v-2z>/path>/svg>`, text: Community Draw, Reverse, and Skip card effects take place in the order the cards were dealt. }, { icon: `svg fillnone strokecurrentColor viewBox0 0 24 24>path stroke-linecapround stroke-linejoinround stroke-width2 dM12 4v16m8-8H4>/path>/svg>`, text: Community Draw cards are redealt immediately as two cards. Dealers may wish to lay them overlapping one another. }, { icon: `svg fillnone strokecurrentColor viewBox0 0 24 24>path stroke-linecapround stroke-linejoinround stroke-width2 dM4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15>/path>/svg>`, text: Community Reverse cards change who acts first. }, { icon: `svg fillnone strokecurrentColor viewBox0 0 24 24>path stroke-linecapround stroke-linejoinround stroke-width2 dM13 9l3 3m0 0l-3 3m3-3H8m13 0a9 9 0 11-18 0 9 9 0 0118 0z>/path>/svg>`, text: Community Skip cards each skip the next players turn, thus those players are forced to check the opening bet. }, { icon: `svg fillnone strokecurrentColor viewBox0 0 24 24>path stroke-linecapround stroke-linejoinround stroke-width2 dM15 12a3 3 0 11-6 0 3 3 0 016 0z>/path>path stroke-linecapround stroke-linejoinround stroke-width2 dM2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z>/path>/svg>`, text: A player may reveal Draw, Reverse, or Skip cards from their hand at any time. These cards are redealt during that players turn and affect that player. }, { icon: `svg fillnone strokecurrentColor viewBox0 0 24 24>path stroke-linecapround stroke-linejoinround stroke-width2 dM12 4v16m8-8H4>/path>/svg>`, text: A players Draw cards are redealt as two cards. }, { icon: `svg fillnone strokecurrentColor viewBox0 0 24 24>path stroke-linecapround stroke-linejoinround stroke-width2 dM4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15>/path>/svg>`, text: A players Reverse cards pause that players turn and reverse order of play. This makes the player last to act. }, { icon: `svg fillnone strokecurrentColor viewBox0 0 24 24>path stroke-linecapround stroke-linejoinround stroke-width2 dM13 9l3 3m0 0l-3 3m3-3H8m13 0a9 9 0 11-18 0 9 9 0 0118 0z>/path>/svg>`, text: A players Skip cards end that players turn immediately, without a fold, until they face new action. This is effectively a call without putting chips into the pot! }, { icon: `svg fillnone strokecurrentColor viewBox0 0 24 24>path stroke-linecapround stroke-linejoinround stroke-width2 dM9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z>/path>/svg>`, text: At showdown, revealed Draw, Reverse, and Skip cards are redealt. Draw cards are redealt as two cards. } }, blackjack: { title: Blackjack with Extended Deck, rules: { icon: `svg fillnone strokecurrentColor viewBox0 0 24 24>path stroke-linecapround stroke-linejoinround stroke-width2 dM17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z>/path>/svg>`, text: Every hand is considered a player including the Dealer. }, { icon: `svg fillnone strokecurrentColor viewBox0 0 24 24>path stroke-linecapround stroke-linejoinround stroke-width2 dM9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z>/path>/svg>`, text: Jokers are wild, representing a card that makes the players hand total closest to 21 without duplicating another card in that players hand. }, { icon: `svg fillnone strokecurrentColor viewBox0 0 24 24>path stroke-linecapround stroke-linejoinround stroke-width2 dM4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15>/path>/svg>`, text: Draw, Reverse, and Skip cards are redealt to a player immediately when the players turn begins. Their effects take place when redealing is complete. }, { icon: `svg fillnone strokecurrentColor viewBox0 0 24 24>path stroke-linecapround stroke-linejoinround stroke-width2 dM12 4v16m8-8H4>/path>/svg>`, text: Draw cards are redealt as two cards instead of one. }, { icon: `svg fillnone strokecurrentColor viewBox0 0 24 24>path stroke-linecapround stroke-linejoinround stroke-width2 dM4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15>/path>/svg>`, text: Reverse cards pause the players turn and reverse the order of play. This can lead to the Dealer playing their hand before other players! }, { icon: `svg fillnone strokecurrentColor viewBox0 0 24 24>path stroke-linecapround stroke-linejoinround stroke-width2 dM13 9l3 3m0 0l-3 3m3-3H8m13 0a9 9 0 11-18 0 9 9 0 0118 0z>/path>/svg>`, text: Skip cards end the players turn completely. } }, spades: { title: Spades with Extended Deck, rules: { icon: `svg fillnone strokecurrentColor viewBox0 0 24 24>path stroke-linecapround stroke-linejoinround stroke-width2 dM4 6a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2H6a2 2 0 01-2-2V6zM14 6a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2V6zM4 16a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2H6a2 2 0 01-2-2v-2zM14 16a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2v-2z>/path>/svg>`, text: Deal 52 cards to begin the game. Create a 16 card draw pile of the remaining cards. }, { icon: `svg fillnone strokecurrentColor viewBox0 0 24 24>path stroke-linecapround stroke-linejoinround stroke-width2 dM9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z>/path>/svg>`, text: Jokers are wild. Jokers may not duplicate another card in the trick they are played in. }, { icon: `svg fillnone strokecurrentColor viewBox0 0 24 24>path stroke-linecapround stroke-linejoinround stroke-width2 dM12 4v16m8-8H4>/path>/svg>`, text: A Draw card played in a trick causes the next player to draw 2 cards from the draw pile at the beginning of their turn. }, { icon: `svg fillnone strokecurrentColor viewBox0 0 24 24>path stroke-linecapround stroke-linejoinround stroke-width2 dM4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15>/path>/svg>`, text: A Reverse card played in a trick pauses the next players turn and reverses the order of play. }, { icon: `svg fillnone strokecurrentColor viewBox0 0 24 24>path stroke-linecapround stroke-linejoinround stroke-width2 dM13 9l3 3m0 0l-3 3m3-3H8m13 0a9 9 0 11-18 0 9 9 0 0118 0z>/path>/svg>`, text: A Skip card played in a trick skips the next players turn. That player does not get to play a card in the current trick. }, { icon: `svg fillnone strokecurrentColor viewBox0 0 24 24>path stroke-linecapround stroke-linejoinround stroke-width2 dM8 12m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0>/path>/svg>`, text: A trick containing multiple unranked cards of the winning suit but none of them ranked is not won by any player. It is disregarded in scoring. } }, hearts: { title: Hearts with Extended Deck, rules: { icon: `svg fillnone strokecurrentColor viewBox0 0 24 24>path stroke-linecapround stroke-linejoinround stroke-width2 dM4 6a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2H6a2 2 0 01-2-2V6zM14 6a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2V6zM4 16a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2H6a2 2 0 01-2-2v-2zM14 16a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2v-2z>/path>/svg>`, text: Deal only 52 cards to begin the game, the same as in a game played with a standard deck. This creates a 16 card draw pile of the remaining cards. }, { icon: `svg fillnone strokecurrentColor viewBox0 0 24 24>path stroke-linecapround stroke-linejoinround stroke-width2 dM9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z>/path>/svg>`, text: Jokers are wild. Jokers may not duplicate another card in the trick they are played in. }, { icon: `svg fillnone strokecurrentColor viewBox0 0 24 24>path stroke-linecapround stroke-linejoinround stroke-width2 dM12 4v16m8-8H4>/path>/svg>`, text: Draw cards played in a trick cause the next player to draw 2 cards from the draw pile at the beginning of their turn. }, { icon: `svg fillnone strokecurrentColor viewBox0 0 24 24>path stroke-linecapround stroke-linejoinround stroke-width2 dM4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15>/path>/svg>`, text: Reverse cards played in a trick pause the next players turn and reverse the order of play. }, { icon: `svg fillnone strokecurrentColor viewBox0 0 24 24>path stroke-linecapround stroke-linejoinround stroke-width2 dM13 9l3 3m0 0l-3 3m3-3H8m13 0a9 9 0 11-18 0 9 9 0 0118 0z>/path>/svg>`, text: Skip cards played skip the next players turn. That player does not get to play a card in the current trick. }, { icon: `svg fillnone strokecurrentColor viewBox0 0 24 24>path stroke-linecapround stroke-linejoinround stroke-width2 dM4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z>/path>/svg>`, text: When scoring, the Draw, Reverse, and Skip of Hearts are Hearts, and do incur points. }, { icon: `svg fillnone strokecurrentColor viewBox0 0 24 24>path stroke-linecapround stroke-linejoinround stroke-width2 dM11.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 00.95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 00-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 00-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 00-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 00.951-.69l1.519-4.674z>/path>/svg>`, text: When scoring, the Draw, Reverse, and Skip of Hearts are necessary to shoot the moon. } }, rummy: { title: Rummy with Extended Deck, rules: { icon: `svg fillnone strokecurrentColor viewBox0 0 24 24>path stroke-linecapround stroke-linejoinround stroke-width2 dM4 6a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2H6a2 2 0 01-2-2V6zM14 6a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2V6zM4 16a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2H6a2 2 0 01-2-2v-2zM14 16a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2v-2z>/path>/svg>`, text: Deal the amount of cards to each player that is dealt when using a standard deck. }, { icon: `svg fillnone strokecurrentColor viewBox0 0 24 24>path stroke-linecapround stroke-linejoinround stroke-width2 dM9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z>/path>/svg>`, text: Jokers are wild. Jokers may not duplicate another card they are melded with. }, { icon: `svg fillnone strokecurrentColor viewBox0 0 24 24>path stroke-linecapround stroke-linejoinround stroke-width2 dM18.364 18.364A9 9 0 005.636 5.636m12.728 12.728L5.636 5.636m12.728 12.728L12 12m6.364 6.364L12 12m0 0L5.636 5.636M12 12l6.364-6.364M12 12l-6.364 6.364>/path>/svg>`, text: Five of a kind melds are not possible. }, { icon: `svg fillnone strokecurrentColor viewBox0 0 24 24>path stroke-linecapround stroke-linejoinround stroke-width2 dM19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10>/path>/svg>`, text: Players can meld Draw, Reverse, and Skip cards with each other but not into a run, as they have no place in card rank order. }, { icon: `svg fillnone strokecurrentColor viewBox0 0 24 24>path stroke-linecapround stroke-linejoinround stroke-width2 dM12 8c-1.657 0-3 .895-3 2s1.343 2 3 2 3 .895 3 2-1.343 2-3 2m0-8c1.11 0 2.08.402 2.599 1M12 8V7m0 1v8m0 0v1m0-1c-1.11 0-2.08-.402-2.599-1>/path>/svg>`, text: Draw, Reverse, and Skip cards are worth 10 points, the same points as other face cards. }, { icon: `svg fillnone strokecurrentColor viewBox0 0 24 24>path stroke-linecapround stroke-linejoinround stroke-width2 dM12 4v16m8-8H4>/path>/svg>`, text: When a Draw card is played into the discard pile this causes the next player to draw 2 cards from the draw pile at the beginning of their turn. }, { icon: `svg fillnone strokecurrentColor viewBox0 0 24 24>path stroke-linecapround stroke-linejoinround stroke-width2 dM4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15>/path>/svg>`, text: Discarded Reverse cards pause the next players turn and reverse the order of play. }, { icon: `svg fillnone strokecurrentColor viewBox0 0 24 24>path stroke-linecapround stroke-linejoinround stroke-width2 dM13 9l3 3m0 0l-3 3m3-3H8m13 0a9 9 0 11-18 0 9 9 0 0118 0z>/path>/svg>`, text: Skip cards in the discard pile skip the next players turn. } } }; // Modal functionality const modal document.getElementById(game-modal); const modalTitle document.getElementById(modal-title); const modalBody document.getElementById(modal-body); const modalClose document.getElementById(modal-close); // Game card click handlers document.querySelectorAll(.game-carddata-game).forEach(card > { card.addEventListener(click, (e) > { const game e.currentTarget.getAttribute(data-game); openModal(game); }); }); // Modal close handlers modalClose.addEventListener(click, closeModal); modal.addEventListener(click, (e) > { if (e.target modal) closeModal(); }); // Keyboard support document.addEventListener(keydown, (e) > { if (e.key Escape && modal.classList.contains(show)) { closeModal(); } }); function openModal(game) { const gameData gameRulesgame; if (!gameData) return; modalTitle.textContent gameData.title; const rulesHTML gameData.rules.map(rule > ` div classrule-item> div classrule-icon>${rule.icon}/div> div classrule-text>${rule.text}/div> /div> `).join(); modalBody.innerHTML rulesHTML; modal.classList.add(show); document.body.style.overflow hidden; } function closeModal() { modal.classList.remove(show); document.body.style.overflow ; } // Card deck generation for hero background const cardsBackground document.querySelector(.cards-background); // All available card images const cardImages images/cards/20250330_John-H_Expanded-Deck_MASTER-LAYOUT_V2_D CLUBS.png, images/cards/20250330_John-H_Expanded-Deck_MASTER-LAYOUT_V2_D DIAMONDS.png, images/cards/20250330_John-H_Expanded-Deck_MASTER-LAYOUT_V2_D HEARTS.png, images/cards/20250330_John-H_Expanded-Deck_MASTER-LAYOUT_V2_D SPADES.png, images/cards/20250330_John-H_Expanded-Deck_MASTER-LAYOUT_V2_R CLUBS.png, images/cards/20250330_John-H_Expanded-Deck_MASTER-LAYOUT_V2_R DIAMONDS.png, images/cards/20250330_John-H_Expanded-Deck_MASTER-LAYOUT_V2_R HEARTS.png, images/cards/20250330_John-H_Expanded-Deck_MASTER-LAYOUT_V2_R SPADES.png, images/cards/20250330_John-H_Expanded-Deck_MASTER-LAYOUT_V2_S CLUBS.png, images/cards/20250330_John-H_Expanded-Deck_MASTER-LAYOUT_V2_S DIAMONDS.png, images/cards/20250330_John-H_Expanded-Deck_MASTER-LAYOUT_V2_S HEARTS.png, images/cards/20250330_John-H_Expanded-Deck_MASTER-LAYOUT_V2_S SPADES.png ; // Generate cards function generateCards() { const shuffledImages ; const totalCards 68; // First, add each card image at least once for (let i 0; i cardImages.length; i++) { shuffledImages.push(cardImagesi); } // Fill remaining slots with random selections while (shuffledImages.length totalCards) { const randomImage cardImagesMath.floor(Math.random() * cardImages.length); shuffledImages.push(randomImage); } // Shuffle the array for (let i shuffledImages.length - 1; i > 0; i--) { const j Math.floor(Math.random() * (i + 1)); shuffledImagesi, shuffledImagesj shuffledImagesj, shuffledImagesi; } // Create and scatter cards for (let i 0; i totalCards; i++) { const card document.createElement(div); card.className floating-card; // Use the pre-shuffled image card.innerHTML `img src${shuffledImagesi} altExtended Deck Card />`; // Random positioning with 3D orientation and massive scale const x Math.random() * 140 - 20; // Spread cards more broadly (-20 to 120) const y Math.random() * 80 - 10; // Limit height to hero area (-10 to 70) // Simple random rotation like cards scattered on a table const rotateZ Math.random() * 360; // Random rotation from 0 to 360 degrees const scale 1.5; // 1.5x scale (combined with 200px base 300px effective) card.style.left x + %; card.style.top y + %; card.style.transform `rotate(${rotateZ}deg) scale(${scale})`; card.style.zIndex 100 + i; // Incrementally higher z-index for each card // Store original position for animation card.dataset.originalX x; card.dataset.originalY y; card.dataset.originalRotationZ rotateZ; card.dataset.originalScale scale; card.dataset.originalZIndex 100 + i; cardsBackground.appendChild(card); } // Initialize card states after generation initializeCardPhysics(); } function initializeCardPhysics() { // Enhanced physics-based interaction let mouseX 0; let mouseY 0; let prevMouseX 0; let prevMouseY 0; let mouseVelocity 0; // Store current positions and velocities for physics const cardStates ; const floatingCards document.querySelectorAll(.floating-card); // Initialize card states floatingCards.forEach((card, index) > { cardStatesindex { x: parseFloat(card.dataset.originalX), y: parseFloat(card.dataset.originalY), vx: 0, // velocity x vy: 0, // velocity y rotationZ: parseFloat(card.dataset.originalRotationZ), vrz: 0, // Start with no rotational velocity scale: parseFloat(card.dataset.originalScale), zIndex: parseInt(card.dataset.originalZIndex) }; }); let gravityX 0; let gravityY 0; // Request permission for iOS (required since iOS 13+) if (typeof DeviceOrientationEvent ! undefined && typeof DeviceOrientationEvent.requestPermission function) { DeviceOrientationEvent.requestPermission() .then(permissionState > { if (permissionState granted) { window.addEventListener(deviceorientation, handleOrientation); } }) .catch(console.error); } else { // Other browsers (Android, desktop with sensors, etc.) window.addEventListener(deviceorientation, handleOrientation); } function handleOrientation(event) { // gamma: left-to-right tilt (-90 to 90) // beta: front-to-back tilt (-180 to 180) gravityX event.gamma / 90; // normalize to -1,1 gravityY event.beta / 90; // normalize to -2,2, approx -1,1 around flat } function updateCardPhysics() { const gravityStrength 0.05; // tune force const dampening 0.92; const rotationalFriction 0.995; // friction for rotation (99.5% retained each frame) // Calculate mouse velocity (retain your existing mouse interactions) const mouseDx mouseX - prevMouseX; const mouseDy mouseY - prevMouseY; mouseVelocity Math.sqrt(mouseDx * mouseDx + mouseDy * mouseDy); prevMouseX mouseX; prevMouseY mouseY; cardStates.forEach((state, index) > { const card floatingCardsindex; // Gravity acceleration state.vx + gravityX * gravityStrength; state.vy + gravityY * gravityStrength; // Mouse repulsion (your existing code) const cardDx mouseX - state.x; const cardDy mouseY - state.y; const cardDistance Math.sqrt(cardDx * cardDx + cardDy * cardDy); if (cardDistance 6 && mouseVelocity > 0.1) { const force (6 - cardDistance) / 6; const velocityMultiplier Math.min(mouseVelocity * 0.5, 1); const pushX -cardDx * force * 0.15 * velocityMultiplier; const pushY -cardDy * force * 0.15 * velocityMultiplier; state.vx + pushX; state.vy + pushY; state.zIndex Math.max(state.zIndex, 50); card.style.zIndex state.zIndex; } // Dampening for position state.vx * dampening; state.vy * dampening; // Update positions state.x + state.vx; state.y + state.vy; // Update rotation with velocity and friction state.rotationZ + state.vrz; // Apply rotational friction state.vrz * rotationalFriction; // Keep cards within 0–100% bounds if (state.x -20) { state.x -20; state.vx * -0.5; } if (state.x > 120) { state.x 120; state.vx * -0.5; } if (state.y -10) { state.y -10; state.vy * -0.5; } if (state.y > 70) { state.y 70; state.vy * -0.5; } // Dynamic transforms const velocity Math.sqrt(state.vx * state.vx + state.vy * state.vy); const dynamicScale state.scale + Math.min(velocity * 0.05, 0.1); card.style.left state.x + %; card.style.top state.y + %; card.style.transform `rotate(${state.rotationZ}deg) scale(${dynamicScale})`; }); } // Animation loop function animate() { updateCardPhysics(); requestAnimationFrame(animate); } // Get hero section for accurate mouse positioning const heroSection document.querySelector(.hero); heroSection.addEventListener(mousemove, (e) > { const rect heroSection.getBoundingClientRect(); mouseX ((e.clientX - rect.left) / rect.width) * 100; mouseY ((e.clientY - rect.top) / rect.height) * 100; }); // Start animation loop animate(); } // Initialize everything generateCards(); // Email signup functionality document.getElementById(email-signup).addEventListener(submit, function(e) { e.preventDefault(); const email document.getElementById(email).value; const button document.querySelector(.btn-primary); const form document.getElementById(email-signup); // Validate email if (!email || !email.includes(@)) { alert(Please enter a valid email address); return; } // Google Form submission URL const googleFormURL https://docs.google.com/forms/d/e/1FAIpQLSfxSsjo_V2e5yNEYj44TJjjGWOPre5BF1aeSB3pM4f7fpIslA/formResponse; const emailFieldName entry.427810244; // Correct email field entry ID // Create form data const formData new FormData(); formData.append(emailFieldName, email); // Change button text button.textContent Submitting...; button.disabled true; // Submit to Google Form fetch(googleFormURL, { method: POST, mode: no-cors, body: formData }).then(() > { // Success - hide form and show confirmation form.innerHTML p stylefont-size: 1.1rem; margin: 0;>Thank you, your submission was received./p>; }).catch((error) > { // Error console.log(Form submission error:, error); button.textContent Try again; button.disabled false; }); }); /script>/body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]