Widget:Lari1

De Wiki Gla
Revisão de 12h37min de 17 de março de 2026 por Larifk (discussão | contribs)
Ir para navegação Ir para pesquisar

<style> @import url('https://fonts.googleapis.com/css2?family=Rajdhani:wght@600;700&family=Outfit:wght@400;500;600&display=swap');

/* === PAGE FIXES === */

  1. firstHeading, #contentSub, #contentSub2 { display: none !important; margin: 0 !important; padding: 0 !important; }

.mw-parser-output > p:has(> style), .mw-parser-output > p:has(> script) { margin: 0 !important; padding: 0 !important; }

/* === FULL WIDTH (Vector skin) === */ .mw-parser-output > #lk-outer {

   margin-inline: calc(var(--vector-body-padding-horizontal, 1em) * -1);
   width: calc(100% + var(--vector-body-padding-horizontal, 1em) * 2);

}

/* === VARIABLES — LIGHT === */

  1. lk-outer {
   --bg:      #f1f3f8;
   --surf:    #ffffff;
   --surf2:   #edf0f7;
   --border:  #dce1ee;
   --text:    #18202e;
   --text2:   #636e88;
   --accent:  #c92a2a;
   --shadow:  0 1px 4px rgba(0,0,0,.07);
   --shadow2: 0 4px 20px rgba(0,0,0,.10);
   --r:       14px;
   --r2:      9px;
   --font:    'Outfit', system-ui, sans-serif;
   --font-hd: 'Rajdhani', system-ui, sans-serif;
   font-family: var(--font);
   background: var(--bg);
   color: var(--text);
   min-height: 100vh;

}

  1. lk-outer * { box-sizing: border-box; }

/* === DARK MODE === */

  1. lk-outer.dk {
   --bg:      #0a0d16;
   --surf:    #111422;
   --surf2:   #181c2e;
   --border:  #242840;
   --text:    #dde4f5;
   --text2:   #6e789a;
   --shadow:  0 1px 6px rgba(0,0,0,.5);
   --shadow2: 0 4px 24px rgba(0,0,0,.6);

}

/* === HEADER === */

  1. lk-hd {
   display: flex;
   align-items: center;
   justify-content: space-between;
   padding: 18px 32px;
   background: var(--surf);
   border-bottom: 1px solid var(--border);
   gap: 14px;
   flex-wrap: wrap;
   position: sticky;
   top: 0;
   z-index: 100;

}

  1. lk-eyebrow {
   font-size: 10px;
   font-weight: 600;
   letter-spacing: 2.5px;
   text-transform: uppercase;
   color: var(--accent);
   margin-bottom: 2px;

}

  1. lk-title {
   font-family: var(--font-hd);
   font-size: 26px;
   font-weight: 700;
   color: var(--text);
   letter-spacing: 0.5px;
   line-height: 1.1;

}

  1. lk-hd-r { display: flex; align-items: center; gap: 10px; }

/* DIFFICULTY PILL */

  1. lk-diff {
   display: flex;
   background: var(--surf2);
   border: 1px solid var(--border);
   border-radius: 999px;
   padding: 3px;
   gap: 2px;

} .lk-db {

   padding: 5px 18px;
   border: none;
   background: transparent;
   border-radius: 999px;
   cursor: pointer;
   font-family: var(--font);
   font-size: 11px;
   font-weight: 600;
   letter-spacing: 0.8px;
   text-transform: uppercase;
   color: var(--text2);
   transition: all .2s ease;

} .lk-db.on {

   background: var(--accent);
   color: #fff;
   box-shadow: 0 2px 10px rgba(201,42,42,.35);

}

/* THEME BTN */

  1. lk-tb {
   width: 34px; height: 34px;
   border-radius: 50%;
   border: 1px solid var(--border);
   background: var(--surf2);
   cursor: pointer;
   font-size: 15px;
   display: flex; align-items: center; justify-content: center;
   transition: all .2s;
   flex-shrink: 0;

}

  1. lk-tb:hover { background: var(--border); }

/* === DIFFICULTY BANNER === */

  1. lk-ban {
   overflow: hidden;
   max-height: 0;
   transition: max-height .35s ease, padding .35s ease;
   background: linear-gradient(90deg, rgba(201,42,42,.07) 0%, transparent 60%);
   border-bottom: 1px solid transparent;
   padding: 0 32px;
   display: flex;
   align-items: center;

}

  1. lk-ban.on {
   max-height: 60px;
   padding: 10px 32px;
   border-bottom-color: var(--border);

}

  1. lk-ban-bg {
   font-family: var(--font-hd);
   font-size: 11px;
   font-weight: 700;
   letter-spacing: 1.2px;
   text-transform: uppercase;
   background: var(--accent);
   color: #fff;
   padding: 3px 12px;
   border-radius: 6px;
   margin-right: 12px;
   flex-shrink: 0;

}

  1. lk-ban-tx { font-size: 13px; color: var(--text2); }

