Zentix Case Study



@import url('https://fonts.googleapis.com/css2?family=Manrope:wght@300;400;500;600;700;800;900&family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap');

:root {
--bg: #0a0a0a;
--panel: #141414;
--panel-2: #161616;
--rule: #23252a;
--rule-2: #3d3e42;
--ink: #f7f8f8;
--ink-dim: #9aa0a6;
--ink-faint: #5f6368;
--yellow: #e4f223;
--green: #3ecf8e;
--font-head: 'Manrope', system-ui, -apple-system, sans-serif;
--font-body: 'Inter', system-ui, -apple-system, sans-serif;
--font-mono: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, monospace;
}

* { box-sizing: border-box; margin: 0; padding: 0; }
html { background: transparent; scroll-behavior: smooth; }

body {
background: transparent;
color: var(--ink);
font-family: var(--font-body);
line-height: 1.6;
-webkit-font-smoothing: antialiased;
overflow-x: hidden;
}

.wrap { max-width: 940px; margin: 0 auto; padding: 0 20px; }

/* ============ HERO ============ */
header { padding: 50px 0 8px; }
h1 {
font-family: var(--font-head); font-weight: 800;
font-size: clamp(40px, 11vw, 76px); line-height: 0.95; letter-spacing: -0.045em;
}
h1 .accent { color: var(--yellow); }
.sub {
margin-top: 18px; font-size: clamp(16px, 4.4vw, 20px); font-weight: 500;
color: var(--ink); letter-spacing: -0.01em;
}
.client {
margin-top: 10px; font-family: var(--font-mono);
font-size: 12.5px; color: var(--ink-dim); letter-spacing: 0.02em;
}
.client b { color: var(--yellow); font-weight: 500; }

/* ============ INTRO / OUTRO PROSE ============ */
.intro {
margin-top: 28px; font-size: 16.5px; color: var(--ink-dim);
max-width: 680px; line-height: 1.72;
}

/* ============ SECTION LABEL ============ */
.sec-label {
font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.22em;
text-transform: uppercase; color: var(--ink-faint);
margin: 44px 0 18px; display: flex; align-items: center; gap: 14px;
}
.sec-label::after { content:""; flex:1; height:1px; background: var(--rule); }

/* ============ GRID (mobile-first: single column) ============ */
.grid { display: grid; grid-template-columns: 1fr; gap: 14px; align-items: start; }

.card {
border: 1px solid var(--rule); border-radius: 14px; background: var(--panel);
padding: 26px 24px; position: relative; overflow: hidden;
transition: border-color .35s, background .35s;
}
.card:hover { border-color: var(--rule-2); background: var(--panel-2); }
.card .idx { font-family: var(--font-mono); font-size: 10.5px; color: var(--ink-faint); letter-spacing: 0.1em; }
.card .stat {
font-family: var(--font-head); font-weight: 800;
font-size: clamp(46px, 13vw, 58px); letter-spacing: -0.05em; line-height: 1;
margin: 14px 0 4px;
}
.card .stat .sup { font-size: 0.4em; vertical-align: super; font-weight: 700; }
.card .stat .x { font-size: 1em; font-weight: inherit; letter-spacing: -0.04em; }
.card.c-yellow .stat { color: var(--yellow); }
.card.c-green .stat { color: var(--green); }
.card .stat-name { font-family: var(--font-head); font-weight: 600; font-size: 16px; color: var(--ink); margin-bottom: 10px; }
.card p { font-size: 14.5px; color: var(--ink-dim); }

/* expandable detail (checkbox — no scripts in blog iframe) */
.more { margin-top: 18px; border-top: 1px solid var(--rule); padding-top: 14px; position: relative; }
.more-check {
position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}
.more-toggle {
cursor: pointer; user-select: none;
font-family: var(--font-mono); font-size: 10.5px; letter-spacing: 0.14em;
text-transform: uppercase; color: var(--yellow);
display: inline-flex; align-items: center; gap: 9px;
transition: opacity .2s;
}
.more-toggle:hover { opacity: 0.78; }
.more-toggle .pm {
display: inline-grid; place-items: center;
width: 16px; height: 16px; border: 1px solid var(--yellow); border-radius: 5px;
font-size: 13px; line-height: 1; transition: transform .28s ease;
}
.more-check:checked + .more-toggle .pm { transform: rotate(45deg); }
.more-check:not(:checked) ~ .more-body,
.more-check:not(:checked) ~ .more-label { display: none; }
.more .more-body { margin-top: 13px; font-size: 13.5px; color: var(--ink-dim); line-height: 1.64; }
.more .more-body p + p { margin-top: 11px; }

/* callout card */
.card.callout {
border-left: 3px solid var(--yellow);
background: linear-gradient(180deg, rgba(228,242,35,0.05), transparent 70%), var(--panel);
}
.card.callout .nl {
font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.18em;
text-transform: uppercase; color: var(--yellow); margin-bottom: 10px;
}
.card.callout p { color: var(--ink); font-size: 15px; }

/* ============ CLOSE ============ */
.close { margin: 54px 0 72px; border-top: 1px solid var(--rule); padding-top: 38px; }
.close .summary {
font-size: 16.5px; color: var(--ink-dim); max-width: 680px; line-height: 1.72;
margin-bottom: 30px;
}
.close .cta {
display: inline-flex; align-items: center; gap: 12px;
font-family: var(--font-mono); font-size: 13px; letter-spacing: 0.04em;
color: var(--bg); background: var(--yellow); padding: 14px 22px; border-radius: 100px;
text-decoration: none; font-weight: 700; transition: transform .25s, box-shadow .25s;
}
.close .cta:hover { transform: translateY(-2px); box-shadow: 0 10px 30px rgba(228,242,35,0.22); }

.reveal { opacity: 0; transform: translateY(20px); }
.reveal.in { opacity: 1; transform: none; transition: opacity .6s ease, transform .6s cubic-bezier(.2,.7,.2,1); }


/* card with expandable detail — desktop two-column */
.card.has-more { display: flex; flex-direction: column; }
.card-primary { min-width: 0; }

@media (min-width: 720px) {
.card.has-more {
display: grid;
grid-template-columns: minmax(0, 1fr) minmax(210px, 34%);
gap: 0 28px;
align-items: start;
}
.grid .card.has-more {
grid-column: 1 / -1;
}
.card.has-more .more {
margin-top: 0;
border-top: none;
padding-top: 0;
border-left: 1px solid var(--rule);
padding-left: 22px;
align-self: stretch;
}
.card.has-more .more-toggle { display: none; }
.card.has-more .more .more-body,
.card.has-more .more .more-label { display: block !important; }
.card.has-more .more .more-body {
display: block !important;
margin-top: 0;
}
.card.has-more .more .more-label {
display: block;
font-family: var(--font-mono);
font-size: 10px;
letter-spacing: 0.18em;
text-transform: uppercase;
color: var(--yellow);
margin-bottom: 10px;
}
}
.more .more-label { display: none; }

/* ============ TABLET / DESKTOP ============ */
@media (min-width: 720px) {
.wrap { padding: 0 24px; }
header { padding: 70px 0 8px; }
.grid { grid-template-columns: repeat(2, 1fr); gap: 16px; }
.grid .card.callout { grid-column: 1 / -1; }
.card { padding: 30px 28px; }
.card .stat { font-size: clamp(44px, 5vw, 56px); }
}







Zentix Case Study
Fear Columbus Presale · 2026 Halloween Season
Client · Fear Columbus Haunted House
Ahead of the 2026 Halloween season, Fear Columbus opened its presale on Zentix. The idea was to start selling tickets months out without making guests commit to a specific date and time, and to pull revenue forward before the season even starts. Here is how it went.


The Numbers



01 / PRESALE
5×+
Higher presale conversion rate
Selling presale tickets through the voucher system lifted conversion more than five times over. Guests grab a discounted ticket now and choose their da

Open full post