260 lines
5.3 KiB
CSS
260 lines
5.3 KiB
CSS
/* Intro pós-login sazonal "Halloween" (vampiro) — variante de
|
|
login-intro.css, ativa só quando `pidIsHalloweenActive()`
|
|
(seasonal-theme.js) é verdadeiro; fora da janela de outubro,
|
|
login-intro.css/login-intro.js (arquivo original, intocado) continuam
|
|
sendo os únicos usados. Porta a composição de cenas Rise/Scare/Settle/
|
|
Wordmark autorada em "Logo intro animation Halloween/export-halloween/
|
|
pid-intro-halloween.html" (pasta de logos, fora do repositório) — ver
|
|
`login-intro-halloween.js` e `docs/temas-sazonais/temas-sazonais.md`. Mesma
|
|
paleta da marca P.I.D., acrescida do vinho da capa (#7A2733/#9E3241),
|
|
hardcoded aqui como no arquivo de origem (não são tokens de tema). Só
|
|
usado em index.html. */
|
|
|
|
.login-intro-h {
|
|
position: fixed;
|
|
inset: 0;
|
|
z-index: 200;
|
|
background: radial-gradient(120% 80% at 50% 38%, rgba(123, 91, 168, 0.16), transparent 60%), #151022;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
overflow: hidden;
|
|
opacity: 0;
|
|
transition: opacity 500ms ease;
|
|
}
|
|
|
|
.login-intro-h.is-visible {
|
|
opacity: 1;
|
|
}
|
|
|
|
.login-intro-h__flash {
|
|
position: absolute;
|
|
inset: 0;
|
|
background: #9e3241;
|
|
opacity: 0;
|
|
mix-blend-mode: screen;
|
|
pointer-events: none;
|
|
}
|
|
|
|
.login-intro-h__stage {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 36px;
|
|
}
|
|
|
|
.login-intro-h__icon {
|
|
width: 200px;
|
|
height: 210px;
|
|
flex: none;
|
|
overflow: visible;
|
|
opacity: 0;
|
|
transform: translate(0, 0) scale(1);
|
|
}
|
|
|
|
.login-intro-h__cape path {
|
|
fill: #2e2740;
|
|
}
|
|
|
|
.login-intro-h__cape-line {
|
|
stroke: #3d3454;
|
|
stroke-width: 1;
|
|
fill: none;
|
|
}
|
|
|
|
.login-intro-h__collar {
|
|
fill: #7a2733;
|
|
}
|
|
|
|
.login-intro-h__body {
|
|
fill: #7b5ba8;
|
|
}
|
|
|
|
.login-intro-h__tab {
|
|
fill: #c6a24a;
|
|
}
|
|
|
|
.login-intro-h__tab-shadow {
|
|
fill: #7b5ba8;
|
|
}
|
|
|
|
.login-intro-h__screen {
|
|
fill: #241c33;
|
|
}
|
|
|
|
.login-intro-h__face {
|
|
opacity: 0;
|
|
}
|
|
|
|
.login-intro-h__face--scare circle:not(.login-intro-h__pupil-red) {
|
|
fill: #f2ede3;
|
|
}
|
|
|
|
.login-intro-h__pupil-red {
|
|
fill: #9e3241;
|
|
}
|
|
|
|
.login-intro-h__brow-angry {
|
|
stroke: #7a2733;
|
|
stroke-width: 1.9;
|
|
fill: none;
|
|
stroke-linecap: round;
|
|
}
|
|
|
|
.login-intro-h__mouth-fill {
|
|
fill: #0c0814;
|
|
}
|
|
|
|
.login-intro-h__mouth {
|
|
stroke: #c6a24a;
|
|
stroke-width: 3;
|
|
fill: none;
|
|
stroke-linecap: round;
|
|
}
|
|
|
|
.login-intro-h__fang {
|
|
fill: #f2ede3;
|
|
}
|
|
|
|
.login-intro-h__face--friendly circle:not(.login-intro-h__pupil) {
|
|
fill: #f2ede3;
|
|
}
|
|
|
|
.login-intro-h__pupil {
|
|
fill: #241c33;
|
|
}
|
|
|
|
.login-intro-h__brow {
|
|
stroke: #7a2733;
|
|
stroke-width: 1.3;
|
|
fill: none;
|
|
stroke-linecap: round;
|
|
}
|
|
|
|
.login-intro-h__mouth-friendly {
|
|
stroke: #c6a24a;
|
|
stroke-width: 3;
|
|
fill: none;
|
|
stroke-linecap: round;
|
|
}
|
|
|
|
.login-intro-h__fang-friendly {
|
|
fill: #f2ede3;
|
|
}
|
|
|
|
/* A capa fica "levantada" cobrindo o rosto até a cena Scare abrir — por
|
|
isso, ao contrário de `.login-intro-h__face` (que começa escondido),
|
|
começa visível (T=0 já é capa cobrindo, ver `flapGoneFn` em
|
|
login-intro-halloween.js). */
|
|
.login-intro-h__flap-wrap {
|
|
opacity: 1;
|
|
}
|
|
|
|
.login-intro-h__flap-rotate path:first-child {
|
|
fill: #2e2740;
|
|
}
|
|
|
|
/* Olhos semicerrados espiando por cima da capa levantada — também visíveis
|
|
desde o início (T=0), mesmo raciocínio do comentário acima. */
|
|
.login-intro-h__squint {
|
|
opacity: 1;
|
|
}
|
|
|
|
.login-intro-h__squint path {
|
|
stroke: #f2ede3;
|
|
stroke-width: 2.6;
|
|
fill: none;
|
|
stroke-linecap: round;
|
|
}
|
|
|
|
.login-intro-h__squint circle {
|
|
fill: #9e3241;
|
|
}
|
|
|
|
.login-intro-h__wordmark {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: flex-start;
|
|
gap: 16px;
|
|
opacity: 0;
|
|
}
|
|
|
|
.login-intro-h__letters {
|
|
display: flex;
|
|
align-items: baseline;
|
|
gap: 2px;
|
|
}
|
|
|
|
.login-intro-h__letter {
|
|
display: inline-block;
|
|
font-family: "Creepster", "Space Grotesk", sans-serif;
|
|
font-weight: 400;
|
|
font-size: 3.4rem;
|
|
letter-spacing: 0.02em;
|
|
color: #f2ede3;
|
|
opacity: 0;
|
|
text-shadow: 0 0 16px rgba(122, 39, 51, 0.75), 0 3px 0 rgba(0, 0, 0, 0.4);
|
|
}
|
|
|
|
.login-intro-h__dot {
|
|
color: #c6a24a;
|
|
}
|
|
|
|
.login-intro-h__rule {
|
|
width: 240px;
|
|
height: 3px;
|
|
background: linear-gradient(90deg, #c6a24a, #7a2733);
|
|
transform-origin: left center;
|
|
transform: scaleX(0);
|
|
}
|
|
|
|
.login-intro-h__tagline {
|
|
font-family: "DM Mono", ui-monospace, monospace;
|
|
font-size: 0.85rem;
|
|
letter-spacing: 0.22em;
|
|
text-transform: uppercase;
|
|
color: #c6a24a;
|
|
opacity: 0;
|
|
}
|
|
|
|
/* Tema claro: mesmo raciocínio de login-intro.css — fundo escuro fixo
|
|
destoava do resto do Portal nesse tema, então vira `--bg-canvas` claro; o
|
|
texto do wordmark (pensado pra contrastar com fundo escuro) precisa virar
|
|
escuro. O ícone não precisa de override (mesmo motivo de login-intro.css:
|
|
o roxo/vinho tem contraste de sobra nos dois fundos). */
|
|
:root[data-theme="light"] .login-intro-h {
|
|
background: radial-gradient(120% 80% at 50% 38%, rgba(123, 91, 168, 0.1), transparent 60%), var(--bg-canvas);
|
|
}
|
|
|
|
:root[data-theme="light"] .login-intro-h__letter {
|
|
color: #3a1620;
|
|
text-shadow: 0 0 10px rgba(122, 39, 51, 0.35), 0 2px 0 rgba(0, 0, 0, 0.12);
|
|
}
|
|
|
|
:root[data-theme="light"] .login-intro-h__tagline {
|
|
color: #7a2733;
|
|
}
|
|
|
|
@media (max-width: 600px) {
|
|
.login-intro-h__stage {
|
|
gap: 20px;
|
|
}
|
|
|
|
.login-intro-h__icon {
|
|
width: 130px;
|
|
height: 137px;
|
|
}
|
|
|
|
.login-intro-h__letter {
|
|
font-size: 2.2rem;
|
|
}
|
|
|
|
.login-intro-h__rule {
|
|
width: 160px;
|
|
}
|
|
|
|
.login-intro-h__tagline {
|
|
font-size: 0.65rem;
|
|
letter-spacing: 0.16em;
|
|
}
|
|
}
|