/* === TABBER === */

  1. lk-tabs-bar {
   background: var(--surf);
   border-bottom: 2px solid var(--border);
   overflow: hidden;

}

  1. lk-tabs {
   display: flex;
   overflow-x: auto;
   padding: 0 24px;
   scrollbar-width: none;

}

  1. lk-tabs::-webkit-scrollbar { display: none; }

.lk-tab {

   flex-shrink: 0;
   padding: 13px 22px 11px;
   border: none;
   background: transparent;
   cursor: pointer;
   font-family: var(--font);
   font-size: 13px;
   font-weight: 600;
   color: var(--text2);
   border-bottom: 3px solid transparent;
   margin-bottom: -2px;
   transition: color .2s, border-color .2s;
   white-space: nowrap;

} .lk-tab:hover { color: var(--text); } .lk-tab.on {

   color: var(--accent);
   border-bottom-color: var(--accent);

}

/* === PANELS === */

  1. lk-panels { padding: 28px 32px; }

.lk-panel { display: none; } .lk-panel.on { display: block; animation: lkFd .22s ease; }

@keyframes lkFd {

   from { opacity: 0; transform: translateY(7px); }
   to   { opacity: 1; transform: translateY(0); }

}

/* BOSS CARD */ .lk-bcard {

   display: flex;
   gap: 24px;
   align-items: flex-start;
   background: var(--surf);
   border: 1px solid var(--border);
   border-radius: var(--r);
   padding: 22px 22px 22px 28px;
   margin-bottom: 24px;
   box-shadow: var(--shadow2);
   position: relative;
   overflow: hidden;

} .lk-bcard::before {

   content: ;
   position: absolute;
   top: 0; left: 0;
   width: 5px; height: 100%;
   background: var(--accent);

} .lk-bportrait {

   flex-shrink: 0;
   width: 110px; height: 110px;
   border-radius: var(--r2);
   background: var(--surf2);
   border: 1px solid var(--border);
   overflow: hidden;
   display: flex; align-items: center; justify-content: center;

} .lk-bportrait img {

   max-width: 100%; max-height: 100%; object-fit: contain;

} .lk-binfo { flex: 1; min-width: 0; } .lk-bname {

   font-family: var(--font-hd);
   font-size: 22px;
   font-weight: 700;
   color: var(--text);
   margin: 0 0 8px;
   letter-spacing: 0.3px;

} .lk-bdesc {

   font-size: 13px;
   color: var(--text2);
   line-height: 1.65;
   margin: 0;

}

/* === SKILLS === */ .lk-slbl {

   font-size: 10px;
   font-weight: 700;
   text-transform: uppercase;
   letter-spacing: 1.5px;
   color: var(--text2);
   margin-bottom: 10px;

} .lk-sk {

   background: var(--surf);
   border: 1px solid var(--border);
   border-radius: var(--r2);
   margin-bottom: 8px;
   overflow: hidden;
   transition: border-color .2s;
   box-shadow: var(--shadow);

} .lk-sk.open { border-color: var(--accent); } .lk-skbtn {

   width: 100%;
   display: flex;
   align-items: center;
   justify-content: space-between;
   padding: 12px 16px;
   border: none;
   background: var(--surf2);
   cursor: pointer;
   transition: background .15s;
   gap: 12px;

} .lk-skbtn:hover, .lk-sk.open .lk-skbtn { background: var(--surf); } .lk-skl {

   display: flex; align-items: center; gap: 10px;
   flex: 1; min-width: 0;

} .lk-snum {

   width: 24px; height: 24px;
   border-radius: 50%;
   background: var(--accent);
   color: #fff;
   font-size: 10px;
   font-weight: 700;
   display: flex; align-items: center; justify-content: center;
   flex-shrink: 0;
   font-family: var(--font);

} .lk-sname {

   font-size: 13px;
   font-weight: 600;
   color: var(--text);
   text-align: left;
   white-space: nowrap;
   overflow: hidden;
   text-overflow: ellipsis;

} .lk-sarr {

   font-size: 10px;
   color: var(--text2);
   transition: transform .22s ease;
   flex-shrink: 0;

} .lk-sk.open .lk-sarr { transform: rotate(180deg); } .lk-skbody {

   display: none;
   padding: 16px;
   border-top: 1px solid var(--border);
   background: var(--surf);

} .lk-skbody.open { display: block; animation: lkFd .18s ease; } .lk-yvid {

   position: relative;
   padding-bottom: 56.25%;
   height: 0;
   border-radius: var(--r2);
   overflow: hidden;
   background: #000;
   margin-bottom: 14px;

} .lk-yvid iframe {

   position: absolute; top: 0; left: 0;
   width: 100%; height: 100%; border: 0;

} .lk-sdesc {

   font-size: 13px;
   color: var(--text2);
   line-height: 1.65;
   margin: 0;

}

