diff --git a/web-next/app/[locale]/layout.tsx b/web-next/app/[locale]/layout.tsx index 3667cc6..75a12e3 100644 --- a/web-next/app/[locale]/layout.tsx +++ b/web-next/app/[locale]/layout.tsx @@ -65,8 +65,6 @@ export default async function LocaleLayout({ rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.6.0/css/all.min.css" /> - {/* Tema real de NightSpire (ns-ryu). Va el ÚLTIMO para ganar la cascada. */} - {/* Config de los tooltips de wowhead (debe definirse antes de tooltips.js). OJO con el `window.`: tooltips.js lee `window.whTooltips`, y un `const` a nivel de script queda en el ámbito léxico del script (no crea propiedad en diff --git a/web-next/app/globals.css b/web-next/app/globals.css index 2152a61..ae53c3f 100644 --- a/web-next/app/globals.css +++ b/web-next/app/globals.css @@ -17,8 +17,8 @@ } /* El fondo, la tipografía (FuturaEF-Book) y los estilos base del - los controla el tema real ns-ryu (nightspire-style.css), cargado en el - del layout. No los redefinimos aquí para que el tema Django quede idéntico. */ + los controla el tema real ns-ryu (theme.css), importado AL FINAL de este + fichero. No los redefinimos aquí para que el tema quede idéntico. */ /* El tema ns-ryu se diseñó para los defaults del navegador (igual que la web Django, que NO usa Tailwind). El preflight de Tailwind rompe dos cosas: @@ -655,3 +655,12 @@ textarea:focus { #store-news-content { margin-top: 6px; } #store-news-content ul { padding-left: 16px; } #store-news-content li { margin: 4px 0; } + +/* ─── El tema ns-ryu, AL FINAL ───────────────────────────────────────────── + * El orden importa y no es cosmético: el tema se diseñó contra los defaults + * del navegador y el preflight de Tailwind los pisa (box-sizing, alturas...). + * Antes se cargaba con un al final del justo para ganar la + * cascada; ahora entra por el build, así que este @import DEBE ir el último. + * Si sube de sitio, el preflight gana y el diseño se rompe. + */ +@import './theme.css'; diff --git a/web-next/public/ns-themes/ns-ryu/ns-css/nightspire-style.css b/web-next/app/theme.css similarity index 94% rename from web-next/public/ns-themes/ns-ryu/ns-css/nightspire-style.css rename to web-next/app/theme.css index 83ea1c9..37d6384 100644 --- a/web-next/public/ns-themes/ns-ryu/ns-css/nightspire-style.css +++ b/web-next/app/theme.css @@ -1,3 +1,11 @@ +/* Tema ns-ryu — antes se cargaba con un desde public/. + * Ahora entra por el build (lo importa globals.css al FINAL, ver allí el porqué), + * así Next lo compila, minifica y le pone hash de contenido. + * + * Las url() son ABSOLUTAS a propósito: los assets siguen en public/ y así el + * compilador no intenta resolverlos (3 fuentes .eot/.otf/.ttf que declara el + * @font-face NO existen — solo hay .woff — y romperían el build). + */ /* Created on : Mar 1, 2019, 4:41:19 AM Author : Ryuzaki @@ -5,10 +13,10 @@ @font-face { font-family: "FuturaEF-Book"; - src: url('../ns-font/FuturaEF-Book.eot'); - src: url('../ns-font/FuturaEF-Book.otf') format('otf'), - url('../ns-font/FuturaEF-Book.woff') format('woff'), - url('../ns-font/FuturaEF-Book.ttf') format('truetype'); + src: url('/ns-themes/ns-ryu/ns-font/FuturaEF-Book.eot'); + src: url('/ns-themes/ns-ryu/ns-font/FuturaEF-Book.otf') format('otf'), + url('/ns-themes/ns-ryu/ns-font/FuturaEF-Book.woff') format('woff'), + url('/ns-themes/ns-ryu/ns-font/FuturaEF-Book.ttf') format('truetype'); } * { @@ -60,12 +68,12 @@ hr { background-position: center; background-repeat: no-repeat; margin: 5px auto; - background-image: url(../ns-images/ns-general/ns-divider.png); + background-image: url(/ns-themes/ns-ryu/ns-images/ns-general/ns-divider.png); } @media screen and (max-width: 1024px) { hr { - background-image: url(../ns-images/ns-general/ns-divider-mini.webp); + background-image: url(/ns-themes/ns-ryu/ns-images/ns-general/ns-divider-mini.webp); } } @@ -111,7 +119,7 @@ legend { background-blend-mode: saturation; background-position: left; background-size: 200%; - background-image: url(../ns-images/ns-general/account-info.png); + background-image: url(/ns-themes/ns-ryu/ns-images/ns-general/account-info.png); } @media screen and (max-width: 1024px) { @@ -705,70 +713,70 @@ textarea:focus, select:focus, input[type=password]:focus, input[type=number]:foc } .char-box-death-knight { - background-image: url(../ns-images/ns-classes/wow-death-knight.webp); + background-image: url(/ns-themes/ns-ryu/ns-images/ns-classes/wow-death-knight.webp); background-repeat: no-repeat; background-position: right bottom; position: relative; } .char-box-druid { - background-image: url(../ns-images/ns-classes/wow-druid.png); + background-image: url(/ns-themes/ns-ryu/ns-images/ns-classes/wow-druid.png); background-repeat: no-repeat; background-position: right bottom; position: relative; } .char-box-hunter { - background-image: url(../ns-images/ns-classes/wow-hunter.webp); + background-image: url(/ns-themes/ns-ryu/ns-images/ns-classes/wow-hunter.webp); background-repeat: no-repeat; background-position: right bottom; position: relative; } .char-box-mage { - background-image: url(../ns-images/ns-classes/wow-mage.webp); + background-image: url(/ns-themes/ns-ryu/ns-images/ns-classes/wow-mage.webp); background-repeat: no-repeat; background-position: right bottom; position: relative; } .char-box-paladin { - background-image: url(../ns-images/ns-classes/wow-paladin.webp); + background-image: url(/ns-themes/ns-ryu/ns-images/ns-classes/wow-paladin.webp); background-repeat: no-repeat; background-position: right bottom; position: relative; } .char-box-priest { - background-image: url(../ns-images/ns-classes/wow-priest.webp); + background-image: url(/ns-themes/ns-ryu/ns-images/ns-classes/wow-priest.webp); background-repeat: no-repeat; background-position: right bottom; position: relative; } .char-box-rogue { - background-image: url(../ns-images/ns-classes/wow-rogue.webp); + background-image: url(/ns-themes/ns-ryu/ns-images/ns-classes/wow-rogue.webp); background-repeat: no-repeat; background-position: right bottom; position: relative; } .char-box-shaman { - background-image: url(../ns-images/ns-classes/wow-shaman.webp); + background-image: url(/ns-themes/ns-ryu/ns-images/ns-classes/wow-shaman.webp); background-repeat: no-repeat; background-position: right bottom; position: relative; } .char-box-warlock { - background-image: url(../ns-images/ns-classes/wow-warlock.webp); + background-image: url(/ns-themes/ns-ryu/ns-images/ns-classes/wow-warlock.webp); background-repeat: no-repeat; background-position: right bottom; position: relative; } .char-box-warrior { - background-image: url(../ns-images/ns-classes/wow-warrior.webp); + background-image: url(/ns-themes/ns-ryu/ns-images/ns-classes/wow-warrior.webp); background-repeat: no-repeat; background-position: right bottom; position: relative; @@ -859,7 +867,7 @@ textarea:focus, select:focus, input[type=password]:focus, input[type=number]:foc /* acc panels */ #account-settings, #character-settings, #account-history { background: hsla(0, 100%, 0%, 0.7); - background-image: url(../ns-images/ns-general/account-info.png); + background-image: url(/ns-themes/ns-ryu/ns-images/ns-general/account-info.png); background-repeat: no-repeat; background-blend-mode: saturation; background-position: right; @@ -889,7 +897,7 @@ textarea:focus, select:focus, input[type=password]:focus, input[type=number]:foc /* acc icons */ .acc-icon { - background-image: url(../ns-images/ns-icons/account-icons.png); + background-image: url(/ns-themes/ns-ryu/ns-images/ns-icons/account-icons.png); display: table-cell; width: 80px; height: 68px; @@ -2313,21 +2321,21 @@ th { } .cc-youtube { - background-image: url(../ns-images/ns-logos/youtube.webp); + background-image: url(/ns-themes/ns-ryu/ns-images/ns-logos/youtube.webp); background-repeat: no-repeat; background-position: 100% 45%; position: relative; } .cc-facebook { - background-image: url(../ns-images/ns-logos/facebook.png); + background-image: url(/ns-themes/ns-ryu/ns-images/ns-logos/facebook.png); background-repeat: no-repeat; background-position: 100% 45%; position: relative; } .cc-twitch { - background-image: url(../ns-images/ns-logos/twitch.png); + background-image: url(/ns-themes/ns-ryu/ns-images/ns-logos/twitch.png); background-repeat: no-repeat; background-position: 100% 45%; position: relative;