<header>
  <h1>
    <a target="_top" href="https://codepen.io/josetxu/pen/NWByOzb">
      <span class="title-0">3D</span>
      <span class="title-1"><strong>P</strong>YRAMID<br><strong>G</strong>ENERATOR</span>
    </a>
  </h1>
  <a class="josetxu-btn" href="https://josetxu.com" target="_blank"></a></div>
<button id="copy-css" onclick="copyCode(this.id)">{ CSS }</button>
<button id="copy-html" onclick="copyCode(this.id)">&lt; HTML &gt;</button>
</header>

<input type="checkbox" id="play-pause" onclick="animatePyramid()" autocomplete="off">

<div class="w-bricks pyramid" id="pyramid">
  <span></span>
  <span></span>
  <span></span>
  <span></span>
  <div>
    <div></div>
  </div>
</div>

<div id="hidden-copy-html" class="hidden">&lt;!-- Josetxu's 3D Pyramid Generator - CSS --&gt; 
&lt;!-- https://codepen.io/josetxu/pen/NWByOzb --&gt; 
&lt;div class="<span id="w-pyramid">w-bricks</span> pyramid <span id="anim">running</span>" style="--width:<span id="cp-width">35</span>; --height:<span id="cp-height">30</span>; --hypo:<span id="cp-hypo">34.73</span>; --alpha:<span id="cp-alpha">59.74deg</span>;"&gt;
  &lt;span&gt;&lt;/span&gt;
  &lt;span&gt;&lt;/span&gt;
  &lt;span&gt;&lt;/span&gt;
  &lt;span&gt;&lt;/span&gt;
&lt;/div&gt;
</div>


<div id="hidden-copy-css" class="hidden">/*** Josetxu's 3D Pyramid Generator - CSS ***/
/*** https://codepen.io/josetxu/pen/NWByOzb ***/
body { 
    margin: 0; 
    padding: 0; 
    overflow: hidden; 
    display: flex; 
    justify-content: center; 
    align-items: center; 
    width: 100vw; 
    height: 100vh; 
    perspective: 100vmin;
}

body * { 
    box-sizing: border-box; 
    transform-style: preserve-3d; 
}

@keyframes spin { 
    0% { transform: rotateX(65deg) rotateZ(-160deg); } 
  100% { transform: rotateX(65deg) rotateZ(200deg); } 
}

.pyramid { 
  width: calc(var(--width) * 1vmin); 
  height: calc(var(--width) * 1vmin); 
  transform: rotateX(65deg) rotateZ(-160deg); 
  margin: 0 0 calc(var(--height) * -0.5vmin) -5vmin; 
  background: var(--wall-design); 
  animation: spin 8s linear 0s infinite;  
}

.pyramid.running, .pyramid.running span {   
  animation-play-state: running; 
}

.pyramid.paused, .pyramid.paused span {   
  animation-play-state: paused; 
}

.pyramid:before {
  content: "";
  background: black;
  width: 100%;
  height: 100%;
  position: absolute;
  transform: translateZ(-10vmin);
  box-shadow: 0 0 2vmin 2vmin #000000;
  opacity: 0.1;
}

.pyramid span {
  width: 100%;
  height: calc(var(--hypo) * 1vmin);
  --hypo2: calc(calc(var(--hypo) / 2) * 1vmin); 
  position: absolute;
  box-sizing: border-box;
  clip-path: polygon(0% 100%, 50% 0%, 100% 100%);
  background: var(--wall-design);
  filter: brightness(var(--cx));
  animation: shadows 8s ease 0s infinite;
}

.pyramid span:nth-child(1) {
  transform-origin: center bottom;
  transform: rotateX(calc(var(--alpha) * -1));
  bottom: 0;
  --cx: 0.65; /*firefox*/
  animation-delay: -9s;
}
.pyramid span:nth-child(2) {
  transform-origin: right center;
  transform: rotateY(calc(var(--alpha) * 1)) rotateZ(-90deg) translate3d(var(--hypo2), calc(var(--hypo2) * -1), 0vmin);
  --cx: 0.85; /*firefox*/
  animation-delay: -7s;
}
.pyramid span:nth-child(3) {
  transform-origin: center top;
  transform: rotateX(calc(var(--alpha) * 1)) rotateZ(180deg) translate3d(0vmin, calc(var(--hypo) * -1vmin), 0vmin);
  --cx: 1.1; /*firefox*/
  animation-delay: -5s;
}
.pyramid span:nth-child(4) {
  transform-origin: left center;
  transform: rotateY(calc(var(--alpha) * -1)) rotateZ(90deg) translate3d(calc(var(--hypo2) * -1), calc(var(--hypo2) * -1), 0vmin);
  --cx: 1.3; /*firefox*/
  animation-delay: -3s;
}

/*** Wall Shadows ***/
@property --cx {
  syntax: '&lt;number&gt;';
  inherits: false;
  initial-value: 1;
}

@keyframes shadows {
    0% { --cx: 0.6; }
   25% { --cx: 1.1; }
   50% { --cx: 1.3; }
   75% { --cx: 0.8; }
  100% { --cx: 0.6; }
}


/************ Wall Designs ************/
/*** You can delete the unused ones ***/