/* === REWARD (renderizado fora do widget, movido para dentro via JS) === */ .lk-reward-wrap {

   margin: 0 32px 32px;
   padding: 18px 24px;
   background: var(--surf);
   border: 1px solid var(--border);
   border-radius: var(--r);
   box-shadow: var(--shadow2);

} .lk-reward-lbl {

   font-size: 10px;
   font-weight: 700;
   text-transform: uppercase;
   letter-spacing: 1.5px;
   color: var(--text2);
   margin-bottom: 14px;
   display: flex; align-items: center; gap: 8px;

} .lk-reward-lbl::before { content: '🏆'; font-size: 14px; }

/* === RESPONSIVE === */ @media (max-width: 640px) {

   #lk-hd { padding: 14px 16px; }
   #lk-title { font-size: 20px; }
   .lk-db { padding: 4px 12px; font-size: 10px; }
   #lk-tabs { padding: 0 10px; }
   .lk-tab { padding: 11px 14px 9px; font-size: 12px; }
   #lk-panels { padding: 16px; }
   .lk-reward-wrap { margin: 0 16px 16px; padding: 14px 16px; }
   #lk-ban.on { padding: 8px 16px; }
   .lk-bcard { flex-direction: column; align-items: center; text-align: center; padding: 18px 18px 18px 20px; gap: 14px; }
   .lk-bcard::before { width: 100%; height: 5px; }
   .lk-bportrait { width: 80px; height: 80px; }
   .lk-bname { font-size: 18px; }

} </style>

Dinâmica
Boss Rush
               <button class="lk-db" data-d="elite">Elite</button>
               <button class="lk-db" data-d="hard">Hard</button>
           <button id="lk-tb" title="Alternar tema">🌙</button>
       
       

