Files
job-dashboard/timeline.html

584 lines
24 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>Career Arc · Anthony Martin</title>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet">
<style>
*{margin:0;padding:0;box-sizing:border-box}
:root{
--bg:#f8f9fa;
--surface:#fff;
--text:#1a1a1a;
--text-m:#6b7280;
--text-dim:#9ca3af;
--border:rgba(0,0,0,0.06);
--border-h:rgba(0,0,0,0.1);
--gold:#d4a843;
--gold-l:#f5e8c8;
--green:#2d7a47;
--green-l:#e8f5ee;
--cream:#fdf8f0;
--shadow:0 1px 3px rgba(0,0,0,0.04),0 1px 2px rgba(0,0,0,0.03);
--radius:12px;
}
body{
font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;
background:var(--bg);
color:var(--text);
overflow-x:hidden;
-webkit-font-smoothing:antialiased;
line-height:1.6;
}
::selection{background:rgba(212,168,67,0.2);color:var(--text)}
a{color:var(--green);text-decoration:none;transition:color 0.2s}
a:hover{color:var(--gold)}
/* Hero */
.hero{
min-height:100vh;
display:flex;flex-direction:column;justify-content:center;align-items:center;
text-align:center;padding:2rem;position:relative;
background:linear-gradient(180deg,var(--cream) 0%,var(--bg) 100%);
}
.hero::after{
content:'';position:absolute;bottom:0;left:10%;right:10%;height:1px;
background:linear-gradient(90deg,transparent,var(--border-h),transparent);
}
.hero h1{
font-size:clamp(2.8rem,6vw,5rem);font-weight:800;
letter-spacing:-0.03em;line-height:1.05;color:var(--text);
margin-bottom:0.6rem;
}
.hero h1 span{color:var(--gold)}
.hero .sub{
font-size:clamp(0.95rem,1.8vw,1.15rem);font-weight:400;
color:var(--text-m);max-width:480px;line-height:1.5;margin-bottom:1.5rem;
}
.hero .tag{
display:inline-flex;align-items:center;gap:0.4rem;
background:var(--green-l);color:var(--green);
padding:0.35rem 1rem;border-radius:100px;
font-size:0.78rem;font-weight:500;
}
.hero .scroll-hint{
position:absolute;bottom:2.5rem;
color:var(--text-dim);font-size:0.7rem;
display:flex;flex-direction:column;align-items:center;gap:0.35rem;
letter-spacing:0.04em;text-transform:uppercase;
cursor:pointer;transition:color 0.2s;
}
.hero .scroll-hint:hover{color:var(--text-m)}
.hero .scroll-hint .chev{width:16px;height:16px;animation:bounce 2s ease-in-out infinite}
/* Timeline wrapper */
.timeline-wrapper{max-width:880px;margin:0 auto;padding:0 1.5rem 4rem}
/* Present banner */
.present-banner{
background:var(--cream);
border:1px solid var(--border);
border-radius:var(--radius);
padding:1.5rem 2rem;margin:3rem auto;
max-width:680px;text-align:center;position:relative;
box-shadow:var(--shadow);
}
.present-banner::before{
content:'';position:absolute;top:0;left:2rem;right:2rem;height:2px;
background:linear-gradient(90deg,transparent,var(--gold),transparent);
border-radius:1px;
}
.present-banner .label{
font-size:0.65rem;text-transform:uppercase;letter-spacing:0.12em;
color:var(--gold);font-weight:600;margin-bottom:0.25rem;
}
.present-banner .label .dot{
display:inline-block;width:6px;height:6px;background:var(--gold);
border-radius:50%;margin-right:0.3rem;vertical-align:middle;
animation:pulse 2s ease-in-out infinite;
}
.present-banner h2{font-size:1.2rem;font-weight:600;color:var(--text);margin-bottom:0.2rem}
.present-banner p{font-size:0.82rem;color:var(--text-m);line-height:1.55;max-width:560px;margin:0 auto}
/* Timeline */
.timeline{position:relative;padding-top:1rem}
/* The vertical line */
.timeline-line{
position:absolute;left:50%;top:0;bottom:0;
width:2px;
background:linear-gradient(to bottom,var(--gold-l),var(--gold),var(--gold-l));
transform:translateX(-50%);
}
/* Items */
.timeline-item{
position:relative;
margin-bottom:2.5rem;
opacity:0;
transform:translateY(30px);
transition:opacity 0.7s ease,transform 0.7s cubic-bezier(0.22,1,0.36,1);
}
.timeline-item.visible{opacity:1;transform:translateY(0)}
.timeline-item:nth-child(odd) .timeline-card{margin-left:auto}
/* Dot */
.timeline-dot{
position:absolute;left:50%;top:1.8rem;
width:14px;height:14px;
background:var(--gold);
border:2px solid var(--bg);
border-radius:50%;
transform:translateX(-50%);
z-index:2;
transition:transform 0.3s ease,box-shadow 0.3s ease;
box-shadow:0 0 0 0 var(--gold-l);
}
.timeline-item.visible .timeline-dot{
transform:translateX(-50%) scale(1.15);
box-shadow:0 0 0 6px rgba(212,168,67,0.15);
}
/* Card */
.timeline-card{
width:calc(50% - 36px);
background:var(--surface);
border:1px solid var(--border);
border-radius:var(--radius);
padding:1.3rem 1.5rem;
cursor:pointer;
transition:border-color 0.25s ease,box-shadow 0.25s ease,transform 0.25s ease;
position:relative;
box-shadow:var(--shadow);
}
.timeline-card:hover{
border-color:var(--border-h);
box-shadow:0 4px 12px rgba(0,0,0,0.06),0 1px 3px rgba(0,0,0,0.04);
transform:translateY(-1px);
}
.timeline-card:active{transform:translateY(0)}
/* Connector arrows */
.timeline-item:nth-child(odd) .timeline-card::after{
content:'';position:absolute;top:1.6rem;left:-7px;
border:7px solid transparent;border-right-color:var(--border);
z-index:1;
}
.timeline-item:nth-child(even) .timeline-card::after{
content:'';position:absolute;top:1.6rem;right:-7px;
border:7px solid transparent;border-left-color:var(--border);
z-index:1;
}
/* Card content */
.timeline-card .date{
font-size:0.68rem;font-weight:600;color:var(--gold);
text-transform:uppercase;letter-spacing:0.06em;margin-bottom:0.2rem;
}
.timeline-card .role{
font-size:1.05rem;font-weight:600;color:var(--text);
margin-bottom:0.05rem;letter-spacing:-0.01em;
}
.timeline-card .company{
font-size:0.85rem;font-weight:500;color:var(--green);margin-bottom:0.1rem;
}
.timeline-card .location{
font-size:0.7rem;color:var(--text-dim);margin-bottom:0.5rem;
}
.timeline-card .summary{
font-size:0.8rem;color:var(--text-m);line-height:1.55;margin-bottom:0.4rem;
}
.timeline-card .expand-btn{
font-size:0.72rem;font-weight:500;color:var(--green);
cursor:pointer;display:inline-flex;align-items:center;gap:0.3rem;
border:none;background:none;padding:0;
transition:color 0.2s;
}
.timeline-card .expand-btn:hover{color:var(--gold)}
.timeline-card .expand-btn .arrow{
display:inline-block;font-size:0.55rem;
transition:transform 0.25s ease;
}
.timeline-card .expand-btn.open .arrow{transform:rotate(180deg)}
.timeline-card .details{
max-height:0;overflow:hidden;
transition:max-height 0.4s ease,opacity 0.3s ease;
opacity:0;
}
.timeline-card .details.open{max-height:2000px;opacity:1}
.timeline-card .details ul{
list-style:none;padding:0.6rem 0 0;margin-top:0.5rem;
border-top:1px solid var(--border);
}
.timeline-card .details ul li{
padding:0.25rem 0;font-size:0.78rem;color:var(--text-m);
line-height:1.5;padding-left:1rem;position:relative;
}
.timeline-card .details ul li::before{
content:'→';position:absolute;left:0;color:var(--gold);font-size:0.65rem;
}
.timeline-card .details .tags{
display:flex;flex-wrap:wrap;gap:0.3rem;padding-top:0.6rem;margin-top:0.5rem;
border-top:1px solid var(--border);
}
.timeline-card .details .tags span{
background:var(--green-l);color:var(--green);
font-size:0.64rem;padding:0.15rem 0.5rem;border-radius:100px;
font-weight:500;
}
.timeline-item:last-child{margin-bottom:0}
/* Education */
.edu-section{max-width:680px;margin:4rem auto;padding:0 1.5rem}
.edu-section h2{
font-size:0.7rem;font-weight:600;color:var(--text-dim);
text-align:center;margin-bottom:1.25rem;
text-transform:uppercase;letter-spacing:0.1em;
}
.edu-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.edu-card{
background:var(--surface);border:1px solid var(--border);border-radius:10px;
padding:1.1rem 1.2rem;
opacity:0;transform:translateY(15px);
transition:opacity 0.5s ease,transform 0.5s ease;
box-shadow:var(--shadow);
}
.edu-card.visible{opacity:1;transform:translateY(0)}
.edu-card h3{font-size:0.85rem;font-weight:600;color:var(--text);margin-bottom:0.1rem}
.edu-card .detail{font-size:0.75rem;color:var(--text-m);margin-bottom:0.1rem}
.edu-card .year{font-size:0.65rem;color:var(--green);font-weight:500}
/* Skills sections */
.skills-section{max-width:680px;margin:0 auto 4rem;padding:0 1.5rem}
.skills-section h2{
font-size:0.7rem;font-weight:600;color:var(--text-dim);
text-align:center;margin-bottom:1.25rem;
text-transform:uppercase;letter-spacing:0.1em;
}
.skills-grid{display:flex;flex-wrap:wrap;gap:0.4rem;justify-content:center}
.skill-tag{
background:var(--surface);border:1px solid var(--border);
border-radius:100px;padding:0.3rem 0.9rem;
font-size:0.72rem;font-weight:400;color:var(--text-m);
opacity:0;transform:scale(0.92);
transition:opacity 0.35s ease,transform 0.35s ease,border-color 0.2s,color 0.2s;
box-shadow:var(--shadow);
}
.skill-tag.visible{opacity:1;transform:scale(1)}
.skill-tag:hover{border-color:var(--green);color:var(--green)}
.skill-tag:nth-child(1){transition-delay:0s}
.skill-tag:nth-child(2){transition-delay:0.03s}
.skill-tag:nth-child(3){transition-delay:0.06s}
.skill-tag:nth-child(4){transition-delay:0.09s}
.skill-tag:nth-child(5){transition-delay:0.12s}
.skill-tag:nth-child(6){transition-delay:0.15s}
.skill-tag:nth-child(7){transition-delay:0.18s}
.skill-tag:nth-child(8){transition-delay:0.21s}
.skill-tag:nth-child(9){transition-delay:0.24s}
.skill-tag:nth-child(10){transition-delay:0.27s}
/* Footer */
.footer{
text-align:center;padding:2rem;color:var(--text-dim);
font-size:0.7rem;border-top:1px solid var(--border);
max-width:680px;margin:0 auto;
}
/* Animations */
@keyframes bounce{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:0.35}}
/* Reduced motion */
@media(prefers-reduced-motion:reduce){
*,*::before,*::after{animation-duration:0.01ms!important;transition-duration:0.01ms!important}
.timeline-item{opacity:1!important;transform:none!important}
.skill-tag,.edu-card{opacity:1!important;transform:none!important}
}
/* Mobile */
@media(max-width:700px){
.timeline-line{left:18px}
.timeline-dot{left:18px;width:12px;height:12px}
.timeline-card{width:calc(100% - 48px);margin-left:44px!important}
.timeline-item:nth-child(odd) .timeline-card::after,
.timeline-item:nth-child(even) .timeline-card::after{
left:-7px;border:7px solid transparent;border-right-color:var(--border);right:auto;
}
.edu-grid{grid-template-columns:1fr}
.present-banner{padding:1.2rem 1.3rem}
.timeline-card{padding:1.1rem 1.2rem}
}
</style>
</head>
<body>
<!-- Hero -->
<section class="hero">
<h1>Career <span>Arc</span></h1>
<p class="sub">Marketing &amp; communications · Energy transition · Perth, WA</p>
<div class="tag">15+ years · 3 companies · 6 roles</div>
<div class="scroll-hint" onclick="document.querySelector('.present-banner')?.scrollIntoView({behavior:'smooth'})">
<svg class="chev" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round"><path d="M7 13l5 5 5-5M7 6l5 5 5-5"/></svg>
<span>Explore</span>
</div>
</section>
<div class="timeline-wrapper">
<!-- Present -->
<div class="present-banner" style="opacity:0;animation:fadeUp 0.8s ease 0.4s both">
<div class="label"><span class="dot"></span>Present</div>
<h2>Open to Opportunities</h2>
<p>Recently finished a Marketing Advisor role at Pacific Energy. Actively exploring corporate marketing, communications and digital strategy roles in Perth and across WA.</p>
</div>
<div class="timeline" id="timeline">
<div class="timeline-line"></div>
<!-- 1. Pacific Energy -->
<div class="timeline-item" data-idx="1">
<div class="timeline-dot"></div>
<div class="timeline-card" onclick="toggleDetails(this)">
<div class="date">Jun 2025 Jul 2026</div>
<div class="role">Marketing Advisor</div>
<div class="company">Pacific Energy</div>
<div class="location">Kewdale, Perth WA</div>
<div class="summary">Corporate marketing, digital content, technical communications, major events and marketing AI strategy for a leading energy infrastructure company.</div>
<button class="expand-btn"><span class="arrow"></span> <span class="lb">Show achievements</span></button>
<div class="details">
<ul>
<li>Developed and rolled out a social media strategy and capability content series across LinkedIn and corporate channels</li>
<li>Defined Pacific Energy's marketing AI strategy and identified practical applications across content, digital workflows and operations</li>
<li>Led marketing collaboration on the corporate website, named Science and Sustainability Website of the Year at the 2026 Australian Web Awards</li>
<li>End-to-end marketing delivery for Australian Clean Energy Summit and Pilbara Summit — sponsorship activation, creative, content, logistics</li>
<li>Translated complex project information into executive comms covering battery storage, remote power, hybrid systems</li>
<li>Maintained brand voice and visual standards across digital, print, signage, social and event channels</li>
</ul>
<div class="tags">
<span>B2B Marketing</span><span>AI Strategy</span><span>Web Awards</span><span>Event Management</span><span>Corporate Comms</span>
</div>
</div>
</div>
</div>
<!-- 2. Horizon Power -->
<div class="timeline-item" data-idx="2">
<div class="timeline-dot"></div>
<div class="timeline-card" onclick="toggleDetails(this)">
<div class="date">2019 Sep 2024</div>
<div class="role">Marketing Specialist</div>
<div class="company">Horizon Power</div>
<div class="location">Perth, WA</div>
<div class="summary">Integrated marketing, regulated communications, customer engagement and energy transition programs across WA's regional energy provider.</div>
<button class="expand-btn"><span class="arrow"></span> <span class="lb">Show achievements</span></button>
<div class="details">
<ul>
<li>Led integrated marketing and customer communication campaigns across digital, social, email, direct mail, television, print and community channels</li>
<li>Managed annual marketing budgets exceeding $2 million, using research and audience segmentation to prioritise investment</li>
<li>Led marketing for the WA EV Network — the state's electric vehicle charging infrastructure rollout</li>
<li>Supported launch of Smart Connect Solar and other distributed energy initiatives</li>
<li>Directed compliance-critical communications for government price changes, energy concessions and cost-of-living initiatives</li>
<li>Created the Bright Horizons STEM program, providing solar-powered education kits to remote schools</li>
</ul>
<div class="tags">
<span>Integrated Campaigns</span><span>$2M+ Budget</span><span>WA EV Network</span><span>Energy Transition</span><span>Regulatory Comms</span>
</div>
</div>
</div>
</div>
<!-- 3. Synergy: Energy Solutions Marketing Specialist -->
<div class="timeline-item" data-idx="3">
<div class="timeline-dot"></div>
<div class="timeline-card" onclick="toggleDetails(this)">
<div class="date">2015 2018</div>
<div class="role">Energy Solutions Marketing Specialist</div>
<div class="company">Synergy</div>
<div class="location">Perth, WA</div>
<div class="summary">Commercial growth and customer experience across renewable energy products, digital channels and agency management.</div>
<button class="expand-btn"><span class="arrow"></span> <span class="lb">Show achievements</span></button>
<div class="details">
<ul>
<li>Led development of the SolarReturn proposition from research through launch, contributing to a 40% sales increase in year one</li>
<li>Managed three-plus creative, digital and media agencies, improving conversion rates by 35% through iterative optimisation</li>
<li>Mapped the end-to-end solar customer journey, reducing inquiry-to-sale timeframes by 20%</li>
<li>Converted renewable energy policy, rebates and feed-in tariffs into accessible customer communications across TV, radio, outdoor, social, email and SMS</li>
</ul>
<div class="tags">
<span>Product Launch</span><span>SolarReturn</span><span>Agency Management</span><span>Conversion Optimisation</span>
</div>
</div>
</div>
</div>
<!-- 4. Synergy: Business Segment Coordinator -->
<div class="timeline-item" data-idx="4">
<div class="timeline-dot"></div>
<div class="timeline-card" onclick="toggleDetails(this)">
<div class="date">2014 2015</div>
<div class="role">Business Segment Coordinator</div>
<div class="company">Synergy</div>
<div class="location">Perth, WA</div>
<div class="summary">Financial and portfolio management, enterprise communications and cross-functional coordination.</div>
<button class="expand-btn"><span class="arrow"></span> <span class="lb">Show achievements</span></button>
<div class="details">
<ul>
<li>Managed Synergy's streetlighting portfolio and resolved $1.3 million in billing discrepancies through detailed contract and process reviews</li>
<li>Introduced stronger reconciliation controls and led cross-functional input into the Annual Review of Products and Pricing</li>
<li>Developed a company-wide communications framework across email, SMS and print for 1M+ customers</li>
</ul>
<div class="tags">
<span>Financial Management</span><span>Billing Resolution</span><span>Enterprise Comms</span>
</div>
</div>
</div>
</div>
<!-- 5. Synergy: Assistant Product Manager -->
<div class="timeline-item" data-idx="5">
<div class="timeline-dot"></div>
<div class="timeline-card" onclick="toggleDetails(this)">
<div class="date">2012 2014</div>
<div class="role">Assistant Product Manager, Industrial &amp; Commercial</div>
<div class="company">Synergy</div>
<div class="location">Perth, WA</div>
<div class="summary">Product and sales development for commercial renewable energy products, digital sales platforms and training.</div>
<button class="expand-btn"><span class="arrow"></span> <span class="lb">Show achievements</span></button>
<div class="details">
<ul>
<li>Developed and launched the Synergy Sellback Program, enabling commercial customers to receive value from exported renewable energy</li>
<li>Created an online sales platform with pricing calculators and training material</li>
<li>Supported sales performance 150% above target through platform and training initiatives</li>
</ul>
<div class="tags">
<span>Product Development</span><span>Sellback Program</span><span>Digital Platform</span><span>Sales Enablement</span>
</div>
</div>
</div>
</div>
<!-- 6. Synergy: Billing Officer -->
<div class="timeline-item" data-idx="6">
<div class="timeline-dot"></div>
<div class="timeline-card" onclick="toggleDetails(this)">
<div class="date">2010 2012</div>
<div class="role">Billing Officer</div>
<div class="company">Synergy</div>
<div class="location">Perth, WA</div>
<div class="summary">Customer billing, enquiry management, dispute resolution and data accuracy in a regulated energy retail environment.</div>
<button class="expand-btn"><span class="arrow"></span> <span class="lb">Show achievements</span></button>
<div class="details">
<ul>
<li>Managed billing enquiries, account corrections and dispute resolution for residential and small business customers</li>
<li>Ensured data accuracy and compliance in a regulated energy retail environment</li>
</ul>
<div class="tags">
<span>Customer Service</span><span>Billing Operations</span><span>Dispute Resolution</span>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Education -->
<section class="edu-section">
<h2>Education</h2>
<div class="edu-grid">
<div class="edu-card">
<h3>University of Western Australia</h3>
<div class="detail">Bachelor of Commerce — Marketing &amp; Management</div>
<div class="year">2005 2010</div>
</div>
<div class="edu-card">
<h3>University of Western Australia</h3>
<div class="detail">Bachelor of Arts — History &amp; Politics</div>
<div class="year">2005 2010</div>
</div>
</div>
</section>
<!-- Professional Development -->
<section class="skills-section">
<h2>Professional Development</h2>
<div class="skills-grid">
<span class="skill-tag">IAP2 Essentials of Engagement (2023)</span>
<span class="skill-tag">AIM Time Management (2024)</span>
<span class="skill-tag">AI in Marketing — RMIT (2019)</span>
<span class="skill-tag">ADMA WFH Marketing Masterclass (2020)</span>
</div>
</section>
<!-- Core Capabilities -->
<section class="skills-section">
<h2>Core Capabilities</h2>
<div class="skills-grid">
<span class="skill-tag">Marketing Strategy</span>
<span class="skill-tag">Integrated Campaigns</span>
<span class="skill-tag">Corporate Communications</span>
<span class="skill-tag">Digital &amp; AI Marketing</span>
<span class="skill-tag">Brand Management</span>
<span class="skill-tag">Stakeholder Engagement</span>
<span class="skill-tag">Event Management</span>
<span class="skill-tag">Budget Management</span>
<span class="skill-tag">Social Media Strategy</span>
<span class="skill-tag">Energy Transition</span>
</div>
</section>
<div class="footer">
<p>Anthony Martin · <a href="https://anthony.martinwa.org" target="_blank">anthony.martinwa.org</a></p>
<p style="margin-top:0.3rem;color:var(--text-dim)">Built by the Rhino in the Green Jacket · Jul 2026</p>
</div>
<script>
function toggleDetails(card){
const details=card.querySelector('.details');
const btn=card.querySelector('.expand-btn');
const lbl=btn?.querySelector('.lb');
const isOpen=details.classList.contains('open');
details.classList.toggle('open');
btn?.classList.toggle('open');
if(lbl) lbl.textContent=isOpen?'Show achievements':'Hide achievements';
}
// Scroll-triggered visibility
const observer=new IntersectionObserver(entries=>{
entries.forEach(entry=>{
if(entry.isIntersecting) entry.target.classList.add('visible');
});
},{threshold:0.12,rootMargin:'0px 0px -50px 0px'});
document.querySelectorAll('.timeline-item, .edu-card, .skill-tag').forEach(el=>observer.observe(el));
// Dot highlight on scroll
const dotObserver=new IntersectionObserver(entries=>{
entries.forEach(entry=>{
const dot=entry.target.querySelector('.timeline-dot');
if(!dot) return;
if(entry.isIntersecting){
dot.style.transform='translateX(-50%) scale(1.25)';
dot.style.boxShadow='0 0 0 8px rgba(212,168,67,0.15)';
} else {
dot.style.transform='';
dot.style.boxShadow='';
}
});
},{threshold:0.35});
document.querySelectorAll('.timeline-item').forEach(el=>dotObserver.observe(el));
// Keyboard support
document.querySelectorAll('.timeline-card').forEach(card=>{
card.setAttribute('tabindex','0');
card.setAttribute('role','button');
card.addEventListener('keydown',e=>{
if(e.key==='Enter'||e.key===' '){e.preventDefault();toggleDetails(card);}
});
});
</script>
</body>
</html>