feat(design): deploy default OG card (JPG/PNG), complete banner hygiene (E8), modernize CJK typography (E9), align title & hero (A2)
Deploy / build (push) Successful in 21s
Deploy / build (push) Successful in 21s
This commit is contained in:
1 parent
c1aa62ecca
commit
3f63150d51
17 files changed
+564
-42
No files matched your search
@@ -0,0 +1,304 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=1200, initial-scale=1">
|
||||
<meta name="color-scheme" content="dark">
|
||||
<title>Mr Hoelee — Default Open Graph Card</title>
|
||||
<style>
|
||||
@page { size: 1200px 630px; margin: 0; }
|
||||
:root {
|
||||
--paper: #111827;
|
||||
--surface: #1f2937;
|
||||
--surface-2: #263244;
|
||||
--border: #2a3345;
|
||||
--ink: #e5e7eb;
|
||||
--muted: #9ca3af;
|
||||
--faint: #6b7280;
|
||||
--brand: #6d8dff;
|
||||
--brand-soft: #60a5fa;
|
||||
--good: #4ade80;
|
||||
}
|
||||
* { box-sizing: border-box; }
|
||||
html, body {
|
||||
width: 1200px;
|
||||
height: 630px;
|
||||
min-width: 1200px;
|
||||
min-height: 630px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
overflow: hidden;
|
||||
background: var(--paper);
|
||||
}
|
||||
body {
|
||||
color: var(--ink);
|
||||
font-family: "Segoe UI", system-ui, -apple-system, Roboto, Helvetica, Arial, sans-serif;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
text-rendering: geometricPrecision;
|
||||
}
|
||||
.canvas {
|
||||
position: relative;
|
||||
width: 1200px;
|
||||
height: 630px;
|
||||
overflow: hidden;
|
||||
isolation: isolate;
|
||||
background: var(--paper);
|
||||
}
|
||||
.grid-overlay {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 700px;
|
||||
width: 500px;
|
||||
z-index: -1;
|
||||
opacity: .18;
|
||||
background-image:
|
||||
linear-gradient(rgba(109,141,255,.10) 1px, transparent 1px),
|
||||
linear-gradient(90deg, rgba(109,141,255,.10) 1px, transparent 1px);
|
||||
background-size: 48px 48px;
|
||||
}
|
||||
.ambient-lines {
|
||||
position: absolute;
|
||||
right: 20px;
|
||||
top: 112px;
|
||||
width: 386px;
|
||||
height: 380px;
|
||||
z-index: -1;
|
||||
opacity: .5;
|
||||
}
|
||||
.header {
|
||||
position: absolute;
|
||||
left: 64px;
|
||||
top: 64px;
|
||||
width: 1072px;
|
||||
height: 44px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.brand-mark {
|
||||
width: 44px;
|
||||
height: 44px;
|
||||
object-fit: contain;
|
||||
display: block;
|
||||
flex: 0 0 auto;
|
||||
}
|
||||
.eyebrow {
|
||||
margin-left: 14px;
|
||||
color: var(--muted);
|
||||
font-size: 22px;
|
||||
line-height: 1.2;
|
||||
font-weight: 600;
|
||||
letter-spacing: .7px;
|
||||
text-transform: uppercase;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.domain {
|
||||
margin-left: auto;
|
||||
color: var(--brand);
|
||||
font-family: "JetBrains Mono", Consolas, monospace;
|
||||
font-size: 22px;
|
||||
line-height: 1.2;
|
||||
font-weight: 600;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.left-content {
|
||||
position: absolute;
|
||||
left: 64px;
|
||||
top: 160px;
|
||||
width: 700px;
|
||||
}
|
||||
h1 {
|
||||
margin: 0;
|
||||
color: var(--ink);
|
||||
font-size: 64px;
|
||||
line-height: 1.08;
|
||||
letter-spacing: -2px;
|
||||
font-weight: 750;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.real-name {
|
||||
margin: 17px 0 0 2px;
|
||||
color: var(--muted);
|
||||
font-size: 28px;
|
||||
line-height: 1.2;
|
||||
font-weight: 500;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.accent-rule {
|
||||
width: 68px;
|
||||
height: 4px;
|
||||
margin-top: 28px;
|
||||
border-radius: 2px;
|
||||
background: var(--brand);
|
||||
}
|
||||
.job-title {
|
||||
margin: 23px 0 0;
|
||||
color: var(--ink);
|
||||
font-size: 28px;
|
||||
line-height: 1.25;
|
||||
font-weight: 650;
|
||||
letter-spacing: -.35px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.positioning {
|
||||
margin: 17px 0 0;
|
||||
color: var(--brand-soft);
|
||||
font-size: 22px;
|
||||
line-height: 1.35;
|
||||
font-weight: 500;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.workstream {
|
||||
position: absolute;
|
||||
left: 64px;
|
||||
top: 469px;
|
||||
width: 690px;
|
||||
height: 62px;
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr 1.2fr;
|
||||
align-items: center;
|
||||
border-top: 1px solid var(--border);
|
||||
}
|
||||
.workstream-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 11px;
|
||||
color: var(--muted);
|
||||
font-family: "JetBrains Mono", Consolas, monospace;
|
||||
font-size: 22px;
|
||||
line-height: 1.2;
|
||||
font-weight: 600;
|
||||
letter-spacing: .2px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.workstream-item::before {
|
||||
content: "";
|
||||
width: 7px;
|
||||
height: 7px;
|
||||
border-radius: 2px;
|
||||
background: var(--brand);
|
||||
box-shadow: 0 0 0 4px rgba(109,141,255,.10);
|
||||
flex: 0 0 auto;
|
||||
}
|
||||
.workstream-item:nth-child(2)::before { background: var(--brand-soft); }
|
||||
.workstream-item:nth-child(3)::before { background: var(--good); }
|
||||
.portrait-frame {
|
||||
position: absolute;
|
||||
margin: 0;
|
||||
left: 815px;
|
||||
top: 115px;
|
||||
width: 321px;
|
||||
height: 352px;
|
||||
padding: 10px;
|
||||
border: 1px solid #344159;
|
||||
border-radius: 19px;
|
||||
background: rgba(31,41,55,.88);
|
||||
box-shadow: 0 16px 48px rgba(0,0,0,.20);
|
||||
}
|
||||
.portrait {
|
||||
display: block;
|
||||
width: 299px;
|
||||
height: 330px;
|
||||
border-radius: 11px;
|
||||
object-fit: cover;
|
||||
object-position: center 32%;
|
||||
}
|
||||
.frame-accent {
|
||||
position: absolute;
|
||||
left: 838px;
|
||||
bottom: 148px;
|
||||
width: 46px;
|
||||
height: 4px;
|
||||
background: var(--brand);
|
||||
border-radius: 2px;
|
||||
}
|
||||
.portrait-caption {
|
||||
position: absolute;
|
||||
left: 815px;
|
||||
top: 486px;
|
||||
width: 321px;
|
||||
height: 42px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
border: 1px solid var(--border);
|
||||
border-radius: 9px;
|
||||
padding: 0 14px;
|
||||
background: rgba(31,41,55,.70);
|
||||
color: var(--muted);
|
||||
font-family: "JetBrains Mono", Consolas, monospace;
|
||||
font-size: 22px;
|
||||
line-height: 1;
|
||||
font-weight: 500;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.caption-dot {
|
||||
width: 7px;
|
||||
height: 7px;
|
||||
background: var(--good);
|
||||
border-radius: 50%;
|
||||
flex: 0 0 auto;
|
||||
}
|
||||
.corner-mark {
|
||||
position: absolute;
|
||||
right: 64px;
|
||||
top: 100px;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
opacity: .65;
|
||||
}
|
||||
.corner-mark::before, .corner-mark::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
background: var(--brand);
|
||||
}
|
||||
.corner-mark::before { width: 20px; height: 1px; top: 9px; }
|
||||
.corner-mark::after { height: 20px; width: 1px; left: 9px; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<main class="canvas" aria-label="Mr Hoelee default social-share card">
|
||||
<div class="grid-overlay" aria-hidden="true"></div>
|
||||
<svg class="ambient-lines" viewBox="0 0 386 380" fill="none" aria-hidden="true">
|
||||
<g stroke="#6d8dff" stroke-width="1">
|
||||
<path d="M190 8H354V58H300V91H360" opacity=".38"/>
|
||||
<path d="M246 16V72H208V114H170" opacity=".25"/>
|
||||
<path d="M30 170H88V207H126V246H164" opacity=".24"/>
|
||||
<path d="M338 133V172H308V218H276" opacity=".26"/>
|
||||
<path d="M206 300H260V332H338" opacity=".22"/>
|
||||
<circle cx="354" cy="58" r="3" fill="#6d8dff" fill-opacity=".65" stroke="none"/>
|
||||
<circle cx="170" cy="114" r="3" fill="#60a5fa" fill-opacity=".65" stroke="none"/>
|
||||
<circle cx="164" cy="246" r="3" fill="#6d8dff" fill-opacity=".65" stroke="none"/>
|
||||
<circle cx="276" cy="218" r="3" fill="#60a5fa" fill-opacity=".65" stroke="none"/>
|
||||
</g>
|
||||
</svg>
|
||||
<div class="corner-mark" aria-hidden="true"></div>
|
||||
|
||||
<header class="header">
|
||||
<img class="brand-mark" src="{{LOGO_PATH}}" alt="" />
|
||||
<div class="eyebrow">Engineering Notes</div>
|
||||
<div class="domain">blog.hoelee.com</div>
|
||||
</header>
|
||||
|
||||
<section class="left-content">
|
||||
<h1>Mr Hoelee</h1>
|
||||
<p class="real-name">Lee Teong Hoe</p>
|
||||
<div class="accent-rule" aria-hidden="true"></div>
|
||||
<p class="job-title">Full-stack Developer & DevOps Engineer</p>
|
||||
<p class="positioning">Web development · DevOps · self-hosting</p>
|
||||
</section>
|
||||
|
||||
<figure class="portrait-frame">
|
||||
<img class="portrait" src="{{PHOTO_PATH}}" alt="" />
|
||||
</figure>
|
||||
<div class="frame-accent" aria-hidden="true"></div>
|
||||
<div class="portrait-caption"><span class="caption-dot" aria-hidden="true"></span><span>BUILD · RUN · LEARN</span></div>
|
||||
|
||||
<div class="workstream" aria-label="Engineering themes">
|
||||
<div class="workstream-item">BUILD</div>
|
||||
<div class="workstream-item">OPERATE</div>
|
||||
<div class="workstream-item">DOCUMENT</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
Reference in new issue
Block a user