<script> (function () {

   function g(id) {
       var el = document.getElementById(id);
       return el ? el.textContent.trim() : ;
   }
   var N = 7, S = 8;
   var bosses = [];
   for (var i = 1; i <= N; i++) {
       var nome = g('lkd-b' + i + 'n');
       if (!nome) continue;
       var skills = [];
       for (var j = 1; j <= S; j++) {
           var sn = g('lkd-b' + i + 's' + j + 'n');
           if (!sn) continue;
           skills.push({
               nome:  sn,
               video: g('lkd-b' + i + 's' + j + 'v'),
               desc:  g('lkd-b' + i + 's' + j + 'd')
           });
       }
       bosses.push({
           nome:   nome,
           img:    g('lkd-b' + i + 'i'),
           desc:   g('lkd-b' + i + 'd'),
           skills: skills
       });
   }
   var elTxt = g('lkd-el');
   var hdTxt = g('lkd-hd');
   var outer    = document.getElementById('lk-outer');
   var tabsEl   = document.getElementById('lk-tabs');
   var panelsEl = document.getElementById('lk-panels');
   var ban      = document.getElementById('lk-ban');
   var banBg    = document.getElementById('lk-ban-bg');
   var banTx    = document.getElementById('lk-ban-tx');
   var themeBtn = document.getElementById('lk-tb');
   var curDiff  = null;
   /* --- YouTube embed URL --- */
   function yt(url) {
       if (!url) return ;
       var m = url.trim().match(/(?:youtu\.be\/|youtube\.com(?:\/embed\/|\/v\/|\/watch\?v=))([\w-]+)/);
       return m ? 'https://www.youtube.com/embed/' + m[1] + '?rel=0' : ;
   }
   /* --- Image URL via Special:FilePath --- */
   function imgSrc(fn) {
       if (!fn) return ;
       var base = (typeof mw !== 'undefined' && mw.config)
           ? mw.config.get('wgScriptPath') + '/index.php'
           : '/index.php';
       return base + '?title=Special:FilePath&file=' + encodeURIComponent(fn);
   }
   /* --- Build UI --- */
   bosses.forEach(function (boss, idx) {
       /* Tab */
       var tab = document.createElement('button');
       tab.className = 'lk-tab' + (idx === 0 ? ' on' : );
       tab.textContent = boss.nome;
       tab.addEventListener('click', function () { switchTab(idx); });
       tabsEl.appendChild(tab);
       /* Panel */
       var panel = document.createElement('div');
       panel.className = 'lk-panel' + (idx === 0 ? ' on' : );
       /* Boss card */
       var card = document.createElement('div');
       card.className = 'lk-bcard';
       var port = document.createElement('div');
       port.className = 'lk-bportrait';
       if (boss.img) {
           var img = document.createElement('img');
           img.src = imgSrc(boss.img);
           img.alt = boss.nome;
           port.appendChild(img);
       }
       card.appendChild(port);
       var info = document.createElement('div');
       info.className = 'lk-binfo';
       var nm = document.createElement('div');
       nm.className = 'lk-bname';
       nm.textContent = boss.nome;
       info.appendChild(nm);
       if (boss.desc) {
           var dc = document.createElement('p');
           dc.className = 'lk-bdesc';
           dc.textContent = boss.desc;
           info.appendChild(dc);
       }
       card.appendChild(info);
       panel.appendChild(card);
       /* Skills */
       if (boss.skills.length > 0) {
           var lbl = document.createElement('div');
           lbl.className = 'lk-slbl';
           lbl.textContent = 'Habilidades';
           panel.appendChild(lbl);
           boss.skills.forEach(function (skill, si) {
               var item = document.createElement('div');
               item.className = 'lk-sk';
               var btn = document.createElement('button');
               btn.className = 'lk-skbtn';
               var left = document.createElement('div');
               left.className = 'lk-skl';
               var num = document.createElement('span');
               num.className = 'lk-snum';
               num.textContent = si + 1;
               left.appendChild(num);
               var sname = document.createElement('span');
               sname.className = 'lk-sname';
               sname.textContent = skill.nome;
               left.appendChild(sname);
               btn.appendChild(left);
               var arr = document.createElement('span');
               arr.className = 'lk-sarr';
               arr.innerHTML = '▼';
               btn.appendChild(arr);
               item.appendChild(btn);
               /* Skill body */
               var body = document.createElement('div');
               body.className = 'lk-skbody';
               var embedUrl = yt(skill.video);
               if (embedUrl) {
                   var vw = document.createElement('div');
                   vw.className = 'lk-yvid';
                   var iframe = document.createElement('iframe');
                   iframe.src = embedUrl;
                   iframe.setAttribute('allow', 'accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture');
                   iframe.setAttribute('allowfullscreen', 'true');
                   vw.appendChild(iframe);
                   body.appendChild(vw);
               }
               if (skill.desc) {
                   var sd = document.createElement('p');
                   sd.className = 'lk-sdesc';
                   sd.textContent = skill.desc;
                   body.appendChild(sd);
               }
               item.appendChild(body);
               btn.addEventListener('click', function () {
                   var isOpen = item.classList.contains('open');
                   item.classList.toggle('open', !isOpen);
                   body.classList.toggle('open', !isOpen);
               });
               panel.appendChild(item);
           });
       }
       panelsEl.appendChild(panel);
   });
   /* --- Tab switch --- */
   function switchTab(idx) {
       tabsEl.querySelectorAll('.lk-tab').forEach(function (t, i) { t.classList.toggle('on', i === idx); });
       panelsEl.querySelectorAll('.lk-panel').forEach(function (p, i) { p.classList.toggle('on', i === idx); });
   }
   /* --- Difficulty toggle --- */
   document.querySelectorAll('.lk-db').forEach(function (btn) {
       btn.addEventListener('click', function () {
           var d = btn.getAttribute('data-d');
           if (curDiff === d) {
               curDiff = null;
               document.querySelectorAll('.lk-db').forEach(function (b) { b.classList.remove('on'); });
               ban.classList.remove('on');
           } else {
               curDiff = d;
               document.querySelectorAll('.lk-db').forEach(function (b) {
                   b.classList.toggle('on', b.getAttribute('data-d') === d);
               });
               var txt = d === 'elite' ? elTxt : hdTxt;
               banBg.textContent = d === 'elite' ? 'Elite' : 'Hard';
               banTx.textContent = txt;
               ban.classList.toggle('on', !!txt);
           }
       });
   });
   /* --- Theme (persiste em localStorage) --- */
   var dark = localStorage.getItem('lk-theme') === 'dark';
   function applyTheme(d) {
       dark = d;
       outer.classList.toggle('dk', d);
       themeBtn.textContent = d ? '☀️' : '🌙';
       localStorage.setItem('lk-theme', d ? 'dark' : 'light');
   }
   applyTheme(dark);
   themeBtn.addEventListener('click', function () { applyTheme(!dark); });
   /* --- Mover seção de reward para dentro do container (herda CSS vars) --- */
   function moveReward() {
       var rw = document.querySelector('.lk-reward-wrap');
       if (rw && outer && rw.parentNode !== outer) {
           outer.appendChild(rw);
       }
   }
   if (document.readyState !== 'loading') {
       moveReward();
   } else {
       document.addEventListener('DOMContentLoaded', moveReward);
   }

}()); </script>