/*** Bricks ***/
.w-bricks.pyramid {
  --sz: 4px;
  --brick1: #b16c53;
  --brick2: #b56c52;
  --lines: #873e1a;
  --gp-ln: 50%/calc(var(--sz) * 10) calc(var(--sz) * 5);
  --gp-cn: 50%/calc(var(--sz) * 5) calc(var(--sz) * 5);
  --wall-design: 
    repeating-conic-gradient(from 90deg at 95% 55%, var(--lines) 0% 25%, #fff0 0% 100%) var(--gp-cn), 
    repeating-linear-gradient(180deg, var(--lines) 0 5%, #fff0 0 50%, var(--lines) 0 55%, var(--brick2) 0 100%) var(--gp-ln),
    repeating-linear-gradient(90deg, var(--brick1) 0 47.5%, var(--lines) 0 50%, var(--brick1) 0 97.5%, var(--lines) 0 100%) var(--gp-ln);
}

/*** Granite ***/
.w-granite.pyramid {
  --wall-design: 
    repeating-conic-gradient(#0004 0%, #fff0 .0003%, #fff0 .0005%, #fff0 .00095%), 
    repeating-conic-gradient(#fff2 0%, #fff0 .0005%, #fff0 .00015%, #fff0 .0009%) #777;
}

/*** Crystal ***/
.w-crystal.pyramid {
  --wall-design: 
    linear-gradient(45deg, #fff0 55%, #fff1 56% 64%, #fff0 65% 66%, #fff2 67% 69%, #fff0 71% 100%), 
    linear-gradient(45deg, #2196f380, #ffffff78 56% 64%, #2196f380), 
    #fff4;
}

/*** Grille ***/
.w-grille.pyramid {
  --sz: 4px;
  --gp: 50%/ calc(var(--sz) * 2) calc(var(--sz) * 2);
  --wall-design: 
    linear-gradient(290deg, #fff0 25%, #545454 25% 35%, #fff0 35% 100%) var(--gp), 
    linear-gradient(-290deg, #fff0 25%, #727272 25% 35%, #fff0 35% 100%) var(--gp), 
    linear-gradient(200deg, #fff0 25%, #545454 25% 35%, #fff0 35% 100%) var(--gp), 
    linear-gradient(-200deg, #fff0 25%, #727272 25% 35%, #fff0 35% 100%) var(--gp), 
    #0001;
}

/*** Smooth ***/
  .w-smooth.pyramid {
  --wall-design: #1d73b7;
}

/*** Puzzle ***/
.w-puzzle.pyramid {
  --sz: 3px;
  --c1: #8bc34a;
  --c2: #3f8d42;
  --pz: calc(var(--sz) * 0.65), #fff0 calc(calc(var(--sz) * 0.65) + 1px);
  --gp: 50%/ calc(var(--sz) * 10) calc(var(--sz) * 10);
  --wall-design: 
    radial-gradient(circle at 55% 25%, var(--c2) var(--pz)) var(--gp), 
    radial-gradient(circle at 75% 45%, var(--c2) var(--pz)) var(--gp), 
    radial-gradient(circle at 5% 75%, var(--c2) var(--pz)) var(--gp), 
    radial-gradient(circle at 25% 55%, var(--c2) var(--pz)) var(--gp), 
    radial-gradient(circle at 55% 75%, var(--c1) var(--pz)) var(--gp), 
    radial-gradient(circle at 75% 95%, var(--c1) var(--pz)) var(--gp), 
    radial-gradient(circle at 5% 25%, var(--c1) var(--pz)) var(--gp), 
    radial-gradient(circle at 25% 5%, var(--c1) var(--pz)) var(--gp), 
    conic-gradient(from 0deg at 50% 50%, var(--c1) 0 25%, var(--c2) 0 50%, var(--c1) 0 75%, var(--c2) 0 100%) var(--gp);
}

/*** ZigZag ***/
.w-zigzag.pyramid {
  --sz: 2px;
  --c1: #b78cff;
  --c2: #9d6fe9;
  --c3: #8f64d4;
  --c4: #7e59bb;
  --gp: 50%/ calc(var(--sz) * 6) calc(var(--sz) * 12);
  --wall-design: 
    conic-gradient(from -45deg at 50% 25%, var(--c2) 0 90deg, #fff0 0 100%) var(--gp), 
    conic-gradient(from -45deg at 50% 50%, var(--c3) 0 90deg, #fff0 0 100%) var(--gp), 
    conic-gradient(from -45deg at 50% 75%, var(--c1) 0 90deg, #fff0 0 100%) var(--gp), 
    conic-gradient(from -45deg at 50% 100%, var(--c4) 0 90deg, #fff0 0 100%) var(--gp), 
    var(--c2);
}

/*** Woven ***/
.w-woven.pyramid {
  --sz:  6px;
  --c1: #b1cddb;
  --c2: #96b5cb;
  --c3: #7d9eaf;
  --c4: #6f92a3;
  --sh: #0006;
  --sh2: #0002;
  --gp: 50%/ calc(var(--sz) * 2) calc(var(--sz) * 2);
  --wall-design: 
    repeating-linear-gradient(45deg, #42312f30 calc(var(--sz) * 0.125), #fff0 calc(var(--sz) * 0.25) ), 
    conic-gradient(from 85deg at 75% 1px, #fff0 0, var(--sh2) 0%, #fff0 5% 100%) var(--gp),  
    conic-gradient(from -5deg at 0% calc(75% - 1px), #fff0 0, var(--sh) 0%, #fff0 4% 100%) var(--gp),  
    conic-gradient(from 0deg at 75% calc(75% - 1px), #fff0 0 22%, var(--sh2) 25%, #fff0 25% 100%) var(--gp),   
    conic-gradient(from 0deg at 75% calc(75% - 1px), var(--c4) 0 25%, #fff0 0 97%, var(--sh) 105%) var(--gp),
    linear-gradient(180deg, #fff0 0%, var(--sh) 25%, #fff0 25% 50%, var(--sh) 50%, #fff0 75% 100%) var(--gp), 
    linear-gradient(180deg, #fff0 25%, var(--c3) 25% 50%, #fff0 50% 100%) var(--gp), 
    linear-gradient(90deg, #fff0 0%, var(--sh) 25%, #fff0 25% 50%, var(--sh) 50%, #fff0 75% 100%) var(--gp), 
    linear-gradient(90deg, #fff0 25%, var(--c2) 25% 50%, #fff0 50% 100%) var(--gp), 
    linear-gradient(180deg, var(--sh) 0%, #fff0 25% 50%, var(--sh) 75%, #fff0 75% 100%) var(--gp), 
    linear-gradient(180deg, #fff0 75%, var(--c1) 75% 100%) var(--gp), 
    #42312F25;    
}

/*** Basket ***/
.w-basket.pyramid {
  --sz:  11px;  
  --c1: #ffa726;
  --c2: #e59319;
  --c3: #f1a12c;
  --c4: #cf8b26;
  --sh: #0006;
  --sh2: #0002;
  --gp: 50%/ calc(var(--sz) * 2) calc(var(--sz) * 2);
  --wall-design:    
    conic-gradient(from -10deg at 60% 0%, #fff0 0 25%, var(--sh2) 28%, #fff0 31% 100%) var(--gp), 
    conic-gradient(from -5deg at 0% calc(60% - 1px), #fff0 0, var(--sh) 0%, #fff0 4% 100%) var(--gp),    
    conic-gradient(from 0deg at 60% calc(60% - 1px), #fff0 0 22%, var(--sh2) 25%, #fff0 25% 100%) var(--gp),     
    conic-gradient(from 0deg at 60% calc(60% - 1px), var(--c4) 0 25%, #fff0 0 97.5%, var(--sh) 102%) var(--gp),   
    linear-gradient(180deg, #fff0 0%, var(--sh) 10%, #fff0 10% 50%, var(--sh) 50%, #fff0 60% 101%) var(--gp),   
    linear-gradient(180deg, #fff0 10%, var(--c3) 10% 50%, #fff0 50% 100%) var(--gp),   
    linear-gradient(90deg, #fff0 0%, var(--sh) 10%, #fff0 10% 50%, var(--sh) 50%, #fff0 60% 100%) var(--gp),   
    linear-gradient(90deg, #fff0 10%, var(--c2) 10% 50%, #fff0 50% 100%) var(--gp),   
    linear-gradient(180deg, #fff0 60%, var(--c1) 60% 100%) var(--gp),   
    #6a1c0080;
}

/*** Blocks ***/
.w-blocks.pyramid {
  --sz: 3px;
  --c1: #fdf3e3;
  --c2: #dfd2bf;
  --c3: #ccc3b2;
  --c4: #a79a8a;
  --s1: #cfc3ab;
  --s2: #ccc0aa;
  --s3: #ada38e;
  --s4: #ccc0aa;
  --d1: #9b9082;
  --d2: #ddd9d4;
  --gp: 50%/ calc(var(--sz) * 8) calc(var(--sz) * 6);
  --bp: calc(var(--sz) * -4) calc(var(--sz) * -3);
  --bg: 
    conic-gradient(from 270deg at 0.65% 50%, var(--d1) 0% 25%, #fff0 0 100%) var(--gp), 
    linear-gradient(0deg, var(--d1) 0 0.5%, #fff0 0 49.5%, var(--d1) 0 50.5%, #fff0 0 100%) var(--gp), 
    conic-gradient(from 45deg at 81% 25%, var(--s3) 0%, var(--s4) 25%, #fff0 0 100%) var(--gp), 
    conic-gradient(from -135deg at 19% 25%, var(--s1) 0%, var(--s2) 25%, #fff0 0 100%) var(--gp), 
    linear-gradient(180deg, var(--c2), var(--c1) 24%, var(--c4) 26%, var(--c3) 50%, #fff0 0 100%) var(--gp);
  --wall-design: var(--bg),var(--bg);
} 
.w-blocks.pyramid span {
  background-position: var(--bp), var(--bp), var(--bp), var(--bp), var(--bp), 0 0, 0 0, 0 0, 0 0, 0 0;
}
.w-blocks.pyramid span:nth-child(4) {
  filter: brightness(1.2);
}

/*** Triangle ***/
.w-triangle.pyramid {
  --sz: 2px;
  --c1: #7a2222;
  --c2: #6a1d1d;
  --c3: #521616;
  --c4: #340e0e;
  --gp: 50%/ calc(var(--sz) * 8.5) calc(var(--sz) * 14.7);
  --wall-design: 
    conic-gradient(from 118deg at 50.5% 85%, var(--c2) 0 125deg, #fff0 0 100%) var(--gp), 
    conic-gradient(from 30deg at 50% 50%, var(--c4) 0 30deg, var(--c2) 0 60deg, #fff0 0 120deg, var(--c3) 0 150deg, var(--c4) 0 180deg, #fff0 0 241deg, var(--c2) 0 270deg, var(--c3) 0 300deg, #fff0 0 100%) var(--gp), 
    linear-gradient(180deg, var(--c1) 0 10%, #fff0 0 100%) var(--gp), 
    var(--c1);
} 

/*** Honeycomb ***/
.w-honeycomb.pyramid {
  --sz: 1.1px;
  --ln: 0.75px;
  --c1: #ffb564;
  --c2: #ff5903;
  --c3: #ffa063;
  --ts: 50%/ calc(var(--sz) * 11.8) calc(var(--sz) * 20);
  --wall-design: 
    radial-gradient(circle at 60% 110%, var(--c3) calc(var(--sz) * -3), #fff0 calc(var(--sz) * 5)) var(--ts), 
    radial-gradient(circle at 60% 10%, var(--c3) calc(var(--sz) * -3), #fff0 calc(var(--sz) * 5)) var(--ts), 
    radial-gradient(circle at 110% 60%, var(--c3) calc(var(--sz) * -3), #fff0 calc(var(--sz) * 5)) var(--ts), 
    radial-gradient(circle at 10% 60%, var(--c3) calc(var(--sz) * -3), #fff0 calc(var(--sz) * 5)) var(--ts), 
    conic-gradient(from 120deg at 50% calc(82.75% + calc(var(--ln) / 1.5)), var(--c2) 0 120deg, #fff0 0 100%) var(--ts), 
    conic-gradient(from 120deg at 50% calc(82.75% + calc(var(--ln) / 1.5)), var(--c2) 0 120deg, #fff0 0 100%) var(--ts), 
    conic-gradient(from 120deg at 50% calc(82.5% - calc(var(--ln) * 1.5)), var(--c1) 0 120deg, #fff0 0 100%) var(--ts), 
    conic-gradient(from 120deg at 50% calc(82.5% - calc(var(--ln) * 1.5)), var(--c1) 0 120deg, #fff0 0 100%) var(--ts), 
    conic-gradient(from 60deg at calc(50% + var(--ln)) 50.5%, var(--c2) 0 120deg, #fff0 0 100%) var(--ts), 
    conic-gradient(from 60deg at calc(50% + var(--ln)) 50.5%, var(--c2) 0 120deg, #fff0 0 100%) var(--ts), 
    conic-gradient(from 180deg at calc(50% - var(--ln)) 50.5%, var(--c2) 0 120deg, #fff0 0 100%) var(--ts), 
    conic-gradient(from 180deg at calc(50% - var(--ln)) 50.5%, var(--c2) 0 120deg, #fff0 0 100%) var(--ts), 
    conic-gradient(from 0deg at calc(100% - var(--ln)) 37.75%, var(--c1) 0 90deg, #fff0 0 100%) var(--ts), 
    conic-gradient(from 0deg at calc(100% - var(--ln)) 37.75%, var(--c1) 0 90deg, #fff0 0 100%) var(--ts), 
    conic-gradient(from -90deg at var(--ln) 37.75%, var(--c1) 0 90deg, #fff0 0 100%) var(--ts), 
    conic-gradient(from -90deg at var(--ln) 37.75%, var(--c1) 0 90deg, #fff0 0 100%) var(--ts), 
    conic-gradient(from -60deg at 50% calc(50% - calc(var(--ln) * 1.5)), var(--c2) 0 120deg, #fff0 0 100%) var(--ts), 
    conic-gradient(from -60deg at 50% calc(50% - calc(var(--ln) * 1.5)), var(--c2) 0 120deg, #fff0 0 100%) var(--ts), 
    var(--c1);
}
</div> 

<button id="info-btn" class="info-btn" onclick="hideInfo()">&#8737;</button>

<div class="info" id="info-panel">
  <div class="base-width" id="base-width">35</div>
  <div class="apex-height" id="apex-height">30</div>
  <div class="hypotenuse" id="hypotenuse">34.73</div>
  <div class="alpha-angle" id="alpha-angle">59.74</div>
</div>

<footer>
  <div class="slider">
    <input id="base" type="range" min="5" max="50" value="35" step="1" oninput="setBase(this.value)" onchange="setBase(this.value)" autocomplete="off">
    <div class="slider-value">35</div>
  </div>
  <div class="slider">
    <input id="apex" type="range" min="5" max="50" value="30" step="1" oninput="setApex(this.value)" onchange="setApex(this.value)" autocomplete="off">
    <div class="slider-value">30</div>
  </div>
  <div class="wall-design">
    <input type="radio" name="wall" id="w-bricks" oninput="setWall(this.id)" onchange="setWall(this.id)" autocomplete="off" checked><label for="w-bricks"></label>
    <input type="radio" name="wall" id="w-granite" oninput="setWall(this.id)" onchange="setWall(this.id)" autocomplete="off"><label for="w-granite"></label>
    <input type="radio" name="wall" id="w-crystal" oninput="setWall(this.id)" onchange="setWall(this.id)" autocomplete="off"><label for="w-crystal"></label>
    <input type="radio" name="wall" id="w-grille" oninput="setWall(this.id)" onchange="setWall(this.id)" autocomplete="off"><label for="w-grille"></label>
    <input type="radio" name="wall" id="w-smooth" oninput="setWall(this.id)" onchange="setWall(this.id)" autocomplete="off"><label for="w-smooth"></label>
    <button id="w-more" onclick="moreWalls()"></button>
    <div class="w-more down" id="w-mores">
      <input type="radio" name="wall" id="w-honeycomb" oninput="setWall(this.id)" onchange="setWall(this.id)" autocomplete="off"><label for="w-honeycomb"></label>
      <input type="radio" name="wall" id="w-triangle" oninput="setWall(this.id)" onchange="setWall(this.id)" autocomplete="off"><label for="w-triangle"></label>
      <input type="radio" name="wall" id="w-blocks" oninput="setWall(this.id)" onchange="setWall(this.id)" autocomplete="off"><label for="w-blocks"></label>
      <input type="radio" name="wall" id="w-basket" oninput="setWall(this.id)" onchange="setWall(this.id)" autocomplete="off"><label for="w-basket"></label>
      <input type="radio" name="wall" id="w-woven" oninput="setWall(this.id)" onchange="setWall(this.id)" autocomplete="off"><label for="w-woven"></label>
      <input type="radio" name="wall" id="w-zigzag" oninput="setWall(this.id)" onchange="setWall(this.id)" autocomplete="off"><label for="w-zigzag"></label>
      <input type="radio" name="wall" id="w-puzzle" oninput="setWall(this.id)" onchange="setWall(this.id)" autocomplete="off"><label for="w-puzzle"></label>
    </div>
  </div>
  <label for="play-pause"></label>
  <span></span>
</footer>

<textarea id="hidden-copy-text" value=""></textarea>
:root {
  --width: 35;
  --height: 30;
  --hypo: 34.73;
  --alpha: 59.74deg;
  --dark: #282828;
  --data: hsl(0deg 100% 40%);
}

html {
  width: 100vw;
  height: 100vh;
  overflow: hidden;
}

body {
  margin: 0;
  padding: 0;
  background: 
    repeating-linear-gradient(150deg, #fff0 0 49px, #fff1 50px, #fff0 51px),
    repeating-linear-gradient(31deg, #fff0 0 49px, #fff1 50px, #fff0 51px),
    radial-gradient(circle at 100% 100%, #fff , #999);
  overflow: hidden;
  display: flex;
  justify-content: center;
  align-items: center;
  width: 100vw;
  height: 100vh;
  perspective: 100vmin;
  font-family: Arial, Helvetica, serif;
}

body * { box-sizing: border-box; }




/*** PYRAMID ***/

@keyframes spin {
    0% { transform: rotateX(65deg) rotateZ(-160deg); }
  100% { transform: rotateX(65deg) rotateZ(200deg); }
}

#play-pause:checked ~ .pyramid,
#play-pause:checked ~ .pyramid span {
  animation-play-state: paused;
}

.pyramid {
  width: calc(var(--width) * 1vmin);
  height: calc(var(--width) * 1vmin);
  transform: rotateX(65deg) rotateZ(-160deg);
  transform-style: preserve-3d;
  animation: spin 8s linear 0s infinite;
  margin: 0 0 calc(var(--height) * -0.5vmin) -5vmin;
  background: var(--wall-design);
}

.pyramid:before {
  content: "";
  background: black;
  width: 100%;
  height: 100%;
  position: absolute;
  transform: translateZ(-10vmin);
  box-shadow: 0 0 2vmin 2vmin #000000;
  opacity: 0.1;
}

.pyramid span {
  width: 100%;
  height: calc(var(--hypo) * 1vmin);
  --hypo2: calc(calc(var(--hypo) / 2) * 1vmin); 
  position: absolute;
  box-sizing: border-box;
  clip-path: polygon(0% 100%, 50% 0%, 100% 100%);
  background: var(--wall-design);
  filter: brightness(var(--cx));
  animation: shadows 8s ease 0s infinite;
}

.pyramid span:nth-child(1) {
  transform-origin: center bottom;
  transform: rotateX(calc(var(--alpha) * -1));
  bottom: 0;
  --cx: 0.65; /*firefox*/
  animation-delay: -9s;
}

.pyramid span:nth-child(2) {
  transform-origin: right center;
  transform: rotateY(calc(var(--alpha) * 1)) rotateZ(-90deg) translate3d(var(--hypo2), calc(var(--hypo2) * -1), 0vmin);
  --cx: 0.85; /*firefox*/
  animation-delay: -7s;
}

.pyramid span:nth-child(3) {
  transform-origin: center top;
  transform: rotateX(calc(var(--alpha) * 1)) rotateZ(180deg) translate3d(0vmin, calc(var(--hypo) * -1vmin), 0vmin);
  --cx: 1.1; /*firefox*/
  animation-delay: -5s;
}

.pyramid span:nth-child(4) {
  transform-origin: left center;
  transform: rotateY(calc(var(--alpha) * -1)) rotateZ(90deg) translate3d(calc(var(--hypo2) * -1), calc(var(--hypo2) * -1), 0vmin);
  --cx: 1.3; /*firefox*/
  animation-delay: -3s;
}

/*** Wall Shadow ***/
@property --cx {
  syntax: '<number>';
  inherits: false;
  initial-value: 1;
}

@keyframes shadows {
    0% { --cx: 0.6; }
   25% { --cx: 1.1; }
   50% { --cx: 1.3; }
   75% { --cx: 0.8; }
  100% { --cx: 0.6; }
}




/*** HEADER ***/

header {
  padding: 10px;
  background: var(--dark);
  height: 60px;
  position: fixed;
  width: 100%;
  z-index: 1;
  top: 0;
  box-shadow: #00000030 0px 2px 6px, #00000040 0px 2px 6px;
}

header:after {
  content: "";
  border-right: 1px solid #000;
  position: absolute;
  right: 250px;
  height: 40px;
  width: 1px;
  background: linear-gradient(90deg, #fff0 calc(100% - 1px), #fff2 100%);
}

h1 {
  display: inline-block;
  font-weight: normal;
  color: #ffffff;
  font-size: 15px;
  margin: 0;
  border-right: 1px solid #000;
  float: left;
  position: relative;
  background: linear-gradient(90deg, #fff0 calc(100% - 1px), #fff2 100%);
  height: 40px;
}

h1:before {
  content: "";
  float: left;
  width: 45px;
  height: 40px;
  background: linear-gradient(-153deg, #fff0 45px, var(--dark) 46px), linear-gradient(151deg, #fff0 44px, var(--dark) 45px), conic-gradient(from 180deg at 42% 1%, #8f8f8f 0 7.5%, #fff0 0 100%), conic-gradient(from 135deg at 47% 1%, #e3e0e0 0 12.5%, #fff0 0 100%);
  margin-right: 10px;
  position: absolute;
  z-index: -1;
}

h1 a {
  color: #fff;
  text-decoration: none;
  display: inline-block;
  padding-right: 20px;
  padding-left: 50px;
}

h1 a span {
  float: left;
}

h1:hover:before {
  background: linear-gradient(-153deg, #fff0 45px, var(--dark) 46px), linear-gradient(151deg, #fff0 44px, var(--dark) 45px), conic-gradient(from 180deg at 42% 1%, #0176d5 0 7.5%, #fff0 0 100%), conic-gradient(from 135deg at 47% 1%, #5db7ff 0 12.5%, #fff0 0 100%);
}

h1:hover .title-0:first-letter {
  color: #8bc34a;
}

h1:hover .title-0 {
  color: #ffa500;
}

h1:hover .title-1 {
  color: #709eb5;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-image: linear-gradient( 180deg, #ff1d1d 30%, #8e60df 70% );
}

h1:hover .title-1 strong {
  color: #dd1818;
  -webkit-text-fill-color: initial;
}

h1:hover .title-1 strong:last-child {
  color: #754fb9;
}

.title-0 {
  font-size: 50px;
  line-height: 40px;
  margin-right: 1px;
  color: #999;
  text-shadow: 1px 1px 1px #00000070, -1px -1px 1px #f1f1f12b;
  font-weight: bold;
}

.title-0:first-letter {
  color: #bbb;
}

.title-1 {
  font-size: 14px;
  line-height: 14px;
}

.title-1 strong {
  font-size: 28px;
  line-height: 15px;
  top: 4px;
  position: relative;
  margin-right: 1px;
  color: #fff;
}

.title-1 strong + br + strong {
  color: #e3e3e3;
  margin-left: 6px;
  top: 2px;
}

/*** Created by ***/
a.josetxu-btn {
  background: url(https://josetxu.com/wp-content/themes/josetxu-code/images/profile.jpg) no-repeat center center #ffffff;
  background-size: calc(36px);
  float: left;
  width: 40px;
  height: 40px;
  border-radius: 2px;
  margin-left: 20px;
  text-align: left;
  filter: grayscale(1);
  position: relative;
}

a.josetxu-btn:before, a.josetxu-btn:after {
  content: "CREATED BY";
  font-size: 8px;
  color: #b9b9b9;
  background: linear-gradient(90deg, #fff0 calc(100% - 1px), #fff2 100%);
  min-width: 68px;
  border-radius: 0;
  margin-left: 40px;
  float: left;
  padding: 7px 0 3px 6px;
  border-right: 1px solid #000;
}

a.josetxu-btn:after {
  content: "JOSETXU";
  color: #fff;
  font-size: 11px;
  padding: 2px 0 7px 5px;
  min-width: 69px;
}

a.josetxu-btn:hover {
  background-image: url(https://assets.codepen.io/256997/internal/avatars/users/default.png?width=40);
  filter: none;
}

a.josetxu-btn:hover:before {
  color: #ff6600;
}

a.josetxu-btn:hover:after {
  color: #ff6600;
}


header button {
  --clr: #2196f3;
  float: right;
  border: 2px solid var(--clr);
  background: var(--dark);
  color: var(--clr);
  padding: 7px 10px;
  margin-right: 15px;
  margin-left: 10px;
  border-radius: 2px;
  cursor: pointer;
  font-weight: bold;
  font-size: 14px;
  position: relative;
  top: 4px;
  min-width: 88px;
}

header button:hover {
  background: var(--clr);
  color: #000;
  padding: 10px 10px 5px 10px;
}

header button:before {
  content: "COPY CODE";
  font-size: 14px;
  font-weight: normal;
  position: absolute;
  font-size: 9px;
  top: -8px;
  left: 50%;
  background: var(--dark);
  padding: 2px 0px;
  border-radius: 2px;
  transform: translateX(-50%);
  width: calc(100% - 10px);
}

header button:hover:before {
  background: var(--clr);
  font-weight: bold;
  border-left: 7px solid var(--clr);
  border-right: 7px solid var(--clr);
  border-top: 3px solid var(--clr);
}

header #copy-css {
  --clr: #ffc107;
}

header button:after {
  content: "COPIED";
  font-size: 9px;
  color: #fff;
  position: absolute;
  background: var(--dark);
  padding: 7px 10px;
  left: calc(50%);
  transform: translateX(-50%);
  top: 41px;
  border-radius: 0 0 2px 2px;
  top:0;
  z-index: -1;
  transition: top 1s ease 0.5s;
}

header button:active:after {
  top: 41px;
  transition: top 0.15s ease 0s;
}



/*** FOOTER ***/

footer {
  background: var(--dark); 
  position: fixed;
  bottom: 0;
  width: 100%;
  height: 60px;
  padding: 10px;
  box-shadow: rgba(0, 0, 0, 0.16) 0px -2px 6px, rgba(0, 0, 0, 0.25) 0px -2px 6px;
}

.slider {
  width: 200px;
  height: 40px;
  display: inline-block;
  position: relative;
  margin-left: 25px;
  margin-right: 25px;
  font-size: 14px;
  background: var(--dark);
}

.slider:before {
  content: "BASE WIDTH";
  position: absolute;
  color: #fff;
  left: 0;
  top: 2px;

}

.slider + .slider:before {
  content: "APEX HEIGHT";
}

.slider:after, .wall-design:after  {
  content: "";
  position: absolute;
  right: -20px;
  border-right: 1px solid #000;
  float: left;
  border-left: 1px solid #fff2;
  height: 40px;
}

.slider-value {
  width: 20px;
  float: right;
  margin: 0;
  position: absolute;
  right: 0px;
  background: #fff;
  text-align: center;
  border-radius: 3px;
  padding: 1px;
}


/*** Range ***/

input[type='range'] {
  cursor: pointer;
  bottom: 0;
  position: absolute;
  height: 15px;
  width: 100%;
  background: #fff0;
  margin: 0;
}

input[type='range']:focus {
  outline: none;
}

input[type='range'],
input[type='range']::-webkit-slider-runnable-track,
input[type='range']::-webkit-slider-thumb {
  -webkit-appearance: none;
}

input[type=range]::-webkit-slider-thumb {
  background-color: #1d73b7;
  width: 20px;
  height: 20px;
  border: 3px solid var(--dark);
  border-radius: 50%;
  margin-top: -9px;
}

input[type=range]::-moz-range-thumb {
  background-color: #1d73b7;
  width: 15px;
  height: 15px;
  border: 3px solid var(--dark);
  border-radius: 50%;
}

input[type=range]::-ms-thumb {
  background-color: #1d73b7;
  width: 20px;
  height: 20px;
  border: 3px solid var(--dark);
  border-radius: 50%;
}

input[type=range]::-webkit-slider-runnable-track {
  background-color: #777777;
  height: 3px;
}

input[type=range]:focus::-webkit-slider-runnable-track {
  outline: none;
}

input[type=range]::-moz-range-track {
  background-color: #777777;
  height: 3px;
}

input[type=range]::-ms-track {
  background-color: #777777;
  height: 3px;
}



input[type=range] + .slider-value:before {
  content: "SET\00a0 WIDTH";
  position: absolute;
  background: var(--dark);
  color: #fff;
  font-size: 10px;
  position: absolute;
  top: -8px;
  left: -48px;
  padding: 0 7px;
  border-radius: 2px 2px 0 0;
  line-height: 25px;
  max-height: 0;
  font-weight: bold;
  white-space: pre-wrap;
  transition: all 0.25s ease 0s;
  z-index: -1;
  overflow: hidden;
}

input#apex + .slider-value:before {
  content: "SET\00a0 HEIGHT";
}

input[type=range]:hover + .slider-value:before {
  max-height: 33px;
  top: -33px;
}


/*** Wall Design ***/

.wall-design {
  width: 338px;
  position: relative;
  background: var(--dark);
  padding: 0px 0 10px 0;
  display: inline-flex;
  top: -26px;
}

.wall-design:before {
  content: "WALL DESIGN";
  text-align: right;
  color: #fff;
  font-size: 14px;
  width: 60px;
  float: left;
  line-height: 21px;
  margin-top: -1px;
  margin-right: 8px;
}

.w-bricks.pyramid, .w-bricks.pyramid span, label[for=w-bricks] {
  --sz: 4px;
  --brick1: #b16c53;
  --brick2: #b56c52;
  --lines: #873e1a;
  --gp-ln: 50%/calc(var(--sz) * 10) calc(var(--sz) * 5);
  --gp-cn: 50%/calc(var(--sz) * 5) calc(var(--sz) * 5);
  --wall-design: 
    repeating-conic-gradient(from 90deg at 95% 55%, var(--lines) 0% 25%, #fff0 0% 100%) var(--gp-cn), 
    repeating-linear-gradient(180deg, var(--lines) 0 5%, #fff0 0 50%, var(--lines) 0 55%, var(--brick2) 0 100% ) var(--gp-ln),
    repeating-linear-gradient(90deg, var(--brick1) 0 47.5%, var(--lines) 0 50%, var(--brick1) 0 97.5%, var(--lines) 0 100% ) var(--gp-ln);
}

.w-granite.pyramid , .w-granite.pyramid span, label[for=w-granite] {
  --wall-design: 
    repeating-conic-gradient(#0004 0%, #fff0 .0003%, #fff0 .0005%, #fff0 .00095%), 
    repeating-conic-gradient(#fff2 0%, #fff0 .0005%, #fff0 .00015%, #fff0 .0009%),
    #777;
}

.w-crystal.pyramid, .w-crystal.pyramid span, label[for=w-crystal] {
  --wall-design: 
    linear-gradient(45deg, #fff0 55%, #fff1 56% 64%, #fff0 65% 66%, #fff2 67% 69%, #fff0 71% 100% ), 
    linear-gradient(45deg, #2196f380, #ffffff78 56% 64%, #2196f380), 
    #fff4;
}

.w-grille.pyramid, .w-grille.pyramid span, label[for=w-grille] {
  --sz: 4px;
  --gp: 50%/ calc(var(--sz) * 2) calc(var(--sz) * 2);
  --wall-design: 
    linear-gradient(290deg, #fff0 25%, #545454 25% 35%, #fff0 35% 100%) var(--gp), 
    linear-gradient(-290deg, #fff0 25%, #727272 25% 35%, #fff0 35% 100%) var(--gp), 
    linear-gradient(200deg, #fff0 25%, #545454 25% 35%, #fff0 35% 100%) var(--gp), 
    linear-gradient(-200deg, #fff0 25%, #727272 25% 35%, #fff0 35% 100%) var(--gp), 
    #0001;
}

.w-smooth.pyramid, .w-smooth.pyramid span, label[for=w-smooth] {
  --wall-design: #1d73b7;
}


/*** More Wall Designs ***/

.w-puzzle.pyramid, .w-puzzle.pyramid span, label[for=w-puzzle], footer:has(.w-more input[id=w-puzzle]:checked) #w-more {
  --sz: 3px;
  --c1: #8bc34a;
  --c2: #3f8d42;
  --pz: calc(var(--sz) * 0.65), #fff0 calc(calc(var(--sz) * 0.65) + 1px);
  --gp: 50%/ calc(var(--sz) * 10) calc(var(--sz) * 10);
  --wall-design: 
    radial-gradient(circle at 55% 25%, var(--c2) var(--pz)) var(--gp), 
    radial-gradient(circle at 75% 45%, var(--c2) var(--pz)) var(--gp), 
    radial-gradient(circle at 5% 75%, var(--c2) var(--pz)) var(--gp), 
    radial-gradient(circle at 25% 55%, var(--c2) var(--pz)) var(--gp), 
    radial-gradient(circle at 55% 75%, var(--c1) var(--pz)) var(--gp), 
    radial-gradient(circle at 75% 95%, var(--c1) var(--pz)) var(--gp), 
    radial-gradient(circle at 5% 25%, var(--c1) var(--pz)) var(--gp), 
    radial-gradient(circle at 25% 5%, var(--c1) var(--pz)) var(--gp), 
    conic-gradient(from 0deg at 50% 50%, var(--c1) 0 25%, var(--c2) 0 50%, var(--c1) 0 75%, var(--c2) 0 100%) var(--gp);
}

.w-zigzag.pyramid, .w-zigzag.pyramid span, label[for=w-zigzag], footer:has(.w-more input[id=w-zigzag]:checked) #w-more {
  --sz: 2px;
  --c1: #b78cff;
  --c2: #9d6fe9;
  --c3: #8f64d4;
  --c4: #7e59bb;
  --gp: 50%/ calc(var(--sz) * 6) calc(var(--sz) * 12);
  --wall-design: 
    conic-gradient(from -45deg at 50% 25%, var(--c2) 0 90deg, #fff0 0 100%) var(--gp), 
    conic-gradient(from -45deg at 50% 50%, var(--c3) 0 90deg, #fff0 0 100%) var(--gp), 
    conic-gradient(from -45deg at 50% 75%, var(--c1) 0 90deg, #fff0 0 100%) var(--gp), 
    conic-gradient(from -45deg at 50% 100%, var(--c4) 0 90deg, #fff0 0 100%) var(--gp), 
    var(--c2);
}

.w-woven.pyramid, .w-woven.pyramid span, label[for=w-woven], footer:has(.w-more input[id=w-woven]:checked) #w-more {
  --sz:  6px;
  --c1: #b1cddb;
  --c2: #96b5cb;
  --c3: #7d9eaf;
  --c4: #6f92a3;
  --sh: #0006;
  --sh2: #0002;
  --gp: 50%/ calc(var(--sz) * 2) calc(var(--sz) * 2);
  --wall-design: 
    repeating-linear-gradient(45deg, #42312f30 calc(var(--sz) * 0.125), #fff0 calc(var(--sz) * 0.25) ), 
    conic-gradient(from 85deg at 75% 1px, #fff0 0, var(--sh2) 0%, #fff0 5% 100%) var(--gp),  
    conic-gradient(from -5deg at 0% calc(75% - 1px), #fff0 0, var(--sh) 0%, #fff0 4% 100%) var(--gp),  
    conic-gradient(from 0deg at 75% calc(75% - 1px), #fff0 0 22%, var(--sh2) 25%, #fff0 25% 100%) var(--gp),   
    conic-gradient(from 0deg at 75% calc(75% - 1px), var(--c4) 0 25%, #fff0 0 97%, var(--sh) 105%) var(--gp),
    linear-gradient(180deg, #fff0 0%, var(--sh) 25%, #fff0 25% 50%, var(--sh) 50%, #fff0 75% 100%) var(--gp), 
    linear-gradient(180deg, #fff0 25%, var(--c3) 25% 50%, #fff0 50% 100%) var(--gp), 
    linear-gradient(90deg, #fff0 0%, var(--sh) 25%, #fff0 25% 50%, var(--sh) 50%, #fff0 75% 100%) var(--gp), 
    linear-gradient(90deg, #fff0 25%, var(--c2) 25% 50%, #fff0 50% 100%) var(--gp), 
    linear-gradient(180deg, var(--sh) 0%, #fff0 25% 50%, var(--sh) 75%, #fff0 75% 100%) var(--gp), 
    linear-gradient(180deg, #fff0 75%, var(--c1) 75% 100%) var(--gp), 
    #42312F25;    
}

.w-basket.pyramid, .w-basket.pyramid span, label[for=w-basket], footer:has(.w-more input[id=w-basket]:checked) #w-more {
  --sz:  11px;  
  --c1: #ffa726;
  --c2: #e59319;
  --c3: #f1a12c;
  --c4: #cf8b26;
  --sh: #0006;
  --sh2: #0002;
  --gp: 50%/ calc(var(--sz) * 2) calc(var(--sz) * 2);
  --wall-design:    
    conic-gradient(from -10deg at 60% 0%, #fff0 0 25%, var(--sh2) 28%, #fff0 31% 100%) var(--gp), 
    conic-gradient(from -5deg at 0% calc(60% - 1px), #fff0 0, var(--sh) 0%, #fff0 4% 100%) var(--gp),    
    conic-gradient(from 0deg at 60% calc(60% - 1px), #fff0 0 22%, var(--sh2) 25%, #fff0 25% 100%) var(--gp),     
    conic-gradient(from 0deg at 60% calc(60% - 1px), var(--c4) 0 25%, #fff0 0 97.5%, var(--sh) 102%) var(--gp),   
    linear-gradient(180deg, #fff0 0%, var(--sh) 10%, #fff0 10% 50%, var(--sh) 50%, #fff0 60% 101%) var(--gp),   
    linear-gradient(180deg, #fff0 10%, var(--c3) 10% 50%, #fff0 50% 100%) var(--gp),   
    linear-gradient(90deg, #fff0 0%, var(--sh) 10%, #fff0 10% 50%, var(--sh) 50%, #fff0 60% 100%) var(--gp),   
    linear-gradient(90deg, #fff0 10%, var(--c2) 10% 50%, #fff0 50% 100%) var(--gp),   
    linear-gradient(180deg, #fff0 60%, var(--c1) 60% 100%) var(--gp),   
    #6a1c0080;
}

.w-blocks.pyramid, .w-blocks.pyramid span, label[for=w-blocks], footer:has(.w-more input[id=w-blocks]:checked) #w-more {
  --sz: 3px;
  --c1: #fdf3e3;
  --c2: #dfd2bf;
  --c3: #ccc3b2;
  --c4: #a79a8a;
  --s1: #cfc3ab;
  --s2: #ccc0aa;
  --s3: #ada38e;
  --s4: #ccc0aa;
  --d1: #9b9082;
  --d2: #ddd9d4;
  --gp: 50%/ calc(var(--sz) * 8) calc(var(--sz) * 6);
  --bp: calc(var(--sz) * -4) calc(var(--sz) * -3);
  --bg: 
    conic-gradient(from 270deg at 0.65% 50%, var(--d1) 0% 25%, #fff0 0 100%) var(--gp), 
    linear-gradient(0deg, var(--d1) 0 0.5%, #fff0 0 49.5%, var(--d1) 0 50.5%, #fff0 0 100%) var(--gp), 
    conic-gradient(from 45deg at 81% 25%, var(--s3) 0%, var(--s4) 25%, #fff0 0 100%) var(--gp), 
    conic-gradient(from -135deg at 19% 25%, var(--s1) 0%, var(--s2) 25%, #fff0 0 100%) var(--gp), 
    linear-gradient(180deg, var(--c2), var(--c1) 24%, var(--c4) 26%, var(--c3) 50%, #fff0 0 100%) var(--gp);
  --wall-design: var(--bg),var(--bg);
  background-position: var(--bp), var(--bp), var(--bp), var(--bp), var(--bp), 0 0, 0 0, 0 0, 0 0, 0 0 !important;
}
.w-blocks.pyramid span:nth-child(4) {
  filter: brightness(1.2);
}

.w-triangle.pyramid, .w-triangle.pyramid span, label[for=w-triangle], footer:has(.w-more input[id=w-triangle]:checked) #w-more {
  --sz: 2px;
  --c1: #7a2222;
  --c2: #6a1d1d;
  --c3: #521616;
  --c4: #340e0e;
  --gp: 50%/ calc(var(--sz) * 8.5) calc(var(--sz) * 14.7);
  --wall-design: 
    conic-gradient(from 118deg at 50.5% 85%, var(--c2) 0 125deg, #fff0 0 100%) var(--gp), 
    conic-gradient(from 30deg at 50% 50%, var(--c4) 0 30deg, var(--c2) 0 60deg, #fff0 0 120deg, var(--c3) 0 150deg, var(--c4) 0 180deg, #fff0 0 241deg, var(--c2) 0 270deg, var(--c3) 0 300deg, #fff0 0 100%) var(--gp), 
    linear-gradient(180deg, var(--c1) 0 10%, #fff0 0 100%) var(--gp), 
    var(--c1);
} 

.w-honeycomb.pyramid, .w-honeycomb.pyramid span, label[for=w-honeycomb], footer:has(.w-more input[id=w-honeycomb]:checked) #w-more {
  --sz: 1.1px;
  --ln: 0.75px;
  --c1: #ffb564;
  --c2: #ff5903;
  --c3: #ffa063;
  --ts: 50%/ calc(var(--sz) * 11.8) calc(var(--sz) * 20);
  --wall-design: 
    radial-gradient(circle at 60% 110%, var(--c3) calc(var(--sz) * -3), #fff0 calc(var(--sz) * 5)) var(--ts), 
    radial-gradient(circle at 60% 10%, var(--c3) calc(var(--sz) * -3), #fff0 calc(var(--sz) * 5)) var(--ts), 
    radial-gradient(circle at 110% 60%, var(--c3) calc(var(--sz) * -3), #fff0 calc(var(--sz) * 5)) var(--ts), 
    radial-gradient(circle at 10% 60%, var(--c3) calc(var(--sz) * -3), #fff0 calc(var(--sz) * 5)) var(--ts), 
    conic-gradient(from 120deg at 50% calc(82.75% + calc(var(--ln) / 1.5)), var(--c2) 0 120deg, #fff0 0 100%) var(--ts), 
    conic-gradient(from 120deg at 50% calc(82.75% + calc(var(--ln) / 1.5)), var(--c2) 0 120deg, #fff0 0 100%) var(--ts), 
    conic-gradient(from 120deg at 50% calc(82.5% - calc(var(--ln) * 1.5)), var(--c1) 0 120deg, #fff0 0 100%) var(--ts), 
    conic-gradient(from 120deg at 50% calc(82.5% - calc(var(--ln) * 1.5)), var(--c1) 0 120deg, #fff0 0 100%) var(--ts), 
    conic-gradient(from 60deg at calc(50% + var(--ln)) 50.5%, var(--c2) 0 120deg, #fff0 0 100%) var(--ts), 
    conic-gradient(from 60deg at calc(50% + var(--ln)) 50.5%, var(--c2) 0 120deg, #fff0 0 100%) var(--ts), 
    conic-gradient(from 180deg at calc(50% - var(--ln)) 50.5%, var(--c2) 0 120deg, #fff0 0 100%) var(--ts), 
    conic-gradient(from 180deg at calc(50% - var(--ln)) 50.5%, var(--c2) 0 120deg, #fff0 0 100%) var(--ts), 
    conic-gradient(from 0deg at calc(100% - var(--ln)) 37.75%, var(--c1) 0 90deg, #fff0 0 100%) var(--ts), 
    conic-gradient(from 0deg at calc(100% - var(--ln)) 37.75%, var(--c1) 0 90deg, #fff0 0 100%) var(--ts), 
    conic-gradient(from -90deg at var(--ln) 37.75%, var(--c1) 0 90deg, #fff0 0 100%) var(--ts), 
    conic-gradient(from -90deg at var(--ln) 37.75%, var(--c1) 0 90deg, #fff0 0 100%) var(--ts), 
    conic-gradient(from -60deg at 50% calc(50% - calc(var(--ln) * 1.5)), var(--c2) 0 120deg, #fff0 0 100%) var(--ts), 
    conic-gradient(from -60deg at 50% calc(50% - calc(var(--ln) * 1.5)), var(--c2) 0 120deg, #fff0 0 100%) var(--ts), 
    var(--c1);
}


/*** Radio ***/

input[type=radio] {
  display: none;
}

input[type=radio] + label {
  width: 40px;
  height: 40px;
  background: var(--wall-design);
  display: inline-flex;
  justify-content: center;
  align-items: end;
  text-transform: uppercase;
  font-size: 10px;
  cursor: pointer;
  padding-bottom: 1px;
  color: var(--dark);
  font-weight: bold;
  border-radius: 1px;
  position: relative;
  margin-left: 5px;
}

input[type=radio]:checked + label {
  box-shadow: 0 0 0 3px #fffd inset, 0 0 50px 0 #0004 inset;
}

input[type=radio]:checked + label:after {
  content: "";
  width: 12px;
  height: 7px;
  position: absolute;
  border-left: 4px solid #fff;
  border-bottom: 4px solid #fff;
  transform: rotate(-60deg);
  top: 12px;
}

input[type=radio] + label:hover {
  filter: brightness(1.25);
}

input[type=radio] + label:hover:before {
  filter: brightness(0.8);
}


.wall-design label:before {
  content: "BRICKS";
  position: absolute;
  bottom: 47px;
  width: calc(100% + 1vmin);
  text-align: center;
  background: var(--dark);
  color: #fff;
  padding: 0 3px;
  max-height: 0px;
  overflow: hidden;
  line-height: 25px;
  border-radius: 1px 1px 0 0;
  transition: max-height 0.25s ease 0s;
  font-size: 10px;
}

.wall-design label:hover:before {
  max-height: 30px;
  transition: max-height 0.5s ease 0s;
}

.wall-design label[for=w-granite]:before {
  content: "GRANITE";
}

.wall-design label[for=w-crystal]:before {
  content: "CRYSTAL";
}

.wall-design label[for=w-grille]:before {
  content: "GRILLE";
}

.wall-design label[for=w-smooth]:before {
  content: "SMOOTH";
}

.wall-design label[for=w-honeycomb]:before {
  content: "HONEYCOMB";
  width: calc(100% + 30px);
}

.wall-design label[for=w-triangle]:before {
  content: "TRIANGLES";
  width: calc(100% + 20px);
}

.wall-design label[for=w-blocks]:before {
  content: "BLOCKS";
}

.wall-design label[for=w-basket]:before {
  content: "BASKET";
}

.wall-design label[for=w-woven]:before {
  content: "WOVEN";
}

.wall-design label[for=w-zigzag]:before {
  content: "ZIGZAG";
}

.wall-design label[for=w-puzzle]:before {
  content: "PUZZLE";
}






/*** More Wall Designs Buttton ***/

#w-more {
  float: right;
  width: 40px;
  height: 40px;
  border: 0;
  color: var(--dark);
  background: #444;
  font-size: 40px;
  line-height: 0;
  margin-left: 5px;
  cursor: pointer;
  position: relative;
}

#w-more:hover {
  background: #777;
}

.w-more {
  position: absolute;
  bottom: 58px;
  background: var(--dark);
  border-radius: 2px 2px 0 0;
  width: 345px;
  right: -10px;
  z-index: -1;
  padding: 10px 10px 0;
  display: inline-flex;
  justify-content: end;
  transition: bottom 0.5s ease 0s;
}

.w-more.down {
  position: absolute;
  bottom: 11px;
  transition: bottom 0.5s ease 0s;
}

#w-more:before {
  content: "\002B";
  display: inline-table;
  line-height: 18px;
}

#w-more.minus:before {
  content: "\2212";
}

#w-more:after {
  content: "MORE";
  position: absolute;
  bottom: 47px;
  width: calc(100% + 1vmin);
  text-align: center;
  background: var(--dark);
  color: #fff;
  padding: 0 3px;
  max-height: 0px;
  overflow: hidden;
  line-height: 2.5;
  border-radius: 1px 1px 0 0;
  transition: max-height 0.25s ease 0s;
  font-size: 10px;
  left: -0.5vmin;
  box-sizing: border-box;
  font-weight: bold;
}

#w-more:hover:after {
  max-height: 30px;
}

#w-more.minus:hover:after {
  max-height: 0px;
}


footer:has(.w-more input[type=radio]:checked) #w-more {
  box-shadow: 0 0 0 3px #fffd inset;
  position: relative;
}

footer:has(.w-more input[type=radio]:checked) #w-more.minus {
  box-shadow: none;
}

footer:has(.w-more input[type=radio]:checked) #w-more:after {
  content: "";
  width: 12px;
  height: 7px;
  position: absolute;
  border-left: 4px solid #fff;
  border-bottom: 4px solid #fff;
  transform: rotate(-60deg);
  top: 12px;
  left: 12px;
  background: #fff0;
  padding: 0;
  box-sizing: content-box;
  max-height: 7px;
}

footer:has(.w-more input[type=radio]:checked) #w-more.minus:after {
  display: none;
}


footer:has(.w-more input[type=radio]:checked) #w-more {
  background: var(--wall-design);
}

footer:has(.w-more input[type=radio]:checked) #w-more.minus {
  background: #444;
}

footer:has(.w-more input[type=radio]:checked) #w-more:hover:before {
  color: #fff;
}

footer:has(.w-more input[type=radio]:checked) #w-more:hover:after {
  display: none;
}


/*** Play / Pause ***/

input#play-pause {
  display: none;
}

label[for=play-pause] {
  width: 40px;
  height: 40px;
  background: linear-gradient(180deg, var(--dark) 0 7px, #fff0 0 29px, var(--dark) 0 40px), linear-gradient(90deg, #fff0 0 5px, #f44336 0 15px, #fff0 0 21px, #f44336 0 31px, #fff0 0 40px);
  cursor: pointer;
  z-index: 2;
  border: 2px solid #f44336;
  border-radius: 2px;
  display: inline-block;
  margin-left: 100px;
  position: relative;
}

label[for=play-pause]:hover {
  background: linear-gradient(180deg, #f44336 0 6px, #fff0 0 30px, #f44336 0 40px), linear-gradient(90deg, #fff0 0 5px, var(--dark) 0 15px, #fff0 0 21px, var(--dark) 0 31px, #fff0 0 40px), #f44336;
}

input#play-pause:checked ~ footer label[for=play-pause] {
  background: linear-gradient(90deg, var(--dark) 0 25%, #fff0 25% ), linear-gradient(215deg, var(--dark) 0 40%, #fff0 calc(40% + 1px) ), linear-gradient(-35deg, var(--dark) 0 40%, #fff0 calc(40% + 1px) ), #8bc34a;
  border-color: #8bc34a;
  background-size: 40px 36px;
  background-repeat: no-repeat;
  background-position: 0px 0px;
}

input#play-pause:checked ~ footer label[for=play-pause]:hover {
  background: linear-gradient(90deg, #8bc34a 0 26%, #fff0 26% ), linear-gradient(215deg, #8bc34a 0 36%, #fff0 calc(36% + 1px) ), linear-gradient(-35deg, #8bc34a 0 36%, #fff0 calc(36% + 1px) ), var(--dark);
}

label[for=play-pause]:before {
  top: -2px;
  left: -82px;
  background: var(--dark);
  padding: 0px 10px 0 0;
  border-radius: 2px;
  color: #f44336;
  color: #fff;
  content: "PLAYING PAUSE";
  text-align: right;
  font-size: 14px;
  width: 70px;
  line-height: 21px;
  margin-top: -1px;
  margin-right: 10px;
  position: absolute;
}

label[for=play-pause]:hover:before {
  max-height: 30px;
  transition: max-height 0.5s ease 0s;
}

input#play-pause:checked ~ footer label[for=play-pause]:before {
  content: "PLAY";
  color: #8bc34a;
}

label[for=play-pause]:after {
  top: 19px;
  left: -82px;
  background: var(--dark);
  padding: 0px 10px 0 0;
  border-radius: 2px;
  color: #f44336;
  content: "PAUSE";
  text-align: right;
  font-size: 14px;
  width: 70px;
  line-height: 21px;
  margin-top: -1px;
  margin-right: 10px;
  position: absolute;
}

input#play-pause:checked ~ footer label[for=play-pause]:after {
  content: "PAUSED";
  color: #FFF;
}


label[for=play-pause] + span {
  position: relative;
  z-index: 1;
}

label[for=play-pause] + span:before {
  content: "PAUSE\00a0 ANIMATION";
  position: absolute;
  background: var(--dark);
  color: #fff;
  font-size: 10px;
  position: absolute;
  top: -33px;
  right: -7px;
  padding: 0 7px;
  border-radius: 2px 2px 0 0;
  line-height: 25px;
  max-height: 0;
  font-weight: bold;
  white-space: pre-wrap;
  transition: all 0.25s ease 0s;
  z-index: -1;
  overflow: hidden;
}

label[for=play-pause]:hover + span:before {
  max-height: 33px;
  top: -58px;
}

input#play-pause:checked ~ footer label[for=play-pause] + span:before {
  content: "PLAY\00a0 ANIMATION";
}


/*** INFO ***/

.info {
  position: absolute;
  width: 215px;
  height: 130px;
  font-size: 14px;
  left: 20px;
  top: 80px;
  padding: 30px 10px 10px 10px;
  background: radial-gradient(circle at 14px 14px, #fff0 0 22px, #00000015 23px);
  border-radius: 3px;
  transform-origin: 10px 10px;
  transition: all 0.5s ease 0s;
}

.info:before {
  content: "TRIGONOMETRY DATA";
  position: absolute;
  background: radial-gradient(circle at -5px 16px, #fff0 22px, #d5d5d5 23px);
  padding: 4px 15px 4px 27px;
  left: 20px;
  top: -0.25vmin;
  color: #999999;
  border-radius: 0 2px 2px 0;
  font-weight: bold;
  width: 156px;
}

.info-btn::after {
  overflow: hidden;
  font-size: 14px;
  line-height: 14px;
  color: #e6e6e6;
  content: "TRIGONOMETRY\00a0 DATA";
  content: "\00a0 \00a0 \00a0 \00a0 TRIGONOMETRY\00a0 DATA";
  position: absolute;
  background: radial-gradient(circle at -16px 16px, #fff0 22px, var(--dark) 23px);
  text-align: left;
  padding: 5px 0;
  left: 37px;
  top: 4px;
  color: #999999;
  border-radius: 0 2px 2px 0;
  font-weight: bold;
  width: 187px;
  max-width: 0;
  max-height: 15px;
  transition: max-width 0.5s ease 0s;
  font-family: Arial, Helvetica, serif;
}
.info-btn:hover:after {
  max-width: 187px;
  color: #e6e6e6;
  transition: max-width 0.5s ease 0s;
}

.info div {
  float: right;
  background: #fff;
  border-radius: 3px;
  padding: 1px 2px;
  position: absolute;
  right: 40px;
  text-align: right;
  min-width: 40px;
}

.info .apex-height {
  margin-top: 22px;
}

.info .hypotenuse {
  margin-top: 44px;
}

.info .alpha-angle {
  margin-top: 66px;
}

.info div:before {
  content: "ALPHA ANGLE";
  position: absolute;
  width: 110px;
  height: 0;
  line-height: 1px;
  color: #fff;
  left: -132px;
  border: 6px solid #fff0;
  border-right-color: #fff;
  top: 3px;
  padding-right: 10px;
}

.info .base-width:before {
  content: "BASE WIDTH";
}

.info .apex-height:before {
  content: "APEX HEIGHT";
}

.info .hypotenuse:before {
  content: "HYPOTENUSE";
}

.info div:after {
  content: "vmin";
  position: absolute;
  color: #fff;
  font-size: 12px;
  right: -50px;
  line-height: 20px;
  width: 47px;
  text-align: left;
}

.info div:hover:after {
  background: conic-gradient(from 225deg at 100% 50%, #00000015 0 90deg, #fff0 0 100%);
  background-size: 10px;
  background-repeat: no-repeat;
  background-position: right center;
}

.info .alpha-angle:after {
  content: "deg";
}

.info-btn {
  background: #d5d5d5;
  position: absolute;
  width: 40px;
  height: 40px;
  border-radius: 100%;
  text-align: center;
  color: #9d9d9d;
  top: 74px;
  left: 14px;
  font-size: 30px;
  border: 0;
  z-index: 1;
  cursor: pointer;
  padding: 0 0 2px;
}

.info-btn:hover {
  background: #fff0;
}

.info-btn:hover:before {
  background: var(--dark);
  position: absolute;
  width: 40px;
  height: 40px;
  border-radius: 100%;
  left: 0px;
  top: 0px;
  font-size: 20px;
  line-height: 40px;
  color: #e6e6e6;
  content: "+";
  content: "\2716";
  transform: rotate(0deg);
  transition: all 0.5s ease 0s;
  justify-content: center;
  display: flex;
  align-items: center;
}

.info-btn.hide:hover:before {
  transform: rotate(45deg);
  transition: all 0.5s ease 0s;
}

.info.hide {
  transform: scale(0) rotate(90deg);
  transition: all 0.5s ease 0s;
}


.hidden {
  display: none;
}

#hidden-copy-text {
  position: absolute;
  top: 0;
}


/*** Trigonometric Data ***/

/***Width***/
body:has(#base-width:hover) .pyramid > div {
  position: absolute;
  width: 100%;
  height: calc(100% + 4vmin);
  border-bottom: 3px dashed var(--data);
  border-top: 3px dashed var(--data);
  top: -2vmin;
  transform-style: preserve-3d;
  background: linear-gradient(0deg, #fff 0 3px, #fff0 0 100%), linear-gradient(180deg, #fff 0 3px, #fff0 0 100%);
  background-position: 0px 3px, 0px -3px;
  background-repeat: no-repeat;
}
body:has(#base-width:hover) .pyramid > div:before, 
body:has(#base-width:hover) .pyramid > div:after {
  content: "";
  position: absolute;
  width: 0;
  height: calc(var(--width) * 1vmin);
  border-right: 3px dashed var(--data);
  transform: rotateY(90deg) rotatex(90deg);
  left: -1px;
  top: -1px;
  transform-origin: center top;
  background-color: #fff;
}
body:has(#base-width:hover) .pyramid > div:after {
  top: calc(calc(calc(var(--width) * 1vmin) + 4vmin) - 5px);
}


/***Height***/
body:has(#apex-height:hover) {
  --data: hsl(90deg 80% 40%);
}

body:has(#apex-height:hover) .pyramid div {
  position: absolute;
  width: 100%;
  height: calc(100% + 4vmin);
  top: 0vmin;
  transform-style: preserve-3d;
}
body:has(#apex-height:hover) .pyramid div:before, 
body:has(#apex-height:hover) .pyramid div:after {
  content: "";
  position: absolute;
  width: 0;
  height: calc(var(--height) * 1vmin);
  border-right: 3px dashed var(--data);
  transform: rotatex(90deg);
  left: 50%;
  top: -2vmin;
  transform-origin: center top;
  background-color: #fff;
}
body:has(#apex-height:hover) .pyramid div:after {
  transform: rotateX(90deg) rotateY(90deg);
}
body:has(#apex-height:hover) .pyramid div div:before, 
body:has(#apex-height:hover) .pyramid div div:after {
  top: calc(calc(var(--width) * 1vmin) + 2vmin);
}


/***Hypotenuse***/
body:has(#hypotenuse:hover) {
  --data: hsl(200deg 100% 40%);
}
body:has(#hypotenuse:hover) .pyramid div {
  position: absolute;
  width: 100%;
  height: calc(100% + 4vmin);
  top: 0vmin;
  transform-style: preserve-3d;
}
body:has(#hypotenuse:hover) .pyramid div:before, 
body:has(#hypotenuse:hover) .pyramid div:after {
  content: "";
  position: absolute;
  width: 0;
  height: calc(var(--hypo) * 1vmin);
  border-right: 3px dashed var(--data);
  transform: rotateX(var(--alpha) );
  left: 50%;
  top: -2vmin;
  transform-origin: center top;
  background-color: #fff;
}
body:has(#hypotenuse:hover) .pyramid  div:after {
  transform: rotateX(var(--alpha)) rotateY(90deg);
}
body:has(#hypotenuse:hover) .pyramid div div:before, 
body:has(#hypotenuse:hover) .pyramid div div:after {
  top: calc(calc(var(--width) * 1vmin) + 2vmin);
  transform: rotateX(calc(180deg - var(--alpha)));
}
body:has(#hypotenuse:hover) .pyramid div div:after {
  transform: rotateX(calc(180deg - var(--alpha))) rotateY(90deg);
}


/***Alpha Angle***/
body:has(#alpha-angle:hover) {
  --data: hsl(270deg 100% 40%);
}
body:has(#alpha-angle:hover) .pyramid div {
  position: absolute;
  height: calc(100% + 4vmin);
  width: 3px;
  background: 
    linear-gradient(
      0deg, 
      var(--data) 0 5px, #fff 0 7px, 
      var(--data) 0 12px, #fff 0 14px, 
      var(--data) 0 19px, #fff 0 21px, 
      var(--data) 0 26px, #fff 0 28px, 
      var(--data) 0 33px, #fff 0 35px, 
      var(--data) 0 40px, #fff0 0 42px
    ),
    linear-gradient(
      180deg, 
      var(--data) 0 5px, #fff 0 7px, 
      var(--data) 0 12px, #fff 0 14px, 
      var(--data) 0 19px, #fff 0 21px, 
      var(--data) 0 26px, #fff 0 28px, 
      var(--data) 0 33px, #fff 0 35px, 
      var(--data) 0 40px, #fff0 0 42px
    );
  left: calc(50% - 2vmin);
  top: -2vmin;
  transform-style: preserve-3d;
  transform: translateX(2vmin) translatez(-1vmin);
}

body:has(#alpha-angle:hover) .pyramid div:before, 
body:has(#alpha-angle:hover) .pyramid div:after {
  content: "";
  position: absolute;
  width: 0;
  height: 5vmin;
  border-right: 3px dashed var(--data);
  transform: rotateX(var(--alpha)) translatey(0vmin);
  left: calc(50% - 2px);
  top: 0vmin;
  transform-origin: center top;
  background-color: #fff;
}

body:has(#alpha-angle:hover) .pyramid div:after {
  top: calc(calc(var(--width) * 1vmin) + 4vmin);
  transform: rotateX(calc(180deg - var(--alpha)));
}

body:has(#alpha-angle:hover) .pyramid div div {
  transform: rotateY(90deg);
  left: 0;
  top: 0;
  height: 100%;
}

body:has(#alpha-angle:hover) .pyramid div div:before {
  transform: rotateZ(var(--alpha));
}
body:has(#alpha-angle:hover) .pyramid div div:after {
  transform: rotateZ(calc(180deg - var(--alpha)));
}




.info div:hover {
  background: var(--data);
  color: #fff;
  font-weight: bold;
}
.info div:hover:before {
  border-right-color: var(--data);
  color: var(--data);
  --cd: #fff;
  text-shadow: 1px 0px 0px var(--cd), 1px 1px 0px var(--cd), 1px -1px 0px var(--cd), -1px 0px 0px var(--cd), -1px 1px 0px var(--cd), -1px -1px 0px var(--cd), 0px 0px 1px var(--cd), 0px 0px 2px var(--cd), 0px 0px 3px var(--cd), 0px 0px 3px var(--cd);
}

.info:after {
  content: "YOUR BROWSER NOT SUPPORT CSS :has() \A \2504 \2504 \2504 \2504 \2504 \2504 \2504 \2504 \2504 \2504 \A SORRY, CANNOT SHOW THE DATA OVER PYRAMID";
  position: absolute;
  text-align: center;
  font-size: 11px;
  background: #d5d5d5;
  line-height: 14px;
  padding: 13px;
  left: 230px;
  top: 26px;
  color: #999999;
  border-radius: 0 2px 2px 0;
  width: 130px;
  white-space: pre-wrap;
  opacity: 0;
}

.info:hover:after {
  opacity: 1;
}

@supports (-webkit-font-smoothing: antialiased) {
  .info:after {
    display: none;
  }
}



/*** MEDIA QUERIES ***/

@media only screen and (max-width: 1023px) {

  .wall-design {
    margin-left: 19px;
    top: 0px;
  }
  .w-more {
    z-index: 1;
    box-shadow: 0 -1vmin 2vmin 1vmin var(--dark);
  }
  .w-more.down {
    z-index: -1;
  }
  label[for=play-pause] {
    bottom: -26px;
  }

  footer {
    height: 130px;
  }

  footer:before {
    content: "";
    position: absolute;
    width: calc(100% - 75px);
    border-top: 1px solid #000;
    border-bottom: 1px solid #fff2;
    top: 65px;
    left: 35px;
  }

}


@media only screen and (min-width: 768px) and (max-width: 1023px) {

  footer .wall-design {
    width: 100%;
  }
  
  footer .wall-design .w-more {
    left: 3px;
  }

  footer > .wall-design:after {
    margin-left: 365px;
    right: inherit;
  }

  footer label[for=play-pause] {
    margin-left: 468px;
    bottom: 25px;
  }

  .wall-design {
    top: 26px;
  }

}


@media only screen and (max-width: 580px) {

  h1 a { padding-right: 10px; }

  header:after { display: none;}

  header button {
    min-width: 0;
    position: fixed;
    bottom: 18px;
    top: initial;
    right: 95px;
  }

  header button:after {
    display: none;
  }

  button#copy-css {
    left: initial;
    right: 5px;
  }

  button#copy-html:after {
    display: block;
    content: "";
    position: absolute;
    top: -7px;
    left: -6.5vmin;
    background: #070707;
    width: 1px;
    height: 38px;
    padding: 0;
    border-left: 1px solid #454545;
  }

  a.josetxu-btn {
    margin-left: 10px;
  }

  a.josetxu-btn:before, a.josetxu-btn:after {
    border-right: 0;
    background: #fff0;
  }

  footer  {
    height: 240px;
  }

  footer .slider, footer .wall-design {
    width: calc(100% - 10vmin);
  }

  footer .wall-design {
    width: calc(100% - 4.5vmin);
    margin-left: 8px;
  }

  footer > div:after {
    display: none;
  }

  footer:before {
    top: 105px;
  }

  footer label[for=play-pause] {
    margin-left: 81px;
    margin-top: 8px;
  }

  .wall-design {
    top: 23px;
  }

}


var eps = elem('pyramid').style;
eps.setProperty("--width", '35' );
eps.setProperty("--height", '30' );
eps.setProperty("--hypo", '34.73' );
eps.setProperty("--alpha", '59.74deg' );

function elem(id) {
  return document.getElementById(id);
}

function setBase(val) {
  eps.setProperty("--width", val );
  setAngle(); 
  elem('base').nextElementSibling.innerText=val;
}

function setApex(val) {
  eps.setProperty("--height", val );
  setAngle();
  elem('apex').nextElementSibling.innerText=val;
}

function setAngle() {
  var width = eps.getPropertyValue("--width"); //get base width
  var height = eps.getPropertyValue("--height"); //get apex height
  var hypo = Math.sqrt((width/2 * width/2) + (height * height)); //calculate hypotenuse
  var alpha = Math.asin(height / hypo) * (180 / Math.PI) //calculate alpha angle
  eps.setProperty("--hypo", hypo); // set hypotenuse
  eps.setProperty("--alpha", alpha + 'deg'); //set alpha angle
  elem('base-width').innerText=elem('cp-width').innerText=width; //set info width
  elem('apex-height').innerText=elem('cp-height').innerText=height; //set info height
  elem('hypotenuse').innerText=hypo.toFixed(2); //set info hypotenuse
  elem('alpha-angle').innerText=alpha.toFixed(2); //set info alpha
  elem('cp-hypo').innerText=hypo; //set code hypotenuse
  elem('cp-alpha').innerText=alpha+'deg'; //set code alpha
}

function setWall(id) {
  elem('pyramid').className=id+" pyramid";
  elem('w-pyramid').innerText=id;
}

function copyCode(id){
  elem('hidden-copy-text').value=elem('hidden-'+id).innerText;
  elem('hidden-copy-text').select();
  document.execCommand("copy");
}

function hideInfo() {
  elem('info-panel').classList.toggle('hide');
  elem('info-btn').classList.toggle('hide');
}

function animatePyramid(){
    (elem("anim").innerText=="running") ? elem("anim").innerText = "paused" : elem("anim").innerText = "running"; 
}

function moreWalls() {
  elem('w-more').classList.toggle('minus');
  elem('w-mores').classList.toggle('down');
}

document.body.addEventListener('click', function(e) {
  if ( !elem('w-more').contains(e.target) && !elem('w-mores').contains(e.target) ) {
    elem('w-mores').classList.add('down');
    elem('w-more').classList.remove('minus');
  }
})

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.