let chatgpt combine styles into one css file and use it
Build and Push Docker Container / build-and-push (push) Successful in 1m28s
Build and Push Docker Container / build-and-push (push) Successful in 1m28s
This commit is contained in:
@@ -0,0 +1,559 @@
|
|||||||
|
/* ==========================================================================
|
||||||
|
Style.css — Combined from multiple provided snippets
|
||||||
|
Notes:
|
||||||
|
- Design tokens unified with full set of variables (incl. --danger, --success).
|
||||||
|
- Base layout/styles deduped.
|
||||||
|
- Potential selector collisions resolved by scoping where it was safe:
|
||||||
|
• .actions styles scoped to their contexts (.table and .file-upload).
|
||||||
|
• .btn keeps a unified base; upload-specific tweaks via .file-upload .btn.
|
||||||
|
- Otherwise, original class names are preserved.
|
||||||
|
========================================================================= */
|
||||||
|
|
||||||
|
/* ====== Design Tokens ====== */
|
||||||
|
: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;
|
||||||
|
--danger:#ff7a7a;
|
||||||
|
--success:#63e6b0;
|
||||||
|
}
|
||||||
|
@media (prefers-color-scheme: light){
|
||||||
|
:root{
|
||||||
|
--bg:#f6f7fb;
|
||||||
|
--panel:#ffffff;
|
||||||
|
--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);
|
||||||
|
--danger:#e74c3c;
|
||||||
|
--success:#0aa06e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ====== Base ====== */
|
||||||
|
* {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Globale Stile */
|
||||||
|
html, body {
|
||||||
|
height: -webkit-fill-available;
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: Arial, sans-serif;
|
||||||
|
background-color: var(--primary-color);
|
||||||
|
color: var(--text-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Stile für die Navigationsleiste */
|
||||||
|
nav {
|
||||||
|
background-color: var(--nav-background-color);
|
||||||
|
border-bottom: 1px solid #333;
|
||||||
|
color: var(--text-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
nav ul {
|
||||||
|
list-style: none;
|
||||||
|
padding: 0;
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: nowrap;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav ul li {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 10px 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav ul li:first-child {
|
||||||
|
padding-left: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav ul li:last-child {
|
||||||
|
padding-right: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav ul li a:last-child {
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav ul li a {
|
||||||
|
text-decoration: none;
|
||||||
|
color: #fff;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav i {
|
||||||
|
padding-right: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#menu-toggle {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu-icon {
|
||||||
|
display: none;
|
||||||
|
font-size: 24px;
|
||||||
|
color: #fff;
|
||||||
|
padding: 5px 15px;
|
||||||
|
cursor: pointer;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.has-submenu .submenu-label .fa-caret-right {
|
||||||
|
transition: transform 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.menu-icon {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav ul {
|
||||||
|
display: none;
|
||||||
|
flex-direction: column;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#menu-toggle:checked + .menu-icon + ul {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav ul li {
|
||||||
|
text-align: center;
|
||||||
|
padding: 10px 0;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav ul li:first-child {
|
||||||
|
padding-left: unset;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav .left-side {
|
||||||
|
margin-left: unset;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav ul li:last-child {
|
||||||
|
padding-right: unset;
|
||||||
|
}
|
||||||
|
|
||||||
|
.submenu {
|
||||||
|
max-height: 0;
|
||||||
|
opacity: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
transition: max-height 0.4s ease, opacity 0.4s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.submenu li {
|
||||||
|
padding: unset;
|
||||||
|
padding-top: 10px;
|
||||||
|
}
|
||||||
|
.submenu li a {
|
||||||
|
padding: unset;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Show submenu when checkbox is checked */
|
||||||
|
.has-submenu input[type="checkbox"]:checked + .submenu-label + .submenu {
|
||||||
|
display: block;
|
||||||
|
opacity: 1;
|
||||||
|
max-height: fit-content;
|
||||||
|
}
|
||||||
|
.has-submenu input[type="checkbox"]:checked + .submenu-label .fa-caret-right {
|
||||||
|
transform: rotate(90deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 769px) {
|
||||||
|
nav ul li:hover {
|
||||||
|
background-color: green;
|
||||||
|
}
|
||||||
|
|
||||||
|
.submenu {
|
||||||
|
opacity: 0;
|
||||||
|
visibility: hidden;
|
||||||
|
transform: translateY(-5px);
|
||||||
|
transition: opacity 0.3s ease, transform 0.3s ease;
|
||||||
|
position: absolute; /* if dropdown */
|
||||||
|
z-index: 10;
|
||||||
|
}
|
||||||
|
.has-submenu:hover .submenu {
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
top: 100%;
|
||||||
|
left: 0;
|
||||||
|
z-index: 1000;
|
||||||
|
opacity: 1;
|
||||||
|
visibility: visible;
|
||||||
|
transform: translateY(0);
|
||||||
|
}
|
||||||
|
.has-submenu:hover .submenu-label .fa-caret-right {
|
||||||
|
transform: rotate(90deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.has-submenu {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hide checkbox */
|
||||||
|
.has-submenu input[type="checkbox"] {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Style the label that acts like a button */
|
||||||
|
.submenu-label {
|
||||||
|
display: block;
|
||||||
|
cursor: pointer;
|
||||||
|
color: #fff;
|
||||||
|
user-select: none;
|
||||||
|
margin-bottom: unset;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hide submenu by default */
|
||||||
|
.has-submenu .submenu {
|
||||||
|
display: none;
|
||||||
|
list-style: none;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
background-color: var(--nav-background-color);
|
||||||
|
}
|
||||||
|
.has-submenu .fa-caret-down {
|
||||||
|
padding-left: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.submenu li {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.submenu li a {
|
||||||
|
display: block;
|
||||||
|
padding: 5px 15px;
|
||||||
|
text-decoration: none;
|
||||||
|
color: #fff;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Global used */
|
||||||
|
.left-side {
|
||||||
|
margin-left: auto;
|
||||||
|
}
|
||||||
|
#header .left-side i {
|
||||||
|
margin: 0 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hidden {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.middle {
|
||||||
|
margin: 0 auto;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.active {
|
||||||
|
background-color: lightgreen !important;
|
||||||
|
}
|
||||||
|
.active:hover {
|
||||||
|
background-color: #76d376 !important;
|
||||||
|
transform: scale(1.05);
|
||||||
|
}
|
||||||
|
|
||||||
|
.container {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
width: 100%;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
.container img {
|
||||||
|
max-width: 100%;
|
||||||
|
height: auto;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Table Style */
|
||||||
|
td a {
|
||||||
|
color: var(--furry-decoration-color);
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
main {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
body{
|
||||||
|
margin:0;
|
||||||
|
color:var(--text);
|
||||||
|
background:
|
||||||
|
radial-gradient(1200px 600px at 10% -10%, rgba(124,158,255,.18), transparent 60%),
|
||||||
|
radial-gradient(900px 500px at 110% 10%, rgba(142,246,255,.18), transparent 60%),
|
||||||
|
var(--bg);
|
||||||
|
font:500 14px/1.5 system-ui,-apple-system,Segoe UI,Inter,Roboto,"Helvetica Neue",Arial,"Noto Sans","Apple Color Emoji","Segoe UI Emoji";
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ====== Generic Layout ====== */
|
||||||
|
.wrap{max-width:980px;margin:clamp(10px,2.2vw,20px) auto;padding:clamp(12px,2.4vw,20px)}
|
||||||
|
|
||||||
|
/* Card */
|
||||||
|
.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);
|
||||||
|
backdrop-filter:saturate(120%) blur(6px);
|
||||||
|
-webkit-backdrop-filter:saturate(120%) blur(6px);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ====== Hero ====== */
|
||||||
|
.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}
|
||||||
|
|
||||||
|
/* ====== Buttons ====== */
|
||||||
|
.btn{
|
||||||
|
--btn-br:color-mix(in srgb,var(--accent) 40%,var(--border));
|
||||||
|
display:inline-flex;align-items:center;justify-content: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);user-select:none
|
||||||
|
}
|
||||||
|
.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)}
|
||||||
|
/* Upload page prefers slightly larger padding */
|
||||||
|
.file-upload .btn{padding:.8rem 1.1rem;font-weight:700}
|
||||||
|
|
||||||
|
/* ====== Glass / Badges ====== */
|
||||||
|
.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
|
||||||
|
}
|
||||||
|
.badge{
|
||||||
|
display:inline-block;padding:.3rem .55rem;border-radius:999px;font-size:.79rem;line-height:1;
|
||||||
|
background:color-mix(in srgb,var(--accent) 16%,transparent);
|
||||||
|
color:var(--accent);
|
||||||
|
border:1px solid color-mix(in srgb,var(--accent) 32%,var(--border));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ====== Feature Grid ====== */
|
||||||
|
.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}
|
||||||
|
|
||||||
|
/* ====== Footer ====== */
|
||||||
|
.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 Providers ====== */
|
||||||
|
.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))}
|
||||||
|
|
||||||
|
/* ====== Files / Table View ====== */
|
||||||
|
.file-list{padding:clamp(16px,3vw,28px)}
|
||||||
|
.page-title{
|
||||||
|
margin:0 0 18px;font-weight:800;letter-spacing:.2px;font-size:clamp(22px,2.4vw,32px);
|
||||||
|
background:linear-gradient(90deg,var(--accent),var(--accent-2));-webkit-background-clip:text;background-clip:text;color:transparent
|
||||||
|
}
|
||||||
|
.subtle{color:var(--muted);font-size:.95rem;margin:0 0 22px}
|
||||||
|
|
||||||
|
.table-wrap{overflow:auto;border-radius:calc(var(--radius) - 2px);border:1px solid var(--border)}
|
||||||
|
.table{width:100%;border-collapse:separate;border-spacing:0;background:transparent}
|
||||||
|
.table thead th{
|
||||||
|
position:sticky;top:0;z-index:1;text-align:left;font-size:.85rem;font-weight:700;letter-spacing:.3px;
|
||||||
|
padding:12px 14px;color:var(--muted);
|
||||||
|
background:color-mix(in srgb,var(--panel) 86%, black 0%);
|
||||||
|
border-bottom:1px solid var(--border);backdrop-filter:blur(4px)
|
||||||
|
}
|
||||||
|
.table tbody td{
|
||||||
|
padding:14px;border-bottom:1px dashed var(--border);vertical-align:middle;white-space:nowrap
|
||||||
|
}
|
||||||
|
.table tbody tr{transition:background .25s ease, transform .06s ease}
|
||||||
|
.table tbody tr:hover{background:color-mix(in srgb,var(--panel-2) 88%, transparent)}
|
||||||
|
.table .cell--name a{color:var(--text);text-decoration:none;font-weight:700}
|
||||||
|
.table .cell--name a:hover{color:var(--accent);text-decoration:underline;text-underline-offset:3px}
|
||||||
|
.table .cell--right{text-align:right}
|
||||||
|
.table tbody tr:nth-child(2n){background:color-mix(in srgb,var(--panel) 92%, transparent)}
|
||||||
|
.table tbody tr:hover:nth-child(2n){background:color-mix(in srgb,var(--panel-2) 86%, transparent)}
|
||||||
|
|
||||||
|
/* Icon Buttons (used near tables) */
|
||||||
|
.actions{ display:flex; gap:8px }
|
||||||
|
.table .actions{ justify-content:flex-end }
|
||||||
|
.icon-btn{
|
||||||
|
--btn-bg: color-mix(in srgb, var(--panel-2) 70%, transparent);
|
||||||
|
--btn-br: color-mix(in srgb, var(--accent) 22%, var(--border));
|
||||||
|
display:inline-flex;align-items:center;justify-content:center;gap:.4ch;
|
||||||
|
padding:.45rem .6rem;border-radius:10px;border:1px solid var(--btn-br);
|
||||||
|
background:var(--btn-bg);color:var(--text);font-size:.9rem;cursor:pointer;
|
||||||
|
transition:transform .06s ease, background .2s ease, border-color .2s ease, box-shadow .2s ease;
|
||||||
|
box-shadow:0 2px 0 rgba(0,0,0,.08);user-select:none
|
||||||
|
}
|
||||||
|
.icon-btn:hover{
|
||||||
|
background:color-mix(in srgb,var(--accent) 12%,var(--panel-2));
|
||||||
|
border-color:color-mix(in srgb,var(--accent) 40%,var(--border));
|
||||||
|
box-shadow:0 6px 18px rgba(0,0,0,.18);
|
||||||
|
}
|
||||||
|
.icon-btn:active{transform:translateY(1px) scale(.98)}
|
||||||
|
.icon-btn[data-variant="ghost"]{background:transparent;border-color:var(--border)}
|
||||||
|
.icon-btn[data-variant="primary"]{
|
||||||
|
background:linear-gradient(180deg,color-mix(in srgb,var(--accent) 22%, transparent), transparent);
|
||||||
|
border-color:color-mix(in srgb,var(--accent) 50%, var(--border));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Small screens for dense lists */
|
||||||
|
@media (max-width:720px){
|
||||||
|
.table tbody td{white-space:normal}
|
||||||
|
.actions{flex-wrap:wrap}
|
||||||
|
.badge{margin-top:4px}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ====== Upload UI ====== */
|
||||||
|
.file-upload{margin:clamp(16px,3vw,32px) auto}
|
||||||
|
.dropzone{
|
||||||
|
position:relative;border:2px dashed color-mix(in srgb,var(--accent) 40%,var(--border));
|
||||||
|
border-radius:calc(var(--radius) - 4px);
|
||||||
|
background:linear-gradient(180deg, color-mix(in srgb, var(--panel-2) 60%, transparent), transparent);
|
||||||
|
padding:clamp(22px,4vw,40px);text-align:center;cursor:pointer;
|
||||||
|
transition:border-color .25s ease, background .25s ease, transform .06s ease;outline:none
|
||||||
|
}
|
||||||
|
.dropzone:hover{
|
||||||
|
border-color:color-mix(in srgb,var(--accent) 65%,var(--border));
|
||||||
|
background:color-mix(in srgb,var(--panel-2) 75%, transparent);
|
||||||
|
}
|
||||||
|
.dropzone:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 35%, transparent)}
|
||||||
|
.dropzone.drag{
|
||||||
|
border-color:var(--accent-2);
|
||||||
|
background:color-mix(in srgb,var(--accent) 12%, var(--panel-2));
|
||||||
|
}
|
||||||
|
.dz-icon{font-size:42px;line-height:1;margin-bottom:10px;filter:drop-shadow(0 6px 14px rgba(0,0,0,.25))}
|
||||||
|
.dz-title{font-weight:800;margin:6px 0 2px}
|
||||||
|
.dz-hint{color:var(--muted);font-size:.95rem;margin:6px 0 0}
|
||||||
|
input[type="file"]{display:none}
|
||||||
|
|
||||||
|
/* Fields */
|
||||||
|
.field{margin-top:18px}
|
||||||
|
.label{display:block;margin:14px 0 8px;font-size:.92rem;color:var(--muted)}
|
||||||
|
.input,.select,.textarea,.datetime{
|
||||||
|
width:100%;border-radius:12px;border:1px solid var(--border);
|
||||||
|
background:color-mix(in srgb,var(--panel) 88%, transparent);
|
||||||
|
color:var(--text);padding:12px 14px;
|
||||||
|
transition:border-color .2s ease, box-shadow .2s ease, background .2s ease
|
||||||
|
}
|
||||||
|
.textarea{min-height:120px;resize:vertical}
|
||||||
|
.input:focus,.select:focus,.textarea:focus,.datetime:focus{
|
||||||
|
outline:none;border-color:color-mix(in srgb,var(--accent) 50%, var(--border));
|
||||||
|
box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 25%, transparent);
|
||||||
|
background:color-mix(in srgb,var(--panel-2) 92%, transparent);
|
||||||
|
}
|
||||||
|
.input[disabled],.textarea[disabled]{opacity:.7;cursor:not-allowed}
|
||||||
|
|
||||||
|
.row{display:grid;grid-template-columns:1fr 1fr;gap:14px}
|
||||||
|
@media (max-width:720px){.row{grid-template-columns:1fr}}
|
||||||
|
|
||||||
|
.preview{margin-top:10px;color:var(--muted)}
|
||||||
|
|
||||||
|
/* Upload actions use centered alignment */
|
||||||
|
.file-upload .actions{align-items:center;gap:10px;margin-top:18px}
|
||||||
|
|
||||||
|
/* Progress */
|
||||||
|
.progress{
|
||||||
|
height:10px;border-radius:999px;background:color-mix(in srgb,var(--panel-2) 70%, transparent);
|
||||||
|
border:1px solid var(--border);overflow:hidden;margin-top:12px
|
||||||
|
}
|
||||||
|
.bar{
|
||||||
|
height:100%;width:0%;
|
||||||
|
background:linear-gradient(90deg,var(--accent),var(--accent-2));
|
||||||
|
transition:width .2s ease
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Toast */
|
||||||
|
.toast{
|
||||||
|
position:fixed;right:16px;bottom:16px;z-index:1000;
|
||||||
|
background:linear-gradient(180deg,var(--panel),var(--panel-2));
|
||||||
|
border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow);
|
||||||
|
color:var(--text);padding:10px 14px;display:none;align-items:center;gap:.6ch
|
||||||
|
}
|
||||||
|
.toast.show{display:flex;animation:pop .18s ease-out}
|
||||||
|
@keyframes pop{from{transform:translateY(8px);opacity:0}to{transform:translateY(0);opacity:1}}
|
||||||
|
|
||||||
|
/* ====== Utilities ====== */
|
||||||
|
.sr-only{
|
||||||
|
position:absolute !important;width:1px;height:1px;padding:0;margin:-1px;
|
||||||
|
overflow:hidden;clip:rect(0,0,0,0);border:0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Footer */
|
||||||
|
footer {
|
||||||
|
padding-top: 1rem;
|
||||||
|
padding-bottom: 1rem;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 0.9rem;
|
||||||
|
color: #888;
|
||||||
|
border-top: 1px solid #333;
|
||||||
|
}
|
||||||
|
footer a {
|
||||||
|
color: #80d4ff;
|
||||||
|
margin: 0 0.5rem;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
footer a:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
@@ -6,7 +6,6 @@
|
|||||||
<meta name="google-site-verification" content="NtTbMfo6Lv7kwnMAGywxbCeDYas8uPvX3Zfm0DkQR8U" />
|
<meta name="google-site-verification" content="NtTbMfo6Lv7kwnMAGywxbCeDYas8uPvX3Zfm0DkQR8U" />
|
||||||
<meta name="author" content="daniel156161">
|
<meta name="author" content="daniel156161">
|
||||||
<link rel="icon" href="{{ url_for('basic.favicon') }}">
|
<link rel="icon" href="{{ url_for('basic.favicon') }}">
|
||||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/root.css') }}">
|
|
||||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
|
<link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
|
||||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/fontawesome.all.min.css') }}">
|
<link rel="stylesheet" href="{{ url_for('static', filename='css/fontawesome.all.min.css') }}">
|
||||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/fonts/PressStart2P.css') }}">
|
<link rel="stylesheet" href="{{ url_for('static', filename='css/fonts/PressStart2P.css') }}">
|
||||||
|
|||||||
@@ -8,199 +8,6 @@
|
|||||||
<meta name="robots" content="index, follow" />
|
<meta name="robots" content="index, follow" />
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block head %}
|
|
||||||
<style>
|
|
||||||
/* ====== Design Tokens ====== */
|
|
||||||
: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: #ffffff;
|
|
||||||
--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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ====== Base ====== */
|
|
||||||
*{box-sizing:border-box}
|
|
||||||
html,body{height:100%}
|
|
||||||
body{
|
|
||||||
margin:0;
|
|
||||||
color:var(--text);
|
|
||||||
background:
|
|
||||||
radial-gradient(1200px 600px at 10% -10%, rgba(124,158,255,.18), transparent 60%),
|
|
||||||
radial-gradient(900px 500px at 110% 10%, rgba(142,246,255,.18), transparent 60%),
|
|
||||||
var(--bg);
|
|
||||||
font: 500 system-ui, -apple-system, Segoe UI, Roboto, Inter, "Helvetica Neue", Arial, "Noto Sans", "Apple Color Emoji","Segoe UI Emoji";
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ====== Layout ====== */
|
|
||||||
.file-list{
|
|
||||||
padding: clamp(16px, 3vw, 28px);
|
|
||||||
}
|
|
||||||
.card{
|
|
||||||
background: linear-gradient(180deg, var(--panel), var(--panel-2));
|
|
||||||
border: 1px solid var(--border);
|
|
||||||
border-radius: var(--radius);
|
|
||||||
box-shadow: var(--shadow);
|
|
||||||
backdrop-filter: saturate(120%) blur(6px);
|
|
||||||
-webkit-backdrop-filter: saturate(120%) blur(6px);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ====== Header ====== */
|
|
||||||
.page-title{
|
|
||||||
margin: 0 0 18px;
|
|
||||||
font-weight: 800;
|
|
||||||
letter-spacing: .2px;
|
|
||||||
font-size: clamp(22px, 2.4vw, 32px);
|
|
||||||
background: linear-gradient(90deg, var(--accent), var(--accent-2));
|
|
||||||
-webkit-background-clip: text;
|
|
||||||
background-clip: text;
|
|
||||||
color: transparent;
|
|
||||||
}
|
|
||||||
.subtle{
|
|
||||||
color: var(--muted);
|
|
||||||
font-size: .95rem;
|
|
||||||
margin: 0 0 22px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ====== Table Wrapper ====== */
|
|
||||||
.table-wrap{
|
|
||||||
overflow: auto;
|
|
||||||
border-radius: calc(var(--radius) - 2px);
|
|
||||||
border: 1px solid var(--border);
|
|
||||||
}
|
|
||||||
.table{
|
|
||||||
width: 100%;
|
|
||||||
border-collapse: separate;
|
|
||||||
border-spacing: 0;
|
|
||||||
background: transparent;
|
|
||||||
}
|
|
||||||
.table thead th{
|
|
||||||
position: sticky;
|
|
||||||
top: 0;
|
|
||||||
z-index: 1;
|
|
||||||
text-align: left;
|
|
||||||
font-size: .85rem;
|
|
||||||
font-weight: 700;
|
|
||||||
letter-spacing: .3px;
|
|
||||||
padding: 12px 14px;
|
|
||||||
color: var(--muted);
|
|
||||||
background: color-mix(in srgb, var(--panel) 86%, black 0%);
|
|
||||||
border-bottom: 1px solid var(--border);
|
|
||||||
backdrop-filter: blur(4px);
|
|
||||||
}
|
|
||||||
.table tbody td{
|
|
||||||
padding: 14px;
|
|
||||||
border-bottom: 1px dashed var(--border);
|
|
||||||
vertical-align: middle;
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
|
||||||
.table tbody tr{
|
|
||||||
transition: background .25s ease, transform .06s ease;
|
|
||||||
}
|
|
||||||
.table tbody tr:hover{
|
|
||||||
background: color-mix(in srgb, var(--panel-2) 88%, transparent);
|
|
||||||
}
|
|
||||||
.table .cell--name a{
|
|
||||||
color: var(--text);
|
|
||||||
text-decoration: none;
|
|
||||||
font-weight: 700;
|
|
||||||
}
|
|
||||||
.table .cell--name a:hover{
|
|
||||||
color: var(--accent);
|
|
||||||
text-decoration: underline;
|
|
||||||
text-underline-offset: 3px;
|
|
||||||
}
|
|
||||||
.table .cell--right{ text-align: right; }
|
|
||||||
|
|
||||||
/* Zebra for readability on dense lists */
|
|
||||||
.table tbody tr:nth-child(2n){
|
|
||||||
background: color-mix(in srgb, var(--panel) 92%, transparent);
|
|
||||||
}
|
|
||||||
.table tbody tr:hover:nth-child(2n){
|
|
||||||
background: color-mix(in srgb, var(--panel-2) 86%, transparent);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ====== Badges (e.g., file size) ====== */
|
|
||||||
.badge{
|
|
||||||
display:inline-block;
|
|
||||||
padding: .25rem .5rem;
|
|
||||||
border-radius: 999px;
|
|
||||||
font-size: .78rem;
|
|
||||||
line-height: 1;
|
|
||||||
background: color-mix(in srgb, var(--accent) 16%, transparent);
|
|
||||||
color: var(--accent);
|
|
||||||
border: 1px solid color-mix(in srgb, var(--accent) 32%, var(--border));
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ====== Icon Buttons ====== */
|
|
||||||
.actions{ display:flex; justify-content:flex-end; gap:8px; }
|
|
||||||
.icon-btn{
|
|
||||||
--btn-bg: color-mix(in srgb, var(--panel-2) 70%, transparent);
|
|
||||||
--btn-br: color-mix(in srgb, var(--accent) 22%, var(--border));
|
|
||||||
display:inline-flex;
|
|
||||||
align-items:center;
|
|
||||||
justify-content:center;
|
|
||||||
gap:.4ch;
|
|
||||||
padding: .45rem .6rem;
|
|
||||||
border-radius: 10px;
|
|
||||||
border: 1px solid var(--btn-br);
|
|
||||||
background: var(--btn-bg);
|
|
||||||
color: var(--text);
|
|
||||||
font-size: .9rem;
|
|
||||||
cursor: pointer;
|
|
||||||
transition: transform .06s ease, background .2s ease, border-color .2s ease, box-shadow .2s ease;
|
|
||||||
box-shadow: 0 2px 0 rgba(0,0,0,.08);
|
|
||||||
user-select: none;
|
|
||||||
}
|
|
||||||
.icon-btn:hover{
|
|
||||||
background: color-mix(in srgb, var(--accent) 12%, var(--panel-2));
|
|
||||||
border-color: color-mix(in srgb, var(--accent) 40%, var(--border));
|
|
||||||
box-shadow: 0 6px 18px rgba(0,0,0,.18);
|
|
||||||
}
|
|
||||||
.icon-btn:active{ transform: translateY(1px) scale(.98); }
|
|
||||||
.icon-btn[data-variant="ghost"]{
|
|
||||||
background: transparent;
|
|
||||||
border-color: var(--border);
|
|
||||||
}
|
|
||||||
.icon-btn[data-variant="primary"]{
|
|
||||||
background: linear-gradient(180deg, color-mix(in srgb, var(--accent) 22%, transparent), transparent);
|
|
||||||
border-color: color-mix(in srgb, var(--accent) 50%, var(--border));
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ====== Small screens: wrap long text and stack actions ====== */
|
|
||||||
@media (max-width: 720px){
|
|
||||||
.table tbody td{ white-space: normal; }
|
|
||||||
.actions{ flex-wrap: wrap; }
|
|
||||||
.badge{ margin-top: 4px; }
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ====== Utility ====== */
|
|
||||||
.sr-only{
|
|
||||||
position:absolute !important; width:1px; height:1px; padding:0; margin:-1px;
|
|
||||||
overflow:hidden; clip:rect(0,0,0,0); border:0;
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<main class="file-list">
|
<main class="file-list">
|
||||||
<section class="card" style="padding: clamp(18px, 2.6vw, 28px);">
|
<section class="card" style="padding: clamp(18px, 2.6vw, 28px);">
|
||||||
|
|||||||
@@ -8,51 +8,6 @@
|
|||||||
<meta name="robots" content="noindex, nofollow" />
|
<meta name="robots" content="noindex, nofollow" />
|
||||||
{% endblock %}
|
{% 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 %}
|
{% block content %}
|
||||||
<main class="wrap">
|
<main class="wrap">
|
||||||
<section class="card hero" aria-label="Intro">
|
<section class="card hero" aria-label="Intro">
|
||||||
|
|||||||
@@ -8,195 +8,6 @@
|
|||||||
<meta name="robots" content="index, follow" />
|
<meta name="robots" content="index, follow" />
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block head %}
|
|
||||||
<style>
|
|
||||||
/* ====== Design Tokens (match Files page) ====== */
|
|
||||||
: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;
|
|
||||||
--danger: #ff7a7a;
|
|
||||||
--success: #63e6b0;
|
|
||||||
}
|
|
||||||
@media (prefers-color-scheme: light){
|
|
||||||
:root{
|
|
||||||
--bg: #f6f7fb;
|
|
||||||
--panel: #ffffff;
|
|
||||||
--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);
|
|
||||||
--danger: #e74c3c;
|
|
||||||
--success: #0aa06e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
*{box-sizing:border-box}
|
|
||||||
html,body{height:100%}
|
|
||||||
body{
|
|
||||||
margin:0;
|
|
||||||
color:var(--text);
|
|
||||||
background:
|
|
||||||
radial-gradient(1200px 600px at 10% -10%, rgba(124,158,255,.18), transparent 60%),
|
|
||||||
radial-gradient(900px 500px at 110% 10%, rgba(142,246,255,.18), transparent 60%),
|
|
||||||
var(--bg);
|
|
||||||
font: 500 system-ui, -apple-system, Segoe UI, Roboto, Inter, "Helvetica Neue", Arial, "Noto Sans", "Apple Color Emoji","Segoe UI Emoji";
|
|
||||||
}
|
|
||||||
|
|
||||||
.file-upload{
|
|
||||||
margin: clamp(16px, 3vw, 32px) auto;
|
|
||||||
}
|
|
||||||
.card{
|
|
||||||
background: linear-gradient(180deg, var(--panel), var(--panel-2));
|
|
||||||
border: 1px solid var(--border);
|
|
||||||
border-radius: var(--radius);
|
|
||||||
box-shadow: var(--shadow);
|
|
||||||
backdrop-filter: saturate(120%) blur(6px);
|
|
||||||
-webkit-backdrop-filter: saturate(120%) blur(6px);
|
|
||||||
padding: clamp(18px, 2.6vw, 28px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-title{
|
|
||||||
margin: 0 0 10px;
|
|
||||||
font-weight: 800;
|
|
||||||
letter-spacing:.2px;
|
|
||||||
font-size: clamp(22px, 2.4vw, 32px);
|
|
||||||
background: linear-gradient(90deg, var(--accent), var(--accent-2));
|
|
||||||
-webkit-background-clip: text;
|
|
||||||
background-clip: text;
|
|
||||||
color: transparent;
|
|
||||||
}
|
|
||||||
.subtle{color:var(--muted); margin:0 0 22px}
|
|
||||||
|
|
||||||
/* ====== Upload Zone ====== */
|
|
||||||
.dropzone{
|
|
||||||
position: relative;
|
|
||||||
border: 2px dashed color-mix(in srgb, var(--accent) 40%, var(--border));
|
|
||||||
border-radius: calc(var(--radius) - 4px);
|
|
||||||
background:
|
|
||||||
linear-gradient(180deg, color-mix(in srgb, var(--panel-2) 60%, transparent), transparent);
|
|
||||||
padding: clamp(22px, 4vw, 40px);
|
|
||||||
text-align: center;
|
|
||||||
cursor: pointer;
|
|
||||||
transition: border-color .25s ease, background .25s ease, transform .06s ease;
|
|
||||||
outline: none;
|
|
||||||
}
|
|
||||||
.dropzone:hover{
|
|
||||||
border-color: color-mix(in srgb, var(--accent) 65%, var(--border));
|
|
||||||
background: color-mix(in srgb, var(--panel-2) 75%, transparent);
|
|
||||||
}
|
|
||||||
.dropzone:focus-visible{
|
|
||||||
box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 35%, transparent);
|
|
||||||
}
|
|
||||||
.dropzone.drag{
|
|
||||||
border-color: var(--accent-2);
|
|
||||||
background: color-mix(in srgb, var(--accent) 12%, var(--panel-2));
|
|
||||||
}
|
|
||||||
|
|
||||||
.dz-icon{
|
|
||||||
font-size: 42px;
|
|
||||||
line-height:1;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
filter: drop-shadow(0 6px 14px rgba(0,0,0,.25));
|
|
||||||
}
|
|
||||||
.dz-title{font-weight: 800; margin: 6px 0 2px}
|
|
||||||
.dz-hint{color:var(--muted); font-size:.95rem; margin:6px 0 0}
|
|
||||||
|
|
||||||
input[type="file"]{display:none}
|
|
||||||
|
|
||||||
/* ====== Fields ====== */
|
|
||||||
.field{margin-top:18px}
|
|
||||||
.label{
|
|
||||||
display:block; margin: 14px 0 8px; font-size:.92rem; color:var(--muted);
|
|
||||||
}
|
|
||||||
.input, .select, .textarea, .datetime{
|
|
||||||
width:100%;
|
|
||||||
border-radius: 12px;
|
|
||||||
border: 1px solid var(--border);
|
|
||||||
background: color-mix(in srgb, var(--panel) 88%, transparent);
|
|
||||||
color: var(--text);
|
|
||||||
padding: 12px 14px;
|
|
||||||
transition: border-color .2s ease, box-shadow .2s ease, background .2s ease;
|
|
||||||
}
|
|
||||||
.textarea{ min-height: 120px; resize: vertical; }
|
|
||||||
.input:focus, .select:focus, .textarea:focus, .datetime:focus{
|
|
||||||
outline: none;
|
|
||||||
border-color: color-mix(in srgb, var(--accent) 50%, var(--border));
|
|
||||||
box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 25%, transparent);
|
|
||||||
background: color-mix(in srgb, var(--panel-2) 92%, transparent);
|
|
||||||
}
|
|
||||||
.input[disabled], .textarea[disabled]{ opacity:.7; cursor:not-allowed; }
|
|
||||||
|
|
||||||
/* ====== Inline bits ====== */
|
|
||||||
.row{display:grid; grid-template-columns:1fr 1fr; gap:14px}
|
|
||||||
@media (max-width:720px){ .row{grid-template-columns:1fr} }
|
|
||||||
|
|
||||||
.badge{
|
|
||||||
display:inline-block; padding:.35rem .6rem; border-radius:999px; font-size:.8rem;
|
|
||||||
background: color-mix(in srgb, var(--accent) 16%, transparent);
|
|
||||||
border:1px solid color-mix(in srgb, var(--accent) 32%, var(--border));
|
|
||||||
color: var(--accent);
|
|
||||||
}
|
|
||||||
.preview{ margin-top: 10px; color:var(--muted) }
|
|
||||||
|
|
||||||
/* ====== Buttons ====== */
|
|
||||||
.actions{display:flex; align-items:center; gap:10px; margin-top:18px}
|
|
||||||
.btn{
|
|
||||||
--btn-br: color-mix(in srgb, var(--accent) 40%, var(--border));
|
|
||||||
display:inline-flex; align-items:center; justify-content:center; gap:.5ch;
|
|
||||||
padding:.8rem 1.1rem; 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:700; cursor:pointer;
|
|
||||||
transition: transform .06s ease, background .2s ease, border-color .2s ease, box-shadow .2s ease;
|
|
||||||
box-shadow: 0 2px 0 rgba(0,0,0,.08);
|
|
||||||
}
|
|
||||||
.btn:hover{
|
|
||||||
background: color-mix(in srgb, var(--accent) 30%, 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(.98); }
|
|
||||||
.btn[disabled]{opacity:.55; cursor:not-allowed}
|
|
||||||
.btn-ghost{
|
|
||||||
background: transparent; border-color: var(--border);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ====== Progress ====== */
|
|
||||||
.progress{
|
|
||||||
height: 10px; border-radius: 999px; background: color-mix(in srgb, var(--panel-2) 70%, transparent);
|
|
||||||
border:1px solid var(--border); overflow:hidden; margin-top:12px;
|
|
||||||
}
|
|
||||||
.bar{
|
|
||||||
height:100%; width:0%;
|
|
||||||
background: linear-gradient(90deg, var(--accent), var(--accent-2));
|
|
||||||
transition: width .2s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ====== Toast ====== */
|
|
||||||
.toast{
|
|
||||||
position: fixed; right: 16px; bottom: 16px; z-index: 1000;
|
|
||||||
background: linear-gradient(180deg, var(--panel), var(--panel-2));
|
|
||||||
border:1px solid var(--border); border-radius: 12px; box-shadow: var(--shadow);
|
|
||||||
color:var(--text); padding:10px 14px; display:none; align-items:center; gap:.6ch;
|
|
||||||
}
|
|
||||||
.toast.show{ display:flex; animation: pop .18s ease-out }
|
|
||||||
@keyframes pop{ from{ transform: translateY(8px); opacity:0 } to{ transform: translateY(0); opacity:1 } }
|
|
||||||
|
|
||||||
/* ====== Utility ====== */
|
|
||||||
.sr-only{ position:absolute!important; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); border:0; }
|
|
||||||
</style>
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<main class="file-upload">
|
<main class="file-upload">
|
||||||
<section class="card" aria-labelledby="upload-title">
|
<section class="card" aria-labelledby="upload-title">
|
||||||
|
|||||||
Reference in New Issue
Block a user