System messages

This is a list of system messages available in the MediaWiki namespace. Please visit MediaWiki Localisation and translatewiki.net if you wish to contribute to the generic MediaWiki localisation.
System messages
First pagePrevious pageNext pageLast page
Name Default message text
Current message text
cite_reference_backlink_symbol (talk) (Translate) ↑
cite_reference_link (talk) (Translate) <sup id="$1" class="reference">[[#$2|<span class="cite-bracket">[</span>$3<span class="cite-bracket">]</span>]]</sup>
cite_references_link_accessibility_back_label (talk) (Translate) Jump back up
cite_references_link_accessibility_label (talk) (Translate) Jump up
cite_references_link_many (talk) (Translate) <li id="$1"$4><span class="mw-cite-backlink">↑ $2</span> $3</li>
cite_references_link_many_accessibility_label (talk) (Translate) Jump up to:
cite_references_link_many_and (talk) (Translate)
cite_references_link_many_format (talk) (Translate) <sup>[[#$1|$2]]</sup>
cite_references_link_many_format_backlink_labels (talk) (Translate) a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be bf bg bh bi bj bk bl bm bn bo bp bq br bs bt bu bv bw bx by bz ca cb cc cd ce cf cg ch ci cj ck cl cm cn co cp cq cr cs ct cu cv cw cx cy cz da db dc dd de df dg dh di dj dk dl dm dn do dp dq dr ds dt du dv dw dx dy dz ea eb ec ed ee ef eg eh ei ej ek el em en eo ep eq er es et eu ev ew ex ey ez fa fb fc fd fe ff fg fh fi fj fk fl fm fn fo fp fq fr fs ft fu fv fw fx fy fz ga gb gc gd ge gf gg gh gi gj gk gl gm gn go gp gq gr gs gt gu gv gw gx gy gz ha hb hc hd he hf hg hh hi hj hk hl hm hn ho hp hq hr hs ht hu hv hw hx hy hz ia ib ic id ie if ig ih ii ij ik il im in io ip iq ir is it iu iv iw ix iy iz ja jb jc jd je jf jg jh ji jj jk jl jm jn jo jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx ky kz la lb lc ld le lf lg lh li lj lk ll lm ln lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt nu nv nw nx ny nz oa ob oc od oe of og oh oi oj ok ol om on oo op oq or os ot ou ov ow ox oy oz pa pb pc pd pe pf pg ph pi pj pk pl pm pn po pp pq pr ps pt pu pv pw px py pz qa qb qc qd qe qf qg qh qi qj qk ql qm qn qo qp qq qr qs qt qu qv qw qx qy qz ra rb rc rd re rf rg rh ri rj rk rl rm rn ro rp rq rr rs rt ru rv rw rx ry rz sa sb sc sd se sf sg sh si sj sk sl sm sn so sp sq sr ss st su sv sw sx sy sz ta tb tc td te tf tg th ti tj tk tl tm tn to tp tq tr ts tt tu tv tw tx ty tz ua ub uc ud ue uf ug uh ui uj uk ul um un uo up uq ur us ut uu uv uw ux uy uz va vb vc vd ve vf vg vh vi vj vk vl vm vn vo vp vq vr vs vt vu vv vw vx vy vz wa wb wc wd we wf wg wh wi wj wk wl wm wn wo wp wq wr ws wt wu wv ww wx wy wz xa xb xc xd xe xf xg xh xi xj xk xl xm xn xo xp xq xr xs xt xu xv xw xx xy xz ya yb yc yd ye yf yg yh yi yj yk yl ym yn yo yp yq yr ys yt yu yv yw yx yy yz za zb zc zd ze zf zg zh zi zj zk zl zm zn zo zp zq zr zs zt zu zv zw zx zy zz
cite_references_link_many_sep (talk) (Translate)
cite_references_link_one (talk) (Translate) <li id="$1"$4><span class="mw-cite-backlink">[[#$2|↑]]</span> $3</li>
cite_section_preview_references (talk) (Translate) Preview of references
cite_warning_sectionpreview_no_text (talk) (Translate) <code><ref></code> tag with name <code>$1</code> cannot be previewed because it is defined outside the current section or not defined at all.
citethispage (talk) (Translate) Cite This Page
citethispage-badrevision (talk) (Translate) Error: could not find any revision for the page "$1" with the revision ID $2.
citethispage-change-submit (talk) (Translate) Cite
citethispage-change-target (talk) (Translate) Page:
citethispage-content (talk) (Translate) __TOC__ <div class="mw-specialCiteThisPage-bibliographic"> == Bibliographic details for {{FULLPAGENAME}} == * Page name: {{FULLPAGENAME}} * Author: {{SITENAME}} contributors * Publisher: ''{{SITENAME}}''. * Date of last revision: {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}} {{CURRENTTIME}} UTC * Date retrieved: <citation>{{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}} {{CURRENTTIME}} UTC</citation> * Permanent URL: {{canonicalurl:{{FULLPAGENAME}}|oldid={{REVISIONID}}}} * Page Version ID: {{REVISIONID}} </div> <div class="plainlinks mw-specialCiteThisPage-styles"> == Citation styles for {{FULLPAGENAME}} == === [https://en.wikipedia.org/wiki/APA_style APA style] === {{FULLPAGENAME}}. ({{CURRENTYEAR}}, {{CURRENTMONTHNAME}} {{CURRENTDAY}}). ''{{SITENAME}}''. Retrieved <citation>{{CURRENTMONTHNAME}} {{CURRENTDAY}}, {{CURRENTYEAR}}</citation>, from {{canonicalurl:{{FULLPAGENAME}}|oldid={{REVISIONID}}}}. === [https://en.wikipedia.org/wiki/MLA_Handbook#MLA_Style_Manual MLA style] === "{{FULLPAGENAME}}." ''{{SITENAME}}''. {{CURRENTDAY}} {{CURRENTMONTHABBREV}} {{CURRENTYEAR}}, {{CURRENTTIME}} UTC. <{{canonicalurl:{{FULLPAGENAME}}|oldid={{REVISIONID}}}}> <citation>{{CURRENTDAY}} {{CURRENTMONTHABBREV}} {{CURRENTYEAR}}, {{CURRENTTIME}}</citation>. === [https://en.wikipedia.org/wiki/MHRA_Style_Guide MHRA style] === {{SITENAME}} contributors, '{{FULLPAGENAME}}', ''{{SITENAME}},'' {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}}, {{CURRENTTIME}} UTC, <{{canonicalurl:{{FULLPAGENAME}}|oldid={{REVISIONID}}}}> [accessed <citation>{{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}}</citation>] === [https://en.wikipedia.org/wiki/The_Chicago_Manual_of_Style Chicago style] === {{SITENAME}} contributors, "{{FULLPAGENAME}}," ''{{SITENAME}},'' {{canonicalurl:{{FULLPAGENAME}}|oldid={{REVISIONID}}}} (accessed <citation>{{CURRENTMONTHNAME}} {{CURRENTDAY}}, {{CURRENTYEAR}}</citation>). === [https://en.wikipedia.org/wiki/Council_of_Science_Editors CBE/CSE style] === {{SITENAME}} contributors. {{FULLPAGENAME}} [Internet]. {{SITENAME}}; {{CURRENTYEAR}} {{CURRENTMONTHABBREV}} {{CURRENTDAY}}, {{CURRENTTIME}} UTC [cited <citation>{{CURRENTYEAR}} {{CURRENTMONTHABBREV}} {{CURRENTDAY}}</citation>]. Available from: {{canonicalurl:{{FULLPAGENAME}}|oldid={{REVISIONID}}}}. === [https://en.wikipedia.org/wiki/Bluebook Bluebook style] === {{FULLPAGENAME}}, {{canonicalurl:{{FULLPAGENAME}}|oldid={{REVISIONID}}}} (last visited <citation>{{CURRENTMONTHNAME}} {{CURRENTDAY}}, {{CURRENTYEAR}}</citation>). === [https://en.wikipedia.org/wiki/BibTeX BibTeX] entry === @misc{ wiki:xxx, author = "{{SITENAME}}", title = "{{FULLPAGENAME}} --- {{SITENAME}}{,} {{int:sitesubtitle}}", year = "{{CURRENTYEAR}}", url = "{{canonicalurl:{{FULLPAGENAME}}|oldid={{REVISIONID}}}}", note = "[Online; accessed <citation>{{CURRENTDAY}}-{{CURRENTMONTHNAME}}-{{CURRENTYEAR}}</citation>]" } When using the [https://en.wikipedia.org/wiki/LaTeX LaTeX] package url (<code>\usepackage{url}</code> somewhere in the preamble) which tends to give much more nicely formatted web addresses, the following may be preferred: @misc{ wiki:xxx, author = "{{SITENAME}}", title = "{{FULLPAGENAME}} --- {{SITENAME}}{,} {{int:sitesubtitle}}", year = "{{CURRENTYEAR}}", url = "'''\url{'''{{canonicalurl:{{FULLPAGENAME}}|oldid={{REVISIONID}}}}'''}'''", note = "[Online; accessed <citation>{{CURRENTDAY}}-{{CURRENTMONTHNAME}}-{{CURRENTYEAR}}</citation>]" } </div> <!--closing div for "plainlinks"-->
citethispage-desc (talk) (Translate) Adds a [[Special:CiteThisPage|citation]] special page and toolbox link
citethispage-link (talk) (Translate) Cite this page
citethispage-summary (talk) (Translate)  
clearyourcache (talk) (Translate) <strong>Note:</strong> After publishing, you may have to bypass your browser's cache to see the changes. * <strong>Firefox / Safari:</strong> Hold <em>Shift</em> while clicking <em>Reload</em>, or press either <em>Ctrl-F5</em> or <em>Ctrl-R</em> (<em>⌘-R</em> on a Mac) * <strong>Google Chrome:</strong> Press <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> on a Mac) * <strong>Edge:</strong> Hold <em>Ctrl</em> while clicking <em>Refresh</em>, or press <em>Ctrl-F5</em>.
codeeditor-desc (talk) (Translate) Syntax-highlighted editing for JavaScript and CSS pages using [https://ace.c9.io/ Ace editor]
codeeditor-error-message (talk) (Translate) CodeEditor needs WikiEditor to be loaded.
codeeditor-error-title (talk) (Translate) Dependency failed
codeeditor-gotoline (talk) (Translate) Go to line number...
codeeditor-gotoline-placeholder (talk) (Translate) line[:column]
codeeditor-gotoline-prompt (talk) (Translate) Enter a line number
codeeditor-indent (talk) (Translate) Indent
codeeditor-invisibleChars-toggle (talk) (Translate) Toggle invisible characters
codeeditor-lineWrapping-toggle (talk) (Translate) Toggle line wrapping
codeeditor-next-annotation (talk) (Translate) Go to next annotation
codeeditor-outdent (talk) (Translate) Outdent
codeeditor-save-with-errors (talk) (Translate) The document contains errors. Are you sure you want to publish?
codeeditor-searchReplace-toggle (talk) (Translate) Toggle search and replace dialog
codeeditor-toolbar-toggle (talk) (Translate) Toggle code editor
collapsible-collapse (talk) (Translate) Collapse
collapsible-collapse-all-text (talk) (Translate) Collapse all
collapsible-collapse-all-tooltip (talk) (Translate) Collapse all collapsible elements on the current page
collapsible-expand (talk) (Translate) Expand
collapsible-expand-all-text (talk) (Translate) Expand all
collapsible-expand-all-tooltip (talk) (Translate) Expand all collapsible elements on the current page
colon-separator (talk) (Translate) :
comma-separator (talk) (Translate) ,
common.css (talk) (Translate) /* CSS placed here will be applied to all skins */
/* CSS placed here will be applied to all skins */ @import url('https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css'); @font-face { font-family: "Outfit"; src: url("/fonts/Outfit.ttf") format("truetype"); font-weight: 100 900; font-style: normal; font-display: swap; } @font-face { font-family: "Daedalus"; src: url("/fonts/000webfont.ttf") format("truetype"); } :root, .view-dark { --content-link-color: #ffc05f; --content-border-color: #feffe5; --heading-font-family: "Daedalus", sans-serif; --body-font-family: "Outfit", sans-serif; --accent-link-color: #22214d; --content-link-label-color: #0b101b; } :root{ --is-top-logo: 1; --logo-file-width: 160; --logo-file-height: 160; --logo-height: calc(var(--logo-file-height)*1px); --logo-margin: 15px; --is-navigation-inside-content: 0; } /***************************** * Sound * ******************************/ .sound-button,.sound-button a,.sound-button a.image,.sound-button img { background: none !important; background-color: transparent !important; border: none !important; outline: none !important; box-shadow: none !important; text-decoration: none !important; padding: 0 !important; margin: 0 !important } .sound-button img { filter: invert(93%) sepia(5%) saturate(782%) hue-rotate(151deg) brightness(96%) contrast(89%); transition: filter 0.2s ease-in-out; display: inline-block !important; vertical-align: middle; margin: 0 !important; } .sound-button { cursor: pointer; display: inline-block !important; vertical-align: middle; margin: 0 2px !important; line-height: 1; white-space: nowrap; } .sound-button:hover img,.sound-button.playing img { filter: invert(93%) sepia(5%) saturate(782%) hue-rotate(151deg) brightness(115%) contrast(100%) drop-shadow(0 0 2px rgba(201,225,230,0.7)) } .sound-button a:hover,.sound-button a:focus { background: none !important; border: none !important } /***************************** * End Sound * ******************************/ /***************************** * PortableInfoboxes * ******************************/ :root { image-rendering: pixelated !important; --pi-background: var(--background-color-base); --pi-secondary-background: var(--color-progressive); --pi-secondary-background-label: var(--content-link-label-color); --pi-border-color: color-mix(in srgb, var(--color-progressive) 50%, transparent); } .portable-infobox .pi-title, .portable-infobox .pi-header { text-align:center; font-size:1.5em; background: color-mix(in srgb, var(--color-progressive) 75%, transparent); color:var(--pi-secondary-background-label); } .portable-infobox .pi-data { background: color-mix(in srgb, var(--color-progressive) 18%, transparent); font-size: 115%; word-wrap: normal; } .miniboss-box .portable-infobox { box-shadow: 3px 3px 6px var(--content-border-color); } .portable-infobox .pi-image { padding: 8px; } .pi-image-thumbnail { max-width:100%; } .pi-section-navigation .pi-section-tab.pi-section-active, .pi-section-navigation .pi-section-tab.current, .pi-media-collection .pi-tab-link.current { background: var(--pi-secondary-background); color: var(--pi-secondary-background-label); } .mw-body .portable-infobox h2, .mw-body .portable-infobox h3 { text-shadow: 0 0 5px var(--color-progressive); border-bottom: 0; font-family: var(--heading-font-family); font-weight: 550; margin: 0; word-wrap: normal; } .mw-body .portable-infobox { border-radius:5px; border-image-source: var(--border-image-base); border-image-slice: 15 16; border-image-width: 15px; border-image-repeat: stretch; } .mw-body .portable-infobox h3 { font-size: 80%; font-weight: 500; } /***************************** * End PortableInfoboxes * ******************************/ /** as of Module:navbox version 1.2.2 **/ /********************************************************************************************************************* * Semantically-correct horizontal lists (for Module:Navbox, and they're more machine-readable than {{*}}-formatting) * **********************************************************************************************************************/ .hlist dl, .hlist ol, .hlist ul { margin: 0; padding: 0; } /* Display list items inline */ .hlist dd, .hlist dt, .hlist li { /* * don't trust the note that says margin doesn't work with inline * removing margin: 0 makes dds have margins again * We also want to reset margin-right in Minerva */ margin: 0; display: inline; } /* Display requested top-level lists inline */ .hlist.inline, .hlist.inline dl, .hlist.inline ol, .hlist.inline ul, /* Display nested lists inline */ .hlist dl dl, .hlist dl ol, .hlist dl ul, .hlist ol dl, .hlist ol ol, .hlist ol ul, .hlist ul dl, .hlist ul ol, .hlist ul ul { display: inline; } /* Hide empty list items */ .hlist .mw-empty-li { display: none; } /* TODO: :not() can maybe be used here to remove the later rule. naive test * seems to work. more testing needed. like so: */ .hlist dt:not(:last-child)::after { content: ":\20"; } .hlist dd:not(:last-child)::after, .hlist li:not(:last-child)::after { /* "space, Middle Dot, space" We use unicode numbers instead of the raw characters due to a Firefox encoding bug on unicode characters. The space is also encoded because raw spaces combined with a unicode number strips the spaces under some conditions such as single-line lists */ /* content: "\20\00B7\20"; font-weight: bold; */ /* "space   •   space" There may (and likely) be an extra whitespace between <li>s, therefore we have to use a space character as last character of this sequence. By this way, the last space and the next whitespce will collapse as a single space, to make the whitespace on both sides of the middle dot the same width. */ content: "\20\A0\2022\A0\20"; font-weight: inherit; } /* Add parentheses around nested lists */ .hlist dd ol::before, .hlist dd ul::before, .hlist dd dl::before, .hlist dt ol::before, .hlist dt ul::before, .hlist dt dl::before, .hlist li ol::before, .hlist li ul::before, .hlist li dl::before { content: "\20("; font-weight: inherit; } .hlist dd ol::after, .hlist dd ul::after, .hlist dd dl::after, .hlist dt ol::after, .hlist dt ul::after, .hlist dt dl::after, .hlist li ol::after, .hlist li ul::after, .hlist li dl::after { content: ")"; font-weight: inherit; } /* Put ordinals in front of ordered list items */ .hlist ol { counter-reset: listitem; } .hlist ol > li { counter-increment: listitem; } .hlist ol > li::before { content: " " counter(listitem) ".\20"; } /* Progressive enhancement: * try to make the dot always follow the list item in same line */ .hlist :is(li,dt,dd):not(:has(:is(li,dt,dd))){ display: inline-block; } /******************************************** * End semantically-correct horizontal lists * *********************************************/ /********************************************************** * Template:Navbox (RANGER) (needs semantic horizontal lists above) * ***********************************************************/ .ranger-navbox{ --navbox-background: none; --navbox-margin: 0.5em auto; --navbox-padding: 4px; --navbox-gap: 3px; --navbox-outer-border-color: color-mix(in srgb, var(--color-progressive) 50%, transparent); --navbox-outer-border-width: 1px; --navbox-outer-border-style: solid; --navbox-outer-border-radius: 0px; --navbox-font-size: calc(1em - 2px); --navbox-title-color: var(--content-link-label-color); --navbox-title-font-size: calc(125%); --navbox-title-background: var(--color-progressive); --navbox-title-icon-color: var(--content-link-label-color); --navbox-title-link-color: var(--navbox-title-color); --navbox-title-link-color--visited: var(--navbox-title-link-color); --navbox-title-link-color--hover: var(--accent-link-color); --navbox-title-redlink-color: var(--navbox-title-link-color); --navbox-title-link-decoration: underline solid; --navbox-title-redlink-decoration: underline wavy; --navbox-title-padding--y: 0.5em; --navbox-above-background: color-mix(in srgb, var(--color-base) 15%, transparent); --navbox-above-color: var(--color-base); --navbox-above-padding: var(--navbox-list-padding); --navbox-below-background: var(--navbox-above-background); --navbox-below-color: var(--navbox-above-color); --navbox-below-padding: var(--navbox-above-padding); --navbox-header-color: var(--navbox-title-color); --navbox-header-font-size: calc(110%); --navbox-header-background: var(--navbox-title-background); --navbox-header-icon-color: var(--navbox-title-icon-color); --navbox-header-link-color: var(--navbox-title-link-color); --navbox-header-link-color--visited: var(--navbox-title-link-color--visited); --navbox-header-link-color--hover: var(--navbox-title-link-color--hover); --navbox-header-redlink-color: var(--navbox-title-redlink-color); --navbox-header-link-decoration: var(--navbox-title-link-decoration); --navbox-header-redlink-decoration: var(--navbox-title-redlink-decoration); --navbox-header-padding--y: 0.3em; --navbox-subheader-font-size: calc(100%); --navbox-subheader-padding--y: calc(var(--navbox-header-padding--y)/2); --navbox-list-background: color-mix(in srgb, var(--color-base) 5%, transparent); --navbox-list-background--striped: color-mix(in srgb, var(--color-base) 8%, transparent); --navbox-list-color: var(--color-base); --navbox-list-padding: 0.25em 0.5em; --navbox-group-text-align: left; --navbox-group-text-align--mobile: left; --navbox-group-background: color-mix(in srgb, var(--color-progressive) 20%, transparent); --navbox-group-color: var(--color-base); --navbox-group-padding: var(--navbox-list-padding); --navbox-tree-line-color: color-mix(in srgb, var(--color-progressive) 30%, transparent); --navbox-tree-line-width: 2px; --navbox-tree-indent: 1em; --navbox-tree-line-indent: 0.5em; --navbox-tree-line-spacing: var(--navbox-gap); --icon-chevron-up: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='icon icon-tabler icon-tabler-chevron-up' width='24' height='24' viewBox='0 0 24 24' stroke-width='2' stroke='currentColor' fill='none' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath stroke='none' d='M0 0h24v24H0z' fill='none'%3E%3C/path%3E%3Cpath d='M6 15l6 -6l6 6'%3E%3C/path%3E%3C/svg%3E"); --icon-chevron-down: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='icon icon-tabler icon-tabler-chevron-down' width='24' height='24' viewBox='0 0 24 24' stroke-width='2' stroke='currentColor' fill='none' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath stroke='none' d='M0 0h24v24H0z' fill='none'%3E%3C/path%3E%3Cpath d='M6 9l6 6l6 -6'%3E%3C/path%3E%3C/svg%3E"); --icon-metalinks: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='icon icon-tabler icon-tabler-edit' width='24' height='24' viewBox='0 0 24 24' stroke-width='2' stroke='currentColor' fill='none' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath stroke='none' d='M0 0h24v24H0z' fill='none'%3E%3C/path%3E%3Cpath d='M7 7h-1a2 2 0 0 0 -2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2 -2v-1'%3E%3C/path%3E%3Cpath d='M20.385 6.585a2.1 2.1 0 0 0 -2.97 -2.97l-8.415 8.385v3h3l8.385 -8.415z'%3E%3C/path%3E%3Cpath d='M16 5l3 3'%3E%3C/path%3E%3C/svg%3E"); --navbox-icon-offset--x: 0.5rem; /* should be an absolute length (rem-based or px-based) */ } .ranger-navbox.pill, .ranger-navbox.pill-mobile{ --navbox-pill-gap: 0.3em; --navbox-pill-padding: 0.25em 0.75em; --navbox-pill-border-radius: 3px; --navbox-pill-box-shadow: none; --navbox-pill-background: color-mix(in srgb, var(--color-base) 5%, transparent); --navbox-pill-box-shadow--hover: inset 0 0 3px var(--navbox-list-color); --navbox-pill-background--hover: var(--navbox-pill-background); --navbox-list-background: none; --navbox-list-background--striped: color-mix(in srgb, var(--color-base) 3%, transparent); } .ranger-navbox.no-underline-title-links{ --navbox-title-link-color: var(--accent-link-color); --navbox-title-link-decoration: none; --navbox-title-redlink-decoration: none; } .ranger-navbox.noborder, .ranger-navbox.no-border{ --navbox-padding: 0px; --navbox-outer-border-width: 0px; } /****************************** * Fallback for older browsers * *******************************/ @supports not (color:color-mix(in srgb, #000, transparent)) { .ranger-navbox { --navbox-above-background: var(--background-color-neutral-subtle); --navbox-list-background: transparent; --navbox-list-background--striped: var(--background-color-neutral-subtle); --navbox-group-background: var(--background-color-neutral-subtle); --navbox-tree-line-color: var(--background-color-neutral-subtle); } .ranger-navbox.pill, .ranger-navbox.pill-mobile { --navbox-pill-background: var(--background-color-neutral-subtle); --navbox-list-background--striped: transparent; } } /*************** * End fallback * ****************/ .ranger-navbox{ border-color: var(--navbox-outer-border-color); border-style: var(--navbox-outer-border-style); border-width: var(--navbox-outer-border-width); border-radius: var(--navbox-outer-border-radius); padding: var(--navbox-padding); font-size: var(--navbox-font-size); margin: var(--navbox-margin); background: var(--navbox-background); line-height: 1.5; clear:both; } .ranger-navbox * { border: 0; } .ranger-navbox .center *{ margin-left: unset; margin-right: unset; } .ranger-navbox, .ranger-navbox .ranger-section, .ranger-navbox .ranger-listbox{ display: flex; flex-direction: column; gap: var(--navbox-gap); } .ranger-navbox .ranger-title, .ranger-navbox .ranger-header{ text-align: center; min-height: 1.5em; position: relative; z-index: 0; font-weight: bold; } .ranger-navbox .ranger-title{ color: var(--navbox-title-color); background: var(--navbox-title-background); font-size: var(--navbox-title-font-size); padding: var(--navbox-title-padding--y) calc(1.5em + var(--navbox-icon-offset--x)); /* left and right padding equal to the size and position of the edit/collapse buttons */ } .ranger-navbox .ranger-title a, .ranger-navbox .ranger-title a:visited, .ranger-navbox .ranger-title a:hover, .ranger-navbox .ranger-title a.external, .ranger-navbox .ranger-title a.external:visited, .ranger-navbox .ranger-title a.external:hover { text-decoration: var(--navbox-title-link-decoration); } .ranger-navbox .ranger-title a.new, .ranger-navbox .ranger-title a.new:visited { text-decoration: var(--navbox-title-redlink-decoration); } .ranger-navbox .ranger-title a, .ranger-navbox .ranger-title a.external, .ranger-navbox .ranger-title a.external:visited { color: var(--navbox-title-link-color); } .ranger-navbox .ranger-title a:visited{ color: var(--navbox-title-link-color--visited); } .ranger-navbox .ranger-title a.new, .ranger-navbox .ranger-title a.new:visited{ color:var(--navbox-title-redlink-color); } .ranger-navbox .ranger-title a:hover, .ranger-navbox .ranger-title a:visited:hover, .ranger-navbox .ranger-title a.external:hover, .ranger-navbox .ranger-title a.external:visited:hover { color:var(--navbox-title-link-color--hover); } .ranger-navbox .ranger-header{ color: var(--navbox-header-color); background: var(--navbox-header-background); font-size: var(--navbox-header-font-size); padding: var(--navbox-header-padding--y) calc(1.5em + var(--navbox-icon-offset--x)); /* left and right padding equal to the size and position of the edit/collapse buttons */ } .ranger-navbox .ranger-sublist .ranger-header{ font-size: var(--navbox-subheader-font-size); padding: var(--navbox-subheader-padding--y) calc(1.5em + var(--navbox-icon-offset--x)); /* left and right padding equal to the size and position of the edit/collapse buttons */ } .ranger-navbox .ranger-header a, .ranger-navbox .ranger-header a:visited, .ranger-navbox .ranger-header a:hover, .ranger-navbox .ranger-header a.external, .ranger-navbox .ranger-header a.external:visited, .ranger-navbox .ranger-header a.external:hover { text-decoration: var(--navbox-header-link-decoration); } .ranger-navbox .ranger-header a.new, .ranger-navbox .ranger-header a.new:visited { text-decoration: var(--navbox-header-redlink-decoration); } .ranger-navbox .ranger-header a, .ranger-navbox .ranger-header a.external, .ranger-navbox .ranger-header a.external:visited { color: var(--navbox-header-link-color); } .ranger-navbox .ranger-header a:visited{ color: var(--navbox-header-link-color--visited); } .ranger-navbox .ranger-header a.new, .ranger-navbox .ranger-header a.new:visited{ color:var(--navbox-header-redlink-color); } .ranger-navbox .ranger-header a:hover, .ranger-navbox .ranger-header a:visited:hover, .ranger-navbox .ranger-header a.external:hover, .ranger-navbox .ranger-header a.external:visited:hover { color:var(--navbox-header-link-color--hover); } .ranger-navbox .ranger-meta{ font-size: var(--navbox-title-font-size); position: absolute; left: var(--navbox-icon-offset--x); top: calc(var(--navbox-title-padding--y) + 0.08em); /* 0.08em: vertial offset tweak based on the icon graph */ display: block; } .ranger-navbox .ranger-meta .nv{ --mask: var(--icon-metalinks); display: block; width: 0.84em; /* based on the icon graph */ height: 0.84em; -webkit-mask: var(--mask); mask: var(--mask); -webkit-mask-size: 100% 100%; mask-size: 100% 100%; -webkit-mask-position: center center; mask-position: center center; background-color: var(--navbox-title-icon-color); } .ranger-navbox .ranger-meta .nv > a{ display: block; width: 100%; height: 100%; opacity: 0; } .ranger-navbox .ranger-meta .nv > a > span{ display: block; width: 100%; height: 100%; overflow: hidden; } .ranger-navbox .ranger-meta:has(.mw-selflink){ display: none; } .ranger-navbox, .ranger-navbox .ranger-section{ position: relative; } .ranger .mw-collapsible-toggle-placeholder{ display: none; } .ranger-navbox .ranger-title > .ranger-title-text, .ranger-navbox .ranger-header > .ranger-header-text{ pointer-events: none; } .ranger-navbox .ranger-title > .ranger-title-text a, .ranger-navbox .ranger-header > .ranger-header-text a{ pointer-events: auto; } .ranger-navbox .ranger-title > .mw-collapsible-toggle, .ranger-navbox .ranger-header > .mw-collapsible-toggle{ --mask: var(--icon-chevron-down); position: absolute; right: 0; top: 0; z-index: -1; display: block; width: 100%; height: 100%; overflow:hidden; } .ranger-navbox.small-collapsible-toggle-click-area .ranger-title > .mw-collapsible-toggle, .ranger-navbox.small-collapsible-toggle-click-area .ranger-header > .mw-collapsible-toggle{ width: 1.5em; height: 1.5em; right: var(--navbox-icon-offset--x); } .ranger-navbox.small-collapsible-toggle-click-area .ranger-title > .mw-collapsible-toggle{ top: var(--navbox-title-padding--y); } .ranger-navbox.small-collapsible-toggle-click-area .ranger-header > .mw-collapsible-toggle{ top: var(--navbox-header-padding--y); } .ranger-navbox.small-collapsible-toggle-click-area .ranger-sublist .ranger-header > .mw-collapsible-toggle{ top: var(--navbox-subheader-padding--y); } .ranger-navbox .ranger-title > .mw-collapsible-toggle::before, .ranger-navbox .ranger-header > .mw-collapsible-toggle::before{ content: ""; display: block; width: 1.5em; height: 1.5em; position: absolute; right: var(--navbox-icon-offset--x); -webkit-mask: var(--mask); mask: var(--mask); -webkit-mask-size: 100% 100%; mask-size: 100% 100%; -webkit-mask-position: center center; mask-position: center center; background-color: var(--navbox-title-icon-color); transform: scaleY(-1); } .ranger-navbox .ranger-title > .mw-collapsible-toggle::before{ top: var(--navbox-title-padding--y); } .ranger-navbox .ranger-header > .mw-collapsible-toggle::before{ top: var(--navbox-header-padding--y); } .ranger-navbox .ranger-sublist .ranger-header > .mw-collapsible-toggle::before{ top: var(--navbox-subheader-padding--y); } .ranger-navbox.small-collapsible-toggle-click-area .ranger-title > .mw-collapsible-toggle::before, .ranger-navbox.small-collapsible-toggle-click-area .ranger-header > .mw-collapsible-toggle::before{ top: 0; right: 0; } .ranger-navbox .ranger-header > .mw-collapsible-toggle::before{ background-color: var(--navbox-header-icon-color); } .ranger-navbox .ranger-title > .mw-collapsible-toggle.mw-collapsible-toggle-collapsed::before, .ranger-navbox .ranger-header > .mw-collapsible-toggle.mw-collapsible-toggle-collapsed::before{ transform: none; } .ranger-navbox .ranger-title > .mw-collapsible-toggle *, .ranger-navbox .ranger-title > .mw-collapsible-toggle::after, .ranger-navbox .ranger-header > .mw-collapsible-toggle *, .ranger-navbox .ranger-header > .mw-collapsible-toggle::after{ display: none; } .ranger-navbox .ranger-list{ width: unset; padding: var(--navbox-list-padding); } .ranger-navbox .ranger-above{ background: var(--navbox-above-background); color: var(--navbox-above-color); padding: var(--navbox-above-padding); width: unset; } .ranger-navbox .ranger-below{ background: var(--navbox-below-background); color: var(--navbox-below-color); padding: var(--navbox-below-padding); width: unset; } .ranger-navbox .ranger-sublist{ display: flex; flex-direction: column; gap: var(--navbox-gap); } .ranger-navbox .ranger-section-body{ display: grid; gap: var(--navbox-gap); grid-template-columns: auto minmax(0,1fr); } /* gap fix for collapsed content */ .ranger-navbox [class^="ranger-"][hidden="until-found"]{ margin-top: calc(0px - var(--navbox-gap)) !important; } .ranger-navbox .ranger-row{ display: contents; } .ranger-navbox .ranger-group, .ranger-navbox .ranger-subgroup{ text-align: var(--navbox-group-text-align); white-space: nowrap; font-weight: bold; background: var(--navbox-group-background); color: var(--navbox-group-color); padding: var(--navbox-group-padding); width: unset; } /* for desktop view */ .ranger-navbox.group-align-left .ranger-group, .ranger-navbox.group-align-left .ranger-subgroup{ --navbox-group-text-align: left; } .ranger-navbox.group-align-center .ranger-group, .ranger-navbox.group-align-center .ranger-subgroup{ --navbox-group-text-align: center; } .ranger-navbox.group-align-right .ranger-group, .ranger-navbox.group-align-right .ranger-subgroup{ --navbox-group-text-align: right; } /* for mobile view */ .ranger-navbox.mobile-group-align-left .ranger-group, .ranger-navbox.mobile-group-align-left .ranger-subgroup{ --navbox-group-text-align--mobile: left; } .ranger-navbox.mobile-group-align-center .ranger-group, .ranger-navbox.mobile-group-align-center .ranger-subgroup{ --navbox-group-text-align--mobile: center; } .ranger-navbox.mobile-group-align-right .ranger-group, .ranger-navbox.mobile-group-align-right .ranger-subgroup{ --navbox-group-text-align--mobile: right; } .ranger-navbox .ranger-listbox > .ranger-wrap{ background: var(--navbox-list-background); color: var(--navbox-list-color); flex-grow: 1; } .ranger-navbox .ranger-sublist{ flex-grow: var(--count); } .ranger-navbox .ranger-listbox:first-child{ /* A list-n without group-n */ grid-column-end: span 2; } .ranger-navbox .ranger-group, .ranger-navbox .ranger-subgroup, .ranger-navbox .ranger-listbox > .ranger-wrap{ display: grid; justify-items: stretch; align-items: center; } .ranger-navbox.striped-even .ranger-even, .ranger-navbox.striped-odd .ranger-odd{ background: var(--navbox-list-background--striped); } /* make links use full line height (larger click box)*/ .ranger-navbox .hlist a{ display: inline-block; } .ranger-navbox .align-left, .ranger-navbox .alignleft{ text-align: left; } .ranger-navbox .align-center, .ranger-navbox .aligncenter{ text-align: center; } .ranger-navbox .align-right, .ranger-navbox .alignright{ text-align: right; } /* responsive */ @media screen and (max-width: 720px) { .ranger-navbox .ranger-section-body, .ranger-navbox .ranger-sublist { display: flex; flex-flow: column; } .ranger-navbox .ranger-row{ display: block; } .ranger-navbox .ranger-group + .ranger-listbox > .ranger-sublist:first-child, .ranger-navbox .ranger-subgroup + .ranger-listbox > .ranger-sublist:first-child{ margin-top: var(--navbox-gap); } .ranger-navbox .ranger-listbox.empty{ display: none; } .ranger-navbox .ranger-group, .ranger-navbox .ranger-subgroup{ text-align: var(--navbox-group-text-align--mobile); white-space: normal; } .ranger-navbox .ranger-sublist { padding-left: var(--navbox-tree-indent); margin-left: var(--navbox-tree-line-indent); } .ranger-navbox .ranger-subgroup, .ranger-navbox .ranger-listbox { position:relative; } .ranger-navbox .ranger-group br, .ranger-navbox .ranger-subgroup br{ display: none; } .ranger-navbox .ranger-sublist > .ranger-section > .ranger-header{ margin-left: calc( 0px - var(--navbox-tree-indent) - var(--navbox-tree-line-indent)); } .ranger-navbox .ranger-sublist .ranger-row > ::before{ position: absolute; left: calc(0px - var(--navbox-tree-indent)); top: 0; width: var(--navbox-tree-line-width); height: 100%; content: ''; display: block; background-color: var(--navbox-tree-line-color); } .ranger-navbox .ranger-sublist .ranger-row > .ranger-listbox::before, .ranger-navbox .ranger-row.empty-list > .ranger-subgroup::before{ height: calc(100% + var(--navbox-gap)); } .ranger-navbox .ranger-sublist .ranger-row:last-child > ::before { display: none; } .ranger-navbox .ranger-sublist .ranger-row:last-child > :first-child::before { display: block; height: calc(50% + var(--navbox-tree-line-width)/2); } .ranger-navbox .ranger-subgroup::after, .ranger-navbox .empty-group > .ranger-listbox > .ranger-wrap::after{ position: absolute; left: calc(0px - var(--navbox-tree-indent) + var(--navbox-tree-line-width)); width: calc(var(--navbox-tree-indent) - var(--navbox-tree-line-spacing) - var(--navbox-tree-line-width)); height: var(--navbox-tree-line-width); content: ''; background-color: var(--navbox-tree-line-color); } /* increase height for links */ .ranger-navbox .hlist{ line-height: 2; } } /**** `.pill` class: the "pill" style ****/ /* remove middle dots betweem items */ .ranger-navbox.pill .hlist dd:not(:last-child)::after, .ranger-navbox.pill .hlist li:not(:last-child)::after{ display: none; } /* remove parentheses around nested lists*/ .ranger-navbox.pill .hlist dd ol::before, .ranger-navbox.pill .hlist dd ul::before, .ranger-navbox.pill .hlist dd dl::before, .ranger-navbox.pill .hlist dt ol::before, .ranger-navbox.pill .hlist dt ul::before, .ranger-navbox.pill .hlist dt dl::before, .ranger-navbox.pill .hlist li ol::before, .ranger-navbox.pill .hlist li ul::before, .ranger-navbox.pill .hlist li dl::before, .ranger-navbox.pill .hlist dd ol::after, .ranger-navbox.pill .hlist dd ul::after, .ranger-navbox.pill .hlist dd dl::after, .ranger-navbox.pill .hlist dt ol::after, .ranger-navbox.pill .hlist dt ul::after, .ranger-navbox.pill .hlist dt dl::after, .ranger-navbox.pill .hlist li ol::after, .ranger-navbox.pill .hlist li ul::after, .ranger-navbox.pill .hlist li dl::after { display: none; } /* make lists inline-flex */ .ranger-navbox.pill .hlist ul, .ranger-navbox.pill .hlist ol, .ranger-navbox.pill .hlist dl{ display: inline-flex; gap: var(--navbox-pill-gap); flex-wrap: wrap; } /* "pill" style for items */ .ranger-navbox.pill .hlist li, .ranger-navbox.pill .hlist dt, .ranger-navbox.pill .hlist dd{ padding: var(--navbox-pill-padding); border-radius: var(--navbox-pill-border-radius); box-shadow: var(--navbox-pill-box-shadow); background: var(--navbox-pill-background); /* 100% height */ display: flex; align-items: center; /* for nested lists */ gap: var(--navbox-pill-gap); flex-wrap: wrap; } /* Add a hover / focus feedback style */ .ranger-navbox.pill .hlist dd:hover, .ranger-navbox.pill .hlist dd:focus, .ranger-navbox.pill .hlist dt:hover, .ranger-navbox.pill .hlist dt:focus, .ranger-navbox.pill .hlist li:hover, .ranger-navbox.pill .hlist li:focus { box-shadow: var(--navbox-pill-box-shadow--hover); background: var(--navbox-pill-background--hover); } /**** `.pill-mobile` class: only apply the "pill" style on mobile ****/ @media screen and (max-width: 720px) { /* remove middle dots betweem items */ .ranger-navbox.pill-mobile .hlist dd:not(:last-child)::after, .ranger-navbox.pill-mobile .hlist li:not(:last-child)::after{ display: none; } /* remove parentheses around nested lists*/ .ranger-navbox.pill-mobile .hlist dd ol::before, .ranger-navbox.pill-mobile .hlist dd ul::before, .ranger-navbox.pill-mobile .hlist dd dl::before, .ranger-navbox.pill-mobile .hlist dt ol::before, .ranger-navbox.pill-mobile .hlist dt ul::before, .ranger-navbox.pill-mobile .hlist dt dl::before, .ranger-navbox.pill-mobile .hlist li ol::before, .ranger-navbox.pill-mobile .hlist li ul::before, .ranger-navbox.pill-mobile .hlist li dl::before, .ranger-navbox.pill-mobile .hlist dd ol::after, .ranger-navbox.pill-mobile .hlist dd ul::after, .ranger-navbox.pill-mobile .hlist dd dl::after, .ranger-navbox.pill-mobile .hlist dt ol::after, .ranger-navbox.pill-mobile .hlist dt ul::after, .ranger-navbox.pill-mobile .hlist dt dl::after, .ranger-navbox.pill-mobile .hlist li ol::after, .ranger-navbox.pill-mobile .hlist li ul::after, .ranger-navbox.pill-mobile .hlist li dl::after { display: none; } /* make lists inline-flex */ .ranger-navbox.pill-mobile .hlist ul, .ranger-navbox.pill-mobile .hlist ol, .ranger-navbox.pill-mobile .hlist dl{ display: inline-flex; gap: var(--navbox-pill-gap); flex-wrap: wrap; } .ranger-navbox.pill-mobile .hlist li, .ranger-navbox.pill-mobile .hlist dt, .ranger-navbox.pill-mobile .hlist dd{ padding: var(--navbox-pill-padding); border-radius: var(--navbox-pill-border-radius); box-shadow: var(--navbox-pill-box-shadow); background: var(--navbox-pill-background); display: flex; align-items: center; gap: var(--navbox-pill-gap); flex-wrap: wrap; } /* Add a hover / focus feedback style */ .ranger-navbox.pill-mobile .hlist dd:hover, .ranger-navbox.pill-mobile .hlist dd:focus, .ranger-navbox.pill-mobile .hlist dt:hover, .ranger-navbox.pill-mobile .hlist dt:focus, .ranger-navbox.pill-mobile .hlist li:hover, .ranger-navbox.pill-mobile .hlist li:focus { box-shadow: var(--navbox-pill-box-shadow--hover); background: var(--navbox-pill-background--hover); } } /********************* * End Template:Navbox* **********************/ .mp-box { display:flex; flex-flow:column nowrap; width: calc(100% - 2px); box-sizing: border-box; background: linear-gradient(135deg, rgba(66, 162, 241, 0.12) 0%, transparent 35%, rgba(76, 87, 181, 0.1) 65%, rgba(66, 162, 241, 0.12) 100%), radial-gradient(ellipse at top left, rgba(66, 162, 241, 0.15), transparent 50%), radial-gradient(ellipse at bottom right, rgba(76, 87, 181, 0.12), transparent 50%), var(--background-color-transparent); padding:0; box-shadow: 0 0 50px 10px rgba(66, 162, 241, 0.2), 0 0 80px 15px rgba(0, 0, 0, 0.8), inset 0 0 80px 15px rgba(66, 162, 241, 0.08), 0 0 0 1px rgba(66, 162, 241, 0.3), inset 0 0 0 1px rgba(66, 162, 241, 0.2); margin-top: 1em; border-radius: 6px; position: relative; overflow: hidden; } .mp-box::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 3px; background: linear-gradient(90deg, transparent, rgba(66, 162, 241, 0.6) 15%, rgba(66, 162, 241, 1) 50%, rgba(66, 162, 241, 0.6) 85%, transparent); box-shadow: 0 0 15px rgba(66, 162, 241, 0.8), 0 0 25px rgba(66, 162, 241, 0.5); } .mp-box::after { content: ''; position: absolute; bottom: 0; left: 0; right: 0; height: 2px; background: linear-gradient(90deg, transparent, rgba(66, 162, 241, 0.4) 20%, rgba(66, 162, 241, 0.7) 50%, rgba(66, 162, 241, 0.4) 80%, transparent); box-shadow: 0 0 10px rgba(66, 162, 241, 0.6); } .mp-body { height: 100%; display: flex; padding:0.5em; flex-flow: column nowrap; } .mp-box.centered-content .mp-body { height: 100%; display: flex; flex-flow: column nowrap; justify-content: space-evenly; } .mp-box.has-floating-image { display:block; } .mp-box.has-floating-image .mp-body { height:unset; display:block; } .mp-box h2 { text-align:center; font-weight:bold; font-family: "Daedalus"; overflow: initial; font-size: 4em; margin: 0.5em 0; padding: 0.5em 0; text-shadow: 0 0 30px rgba(66, 162, 241, 0.8), 0 0 15px rgba(66, 162, 241, 0.6), 0 2px 5px rgba(0, 0, 0, 0.8); color:var(--content-border-color); background: linear-gradient(90deg, transparent 0%, rgba(66, 162, 241, 0.08) 50%, transparent 100%), radial-gradient(ellipse at center, rgba(26, 26, 34, 0.6), transparent 70%); border-radius: 8px; position: relative; } .mp-box h2::after { content: ''; position: absolute; left: 10%; right: 10%; bottom: 0; height: 1px; background: linear-gradient(90deg, transparent, rgba(66, 162, 241, 0.3) 30%, rgba(66, 162, 241, 0.5) 50%, rgba(66, 162, 241, 0.3) 70%, transparent); } .mp-box .welcome-message { font-size: 5.5em; margin: 0; padding: 0.4em 0; color: #fff; font-family: "Daedalus"; text-shadow: 0 0 50px rgba(66, 162, 241, 1), 0 0 35px rgba(66, 162, 241, 0.9), 0 0 20px rgba(66, 162, 241, 0.7), 0 0 10px rgba(255, 255, 255, 0.8), 0 6px 12px rgba(0, 0, 0, 1), 0 0 80px rgba(66, 162, 241, 0.6); letter-spacing: 0.08em; position: relative; animation: welcome-pulse 4s ease-in-out infinite; background: linear-gradient(90deg, transparent 0%, rgba(66, 162, 241, 0.05) 30%, rgba(66, 162, 241, 0.08) 50%, rgba(66, 162, 241, 0.05) 70%, transparent 100%); padding: 0.5em 1em; border-radius: 8px; } .mp-box .welcome-message::before { content: ''; position: absolute; top: 0; left: 5%; right: 5%; height: 2px; background: linear-gradient(90deg, transparent, rgba(66, 162, 241, 0.6) 20%, rgba(255, 255, 255, 0.8) 50%, rgba(66, 162, 241, 0.6) 80%, transparent); box-shadow: 0 0 15px rgba(66, 162, 241, 1), 0 0 25px rgba(66, 162, 241, 0.6); } .mp-box .welcome-message::after { content: ''; position: absolute; bottom: 0; left: 5%; right: 5%; height: 2px; background: linear-gradient(90deg, transparent, rgba(66, 162, 241, 0.5) 20%, rgba(255, 255, 255, 0.6) 50%, rgba(66, 162, 241, 0.5) 80%, transparent); box-shadow: 0 0 12px rgba(66, 162, 241, 0.8), 0 0 20px rgba(66, 162, 241, 0.5); } @keyframes welcome-pulse { 0%, 100% { text-shadow: 0 0 50px rgba(66, 162, 241, 1), 0 0 35px rgba(66, 162, 241, 0.9), 0 0 20px rgba(66, 162, 241, 0.7), 0 0 10px rgba(255, 255, 255, 0.8), 0 6px 12px rgba(0, 0, 0, 1), 0 0 80px rgba(66, 162, 241, 0.6); } 50% { text-shadow: 0 0 65px rgba(66, 162, 241, 1), 0 0 45px rgba(66, 162, 241, 1), 0 0 30px rgba(66, 162, 241, 0.8), 0 0 15px rgba(255, 255, 255, 1), 0 6px 12px rgba(0, 0, 0, 1), 0 0 100px rgba(66, 162, 241, 0.8); } } #mp-banner-container { position: relative; } #mp-box-welcome { text-align:center; position:relative; overflow:hidden; background: linear-gradient(135deg, rgba(66, 162, 241, 0.15) 0%, transparent 30%, rgba(76, 87, 181, 0.12) 70%, rgba(66, 162, 241, 0.15) 100%), radial-gradient(ellipse at center, rgba(66, 162, 241, 0.18), transparent 60%), var(--background-color-transparent); box-shadow: 0 0 60px 12px rgba(66, 162, 241, 0.25), 0 0 100px 20px rgba(0, 0, 0, 0.8), inset 0 0 100px 20px rgba(66, 162, 241, 0.1), 0 0 0 1px rgba(66, 162, 241, 0.4), inset 0 0 0 1px rgba(66, 162, 241, 0.3); } #mp-welcome { display:flex; flex-flow:column nowrap; position: relative; height: 100%; font-family: var(--heading-font-family); z-index: 2; box-sizing: border-box; padding: 1em; } #mp-welcome .welcome-subtitle { height: 100%; font-family: var(--body-font-family); background: linear-gradient(135deg, rgba(66, 162, 241, 0.08), transparent 50%, rgba(76, 87, 181, 0.08)), color-mix(in srgb, var(--background-color-base) 85%, transparent); margin-left: 4px; margin-right: 4px; margin-bottom: 4px; padding: 1em; border-radius: 4px; box-shadow: inset 0 0 20px 3px rgba(66, 162, 241, 0.1), 0 2px 8px rgba(0, 0, 0, 0.4); border: 1px solid rgba(66, 162, 241, 0.2); } #mp-banner { position: absolute; width: 100%; height: 100%; filter: blur(5px); z-index: -1; background: url(/images/e/e0/MP_banner.jpg); background-size: cover; background-repeat: no-repeat; background-position: top center; } .view-dark #mp-banner { filter: blur(5px) brightness(50%); } .view-light #mp-banner { filter: blur(5px) contrast(50%); } /* [[Template:MP_link]] */ .mp-links { --gap:10px; font-size: 1.5em; } .mp-links > ul { display: flex; flex-flow: row wrap; justify-content: space-evenly; margin: 2px; gap:var(--gap); } .mp-main > .mp-links > ul { display: grid; grid-template-columns: repeat(3, minmax(5em, 1fr)); } @media screen and (max-width: 720px) { .mp-main > .mp-links > ul { grid-template-columns: 1fr; gap: 1em; } .mp-main > .mp-links > ul > li { margin: 0 0.5em; } } .mp-links > ul > li { display:flex; flex-flow:column nowrap; align-items:stretch; text-align: center; box-sizing:border-box; padding-top: 0.5em; border-image-source: url("/wiki/Special:Redirect/file/Wiki-border-kurva.png"); border-image-slice: 6; border-image-width: 6px; border-image-repeat: repeat repeat; } .mp-main > .mp-links > ul > li { background: linear-gradient(135deg, #42a2f125 0%, transparent 50%, #4c57b525 100%), linear-gradient(to bottom, #42a2f140, #4c57b550, #42a2f130); margin: 0 3em; box-shadow: inset 0 0 15px 3px #42a2f160, inset 0 -2px 8px 0 #4c57b540, 0 2px 12px 0 rgba(66, 162, 241, 0.2), inset 2px 0 2px -1px rgba(255, 255, 255, 0.15), inset -2px 0 2px -1px rgba(255, 255, 255, 0.15); border: 1px solid rgba(66, 162, 241, 0.3); border-radius: 4px; padding-top: 1em; padding-bottom: 0.5em; position: relative; overflow: hidden; } .mp-main > .mp-links > ul > li::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 2px; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.4), transparent); animation: tech-shimmer 3s infinite; } @keyframes tech-shimmer { 0% { left: -100%; } 100% { left: 100%; } } .mp-main > .mp-links > ul > li:hover { background: linear-gradient(135deg, #42a2f140 0%, transparent 50%, #4c57b540 100%), linear-gradient(to bottom, #42a2f155, #4c57b565, #42a2f145); box-shadow: inset 0 0 20px 5px #42a2f180, inset 0 -2px 10px 0 #4c57b560, 0 4px 20px 2px rgba(66, 162, 241, 0.35), inset 2px 0 4px -1px rgba(255, 255, 255, 0.25), inset -2px 0 4px -1px rgba(255, 255, 255, 0.25); border-color: rgba(66, 162, 241, 0.5); } .mp-links > ul > li::before { transition: opacity 0.5s ease-in-out; z-index: 0; pointer-events: none; } .mp-links > ul > li:hover::before { opacity: 0.2; } .mp-links > ul > li:hover { background-color: #42a2f180; } .mp-links.columns-1 > ul > li {flex: max(calc(100% - var(--gap)), 5em) 1 1;} .mp-links.columns-2 > ul > li {flex: max(calc(50% - var(--gap)), 5em) 1 1;} .mp-links.columns-3 > ul > li {flex: max(calc((100% / 3) - var(--gap)), 5em) 1 1;} .mp-links.columns-4 > ul > li {flex: max(calc(25% - var(--gap)), 5em) 1 1;} .mp-links.columns-5 > ul > li {flex: max(calc(20% - var(--gap)), 5em) 1 1;} .mp-links.columns-6 > ul > li {flex: max(calc((100% / 6) - var(--gap)), 5em) 1 1;} .mp-links.columns-7 > ul > li {flex: max(calc((100% / 7) - var(--gap)), 5em) 1 1;} .mp-links > ul > li { cursor: pointer; } .mp-links > ul > li > a { display: flex; align-items: center; justify-content: center; height:100%; flex:1 1 auto; box-sizing:border-box; padding:5px; pointer-events: auto; } .mp-links > ul > li > a:first-child { height:100%; } .mp-links > ul > li > a:last-child:not(:first-child) { height:unset; } .mp-links.stretch, .mp-links.stretch > ul { height:100%; } .mp-links.side-image li { flex-flow:row nowrap; } /* MP icon lists */ .mp-iconlists { display: flex; flex-flow: wrap; gap: 5px 20px; } .mp-iconlists > .mp-iconlist { flex: 1; min-width: fit-content; } .mp-iconlist { font-size: 4em; } .mp-iconlist > h3 { padding: 0; margin: 0; } .mp-iconlist > ul { list-style: none; margin: 0; } /* MP gallery */ .mp-box ul.gallery { display: flex; flex-flow: wrap; gap: 5px 10px; align-items: flex-end; justify-content: space-evenly; margin: 0; } .mp-box ul.gallery .gallerytext { margin-top: 1em; padding: 0; background-color: var(--background-color-neutral-subtle); } .mp-box .gallerybox:hover .gallerytext { background-color: color-mix(in srgb, var(--content-link-color) 20%, transparent); } .mp-box ul.gallery .gallerytext > p { margin: 0; } .mp-box ul.gallery .gallerytext a { display: block; padding: .5em 0; } /*********************** * End main page layout * ************************/ /*********************** * Start DRUID infoboxes * ************************/ .druid-container { --druid-background-color: var(--background-color-base); --druid-secondary-background-color: var(--color-progressive); --druid-secondary-background-label-color: var(--content-link-label-color); --druid-tertiary-background-color: var(--background-color-neutral-subtle); --druid-border-color: var(--content-border-color); --druid-link-color: var(--content-link-color); --druid-link-label-color: var(--content-link-label-color); } .npc-infobox { border-radius:5px; border-image-source: url("/wiki/Special:Redirect/file/Wiki-border-kurva.png"); border-image-slice: 6; border-image-width: 6px; border-image-repeat: repeat; position: relative; background: linear-gradient(135deg, rgba(66, 162, 241, 0.05) 0%, transparent 40%, rgba(76, 87, 181, 0.05) 100%), radial-gradient(ellipse at top, rgba(66, 162, 241, 0.08), transparent 60%), var(--druid-background-color); box-shadow: 0 0 40px 8px rgba(66, 162, 241, 0.15), inset 0 0 60px 10px rgba(66, 162, 241, 0.05), 0 0 0 1px rgba(66, 162, 241, 0.2); overflow: hidden; } .npc-infobox::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 2px; background: linear-gradient(90deg, transparent, rgba(66, 162, 241, 0.4) 20%, rgba(66, 162, 241, 0.8) 50%, rgba(66, 162, 241, 0.4) 80%, transparent); box-shadow: 0 0 15px rgba(66, 162, 241, 0.8); animation: data-scan 3s linear infinite; } @keyframes data-scan { 0% { opacity: 0.5; } 50% { opacity: 1; } 100% { opacity: 0.5; } } .npc-infobox::after { content: ''; position: absolute; bottom: 0; left: 0; right: 0; height: 1px; background: linear-gradient(90deg, transparent, rgba(66, 162, 241, 0.3) 30%, rgba(66, 162, 241, 0.6) 50%, rgba(66, 162, 241, 0.3) 70%, transparent); } .druid-container { background: var(--druid-background-color); float: right; clear: right; margin: 0 0 1em 1em; padding: 0.5em; width:100%; max-width:26em; box-sizing: border-box; border-collapse: separate; } @media screen and (max-width: 720px) { .druid-container { float: none; margin: 0.5rem auto; } } .druid-main-images-file, .druid-main-image { text-align:center; } .druid-infobox .druid-title, .druid-infobox .druid-section { text-align:center; padding:1px; border-radius: 0.1em; } .npc-infobox .druid-title { background: linear-gradient(135deg, rgba(66, 162, 241, 0.25) 0%, rgba(76, 87, 181, 0.2) 40%, rgba(66, 162, 241, 0.15) 80%, rgba(66, 162, 241, 0.25) 100%), radial-gradient(ellipse at center, rgba(66, 162, 241, 0.2), transparent 70%), linear-gradient(90deg, color-mix(in srgb, var(--druid-secondary-background-color) 80%, transparent) 0%, color-mix(in srgb, var(--druid-secondary-background-color) 70%, transparent) 100%); color: var(--druid-secondary-background-label-color); text-shadow: 0 0 20px rgba(66, 162, 241, 1), 0 0 15px rgba(66, 162, 241, 0.8), 0 0 8px rgba(66, 162, 241, 0.6), 0 2px 4px rgba(0, 0, 0, 0.9); font-size: 1.3em; letter-spacing: 0.08em; line-height: 1; position: relative; box-shadow: inset 0 0 30px 5px rgba(66, 162, 241, 0.15), 0 4px 12px rgba(0, 0, 0, 0.6), 0 0 0 1px rgba(66, 162, 241, 0.4); border-radius: 2px; padding: 0.5em 0.8em; } .npc-infobox .druid-title::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 2px; background: linear-gradient(90deg, transparent, rgba(66, 162, 241, 0.6) 20%, rgba(66, 162, 241, 1) 50%, rgba(66, 162, 241, 0.6) 80%, transparent); box-shadow: 0 0 10px rgba(66, 162, 241, 0.8); } .npc-infobox .druid-title::after { content: ''; position: absolute; bottom: 0; left: 0; right: 0; height: 2px; background: linear-gradient(90deg, transparent, rgba(66, 162, 241, 0.4) 30%, rgba(66, 162, 241, 0.8) 50%, rgba(66, 162, 241, 0.4) 70%, transparent); box-shadow: 0 0 8px rgba(66, 162, 241, 0.6); } .npc-infobox .druid-section { background: linear-gradient(90deg, color-mix(in srgb, var(--druid-secondary-background-color) 80%, transparent) 0%, color-mix(in srgb, var(--druid-secondary-background-color) 60%, transparent) 100%), linear-gradient(135deg, rgba(66, 162, 241, 0.1), transparent 50%); color:var(--druid-secondary-background-label-color); text-shadow: 0 0 15px rgba(66, 162, 241, 0.8), 0 0 8px rgba(66, 162, 241, 0.5), 0 2px 4px rgba(0, 0, 0, 0.8); position: relative; box-shadow: inset 0 0 20px 3px rgba(66, 162, 241, 0.1), 0 2px 8px rgba(0, 0, 0, 0.5); } .npc-infobox .druid-section::after { content: ''; position: absolute; bottom: 0; left: 0; right: 0; height: 1px; background: linear-gradient(90deg, transparent, rgba(66, 162, 241, 0.6) 50%, transparent); box-shadow: 0 0 6px rgba(66, 162, 241, 0.4); } .druid-infobox .druid-section { font-size: 1.25em; font-weight: 500; } .druid-label { font-weight:bold; text-align: right; box-sizing: border-box; } .druid-row > .druid-label { width: 40%; flex-shrink: 0; } .druid-row > .druid-label, .druid-row > .druid-data { padding-inline: 0.3em; } .druid-main-image, .druid-main-images { padding:5px; } .druid-main-image img, .druid-main-images img { max-width:100%; height:auto; } .druid-main-images-labels { display:flex; flex-direction:row; flex-wrap:wrap; justify-content: space-evenly; margin:0.25em; gap:0.25em; } .druid-main-images-label { cursor:pointer; flex:1 1 auto; text-align:center; transition:.1s ease-in; outline:1px solid var(--druid-link-color); } .druid-main-images-label.focused { background:var(--druid-link-color); color:var(--druid-link-label-color); } .druid-main-images-label:not(.focused):hover { background:rgba(var(--druid-link-color--rgb), 0.25); } .druid-toggleable-data:not(.focused), .druid-main-images-file:not(.focused), .druid-toggleable-heading:not(.focused) { display:none; } .druid-row:not(:has(.druid-grid)):has(.druid-toggleable-data-empty.focused) { display:none; } .druid-section:has(.druid-toggleable-heading-empty.focused) { display:none; } .druid-grid { display:grid; gap: 0.3em; padding: 0.35em; } .druid-grid-item { background:var(--druid-tertiary-background-color); padding:0.25em; border:1px solid rgba(var(--druid-border-color--rgb), 0.5); border-radius: 2px; } .druid-grid-item > .druid-label, .druid-grid-item > .druid-data { text-align: center; } .druid-section-container > .druid-collapsible { display: flex; justify-content: space-between; align-items: center; } .druid-collapsed { display:none!important; } .druid-collapsible { cursor:pointer; position:relative; } .druid-collapsible::after { content:'\2013'; display:block; position:absolute; right:10px; font-size:20px; font-weight:bold; color:var(--druid-secondary-background-label-color); } .druid-collapsible-collapsed::after { content:'+'; } .druid-section-container:has(.druid-toggleable-data-empty.focused):not(:has(.druid-toggleable-data-nonempty.focused)):not(:has(.druid-data-nonempty)) { display: none; } body .has-worn-variant .image-base { display: block !important; } body .has-worn-variant .image-worn { display: none !important; } body .has-worn-variant.is-worn-active .image-base { display: none !important; } body .has-worn-variant.is-worn-active .image-worn { display: block !important; } .image-base img, .image-worn img { display: block !important; margin: 0 auto !important; max-width: 100%; height: auto; } .worn-toggle-button { display: inline-block !important; margin-top: 10px; padding: 5px 15px; background: #333 !important; color: #fff !important; border: 1px solid #666 !important; border-radius: 4px; cursor: pointer; font-size: 11px; font-weight: bold; text-transform: uppercase; } .is-worn-active .worn-toggle-button { background: #833 !important; } /***************************************** Div support *****************************************/ div.druid-row { display:flex; margin-block: 1px; } div.druid-row + div.druid-row { margin-top: 0; } .npc-infobox div.druid-row { background: linear-gradient(90deg, rgba(66, 162, 241, 0.02), transparent 60%); } .npc-infobox div.druid-row > .druid-label { background: linear-gradient(90deg, color-mix(in srgb, var(--druid-tertiary-background-color) 80%, #42a2f1) 0%, var(--druid-tertiary-background-color) 100%); text-shadow: 0 0 8px rgba(66, 162, 241, 0.4); border-right: 1px solid rgba(66, 162, 241, 0.2); } .npc-infobox div.druid-row > .druid-data { text-shadow: 0 0 6px rgba(66, 162, 241, 0.3); } .druid-infobox #toc { display:none; } /*********************** * End DRUID infoboxes * ************************/ /*** Miscellaneous ***/ .responsive-image { max-width:100%; height:auto; } .view-dark .invert-on-dark, .view-light .invert-on-light { filter:invert(100%); } @media screen and (min-width:720px) { .mobileonly { display:none; } } @media screen and (max-width:720px) { .nomobile { display:none; } } /************************** * Start Modular Templates * **************************/ /********* [[Template:Ambox]] *********/ .ambox { border: 1px solid var(--content-border-color); border-left: 10px solid var(--ambox-color); border-radius: 2px; display: flex; align-items: center; gap: .6em; margin: 1em 0; padding: 3px .6em; background-color: var(--background-color-neutral-subtle); box-shadow: 2px 2px 5px 0px #0002; } @media (min-width: 720px) { .ambox { margin-inline: 10%; } } .ambox.tiny { padding: .04rem .5em; margin-inline: 0; width: fit-content; } .ambox + .ambox { margin-top: -.6em; } .ambox-content p { margin: .15em 0; } .ambox-title { font-weight: bold; } /********* [[Template:Hatnote]] *********/ .hatnote { padding: 1px 0 1px 1.6em; margin-bottom: 0.5em; font-style: italic; border-top: 1px solid var(--border-color-subtle); border-bottom: 1px solid var(--border-color-subtle); } .hatnote.icon { padding-left: 0; } /********* [[Template:Spoiler]] *********/ .spoiler-content { background-color: rgb(127, 127, 127); transition: all 0.3s; cursor: pointer; } .spoiler-content > span { opacity: 0; transition: all 0.3s; } .spoiler-content > * { pointer-events:none; } .spoiler-content.show > * { pointer-events:unset; } .spoiler-content.show { background-color: rgba(127, 127, 127, 0); } .spoiler-content.show > span { opacity: 1; } /********* [[Template:Link icon]] *********/ .link-icon { display: inline-flex; align-items: center; height: var(--link-icon-line-height); vertical-align: bottom; } .link-icon .regular { align-self: center; } .link-icon .regular a { display: flex; } .link-icon .regular img { height: var(--link-icon-size); max-width: var(--link-icon-size); } .link-icon .fallback { outline: 1px solid var(--color-base); border-radius: 50%; text-align: center; width: var(--link-icon-size); line-height: var(--link-icon-size); } .link-icon.notext .fallback { display: inline-block; } .link-icon.notext { display: inline; } /********* [[Template:Quote]] *********/ .quote { background: var(--background-color-neutral-subtle); border-radius: 5px; border: 2px solid var(--content-border-color); margin: .5em 0; padding: .5em; } .quote .block { display: block; } .quote .title { font-size: large; font-weight: bold; } .quote .content { font-style: italic; } .quote .author { font-weight: bold; text-align: end; } .quote .marks-wrapper { display: flex; gap: 5px; } .quote .marks-wrapper::before, .quote .marks-wrapper::after { font-size: 100px; line-height: 0px; } .quote .marks-wrapper::before { content: "\201C"; margin-top: 40px; } .quote .marks-wrapper::after { content: "\201D"; align-self: end; margin-bottom: -10px; } /************************ * End Modular Templates * *************************/ .button-expand-header { margin-top: 0.5em; width: 100%; padding: 14px 18px; padding-right: 60px; background: var(--background-color-base); color: var(--color-progressive); border: 2px solid var(--color-progressive); cursor: pointer; font-family: 'Courier New', monospace; font-size: 16px; font-weight: 700; position: relative; transition: all 0.2s ease; box-shadow: inset 0 0 0 2px #0f0f0f, inset 0 0 20px #42a2f180; } .button-expand-header:hover { background: var(--background-color-transparent); box-shadow: inset 0 0 0 2px #0f0f0f, inset 0 0 30px #4c57b580, 0 0 10px #4c57b5a0; } .button-expand-header:active { border-radius: 20px; transition: 0.2s; } .button-expand-header::before { content: '[ + ]'; position: absolute; right: 18px; top: 50%; transform: translateY(-50%); } .button-expand-header:has(+ .mw-collapsible:not(.mw-collapsed))::before { content: '[ - ]'; } .button-expand-header > span:not([typeof]) { cursor: pointer; display: inline-block; position: relative; transition: 0.2s; } @media screen and (max-width:720px) { h2.mw-customtoggle > span:not([typeof])::after { display: none; } } a.tabber__tab { margin-top: 0.7em; font-size: 2em; margin-left: 0.6em; margin-bottom: 0.7em; } header.tabber__header { margin-bottom: 0.5em; margin-top: 0.5em; } a.tabber__tab[aria-selected="true"]{ background: var(--background-color-transparent); color: var(--color-progressive); border: 2px solid var(--color-progressive); box-shadow: inset 0 0 0 2px #0f0f0f, inset 0 0 20px #42a2f180; } @media (hover: hover) { .tabber__tab:hover { box-shadow: inset 0 0 0 2px #0f0f0f, inset 0 0 30px #4c57b580, 0 0 10px #4c57b5a0; background-color: var(--background-color-base); } } .tabber__panel > div.mw-heading.mw-heading2 > h2 { border-bottom: 1px solid var(--color-progressive) !important; padding-bottom: 0.5em; text-shadow: 0 0 20px black; } .tabber__panel > div > h2 > span { text-shadow: 0 0 10px black; color: var(--content-link-color); margin-left: 0.1em; padding: 0 0.5em 0; } header.tabber__header { box-shadow: none; } .tabber__header__prev, .tabber__header__next { background: linear-gradient(135deg, rgba(66, 162, 241, 0.15) 0%, rgba(76, 87, 181, 0.12) 100%), rgba(26, 26, 34, 0.8); border: 1px solid rgba(66, 162, 241, 0.5); color: var(--color-base); padding: 0.6em 1em; cursor: pointer; transition: all 0.3s ease; box-shadow: inset 0 0 20px 3px rgba(66, 162, 241, 0.1), 0 2px 10px rgba(66, 162, 241, 0.2); border-radius: 4px; position: relative; backdrop-filter: blur(3px); } .tabber__header__prev::before, .tabber__header__next::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 2px; background: linear-gradient(90deg, transparent, rgba(66, 162, 241, 0.6) 30%, rgba(66, 162, 241, 0.9) 50%, rgba(66, 162, 241, 0.6) 70%, transparent); box-shadow: 0 0 8px rgba(66, 162, 241, 0.6); } .tabber__header__prev:hover, .tabber__header__next:hover { background: linear-gradient(135deg, rgba(66, 162, 241, 0.25) 0%, rgba(76, 87, 181, 0.2) 100%), rgba(26, 26, 34, 0.9); border-color: rgba(66, 162, 241, 0.7); box-shadow: inset 0 0 30px 5px rgba(66, 162, 241, 0.15), 0 4px 15px rgba(66, 162, 241, 0.3), 0 0 25px rgba(66, 162, 241, 0.2); transform: scale(1.05); text-shadow: 0 0 10px rgba(66, 162, 241, 0.8), 0 0 5px rgba(66, 162, 241, 0.5); } .tabber__header .tabber__header__prev::after, .tabber__header .tabber__header__next::after { display: block; width: inherit; height: 100%; background-position: center; background-repeat: no-repeat; background-size: 1em; filter: drop-shadow(0 0 4px rgba(66, 162, 241, 0.6)); } @media screen and (max-width: 720px) { .button-expand-header { background-color: #8dbec280; box-shadow: 0 0 40px var(--color-progressive); } .button-expand-header > span:after { position: relative; font-size: 1em; opacity: 1; left: 0; bottom: 0; text-align: inherit; } } .button-expand-header > img { padding: 0 1em 0; } .button-expand-header:hover > span:after{ opacity: 1; font-size: 0.75em; } .class-box { background: linear-gradient(135deg, rgba(66, 162, 241, 0.06) 0%, transparent 50%, rgba(76, 87, 181, 0.06) 100%), linear-gradient(to bottom, rgba(26, 26, 34, 0.95), rgba(26, 26, 34, 0.98)); box-shadow: 0 0 30px 5px rgba(0, 0, 0, 0.8), inset 0 0 40px 5px rgba(66, 162, 241, 0.08), 0 0 0 1px rgba(66, 162, 241, 0.25); padding: 0 0.5em 0; border-radius: 6px; position: relative; overflow: hidden; } .class-box::after { content: ''; position: absolute; bottom: 0; left: 0; right: 0; height: 1px; background: linear-gradient(90deg, transparent, rgba(66, 162, 241, 0.4) 30%, rgba(66, 162, 241, 0.6) 50%, rgba(66, 162, 241, 0.4) 70%, transparent); } /* =============================== MP elements =============================== */ .main-page-links { font-weight: bold; text-shadow: 0 0 6px #000000; margin: 1em; } .mp-box pre { font-family: var(--body-font-family); color: var(--color-progressive); border-radius:5px; border-image-source: var(--border-image-base); border-image-slice: 6; border-image-width: 6px; border-image-repeat: repeat repeat; text-align: center; } /* =============================== DRUID Boss Infoboxes =============================== */ /* UNHOLY */ .druid-data-Unholy a, .druid-data-Unholy a:visited { color: black; text-shadow: 0 0 5px white, 0 0 10px white, 0 0 15px white; } /* VOIDBOUND */ .druid-data-Voidbound a, .druid-data-Voidbound a:visited { color: #e48cff; text-shadow: 0 0 4px #e48cff, 0 0 8px #b94dff, 0 0 12px #7a1d9a; } /* BLOODSHOT */ .druid-data-Bloodshot a, .druid-data-Bloodshot a:visited { color: #d23c3c; text-shadow: 0 0 4px #d23c3c, 0 0 8px #8b0000, 0 0 12px #ff4d4d; } /* ROYAL */ .druid-data-Royal a, .druid-data-Royal a:visited { color: #a86dff; text-shadow: 0 0 4px #a86dff, 0 0 8px #6a00ff, 0 0 12px #330066; } /* GILDED */ .druid-data-Gilded a, .druid-data-Gilded a:visited { color: #ffb84d; text-shadow: 0 0 4px #ffb84d, 0 0 8px #ff8000, 0 0 12px #cc6600; } /* IRRADIATED */ .druid-data-Irradiated a, .druid-data-Irradiated a:visited { color: #4dff4d; text-shadow: 0 0 4px #4dff4d, 0 0 8px #00cc00, 0 0 12px #006600; } /* COMPANION */ .druid-data-Companion a, .druid-data-Companion a:visited { color: #ffd700; text-shadow: 0 0 4px #ffd700, 0 0 8px #ffaa00, 0 0 12px #cc8400; } /* RUNES */ .druid-data-Rune a, .druid-data-Rune a:visited { color: #bfbfbf; text-shadow: 0 0 4px #bfbfbf, 0 0 8px #666, 0 0 12px #333; } .druid-row[data-druid-section-row="Loot"] div { padding-top: 0.75em; padding-bottom: 0.5em; flex-wrap: nowrap; flex-direction: row; display: block; justify-content: space-between; align-items: center; text-align: left; width: 100%; } div[data-druid-section="Loot"] + div[data-druid-section-row="Loot"] div { border-top: none; } .druid-data .image { margin-left: 0%; } .loot-category-header { display: flex; align-items: center; gap: 0.5em; padding: 0.5em 0.75em; margin: 0.75em 0 0.3em 0; background: linear-gradient(90deg, rgba(66, 162, 241, 0.12) 0%, transparent 100%), rgba(26, 26, 34, 0.4); border-left: 2px solid rgba(66, 162, 241, 0.5); border-radius: 3px; box-shadow: inset 0 0 15px 2px rgba(66, 162, 241, 0.05), 0 1px 4px rgba(0, 0, 0, 0.4); } .loot-category-title { font-weight: 600; font-size: 0.95em; color: var(--color-base); text-shadow: 0 0 6px rgba(66, 162, 241, 0.4), 0 1px 2px rgba(0, 0, 0, 0.8); letter-spacing: 0.02em; } .loot-item-row { display: flex; justify-content: space-between; align-items: center; padding: 0.3em 0.75em; margin: 0.15em 0; background: linear-gradient(90deg, transparent, rgba(66, 162, 241, 0.02) 50%, transparent); border-radius: 2px; transition: all 0.2s ease; } .loot-item-row:hover { background: linear-gradient(90deg, transparent, rgba(66, 162, 241, 0.06) 50%, transparent); padding-left: 1em; } .boss-percent { color: var(--content-border-color); text-shadow: 0 0 8px rgba(66, 162, 241, 0.5), 0 0 4px rgba(66, 162, 241, 0.3), 0 2px 4px rgba(0, 0, 0, 0.8); font-weight: bold; font-size: 1.05em; } .loot-data-infobox { display: flex; align-items: center; gap: 0.5em; } .item-infobox div[data-druid-section] > .druid-section { font-weight: bolder; text-shadow: 0px 2px black; } .druid-infobox .druid-title { display: flex; align-items: center; justify-content: center; color: var(--content-border-color); font-family: "Daedalus", sans-serif; line-height: 1em; font-weight: 1000; font-size: 3em; min-height: 2.2em; flex-wrap: wrap; text-shadow: 0 0 20px black; } .boss-infobox-subtitle { font-weight: 500; font-size: 0.75em; display: inline-block; white-space: normal; word-break: break-word; width: 100%; position: relative; color: rgba(255, 255, 255, 0.95); text-shadow: 0 0 10px rgba(66, 162, 241, 0.6), 0 0 5px rgba(66, 162, 241, 0.4), 0 2px 4px rgba(0, 0, 0, 0.8); animation: subtitle-pulse 4s ease-in-out infinite; background: linear-gradient(90deg, rgba(66, 162, 241, 0.05) 0%, rgba(66, 162, 241, 0.08) 50%, rgba(66, 162, 241, 0.05) 100%); background-size: 200% 100%; animation: subtitle-scan 6s linear infinite, subtitle-pulse 4s ease-in-out infinite; padding: 0.3em 0.5em; border-radius: 2px; letter-spacing: 0.03em; } .boss-infobox-subtitle::before { content: ''; position: absolute; left: 0; top: 50%; transform: translateY(-50%); width: 3px; height: 60%; background: linear-gradient(180deg, transparent, rgba(66, 162, 241, 0.8) 50%, transparent); box-shadow: 0 0 6px rgba(66, 162, 241, 0.8); animation: subtitle-indicator 2s ease-in-out infinite; } @keyframes subtitle-pulse { 0%, 100% { text-shadow: 0 0 10px rgba(66, 162, 241, 0.6), 0 0 5px rgba(66, 162, 241, 0.4), 0 2px 4px rgba(0, 0, 0, 0.8); } 50% { text-shadow: 0 0 15px rgba(66, 162, 241, 0.9), 0 0 8px rgba(66, 162, 241, 0.6), 0 0 4px rgba(255, 255, 255, 0.4), 0 2px 4px rgba(0, 0, 0, 0.8); } } @keyframes subtitle-scan { 0% { background-position: 0% 0%; } 100% { background-position: 200% 0%; } } @keyframes subtitle-indicator { 0%, 100% { opacity: 0.4; box-shadow: 0 0 6px rgba(66, 162, 241, 0.6); } 50% { opacity: 1; box-shadow: 0 0 10px rgba(66, 162, 241, 1); } } /* =============================== Dungeon Page CSS =============================== */ .dungeon-page-box { background-color: transparent; box-shadow: none; transition: 0.5s; padding: 1em; position: relative; padding: 0 1em; border-radius: 0px; } .dungeon-page-smaller-box li { display: inline-block; width: 18%; margin: 0 1% 1% 0; vertical-align: top; text-align: center; background: linear-gradient(135deg, rgba(66, 162, 241, 0.08) 0%, transparent 60%), linear-gradient(to bottom, rgba(26, 26, 34, 0.9), rgba(26, 26, 34, 0.95)); border-radius: 4px; border: 1px solid rgba(66, 162, 241, 0.2); box-shadow: inset 0 0 20px 3px rgba(66, 162, 241, 0.05), 0 2px 10px rgba(0, 0, 0, 0.5); transition: all 0.3s ease; position: relative; overflow: hidden; } .dungeon-page-smaller-box li::after { content: ''; position: absolute; bottom: 0; left: 0; right: 0; height: 1px; background: linear-gradient(90deg, transparent, rgba(66, 162, 241, 0.4), transparent); } .dungeon-page-smaller-box a { display: flex; flex-direction: column; align-items: center; text-align: center; padding: 0.5em; } .dungeon-page-smaller-box li:hover, .mp-links.dungeon-page-smaller-box > ul > li:hover { background: linear-gradient(135deg, rgba(66, 162, 241, 0.15) 0%, transparent 60%), linear-gradient(to bottom, rgba(26, 26, 34, 0.95), rgba(26, 26, 34, 1)); border-color: rgba(66, 162, 241, 0.4); box-shadow: inset 0 0 25px 5px rgba(66, 162, 241, 0.1), 0 4px 15px rgba(66, 162, 241, 0.3), 0 0 20px rgba(66, 162, 241, 0.2); transform: translateY(-2px); } .pre-dungeon { max-width: 100%; width: -moz-fit-content; width: -webkit-fit-content; width: fit-content; display: block; } .dungeon-enemies { display: flex; flex-wrap: wrap; max-width: 100%; justify-content: center; } .dungeon-enemies .druid-container { margin: 2%; } .tipstricks { display: flex; max-width: 100%; } .pre-dungeon p { margin: 1em 0; padding: 0.9em 1.2em 0.9em 1.5em; border-radius: 3px 12px 8px 3px; box-shadow: -2px 0 0 0 rgba(66, 162, 241, 0.4), 0 4px 15px rgba(0, 0, 0, 0.6), inset 0 0 20px rgba(66, 162, 241, 0.03); display: block; width: auto; background: linear-gradient(90deg, rgba(66, 162, 241, 0.06) 0%, rgba(26, 26, 34, 0.8) 15%, rgba(26, 26, 34, 0.6) 85%, transparent 100%); border-left: 2px solid rgba(66, 162, 241, 0.5); color: var(--color-base); line-height: 1.6; position: relative; backdrop-filter: blur(2px); } .pre-dungeon p::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: linear-gradient(180deg, rgba(66, 162, 241, 0.8) 0%, rgba(66, 162, 241, 0.3) 50%, rgba(66, 162, 241, 0.8) 100%); opacity: 0.6; } .dlog { margin-bottom: 2%; background: linear-gradient(to right, rgba(31, 35, 77, 0.95) 0%, rgba(31, 35, 77, 0.9) 70%, rgba(31, 35, 77, 0) 100%), linear-gradient(135deg, rgba(66, 162, 241, 0.08) 0%, transparent 50%); padding: 0.75em; border: 3px solid; border-image: linear-gradient(to right, rgba(66, 162, 241, 0.8) 0%, rgba(71, 75, 117, 1) 30%, rgba(71, 75, 117, 0.8) 70%, rgba(71, 75, 117, 0) 100%) 1 stretch; border-right: none; border-top: none; border-bottom: none; min-width: 20%; max-width: 70%; width: fit-content; text-wrap: balance; font-size: 2em; position: relative; box-shadow: -3px 0 15px rgba(66, 162, 241, 0.3), inset 2px 0 20px rgba(66, 162, 241, 0.1), 0 4px 12px rgba(0, 0, 0, 0.5); border-radius: 0 4px 4px 0; backdrop-filter: blur(3px); } .dlog::before { content: url("/wiki/Special:Redirect/file/DNexus.png") " " url("/wiki/Special:Redirect/file/Dlog-text.png"); display: inline-block; background: linear-gradient(to right, rgba(66, 162, 241, 0.25) 0%, rgba(66, 162, 241, 0.15) 50%, transparent 100%), linear-gradient(135deg, rgba(76, 87, 181, 0.2), transparent 60%); padding: 0.5em 0.8em; border-radius: 3px 0 0 3px; margin-right: 12px; box-shadow: inset -2px 0 10px rgba(66, 162, 241, 0.3), 2px 0 8px rgba(66, 162, 241, 0.2); border-right: 1px solid rgba(66, 162, 241, 0.4); position: relative; } .dlog::after { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 2px; background: linear-gradient(180deg, rgba(66, 162, 241, 0.8) 0%, rgba(66, 162, 241, 1) 50%, rgba(66, 162, 241, 0.8) 100%); box-shadow: 0 0 8px rgba(66, 162, 241, 0.8), 0 0 15px rgba(66, 162, 241, 0.5); animation: dlog-pulse 3s ease-in-out infinite; } @keyframes dlog-pulse { 0%, 100% { opacity: 0.7; box-shadow: 0 0 8px rgba(66, 162, 241, 0.8), 0 0 15px rgba(66, 162, 241, 0.5); } 50% { opacity: 1; box-shadow: 0 0 12px rgba(66, 162, 241, 1), 0 0 20px rgba(66, 162, 241, 0.7); } } .dlog p { position: relative; color: #f1f1f1; font-family: "Daedalus", Sans-Serif; font-size: 1em; line-height: 1.3; text-shadow: 0 0 8px rgba(66, 162, 241, 0.8), 0 0 4px rgba(66, 162, 241, 0.6), 0 2px 4px rgba(0, 0, 0, 0.9); word-wrap: break-word; padding: 0.8em; padding-top: 0.5em; background: linear-gradient(90deg, rgba(66, 162, 241, 0.03), transparent 80%); border-radius: 2px; } @media only screen and (max-width: 768px) { .daedalus-log { display: none; } } /* =============================== Skill Tree =============================== */ /** * ============================== * Tooltips Gadget (Base Styles) * ============================== */ .main-tooltip { border-radius:5px; border-image-source: url("/wiki/Special:Redirect/file/Wiki-border-kurva.png"); border-image-slice: 6; border-image-width: 6px; border-image-repeat: repeat repeat; box-shadow: 0 0 10px black; margin-bottom: 5px; padding: 1em 1em; background-color: #312b38; } #tooltip-wrapper { padding: 0.3em; } .has-redlinks, .tooltip-loading, .advanced-tooltip .tooltip-contents { display: none; } .tooltips-init-complete { cursor: help; } .main-tooltip img { vertical-align: middle; } .advanced-tooltip img { box-shadow: 0 0 10px #000000; } .advanced-tooltip .imhoveringit { position: relative; display: inline-block; } .advanced-tooltip .tooltip-base-image, .advanced-tooltip .tooltip-hover-image { transition: opacity 0.2s ease; } .advanced-tooltip .tooltip-hover-image { position: absolute; top: 0; left: 0; opacity: 0; pointer-events: none; } .advanced-tooltip .tooltip-base-image { opacity: 1; } .advanced-tooltip:hover .tooltip-base-image { opacity: 0; } .advanced-tooltip:hover .tooltip-hover-image { opacity: 1; pointer-events: auto; } .tabber__panel { overflow-x: auto; scrollbar-width: none; -ms-overflow-style: none; } .tabber__panel::-webkit-scrollbar { display: none; } /** * ============================== * Skill Tree Layout * ============================== */ .skill-tree { display: flex; flex-direction: column; align-items: center; row-gap: 15px; /* vertical spacing between rows */ } /* Rows */ .skill-tree .row { display: flex; justify-content: center; } .skill-tree .row-1 { gap: 0; } .skill-tree .row-2 { gap: 40px; } .skill-tree .row-3 { gap: 20px; } .skill-tree .wide-gap { gap: 80px; } /* For Trap tree rows */ /* Nodes */ .node { display: inline-block; width: 80px; /* keeps nodes aligned */ text-align: center; } /* Node Title Style */ .skill-title { font-weight: bold; color: #fca801; text-shadow: 2px 2px 8px black; border-bottom: 1px solid #fca801; padding-bottom: 0.5em; } .main-tooltip p { color: #54fc55; } .main-tooltip span { color: #54fcfc; text-shadow: 0 0 2px #54fcfc; } /* item pages */ .display-items { display: flex; flex-wrap: wrap; } a.tabber__tab { font-size: 2em; text-shadow: 1px 1px 12px black; } .druid-main-images-label { font-size: 1.2em; } .druid-main-images-label.focused { box-shadow: 0 0 20px var(--druid-link-color); } .hoverbox:hover { background-color: #1a1a22E0; box-shadow: 0 0 30px 30px var(--background-color-base); border-radius: 0 0 15px 15px; border-top: 0.1em solid var(--color-progressive--hover); transition: 0.4s; } .hoverbox { background-color: transparent; box-shadow: none; transition: 0.5s; padding: 0 1em 1em; margin: 1em 0 1em -0.5em; position: relative; z-index: 0; border-top: 0.1em solid var(--color-progressive); display: flow-root; } .hoverbox > div > h3 > a { border-bottom: 2px solid currentColor; background: no-repeat cover; } .hoverbox > div { overflow: visible; } .dungeon-clear { max-width: 100%; overflow: visible; } .lore { max-width: 100%; overflow: visible; } .mp-main { background-size: 100% 100%; background-repeat: no-repeat; aspect-ratio: 16 / 9; padding-top: 1em; padding-bottom: 1em; } .class-rarities { display:flex; flex-wrap: wrap; flex-direction: column; align-items: center; } .class-rarities > div { margin: 1em 0 1em; padding: 1em 1.5em; border-radius: 8px; position: relative; background: linear-gradient(135deg, rgba(0, 0, 0, 0.3) 0%, transparent 50%), linear-gradient(to right, transparent, rgba(255, 255, 255, 0.03), transparent); backdrop-filter: blur(2px); border: 1px solid rgba(255, 255, 255, 0.1); } .class-rarities > div::before { content: ''; position: absolute; top: 0; left: 50%; transform: translateX(-50%); width: 80%; height: 2px; background: linear-gradient(90deg, transparent, currentColor 50%, transparent); opacity: 0.3; filter: blur(1px); } .class-rarities > div > p > img { margin: 0 2em 0 0; border-radius: 100px; background: #1a1a2280; box-shadow: 0 0 10px black; } .class-rarities > div > p > span > img { text-shadow: 0 0 10px black; } .class-rarities > div > p > a { text-shadow: 0 0 10px black; } .class-irradiated { box-shadow: 0 0 20px #4dff4d; background-color: #4dff4d80; } .class-gilded { box-shadow: 0 0 20px #ffb84d; background-color: #ffb84d80; } .class-royal{ box-shadow: 0 0 20px #a86dff; background-color: #a86dff80; } .class-bloodshot { box-shadow: 0 0 20px #d23c3c; background-color: #d23c3c80; } .class-voidbound{ box-shadow: 0 0 20px #e48cff; background-color: #e48cff80; } .class-unholy { box-shadow: 0 0 20px black; background-color: #00000080; } div.class-rarities > div > p > a { font-weight: bold; } /* TABLES */ .wikitable td, .wikitable th { border: none !important; } .wikitable { margin: 0; } td > div.mw-collapsible > button { margin: 1.5em; padding: 1.2em; background-color: #8dbec280; box-shadow: 0 0 20px #8dbec2FF; border-radius: 30px; } .wikitable td, .wikitable th { font-size: 1.1em; } td > div.mw-collapsible > button > span.mw-collapsible-text { text-shadow: 0 0 4px black; } td > div.mw-collapsible > button > span.mw-collapsible-text:hover { text-decoration: none; } td > div.mw-collapsible > button.mw-collapsible-toggle-default::after { content: ''; } td > div.mw-collapsible > button.mw-collapsible-toggle-default::before { content: ''; } /* Inline Image Template */ .inline-image-image { position: relative; display: inline-block; } .inline-image-image > p > span > span > img { box-shadow: 0 0 30px 5px rgba(66, 162, 241, 0.3), 0 4px 20px rgba(0, 0, 0, 0.8), inset 0 0 40px 5px rgba(66, 162, 241, 0.05); border-radius: 8px; border: 2px solid rgba(66, 162, 241, 0.5); background: linear-gradient(135deg, rgba(66, 162, 241, 0.02), transparent 50%); padding: 4px; transition: all 0.3s ease; } .inline-image-image > p > span > span > img:hover { box-shadow: 0 0 40px 8px rgba(66, 162, 241, 0.5), 0 6px 25px rgba(0, 0, 0, 0.9), inset 0 0 50px 8px rgba(66, 162, 241, 0.08); border-color: rgba(66, 162, 241, 0.7); transform: translateY(-2px); } .inline-image-caption { margin-top: 0.5em; position: relative; } .inline-image-caption > p { background: linear-gradient(90deg, rgba(66, 162, 241, 0.12) 0%, rgba(26, 26, 34, 0.8) 15%, rgba(26, 26, 34, 0.6) 85%, transparent 100%); border-left: 3px solid rgba(66, 162, 241, 0.6); border-radius: 3px; padding: 0.6em 1em; margin: 0; box-shadow: inset 0 0 20px 2px rgba(66, 162, 241, 0.05), 0 2px 8px rgba(0, 0, 0, 0.4); backdrop-filter: blur(2px); } .inline-image-caption > p > span { font-weight: 600; font-size: 0.95em; color: var(--color-base); text-shadow: 0 0 8px rgba(66, 162, 241, 0.6), 0 2px 4px rgba(0, 0, 0, 0.8); letter-spacing: 0.02em; } .inline-image-caption > p > span::before { content: '❖ '; color: rgba(66, 162, 241, 0.8); text-shadow: 0 0 10px rgba(66, 162, 241, 0.9), 0 0 5px rgba(66, 162, 241, 0.6); margin-right: 0.3em; } .inline-image-caption > p::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: linear-gradient(180deg, rgba(66, 162, 241, 0.8) 0%, rgba(66, 162, 241, 0.4) 50%, rgba(66, 162, 241, 0.8) 100%); opacity: 0.7; } /* dynamic gif display css ONLY TOUCH IF YOU KNOW WHAT YOU ARE DOING */ .dynamic-gif-container { padding-top: 8em; width: fit-content; max-width: 100%; margin-right: 1em; margin-bottom: 1em; margin-left: 1em; z-index: 100; transition: all 0.3s ease; display: block !important; visibility: visible !important; clear: both; } /* Override for flexbox container */ .gif-tabber-display-container .dynamic-gif-container { padding-top: 0; margin: 0; clear: none; } .dynamic-gif-container.expanded .gif-display-area { max-height: none; height: auto; opacity: 1; padding: 15px; overflow: visible; } .gif-display-area { background: linear-gradient(135deg, rgba(66, 162, 241, 0.08) 0%, transparent 40%, rgba(76, 87, 181, 0.08) 100%), radial-gradient(ellipse at center, rgba(66, 162, 241, 0.12), transparent 60%), rgba(26, 26, 34, 0.95); border-radius: 6px; overflow: visible; height: auto; min-height: auto; opacity: 1; padding: 12px; transition: all 0.3s ease; box-shadow: 0 0 30px 5px rgba(66, 162, 241, 0.2), inset 0 0 40px 8px rgba(66, 162, 241, 0.05), 0 4px 20px rgba(0, 0, 0, 0.6); border: 1px solid rgba(66, 162, 241, 0.4); display: block !important; visibility: visible !important; position: relative; backdrop-filter: blur(4px); width: fit-content; } .gif-display-area::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 2px; background: linear-gradient(90deg, transparent, rgba(66, 162, 241, 0.6) 20%, rgba(66, 162, 241, 0.9) 50%, rgba(66, 162, 241, 0.6) 80%, transparent); box-shadow: 0 0 10px rgba(66, 162, 241, 0.8); } .gif-header { display: flex; justify-content: center; align-items: center; margin-bottom: 10px; padding-bottom: 10px; border-bottom: 1px solid var(--color-progressive); } .gif-title { font-size: 2em; font-weight: bold; font-family: var(--heading-font-family); color: var(--color-progressive); margin: 0; } .gif-toggle-btn { background: none; border: 1px solid #4a4a4a; color: #e0e0e0; padding: 4px 10px; border-radius: 4px; cursor: pointer; font-size: 1em; transition: all 0.2s ease; } .gif-toggle-btn:hover { background: #2a2a2a; border-color: #5a5a5a; } .gif-image-container { width: 100%; height: 400px; min-height: 400px; max-height: 400px; display: flex; align-items: center; justify-content: center; background: var(--background-color-base); border-radius: 4px; position: relative; margin-bottom: 10px; overflow: hidden; } .gif-image-container img { max-width: 100%; max-height: 100%; height: auto; width: auto; display: block; border-radius: 4px; object-fit: contain; } .gif-image-container.loading::after { content: ''; position: absolute; width: 40px; height: 40px; border: 4px solid var(--color-progressive--hover); border-top-color: #e0e0e0; border-radius: 50%; animation: spin 1s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } .gif-error { color: var(--color-destructive); font-size: 1em; text-align: center; padding: 20px; } .gif-caption { text-align: center; color: var(--color-base); font-size: 1em; font-style: italic; padding: 5px; background: var(--color-progressive--hover); border-radius: 4px; text-shadow: 0 0 5px var(--content-border-color); display: none; } .gif-placeholder { color: var(--color-progressive--hover); font-size: 1em; text-align: center; padding: 60px 20px; height: 500px; } @media (max-width: 768px) { .dynamic-gif-container { position: relative; float: none; width: 100%; margin: 0 0 20px 0; } .dynamic-gif-container.expanded .gif-display-area { max-height: none; } } .skill-tree-section::after { content: ""; display: table; clear: both; } .tabber .tabbertab { clear: both; overflow: auto; } .gif-tabber-display-container { display: flex; flex-direction: row; gap: 1.5em; align-items: flex-start; } .gif-tabber-display-container > div:first-child { flex: 1 1 auto; min-width: 0; } .gif-tabber-display-container > .dynamic-gif-container { flex: 0 0 auto; position: sticky; top: 1em; align-self: flex-start; padding-top: 0; margin: 0; min-width: 500px; max-width: 600px; } @media screen and (max-width: 1200px) { .gif-tabber-display-container { flex-direction: column; width: 100%; max-width: 100%; overflow: hidden; } .gif-tabber-display-container > .dynamic-gif-container { position: static; width: 100%; max-width: 100%; min-width: 0; order: 2; /* Move gif display below tabber */ margin-top: 1em; } .gif-tabber-display-container > div:first-child { order: 1; /* Keep tabber on top */ width: 100%; max-width: 100%; min-width: 0; overflow-x: auto; } /* Ensure tabber content doesn't overflow */ .gif-tabber-display-container #List\ of\ Skill\ Trees, .gif-tabber-display-container .tabber, .gif-tabber-display-container .tabbertab { max-width: 100%; overflow-x: auto; box-sizing: border-box; } /* Hide gif display by default on mobile, show when expanded */ .gif-tabber-display-container > .dynamic-gif-container:not(.expanded) { display: none; } /* When expanded on mobile, make it compact */ .gif-tabber-display-container > .dynamic-gif-container.expanded { display: block; } .gif-tabber-display-container > .dynamic-gif-container .gif-display-area { max-width: 100%; } } .decor-page { border-image: url(/wiki/Special:Redirect/file/Wiki-border-book.png); border-image-slice: 65 122 65 122; border-image-width: 100% 100% 100% 100%; border-image-repeat: stretch stretch; border-image-outset: 0; border-style: solid; color: var(--background-color-base); width: 492px; height: 262px; } .decor-page > p{ padding: 3.5em; font-family: var(--heading-font-family); } .swap-silverling { position: relative; display: inline-block; width: 7em; text-align: left; text-shadow: 0 0 10px currentColor; font-weight: bold; } .swap-silverling::before, .swap-silverling::after { position: absolute; left: 0; bottom: -0.45em; width: 140%; text-align: inherit; animation: fadeSwap 5s infinite ease-in-out; } .swap-silverling::before { content: "Silverlings."; opacity: 1; } .swap-silverling::after { content: "Players."; opacity: 0; animation-delay: 2.5s; } @keyframes fadeSwap { 0%, 40% { opacity: 1; } 50%, 90% { opacity: 0; } 100% { opacity: 1; } } .main-welcome { text-shadow: 0 0 2px black; font-weight: bold; display: flex; align-items: flex-start; justify-content: space-between; flex-wrap: wrap; margin-top: 0.5em; padding: 14px 18px; padding-right: 60px; background: var(--background-color-base); color: var(--color-progressive); border: 2px solid var(--color-progressive); font-family: var(--body-font-family); font-size: 16px; font-weight: 700; transition: all 0.2s ease; box-shadow: inset 0 0 0 2px #0f0f0f, inset 0 0 20px #42a2f180; padding: 1em; } .welcome-text { flex: 2; min-width: 300px; border-left: 2px solid var(--color-progressive); padding: 1em; font-size: 2em; } div.main-welcome > .mp-links { flex: 1; min-width: 250px; margin: 1em; } div.main-welcome > .mp-links > ul > li { background: linear-gradient(135deg, rgba(66, 162, 241, 0.08) 0%, transparent 50%, rgba(76, 87, 181, 0.08) 100%), linear-gradient(to bottom, rgba(66, 162, 241, 0.15), rgba(76, 87, 181, 0.2), rgba(66, 162, 241, 0.15)); box-shadow: inset 0 0 20px 4px rgba(66, 162, 241, 0.12), 0 4px 15px rgba(66, 162, 241, 0.2), 0 0 30px rgba(66, 162, 241, 0.15); border: 1px solid rgba(66, 162, 241, 0.4); border-radius: 4px; padding: 1em 0.8em; position: relative; transition: all 0.3s ease; backdrop-filter: blur(2px); } div.main-welcome > .mp-links > ul > li::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 2px; background: linear-gradient(90deg, transparent, rgba(66, 162, 241, 0.6) 30%, rgba(66, 162, 241, 0.9) 50%, rgba(66, 162, 241, 0.6) 70%, transparent); box-shadow: 0 0 8px rgba(66, 162, 241, 0.8); } div.main-welcome > .mp-links > ul > li::after { content: ''; position: absolute; bottom: 0; left: 0; right: 0; height: 1px; background: linear-gradient(90deg, transparent, rgba(66, 162, 241, 0.4) 30%, rgba(66, 162, 241, 0.6) 50%, rgba(66, 162, 241, 0.4) 70%, transparent); } div.main-welcome > .mp-links > ul > li:hover { background: linear-gradient(135deg, rgba(66, 162, 241, 0.15) 0%, transparent 50%, rgba(76, 87, 181, 0.15) 100%), linear-gradient(to bottom, rgba(66, 162, 241, 0.25), rgba(76, 87, 181, 0.3), rgba(66, 162, 241, 0.25)); box-shadow: inset 0 0 30px 6px rgba(66, 162, 241, 0.2), 0 6px 20px rgba(66, 162, 241, 0.3), 0 0 40px rgba(66, 162, 241, 0.25); border-color: rgba(66, 162, 241, 0.6); transform: translateY(-2px); } div.main-welcome > .mp-links > ul > li > a { color: var(--color-base); text-shadow: 0 0 8px rgba(66, 162, 241, 0.6), 0 2px 4px rgba(0, 0, 0, 0.8); transition: all 0.2s ease; } div.main-welcome > .mp-links > ul > li:hover > a { text-shadow: 0 0 12px rgba(66, 162, 241, 0.9), 0 0 6px rgba(66, 162, 241, 0.6), 0 2px 4px rgba(0, 0, 0, 0.8); } .mw-collapsible { padding-top: 2em; display: flow-root; } .tab-gif-container { background: linear-gradient(135deg, rgba(66, 162, 241, 0.08) 0%, transparent 40%, rgba(76, 87, 181, 0.08) 100%), radial-gradient(ellipse at top left, rgba(66, 162, 241, 0.12), transparent 60%), rgba(26, 26, 34, 0.95); border: 1px solid rgba(66, 162, 241, 0.4); border-radius: 6px; padding: 12px; margin: 1em 0; box-shadow: 0 0 30px 5px rgba(66, 162, 241, 0.2), inset 0 0 40px 8px rgba(66, 162, 241, 0.05), 0 4px 20px rgba(0, 0, 0, 0.6); display: inline-block; width: fit-content; max-width: 100%; position: relative; backdrop-filter: blur(4px); } .tab-gif-container::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 2px; background: linear-gradient(90deg, transparent, rgba(66, 162, 241, 0.6) 20%, rgba(66, 162, 241, 0.9) 50%, rgba(66, 162, 241, 0.6) 80%, transparent); box-shadow: 0 0 10px rgba(66, 162, 241, 0.8); } .tab-gif-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px; padding-bottom: 10px; font-size: 2em; border-bottom: 1px solid var(--color-progressive); } .tab-gif-title { font-size: 1.5em; font-weight: bold; font-family: var(--heading-font-family); color: var(--color-progressive); margin: 0; } .tab-gif-toggle-btn { background: none; border: 1px solid #4a4a4a; color: #e0e0e0; padding: 4px 10px; border-radius: 4px; cursor: pointer; font-size: 0.9em; transition: all 0.2s ease; } .tab-gif-toggle-btn:hover { background: #2a2a2a; border-color: #5a5a5a; } .tab-gif-tabs { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 10px; padding-bottom: 10px; border-bottom: 1px solid var(--color-progressive); } .tab-gif-tab { background: linear-gradient(135deg, rgba(66, 162, 241, 0.08), transparent 60%), rgba(26, 26, 34, 0.6); color: var(--color-base); border: 1px solid rgba(66, 162, 241, 0.4); font-family: var(--body-font-family); padding: 8px 16px; border-radius: 4px; cursor: pointer; font-size: 1em; font-weight: bold; transition: all 0.2s ease; white-space: nowrap; text-shadow: 0 0 6px rgba(66, 162, 241, 0.5), 0 2px 4px rgba(0, 0, 0, 0.8); box-shadow: inset 0 0 15px 2px rgba(66, 162, 241, 0.08), 0 2px 8px rgba(0, 0, 0, 0.4); position: relative; } .tab-gif-tab::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 1px; background: linear-gradient(90deg, transparent, rgba(66, 162, 241, 0.5) 30%, rgba(66, 162, 241, 0.7) 50%, rgba(66, 162, 241, 0.5) 70%, transparent); } .tab-gif-tab:hover { background: linear-gradient(135deg, rgba(66, 162, 241, 0.15), transparent 60%), rgba(26, 26, 34, 0.8); color: #ffffff; border-color: rgba(66, 162, 241, 0.6); box-shadow: inset 0 0 20px 3px rgba(66, 162, 241, 0.15), 0 4px 12px rgba(66, 162, 241, 0.3), 0 0 20px rgba(66, 162, 241, 0.2); text-shadow: 0 0 10px rgba(66, 162, 241, 0.8), 0 0 5px rgba(66, 162, 241, 0.6), 0 2px 4px rgba(0, 0, 0, 0.8); } .tab-gif-tab.tab-gif-active { background: linear-gradient(135deg, rgba(66, 162, 241, 0.3) 0%, rgba(76, 87, 181, 0.25) 100%), rgba(66, 162, 241, 0.2); color: #ffffff; border-color: rgba(66, 162, 241, 0.8); font-weight: bold; box-shadow: inset 0 0 25px 5px rgba(66, 162, 241, 0.2), 0 4px 15px rgba(66, 162, 241, 0.4), 0 0 30px rgba(66, 162, 241, 0.3); text-shadow: 0 0 12px rgba(66, 162, 241, 1), 0 0 8px rgba(66, 162, 241, 0.8), 0 2px 4px rgba(0, 0, 0, 0.8); } .tab-gif-display-area { background: linear-gradient(135deg, rgba(66, 162, 241, 0.03) 0%, transparent 50%), rgba(26, 26, 34, 0.4); border-radius: 4px; padding: 8px; min-height: auto; box-shadow: inset 0 0 20px 3px rgba(66, 162, 241, 0.08); border: 1px solid rgba(66, 162, 241, 0.15); } .tab-gif-display-area .gif-image-container { width: fit-content; min-height: auto; max-height: none; display: inline-flex; align-items: center; justify-content: center; background: linear-gradient(135deg, rgba(66, 162, 241, 0.05), transparent 60%), rgba(0, 0, 0, 0.3); border-radius: 3px; position: relative; margin-bottom: 8px; overflow: hidden; box-shadow: 0 0 20px 3px rgba(66, 162, 241, 0.15), inset 0 0 15px 2px rgba(66, 162, 241, 0.05); border: 1px solid rgba(66, 162, 241, 0.3); padding: 4px; } .tab-gif-display-area .gif-image-container img { max-width: 100%; height: auto; width: auto; display: block; border-radius: 2px; object-fit: contain; transition: opacity 0.2s ease; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.5); } .tab-gif-display-area .gif-image-container.loading::after { content: ''; position: absolute; width: 40px; height: 40px; border: 4px solid var(--color-progressive--hover); border-top-color: #e0e0e0; border-radius: 50%; animation: tab-gif-spin 1s linear infinite; } @keyframes tab-gif-spin { to { transform: rotate(360deg); } } .tab-gif-display-area .gif-placeholder { color: var(--color-progressive--hover); font-size: 1em; text-align: center; padding: 60px 20px; font-style: italic; } .tab-gif-display-area .gif-error { color: var(--color-destructive); font-size: 1em; text-align: center; padding: 20px; background: rgba(255, 107, 107, 0.1); border-radius: 4px; } .tab-gif-display-area .gif-caption { text-align: center; color: var(--color-base); font-size: 1em; font-style: italic; padding: 6px 10px; background: linear-gradient(90deg, rgba(66, 162, 241, 0.2) 0%, rgba(66, 162, 241, 0.3) 50%, rgba(66, 162, 241, 0.2) 100%), rgba(26, 26, 34, 0.6); border-radius: 3px; text-shadow: 0 0 8px rgba(66, 162, 241, 0.8), 0 0 4px rgba(66, 162, 241, 0.6), 0 2px 4px rgba(0, 0, 0, 0.9); margin-top: 6px; border: 1px solid rgba(66, 162, 241, 0.4); box-shadow: inset 0 0 15px 2px rgba(66, 162, 241, 0.1), 0 2px 8px rgba(0, 0, 0, 0.4); } @media (max-width: 768px) { .tab-gif-container { display: block; width: 100%; min-width: auto; margin: 1em 0; } .tab-gif-tabs { flex-direction: column; } .tab-gif-tab { width: 100%; text-align: center; } .tab-gif-header { flex-direction: column; align-items: flex-start; gap: 10px; } .tab-gif-toggle-btn { width: 100%; } } .tab-gif-container.full-width { display: block; width: 100%; } .tab-gif-container.float-left { float: left; margin-right: 1em; } .tab-gif-container.float-right { float: right; margin-left: 1em; } /* ============================================================ MOBILE ADJUSTMENTS ============================================================ */ @media screen and (max-width: 720px) { /* 1. BOX FIX */ *, *::before, *::after { box-sizing: border-box !important; } .mp-main { aspect-ratio: auto !important; height: auto !important; background-size: cover !important; } /* 2. HEIGHT & OVERFLOW */ .mp-box, .mp-body, .main-welcome, .mp-links, .welcome-text, #mp-box-welcome, #mp-welcome { width: 100% !important; max-width: 100% !important; min-width: 0 !important; height: auto !important; min-height: 0 !important; margin-left: 0 !important; margin-right: 0 !important; padding-left: 6px !important; padding-right: 6px !important; float: none !important; overflow: visible !important; display: block !important; } /* 3. WELCOME BOX */ .main-welcome { display: flex !important; flex-direction: column !important; padding: 10px !important; align-items: stretch !important; border-radius: 4px !important; } .welcome-text { font-size: 1em !important; border-left: none !important; border-bottom: 2px solid var(--color-progressive); margin-bottom: 15px; padding: 8px 0 !important; text-align: left; } /* 4. MASTER GRID */ .mp-main, .mp-links, .mp-links > ul { width: 100% !important; max-width: 100% !important; margin-left: 0 !important; margin-right: 0 !important; padding: 0 !important; min-width: 0 !important; box-sizing: border-box !important; } .mp-main { margin-top: 20px !important; } .mp-links > ul { display: grid !important; grid-template-columns: 1fr 1fr !important; gap: 10px !important; list-style: none !important; } /* 5. INDIVIDUAL BUTTON STYLING */ .mp-links > ul > li { flex: none !important; width: 100% !important; min-width: 0 !important; box-sizing: border-box !important; margin: 0 !important; display: flex !important; flex-direction: column !important; align-items: center !important; justify-content: center !important; min-height: 110px !important; padding: 10px 5px !important; background: linear-gradient(135deg, rgba(66, 162, 241, 0.08) 0%, transparent 50%, rgba(76, 87, 181, 0.08) 100%), linear-gradient(to bottom, rgba(66, 162, 241, 0.15), rgba(76, 87, 181, 0.2), rgba(66, 162, 241, 0.15)) !important; box-shadow: inset 0 0 15px rgba(66, 162, 241, 0.12), 0 2px 8px rgba(0,0,0,0.3) !important; border: 1px solid rgba(66, 162, 241, 0.4) !important; border-radius: 6px !important; } div.main-welcome > .mp-links > ul > li:nth-child(3) { grid-column: span 2 !important; width: 100% !important; justify-self: center !important; } /* 7. ICON & TEXT GLOW */ .mp-links img { max-width: 45px !important; height: auto !important; margin-bottom: 6px !important; display: block !important; } .mp-links > ul > li > a { font-size: 0.85em !important; line-height: 1.1 !important; white-space: normal !important; text-align: center !important; color: #fff !important; text-shadow: 0 0 8px rgba(66, 162, 241, 0.8), 0 0 4px rgba(66, 162, 241, 0.5), 0 2px 4px rgba(0, 0, 0, 0.9) !important; width: 100% !important; display: flex !important; flex-direction: column !important; align-items: center !important; } .mp-box h2 { font-size: 1.5em !important; padding: 0.2em 0 !important; } .mp-box .welcome-message { font-size: 1.3em !important; padding: 0.4em !important; } .druid-infobox .druid-title { font-size: 1.3em !important; min-height: auto !important; } a.tabber__tab { font-size: 1.1em !important; } .node { width: 45px !important; } /* 9. DUNGEON PAGE */ .dungeon-page-smaller-box ul { display: flex !important; flex-direction: column !important; align-items: center !important; justify-content: center !important; padding: 0 !important; margin: 0 !important; width: 100% !important; } .dungeon-page-smaller-box li { display: block !important; width: 100% !important; max-width: 100% !important; margin: 10px 0 !important; padding: 1em !important; flex: none !important; border: 1px solid rgba(66, 162, 241, 0.3) !important; box-shadow: inset 0 0 20px 3px rgba(66, 162, 241, 0.05), 0 2px 10px rgba(0, 0, 0, 0.5) !important; } .dungeon-page-smaller-box a { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; } .dungeon-page-box h2, .mp-box h2 { text-align: center !important; width: 100% !important; } /* 10. GENERAL PAGE */ .mw-parser-output h2 { font-size: 1.6em !important; margin-top: 0.1em !important; margin-bottom: 0.05em !important; padding: 0 !important; border: none !important; } .mp-box h2::after { bottom: -2px !important; } .mw-parser-output p, .mw-parser-output li { font-size: 0.9em !important; line-height: 1.5 !important; margin-top: 0.2em !important; } /* 11. BUTTONS */ .button-expand-header { background: var(--background-color-base) !important; box-shadow: inset 0 0 0 2px #0f0f0f, inset 0 0 20px #42a2f180 !important; padding-right: 65px !important; font-size: 14px !important; white-space: normal !important; text-align: left !important; display: flex !important; align-items: center !important; border-radius: 4px !important; min-height: 60px !important; } .button-expand-header img { flex-shrink: 0 !important; width: 45px !important; height: 45px !important; object-fit: contain !important; margin-right: 6px !important; } /* 12. MAIN PAGE TITLE */ h1#firstHeading, .mw-body h1, .section-heading h1 { font-size: 1.5em !important; width: 100% !important; text-align: center !important; display: block !important; margin: 10px 0 !important; letter-spacing: 0.05em !important; } /* 13. TABS */ .header-container, .pre-content, .page-header-bar { display: flex !important; flex-direction: column !important; align-items: center !important; width: 100% !important; } .minerva__tab-container { display: flex !important; width: 100% !important; justify-content: stretch !important; margin-bottom: 5px !important; } .minerva__tab-container .tab { flex: 1 !important; text-align: center !important; } .page-actions-menu { width: 100% !important; display: block !important; } .page-actions-menu__list { display: flex !important; width: 100% !important; justify-content: space-around !important; padding: 0 !important; margin: 0 !important; list-style: none !important; } .page-actions-menu__list li { flex: 1 !important; display: flex !important; justify-content: center !important; } /* 14. TABLE STACK */ .mw-parser-output div[style*="display:flex"]:has(.wikitable) { display: flex !important; flex-direction: column !important; align-items: center !important; width: 100% !important; gap: 20px !important; } .mw-parser-output .wikitable td, .mw-parser-output .wikitable th { white-space: nowrap !important; word-break: normal !important; padding: 10px 5px !important; } /* 15. DLOG STUFF */ .dlog { font-size: 1em !important; max-width: 100% !important; padding: 0.5em !important; /* Optional: tightens the box for mobile */ } .dlog::before { zoom: 0.6; margin-bottom: 5px; display: block; width: fit-content; } /* 16. INLINE IMAGE STUFF */ .inline-image-template { width: 100% !important; max-width: 100% !important; box-sizing: border-box !important; display: block !important; margin: 1em 0 !important; } .inline-image-image { display: block !important; width: 100% !important; text-align: center; } .inline-image-image img, .inline-image-image > p > span > span > img { max-width: 100% !important; height: auto !important; width: auto !important; } .inline-image-caption { width: 100% !important; box-sizing: border-box !important; } .inline-image-caption > p { font-size: 0.7em !important; white-space: normal !important; } /* 17. OTHER */ .pre-dungeon p { font-size: 0.8em !important; padding: 0.7em 1em !important; } /* fixed 492px decor/book pages overflow a phone and force zoom-out */ .decor-page { width: 100% !important; max-width: 492px !important; height: auto !important; box-sizing: border-box !important; } .decor-page > p { padding: 1.5em !important; } } /* ============================================================ THE ARCHIVES — MAIN PAGE v2 Scoped entirely to .archive-page ([[Telos Realms Wiki]]). Built from the wiki's own vocabulary: kurva pixel frames, embossed Daedalus, Courier ledger notes, Minecraft palette. Shared classes (.mp-links, .mp-box, .dlog) untouched. ============================================================ */ .archive-page { --ar-accent: #42a2f1; --ar-accent-bright: #7cc2ff; --ar-cream: #feffe5; --ar-line: rgba(66, 162, 241, 0.18); --ar-panel: rgba(10, 14, 24, 0.85); --ar-panel-raised: rgba(15, 20, 33, 0.88); --ar-text: #dde5f2; --ar-text-dim: #93a0b8; --ar-gold: #ffc05f; --ar-ease: cubic-bezier(0.32, 0.72, 0, 1); --ar-ease-out: cubic-bezier(0.22, 1, 0.36, 1); max-width: 1280px; margin: 0 auto; font-family: var(--body-font-family); color: var(--ar-text); } /* --- one-time entry cascade (no looping motion) --- */ @keyframes ar-enter { from { opacity: 0; transform: translateY(12px); filter: blur(4px); } to { opacity: 1; transform: none; filter: none; } } .archive-page > * { animation: ar-enter 0.55s var(--ar-ease-out) both; } .archive-page > *:nth-child(1) { animation-delay: 0.05s; } .archive-page > *:nth-child(2) { animation-delay: 0.12s; } .archive-page > *:nth-child(3) { animation-delay: 0.19s; } .archive-page > *:nth-child(4) { animation-delay: 0.25s; } .archive-page > *:nth-child(5) { animation-delay: 0.30s; } .archive-page > *:nth-child(6) { animation-delay: 0.34s; } .archive-page > *:nth-child(n+7) { animation-delay: 0.38s; } /* --- hero: centered greeting panel --- */ .archive-hero { text-align: center; padding: 2.4em 2.4em 0; background: radial-gradient(ellipse at 50% -10%, rgba(66, 162, 241, 0.14), transparent 60%), var(--ar-panel); border-style: solid; border-image-source: url("/wiki/Special:Redirect/file/Wiki-border-kurva.png"); border-image-slice: 6; border-image-width: 6px; border-image-repeat: repeat repeat; } .archive-hero p { margin: 0; } .ar-hero-emblem img { filter: drop-shadow(0 0 18px rgba(66, 162, 241, 0.55)); } .ar-hero-eyebrow { margin-top: 0.9em; font-style: italic; font-size: 0.98em; color: #8493ad; } .ar-hero-title { font-family: var(--heading-font-family); font-size: clamp(2.8em, 6.5vw, 4.6em); line-height: 1.02; margin-top: 0.12em; color: var(--ar-cream); text-rendering: geometricPrecision; text-shadow: 0 0.06em 0 color-mix(in srgb, currentColor 50%, black), 0 0.12em 0 color-mix(in srgb, currentColor 10%, black), 0 0 0.2em currentColor; } .ar-hero-sub { margin: 0.6em auto 0; max-width: 38em; color: var(--ar-text-dim); font-size: 1.08em; line-height: 1.6; text-wrap: balance; } .archive-status { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.4em 2.4em; margin: 1.8em -2.4em 0; padding: 0.85em 1.5em 1em; border-top: 1px solid var(--ar-line); font-size: 0.92em; color: #7d92b3; } .ar-stat b { color: var(--ar-cream); font-weight: 600; margin-right: 0.15em; font-variant-numeric: tabular-nums; } .ar-stat-note { color: #54fc54; text-shadow: 1px 1px color-mix(in srgb, currentColor 30%, black); } /* --- D's welcome ledger + the three starting records --- */ .archive-comm { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 14px; margin-top: 14px; align-items: stretch; } .archive-transmission { background: var(--ar-panel); border-left: 3px solid var(--ar-accent); padding: 1.2em 1.6em 1.1em; box-shadow: inset 0 0 24px 4px rgba(66, 162, 241, 0.07); } .ar-comm-eyebrow { font-family: 'Courier New', monospace; font-weight: 700; font-size: 0.88em; color: #7d92b3; } .ar-comm-greeting { font-family: var(--heading-font-family); font-size: 2em; margin-top: 0.3em; color: var(--ar-cream); text-rendering: geometricPrecision; text-shadow: 0 0.08em 0 color-mix(in srgb, currentColor 35%, black), 0 0 0.2em color-mix(in srgb, currentColor 60%, transparent); } .ar-comm-greeting .swap-silverling { color: var(--ar-accent-bright); width: 6.5em; } .archive-transmission p { margin: 0.8em 0 0; color: #bcc8dd; line-height: 1.62; } .ar-sign { margin-top: 0.45em; text-align: right; font-family: var(--heading-font-family); font-size: 1.7em; color: var(--ar-accent-bright); text-shadow: 0 0 14px rgba(66, 162, 241, 0.6), 0 2px 0 rgba(0, 0, 0, 0.6); } .ar-d { color: var(--ar-accent-bright); font-weight: 700; text-shadow: 0 0 12px rgba(66, 162, 241, 0.65); } .ar-silver { color: #cfd6e2; font-weight: 600; text-shadow: 0 0 10px rgba(207, 214, 226, 0.4); } .archive-directives { display: flex; flex-direction: column; gap: 10px; } .ar-directives-label { font-family: 'Courier New', monospace; font-weight: 700; font-size: 0.88em; color: #7d92b3; padding-left: 2px; } .ar-directive { display: flex; align-items: center; gap: 0.9em; flex: 1; padding: 0.6em 1em; background: var(--ar-panel-raised); border: 1px solid var(--ar-line); cursor: pointer; transition: background-color 0.22s var(--ar-ease), border-color 0.22s var(--ar-ease), transform 0.22s var(--ar-ease), box-shadow 0.22s var(--ar-ease); } .ar-directive:hover { background: rgba(24, 33, 54, 0.92); border-color: rgba(66, 162, 241, 0.5); transform: translateY(-1px); box-shadow: inset 0 0 16px 2px rgba(66, 162, 241, 0.15), 0 4px 14px rgba(0, 0, 0, 0.45); } .ar-directive:active { transform: translateY(0) scale(0.99); } .ar-directive p { margin: 0; } .ar-directive > a, .ar-directive > span[typeof] { flex-shrink: 0; } .ar-directive img { display: block; } .ar-directive-title a { font-family: var(--heading-font-family); font-size: 1.3em; line-height: 1; color: var(--ar-cream); text-decoration: none; text-shadow: 0 2px 0 color-mix(in srgb, currentColor 20%, black); } .ar-directive-title a:visited { color: var(--ar-cream); } .ar-directive-sub { color: var(--ar-text-dim); font-size: 0.88em; margin-top: 2px; } .ar-directive-go { margin-left: auto; font-size: 1.5em; line-height: 1; color: #5e7795; transition: transform 0.22s var(--ar-ease), color 0.22s var(--ar-ease); } .ar-directive:hover .ar-directive-go { transform: translateX(3px); color: var(--ar-accent-bright); } /* --- section headers: ❖ marker, embossed Daedalus, D's aside --- */ .ar-sect { display: flex; align-items: baseline; gap: 0.6em; margin: 2.2em 0 0.9em; } .ar-sect-mark { color: var(--ar-accent-bright); text-shadow: 0 0 10px rgba(124, 194, 255, 0.9), 0 0 5px rgba(124, 194, 255, 0.6); } .ar-sect-name { font-family: var(--heading-font-family); font-size: 2.1em; line-height: 1; color: var(--ar-cream); text-rendering: geometricPrecision; text-shadow: 0 0.06em 0 color-mix(in srgb, currentColor 50%, black), 0 0.12em 0 color-mix(in srgb, currentColor 10%, black), 0 0 0.2em currentColor; } .ar-sect-sub { font-style: italic; color: #7d8ba5; font-size: 0.95em; margin-left: 0.3em; } .ar-sect::after { content: ''; flex: 1; align-self: center; height: 1px; background: linear-gradient(90deg, rgba(66, 162, 241, 0.5), var(--ar-line) 40%, transparent); } /* --- record cards --- */ .archive-grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 14px; } .ar-card { display: flex; align-items: flex-start; gap: 1em; grid-column: span 4; padding: 1.05em 1.15em 1em; background-color: var(--ar-panel); border-style: solid; border-image-source: url("/wiki/Special:Redirect/file/Wiki-border-kurva.png"); border-image-slice: 6; border-image-width: 6px; border-image-repeat: repeat repeat; cursor: pointer; transition: background-color 0.22s var(--ar-ease), transform 0.22s var(--ar-ease), box-shadow 0.22s var(--ar-ease); } .ar-w6 { grid-column: span 6; } .ar-w4 { grid-column: span 4; } .ar-w3 { grid-column: span 3; } .ar-card:hover { background-color: rgba(20, 28, 46, 0.92); transform: translateY(-2px); box-shadow: inset 0 0 20px 4px rgba(66, 162, 241, 0.16), 0 8px 22px rgba(0, 0, 0, 0.45), 0 0 22px -6px rgba(66, 162, 241, 0.45); } .ar-card:active { transform: translateY(0) scale(0.99); } .ar-card > a, .ar-card > span[typeof] { flex-shrink: 0; } .ar-card img { display: block; filter: drop-shadow(0 4px 8px rgba(0, 0, 0, 0.6)); transition: transform 0.22s var(--ar-ease); } .ar-card:hover img { transform: translateY(-2px); } .ar-card-body { flex: 1; min-width: 0; } .ar-card-titles { display: flex; align-items: baseline; gap: 0.7em; flex-wrap: wrap; } .ar-card-titles p { margin: 0; } .ar-card-titles a { font-family: var(--heading-font-family); font-size: 1.5em; line-height: 1.05; color: var(--ar-cream); text-decoration: none; text-rendering: geometricPrecision; text-shadow: 0 0.08em 0 color-mix(in srgb, currentColor 35%, black), 0 0 0.15em color-mix(in srgb, currentColor 40%, transparent); transition: text-shadow 0.2s var(--ar-ease); } .ar-card-titles a:visited { color: var(--ar-cream); } .ar-card:hover .ar-card-titles a { text-shadow: 0 0.08em 0 color-mix(in srgb, currentColor 35%, black), 0 0 0.4em currentColor; } /* little colored annotations, same palette as the item infoboxes */ .ar-card-tag { font-size: 0.8em; font-weight: 600; letter-spacing: 0.03em; white-space: nowrap; text-shadow: 1px 1px color-mix(in srgb, currentColor 20%, black); } .ar-mc-yellow { color: #fcfc54; } .ar-mc-aqua { color: #54fcfc; } .ar-mc-red { color: #fc5454; } .ar-mc-green { color: #54fc54; } .ar-mc-gold { color: #ffc05f; } .ar-card-desc { margin-top: 0.45em; color: var(--ar-text-dim); font-size: 0.93em; line-height: 1.58; } .ar-card-desc p { margin: 0; } .ar-card-links { margin-top: 0.75em; padding-top: 0.65em; border-top: 1px solid rgba(66, 162, 241, 0.14); font-size: 0.9em; line-height: 1.9; color: #51617c; } .ar-card-links p { margin: 0; } .ar-see { font-style: italic; color: #5d6c85; margin-right: 0.3em; } .ar-card-links a { color: var(--ar-gold); text-decoration: none; } .ar-card-links a:visited { color: var(--ar-gold); } .ar-card-links a:hover { color: #ffd28a; text-decoration: underline; } /* --- footer --- */ .archive-footer { margin-top: 2.4em; padding: 1.5em 1em 0.5em; border-top: 1px solid var(--ar-line); text-align: center; } .ar-footer-quote { font-style: italic; font-size: 1.05em; color: #aab6cc; max-width: 42em; margin: 0 auto 0.9em; text-wrap: balance; } .ar-footer-quote .ar-d { font-style: normal; } .ar-footer-line { color: #7e8ca6; font-size: 0.95em; } .ar-footer-links { margin-top: 0.7em; font-size: 0.92em; color: #51617c; } .ar-footer-links a { color: var(--ar-gold); text-decoration: none; } .ar-footer-links a:hover { text-decoration: underline; } /* --- keyboard focus --- */ .archive-page a:focus-visible { outline: 2px solid var(--ar-accent-bright); outline-offset: 2px; } /* --- responsive --- */ @media screen and (max-width: 1060px) { .archive-comm { grid-template-columns: 1fr; } .ar-w6 { grid-column: span 12; } .ar-w4, .ar-w3 { grid-column: span 6; } } @media screen and (max-width: 720px) { .archive-grid { display: flex; flex-direction: column; } .archive-hero { padding: 1.6em 1.2em 0; } .archive-status { margin-inline: -1.2em; padding-inline: 1.2em; gap: 0.4em 1.4em; } .ar-sect { flex-wrap: wrap; margin-top: 1.8em; } .ar-sect-name { font-size: 1.6em; } .ar-sect-sub { flex-basis: 100%; margin-left: 1.5em; } .ar-card { padding: 1em; } .ar-comm-greeting { font-size: 1.6em; } } /* --- reduced motion: everything appears instantly --- */ @media (prefers-reduced-motion: reduce) { .archive-page > *, .archive-page .swap-silverling::before, .archive-page .swap-silverling::after { animation: none !important; } .archive-page *, .archive-page *::before, .archive-page *::after { transition-duration: 0.01ms !important; } } /* ============================================================ END THE ARCHIVES — MAIN PAGE v2 ============================================================ */ /* ============================================================ DUNGEON PAGES v2 1) .dungeon-index / .dungeon-jump — the [[Dungeons]] list page, danger-graded via --tier (green → void) 2) .npc-infobox — compact infobox chrome + single-line loot rows; model renders keep their template sizes 3) .dungeon-page — wiki-article layout for dungeon pages Heading selectors are written long to out-rank Minerva's `.content .mw-parser-output .mw-heading { display:block }`. ============================================================ */ /* smooth anchor jumps (jump bar, TOC links) */ @media (prefers-reduced-motion: no-preference) { html { scroll-behavior: smooth; } } /* --- 1) the dungeon index --- */ /* danger palette, shared by pills, markers, rules, tile glows */ .tier-g, .dj-g { --tier: #54fc54; } .tier-o, .dj-o { --tier: #fca854; } .tier-p, .dj-p { --tier: #cd08cd; } .tier-r, .dj-r { --tier: #c20f0f; } .tier-u, .dj-u { --tier: #8d9f97; } /* jump bar: one tap to any tier bracket */ .dungeon-jump { display: flex; flex-wrap: wrap; gap: 8px; margin: 0.9em 0 0.3em; } .dungeon-jump .dj { display: inline-block; padding: 0.3em 0.85em; background: rgba(15, 20, 33, 0.88); border: 1px solid color-mix(in srgb, var(--tier, #42a2f1) 30%, transparent); border-radius: 2px; font-weight: 700; font-size: 0.95em; color: var(--tier, #dde5f2); text-shadow: 1px 1px color-mix(in srgb, currentColor 20%, black); transition: border-color 0.18s cubic-bezier(0.32, 0.72, 0, 1), background-color 0.18s cubic-bezier(0.32, 0.72, 0, 1), transform 0.18s cubic-bezier(0.32, 0.72, 0, 1); } .dungeon-jump .dj a { color: inherit; text-decoration: none; } .dungeon-jump .dj:hover { background: rgba(24, 33, 54, 0.92); border-color: color-mix(in srgb, var(--tier, #42a2f1) 70%, transparent); transform: translateY(-1px); } /* bracket headings — long selectors beat Minerva's .mw-heading{display:block} */ .dungeon-index .mw-heading3, .content .mw-parser-output .dungeon-index .mw-heading3 { display: flex; align-items: center; gap: 0.7em; margin: 1.6em 0 0.8em; border: none; min-width: 0; } .dungeon-index .mw-heading3::before { content: '❖'; font-size: 1.1em; color: var(--tier, #7cc2ff); text-shadow: 0 0 10px currentColor, 1px 1px color-mix(in srgb, currentColor 20%, black); } .dungeon-index .mw-heading3::after { content: ''; flex: 1; height: 1px; background: linear-gradient(90deg, color-mix(in srgb, var(--tier, #42a2f1) 50%, transparent), color-mix(in srgb, var(--tier, #42a2f1) 15%, transparent) 45%, transparent); } .dungeon-index h3, .content .mw-parser-output .dungeon-index h3 { flex: 0 0 auto; margin: 0; font-family: var(--heading-font-family); font-size: 2em; line-height: 1; font-weight: normal; color: #feffe5; text-rendering: geometricPrecision; text-shadow: 0 0.06em 0 color-mix(in srgb, currentColor 50%, black), 0 0.12em 0 color-mix(in srgb, currentColor 10%, black), 0 0 0.2em currentColor; } /* portal tiles: .mp-links supplies the kurva frame + whole-tile click JS */ .dungeon-grid { font-size: 1em; } .dungeon-grid > ul { justify-content: flex-start; gap: 12px; margin: 0; } .dungeon-grid > ul > li { gap: 4px; padding: 0.9em 1.1em 0.8em; background-color: rgba(10, 14, 24, 0.85); transition: background-color 0.22s cubic-bezier(0.32, 0.72, 0, 1), transform 0.22s cubic-bezier(0.32, 0.72, 0, 1), box-shadow 0.22s cubic-bezier(0.32, 0.72, 0, 1); } .dungeon-grid > ul > li:hover { background-color: rgba(20, 28, 46, 0.92); transform: translateY(-2px); box-shadow: inset 0 0 20px 4px color-mix(in srgb, var(--tier, #42a2f1) 15%, transparent), 0 8px 22px rgba(0, 0, 0, 0.45), 0 0 24px -6px var(--tier, #42a2f1); } /* --- 2) boss & enemy infoboxes --- */ .druid-container.npc-infobox { max-width: 21.5em; padding: 0.35em; font-size: 0.94em; } .npc-infobox .druid-title { font-size: 1.7em; min-height: auto; padding: 0.3em 0.5em; } .npc-infobox .druid-section { font-size: 1.05em; padding: 2px; } .npc-infobox div.druid-row > .druid-label, .npc-infobox div.druid-row > .druid-data { padding-block: 1px; } /* loot: one line per drop — name + icon left, % right. The old `.druid-row[data-druid-section-row="Loot"] div` rule sets display:block, width:100% and justify-content:space-between on every div in here; width:100% + padding overflows the box (clipped %s), so everything below resets to width:auto / border-box. */ .npc-infobox .druid-row[data-druid-section-row="Loot"] div { padding: 0; display: block; width: auto; box-sizing: border-box; } .npc-infobox .druid-row[data-druid-section-row="Loot"] > .druid-data { flex: 1 1 auto; min-width: 0; width: 100%; } .npc-infobox .druid-row[data-druid-section-row="Loot"] .loot-category-header, .npc-infobox .loot-category-header { display: flex; align-items: center; justify-content: flex-start; gap: 0.45em; padding: 0.25em 0.5em; margin: 0.45em 0 0.15em; } .npc-infobox .loot-category-header img { width: 24px; height: auto; } .npc-infobox .loot-category-title { font-size: 0.9em; } .npc-infobox .druid-row[data-druid-section-row="Loot"] .loot-item-row, .npc-infobox .loot-item-row { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 0.15em 0.6em; padding: 0.12em 0.4em 0.12em 0.6em; margin: 0; font-size: 0.95em; line-height: 1.35; } .npc-infobox .druid-row[data-druid-section-row="Loot"] .loot-data-infobox, .npc-infobox .loot-data-infobox { display: flex; align-items: center; gap: 0.45em; min-width: 0; } .npc-infobox .loot-data-infobox img { max-height: 26px; width: auto; } .npc-infobox .boss-percent { font-size: 1em; flex-shrink: 0; } /* enemy boxes inside a dungeon page: compact cards */ .dungeon-enemies .druid-container.npc-infobox { max-width: 18em; font-size: 0.9em; float: none; margin: 0.4em; } .dungeon-enemies .npc-infobox .druid-title { font-size: 1.35em; } /* --- 3) individual dungeon pages (.dungeon-page wrapper) --- */ /* flat sections: the heading rule does the separating, not boxes */ .dungeon-page .hoverbox, .dungeon-page .hoverbox:hover { background: none; background-color: transparent; border-top: 0; border-radius: 0; box-shadow: none; padding: 0 0.2em 0.2em; margin: 0.2em 0 0.6em; } /* wiki-style headings: ❖ marker + underline rule. Long selectors beat Minerva's display:block / flex-basis:0. */ .dungeon-page .mw-heading2, .content .mw-parser-output .dungeon-page .mw-heading2 { display: flex; align-items: center; gap: 0.55em; margin: 1em 0 0.45em; padding-bottom: 0.22em; border-bottom: 1px solid rgba(66, 162, 241, 0.3); min-width: 0; } .dungeon-page .mw-heading2::before { content: '❖'; color: #7cc2ff; text-shadow: 0 0 10px rgba(124, 194, 255, 0.9); } .dungeon-page h2, .content .mw-parser-output .dungeon-page h2 { flex: 0 0 auto; font-size: 1.9em; margin: 0; } .dungeon-page > p, .dungeon-page .hoverbox > p { line-height: 1.65; max-width: 72ch; } /* attack patterns: slim ledger rows */ .dungeon-page .pre-dungeon p { margin: 0.4em 0; padding: 0.45em 0.85em; font-size: 0.97em; border-radius: 2px; border-left: 2px solid rgba(66, 162, 241, 0.45); background: linear-gradient(90deg, rgba(66, 162, 241, 0.07), rgba(26, 26, 34, 0.6) 30%, transparent 96%); box-shadow: none; backdrop-filter: none; } .dungeon-page .pre-dungeon p::before { display: none; } .dungeon-page .dlog { font-size: 1.4em; margin-bottom: 0.8em; } .dungeon-page .mw-collapsible { padding-top: 0.6em; } .dungeon-page .button-expand-header { font-size: 14px; padding: 10px 50px 10px 14px; } /* dialogue tables must wrap, never force sideways scroll */ .dungeon-page .wikitable td, .dungeon-page .wikitable th, .mw-parser-output .dungeon-page .wikitable td, .mw-parser-output .dungeon-page .wikitable th { white-space: normal !important; word-break: normal !important; } /* anchor jumps land clear of the (mobile-sticky) jump bar */ .dungeon-index .mw-heading3 { scroll-margin-top: 4.5em; } /* --- mobile: the dungeon section must be readable one-handed --- */ @media screen and (max-width: 720px) { /* jump bar pins to the top and scrolls sideways — one thumb-swipe to reach any tier bracket from anywhere on the page */ .dungeon-jump { position: sticky; top: 0; z-index: 5; flex-wrap: nowrap; overflow-x: auto; gap: 6px; padding: 0.5em 6px; margin: 0.6em -6px 0.3em; background: rgba(10, 13, 20, 0.96); box-shadow: 0 4px 14px rgba(0, 0, 0, 0.5); -webkit-overflow-scrolling: touch; scrollbar-width: none; } .dungeon-jump::-webkit-scrollbar { display: none; } .dungeon-jump .dj { flex-shrink: 0; padding: 0.45em 0.8em; font-size: 1em; } .dungeon-index .mw-heading3 { margin-top: 1.3em; } .dungeon-index h3, .content .mw-parser-output .dungeon-index h3 { font-size: 1.5em; } /* two-up portal tiles, capped images (overrides the old 45px cap) */ .dungeon-grid > ul { display: grid !important; grid-template-columns: 1fr 1fr !important; gap: 8px !important; } .dungeon-grid > ul > li { width: 100% !important; min-height: 0 !important; margin: 0 !important; padding: 0.7em 0.4em !important; background: rgba(10, 14, 24, 0.85) !important; } .dungeon-grid > ul > li img { max-width: 116px !important; height: auto !important; margin: 0 auto !important; } /* infoboxes go full width and stack */ .druid-container.npc-infobox { max-width: 100%; } .dungeon-enemies { flex-direction: column; align-items: center; } .dungeon-enemies .druid-container.npc-infobox { width: 100%; max-width: 24em; } .dungeon-page .hoverbox, .dungeon-page .hoverbox:hover { margin-inline: 0; padding-inline: 0; } .dungeon-page .pre-dungeon p { font-size: 0.88em; padding: 0.45em 0.7em; } .dungeon-page .dlog { font-size: 1.1em !important; } /* keep dialogue tables inside the screen */ .dungeon-page .wikitable { width: 100%; } } /* ============================================================ END DUNGEON PAGES v2 ============================================================ */ /* ============================================================ MOBILE READABILITY FIXES (added) Keeps page content from rendering wider than the phone screen (Minerva clips horizontal overflow, so over-wide content is lost off the right edge) and shrinks boss/enemy infoboxes from full-screen blocks back into readable cards. ============================================================ */ @media screen and (max-width: 720px) { /* nothing should size itself wider than the viewport */ .mw-parser-output, .dungeon-page, .hoverbox, .dungeon-clear, .lore, .pre-dungeon { max-width: 100% !important; box-sizing: border-box; overflow-wrap: break-word; } /* .pre-dungeon is `width: fit-content`; a long non-wrapping heading inside it stretches the whole section past the screen. Let it fill the available width instead. */ .pre-dungeon { width: auto !important; } /* ❖-marker headings are flex rows; the heading was `flex: 0 0 auto` so it could neither shrink nor wrap and ran off the screen edge. Allow the row to wrap and the heading to shrink + wrap its text. */ .dungeon-page .mw-heading2, .content .mw-parser-output .dungeon-page .mw-heading2, .dungeon-index .mw-heading3, .content .mw-parser-output .dungeon-index .mw-heading3 { /* keep the ❖ marker on the same flex line as the title and let the TITLE wrap inside itself — don't wrap the flex items, or the marker gets stranded on its own line */ flex-wrap: nowrap !important; align-items: baseline !important; min-width: 0 !important; } .dungeon-page h2, .content .mw-parser-output .dungeon-page h2, .dungeon-index h3, .content .mw-parser-output .dungeon-index h3 { flex: 0 1 auto !important; min-width: 0 !important; font-size: 1.35em !important; overflow-wrap: anywhere; word-break: break-word; } /* boss / enemy infoboxes: centered cards, not full-screen blocks (the 3D render + bossbar were filling the whole width) */ .dungeon-page .druid-container.npc-infobox, .dungeon-enemies .druid-container.npc-infobox { max-width: 19em !important; margin: 0.6em auto !important; font-size: 0.82em; } } /* ============================================================ MOBILE — FLATTEN DECORATION FOR ACCESSIBILITY (added) On phones, trade the neon glow / frame chrome / motion for flat, solid, high-contrast surfaces and clean text. Desktop is untouched. ============================================================ */ @media screen and (max-width: 720px) { /* 1) blurry colored text-shadows wreck legibility — remove them from body text entirely... */ .mw-parser-output p, .mw-parser-output li, .mw-parser-output dd, .mw-parser-output dt, .mw-parser-output td, .mw-parser-output th, .mw-parser-output a, .druid-data, .druid-label, .npc-infobox div.druid-row > .druid-label, .npc-infobox div.druid-row > .druid-data, .boss-percent, .loot-category-title, .footer-content > ul > li > a, .footer-section > ul > li, .ar-card-titles a, .ar-directive-title a, .ar-card-desc { text-shadow: none !important; } /* ...and reduce headings to a single clean dark shadow (kept for legibility over the page's background image) */ .mw-parser-output h1, .mw-parser-output h2, .mw-parser-output h3, .dungeon-page h2, .dungeon-index h3, .druid-title, .druid-section, .druid-infobox .druid-title, .npc-infobox .druid-title, .npc-infobox .druid-section, .mp-box h2, .mp-box .welcome-message, .ar-hero-title, .ar-sect-name { text-shadow: 0 1px 2px rgba(0, 0, 0, 0.9) !important; } /* 2) the page frame (nexus border-image + blue inner glow) eats width and contrast — drop it on phones */ #bodyContent { border-image: none !important; border: none !important; box-shadow: none !important; padding: 1em 0.7em !important; } /* 3) flatten neon box-shadow glows + backdrop blur on containers */ .npc-infobox, .druid-container, .wikitable, table.wikitable, .dlog, .pre-dungeon p, .hoverbox, .hoverbox:hover, .mp-box, #mp-box-welcome, .class-box, .main-welcome, .button-expand-header, .tab-gif-container, .gif-display-area, .tab-gif-display-area, .inline-image-image > p > span > span > img, .ar-card, .ar-directive, .archive-hero, .archive-transmission { box-shadow: none !important; backdrop-filter: none !important; -webkit-backdrop-filter: none !important; } /* 4) replace the border-image frames (tables, portal tiles, infoboxes, archive cards) with flat solid borders + bg */ .wikitable, table.wikitable, .npc-infobox, .druid-container.npc-infobox, .mp-links > ul > li, .ar-card, .archive-hero { border-image: none !important; border: 1px solid rgba(66, 162, 241, 0.35) !important; background: #15151c !important; } /* 5) hide purely-decorative glow bars / scan lines (NOT the ❖ heading markers, which are real content) */ .mp-box::before, .mp-box::after, .mp-box h2::after, .mp-box .welcome-message::before, .mp-box .welcome-message::after, .npc-infobox::before, .npc-infobox::after, .npc-infobox .druid-title::before, .npc-infobox .druid-title::after, .npc-infobox .druid-section::after, .mw-footer::before, .tab-gif-container::before, .gif-display-area::before, .dlog::after, .pre-dungeon p::before, .inline-image-caption > p::before { display: none !important; } /* 6) stop the looping pulse / scan / shimmer animations */ .npc-infobox::before, .mw-footer::before, .boss-infobox-subtitle, .boss-infobox-subtitle::before, .dlog::after, .mp-box .welcome-message, .mp-main > .mp-links > ul > li::before, .archive-page > * { animation: none !important; } } /* ============================================================ MOBILE — READABLE TABLES (added) The forced `white-space: nowrap` made text-heavy cells refuse to wrap, so tables ballooned far wider than the phone and Minerva clipped them to a sliver. Let cells wrap so the table fits the screen; shrink/contain wide bits; give genuinely wide all-number tables a horizontal swipe instead. No `display` change on the generic rule, so layout tables are unaffected. ============================================================ */ @media screen and (max-width: 720px) { .mw-parser-output .wikitable, .mw-parser-output table.wikitable { width: 100% !important; margin-inline: 0 !important; } /* the key fix: cells wrap instead of forcing the table off-screen */ .mw-parser-output .wikitable td, .mw-parser-output .wikitable th { white-space: normal !important; word-break: normal !important; overflow-wrap: anywhere; font-size: 0.82em !important; padding: 6px 5px !important; vertical-align: top; } /* oversized in-cell icons (e.g. the 128px ruleset banners) */ .mw-parser-output .wikitable td img, .mw-parser-output .wikitable th img { max-width: 64px !important; height: auto !important; } /* math formulas don't wrap; shrink them and let any that are still too wide scroll inside their own box. overflow:auto also drops their min-content width to 0 so they stop stretching the cell. */ .wikitable div[style*="font-size:150%"], .wikitable div[style*="font-size: 150%"] { font-size: 105% !important; max-width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; } .wikitable .mwe-math-element, .wikitable .mwe-math-fallback-image-inline, .wikitable .mwe-math-fallback-image-display { max-width: 100%; height: auto; } /* the 8-column "Max Base Class Stats" table is all short numbers — a clean left-to-right swipe reads far better than cramped wrap */ #mp-box-basestats .wikitable { display: block; width: -moz-max-content; width: max-content; max-width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; } #mp-box-basestats .wikitable td, #mp-box-basestats .wikitable th { white-space: nowrap !important; } }
common.js (talk) (Translate) /* Any JavaScript here will be loaded for all users on every page load. */
/* Any JavaScript here will be loaded for all users on every page load. */ /* DRUID */ $(function () { $(".druid-main-images-label").off("click"); $(".druid-main-images-label").click(function () { var $parent = $(this).closest(".druid-container"); $parent.find(".druid-toggleable").removeClass("focused"); var i = $(this).attr("data-druid"); $parent.find(".druid-toggleable[data-druid=" + i + "]").addClass("focused"); }); $(".druid-collapsible").off("click"); $(".druid-collapsible").click(function () { var kind = $(this).attr("data-druid-section"); $(this).toggleClass("druid-collapsible-collapsed"); $(this) .closest(".druid-container") .find("[data-druid-section-row=" + kind + "]") .toggleClass("druid-collapsed"); }); $(".druid-container").on("click", ".worn-toggle-button", function (e) { e.preventDefault(); e.stopPropagation(); var $btn = $(this); var $container = $btn.closest('.has-worn-variant'); var $base = $container.find('.image-base'); var $worn = $container.find('.image-worn'); if ($container.hasClass('is-worn-active')) { $container.removeClass('is-worn-active'); $worn.hide(); $base.show(); $btn.text('Show Worn'); } else { $container.addClass('is-worn-active'); $base.hide(); $worn.show(); $btn.text('Show Normal'); } console.log("Toggle state: " + ($container.hasClass('is-worn-active') ? "Worn" : "Normal")); }); }); /* End DRUID */ /* Sound */ (function () { let currentAudio = null; let currentBtn = null; $(document).on('click', '.sound-button', function () { const $btn = $(this); const soundUrl = $btn.data('sound-file'); if (!soundUrl) return; if (currentAudio && currentBtn && currentBtn[0] === $btn[0]) { if (!currentAudio.paused) { currentAudio.pause(); currentAudio.currentTime = 0; $btn.removeClass('playing'); return; // Stop here } } if (currentAudio) { currentAudio.pause(); currentAudio.currentTime = 0; $('.sound-button').removeClass('playing'); } const audio = new Audio(soundUrl); currentAudio = audio; currentBtn = $btn; $btn.addClass('playing'); audio.play().catch(function(error) { console.error("Playback failed:", error); $btn.removeClass('playing'); }); audio.onended = function() { $btn.removeClass('playing'); currentAudio = null; currentBtn = null; }; }); })(); /* End Sound */ /* [[Template:Spoiler]] */ $(function () { $('.spoiler-content') .off('click') // in case this code is loaded twice .on('click', function(e){ $(this).toggleClass('show'); }).find('a').on('click', function(e){ e.stopPropagation(); }); }); /* End Template:Spoiler */ /* Link to imported modules from Lua code */ $(function() { var config = mw.config.get([ 'wgCanonicalNamespace', 'wgFormattedNamespaces' ]); if (config.wgCanonicalNamespace !== 'Module') { return; } var localizedNamespace = config.wgFormattedNamespaces[828]; $('.s1, .s2, .s').each(function() { var $this = $(this); var html = $this.html(); var quote = html[0]; var isLongStringQuote = quote === '['; var quoteRE = new RegExp('^\\' + quote + '|\\' + quote + '$', 'g'); if (isLongStringQuote) { quoteRE = /^\[\[|\]\]$/g; } var name = html.replace(quoteRE, ''); var isEnglishPrefix = name.startsWith('Module:'); var isLocalizedPrefix = name.startsWith(localizedNamespace + ':'); var isDevPrefix = name.startsWith('Dev:'); if (isEnglishPrefix || isLocalizedPrefix || isDevPrefix) { var attrs = { href: mw.util.getUrl(name) }; if (isDevPrefix) { attrs.href = 'https://commons.wiki.gg/wiki/Module:' + mw.util.wikiUrlencode(name.replace('Dev:', '')); attrs.target = '_blank'; attrs.rel = 'noopener'; } var link = mw.html.element('a', attrs, name); var str = quote + link + quote; if (isLongStringQuote) { str = '[[' + link + ']]'; } $this.html(str); } }); }); /* dynamic gif displayer ONLY TOUCH IF YOU KNOW WHAT YOU ARE DOING */ (function() { 'use strict'; console.log('Dynamic GIF Displayer: Script loading...'); // Configuration const CONFIG = { containerClass: 'dynamic-gif-container', displayClass: 'gif-display-area', autoExpand: true, expandDelay: 200, collapseDelay: 1000 }; let expandTimer = null; let collapseTimer = null; let currentGif = null; function safeCreateError(message) { const div = document.createElement('div'); div.className = 'gif-error'; div.textContent = message; return div; } function safeCreatePlaceholder(message) { const div = document.createElement('div'); div.className = 'gif-placeholder'; div.textContent = message; return div; } function init() { console.log('Dynamic GIF Displayer: Initializing...'); const containers = document.querySelectorAll('.' + CONFIG.containerClass); console.log('Dynamic GIF Displayer: Found', containers.length, 'containers'); containers.forEach(container => { console.log('Dynamic GIF Displayer: Setting up container', container.id); setupContainer(container); attachTooltipListeners(container); }); } function setupContainer(container) { const displayArea = container.querySelector('.' + CONFIG.displayClass); if (!displayArea) { console.error('Dynamic GIF Displayer: No display area found'); return; } displayArea.addEventListener('mouseenter', () => { clearTimeout(collapseTimer); }); displayArea.addEventListener('mouseleave', () => { scheduleCollapse(container); }); } function attachTooltipListeners(container) { console.log('Dynamic GIF Displayer: Attaching tooltip listeners...'); const gifMap = buildGifMap(container); console.log('Dynamic GIF Displayer: GIF map', gifMap); const tooltips = document.querySelectorAll('.advanced-tooltip'); console.log('Dynamic GIF Displayer: Found', tooltips.length, 'tooltips'); tooltips.forEach((tooltip) => { const skillTitle = tooltip.querySelector('.skill-title'); if (!skillTitle) return; const skillName = skillTitle.textContent.trim(); const gifUrl = gifMap[skillName]; console.log('Dynamic GIF Displayer: Processing tooltip:', skillName, 'GIF:', gifUrl); if (gifUrl) { // Remove old listeners if they exist if (tooltip._gifHoverHandler) { tooltip.removeEventListener('mouseenter', tooltip._gifHoverHandler); } if (tooltip._gifLeaveHandler) { tooltip.removeEventListener('mouseleave', tooltip._gifLeaveHandler); } tooltip._gifHoverHandler = () => handleTooltipHover(container, gifUrl, skillName); tooltip._gifLeaveHandler = () => scheduleCollapse(container); tooltip.addEventListener('mouseenter', tooltip._gifHoverHandler); tooltip.addEventListener('mouseleave', tooltip._gifLeaveHandler); console.log('Dynamic GIF Displayer: Attached listeners to', skillName); } }); } function buildGifMap(container) { const gifMap = {}; const listData = container.getAttribute('data-gif-list'); if (!listData) { console.error('Dynamic GIF Displayer: No data-gif-list attribute found'); return gifMap; } console.log('Dynamic GIF Displayer: Raw list data:', listData); const entries = listData.split(';').filter(e => e.trim()); console.log('Dynamic GIF Displayer: Found', entries.length, 'entries'); entries.forEach(entry => { const parts = entry.split(':'); if (parts.length >= 2) { const skillName = parts[0].trim(); const gifFile = parts.slice(1).join(':').trim(); if (skillName && gifFile) { let gifUrl; if (typeof mw !== 'undefined' && mw.config) { const scriptPath = mw.config.get('wgScriptPath') || ''; gifUrl = scriptPath + '/index.php?title=Special:Redirect/file/' + encodeURIComponent(gifFile); } else { gifUrl = '/index.php?title=Special:Redirect/file/' + encodeURIComponent(gifFile); } gifMap[skillName] = gifUrl; console.log('Dynamic GIF Displayer: Mapped "' + skillName + '" to', gifUrl); } } }); return gifMap; } function handleTooltipHover(container, gifUrl, skillName) { console.log('Dynamic GIF Displayer: Hovering', skillName); clearTimeout(collapseTimer); clearTimeout(expandTimer); // Show GIF after delay (allows checking if different from current) expandTimer = setTimeout(() => { showGif(container, gifUrl, skillName); }, CONFIG.expandDelay); } function showGif(container, gifUrl, skillName) { console.log('Dynamic GIF Displayer: Showing GIF for', skillName, gifUrl); const displayArea = container.querySelector('.' + CONFIG.displayClass); if (!displayArea) return; if (!container.classList.contains('expanded')) { container.classList.add('expanded'); console.log('Dynamic GIF Displayer: Expanded container'); } const imgContainer = displayArea.querySelector('.gif-image-container'); const caption = displayArea.querySelector('.gif-caption'); // Update caption immediately if (caption) { caption.textContent = skillName; caption.style.display = 'block'; } // Only reload if different GIF if (currentGif === gifUrl) { console.log('Dynamic GIF Displayer: Already showing', skillName); return; } // Set currentGif IMMEDIATELY to prevent race conditions currentGif = gifUrl; if (imgContainer) { const placeholder = imgContainer.querySelector('.gif-placeholder'); if (placeholder) { placeholder.remove(); } // Don't set dynamic height - let CSS handle fixed sizing const gifFilename = gifUrl.split('/').pop(); const decodedFilename = decodeURIComponent(gifFilename); if (decodedFilename.toLowerCase() === 'blank' || decodedFilename.toLowerCase() === 'blank.gif') { imgContainer.innerHTML = ''; imgContainer.appendChild(safeCreatePlaceholder('This node does not require a GIF due to its simplicity.')); imgContainer.classList.remove('loading'); } else { // Cancel any existing image loads const existingImg = imgContainer.querySelector('img'); if (existingImg) { existingImg.onload = null; existingImg.onerror = null; } imgContainer.classList.add('loading'); const img = document.createElement('img'); img.src = gifUrl; img.alt = skillName; // CSS handles sizing via .gif-image-container img rules // Store reference for validation const targetGif = gifUrl; img.onload = () => { // Only update if this is still the current target GIF if (currentGif === targetGif) { imgContainer.innerHTML = ''; imgContainer.appendChild(img); imgContainer.classList.remove('loading'); console.log('Dynamic GIF Displayer: GIF loaded successfully'); } else { console.log('Dynamic GIF Displayer: Discarded outdated load for', skillName); } }; img.onerror = () => { // Only update if this is still the current target GIF if (currentGif === targetGif) { imgContainer.innerHTML = ''; imgContainer.appendChild(safeCreateError('GIF not found: ' + decodedFilename)); imgContainer.classList.remove('loading'); console.error('Dynamic GIF Displayer: Failed to load GIF', gifUrl); } }; } } } function scheduleCollapse(container) { // Keep the most recent GIF displayed instead of clearing it // GIF will only change when a different skill node is hovered clearTimeout(collapseTimer); console.log('Dynamic GIF Displayer: Keeping current GIF displayed'); } window.toggleGifDisplay = function(containerId) { console.log('Dynamic GIF Displayer: Toggle clicked for', containerId); const container = document.getElementById(containerId); if (!container) { console.error('Dynamic GIF Displayer: Container not found', containerId); return; } clearTimeout(collapseTimer); if (container.style.display === 'none') { container.style.display = 'block'; } else { container.style.display = 'none'; } // Only clear the GIF when manually toggling the display off if (container.style.display === 'none') { const displayArea = container.querySelector('.' + CONFIG.displayClass); if (displayArea) { const imgContainer = displayArea.querySelector('.gif-image-container'); const caption = displayArea.querySelector('.gif-caption'); if (imgContainer) { imgContainer.innerHTML = ''; imgContainer.appendChild(safeCreatePlaceholder('Hover over a skill node to see its demonstration')); imgContainer.style.height = ''; imgContainer.style.minHeight = ''; } if (caption) { caption.textContent = ''; caption.style.display = 'none'; } } container.classList.remove('expanded'); currentGif = null; } }; if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', init); } else { init(); } window.addEventListener('load', init); if (typeof mw !== 'undefined' && mw.hook) { mw.hook('wikipage.content').add(init); } const observer = new MutationObserver(function(mutations) { let shouldReinit = false; mutations.forEach(function(mutation) { if (mutation.addedNodes.length) { mutation.addedNodes.forEach(function(node) { if (node.nodeType === 1 && ( node.classList && node.classList.contains('advanced-tooltip') || node.querySelector && node.querySelector('.advanced-tooltip') )) { shouldReinit = true; } }); } }); if (shouldReinit) { console.log('Dynamic GIF Displayer: Content changed, reinitializing...'); setTimeout(init, 100); } }); observer.observe(document.body, { childList: true, subtree: true }); console.log('Dynamic GIF Displayer: Script loaded'); })(); /* Make mp-links clickable anywhere in the box */ (function() { 'use strict'; function initMpLinksClick() { const mpLinkItems = document.querySelectorAll('.mp-links > ul > li'); mpLinkItems.forEach(item => { // Remove any existing click handler if (item._clickHandlerAttached) return; item.addEventListener('click', function(e) { // Find the first anchor tag in this li const link = this.querySelector('a'); if (link && e.target !== link) { // Trigger a click on the link link.click(); } }); item._clickHandlerAttached = true; }); } // Initialize on page load if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initMpLinksClick); } else { initMpLinksClick(); } // Reinitialize when content changes window.addEventListener('load', initMpLinksClick); if (typeof mw !== 'undefined' && mw.hook) { mw.hook('wikipage.content').add(initMpLinksClick); } // Watch for DOM changes const observer = new MutationObserver(function(mutations) { let shouldReinit = false; mutations.forEach(function(mutation) { if (mutation.addedNodes.length) { mutation.addedNodes.forEach(function(node) { if (node.nodeType === 1 && ( node.classList && node.classList.contains('mp-links') || node.querySelector && node.querySelector('.mp-links') )) { shouldReinit = true; } }); } }); if (shouldReinit) { setTimeout(initMpLinksClick, 100); } }); observer.observe(document.body, { childList: true, subtree: true }); })(); (function() { 'use strict'; console.log('Tab GIF Display: Script loading...'); // Configuration const CONFIG = { containerClass: 'tab-gif-container', displayClass: 'tab-gif-display-area', tabsClass: 'tab-gif-tabs', tabClass: 'tab-gif-tab', activeTabClass: 'tab-gif-active' }; let currentContainers = new Map(); let initAttempts = 0; const MAX_INIT_ATTEMPTS = 5; function safeCreateError(message) { const div = document.createElement('div'); div.className = 'gif-error'; div.textContent = message; return div; } function safeCreatePlaceholder(message) { const div = document.createElement('div'); div.className = 'gif-placeholder'; div.textContent = message; return div; } function init() { initAttempts++; console.log('Tab GIF Display: Initializing... (attempt ' + initAttempts + ')'); const containers = document.querySelectorAll('.' + CONFIG.containerClass); console.log('Tab GIF Display: Found', containers.length, 'containers'); if (containers.length === 0 && initAttempts < MAX_INIT_ATTEMPTS) { console.log('Tab GIF Display: No containers found yet, will retry...'); setTimeout(init, 500); return; } let setupCount = 0; containers.forEach(container => { const containerId = container.id; console.log('Tab GIF Display: Checking container', containerId); if (!currentContainers.has(containerId)) { console.log('Tab GIF Display: Setting up NEW container', containerId); const success = setupContainer(container); if (success) { currentContainers.set(containerId, container); setupCount++; } } else { console.log('Tab GIF Display: Container already initialized', containerId); } }); console.log('Tab GIF Display: Successfully set up', setupCount, 'containers'); } function setupContainer(container) { console.log('Tab GIF Display: setupContainer called for', container.id); const gifMap = buildGifMap(container); console.log('Tab GIF Display: GIF map built', gifMap); if (Object.keys(gifMap).length === 0) { console.error('Tab GIF Display: No GIFs found for container', container.id); const displayArea = container.querySelector('.' + CONFIG.displayClass); if (displayArea) { const imgContainer = displayArea.querySelector('.gif-image-container'); if (imgContainer) { imgContainer.innerHTML = ''; imgContainer.appendChild(safeCreateError('No GIFs configured. Check your list parameter.')); } } return false; } createTabs(container, gifMap); // Display the first GIF by default const firstTabName = Object.keys(gifMap)[0]; console.log('Tab GIF Display: Showing first tab:', firstTabName); showGif(container, gifMap[firstTabName], firstTabName); return true; } function buildGifMap(container) { const gifMap = {}; const listData = container.getAttribute('data-gif-list'); console.log('Tab GIF Display: Building map for container', container.id); console.log('Tab GIF Display: data-gif-list attribute:', listData); if (!listData) { console.error('Tab GIF Display: No data-gif-list attribute found on', container.id); return gifMap; } if (listData.trim() === '') { console.error('Tab GIF Display: data-gif-list is empty on', container.id); return gifMap; } const entries = listData.split(';').filter(e => e.trim()); console.log('Tab GIF Display: Found', entries.length, 'entries in list'); entries.forEach((entry, index) => { console.log('Tab GIF Display: Processing entry', index, ':', entry); const parts = entry.split(':'); if (parts.length < 2) { console.warn('Tab GIF Display: Invalid entry format (no colon):', entry); return; } const tabName = parts[0].trim(); const gifFile = parts.slice(1).join(':').trim(); console.log('Tab GIF Display: Parsed - Tab:', tabName, 'File:', gifFile); if (!tabName) { console.warn('Tab GIF Display: Empty tab name in entry:', entry); return; } if (!gifFile) { console.warn('Tab GIF Display: Empty gif file in entry:', entry); return; } let gifUrl; if (typeof mw !== 'undefined' && mw.config) { const scriptPath = mw.config.get('wgScriptPath') || ''; gifUrl = scriptPath + '/index.php?title=Special:Redirect/file/' + encodeURIComponent(gifFile); } else { gifUrl = '/index.php?title=Special:Redirect/file/' + encodeURIComponent(gifFile); } gifMap[tabName] = gifUrl; console.log('Tab GIF Display: Mapped "' + tabName + '" to', gifUrl); }); console.log('Tab GIF Display: Final map has', Object.keys(gifMap).length, 'entries'); return gifMap; } function createTabs(container, gifMap) { const tabsContainer = container.querySelector('.' + CONFIG.tabsClass); if (!tabsContainer) { console.error('Tab GIF Display: No tabs container found in', container.id); return; } console.log('Tab GIF Display: Creating tabs in', container.id); tabsContainer.innerHTML = ''; let isFirst = true; let tabCount = 0; Object.keys(gifMap).forEach(tabName => { const tab = document.createElement('button'); tab.className = CONFIG.tabClass; tab.textContent = tabName; tab.setAttribute('data-tab-name', tabName); tab.type = 'button'; if (isFirst) { tab.classList.add(CONFIG.activeTabClass); isFirst = false; } tab.addEventListener('click', () => { console.log('Tab GIF Display: Tab clicked:', tabName); handleTabClick(container, gifMap, tabName); }); tabsContainer.appendChild(tab); tabCount++; console.log('Tab GIF Display: Created tab button for', tabName); }); console.log('Tab GIF Display: Created', tabCount, 'tabs total'); } function handleTabClick(container, gifMap, tabName) { console.log('Tab GIF Display: Handling tab click for', tabName); const tabs = container.querySelectorAll('.' + CONFIG.tabClass); tabs.forEach(tab => { if (tab.getAttribute('data-tab-name') === tabName) { tab.classList.add(CONFIG.activeTabClass); } else { tab.classList.remove(CONFIG.activeTabClass); } }); const gifUrl = gifMap[tabName]; showGif(container, gifUrl, tabName); } function showGif(container, gifUrl, tabName) { console.log('Tab GIF Display: Showing GIF for', tabName, '-', gifUrl); const displayArea = container.querySelector('.' + CONFIG.displayClass); if (!displayArea) { console.error('Tab GIF Display: No display area found'); return; } const rawSize = container.getAttribute('data-gif-size') || '400'; const gifSize = rawSize.replace(/[^0-9]/g, '') || '400'; const imgContainer = displayArea.querySelector('.gif-image-container'); const caption = displayArea.querySelector('.gif-caption'); if (imgContainer) { const placeholder = imgContainer.querySelector('.gif-placeholder'); if (placeholder) { placeholder.remove(); } imgContainer.style.height = gifSize + 'px'; imgContainer.style.minHeight = gifSize + 'px'; const gifFilename = gifUrl.split('/').pop(); const decodedFilename = decodeURIComponent(gifFilename); if (decodedFilename.toLowerCase() === 'blank' || decodedFilename.toLowerCase() === 'blank.gif') { imgContainer.innerHTML = ''; imgContainer.appendChild(safeCreatePlaceholder('No GIF available for this tab.')); imgContainer.classList.remove('loading'); } else { const oldImg = imgContainer.querySelector('img'); const img = document.createElement('img'); img.src = gifUrl; img.alt = tabName; img.style.maxHeight = gifSize + 'px'; img.style.opacity = '0'; img.style.position = 'absolute'; img.style.transition = 'opacity 0.2s ease'; img.onload = () => { if (oldImg) { oldImg.style.transition = 'opacity 0.15s ease'; oldImg.style.opacity = '0'; setTimeout(() => { imgContainer.innerHTML = ''; img.style.position = 'relative'; img.style.opacity = '1'; imgContainer.appendChild(img); imgContainer.classList.remove('loading'); }, 150); } else { imgContainer.innerHTML = ''; img.style.position = 'relative'; img.style.opacity = '1'; imgContainer.appendChild(img); imgContainer.classList.remove('loading'); } console.log('Tab GIF Display: GIF loaded successfully'); }; img.onerror = () => { imgContainer.innerHTML = ''; imgContainer.appendChild(safeCreateError('GIF not found: ' + decodedFilename)); imgContainer.classList.remove('loading'); console.error('Tab GIF Display: Failed to load GIF', gifUrl); }; if (!oldImg) { imgContainer.appendChild(img); imgContainer.classList.add('loading'); } } } if (caption) { caption.textContent = tabName; caption.style.display = 'block'; } } window.toggleTabGifDisplay = function(containerId) { console.log('Tab GIF Display: Toggle clicked for', containerId); const container = document.getElementById(containerId); if (!container) { console.error('Tab GIF Display: Container not found', containerId); return; } if (container.style.display === 'none') { container.style.display = 'block'; } else { container.style.display = 'none'; } }; if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', init); } else { init(); } window.addEventListener('load', init); if (typeof mw !== 'undefined' && mw.hook) { mw.hook('wikipage.content').add(init); } const observer = new MutationObserver(function(mutations) { let shouldReinit = false; mutations.forEach(function(mutation) { if (mutation.addedNodes.length) { mutation.addedNodes.forEach(function(node) { if (node.nodeType === 1 && ( node.classList && node.classList.contains(CONFIG.containerClass) || node.querySelector && node.querySelector('.' + CONFIG.containerClass) )) { shouldReinit = true; } }); } }); if (shouldReinit) { console.log('Tab GIF Display: Content changed, reinitializing...'); setTimeout(init, 100); } }); observer.observe(document.body, { childList: true, subtree: true }); console.log('Tab GIF Display: Script loaded and ready'); })(); (function () { const images = [ 'url(/wiki/Special:Redirect/file/Site-background-image.jpg)', 'url(/wiki/Special:Redirect/file/Site-background-image2.jpg)', 'url(/wiki/Special:Redirect/file/Site-background-image3.jpg)', 'url(/wiki/Special:Redirect/file/Site-background-image4.jpg)', 'url(/wiki/Special:Redirect/file/Site-background-image5.jpg)', ]; function seededRandom(seed) { let x = Math.sin(seed * 9999) * 10000; return x - Math.floor(x); } const day = new Date().getDate(); const pick1 = Math.floor(seededRandom(day) * images.length); let pick2 = Math.floor(seededRandom(day + 1) * images.length); if (pick2 === pick1) { pick2 = (pick1 + 1) % images.length; } document.body.style.backgroundImage = images[pick1]; const footer = document.querySelector('.mw-footer'); if (footer) { footer.style.backgroundImage = images[pick2]; } })(); /* Archives main page: whole-card navigation. Clicking anywhere on a record card or directive follows its title link; clicks on actual links (sublinks, icons) are left alone. */ (function () { 'use strict'; document.addEventListener('click', function (e) { var card = e.target.closest('.ar-card, .ar-directive'); if (!card || e.target.closest('a')) return; var link = card.querySelector('.ar-card-titles a, .ar-directive-title a') || card.querySelector('a'); if (link) link.click(); }); })(); (function () { 'use strict'; function fullSizeUrl(img) { var src = img.currentSrc || img.src; var m = src.match(/^(.*)\/thumb\/(.+)\/[0-9]+px-[^\/]+$/); return m ? (m[1] + '/' + m[2]) : src; } function captionFor(img) { var thumb = img.closest('.thumb'); if (thumb) { var tc = thumb.querySelector('.thumbcaption'); if (tc) return tc.textContent.trim(); } var inl = img.closest('.inline-image-template'); if (inl) { var ic = inl.querySelector('.inline-image-caption'); if (ic) return ic.textContent.trim(); } return ''; } function overlay() { var el = document.querySelector('.nx-lightbox-overlay'); if (el) return el; el = document.createElement('div'); el.className = 'nx-lightbox-overlay'; el.innerHTML = '<span class="nx-lightbox-close">×</span><img alt="">' + '<div class="nx-lightbox-caption"></div>'; document.body.appendChild(el); el.addEventListener('click', function (e) { if (e.target === el || e.target.classList.contains('nx-lightbox-close')) { close(); } }); return el; } function close() { var el = document.querySelector('.nx-lightbox-overlay'); if (el) el.classList.remove('active'); } document.addEventListener('keydown', function (e) { if (e.key === 'Escape') close(); }); document.addEventListener('click', function (e) { var img = e.target.closest('.nexus-page .thumb img, .nexus-page .inline-image-image img'); if (!img) return; e.preventDefault(); var el = overlay(); el.querySelector('img').src = fullSizeUrl(img); el.querySelector('.nx-lightbox-caption').textContent = captionFor(img); el.classList.add('active'); }); })();
communityconfiguration-cite-description (talk) (Translate) Customize the format and appearance of references.
communityconfiguration-cite-title (talk) (Translate) Cite
communityconfiguration-templatedata-featuredtemplates-description (talk) (Translate) Featured templates are templates that have been marked as useful by the community. They are available for use in the template discovery tool.
communityconfiguration-templatedata-featuredtemplates-featuredtemplates-label (talk) (Translate) Featured templates
First pagePrevious pageNext pageLast page