83 lines
6.5 KiB
HTML
83 lines
6.5 KiB
HTML
{% extends "base.htm" %}
|
|
|
|
{% block title %}NanoShare{% endblock %}
|
|
|
|
{% block meta %}
|
|
<meta name="description" content="NanoShare is a lightweight self-hosted file sharing service built on Python Quart.">
|
|
<meta name="keywords" content="NanoShare, file sharing, self-hosted, Python Quart, open source">
|
|
<meta name="robots" content="noindex, nofollow" />
|
|
{% endblock %}
|
|
|
|
{% block head %}
|
|
<style>
|
|
:root{--bg:#0f1221;--panel:#161a2f;--panel-2:#1b2140;--text:#e7eaf6;--muted:#a7b0d1;--accent:#7c9eff;--accent-2:#8ef6ff;--border:rgba(255,255,255,.08);--shadow:0 10px 30px rgba(0,0,0,.25);--radius:14px}
|
|
@media (prefers-color-scheme: light){
|
|
:root{--bg:#f6f7fb;--panel:#fff;--panel-2:#f3f6ff;--text:#111321;--muted:#495273;--accent:#385cff;--accent-2:#00bcd4;--border:rgba(17,19,33,.08);--shadow:0 12px 24px rgba(17,19,33,.08)}
|
|
}
|
|
*{box-sizing:border-box} html,body{height:100%}
|
|
body{
|
|
margin:0;color:var(--text);
|
|
background: radial-gradient(900px 420px at 10% -10%, rgba(124,158,255,.16), transparent 60%),
|
|
radial-gradient(700px 380px at 110% 10%, rgba(142,246,255,.14), transparent 60%),
|
|
var(--bg);
|
|
font:500 14px/1.5 system-ui,-apple-system,Segoe UI,Inter,Roboto,"Helvetica Neue",Arial
|
|
}
|
|
.wrap{max-width:980px;margin:clamp(10px,2.2vw,20px) auto;padding:clamp(12px,2.4vw,20px)}
|
|
.card{background:linear-gradient(180deg,var(--panel),var(--panel-2));border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:clamp(14px,2.6vw,22px)}
|
|
.hero{display:grid;grid-template-columns:1.2fr .8fr;gap:18px;align-items:center}
|
|
@media (max-width:900px){.hero{grid-template-columns:1fr}}
|
|
.title{margin:0 0 6px;font-weight:900;letter-spacing:.2px;font-size:clamp(22px,2.6vw,30px);background:linear-gradient(90deg,var(--accent),var(--accent-2));-webkit-background-clip:text;background-clip:text;color:transparent}
|
|
.subtitle{color:var(--muted);margin:0 0 12px;font-size:.98rem}
|
|
.cta{display:flex;gap:10px;flex-wrap:wrap;margin-top:8px}
|
|
.btn{--btn-br:color-mix(in srgb,var(--accent) 40%,var(--border));display:inline-flex;align-items:center;gap:.55ch;padding:.6rem .9rem;border-radius:12px;border:1px solid var(--btn-br);background:linear-gradient(180deg,color-mix(in srgb,var(--accent) 18%,transparent),transparent);color:var(--text);font-weight:760;font-size:.95rem;text-decoration:none;cursor:pointer;transition:transform .06s,background .15s,border-color .15s,box-shadow .15s;box-shadow:0 2px 0 rgba(0,0,0,.08)}
|
|
.btn:hover{background:color-mix(in srgb,var(--accent) 28%,var(--panel-2));border-color:color-mix(in srgb,var(--accent) 60%,var(--border));box-shadow:0 6px 18px rgba(0,0,0,.18)}
|
|
.btn:active{transform:translateY(1px) scale(.985)}
|
|
.btn-ghost{background:transparent;border-color:var(--border)}
|
|
.glass{min-height:180px;border-radius:calc(var(--radius) - 4px);border:1px dashed color-mix(in srgb,var(--accent) 40%,var(--border));background:radial-gradient(120% 120% at 100% 0%, color-mix(in srgb,var(--accent) 14%, transparent), transparent 40%),radial-gradient(120% 120% at 0% 100%, color-mix(in srgb,var(--accent-2) 14%, transparent), transparent 40%),color-mix(in srgb,var(--panel-2) 70%, transparent);display:flex;align-items:center;justify-content:center;text-align:center;padding:16px}
|
|
.hero-badge{display:inline-flex;align-items:center;gap:.6ch;padding:.4rem .7rem;border-radius:999px;background:color-mix(in srgb,var(--accent) 16%,transparent);border:1px solid color-mix(in srgb,var(--accent) 32%,var(--border));color:var(--accent);font-weight:700;font-size:.9rem}
|
|
.grid{margin-top:14px;display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
|
|
@media (max-width:980px){.grid{grid-template-columns:repeat(2,1fr)}}
|
|
@media (max-width:520px){.grid{grid-template-columns:1fr}}
|
|
.feature{background:linear-gradient(180deg,color-mix(in srgb,var(--panel) 90%,transparent),color-mix(in srgb,var(--panel-2) 85%,transparent));border:1px solid var(--border);border-radius:12px;padding:12px;display:flex;gap:10px;align-items:flex-start;transition:transform .08s,background .2s,border-color .2s,box-shadow .2s}
|
|
.feature:hover{transform:translateY(-1px);border-color:color-mix(in srgb,var(--accent) 35%,var(--border));box-shadow:0 10px 24px rgba(0,0,0,.14)}
|
|
.ic{font-size:18px;filter:drop-shadow(0 4px 12px rgba(0,0,0,.2))}
|
|
.fx-title{margin:0 0 2px;font-weight:800;font-size:.98rem}
|
|
.fx-sub{margin:0;color:var(--muted);font-size:.9rem}
|
|
.foot{margin-top:16px;color:var(--muted);font-size:.92rem;text-align:center}
|
|
.foot a{color:var(--accent);text-decoration:none}
|
|
.foot a:hover{text-decoration:underline}
|
|
/* Auth widgets */
|
|
.providers{display:flex;flex-wrap:wrap;gap:10px;margin-top:8px}
|
|
.prov{display:inline-flex;align-items:center;gap:.6ch;padding:.55rem .85rem;border-radius:12px;border:1px solid color-mix(in srgb,var(--accent) 40%,var(--border));background:linear-gradient(180deg,color-mix(in srgb,var(--accent) 12%,transparent),transparent);text-decoration:none;color:var(--text);font-weight:760}
|
|
.prov:hover{border-color:color-mix(in srgb,var(--accent) 60%,var(--border))}
|
|
</style>
|
|
{% endblock %}
|
|
|
|
{% block content %}
|
|
<main class="wrap">
|
|
<section class="card hero" aria-label="Intro">
|
|
<div>
|
|
<h1 class="title">NanoShare</h1>
|
|
<p class="subtitle">This instance is private. Please sign in to continue.</p>
|
|
<div class="providers">
|
|
<a class="prov" href="{{ url_for('auth_login.login') }}">🔐 Sign in with Authentik</a>
|
|
</div>
|
|
</div>
|
|
<div class="glass">
|
|
<span class="hero-badge">🔒 OAuth protected · ⚡ Lightweight · 🚀 Async</span>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="grid" aria-label="Highlights">
|
|
<article class="feature"><div class="ic">🔗</div><div><h3 class="fx-title">Direct links</h3><p class="fx-sub">Clean URLs—no ads or gates.</p></div></article>
|
|
<article class="feature"><div class="ic">🧰</div><div><h3 class="fx-title">Any file type</h3><p class="fx-sub">No re-encoding. Originals preserved.</p></div></article>
|
|
<article class="feature"><div class="ic">⏱️</div><div><h3 class="fx-title">Expirations</h3><p class="fx-sub">Auto-expire links or set to never.</p></div></article>
|
|
<article class="feature"><div class="ic">🛡️</div><div><h3 class="fx-title">Private by default</h3><p class="fx-sub">Access gated behind OAuth login.</p></div></article>
|
|
</section>
|
|
|
|
<p class="foot">
|
|
Built on Python Quart. View the <a href="https://git.yiprawr.dev/daniel156161/simple-picoshare" rel="nofollow">source repo</a>.
|
|
</p>
|
|
</main>
|
|
{% endblock %}
|