@@ -154,59 +154,55 @@ app.innerHTML = `
154154 </div>
155155 </header>
156156
157- <main class="container">
158- <section id="home" class="hero">
159- <div class="hero-grid"></div>
160- <div class="avatar-wrap">
161- <img class="avatar" src="/images/marco-profile.png" alt="Marco Pisco" />
162- <span id="discord-avatar-status" class="status-dot offline avatar-status"></span>
163- </div>
164- <h1>
165- Hi, I am <span class="gradient-name">Marco Pisco</span>.
166- </h1>
167- <p class="hero-alias">aka <span class="alias-name" data-tip="nvld">neverland</span></p>
168- <p>
169- Student, Developer and System Administrator based in Portugal.
170- </p>
171- <div id="hero-status" class="hero-status hidden"></div>
172- </section>
173-
174- <hr />
175-
176- <section id="about" class="split-section">
177- <div>
178- <p class="section-id">// 01.</p>
179- <h2>About Me</h2>
180- </div>
181- <div class="section-content">
182- <p>
183- I am a student, software developer, and system administrator focused on
184- secure infrastructure, practical product delivery, and dependable operations.
185- </p>
186- <p>
187- I work across software engineering, systems administration, and security-focused
188- infrastructure, with a strong focus on reliability, automation, and maintainable operations.
157+ <main class="container page-shell">
158+ <section id="home" class="hero-panel panel">
159+ <div class="hero-copy">
160+ <p class="eyebrow">Portfolio</p>
161+ <h1>
162+ Hi, I am <span class="gradient-name">Marco Pisco</span>.
163+ </h1>
164+ <p class="hero-alias">aka <span class="alias-name" data-tip="nvld">neverland</span></p>
165+ <p class="hero-subtitle">
166+ Student, Developer and System Administrator based in Portugal.
189167 </p>
168+ <div id="hero-status" class="hero-status hidden"></div>
190169 </div>
170+ <aside class="hero-media">
171+ <div class="avatar-frame">
172+ <img class="avatar" src="/images/marco-profile.png" alt="Marco Pisco" />
173+ <span id="discord-avatar-status" class="status-dot offline avatar-status"></span>
174+ </div>
175+ <p class="hero-note">
176+ Building reliable systems, safer infrastructure, and practical software.
177+ </p>
178+ </aside>
191179 </section>
192180
193- <hr />
181+ <section class="info-grid">
182+ <article id="about" class="panel about-panel">
183+ <h2>About Me</h2>
184+ <div class="section-content">
185+ <p>
186+ I am a student, software developer, and system administrator focused on
187+ secure infrastructure, practical product delivery, and dependable operations.
188+ </p>
189+ <p>
190+ I work across software engineering, systems administration, and security-focused
191+ infrastructure, with a strong focus on reliability, automation, and maintainable operations.
192+ </p>
193+ </div>
194+ </article>
194195
195- <section id="skills" class="split-section">
196- <div>
197- <p class="section-id">// 02.</p>
196+ <article id="skills" class="panel skills-panel">
198197 <h2>Tech Stack</h2>
199- </ div>
200- <div class="pill-wrap">
201- ${ techStack . map ( ( skill ) => `<span class="pill"> ${ skill } </span>` ) . join ( '' ) }
202- </div >
198+ < div class="pill-wrap" >
199+ ${ techStack . map ( ( skill ) => `<span class="pill"> ${ skill } </span>` ) . join ( '' ) }
200+ </div>
201+ </article >
203202 </section>
204203
205- <hr />
206-
207- <section id="experience" class="stack-section">
208- <div>
209- <p class="section-id">// 03.</p>
204+ <section id="experience" class="panel section-panel">
205+ <div class="section-head">
210206 <h2>Experience</h2>
211207 </div>
212208 <div class="cards">
@@ -228,11 +224,8 @@ app.innerHTML = `
228224 </div>
229225 </section>
230226
231- <hr />
232-
233- <section id="education" class="stack-section">
234- <div>
235- <p class="section-id">// 04.</p>
227+ <section id="education" class="panel section-panel">
228+ <div class="section-head">
236229 <h2>Education</h2>
237230 </div>
238231 <div class="cards">
@@ -254,21 +247,15 @@ app.innerHTML = `
254247 </div>
255248 </section>
256249
257- <hr />
258-
259- <section id="writeups" class="stack-section">
260- <div>
261- <p class="section-id">// 05.</p>
250+ <section id="writeups" class="panel section-panel">
251+ <div class="section-head">
262252 <h2>Posts</h2>
263253 </div>
264254 <div id="writeups-list" class="cards"></div>
265255 <article id="writeup-viewer" class="writeup-viewer hidden"></article>
266256 </section>
267257
268- <hr />
269-
270- <section id="contact" class="contact">
271- <p class="section-id">// 06.</p>
258+ <section id="contact" class="panel contact-panel">
272259 <h2>Get In Touch</h2>
273260 <p>
274261 If you need help with platform engineering, production hardening,
@@ -458,20 +445,37 @@ function closeWriteup(): void {
458445}
459446
460447function setupScrollReveal ( root : ParentNode = document ) : void {
461- const targets = root . querySelectorAll < HTMLElement > (
462- '#about h2, #about p, #skills h2, #skills .pill, #experience h2, #experience .card, #education h2, #education .card, #writeups h2, #writeups .card, #contact h2, #contact p, #contact .social-btn' ,
448+ const textTargets = Array . from (
449+ root . querySelectorAll < HTMLElement > (
450+ '.hero-copy h1, .hero-copy p, .hero-note, .panel h2, .panel .section-content p, .panel .pill, .panel .card, .panel .social-btn' ,
451+ ) ,
452+ ) ;
453+ const blockTargets = Array . from (
454+ root . querySelectorAll < HTMLElement > (
455+ '.hero-panel, .about-panel, .skills-panel, .section-panel, .contact-panel, .hero-media, .avatar-frame, .hero-status .status-card, .contact-actions, .writeup-viewer' ,
456+ ) ,
463457 ) ;
458+ const targets = Array . from ( new Set ( [ ...textTargets , ...blockTargets ] ) ) ;
464459
465460 if ( targets . length === 0 ) {
466461 return ;
467462 }
468463
469- let stagger = 0 ;
470- for ( const target of targets ) {
464+ let textStagger = 0 ;
465+ for ( const target of textTargets ) {
471466 if ( ! target . classList . contains ( 'reveal-text' ) ) {
472467 target . classList . add ( 'reveal-text' ) ;
473- target . style . setProperty ( '--reveal-delay' , `${ Math . min ( stagger * 55 , 260 ) } ms` ) ;
474- stagger += 1 ;
468+ target . style . setProperty ( '--reveal-delay' , `${ Math . min ( textStagger * 55 , 260 ) } ms` ) ;
469+ textStagger += 1 ;
470+ }
471+ }
472+
473+ let blockStagger = 0 ;
474+ for ( const target of blockTargets ) {
475+ if ( ! target . classList . contains ( 'reveal-block' ) ) {
476+ target . classList . add ( 'reveal-block' ) ;
477+ target . style . setProperty ( '--reveal-delay' , `${ Math . min ( blockStagger * 70 , 320 ) } ms` ) ;
478+ blockStagger += 1 ;
475479 }
476480 }
477481
0 commit comments