Advertisement
Guest User

Untitled

a guest
Sep 19th, 2019
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 36.64 KB | None | 0 0
  1. // Welcome to the example CSS file for the template. CSS is a powerful styling tool that lets you customize the overall look and feel of your game. Dulst ships with DEFAULT CSS that forms the basis of every game, and every game can overwrite that default CSS with this file.
  2.  
  3.  
  4.  
  5.  
  6.  
  7. /*
  8. * Options. Here we define some variables for the colors in our game. These variables will be used further down in the CSS.
  9. */
  10.  
  11.  
  12. // Basic Colors.
  13. statBgColor = rgba(0, 0, 0, .5)
  14. statTextColor = rgba(255, 255, 255, 1)
  15. atkColor = rgba(221, 203, 0, 1)
  16. healthColor = rgba(229, 80, 80, 1)
  17. durColor = rgba(173, 173, 173, 1)
  18. costColor = rgba(195, 223, 255, 1)
  19. twistColor = rgba(255, 64, 235, 1)
  20. powerColor = rgba(235, 224, 83, 1)
  21. eligibilityColor = rgba(0, 255, 0, 1)
  22. eligibilityHasteColor = rgba(255, 128, 0, 1)
  23. summoningSicknessColor = rgba(30, 216, 83, 1)
  24.  
  25.  
  26. // Class Colors. To add a new class, simply add another entry to the hash below. Multi-class cards will automatically be a mix of the classes.
  27. classColors = {
  28. shell: hsl(10, 90, 50),
  29. claw: hsl(70, 90, 50),
  30. trample: hsl(160, 90, 50),
  31. }
  32.  
  33. // Keywords. Keywords come from the secondary properties section of a card type. Check the admin/gameplay page to set them. If set on a card, they will show up in the card info preview.
  34. keywords = hidden, vanguard, rush, "last life", legacy, frenzy, snipe, knocked-back, sacrifice, shield, overload, "warmed up", synergy, conjure, combatant, elusive, defense, poison, lifesteal, cannotAttack, spellPower, echo, immune, duration, silence, gemini, counter, field, armor, twist, remain, haste
  35.  
  36. // Numbered keywords show up similarly to the keywords above, but is special in that it has a number beside it. For example Duration (3) for cards that lasts 3 turn.
  37. numberedKeywords = sacrifice, frenzy, shield, duration, spellPower, echo, counter, armor, defense, overload
  38.  
  39.  
  40.  
  41. // When selecting cards to toss away during a mulligan, display an x overlay on top of it. To replace that x image, simply replace the url here.
  42. mulliganOverlay = url("https://d2t4fc8ff77neh.cloudfront.net/cardSrcMedia/1ablh1gc6_600px-red_x_svg.png")
  43.  
  44.  
  45.  
  46. // TRUE OR FALSE OPTIONS. Set any of these options to false to turn them off.
  47.  
  48.  
  49. // Card Shapes
  50. SHAPE_UNITS = true // if set to true, unit cards will be more rounded instead of rectangular.
  51. SHAPE_EQUIPS = true // if set to true, equip cards will be circular instead of rectangular.
  52. SHAPE_HERO = true // if set to true, hero cards will have rounded tops.
  53.  
  54.  
  55. // Misc Options
  56. MEDIACONTENT_INSET_SHADOWS = true // The main image (or video) of a card has inset shadows that make the image seem to sink deeper into the card.
  57. HIDE_NEGATIVES = true // if set to true, stats which have a negative value will be shown as 0 instead of its actual value.
  58. OVERLAY_MAIN_PROPERTIES = true // if set to true, main properties such as cost, atk, and health will be overlay on top of the card image instead of forming a table underneath.
  59. REQUIRE_TUTORIAL_COMPLETE = false // if set to true, other game modes will be hidden if tutorial isn't complete.
  60.  
  61.  
  62. /*
  63. * Options END.
  64. */
  65.  
  66.  
  67.  
  68.  
  69.  
  70. /*
  71. * Shapes. Different cards when played in different locations change shape. Some cards become circles, others become pointy or squarish. Here are some definitions for those shapes.
  72. */
  73.  
  74. unitShape()
  75. if SHAPE_UNITS
  76. clip-path ellipse(50% 50% at 50% 50%)
  77.  
  78. weaponShape()
  79. if SHAPE_EQUIPS
  80. clip-path circle(42% at 50% 50%)
  81.  
  82. afterlifeShape()
  83. if SHAPE_UNITS
  84. clip-path circle(20% at 50% 50%)
  85.  
  86. /*
  87. * Shapes END.
  88. */
  89.  
  90.  
  91.  
  92.  
  93.  
  94. /*
  95. * Animations. Cards with special keywords may be animated. Here is the library of animations.
  96. */
  97.  
  98. @keyframes shieldThrob
  99. 0%
  100. filter drop-shadow(0 -5px 5px #c6e000)
  101. 100%
  102. filter drop-shadow(0 -5px 20px #c6e000)
  103.  
  104. @keyframes shieldEnter
  105. 0%
  106. transform scale(0)
  107. 100%
  108. transform scale(1)
  109.  
  110. @keyframes frenzy
  111. 0%
  112. transform translate(0px, 0px) rotate(0deg)
  113.  
  114. 2%
  115. transform translate(1px, 2px) rotate(2.5deg)
  116.  
  117. 4%
  118. transform translate(8px, 3px) rotate(2.5deg)
  119.  
  120. 6%
  121. transform translate(-2px, 10px) rotate(-1.5deg)
  122.  
  123. 8%
  124. transform translate(3px, 5px) rotate(-0.5deg)
  125.  
  126. 10%
  127. transform translate(3px, -1px) rotate(-0.5deg)
  128.  
  129. 12%
  130. transform translate(-1px, 1px) rotate(-0.5deg)
  131.  
  132. 14%
  133. transform translate(10px, -7px) rotate(-0.5deg)
  134.  
  135. 16%
  136. transform translate(-3px, -5px) rotate(2.5deg)
  137.  
  138. 18%
  139. transform translate(1px, -1px) rotate(3.5deg)
  140.  
  141. 20%
  142. transform translate(-1px, -9px) rotate(-0.5deg)
  143.  
  144. 22%
  145. transform translate(-9px, 5px) rotate(-2.5deg)
  146.  
  147. 24%
  148. transform translate(-2px, -7px) rotate(1.5deg)
  149.  
  150. 26%
  151. transform translate(0px, 5px) rotate(0.5deg)
  152.  
  153. 28%
  154. transform translate(-2px, 10px) rotate(-1.5deg)
  155.  
  156. 30%
  157. transform translate(6px, -2px) rotate(3.5deg)
  158.  
  159. 32%
  160. transform translate(3px, 9px) rotate(-1.5deg)
  161.  
  162. 34%
  163. transform translate(-6px, -8px) rotate(3.5deg)
  164.  
  165. 36%
  166. transform translate(-6px, 1px) rotate(2.5deg)
  167.  
  168. 38%
  169. transform translate(6px, 0px) rotate(3.5deg)
  170.  
  171. 40%
  172. transform translate(0px, -8px) rotate(1.5deg)
  173.  
  174. 42%
  175. transform translate(2px, 1px) rotate(2.5deg)
  176.  
  177. 44%
  178. transform translate(-1px, -1px) rotate(3.5deg)
  179.  
  180. 46%
  181. transform translate(-4px, -3px) rotate(-2.5deg)
  182.  
  183. 48%
  184. transform translate(5px, -7px) rotate(0.5deg)
  185.  
  186. 50%
  187. transform translate(-7px, 4px) rotate(2.5deg)
  188.  
  189. 52%
  190. transform translate(-2px, 9px) rotate(-1.5deg)
  191.  
  192. 54%
  193. transform translate(4px, 1px) rotate(-1.5deg)
  194.  
  195. 56%
  196. transform translate(7px, 4px) rotate(2.5deg)
  197.  
  198. 58%
  199. transform translate(2px, 1px) rotate(1.5deg)
  200.  
  201. 60%
  202. transform translate(4px, -7px) rotate(1.5deg)
  203.  
  204. 62%
  205. transform translate(-8px, 9px) rotate(3.5deg)
  206.  
  207. 64%
  208. transform translate(2px, -1px) rotate(-2.5deg)
  209.  
  210. 66%
  211. transform translate(4px, -2px) rotate(2.5deg)
  212.  
  213. 68%
  214. transform translate(4px, 10px) rotate(2.5deg)
  215.  
  216. 70%
  217. transform translate(0px, -8px) rotate(2.5deg)
  218.  
  219. 72%
  220. transform translate(0px, 10px) rotate(0.5deg)
  221.  
  222. 74%
  223. transform translate(-2px, 6px) rotate(3.5deg)
  224.  
  225. 76%
  226. transform translate(-9px, -5px) rotate(0.5deg)
  227.  
  228. 78%
  229. transform translate(7px, 1px) rotate(3.5deg)
  230.  
  231. 80%
  232. transform translate(0px, 6px) rotate(-0.5deg)
  233.  
  234. 82%
  235. transform translate(4px, -6px) rotate(3.5deg)
  236.  
  237. 84%
  238. transform translate(-4px, 8px) rotate(-2.5deg)
  239.  
  240. 86%
  241. transform translate(1px, 10px) rotate(1.5deg)
  242.  
  243. 88%
  244. transform translate(-3px, 5px) rotate(-2.5deg)
  245.  
  246. 90%
  247. transform translate(0px, -3px) rotate(2.5deg)
  248.  
  249. 92%
  250. transform translate(1px, 8px) rotate(0.5deg)
  251.  
  252. 94%
  253. transform translate(-2px, 1px) rotate(-0.5deg)
  254.  
  255. 96%
  256. transform translate(5px, 6px) rotate(0.5deg)
  257.  
  258. 98%
  259. transform translate(1px, -8px) rotate(0.5deg)
  260.  
  261. @keyframes sonarBase
  262. from
  263. padding 0
  264. opacity 0.6
  265. to
  266. padding 1.3em
  267. opacity 0
  268. top -1.3em
  269. left -1.3em
  270.  
  271. @keyframes sonarStroke
  272. from
  273. border-width 0.4em
  274. margin -0.4em
  275. to
  276. border-width 0.1em
  277.  
  278.  
  279. // Shadow Animations
  280. @keyframes eligibilityHighlight
  281. from
  282. filter drop-shadow(0 -5px 14px eligibilityColor)
  283. to
  284. filter drop-shadow(0 -5px 16px eligibilityColor)
  285.  
  286. eligibilityAnimation = eligibilityHighlight .5s linear infinite alternate
  287. // Haste
  288. @keyframes eligibilityHasteHighlight
  289. from
  290. filter drop-shadow(0 -5px 14px eligibilityHasteColor)
  291. to
  292. filter drop-shadow(0 -5px 16px eligibilityHasteColor)
  293.  
  294. eligibilityHasteAnimation = eligibilityHasteHighlight .5s linear infinite alternate
  295.  
  296. // animation definition for the counter property.
  297. @keyframes fadeInUpScale
  298. 0%
  299. opacity 0
  300. transform scale(0.4) translateY(0)
  301.  
  302. 40%
  303. opacity 1
  304. transform scale(1) translateY(-14rem)
  305.  
  306. 100%
  307. opacity 1
  308. transform scale(1) translateY(-14rem)
  309.  
  310. @keyframes timerBar
  311. 0%
  312. height 100vh
  313. 100%
  314. height 0vh
  315.  
  316. summoningSickness()
  317. display block
  318. position absolute
  319. font-family sans-serif
  320. user-select none
  321. top 1rem
  322. right 1rem
  323. color summoningSicknessColor
  324. font-size 4rem
  325. opacity 0
  326. text-shadow #333 0px 0px 0.2rem, #333 0px 0px 0.2rem
  327. font-weight bold
  328. backface-visibility hidden
  329. transform-style preserve-3d
  330. animation summoningSickness linear 3s
  331. animation-iteration-count infinite
  332.  
  333. @keyframes summoningSickness
  334. 0%
  335. transform: translate(0px,0px) scale(0.5)
  336. opacity: 0
  337. filter: blur(0px)
  338. 25%
  339. 75%
  340. opacity: 1
  341. filter: blur(0px)
  342. 100%
  343. transform: translate(5rem,-5rem) scale(1.5)
  344. opacity: 0
  345. filter: blur(1rem)
  346.  
  347. @keyframes powerUseAnim
  348. 0%
  349. box-shadow
  350. inset 0 0 50px rgba(255,255,255,0),
  351. inset 20px 0 80px rgba(255,0,255,0),
  352. inset -20px 0 80px rgba(0,255,255,0),
  353. inset 20px 0 300px rgba(255,0,255,0),
  354. inset -20px 0 300px rgba(0,255,255,0),
  355. 0 0 30px rgba(255,255,255,0),
  356. -10px 0 50px rgba(255,0,255,0),
  357. 10px 0 50px rgba(0,255,255,0);
  358.  
  359. 50%
  360. box-shadow
  361. inset 0 0 50px rgba(255,255,255,.4),
  362. inset 20px 0 80px rgba(255,0,255,.4),
  363. inset -20px 0 80px rgba(0,255,255,.4),
  364. inset 20px 0 300px rgba(255,0,255,.4),
  365. inset -20px 0 300px rgba(0,255,255,.4),
  366. 0 0 30px rgba(255,255,255,.4),
  367. -10px 0 50px rgba(255,0,255,.4),
  368. 10px 0 50px rgba(0,255,255,.4);
  369. color rgba(255,255,255,1)
  370. font-size 15rem
  371. text-indent -2.5rem
  372.  
  373. 100%
  374. box-shadow
  375. inset 0 0 50px rgba(255,255,255,0),
  376. inset 20px 0 80px rgba(255,0,255,0),
  377. inset -20px 0 80px rgba(0,255,255,0),
  378. inset 20px 0 300px rgba(255,0,255,0),
  379. inset -20px 0 300px rgba(0,255,255,0),
  380. 0 0 30px rgba(255,255,255,0),
  381. -10px 0 50px rgba(255,0,255,0),
  382. 10px 0 50px rgba(0,255,255,0);
  383. color: rgba(255,255,255,0);
  384. font-size: 20rem;
  385. text-indent: -4.5rem;
  386.  
  387. /*
  388. * Animations END.
  389. */
  390.  
  391.  
  392.  
  393.  
  394.  
  395. /*
  396. * Player Properties Styling.
  397. */
  398.  
  399. #opponent-overload[data-type=stat], #me-overload[data-type=stat]
  400. &[data-value="0"]
  401. display none
  402. .statWrapper
  403. width 100%
  404. .count
  405. box-sizing border-box
  406. text-align center
  407. width 100%
  408. &::before
  409. content "-"
  410. margin-right 3px
  411.  
  412. #me-maxMana, #opponent-maxMana
  413. justify-content flex-start
  414. .statWrapper
  415. width 100%
  416. .count
  417. box-sizing border-box
  418. text-align right
  419. width 100%
  420. border-top-left-radius 0
  421. border-bottom-left-radius 0
  422. margin-left -3px
  423. &::before
  424. content "/"
  425. margin-right 3px
  426.  
  427. #opponent-mana[data-type=stat], #me-mana[data-type=stat]
  428. .statWrapper
  429. width 100%
  430. .count
  431. box-sizing border-box
  432. padding-right 6px
  433. text-align right
  434. width 100%
  435. border-top-right-radius 0
  436. border-bottom-right-radius 0
  437.  
  438.  
  439. #opponent-maxMana[data-type=stat], #me-maxMana[data-type=stat]
  440. .statWrapper
  441. width 100%
  442. .count
  443. text-align left
  444. width 100%
  445. border-top-left-radius 0
  446. border-bottom-left-radius 0
  447.  
  448. /*
  449. * Player Properties Styling END.
  450. */
  451.  
  452.  
  453.  
  454.  
  455.  
  456. /*
  457. * Card Full Info Popup Styling. The default card popups do not have the card stats displayed on top of the card image. Because different games may have different stats and would likely want to use them in different ways, the default stats are arranged in a table underneath. Here for the template we can save space on the card by putting the stats on top of the card image.
  458. */
  459.  
  460. statStyles()
  461. border-radius 50em
  462. background statBgColor
  463. color statTextColor
  464. padding .2em .4em
  465. position absolute
  466. font-size 1.4em
  467. font-weight bold
  468. line-height 1
  469. width inherit
  470.  
  471. setNegativesToZero()
  472. if HIDE_NEGATIVES
  473. // ensure that all negative values are displayed as 0.
  474. &[data-value^="-"]
  475. .data
  476. color transparent
  477. position absolute
  478. &:before
  479. content "0"
  480. display inline-block
  481.  
  482. #cardFullInfo .cardDisplayInner
  483. .cardFullInfo .cardDisplayInner
  484. color #eee
  485.  
  486. .image, .video
  487. position relative
  488. border-bottom 2px solid #000
  489. if MEDIACONTENT_INSET_SHADOWS
  490. &:after
  491. box-shadow inset 0 0 30px 15px alpha(#000, 0.8)
  492. content ''
  493. display block
  494. height 100%
  495. position absolute
  496. top 0
  497. width 100%
  498.  
  499. .info
  500. position relative
  501.  
  502. ul.dataPane
  503. if OVERLAY_MAIN_PROPERTIES
  504. li
  505. .data
  506. width auto
  507. .mainProperties
  508. width auto
  509. .table
  510. display block
  511. border-spacing 0
  512. .Row .td
  513. display block
  514. padding 0
  515. .title
  516. display none
  517.  
  518. .property
  519. statStyles()
  520. font-size 3em
  521. setNegativesToZero()
  522.  
  523. [data-name='cost']
  524. top 10px
  525. left 10px
  526. border 3px solid costColor
  527. [data-name='atk']
  528. top 294px
  529. left 10px
  530. border 3px solid atkColor
  531. [data-name='health']
  532. top 294px
  533. right 10px
  534. border 3px solid healthColor
  535. [data-name='dur']
  536. top 294px
  537. right 10px
  538. border 3px solid durColor
  539. [data-name='reqSource'], [data-name='source']
  540. font-size 1em
  541. font-weight 400
  542. background none
  543. bottom 12px
  544. left 24px
  545. text-transform capitalize
  546. padding-left 0
  547. padding-right 0
  548.  
  549. li.effect, li.rarity, li.description, li.desc, li.type
  550. .data
  551. float none
  552. width auto
  553. .title
  554. display none
  555. text-align center
  556. .secondaryProperties
  557. overflow hidden
  558. padding 0 19.5px
  559. background rgba(0,0,0,.4)
  560. margin 0
  561. box-sizing border-box
  562. text-align center
  563.  
  564. // there are some properties that are for internal or UI purposes only, not meant to be displayed.
  565. li
  566. &[data-name="eligibleToAttack"]
  567. display none
  568.  
  569. li
  570. display inline-block
  571. background none
  572. padding 9.75px 0
  573. overflow visible
  574. margin 0 0 1px
  575. .data, .title
  576. -webkit-font-smoothing auto
  577. display inline
  578. width auto
  579. float none
  580. padding-right 0
  581. &[data-value="0"]
  582. display none
  583. &[data-name="legacy"], &[data-name="invoke"], &[data-name="defensive"], &[data-name="offensive"]
  584. display none
  585. for keyword in keywords
  586. &[data-name=\"{keyword}\"]
  587. text-transform capitalize
  588. color white
  589. font inherit
  590. font-weight bold
  591. &::after
  592. content ". "
  593. display inline
  594. padding-right .25em
  595. .title
  596. text-transform capitalize
  597. color white
  598. font inherit
  599. font-weight bold
  600. .data
  601. display none
  602. for keyword in numberedKeywords
  603. &[data-name=\"{keyword}\"]
  604. .title
  605. padding-right 0
  606. &::after
  607. content " (" attr(data-value) "). "
  608. display inline
  609. padding-right .25em
  610.  
  611.  
  612. // if the value is 1 then don't show the data as usual. Only show data if value is more than 1.
  613. &[data-name="frenzy"], &[data-name="shield"], &[data-name="echo"]
  614. &[data-value="1"]
  615. &::after
  616. content ". "
  617. display inline
  618. padding-right .25em
  619.  
  620. // "silence" keyword is shown as "silenced" in keyword list
  621. &[data-name="silence"]
  622. &::after
  623. content "d. "
  624. display inline
  625. padding-right .25em
  626.  
  627. li.rarity
  628. text-align right
  629.  
  630. // Don't show the keywords help for the reqSource and source properties. The helptext for these properties are only for developers and not players.
  631. .keywords-help
  632. .keyword[data-name="source"]
  633. .keyword[data-name="reqSource"]
  634. display none
  635.  
  636. // Class Styling. Cards of different classes will have different color border and texts.
  637. classStyles(c)
  638. .name, .dataPane
  639. color c
  640. .name
  641. border-top 3px solid c
  642. .image, .video
  643. border-bottom 2px solid c
  644. &:after
  645. box-shadow inset 0 0 30px 15px darken(alpha(c, 0.8), 80%)
  646.  
  647. #cardFullInfo, .cardFullInfo
  648. for key, value in classColors
  649. .mainProperties
  650. .data
  651. [data-name=\"{key}\"]
  652. color value !important
  653.  
  654. &[data-source=\"{key}\"], &[data-reqsource=\"{key}\"]
  655. classStyles(value)
  656. [data-name='source']
  657. [data-name='reqSource']
  658. .data
  659. color value !important
  660.  
  661. for key2, value2 in classColors
  662. unless key == key2
  663. &[data-source*=\"{key}\"][data-source*=\"{key2}\"], &[data-reqsource*=\"{key}\"][data-reqsource*=\"{key2}\"]
  664. classStyles(mix(value, value2))
  665.  
  666. /*
  667. * Card Full Info Popup Styling END.
  668. */
  669.  
  670.  
  671.  
  672.  
  673.  
  674. /*
  675. * Select Cards Modal Styling.
  676. */
  677.  
  678. .select-cards-container
  679. .cards
  680. if OVERLAY_MAIN_PROPERTIES
  681. .card
  682. .mainProperty
  683. statStyles()
  684. font-size 3em
  685. display block
  686. setNegativesToZero()
  687. [data-name='cost']
  688. top 10px
  689. left 10px
  690. border 3px solid costColor
  691. [data-name='atk']
  692. top 294px
  693. left 10px
  694. border 3px solid atkColor
  695. [data-name='health']
  696. top 294px
  697. right 10px
  698. border 3px solid healthColor
  699. [data-name='dur']
  700. top 294px
  701. right 10px
  702. border 3px solid durColor
  703. [data-name='reqSource']
  704. display none
  705.  
  706. // when selecting mulligans
  707. &[data-effectname="mulliganB"]
  708. &[data-effectname="mulliganA"]
  709. .select-cards-inner
  710. .card
  711. &:not(.selected)
  712. box-shadow 0 0 30px 7px rgba(81, 255, 0, .7)
  713. &.selected
  714. box-shadow none
  715. &::after
  716. position absolute
  717. height 92%
  718. width 92%
  719. top 4%
  720. left 4%
  721. background center center no-repeat
  722. background-size contain
  723. background-image mulliganOverlay
  724. content " / "
  725. display block
  726. color transparent
  727.  
  728. /*
  729. * Select Cards Modal Styling END.
  730. */
  731.  
  732.  
  733.  
  734.  
  735.  
  736. /*
  737. * Play Interface.
  738. */
  739.  
  740. #playContainer
  741. .card
  742. box-shadow none
  743.  
  744. .property
  745. setNegativesToZero()
  746.  
  747. &[data-name="cost"]
  748. &[data-name="atk"]
  749. &[data-name="health"]
  750. &[data-name="armor"]
  751. display block
  752. z-index 1
  753.  
  754. &[data-name="cost"]
  755. statStyles()
  756. top .5rem
  757. left .5rem
  758. border 1px solid costColor
  759.  
  760. &[data-name="atk"]
  761. statStyles()
  762. bottom .5rem
  763. left .5rem
  764. border 1px solid atkColor
  765.  
  766. &[data-name="health"]
  767. statStyles()
  768. bottom .5rem
  769. right .5rem
  770. border 1px solid healthColor
  771.  
  772. &[data-name="dur"]
  773. statStyles()
  774. bottom .5rem
  775. right .5rem
  776. border 1px solid durColor
  777.  
  778. &[data-name="armor"]
  779. statStyles()
  780. padding 0.35em 0.35em 0.45em 0.35em
  781. width inherit
  782. line-height 1.4em
  783. bottom 5rem
  784. right 0rem
  785. filter drop-shadow(0 -5px 15px #919191)
  786. background transparent
  787. width 1.4em
  788. background-image url(https://d2t4fc8ff77neh.cloudfront.net/cardSrcImage/1ck5p2pv3_greyblueshield.png)
  789. background-size contain
  790. background-position center center
  791. background-repeat no-repeat
  792. opacity 0.9
  793.  
  794.  
  795. &[data-powerusedthisturn="0"]
  796. .property[data-name="powerName"]
  797. position absolute
  798. top 0
  799. height 100%
  800. width 100%
  801. display block
  802. border-top-left-radius 20em 30em
  803. border-top-right-radius 20em 30em
  804. overflow hidden
  805. color rgba(0, 0, 0, 0)
  806. font-size 1.4em
  807. display none
  808. &::after
  809. content attr(data-value)
  810. display block
  811. top 5rem
  812. width 100%
  813. text-align center
  814. padding .25rem 0
  815. color powerColor
  816. text-shadow black 0px 0px 5px, black 0px 0px 2px
  817. pointer-events none
  818. background-color statBgColor
  819. position absolute
  820.  
  821. &.powerUseAnimation::after
  822. display block
  823. content ""
  824. color rgba(255,255,255,0)
  825. width 100%
  826. height 100%
  827. animation powerUseAnim 1200ms cubic-bezier(0.39, 0.575, 0.565, 1)
  828. position absolute
  829. border-top-left-radius 20em 30em
  830. border-top-right-radius 20em 30em
  831. top 0
  832. left 0
  833. right 0
  834. bottom 0
  835.  
  836. &[data-location="me-hero"]
  837. &[data-location="opponent-hero"]
  838. img
  839. if SHAPE_HERO
  840. border-top-left-radius 20em 30em
  841. border-top-right-radius 20em 30em
  842. border 2px solid grey
  843.  
  844. .property
  845. &[data-name="health"]
  846. display block
  847. &[data-name="atk"]
  848. display block
  849.  
  850.  
  851.  
  852. &[data-location="me-hand"]
  853. &[data-location="opponent-hand"]
  854. .property[data-name="atk"]
  855. .property[data-name="health"]
  856. display none
  857. &[data-echoCopy="1"]
  858. .property[data-name="echoCopy"]
  859. background rgba(0,115,255,.15)
  860. position absolute
  861. left 0
  862. top 0
  863. display block
  864. width 100%
  865. height 100%
  866. color rgba(0, 0, 0, 0)
  867. border-radius 5px
  868.  
  869. &[data-location="me-afterlife"]
  870. &[data-location="opponent-afterlife"]
  871. .media-content
  872. afterlifeShape()
  873. transition 1s all
  874. .property
  875. display none
  876.  
  877. &[data-location="me-playPreview"]
  878. &[data-location="opponent-playPreview"]
  879. opacity 1
  880. transition 1s all
  881. .media-content
  882. border-radius 5px
  883. .property[data-name="cost"]
  884. border-radius 2em
  885. background statBgColor
  886. padding .2em .4em
  887. position absolute
  888. font-size 1.5em
  889. font-weight bold
  890. top 5px
  891. left 5px
  892. line-height 1
  893. border 1px solid costColor
  894.  
  895. &[data-location="me-weapon"]
  896. &[data-location="opponent-weapon"]
  897. .media-content
  898. weaponShape()
  899. .property
  900. &[data-name="cost"]
  901. display none
  902. &[data-name="dur"]
  903. display block
  904.  
  905. &[data-location="me-backrow"]
  906. &[data-location="opponent-backrow"]
  907. .media-content
  908. weaponShape() // Remains use same shape as weapons
  909. .property[data-name="cost"]
  910. display none
  911. &[data-position="facedown"]
  912. &::after
  913. content "?"
  914. font-weight bold
  915. font-size 4rem
  916. display block
  917. position absolute
  918. line-height 7rem
  919. width 100%
  920. height 7rem
  921. color alpha(twistColor, 30%)
  922. top 1rem
  923. left 0
  924. &::before
  925. content "."
  926. display block
  927. height 100%
  928. width 100%
  929. weaponShape() // Twists use same shape as weapons
  930. background alpha(twistColor, 20%)
  931. box-shadow inset 1rem 0 1rem 1rem alpha(twistColor, 5%), inset -1rem 0 1rem 1rem alpha(twistColor, 5%), inset 0 2rem 1rem 1rem alpha(twistColor, 5%), inset 0 -2rem 1rem 1rem alpha(twistColor, 5%), inset 0.7rem 1.3rem 1.6rem 1.4rem alpha(twistColor, 5%), inset -0.7rem 1.3rem 1.6rem 1.4rem alpha(twistColor, 5%), inset -0.7rem -1.3rem 1.6rem 1.4rem alpha(twistColor, 5%), inset 0.7rem -1.3rem 1.6rem 1.4rem alpha(twistColor, 5%)
  932. &:hover
  933. &::after
  934. content "Twist"
  935. color alpha(twistColor, 60%)
  936. font-weight 400
  937. font-size 2rem
  938. .property
  939. display none
  940.  
  941. .media-content
  942. display none
  943.  
  944. &[data-location="me-board"]
  945. &[data-location="opponent-board"]
  946. &[data-location="me-board1"]
  947. &[data-location="opponent-board1"]
  948. &[data-location="me-board2"]
  949. &[data-location="opponent-board2"]
  950. &[data-location="me-board3"]
  951. &[data-location="opponent-board3"]
  952. .media-content
  953. unitShape()
  954.  
  955. .property[data-name="cost"]
  956. display none
  957.  
  958. keywordVisualEffectsBasic()
  959. position absolute
  960. display block
  961. color rgba(0, 0, 0, 0)
  962.  
  963. &[data-summoningSickness="1"]:not([data-eligibletoattack="1"]):not([data-rush="1"],[data-haste="1"])
  964. .property[data-name="summoningSickness"]
  965. keywordVisualEffectsBasic()
  966. top 0
  967. left 0
  968. width 100%
  969. height 10rem
  970. .data
  971. &:after
  972. summoningSickness()
  973. content "z"
  974. animation-delay 0s
  975. &:before
  976. summoningSickness()
  977. content "z"
  978. animation-delay 1s
  979. &:after
  980. summoningSickness()
  981. content "z"
  982. animation-delay 2s
  983.  
  984.  
  985. &[data-last-life="1"]
  986. .property[data-name="last life"]
  987. keywordVisualEffectsBasic()
  988. background rgba(255,255,255,.01)
  989. box-shadow inset 0 10px 20px 10px #FFF, inset 0 -10px 20px 10px #FFF, 0 10px 20px 10px #FFF, 0 -10px 20px 10px #FFF
  990. transform scaleX(.65) scaleY(.2)
  991. border-radius 100px
  992. left 0
  993. top -40%
  994. height 0
  995. width 100%
  996. padding-bottom 100%
  997.  
  998. &[data-frenzy="1"]
  999. &[data-frenzy="2"]
  1000. &[data-frenzy="3"]
  1001. &[data-frenzy="4"]
  1002. &[data-eligibletoattack="1"]
  1003. .card-inner
  1004. animation frenzy 2s infinite alternate ease-out
  1005.  
  1006. &[data-shield="1"]
  1007. .property[data-name="shield"]
  1008. keywordVisualEffectsBasic()
  1009. animation shieldEnter 1s cubic-bezier(.55,0,.1,1), shieldThrob .5s alternate infinite;
  1010. z-index 1
  1011. filter drop-shadow(0 -5px 15px #c6e000)
  1012. background transparent
  1013. left 10%
  1014. top -20%
  1015. width 80%
  1016. height 80%
  1017. background-image url("https://d2t4fc8ff77neh.cloudfront.net/cardSrcMedia/1abmn8gl0_9TpjLAETE.svg")
  1018. background-size contain
  1019. background-position center center
  1020. background-repeat no-repeat
  1021. opacity .5
  1022.  
  1023. &[data-snipe="1"]
  1024. .property[data-name="snipe"]
  1025. keywordVisualEffectsBasic()
  1026. z-index 1
  1027. filter drop-shadow(0 0px 2px red)
  1028. background transparent
  1029. left 20%
  1030. bottom -15%
  1031. width 60%
  1032. height 30%
  1033. background-image url("https://d2t4fc8ff77neh.cloudfront.net/cardSrcImage/1bflo5jja_svg-20-512.png")
  1034. background-size contain
  1035. background-position center center
  1036. background-repeat no-repeat
  1037.  
  1038. &[data-poison="1"]
  1039. .property[data-name="poison"]
  1040. keywordVisualEffectsBasic()
  1041. z-index 1
  1042. filter drop-shadow(0 0px 2px #008000) invert(120%) sepia() saturate(100000%) hue-rotate(40deg)
  1043. background transparent
  1044. left 20%
  1045. bottom -12%
  1046. width 60%
  1047. height 25%
  1048. background-image url("https://d2t4fc8ff77neh.cloudfront.net/cardSrcMedia/1ccea1ktv_noun_1581462_cc.png")
  1049. background-size contain
  1050. background-position center center
  1051. background-repeat no-repeat
  1052.  
  1053. &[data-hidden="1"]
  1054. .property[data-name="hidden"]
  1055. keywordVisualEffectsBasic()
  1056. box-shadow inset 20px 0 10px 0 rgba(0,0,0,0.2048), inset 40px 0 14px -4px rgba(0,0,0,0.256), inset 60px 0 18px -8px rgba(0,0,0,0.32), inset 80px 0 22px -12px rgba(0,0,0,0.4), inset 100px 0 26px -16px rgba(0,0,0,0.5)
  1057. left 0
  1058. top 0
  1059. width 100%
  1060. height 100%
  1061. border-radius 5px
  1062. unitShape()
  1063.  
  1064. &[data-elusive="1"]
  1065. .property[data-name="elusive"]
  1066. background rgba(255,215,0,.15)
  1067. keywordVisualEffectsBasic()
  1068. left 0
  1069. top 0
  1070. width 100%
  1071. height 100%
  1072. border-radius 5px
  1073. unitShape()
  1074.  
  1075. &[data-immune="1"]
  1076. .property[data-name="immune"]
  1077. keywordVisualEffectsBasic()
  1078. background rgba(55,155,255,.25)
  1079. left 0
  1080. top 0
  1081. width 100%
  1082. height 100%
  1083. border-radius 5px
  1084. unitShape()
  1085.  
  1086. &[data-location="me-hero"]
  1087. &[data-eligibletoattack="1"]
  1088. .media-content
  1089. animation eligibilityAnimation
  1090. &[data-cannotAttack="1"]
  1091. transform rotate(90deg)
  1092.  
  1093. &[data-location="opponent-hero"]
  1094. &[data-cannotAttack="1"]
  1095. transform rotate(270deg)
  1096.  
  1097. &[data-location="me-board"]
  1098. &[data-eligibletoattack="1"]
  1099. animation eligibilityAnimation
  1100. &[data-haste="1"]
  1101. &[data-summoningSickness="1"]
  1102. animation eligibilityHasteAnimation
  1103. &[data-cannotAttack="1"]
  1104. transform rotate(90deg)
  1105. &[data-vanguard="1"]
  1106. margin-top -2em
  1107. &[data-knocked-back="1"]
  1108. transform rotate(90deg)
  1109. transition 1s
  1110. &[data-location="opponent-board"]
  1111. &[data-cannotAttack="1"]
  1112. transform rotate(270deg)
  1113. &[data-vanguard="1"]
  1114. margin-top 2em
  1115. &[data-knocked-back="1"]
  1116. transition 1s
  1117. transform rotate(270deg)
  1118.  
  1119. // these are two locations that aren't defined in the game logic, just a place to send cards to when you don't want to see them anymore.
  1120. &[data-location="opponent-hidden"]
  1121. &[data-location="me-hidden"]
  1122. opacity 0
  1123.  
  1124.  
  1125. // only show eligibleToPlay highlights for that turn's player.
  1126. body[data-turnPlayer="player1"][data-playerNumber="player1"]
  1127. body[data-turnPlayer="player2"][data-playerNumber="player2"]
  1128. .card
  1129. &[data-location="me-hand"]
  1130. &[data-eligibleToPlay="1"]
  1131. perspective 400px
  1132. transform-style preserve-3d
  1133. will-change transform
  1134. .card-inner
  1135. display block
  1136. transform-style preserve-3d
  1137. width 100%
  1138. will-change transform
  1139. .media-content
  1140. animation eligibilityAnimation
  1141.  
  1142. &:hover
  1143. margin-top -1%
  1144.  
  1145.  
  1146.  
  1147.  
  1148.  
  1149. // Custom UI Elements created by rule cards.
  1150. #card-container
  1151. .card[data-title="ui element: board overlay"]
  1152. position absolute
  1153. transition none
  1154. width 102rem !important
  1155. height 17rem !important
  1156. z-index 100 !important
  1157. pointer-events none
  1158. top 52rem !important
  1159. left 21rem !important
  1160. border solid 3px rgb(56, 205, 255)
  1161. border-radius 3rem
  1162. background alpha(rgb(56, 205, 255), .2)
  1163.  
  1164. .card[data-title="ui element: sonar"]
  1165. position relative
  1166. width 3rem !important
  1167. height 3rem !important
  1168. pointer-events none
  1169. transition none
  1170. &:after
  1171. z-index -1
  1172. padding 0
  1173. top 0
  1174. left 0
  1175. width 100%
  1176. height 100%
  1177. content ''
  1178. display block
  1179. position absolute
  1180. animation-name sonarBase, sonarStroke
  1181. animation-iteration-count infinite
  1182. animation-duration 1s
  1183. box-sizing content-box
  1184. border 1px solid rgba(255, 69, 0, 1)
  1185. border-radius 10rem
  1186.  
  1187. .card[data-dulstClass~="dialogue"]
  1188. height auto !important
  1189. z-index 2000 !important
  1190. .card-inner
  1191. .media-content
  1192. display none
  1193. border-radius 2rem
  1194. border .4rem solid #aaa
  1195. border-radius 2rem
  1196. background alpha(#333, .6)
  1197. color #fff
  1198. box-sizing border-box
  1199. text-shadow 1px 1px #444
  1200. box-shadow 0 0 1px rgba(76,86,103,1), 0 1px 1px rgba(31,37,50,1)
  1201. .property[data-name="text"]
  1202. display block
  1203. &::after
  1204. content: " ";
  1205. position: absolute;
  1206. border-style: solid;
  1207. &[data-dulstclass~="bottom"]
  1208. &::after
  1209. bottom 100% /* At the top of the tooltip */
  1210. border-color transparent transparent #b1b1b1 transparent
  1211. &[data-dulstclass~="top"]
  1212. &::after
  1213. top 100% /* At the bottom of the tooltip */
  1214. border-color #b1b1b1 transparent transparent transparent
  1215.  
  1216. .card[data-title="ui element: Tutorial Dialog"]
  1217. width 48rem !important
  1218. .card-inner
  1219. margin-top 2.5rem
  1220. padding 1.5rem 2rem
  1221. font-size 2.5rem
  1222. &::after
  1223. left 18rem
  1224. margin-left 3rem
  1225. border-width 3rem
  1226.  
  1227. .card[data-title="ui element: paragraph text"]
  1228. width 100vw !important
  1229. height 100vh !important
  1230. top 0 !important
  1231. left 0 !important
  1232. right 0 !important
  1233. z-index 2000 !important
  1234. position fixed
  1235. border 0
  1236. background linear-gradient(to bottom, rgba(0,0,0,.8) 0%, rgba(0,0,0,.6) 50%, rgba(0,0,0,0) 70%)
  1237. .card-inner
  1238. padding 12vh 20vw
  1239. font-size 5vh
  1240. box-shadow none
  1241. text-shadow 1px 1px 0px #444, -1px 1px 0px #444, 1px -1px 0px #444, -1px -1px 0px #444
  1242. background 0
  1243. border 0
  1244. border-radius 0
  1245. &::after
  1246. content "(click to continue)"
  1247. display block
  1248. font-style italic
  1249. margin-top 1rem
  1250. font-size 65%
  1251.  
  1252. .card[data-title="ui element: help tooltip"]
  1253. width 30rem !important
  1254. transition none
  1255. .card-inner
  1256. // margin-top 2.5rem
  1257. padding 1rem 1.25rem
  1258. font-size 2rem
  1259. &::after
  1260. margin-left: 2rem;
  1261. border-width: 1rem;
  1262. left 12rem
  1263. &[data-dulstClass~="reqClick"]
  1264. cursor pointer
  1265. .card-inner
  1266. &:after
  1267. content "(click to continue)"
  1268. display block
  1269. font-style italic
  1270. margin-top .5rem
  1271. &:hover
  1272. box-shadow 0 0 5px alpha(gold, 1)
  1273.  
  1274. .card[data-title="ui element: timerBar"]
  1275. width 1rem !important
  1276. position fixed !important
  1277. left 0 !important
  1278. height 100vh !important
  1279. bottom 0 !important
  1280. top auto !important
  1281. background red
  1282. animation-name timerBar
  1283. animation-iteration-count 1
  1284. animation-duration 10s
  1285. animation-timing-function linear
  1286. &[data-location="opponent-playPreview"]
  1287. opacity .3
  1288.  
  1289.  
  1290. // Floating text. When main stats change on a card a popup appears.
  1291. .card-change-value-container
  1292. font-size 3rem
  1293. font-weight bold
  1294.  
  1295. // by default don't show floating text when stats change.
  1296. .card-change-value
  1297. display none
  1298.  
  1299. // Do show floating text when health changes. This is floating damage.
  1300. .health.decrease
  1301. &.me-board
  1302. &.opponent-board
  1303. &.hero
  1304. display block
  1305. color white
  1306. border 1px solid healthColor
  1307. background alpha(healthColor, 75%)
  1308. padding 2rem
  1309. label, .to
  1310. display none
  1311. .by
  1312. display block
  1313. .arrow
  1314. display none
  1315.  
  1316. // show floating numbers when the counter changes.
  1317. .card-change-value.counter.increase
  1318. display block
  1319. color white
  1320. opacity 0
  1321. animation fadeInUpScale 1.5s
  1322. animation-timing-function ease-in-out
  1323. animation-iteration-count 2
  1324. animation-direction alternate
  1325. animation-fill-mode backwards
  1326. font-size 18rem
  1327. background transparent
  1328. border 0
  1329. label, .by
  1330. display none
  1331. .to
  1332. display block
  1333. .arrow
  1334. display none
  1335.  
  1336. /*
  1337. * Play Interface End.
  1338. */
  1339.  
  1340.  
  1341.  
  1342.  
  1343.  
  1344. /*
  1345. * Out of Game Interface.
  1346. */
  1347.  
  1348.  
  1349. // Control the positioning of the game modes screen when the player is deciding which game mode to play after hitting the play a match button.
  1350. .game-modes-selector
  1351. width 60vh
  1352. max-height 450px
  1353.  
  1354.  
  1355.  
  1356. body:not([achievement-tutorial_win="1"])
  1357. if REQUIRE_TUTORIAL_COMPLETE
  1358. .game-modes-selector
  1359. overflow-y hidden
  1360. max-height 350px
  1361. max-width 600px
  1362. padding 0
  1363.  
  1364. .grid
  1365. display flex
  1366. flex-direction column
  1367. justify-content center
  1368. .game-mode:not([data-id="tutorial"])
  1369. display none
  1370. .game-mode[data-id="tutorial"]
  1371. height 200px
  1372. padding 50px
  1373. padding-bottom 100px
  1374. margin-bottom 0
  1375. .game-mode-inner
  1376. height 100%
  1377. width 100%
  1378. .gradient
  1379. padding 0
  1380. text-align center
  1381. display flex
  1382. justify-content center
  1383. flex-direction column
  1384. .title
  1385. position static
  1386. display block
  1387. font-size 3em
  1388.  
  1389. .description
  1390. padding 1em
  1391. max-width 500px
  1392. margin 0 auto
  1393. display block
  1394.  
  1395. // .grid
  1396. // grid-template-columns \[col\] auto \[col\] auto \[col\] auto \[col\] auto \[col\] auto \[col\] auto \[col\] auto \[col\] auto \[col\] auto
  1397. // grid-template-rows \[row\] 4fr \[row\] 2fr
  1398. // display grid
  1399. // grid-gap 10px
  1400.  
  1401. // .box
  1402. // margin-bottom none
  1403. // height auto
  1404.  
  1405. /*
  1406. * Out of Game Interface End.
  1407. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement