v0.315.0: style the app page's tab bar, and reuse the hero classes that already have rules
gates / gates (push) Failing after 46s

FOUND IN A BROWSER, and findable no other way. Every endpoint-level marker passed and the page was
unusable: the tab bar rendered as four bare underlined links run together, and the app logo filled a
third of the screen. The shell had been written with new class names — app-hero, app-hero-logo,
app-tabs — and only the first two of those had any CSS at all, under the names the design system
already uses.

  - the shell now reuses .app-info-hero / .app-info-logo / .app-info-hero-text, which carry the
    80px logo box, the hairline border and the 2px radius. Inventing a parallel name is what left
    the logo unsized; REUSE.md's first rule, learned again.
  - .app-tabs / .app-tab / .app-tab-active are genuinely new and are now styled to design system
    v2: 2px radius, hairline --line border, no shadow, --text-2 for an inactive tab and
    --blue-bright only for the one the household is on (blue marks where you are, not a deviation),
    the active tab sitting on the bar's own line, and a narrower gutter under 640px.
  - .after-start-card gets a blue left hairline — it is a request, not a fault, so no amber.
  - .app-faq gets its dt/dd rules.

TestAppPage_DeployedDefaultsToSettings sliced the header at `class="app-hero"`; it now slices at the
reused class and fails loudly if either marker is gone, instead of slicing on -1. The 36 app-page
parity fixtures are recaptured — and no other fixture moved, which is the evidence that the shell
change reaches only the app page.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0117kRTSgs3rJWUFGxyoWN6Y
This commit is contained in:
2026-10-15 19:04:57 +02:00
parent e66d4669d6
commit fe0228c877
39 changed files with 162 additions and 113 deletions
+7 -2
View File
@@ -149,8 +149,13 @@ func TestAppPage_DeployedDefaultsToSettings(t *testing.T) {
// The header does not. This is the whole point of the Mukodes card: the three buttons used to // The header does not. This is the whole point of the Mukodes card: the three buttons used to
// sit in the page header and read as menu items. // sit in the page header and read as menu items.
header := body[strings.Index(body, `class="page-header"`):] // The header is everything before the hero block; app-info-hero is the design system's existing
header = header[:strings.Index(header, `class="app-hero"`)] // hero class, which the shell reuses rather than inventing one with no rules behind it.
hi, hj := strings.Index(body, `class="page-header"`), strings.Index(body, `class="app-info-hero"`)
if hi < 0 || hj < 0 || hj < hi {
t.Fatalf("the shell's header/hero markers are gone (page-header=%d app-info-hero=%d)", hi, hj)
}
header := body[hi:hj]
if strings.Contains(header, "stackAction(") { if strings.Contains(header, "stackAction(") {
t.Errorf("the page header must carry no state-change button, got: %q", header) t.Errorf("the page header must carry no state-change button, got: %q", header)
} }
@@ -28,11 +28,11 @@
</div> </div>
</div> </div>
<div class="app-hero"> <div class="app-info-hero">
<img class="app-hero-logo" src="{{logoURL .Meta.Slug}}" <img class="app-info-logo" src="{{logoURL .Meta.Slug}}"
alt="{{.Meta.DisplayName}}" data-fallback="/static/app-placeholder.svg" alt="{{.Meta.DisplayName}}" data-fallback="/static/app-placeholder.svg"
onerror="if(!this.dataset.step){this.dataset.step='1';this.src='{{logoPNGURL .Meta.Slug}}';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}"> onerror="if(!this.dataset.step){this.dataset.step='1';this.src='{{logoPNGURL .Meta.Slug}}';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}">
<div class="app-hero-text"> <div class="app-info-hero-text">
{{if .AppInfo.Tagline}}<p class="app-info-tagline">{{.AppInfo.Tagline}}</p>{{else}}<p class="app-info-tagline">{{.Meta.Description}}</p>{{end}} {{if .AppInfo.Tagline}}<p class="app-info-tagline">{{.AppInfo.Tagline}}</p>{{else}}<p class="app-info-tagline">{{.Meta.Description}}</p>{{end}}
<div class="stack-meta-badges"> <div class="stack-meta-badges">
<span class="meta-badge">~{{.Meta.Resources.MemRequest}} RAM</span> <span class="meta-badge">~{{.Meta.Resources.MemRequest}} RAM</span>
@@ -1300,6 +1300,50 @@ a.stat-card:hover {
.login-footer a:hover { color: var(--blue); } .login-footer a:hover { color: var(--blue); }
/* --- App Info Page --- */ /* --- App Info Page --- */
/* THE APP PAGE'S TAB BAR (v0.315.0) — links, not panels.
Design system v2: 2px radius, hairline borders, no shadow, and blue reserved for the tab the
household is ON. An inactive tab is --text-2: a tab bar is navigation, not a deviation. */
.app-tabs {
display: flex;
gap: .25rem;
flex-wrap: wrap;
margin: 1.25rem 0 1.5rem;
border-bottom: 1px solid var(--line);
}
.app-tab {
padding: .55rem 1rem;
color: var(--text-2);
text-decoration: none;
font-size: .9rem;
border: 1px solid transparent;
border-bottom: none;
border-radius: var(--radius) var(--radius) 0 0;
/* The bar's own 1px line is what the active tab sits on, so each tab reaches it. */
margin-bottom: -1px;
white-space: nowrap;
}
.app-tab:hover { color: var(--text-1); background: var(--bg-1); }
.app-tab-active {
color: var(--blue-bright);
background: var(--bg-1);
border-color: var(--line);
border-bottom: 1px solid var(--bg-1);
}
.app-tab-active:hover { color: var(--blue-bright); }
@media (max-width: 640px) {
.app-tabs { gap: 0; }
.app-tab { padding: .55rem .6rem; font-size: .85rem; }
}
/* „Még egy lépés" — a value the app wants once it is running (Part 4). It is a request, not a
fault, so it stays neutral: the blue hairline marks it as the thing to do next. */
.after-start-card { border-left: 2px solid var(--blue); }
/* The guide's FAQ. */
.app-faq { margin: .5rem 0 0; }
.app-faq dt { color: var(--text-1); font-weight: 600; margin-top: .85rem; }
.app-faq dd { color: var(--text-2); margin: .25rem 0 0; padding: 0; }
.app-info-hero { .app-info-hero {
display: flex; display: flex;
align-items: center; align-items: center;
@@ -189,11 +189,11 @@
</div> </div>
</div> </div>
<div class="app-hero"> <div class="app-info-hero">
<img class="app-hero-logo" src="/static/assets/privatebin-logo.svg" <img class="app-info-logo" src="/static/assets/privatebin-logo.svg"
alt="PrivateBin" data-fallback="/static/app-placeholder.svg" alt="PrivateBin" data-fallback="/static/app-placeholder.svg"
onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/privatebin-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}"> onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/privatebin-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}">
<div class="app-hero-text"> <div class="app-info-hero-text">
<p class="app-info-tagline">Egy teszt alkalmazás leírása</p> <p class="app-info-tagline">Egy teszt alkalmazás leírása</p>
<div class="stack-meta-badges"> <div class="stack-meta-badges">
<span class="meta-badge">~128M RAM</span> <span class="meta-badge">~128M RAM</span>
@@ -189,11 +189,11 @@
</div> </div>
</div> </div>
<div class="app-hero"> <div class="app-info-hero">
<img class="app-hero-logo" src="/static/assets/privatebin-logo.svg" <img class="app-info-logo" src="/static/assets/privatebin-logo.svg"
alt="Private Bin" data-fallback="/static/app-placeholder.svg" alt="Private Bin" data-fallback="/static/app-placeholder.svg"
onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/privatebin-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}"> onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/privatebin-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}">
<div class="app-hero-text"> <div class="app-info-hero-text">
<p class="app-info-tagline">Egy teszt alkalmazás leírása</p> <p class="app-info-tagline">Egy teszt alkalmazás leírása</p>
<div class="stack-meta-badges"> <div class="stack-meta-badges">
<span class="meta-badge">~128M RAM</span> <span class="meta-badge">~128M RAM</span>
@@ -189,11 +189,11 @@
</div> </div>
</div> </div>
<div class="app-hero"> <div class="app-info-hero">
<img class="app-hero-logo" src="/static/assets/privatebin-logo.svg" <img class="app-info-logo" src="/static/assets/privatebin-logo.svg"
alt="Private Bin" data-fallback="/static/app-placeholder.svg" alt="Private Bin" data-fallback="/static/app-placeholder.svg"
onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/privatebin-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}"> onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/privatebin-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}">
<div class="app-hero-text"> <div class="app-info-hero-text">
<p class="app-info-tagline">Egy teszt alkalmazás leírása</p> <p class="app-info-tagline">Egy teszt alkalmazás leírása</p>
<div class="stack-meta-badges"> <div class="stack-meta-badges">
<span class="meta-badge">~128M RAM</span> <span class="meta-badge">~128M RAM</span>
@@ -189,11 +189,11 @@
</div> </div>
</div> </div>
<div class="app-hero"> <div class="app-info-hero">
<img class="app-hero-logo" src="/static/assets/privatebin-logo.svg" <img class="app-info-logo" src="/static/assets/privatebin-logo.svg"
alt="Private Bin" data-fallback="/static/app-placeholder.svg" alt="Private Bin" data-fallback="/static/app-placeholder.svg"
onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/privatebin-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}"> onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/privatebin-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}">
<div class="app-hero-text"> <div class="app-info-hero-text">
<p class="app-info-tagline">Egy teszt alkalmazás leírása</p> <p class="app-info-tagline">Egy teszt alkalmazás leírása</p>
<div class="stack-meta-badges"> <div class="stack-meta-badges">
<span class="meta-badge">~128M RAM</span> <span class="meta-badge">~128M RAM</span>
@@ -189,11 +189,11 @@
</div> </div>
</div> </div>
<div class="app-hero"> <div class="app-info-hero">
<img class="app-hero-logo" src="/static/assets/privatebin-logo.svg" <img class="app-info-logo" src="/static/assets/privatebin-logo.svg"
alt="Private Bin" data-fallback="/static/app-placeholder.svg" alt="Private Bin" data-fallback="/static/app-placeholder.svg"
onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/privatebin-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}"> onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/privatebin-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}">
<div class="app-hero-text"> <div class="app-info-hero-text">
<p class="app-info-tagline">Egy teszt alkalmazás leírása</p> <p class="app-info-tagline">Egy teszt alkalmazás leírása</p>
<div class="stack-meta-badges"> <div class="stack-meta-badges">
<span class="meta-badge">~128M RAM</span> <span class="meta-badge">~128M RAM</span>
@@ -189,11 +189,11 @@
</div> </div>
</div> </div>
<div class="app-hero"> <div class="app-info-hero">
<img class="app-hero-logo" src="/static/assets/privatebin-logo.svg" <img class="app-info-logo" src="/static/assets/privatebin-logo.svg"
alt="Private Bin" data-fallback="/static/app-placeholder.svg" alt="Private Bin" data-fallback="/static/app-placeholder.svg"
onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/privatebin-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}"> onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/privatebin-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}">
<div class="app-hero-text"> <div class="app-info-hero-text">
<p class="app-info-tagline">Egy teszt alkalmazás leírása</p> <p class="app-info-tagline">Egy teszt alkalmazás leírása</p>
<div class="stack-meta-badges"> <div class="stack-meta-badges">
<span class="meta-badge">~128M RAM</span> <span class="meta-badge">~128M RAM</span>
@@ -189,11 +189,11 @@
</div> </div>
</div> </div>
<div class="app-hero"> <div class="app-info-hero">
<img class="app-hero-logo" src="/static/assets/privatebin-logo.svg" <img class="app-info-logo" src="/static/assets/privatebin-logo.svg"
alt="Private Bin" data-fallback="/static/app-placeholder.svg" alt="Private Bin" data-fallback="/static/app-placeholder.svg"
onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/privatebin-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}"> onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/privatebin-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}">
<div class="app-hero-text"> <div class="app-info-hero-text">
<p class="app-info-tagline">Egy teszt alkalmazás leírása</p> <p class="app-info-tagline">Egy teszt alkalmazás leírása</p>
<div class="stack-meta-badges"> <div class="stack-meta-badges">
<span class="meta-badge">~128M RAM</span> <span class="meta-badge">~128M RAM</span>
@@ -189,11 +189,11 @@
</div> </div>
</div> </div>
<div class="app-hero"> <div class="app-info-hero">
<img class="app-hero-logo" src="/static/assets/privatebin-logo.svg" <img class="app-info-logo" src="/static/assets/privatebin-logo.svg"
alt="Private Bin" data-fallback="/static/app-placeholder.svg" alt="Private Bin" data-fallback="/static/app-placeholder.svg"
onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/privatebin-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}"> onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/privatebin-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}">
<div class="app-hero-text"> <div class="app-info-hero-text">
<p class="app-info-tagline">Egy teszt alkalmazás leírása</p> <p class="app-info-tagline">Egy teszt alkalmazás leírása</p>
<div class="stack-meta-badges"> <div class="stack-meta-badges">
<span class="meta-badge">~128M RAM</span> <span class="meta-badge">~128M RAM</span>
@@ -189,11 +189,11 @@
</div> </div>
</div> </div>
<div class="app-hero"> <div class="app-info-hero">
<img class="app-hero-logo" src="/static/assets/privatebin-logo.svg" <img class="app-info-logo" src="/static/assets/privatebin-logo.svg"
alt="Private Bin" data-fallback="/static/app-placeholder.svg" alt="Private Bin" data-fallback="/static/app-placeholder.svg"
onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/privatebin-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}"> onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/privatebin-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}">
<div class="app-hero-text"> <div class="app-info-hero-text">
<p class="app-info-tagline">Egy teszt alkalmazás leírása</p> <p class="app-info-tagline">Egy teszt alkalmazás leírása</p>
<div class="stack-meta-badges"> <div class="stack-meta-badges">
<span class="meta-badge">~128M RAM</span> <span class="meta-badge">~128M RAM</span>
@@ -182,11 +182,11 @@
</div> </div>
</div> </div>
<div class="app-hero"> <div class="app-info-hero">
<img class="app-hero-logo" src="/static/assets/privatebin-logo.svg" <img class="app-info-logo" src="/static/assets/privatebin-logo.svg"
alt="PrivateBin" data-fallback="/static/app-placeholder.svg" alt="PrivateBin" data-fallback="/static/app-placeholder.svg"
onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/privatebin-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}"> onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/privatebin-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}">
<div class="app-hero-text"> <div class="app-info-hero-text">
<p class="app-info-tagline">Titkosított jegyzetek.</p> <p class="app-info-tagline">Titkosított jegyzetek.</p>
<div class="stack-meta-badges"> <div class="stack-meta-badges">
<span class="meta-badge">~64M RAM</span> <span class="meta-badge">~64M RAM</span>
@@ -189,11 +189,11 @@
</div> </div>
</div> </div>
<div class="app-hero"> <div class="app-info-hero">
<img class="app-hero-logo" src="/static/assets/privatebin-logo.svg" <img class="app-info-logo" src="/static/assets/privatebin-logo.svg"
alt="PrivateBin" data-fallback="/static/app-placeholder.svg" alt="PrivateBin" data-fallback="/static/app-placeholder.svg"
onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/privatebin-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}"> onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/privatebin-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}">
<div class="app-hero-text"> <div class="app-info-hero-text">
<p class="app-info-tagline">Titkosított szövegmegosztás.</p> <p class="app-info-tagline">Titkosított szövegmegosztás.</p>
<div class="stack-meta-badges"> <div class="stack-meta-badges">
<span class="meta-badge">~128M RAM</span> <span class="meta-badge">~128M RAM</span>
@@ -182,11 +182,11 @@
</div> </div>
</div> </div>
<div class="app-hero"> <div class="app-info-hero">
<img class="app-hero-logo" src="/static/assets/privatebin-logo.svg" <img class="app-info-logo" src="/static/assets/privatebin-logo.svg"
alt="PrivateBin" data-fallback="/static/app-placeholder.svg" alt="PrivateBin" data-fallback="/static/app-placeholder.svg"
onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/privatebin-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}"> onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/privatebin-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}">
<div class="app-hero-text"> <div class="app-info-hero-text">
<p class="app-info-tagline"></p> <p class="app-info-tagline"></p>
<div class="stack-meta-badges"> <div class="stack-meta-badges">
<span class="meta-badge">~64M RAM</span> <span class="meta-badge">~64M RAM</span>
@@ -182,11 +182,11 @@
</div> </div>
</div> </div>
<div class="app-hero"> <div class="app-info-hero">
<img class="app-hero-logo" src="/static/assets/grocy-logo.svg" <img class="app-info-logo" src="/static/assets/grocy-logo.svg"
alt="Grocy" data-fallback="/static/app-placeholder.svg" alt="Grocy" data-fallback="/static/app-placeholder.svg"
onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/grocy-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}"> onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/grocy-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}">
<div class="app-hero-text"> <div class="app-info-hero-text">
<p class="app-info-tagline">Házi készletnyilvántartó.</p> <p class="app-info-tagline">Házi készletnyilvántartó.</p>
<div class="stack-meta-badges"> <div class="stack-meta-badges">
<span class="meta-badge">~128M RAM</span> <span class="meta-badge">~128M RAM</span>
+3 -3
View File
@@ -189,11 +189,11 @@
</div> </div>
</div> </div>
<div class="app-hero"> <div class="app-info-hero">
<img class="app-hero-logo" src="/static/assets/privatebin-logo.svg" <img class="app-info-logo" src="/static/assets/privatebin-logo.svg"
alt="Private Bin" data-fallback="/static/app-placeholder.svg" alt="Private Bin" data-fallback="/static/app-placeholder.svg"
onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/privatebin-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}"> onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/privatebin-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}">
<div class="app-hero-text"> <div class="app-info-hero-text">
<p class="app-info-tagline">Egy teszt alkalmazás leírása</p> <p class="app-info-tagline">Egy teszt alkalmazás leírása</p>
<div class="stack-meta-badges"> <div class="stack-meta-badges">
<span class="meta-badge">~128M RAM</span> <span class="meta-badge">~128M RAM</span>
@@ -189,11 +189,11 @@
</div> </div>
</div> </div>
<div class="app-hero"> <div class="app-info-hero">
<img class="app-hero-logo" src="/static/assets/plex-logo.svg" <img class="app-info-logo" src="/static/assets/plex-logo.svg"
alt="Plex" data-fallback="/static/app-placeholder.svg" alt="Plex" data-fallback="/static/app-placeholder.svg"
onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/plex-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}"> onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/plex-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}">
<div class="app-hero-text"> <div class="app-info-hero-text">
<p class="app-info-tagline"></p> <p class="app-info-tagline"></p>
<div class="stack-meta-badges"> <div class="stack-meta-badges">
<span class="meta-badge">~ RAM</span> <span class="meta-badge">~ RAM</span>
@@ -189,11 +189,11 @@
</div> </div>
</div> </div>
<div class="app-hero"> <div class="app-info-hero">
<img class="app-hero-logo" src="/static/assets/opengist-logo.svg" <img class="app-info-logo" src="/static/assets/opengist-logo.svg"
alt="Opengist" data-fallback="/static/app-placeholder.svg" alt="Opengist" data-fallback="/static/app-placeholder.svg"
onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/opengist-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}"> onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/opengist-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}">
<div class="app-hero-text"> <div class="app-info-hero-text">
<p class="app-info-tagline"></p> <p class="app-info-tagline"></p>
<div class="stack-meta-badges"> <div class="stack-meta-badges">
<span class="meta-badge">~ RAM</span> <span class="meta-badge">~ RAM</span>
@@ -189,11 +189,11 @@
</div> </div>
</div> </div>
<div class="app-hero"> <div class="app-info-hero">
<img class="app-hero-logo" src="/static/assets/opengist-logo.svg" <img class="app-info-logo" src="/static/assets/opengist-logo.svg"
alt="Opengist" data-fallback="/static/app-placeholder.svg" alt="Opengist" data-fallback="/static/app-placeholder.svg"
onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/opengist-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}"> onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/opengist-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}">
<div class="app-hero-text"> <div class="app-info-hero-text">
<p class="app-info-tagline"></p> <p class="app-info-tagline"></p>
<div class="stack-meta-badges"> <div class="stack-meta-badges">
<span class="meta-badge">~ RAM</span> <span class="meta-badge">~ RAM</span>
@@ -189,11 +189,11 @@
</div> </div>
</div> </div>
<div class="app-hero"> <div class="app-info-hero">
<img class="app-hero-logo" src="/static/assets/privatebin-logo.svg" <img class="app-info-logo" src="/static/assets/privatebin-logo.svg"
alt="PrivateBin" data-fallback="/static/app-placeholder.svg" alt="PrivateBin" data-fallback="/static/app-placeholder.svg"
onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/privatebin-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}"> onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/privatebin-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}">
<div class="app-hero-text"> <div class="app-info-hero-text">
<p class="app-info-tagline">Titkosított szövegmegosztás.</p> <p class="app-info-tagline">Titkosított szövegmegosztás.</p>
<div class="stack-meta-badges"> <div class="stack-meta-badges">
<span class="meta-badge">~64M RAM</span> <span class="meta-badge">~64M RAM</span>
@@ -189,11 +189,11 @@
</div> </div>
</div> </div>
<div class="app-hero"> <div class="app-info-hero">
<img class="app-hero-logo" src="/static/assets/adventurelog-logo.svg" <img class="app-info-logo" src="/static/assets/adventurelog-logo.svg"
alt="AdventureLog" data-fallback="/static/app-placeholder.svg" alt="AdventureLog" data-fallback="/static/app-placeholder.svg"
onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/adventurelog-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}"> onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/adventurelog-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}">
<div class="app-hero-text"> <div class="app-info-hero-text">
<p class="app-info-tagline"></p> <p class="app-info-tagline"></p>
<div class="stack-meta-badges"> <div class="stack-meta-badges">
<span class="meta-badge">~ RAM</span> <span class="meta-badge">~ RAM</span>
@@ -189,11 +189,11 @@
</div> </div>
</div> </div>
<div class="app-hero"> <div class="app-info-hero">
<img class="app-hero-logo" src="/static/assets/calibre-web-logo.svg" <img class="app-info-logo" src="/static/assets/calibre-web-logo.svg"
alt="Calibre" data-fallback="/static/app-placeholder.svg" alt="Calibre" data-fallback="/static/app-placeholder.svg"
onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/calibre-web-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}"> onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/calibre-web-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}">
<div class="app-hero-text"> <div class="app-info-hero-text">
<p class="app-info-tagline"></p> <p class="app-info-tagline"></p>
<div class="stack-meta-badges"> <div class="stack-meta-badges">
<span class="meta-badge">~ RAM</span> <span class="meta-badge">~ RAM</span>
@@ -189,11 +189,11 @@
</div> </div>
</div> </div>
<div class="app-hero"> <div class="app-info-hero">
<img class="app-hero-logo" src="/static/assets/calibre-web-logo.svg" <img class="app-info-logo" src="/static/assets/calibre-web-logo.svg"
alt="Calibre-Web" data-fallback="/static/app-placeholder.svg" alt="Calibre-Web" data-fallback="/static/app-placeholder.svg"
onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/calibre-web-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}"> onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/calibre-web-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}">
<div class="app-hero-text"> <div class="app-info-hero-text">
<p class="app-info-tagline"></p> <p class="app-info-tagline"></p>
<div class="stack-meta-badges"> <div class="stack-meta-badges">
<span class="meta-badge">~ RAM</span> <span class="meta-badge">~ RAM</span>
@@ -189,11 +189,11 @@
</div> </div>
</div> </div>
<div class="app-hero"> <div class="app-info-hero">
<img class="app-hero-logo" src="/static/assets/romm-logo.svg" <img class="app-info-logo" src="/static/assets/romm-logo.svg"
alt="RomM" data-fallback="/static/app-placeholder.svg" alt="RomM" data-fallback="/static/app-placeholder.svg"
onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/romm-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}"> onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/romm-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}">
<div class="app-hero-text"> <div class="app-info-hero-text">
<p class="app-info-tagline"></p> <p class="app-info-tagline"></p>
<div class="stack-meta-badges"> <div class="stack-meta-badges">
<span class="meta-badge">~ RAM</span> <span class="meta-badge">~ RAM</span>
@@ -189,11 +189,11 @@
</div> </div>
</div> </div>
<div class="app-hero"> <div class="app-info-hero">
<img class="app-hero-logo" src="/static/assets/opengist-logo.svg" <img class="app-info-logo" src="/static/assets/opengist-logo.svg"
alt="Opengist" data-fallback="/static/app-placeholder.svg" alt="Opengist" data-fallback="/static/app-placeholder.svg"
onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/opengist-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}"> onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/opengist-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}">
<div class="app-hero-text"> <div class="app-info-hero-text">
<p class="app-info-tagline"></p> <p class="app-info-tagline"></p>
<div class="stack-meta-badges"> <div class="stack-meta-badges">
<span class="meta-badge">~ RAM</span> <span class="meta-badge">~ RAM</span>
@@ -189,11 +189,11 @@
</div> </div>
</div> </div>
<div class="app-hero"> <div class="app-info-hero">
<img class="app-hero-logo" src="/static/assets/karakeep-logo.svg" <img class="app-info-logo" src="/static/assets/karakeep-logo.svg"
alt="Karakeep" data-fallback="/static/app-placeholder.svg" alt="Karakeep" data-fallback="/static/app-placeholder.svg"
onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/karakeep-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}"> onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/karakeep-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}">
<div class="app-hero-text"> <div class="app-info-hero-text">
<p class="app-info-tagline"></p> <p class="app-info-tagline"></p>
<div class="stack-meta-badges"> <div class="stack-meta-badges">
<span class="meta-badge">~64M RAM</span> <span class="meta-badge">~64M RAM</span>
@@ -189,11 +189,11 @@
</div> </div>
</div> </div>
<div class="app-hero"> <div class="app-info-hero">
<img class="app-hero-logo" src="/static/assets/filebrowser-logo.svg" <img class="app-info-logo" src="/static/assets/filebrowser-logo.svg"
alt="Fájlkezelő app" data-fallback="/static/app-placeholder.svg" alt="Fájlkezelő app" data-fallback="/static/app-placeholder.svg"
onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/filebrowser-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}"> onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/filebrowser-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}">
<div class="app-hero-text"> <div class="app-info-hero-text">
<p class="app-info-tagline"></p> <p class="app-info-tagline"></p>
<div class="stack-meta-badges"> <div class="stack-meta-badges">
<span class="meta-badge">~ RAM</span> <span class="meta-badge">~ RAM</span>
@@ -189,11 +189,11 @@
</div> </div>
</div> </div>
<div class="app-hero"> <div class="app-info-hero">
<img class="app-hero-logo" src="/static/assets/privatebin-logo.svg" <img class="app-info-logo" src="/static/assets/privatebin-logo.svg"
alt="Private Bin" data-fallback="/static/app-placeholder.svg" alt="Private Bin" data-fallback="/static/app-placeholder.svg"
onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/privatebin-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}"> onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/privatebin-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}">
<div class="app-hero-text"> <div class="app-info-hero-text">
<p class="app-info-tagline">Egy teszt alkalmazás leírása</p> <p class="app-info-tagline">Egy teszt alkalmazás leírása</p>
<div class="stack-meta-badges"> <div class="stack-meta-badges">
<span class="meta-badge">~128M RAM</span> <span class="meta-badge">~128M RAM</span>
@@ -189,11 +189,11 @@
</div> </div>
</div> </div>
<div class="app-hero"> <div class="app-info-hero">
<img class="app-hero-logo" src="/static/assets/privatebin-logo.svg" <img class="app-info-logo" src="/static/assets/privatebin-logo.svg"
alt="Private Bin" data-fallback="/static/app-placeholder.svg" alt="Private Bin" data-fallback="/static/app-placeholder.svg"
onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/privatebin-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}"> onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/privatebin-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}">
<div class="app-hero-text"> <div class="app-info-hero-text">
<p class="app-info-tagline">Egy teszt alkalmazás leírása</p> <p class="app-info-tagline">Egy teszt alkalmazás leírása</p>
<div class="stack-meta-badges"> <div class="stack-meta-badges">
<span class="meta-badge">~128M RAM</span> <span class="meta-badge">~128M RAM</span>
@@ -189,11 +189,11 @@
</div> </div>
</div> </div>
<div class="app-hero"> <div class="app-info-hero">
<img class="app-hero-logo" src="/static/assets/immich-logo.svg" <img class="app-info-logo" src="/static/assets/immich-logo.svg"
alt="Immich" data-fallback="/static/app-placeholder.svg" alt="Immich" data-fallback="/static/app-placeholder.svg"
onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/immich-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}"> onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/immich-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}">
<div class="app-hero-text"> <div class="app-info-hero-text">
<p class="app-info-tagline"></p> <p class="app-info-tagline"></p>
<div class="stack-meta-badges"> <div class="stack-meta-badges">
<span class="meta-badge">~ RAM</span> <span class="meta-badge">~ RAM</span>
@@ -189,11 +189,11 @@
</div> </div>
</div> </div>
<div class="app-hero"> <div class="app-info-hero">
<img class="app-hero-logo" src="/static/assets/immich-logo.svg" <img class="app-info-logo" src="/static/assets/immich-logo.svg"
alt="Immich" data-fallback="/static/app-placeholder.svg" alt="Immich" data-fallback="/static/app-placeholder.svg"
onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/immich-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}"> onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/immich-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}">
<div class="app-hero-text"> <div class="app-info-hero-text">
<p class="app-info-tagline"></p> <p class="app-info-tagline"></p>
<div class="stack-meta-badges"> <div class="stack-meta-badges">
<span class="meta-badge">~ RAM</span> <span class="meta-badge">~ RAM</span>
@@ -189,11 +189,11 @@
</div> </div>
</div> </div>
<div class="app-hero"> <div class="app-info-hero">
<img class="app-hero-logo" src="/static/assets/immich-logo.svg" <img class="app-info-logo" src="/static/assets/immich-logo.svg"
alt="Immich" data-fallback="/static/app-placeholder.svg" alt="Immich" data-fallback="/static/app-placeholder.svg"
onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/immich-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}"> onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/immich-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}">
<div class="app-hero-text"> <div class="app-info-hero-text">
<p class="app-info-tagline"></p> <p class="app-info-tagline"></p>
<div class="stack-meta-badges"> <div class="stack-meta-badges">
<span class="meta-badge">~ RAM</span> <span class="meta-badge">~ RAM</span>
@@ -189,11 +189,11 @@
</div> </div>
</div> </div>
<div class="app-hero"> <div class="app-info-hero">
<img class="app-hero-logo" src="/static/assets/opengist-logo.svg" <img class="app-info-logo" src="/static/assets/opengist-logo.svg"
alt="Opengist" data-fallback="/static/app-placeholder.svg" alt="Opengist" data-fallback="/static/app-placeholder.svg"
onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/opengist-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}"> onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/opengist-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}">
<div class="app-hero-text"> <div class="app-info-hero-text">
<p class="app-info-tagline"></p> <p class="app-info-tagline"></p>
<div class="stack-meta-badges"> <div class="stack-meta-badges">
<span class="meta-badge">~ RAM</span> <span class="meta-badge">~ RAM</span>
@@ -189,11 +189,11 @@
</div> </div>
</div> </div>
<div class="app-hero"> <div class="app-info-hero">
<img class="app-hero-logo" src="/static/assets/opengist-logo.svg" <img class="app-info-logo" src="/static/assets/opengist-logo.svg"
alt="Opengist" data-fallback="/static/app-placeholder.svg" alt="Opengist" data-fallback="/static/app-placeholder.svg"
onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/opengist-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}"> onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/opengist-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}">
<div class="app-hero-text"> <div class="app-info-hero-text">
<p class="app-info-tagline"></p> <p class="app-info-tagline"></p>
<div class="stack-meta-badges"> <div class="stack-meta-badges">
<span class="meta-badge">~ RAM</span> <span class="meta-badge">~ RAM</span>
@@ -189,11 +189,11 @@
</div> </div>
</div> </div>
<div class="app-hero"> <div class="app-info-hero">
<img class="app-hero-logo" src="/static/assets/opengist-logo.svg" <img class="app-info-logo" src="/static/assets/opengist-logo.svg"
alt="Opengist" data-fallback="/static/app-placeholder.svg" alt="Opengist" data-fallback="/static/app-placeholder.svg"
onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/opengist-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}"> onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/opengist-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}">
<div class="app-hero-text"> <div class="app-info-hero-text">
<p class="app-info-tagline"></p> <p class="app-info-tagline"></p>
<div class="stack-meta-badges"> <div class="stack-meta-badges">
<span class="meta-badge">~ RAM</span> <span class="meta-badge">~ RAM</span>
@@ -189,11 +189,11 @@
</div> </div>
</div> </div>
<div class="app-hero"> <div class="app-info-hero">
<img class="app-hero-logo" src="/static/assets/opengist-logo.svg" <img class="app-info-logo" src="/static/assets/opengist-logo.svg"
alt="Opengist" data-fallback="/static/app-placeholder.svg" alt="Opengist" data-fallback="/static/app-placeholder.svg"
onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/opengist-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}"> onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/opengist-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}">
<div class="app-hero-text"> <div class="app-info-hero-text">
<p class="app-info-tagline"></p> <p class="app-info-tagline"></p>
<div class="stack-meta-badges"> <div class="stack-meta-badges">
<span class="meta-badge">~ RAM</span> <span class="meta-badge">~ RAM</span>
@@ -189,11 +189,11 @@
</div> </div>
</div> </div>
<div class="app-hero"> <div class="app-info-hero">
<img class="app-hero-logo" src="/static/assets/privatebin-logo.svg" <img class="app-info-logo" src="/static/assets/privatebin-logo.svg"
alt="Private Bin" data-fallback="/static/app-placeholder.svg" alt="Private Bin" data-fallback="/static/app-placeholder.svg"
onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/privatebin-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}"> onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/privatebin-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}">
<div class="app-hero-text"> <div class="app-info-hero-text">
<p class="app-info-tagline">Egy teszt alkalmazás leírása</p> <p class="app-info-tagline">Egy teszt alkalmazás leírása</p>
<div class="stack-meta-badges"> <div class="stack-meta-badges">
<span class="meta-badge">~128M RAM</span> <span class="meta-badge">~128M RAM</span>
@@ -189,11 +189,11 @@
</div> </div>
</div> </div>
<div class="app-hero"> <div class="app-info-hero">
<img class="app-hero-logo" src="/static/assets/privatebin-logo.svg" <img class="app-info-logo" src="/static/assets/privatebin-logo.svg"
alt="PrivateBin" data-fallback="/static/app-placeholder.svg" alt="PrivateBin" data-fallback="/static/app-placeholder.svg"
onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/privatebin-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}"> onerror="if(!this.dataset.step){this.dataset.step='1';this.src='\/static\/assets\/privatebin-logo.png';}else if(this.dataset.fallback&&this.dataset.step==='1'){this.dataset.step='2';this.src=this.dataset.fallback;}else{this.onerror=null;this.style.visibility='hidden';}">
<div class="app-hero-text"> <div class="app-info-hero-text">
<p class="app-info-tagline"></p> <p class="app-info-tagline"></p>
<div class="stack-meta-badges"> <div class="stack-meta-badges">
<span class="meta-badge">~ RAM</span> <span class="meta-badge">~ RAM</span>