@@ -269,24 +269,31 @@ h1 {
269269 transform : translateX (3px );
270270}
271271
272+ .quote {
273+ position : relative;
274+ font-family : 'Roboto Mono' , monospace;
275+ background : rgba (30 , 41 , 59 , 0.9 );
276+ padding : 2.5rem ;
277+ border-radius : 15px ;
278+ border-left : 6px solid var (--primary );
279+ box-shadow : 0 0 15px rgba (59 , 130 , 246 , 0.3 );
280+ overflow : hidden; /* oculta lo que "no se ha escrito" */
281+ margin : 2.5rem 0 ;
282+ }
283+
284+ /* el texto que se teclea */
272285.quote span .typing {
273286 display : inline-block;
274- white-space : pre-wrap; /* Para respetar saltos de línea */
275- overflow : hidden;
276- font-family : 'Roboto Mono' , monospace;
287+ width : 0ch ; /* ⭐ ancho inicial oculto */
288+ white-space : pre-wrap; /* respeta saltos de línea */
289+ word-break : break-word; /* permite partir palabras largas */
290+ overflow : hidden; /* oculta lo que excede el width */
277291 font-size : 1.3rem ;
278292 line-height : 1.6 ;
279- /* Anima de 0 hasta N caracteres, y steps(N) asegura 1 paso = 1 letra */
280- animation : typing 4s steps (70 , end) forwards;
293+ animation : typing 4s steps (80 ) forwards; /* 80 ≈ número de caracteres */
281294}
282295
283- /* Ajusta “70ch” al número de caracteres de tu frase. */
284- @keyframes typing {
285- from { width : 0ch ; }
286- to { width : 70ch ; }
287- }
288-
289- /* Cursor que parpadea */
296+ /* cursor parpadeante */
290297.quote span .typing ::after {
291298 content : '' ;
292299 display : inline-block;
@@ -298,18 +305,33 @@ h1 {
298305 animation : blink-caret .75s step-end infinite;
299306}
300307
308+ @keyframes typing {
309+ from { width : 0ch ; }
310+ to { width : 80ch ; } /* mismo valor que en steps() */
311+ }
312+
301313@keyframes blink-caret {
302314 0% , 100% { opacity : 0 ; }
303315 50% { opacity : 1 ; }
304316}
305317
306-
318+ /* autor tras el texto */
319+ .quote span .author {
320+ display : block;
321+ opacity : 0 ;
322+ margin-top : 0.5rem ;
323+ font-size : 1.3rem ;
324+ line-height : 1.6 ;
325+ animation : fadeInAuthor 1s ease forwards;
326+ animation-delay : 4s ;
327+ }
307328@keyframes fadeInAuthor {
308329 from { opacity : 0 ; transform : translateY (10px ); }
309330 to { opacity : 1 ; transform : translateY (0 ); }
310331}
311332
312333
334+
313335/* Roadmap */
314336.roadmap-container {
315337 overflow-x : auto;
0 commit comments