454 lines
22 KiB
HTML
454 lines
22 KiB
HTML
<!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 rel="preconnect" href="https://fonts.googleapis.com">
|
||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||
<link href="https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,400;9..144,500;9..144,600;9..144,700&family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
|
||
<style>
|
||
*{margin:0;padding:0;box-sizing:border-box}
|
||
:root{
|
||
--bg:#f4f1ea;
|
||
--bg-2:#ece7dc;
|
||
--ink:#1c1b19;
|
||
--ink-soft:#56524b;
|
||
--ink-faint:#9a948a;
|
||
--line:#d8d1c4;
|
||
--accent:#b5462e; /* terracotta — the spark */
|
||
--accent-deep:#8f3320;
|
||
--gold:#c89b3c; /* ochre — the through-line */
|
||
--card:#fbf9f4;
|
||
--shadow:0 1px 2px rgba(28,27,25,0.04),0 8px 24px rgba(28,27,25,0.05);
|
||
--shadow-h:0 2px 4px rgba(28,27,25,0.06),0 16px 40px rgba(28,27,25,0.09);
|
||
--radius:14px;
|
||
}
|
||
html{scroll-behavior:smooth}
|
||
body{
|
||
font-family:'Inter',system-ui,sans-serif;
|
||
background:var(--bg);color:var(--ink);
|
||
-webkit-font-smoothing:antialiased;line-height:1.6;
|
||
overflow-x:hidden;
|
||
}
|
||
::selection{background:rgba(181,70,46,0.18);color:var(--ink)}
|
||
a{color:var(--accent-deep);text-decoration:none;transition:color .2s}
|
||
a:hover{color:var(--accent)}
|
||
|
||
/* ═══════════ HERO ═══════════ */
|
||
.hero{
|
||
min-height:100vh;
|
||
display:flex;flex-direction:column;justify-content:center;
|
||
padding:2rem clamp(1.5rem,6vw,8rem);
|
||
position:relative;
|
||
background:
|
||
radial-gradient(ellipse 80% 60% at 85% 15%,rgba(200,155,60,0.10),transparent 60%),
|
||
radial-gradient(ellipse 70% 50% at 10% 90%,rgba(181,70,46,0.08),transparent 55%),
|
||
linear-gradient(160deg,var(--bg) 0%,var(--bg-2) 100%);
|
||
}
|
||
.hero .eyebrow{
|
||
font-family:'Inter';font-size:.7rem;font-weight:600;
|
||
letter-spacing:.22em;text-transform:uppercase;color:var(--accent);
|
||
margin-bottom:1.4rem;display:flex;align-items:center;gap:.7rem;
|
||
opacity:0;animation:rise .7s ease .1s both;
|
||
}
|
||
.hero .eyebrow::before{content:'';width:28px;height:2px;background:var(--accent);border-radius:1px}
|
||
.hero h1{
|
||
font-family:'Fraunces',Georgia,serif;
|
||
font-weight:500;font-size:clamp(2.8rem,8vw,6.5rem);
|
||
line-height:.98;letter-spacing:-.02em;color:var(--ink);
|
||
max-width:13ch;margin-bottom:1.6rem;
|
||
opacity:0;animation:rise .8s ease .2s both;
|
||
}
|
||
.hero h1 em{font-style:italic;color:var(--accent);font-weight:600}
|
||
.hero .lede{
|
||
font-size:clamp(1rem,2vw,1.25rem);font-weight:400;
|
||
color:var(--ink-soft);max-width:46ch;line-height:1.55;
|
||
opacity:0;animation:rise .8s ease .35s both;
|
||
}
|
||
.hero .stats{
|
||
display:flex;flex-wrap:wrap;gap:2.5rem;margin-top:3rem;
|
||
opacity:0;animation:rise .8s ease .5s both;
|
||
}
|
||
.hero .stats .stat .num{
|
||
font-family:'Fraunces',serif;font-size:2.2rem;font-weight:600;color:var(--ink);
|
||
line-height:1;
|
||
}
|
||
.hero .stats .stat .num span{color:var(--accent)}
|
||
.hero .stats .stat .lbl{
|
||
font-size:.72rem;color:var(--ink-faint);letter-spacing:.04em;margin-top:.35rem;font-weight:500;
|
||
}
|
||
.hero .scroll-cue{
|
||
position:absolute;bottom:2.2rem;left:clamp(1.5rem,6vw,8rem);
|
||
font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint);
|
||
display:flex;align-items:center;gap:.5rem;cursor:pointer;transition:color .2s;
|
||
}
|
||
.hero .scroll-cue:hover{color:var(--accent)}
|
||
.hero .scroll-cue .dash{width:30px;height:1px;background:currentColor;display:inline-block;animation:slide 2s ease-in-out infinite}
|
||
|
||
/* ═══════════ TIMELINE ═══════════ */
|
||
.wrap{max-width:960px;margin:0 auto;padding:5rem 1.5rem 6rem}
|
||
.section-label{
|
||
font-size:.7rem;font-weight:600;letter-spacing:.2em;text-transform:uppercase;
|
||
color:var(--ink-faint);text-align:center;margin-bottom:.5rem;
|
||
}
|
||
.section-sub{
|
||
font-family:'Fraunces',serif;font-style:italic;font-size:1.3rem;color:var(--ink-soft);
|
||
text-align:center;margin-bottom:3.5rem;max-width:30ch;margin-left:auto;margin-right:auto;line-height:1.4;
|
||
}
|
||
|
||
.timeline{position:relative}
|
||
.timeline::before{
|
||
content:'';position:absolute;left:50%;top:8px;bottom:8px;width:2px;
|
||
background:linear-gradient(to bottom,transparent,var(--line) 6%,var(--line) 94%,transparent);
|
||
transform:translateX(-50%);
|
||
}
|
||
/* progress fill that grows on scroll */
|
||
.timeline .progress{
|
||
content:'';position:absolute;left:50%;top:8px;width:2px;height:0;
|
||
background:linear-gradient(to bottom,var(--accent),var(--gold));
|
||
transform:translateX(-50%);z-index:1;border-radius:2px;
|
||
transition:height .15s linear;
|
||
}
|
||
|
||
.item{position:relative;margin-bottom:2.2rem;display:flex;width:100%}
|
||
.item:nth-child(odd){justify-content:flex-start}
|
||
.item:nth-child(even){justify-content:flex-end}
|
||
|
||
.node{
|
||
position:absolute;left:50%;top:2.1rem;width:16px;height:16px;
|
||
transform:translateX(-50%);border-radius:50%;
|
||
background:var(--card);border:2px solid var(--line);z-index:3;
|
||
transition:all .4s cubic-bezier(.22,1,.36,1);
|
||
}
|
||
.item.in .node{border-color:var(--accent);background:var(--accent);
|
||
box-shadow:0 0 0 5px rgba(181,70,46,.14),0 0 14px rgba(181,70,46,.25)}
|
||
|
||
.card{
|
||
width:calc(50% - 44px);background:var(--card);border:1px solid var(--line);
|
||
border-radius:var(--radius);padding:1.5rem 1.6rem;cursor:pointer;
|
||
box-shadow:var(--shadow);position:relative;
|
||
opacity:0;transform:translateY(28px);
|
||
transition:opacity .7s cubic-bezier(.22,1,.36,1),transform .7s cubic-bezier(.22,1,.36,1),
|
||
box-shadow .3s ease,border-color .3s ease;
|
||
}
|
||
.item.in .card{opacity:1;transform:translateY(0)}
|
||
.card:hover{box-shadow:var(--shadow-h);border-color:#c9c0b0}
|
||
/* connector */
|
||
.item:nth-child(odd) .card::after,.item:nth-child(even) .card::after{
|
||
content:'';position:absolute;top:2rem;width:32px;height:2px;background:var(--line);
|
||
}
|
||
.item:nth-child(odd) .card::after{right:-32px}
|
||
.item:nth-child(even) .card::after{left:-32px}
|
||
|
||
.card .yr{
|
||
font-size:.68rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;
|
||
color:var(--accent);margin-bottom:.35rem;display:flex;align-items:center;gap:.5rem;
|
||
}
|
||
.card .yr .seg{width:18px;height:2px;background:var(--gold);border-radius:1px}
|
||
.card .role{font-family:'Fraunces',serif;font-size:1.2rem;font-weight:600;color:var(--ink);line-height:1.2;margin-bottom:.1rem}
|
||
.card .co{font-size:.85rem;font-weight:600;color:var(--ink-soft);margin-bottom:.1rem}
|
||
.card .loc{font-size:.72rem;color:var(--ink-faint);margin-bottom:.6rem}
|
||
.card .sum{font-size:.82rem;color:var(--ink-soft);line-height:1.55;margin-bottom:.5rem}
|
||
.card .btn{
|
||
font-size:.72rem;font-weight:600;color:var(--accent);background:none;border:none;
|
||
padding:0;display:inline-flex;align-items:center;gap:.35rem;cursor:pointer;transition:color .2s;
|
||
}
|
||
.card .btn:hover{color:var(--accent-deep)}
|
||
.card .btn .ar{transition:transform .25s ease;font-size:.6rem}
|
||
.card .btn.open .ar{transform:rotate(180deg)}
|
||
.card .details{max-height:0;overflow:hidden;transition:max-height .45s ease,opacity .3s ease;opacity:0}
|
||
.card .details.open{max-height:1600px;opacity:1}
|
||
.card .details ul{list-style:none;padding:1rem 0 0;margin-top:.5rem;border-top:1px solid var(--line)}
|
||
.card .details li{font-size:.78rem;color:var(--ink-soft);line-height:1.5;padding:.28rem 0 .28rem 1.1rem;position:relative}
|
||
.card .details li::before{content:'';position:absolute;left:0;top:.72rem;width:5px;height:5px;border-radius:50%;background:var(--accent)}
|
||
.card .tags{display:flex;flex-wrap:wrap;gap:.3rem;padding-top:.7rem;margin-top:.5rem;border-top:1px solid var(--line)}
|
||
.card .tags span{background:rgba(200,155,60,.12);color:var(--accent-deep);font-size:.62rem;font-weight:600;padding:.18rem .55rem;border-radius:100px;letter-spacing:.02em}
|
||
|
||
/* ═══════════ PRESENT BANNER ═══════════ */
|
||
.present{
|
||
max-width:680px;margin:0 auto 4rem;text-align:center;
|
||
background:linear-gradient(135deg,var(--card),#fff);
|
||
border:1px solid var(--line);border-radius:18px;padding:2rem 2rem 1.8rem;
|
||
box-shadow:var(--shadow);position:relative;overflow:hidden;
|
||
}
|
||
.present::before{content:'';position:absolute;top:0;left:18%;right:18%;height:2px;
|
||
background:linear-gradient(90deg,transparent,var(--accent),transparent);border-radius:1px}
|
||
.present .tag{font-size:.65rem;letter-spacing:.14em;text-transform:uppercase;font-weight:600;color:var(--accent);margin-bottom:.5rem;display:flex;align-items:center;justify-content:center;gap:.4rem}
|
||
.present .tag .d{width:7px;height:7px;border-radius:50%;background:var(--accent);animation:pulse 2.2s ease-in-out infinite}
|
||
.present h2{font-family:'Fraunces',serif;font-size:1.5rem;font-weight:600;color:var(--ink);margin-bottom:.4rem}
|
||
.present p{font-size:.9rem;color:var(--ink-soft);line-height:1.6;max-width:48ch;margin:0 auto}
|
||
|
||
/* ═══════════ CAPABILITIES ═══════════ */
|
||
.caps{max-width:760px;margin:5rem auto 0;padding:0 1.5rem}
|
||
.caps h2{font-family:'Fraunces',serif;font-style:italic;font-size:1.5rem;color:var(--ink);text-align:center;margin-bottom:1.8rem}
|
||
.caps-grid{display:flex;flex-wrap:wrap;gap:.55rem;justify-content:center}
|
||
.cap{
|
||
background:var(--card);border:1px solid var(--line);border-radius:100px;
|
||
padding:.5rem 1.1rem;font-size:.78rem;font-weight:500;color:var(--ink-soft);
|
||
box-shadow:var(--shadow);opacity:0;transform:translateY(12px) scale(.96);
|
||
transition:opacity .4s ease,transform .4s ease,border-color .2s,color .2s;
|
||
}
|
||
.cap.in{opacity:1;transform:none}
|
||
.cap:hover{border-color:var(--accent);color:var(--accent-deep)}
|
||
|
||
.edu{max-width:760px;margin:4rem auto 0;padding:0 1.5rem}
|
||
.edu h2{font-family:'Fraunces',serif;font-style:italic;font-size:1.5rem;color:var(--ink);text-align:center;margin-bottom:1.8rem}
|
||
.edu-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
|
||
.edu-card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:1.3rem 1.4rem;box-shadow:var(--shadow);opacity:0;transform:translateY(16px);transition:opacity .6s ease,transform .6s ease}
|
||
.edu-card.in{opacity:1;transform:none}
|
||
.edu-card h3{font-family:'Fraunces',serif;font-size:1rem;font-weight:600;color:var(--ink);margin-bottom:.3rem}
|
||
.edu-card .d{font-size:.8rem;color:var(--ink-soft);margin-bottom:.2rem}
|
||
.edu-card .y{font-size:.7rem;font-weight:600;color:var(--gold);letter-spacing:.03em}
|
||
|
||
.footer{text-align:center;padding:3rem 1.5rem 2rem;color:var(--ink-faint);font-size:.72rem;border-top:1px solid var(--line);max-width:760px;margin:4rem auto 0}
|
||
.footer a{color:var(--accent-deep)}
|
||
|
||
@keyframes rise{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}
|
||
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}
|
||
@keyframes slide{0%,100%{transform:translateX(0);opacity:.4}50%{transform:translateX(6px);opacity:1}}
|
||
|
||
@media(prefers-reduced-motion:reduce){
|
||
*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}
|
||
.card,.cap,.edu-card{opacity:1!important;transform:none!important}
|
||
}
|
||
@media(max-width:720px){
|
||
.timeline::before,.timeline .progress{left:15px}
|
||
.node{left:15px}
|
||
.item,.item:nth-child(even){justify-content:flex-end}
|
||
.card{width:calc(100% - 42px);margin-left:auto}
|
||
.item:nth-child(odd) .card::after,.item:nth-child(even) .card::after{left:auto;right:calc(100% - 42px);width:27px}
|
||
.edu-grid{grid-template-columns:1fr}
|
||
.hero .stats{gap:1.6rem}
|
||
}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
|
||
<section class="hero">
|
||
<div class="eyebrow">Marketing & Communications · Perth</div>
|
||
<h1>Fifteen years of making energy <em>make sense</em>.</h1>
|
||
<p class="lede">From billing enquiries to national EV rollouts — a career spent turning complex infrastructure into stories people actually understand.</p>
|
||
<div class="stats">
|
||
<div class="stat"><div class="num">15<span>+</span></div><div class="lbl">Years in market</div></div>
|
||
<div class="stat"><div class="num">3</div><div class="lbl">Energy companies</div></div>
|
||
<div class="stat"><div class="num">$2M<span>+</span></div><div class="lbl">Annual budgets led</div></div>
|
||
<div class="stat"><div class="num">6</div><div class="lbl">Distinct roles</div></div>
|
||
</div>
|
||
<div class="scroll-cue" onclick="document.getElementById('arc').scrollIntoView()">
|
||
<span class="dash"></span> The arc
|
||
</div>
|
||
</section>
|
||
|
||
<div class="wrap">
|
||
<div id="arc">
|
||
<div class="section-label">The Career Arc</div>
|
||
<div class="section-sub">One through-line: customer → product → brand → transition</div>
|
||
</div>
|
||
|
||
<div class="present">
|
||
<div class="tag"><span class="d"></span> Now</div>
|
||
<h2>Open to what's next</h2>
|
||
<p>Just wrapped a Marketing Advisor role at Pacific Energy. Looking for corporate marketing, communications and digital strategy roles across Perth and WA.</p>
|
||
</div>
|
||
|
||
<div class="timeline" id="timeline">
|
||
<div class="progress" id="progress"></div>
|
||
|
||
<!-- 1 -->
|
||
<div class="item">
|
||
<div class="node"></div>
|
||
<div class="card" onclick="toggle(this)">
|
||
<div class="yr"><span class="seg"></span> Jun 2025 – Jul 2026</div>
|
||
<div class="role">Marketing Advisor</div>
|
||
<div class="co">Pacific Energy</div>
|
||
<div class="loc">Kewdale, Perth WA</div>
|
||
<div class="sum">Corporate marketing, digital content, technical communications, major events and the company's marketing AI strategy.</div>
|
||
<button class="btn"><span class="ar">▾</span> <span class="lb">What I delivered</span></button>
|
||
<div class="details">
|
||
<ul>
|
||
<li>Built and rolled out a social strategy + capability content series across LinkedIn and corporate channels</li>
|
||
<li>Defined Pacific Energy's marketing AI strategy, mapping practical use across content, digital and operations</li>
|
||
<li>Led marketing on the corporate website — named Science & Sustainability Website of the Year, 2026 Australian Web Awards</li>
|
||
<li>End-to-end delivery for the Australian Clean Energy Summit & Pilbara Summit — activation, creative, content, logistics</li>
|
||
<li>Translated complex projects (battery storage, remote power, hybrids) into clear executive comms</li>
|
||
</ul>
|
||
<div class="tags"><span>B2B Marketing</span><span>AI Strategy</span><span>Web Awards</span><span>Events</span></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- 2 -->
|
||
<div class="item">
|
||
<div class="node"></div>
|
||
<div class="card" onclick="toggle(this)">
|
||
<div class="yr"><span class="seg"></span> 2019 – Sep 2024</div>
|
||
<div class="role">Marketing Specialist</div>
|
||
<div class="co">Horizon Power</div>
|
||
<div class="loc">Perth, WA</div>
|
||
<div class="sum">Integrated marketing, regulated communications and customer engagement across WA's regional energy provider.</div>
|
||
<button class="btn"><span class="ar">▾</span> <span class="lb">What I delivered</span></button>
|
||
<div class="details">
|
||
<ul>
|
||
<li>Led integrated campaigns across digital, social, email, mail, TV, print and community</li>
|
||
<li>Managed $2M+ annual budgets, using research and segmentation to prioritise spend</li>
|
||
<li>Marketing lead on the WA EV Network — the state's charging infrastructure rollout</li>
|
||
<li>Supported Smart Connect Solar and other distributed-energy launches</li>
|
||
<li>Directed compliance-critical comms for price changes, concessions and cost-of-living</li>
|
||
<li>Created Bright Horizons STEM — solar education kits for remote schools</li>
|
||
</ul>
|
||
<div class="tags"><span>Campaigns</span><span>$2M+ Budget</span><span>WA EV Network</span><span>Energy Transition</span></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- 3 -->
|
||
<div class="item">
|
||
<div class="node"></div>
|
||
<div class="card" onclick="toggle(this)">
|
||
<div class="yr"><span class="seg"></span> 2015 – 2018</div>
|
||
<div class="role">Energy Solutions Marketing Specialist</div>
|
||
<div class="co">Synergy</div>
|
||
<div class="loc">Perth, WA</div>
|
||
<div class="sum">Commercial growth and customer experience across renewable products, digital channels and agency management.</div>
|
||
<button class="btn"><span class="ar">▾</span> <span class="lb">What I delivered</span></button>
|
||
<div class="details">
|
||
<ul>
|
||
<li>Led SolarReturn from research to launch — 40% sales lift in year one</li>
|
||
<li>Managed 3+ agencies; lifted conversion 35% through iterative optimisation</li>
|
||
<li>Mapped the solar customer journey, cutting inquiry-to-sale time by 20%</li>
|
||
<li>Turned policy, rebates and feed-in tariffs into accessible comms (TV, radio, OOH, social, email, SMS)</li>
|
||
</ul>
|
||
<div class="tags"><span>Product Launch</span><span>SolarReturn</span><span>Agency Mgmt</span><span>CRO</span></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- 4 -->
|
||
<div class="item">
|
||
<div class="node"></div>
|
||
<div class="card" onclick="toggle(this)">
|
||
<div class="yr"><span class="seg"></span> 2014 – 2015</div>
|
||
<div class="role">Business Segment Coordinator</div>
|
||
<div class="co">Synergy</div>
|
||
<div class="loc">Perth, WA</div>
|
||
<div class="sum">Financial and portfolio management, enterprise comms and cross-functional coordination.</div>
|
||
<button class="btn"><span class="ar">▾</span> <span class="lb">What I delivered</span></button>
|
||
<div class="details">
|
||
<ul>
|
||
<li>Ran the streetlighting portfolio; resolved $1.3M in billing discrepancies</li>
|
||
<li>Introduced stronger reconciliation controls; fed the Annual Review of Products & Pricing</li>
|
||
<li>Built a company-wide comms framework (email, SMS, print) for 1M+ customers</li>
|
||
</ul>
|
||
<div class="tags"><span>Financial Mgmt</span><span>Billing</span><span>Enterprise Comms</span></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- 5 -->
|
||
<div class="item">
|
||
<div class="node"></div>
|
||
<div class="card" onclick="toggle(this)">
|
||
<div class="yr"><span class="seg"></span> 2012 – 2014</div>
|
||
<div class="role">Assistant Product Manager</div>
|
||
<div class="co">Synergy · Industrial & Commercial</div>
|
||
<div class="loc">Perth, WA</div>
|
||
<div class="sum">Product and sales development for commercial renewable energy products and digital sales platforms.</div>
|
||
<button class="btn"><span class="ar">▾</span> <span class="lb">What I delivered</span></button>
|
||
<div class="details">
|
||
<ul>
|
||
<li>Launched the Synergy Sellback Program — value for exported commercial renewables</li>
|
||
<li>Built an online sales platform with calculators and training</li>
|
||
<li>Drove sales performance 150% above target</li>
|
||
</ul>
|
||
<div class="tags"><span>Product</span><span>Sellback</span><span>Digital Platform</span><span>Sales</span></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- 6 -->
|
||
<div class="item">
|
||
<div class="node"></div>
|
||
<div class="card" onclick="toggle(this)">
|
||
<div class="yr"><span class="seg"></span> 2010 – 2012</div>
|
||
<div class="role">Billing Officer</div>
|
||
<div class="co">Synergy</div>
|
||
<div class="loc">Perth, WA</div>
|
||
<div class="sum">Customer billing, enquiry management and dispute resolution in a regulated retail environment.</div>
|
||
<button class="btn"><span class="ar">▾</span> <span class="lb">What I delivered</span></button>
|
||
<div class="details">
|
||
<ul>
|
||
<li>Managed billing enquiries, corrections and disputes for residential & SME customers</li>
|
||
<li>Held data accuracy and compliance in a regulated setting</li>
|
||
</ul>
|
||
<div class="tags"><span>Customer Service</span><span>Operations</span><span>Compliance</span></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<section class="caps">
|
||
<h2>What I bring</h2>
|
||
<div class="caps-grid">
|
||
<span class="cap">Marketing Strategy</span>
|
||
<span class="cap">Integrated Campaigns</span>
|
||
<span class="cap">Corporate Comms</span>
|
||
<span class="cap">Digital & AI Marketing</span>
|
||
<span class="cap">Brand & Product</span>
|
||
<span class="cap">Stakeholder Engagement</span>
|
||
<span class="cap">Event Management</span>
|
||
<span class="cap">Budget Management</span>
|
||
<span class="cap">Social Strategy</span>
|
||
<span class="cap">Energy Transition</span>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="edu">
|
||
<h2>Education</h2>
|
||
<div class="edu-grid">
|
||
<div class="edu-card">
|
||
<h3>University of Western Australia</h3>
|
||
<div class="d">Bachelor of Commerce — Marketing & Management</div>
|
||
<div class="y">2005 – 2010</div>
|
||
</div>
|
||
<div class="edu-card">
|
||
<h3>University of Western Australia</h3>
|
||
<div class="d">Bachelor of Arts — History & Politics</div>
|
||
<div class="y">2005 – 2010</div>
|
||
</div>
|
||
</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:.4rem">Built by the Rhino in the Green Jacket · Jul 2026</p>
|
||
</div>
|
||
|
||
<script>
|
||
function toggle(card){
|
||
const d=card.querySelector('.details'),b=card.querySelector('.btn'),l=b?.querySelector('.lb');
|
||
const open=d.classList.contains('open');
|
||
d.classList.toggle('open');b?.classList.toggle('open');
|
||
if(l) l.textContent=open?'What I delivered':'Hide';
|
||
}
|
||
// reveal on scroll
|
||
const io=new IntersectionObserver(es=>es.forEach(e=>{if(e.isIntersecting)e.target.classList.add('in')}),{threshold:.15});
|
||
document.querySelectorAll('.item,.cap,.edu-card').forEach(el=>io.observe(el));
|
||
// progress line
|
||
const tl=document.getElementById('timeline'),prog=document.getElementById('progress');
|
||
addEventListener('scroll',()=>{
|
||
const r=tl.getBoundingClientRect(),vh=innerHeight;
|
||
const total=r.height,seen=Math.min(Math.max(vh*0.5-r.top,0),total);
|
||
prog.style.height=seen+'px';
|
||
},{passive:true});
|
||
// keyboard
|
||
document.querySelectorAll('.card').forEach(c=>{
|
||
c.setAttribute('tabindex','0');c.setAttribute('role','button');
|
||
c.addEventListener('keydown',e=>{if(e.key==='Enter'||e.key===' '){e.preventDefault();toggle(c)}});
|
||
});
|
||
</script>
|
||
</body>
|
||
</html>
|