started rework 2
This commit is contained in:
parent
24438e6629
commit
4a6165f3b9
|
|
@ -1,904 +0,0 @@
|
|||
(() => {
|
||||
var n = {
|
||||
576: (n, t, r) => {
|
||||
var e;
|
||||
|
||||
function i(n) {
|
||||
return i = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(n) {
|
||||
return typeof n
|
||||
} : function(n) {
|
||||
return n && "function" == typeof Symbol && n.constructor === Symbol && n !== Symbol.prototype ? "symbol" : typeof n
|
||||
}, i(n)
|
||||
}
|
||||
n = r.nmd(n),
|
||||
function() {
|
||||
var u = "object" == ("undefined" == typeof self ? "undefined" : i(self)) && self.self === self && self || "object" == (void 0 === r.g ? "undefined" : i(r.g)) && r.g.global === r.g && r.g || this || {},
|
||||
o = u._,
|
||||
a = Array.prototype,
|
||||
c = Object.prototype,
|
||||
f = "undefined" != typeof Symbol ? Symbol.prototype : null,
|
||||
l = a.push,
|
||||
s = a.slice,
|
||||
p = c.toString,
|
||||
h = c.hasOwnProperty,
|
||||
d = Array.isArray,
|
||||
v = Object.keys,
|
||||
y = Object.create,
|
||||
g = function() {},
|
||||
m = function n(t) {
|
||||
return t instanceof n ? t : this instanceof n ? void(this._wrapped = t) : new n(t)
|
||||
};
|
||||
t.nodeType ? u._ = m : (!n.nodeType && n.exports && (t = n.exports = m), t._ = m), m.VERSION = "1.9.1";
|
||||
var b, w = function(n, t, r) {
|
||||
if (void 0 === t) return n;
|
||||
switch (null == r ? 3 : r) {
|
||||
case 1:
|
||||
return function(r) {
|
||||
return n.call(t, r)
|
||||
};
|
||||
case 3:
|
||||
return function(r, e, i) {
|
||||
return n.call(t, r, e, i)
|
||||
};
|
||||
case 4:
|
||||
return function(r, e, i, u) {
|
||||
return n.call(t, r, e, i, u)
|
||||
}
|
||||
}
|
||||
return function() {
|
||||
return n.apply(t, arguments)
|
||||
}
|
||||
},
|
||||
j = function(n, t, r) {
|
||||
return m.iteratee !== b ? m.iteratee(n, t) : null == n ? m.identity : m.isFunction(n) ? w(n, t, r) : m.isObject(n) && !m.isArray(n) ? m.matcher(n) : m.property(n)
|
||||
};
|
||||
m.iteratee = b = function(n, t) {
|
||||
return j(n, t, 1 / 0)
|
||||
};
|
||||
var x = function(n, t) {
|
||||
return t = null == t ? n.length - 1 : +t,
|
||||
function() {
|
||||
for (var r = Math.max(arguments.length - t, 0), e = Array(r), i = 0; i < r; i++) e[i] = arguments[i + t];
|
||||
switch (t) {
|
||||
case 0:
|
||||
return n.call(this, e);
|
||||
case 1:
|
||||
return n.call(this, arguments[0], e);
|
||||
case 2:
|
||||
return n.call(this, arguments[0], arguments[1], e)
|
||||
}
|
||||
var u = Array(t + 1);
|
||||
for (i = 0; i < t; i++) u[i] = arguments[i];
|
||||
return u[t] = e, n.apply(this, u)
|
||||
}
|
||||
},
|
||||
O = function(n) {
|
||||
if (!m.isObject(n)) return {};
|
||||
if (y) return y(n);
|
||||
g.prototype = n;
|
||||
var t = new g;
|
||||
return g.prototype = null, t
|
||||
},
|
||||
A = function(n) {
|
||||
return function(t) {
|
||||
return null == t ? void 0 : t[n]
|
||||
}
|
||||
},
|
||||
_ = function(n, t) {
|
||||
return null != n && h.call(n, t)
|
||||
},
|
||||
S = function(n, t) {
|
||||
for (var r = t.length, e = 0; e < r; e++) {
|
||||
if (null == n) return;
|
||||
n = n[t[e]]
|
||||
}
|
||||
return r ? n : void 0
|
||||
},
|
||||
k = Math.pow(2, 53) - 1,
|
||||
E = A("length"),
|
||||
F = function(n) {
|
||||
var t = E(n);
|
||||
return "number" == typeof t && t >= 0 && t <= k
|
||||
};
|
||||
m.each = m.forEach = function(n, t, r) {
|
||||
var e, i;
|
||||
if (t = w(t, r), F(n))
|
||||
for (e = 0, i = n.length; e < i; e++) t(n[e], e, n);
|
||||
else {
|
||||
var u = m.keys(n);
|
||||
for (e = 0, i = u.length; e < i; e++) t(n[u[e]], u[e], n)
|
||||
}
|
||||
return n
|
||||
}, m.map = m.collect = function(n, t, r) {
|
||||
t = j(t, r);
|
||||
for (var e = !F(n) && m.keys(n), i = (e || n).length, u = Array(i), o = 0; o < i; o++) {
|
||||
var a = e ? e[o] : o;
|
||||
u[o] = t(n[a], a, n)
|
||||
}
|
||||
return u
|
||||
};
|
||||
var I = function(n) {
|
||||
var t = function(t, r, e, i) {
|
||||
var u = !F(t) && m.keys(t),
|
||||
o = (u || t).length,
|
||||
a = n > 0 ? 0 : o - 1;
|
||||
for (i || (e = t[u ? u[a] : a], a += n); a >= 0 && a < o; a += n) {
|
||||
var c = u ? u[a] : a;
|
||||
e = r(e, t[c], c, t)
|
||||
}
|
||||
return e
|
||||
};
|
||||
return function(n, r, e, i) {
|
||||
var u = arguments.length >= 3;
|
||||
return t(n, w(r, i, 4), e, u)
|
||||
}
|
||||
};
|
||||
m.reduce = m.foldl = m.inject = I(1), m.reduceRight = m.foldr = I(-1), m.find = m.detect = function(n, t, r) {
|
||||
var e = (F(n) ? m.findIndex : m.findKey)(n, t, r);
|
||||
if (void 0 !== e && -1 !== e) return n[e]
|
||||
}, m.filter = m.select = function(n, t, r) {
|
||||
var e = [];
|
||||
return t = j(t, r), m.each(n, (function(n, r, i) {
|
||||
t(n, r, i) && e.push(n)
|
||||
})), e
|
||||
}, m.reject = function(n, t, r) {
|
||||
return m.filter(n, m.negate(j(t)), r)
|
||||
}, m.every = m.all = function(n, t, r) {
|
||||
t = j(t, r);
|
||||
for (var e = !F(n) && m.keys(n), i = (e || n).length, u = 0; u < i; u++) {
|
||||
var o = e ? e[u] : u;
|
||||
if (!t(n[o], o, n)) return !1
|
||||
}
|
||||
return !0
|
||||
}, m.some = m.any = function(n, t, r) {
|
||||
t = j(t, r);
|
||||
for (var e = !F(n) && m.keys(n), i = (e || n).length, u = 0; u < i; u++) {
|
||||
var o = e ? e[u] : u;
|
||||
if (t(n[o], o, n)) return !0
|
||||
}
|
||||
return !1
|
||||
}, m.contains = m.includes = m.include = function(n, t, r, e) {
|
||||
return F(n) || (n = m.values(n)), ("number" != typeof r || e) && (r = 0), m.indexOf(n, t, r) >= 0
|
||||
}, m.invoke = x((function(n, t, r) {
|
||||
var e, i;
|
||||
return m.isFunction(t) ? i = t : m.isArray(t) && (e = t.slice(0, -1), t = t[t.length - 1]), m.map(n, (function(n) {
|
||||
var u = i;
|
||||
if (!u) {
|
||||
if (e && e.length && (n = S(n, e)), null == n) return;
|
||||
u = n[t]
|
||||
}
|
||||
return null == u ? u : u.apply(n, r)
|
||||
}))
|
||||
})), m.pluck = function(n, t) {
|
||||
return m.map(n, m.property(t))
|
||||
}, m.where = function(n, t) {
|
||||
return m.filter(n, m.matcher(t))
|
||||
}, m.findWhere = function(n, t) {
|
||||
return m.find(n, m.matcher(t))
|
||||
}, m.max = function(n, t, r) {
|
||||
var e, u, o = -1 / 0,
|
||||
a = -1 / 0;
|
||||
if (null == t || "number" == typeof t && "object" != i(n[0]) && null != n)
|
||||
for (var c = 0, f = (n = F(n) ? n : m.values(n)).length; c < f; c++) null != (e = n[c]) && e > o && (o = e);
|
||||
else t = j(t, r), m.each(n, (function(n, r, e) {
|
||||
((u = t(n, r, e)) > a || u === -1 / 0 && o === -1 / 0) && (o = n, a = u)
|
||||
}));
|
||||
return o
|
||||
}, m.min = function(n, t, r) {
|
||||
var e, u, o = 1 / 0,
|
||||
a = 1 / 0;
|
||||
if (null == t || "number" == typeof t && "object" != i(n[0]) && null != n)
|
||||
for (var c = 0, f = (n = F(n) ? n : m.values(n)).length; c < f; c++) null != (e = n[c]) && e < o && (o = e);
|
||||
else t = j(t, r), m.each(n, (function(n, r, e) {
|
||||
((u = t(n, r, e)) < a || u === 1 / 0 && o === 1 / 0) && (o = n, a = u)
|
||||
}));
|
||||
return o
|
||||
}, m.shuffle = function(n) {
|
||||
return m.sample(n, 1 / 0)
|
||||
}, m.sample = function(n, t, r) {
|
||||
if (null == t || r) return F(n) || (n = m.values(n)), n[m.random(n.length - 1)];
|
||||
var e = F(n) ? m.clone(n) : m.values(n),
|
||||
i = E(e);
|
||||
t = Math.max(Math.min(t, i), 0);
|
||||
for (var u = i - 1, o = 0; o < t; o++) {
|
||||
var a = m.random(o, u),
|
||||
c = e[o];
|
||||
e[o] = e[a], e[a] = c
|
||||
}
|
||||
return e.slice(0, t)
|
||||
}, m.sortBy = function(n, t, r) {
|
||||
var e = 0;
|
||||
return t = j(t, r), m.pluck(m.map(n, (function(n, r, i) {
|
||||
return {
|
||||
value: n,
|
||||
index: e++,
|
||||
criteria: t(n, r, i)
|
||||
}
|
||||
})).sort((function(n, t) {
|
||||
var r = n.criteria,
|
||||
e = t.criteria;
|
||||
if (r !== e) {
|
||||
if (r > e || void 0 === r) return 1;
|
||||
if (r < e || void 0 === e) return -1
|
||||
}
|
||||
return n.index - t.index
|
||||
})), "value")
|
||||
};
|
||||
var M = function(n, t) {
|
||||
return function(r, e, i) {
|
||||
var u = t ? [
|
||||
[],
|
||||
[]
|
||||
] : {};
|
||||
return e = j(e, i), m.each(r, (function(t, i) {
|
||||
var o = e(t, i, r);
|
||||
n(u, t, o)
|
||||
})), u
|
||||
}
|
||||
};
|
||||
m.groupBy = M((function(n, t, r) {
|
||||
_(n, r) ? n[r].push(t) : n[r] = [t]
|
||||
})), m.indexBy = M((function(n, t, r) {
|
||||
n[r] = t
|
||||
})), m.countBy = M((function(n, t, r) {
|
||||
_(n, r) ? n[r]++ : n[r] = 1
|
||||
}));
|
||||
var N = /[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g;
|
||||
m.toArray = function(n) {
|
||||
return n ? m.isArray(n) ? s.call(n) : m.isString(n) ? n.match(N) : F(n) ? m.map(n, m.identity) : m.values(n) : []
|
||||
}, m.size = function(n) {
|
||||
return null == n ? 0 : F(n) ? n.length : m.keys(n).length
|
||||
}, m.partition = M((function(n, t, r) {
|
||||
n[r ? 0 : 1].push(t)
|
||||
}), !0), m.first = m.head = m.take = function(n, t, r) {
|
||||
return null == n || n.length < 1 ? null == t ? void 0 : [] : null == t || r ? n[0] : m.initial(n, n.length - t)
|
||||
}, m.initial = function(n, t, r) {
|
||||
return s.call(n, 0, Math.max(0, n.length - (null == t || r ? 1 : t)))
|
||||
}, m.last = function(n, t, r) {
|
||||
return null == n || n.length < 1 ? null == t ? void 0 : [] : null == t || r ? n[n.length - 1] : m.rest(n, Math.max(0, n.length - t))
|
||||
}, m.rest = m.tail = m.drop = function(n, t, r) {
|
||||
return s.call(n, null == t || r ? 1 : t)
|
||||
}, m.compact = function(n) {
|
||||
return m.filter(n, Boolean)
|
||||
};
|
||||
var P = function n(t, r, e, i) {
|
||||
for (var u = (i = i || []).length, o = 0, a = E(t); o < a; o++) {
|
||||
var c = t[o];
|
||||
if (F(c) && (m.isArray(c) || m.isArguments(c)))
|
||||
if (r)
|
||||
for (var f = 0, l = c.length; f < l;) i[u++] = c[f++];
|
||||
else n(c, r, e, i), u = i.length;
|
||||
else e || (i[u++] = c)
|
||||
}
|
||||
return i
|
||||
};
|
||||
m.flatten = function(n, t) {
|
||||
return P(n, t, !1)
|
||||
}, m.without = x((function(n, t) {
|
||||
return m.difference(n, t)
|
||||
})), m.uniq = m.unique = function(n, t, r, e) {
|
||||
m.isBoolean(t) || (e = r, r = t, t = !1), null != r && (r = j(r, e));
|
||||
for (var i = [], u = [], o = 0, a = E(n); o < a; o++) {
|
||||
var c = n[o],
|
||||
f = r ? r(c, o, n) : c;
|
||||
t && !r ? (o && u === f || i.push(c), u = f) : r ? m.contains(u, f) || (u.push(f), i.push(c)) : m.contains(i, c) || i.push(c)
|
||||
}
|
||||
return i
|
||||
}, m.union = x((function(n) {
|
||||
return m.uniq(P(n, !0, !0))
|
||||
})), m.intersection = function(n) {
|
||||
for (var t = [], r = arguments.length, e = 0, i = E(n); e < i; e++) {
|
||||
var u = n[e];
|
||||
if (!m.contains(t, u)) {
|
||||
var o = void 0;
|
||||
for (o = 1; o < r && m.contains(arguments[o], u); o++);
|
||||
o === r && t.push(u)
|
||||
}
|
||||
}
|
||||
return t
|
||||
}, m.difference = x((function(n, t) {
|
||||
return t = P(t, !0, !0), m.filter(n, (function(n) {
|
||||
return !m.contains(t, n)
|
||||
}))
|
||||
})), m.unzip = function(n) {
|
||||
for (var t = n && m.max(n, E).length || 0, r = Array(t), e = 0; e < t; e++) r[e] = m.pluck(n, e);
|
||||
return r
|
||||
}, m.zip = x(m.unzip), m.object = function(n, t) {
|
||||
for (var r = {}, e = 0, i = E(n); e < i; e++) t ? r[n[e]] = t[e] : r[n[e][0]] = n[e][1];
|
||||
return r
|
||||
};
|
||||
var R = function(n) {
|
||||
return function(t, r, e) {
|
||||
r = j(r, e);
|
||||
for (var i = E(t), u = n > 0 ? 0 : i - 1; u >= 0 && u < i; u += n)
|
||||
if (r(t[u], u, t)) return u;
|
||||
return -1
|
||||
}
|
||||
};
|
||||
m.findIndex = R(1), m.findLastIndex = R(-1), m.sortedIndex = function(n, t, r, e) {
|
||||
for (var i = (r = j(r, e, 1))(t), u = 0, o = E(n); u < o;) {
|
||||
var a = Math.floor((u + o) / 2);
|
||||
r(n[a]) < i ? u = a + 1 : o = a
|
||||
}
|
||||
return u
|
||||
};
|
||||
var T = function(n, t, r) {
|
||||
return function(e, i, u) {
|
||||
var o = 0,
|
||||
a = E(e);
|
||||
if ("number" == typeof u) n > 0 ? o = u >= 0 ? u : Math.max(u + a, o) : a = u >= 0 ? Math.min(u + 1, a) : u + a + 1;
|
||||
else if (r && u && a) return e[u = r(e, i)] === i ? u : -1;
|
||||
if (i != i) return (u = t(s.call(e, o, a), m.isNaN)) >= 0 ? u + o : -1;
|
||||
for (u = n > 0 ? o : a - 1; u >= 0 && u < a; u += n)
|
||||
if (e[u] === i) return u;
|
||||
return -1
|
||||
}
|
||||
};
|
||||
m.indexOf = T(1, m.findIndex, m.sortedIndex), m.lastIndexOf = T(-1, m.findLastIndex), m.range = function(n, t, r) {
|
||||
null == t && (t = n || 0, n = 0), r || (r = t < n ? -1 : 1);
|
||||
for (var e = Math.max(Math.ceil((t - n) / r), 0), i = Array(e), u = 0; u < e; u++, n += r) i[u] = n;
|
||||
return i
|
||||
}, m.chunk = function(n, t) {
|
||||
if (null == t || t < 1) return [];
|
||||
for (var r = [], e = 0, i = n.length; e < i;) r.push(s.call(n, e, e += t));
|
||||
return r
|
||||
};
|
||||
var z = function(n, t, r, e, i) {
|
||||
if (!(e instanceof t)) return n.apply(r, i);
|
||||
var u = O(n.prototype),
|
||||
o = n.apply(u, i);
|
||||
return m.isObject(o) ? o : u
|
||||
};
|
||||
m.bind = x((function(n, t, r) {
|
||||
if (!m.isFunction(n)) throw new TypeError("Bind must be called on a function");
|
||||
var e = x((function(i) {
|
||||
return z(n, e, t, this, r.concat(i))
|
||||
}));
|
||||
return e
|
||||
})), m.partial = x((function(n, t) {
|
||||
var r = m.partial.placeholder;
|
||||
return function e() {
|
||||
for (var i = 0, u = t.length, o = Array(u), a = 0; a < u; a++) o[a] = t[a] === r ? arguments[i++] : t[a];
|
||||
for (; i < arguments.length;) o.push(arguments[i++]);
|
||||
return z(n, e, this, this, o)
|
||||
}
|
||||
})), m.partial.placeholder = m, m.bindAll = x((function(n, t) {
|
||||
var r = (t = P(t, !1, !1)).length;
|
||||
if (r < 1) throw new Error("bindAll must be passed function names");
|
||||
for (; r--;) {
|
||||
var e = t[r];
|
||||
n[e] = m.bind(n[e], n)
|
||||
}
|
||||
})), m.memoize = function(n, t) {
|
||||
var r = function r(e) {
|
||||
var i = r.cache,
|
||||
u = "" + (t ? t.apply(this, arguments) : e);
|
||||
return _(i, u) || (i[u] = n.apply(this, arguments)), i[u]
|
||||
};
|
||||
return r.cache = {}, r
|
||||
}, m.delay = x((function(n, t, r) {
|
||||
return setTimeout((function() {
|
||||
return n.apply(null, r)
|
||||
}), t)
|
||||
})), m.defer = m.partial(m.delay, m, 1), m.throttle = function(n, t, r) {
|
||||
var e, i, u, o, a = 0;
|
||||
r || (r = {});
|
||||
var c = function() {
|
||||
a = !1 === r.leading ? 0 : m.now(), e = null, o = n.apply(i, u), e || (i = u = null)
|
||||
},
|
||||
f = function() {
|
||||
var f = m.now();
|
||||
a || !1 !== r.leading || (a = f);
|
||||
var l = t - (f - a);
|
||||
return i = this, u = arguments, l <= 0 || l > t ? (e && (clearTimeout(e), e = null), a = f, o = n.apply(i, u), e || (i = u = null)) : e || !1 === r.trailing || (e = setTimeout(c, l)), o
|
||||
};
|
||||
return f.cancel = function() {
|
||||
clearTimeout(e), a = 0, e = i = u = null
|
||||
}, f
|
||||
}, m.debounce = function(n, t, r) {
|
||||
var e, i, u = function(t, r) {
|
||||
e = null, r && (i = n.apply(t, r))
|
||||
},
|
||||
o = x((function(o) {
|
||||
if (e && clearTimeout(e), r) {
|
||||
var a = !e;
|
||||
e = setTimeout(u, t), a && (i = n.apply(this, o))
|
||||
} else e = m.delay(u, t, this, o);
|
||||
return i
|
||||
}));
|
||||
return o.cancel = function() {
|
||||
clearTimeout(e), e = null
|
||||
}, o
|
||||
}, m.wrap = function(n, t) {
|
||||
return m.partial(t, n)
|
||||
}, m.negate = function(n) {
|
||||
return function() {
|
||||
return !n.apply(this, arguments)
|
||||
}
|
||||
}, m.compose = function() {
|
||||
var n = arguments,
|
||||
t = n.length - 1;
|
||||
return function() {
|
||||
for (var r = t, e = n[t].apply(this, arguments); r--;) e = n[r].call(this, e);
|
||||
return e
|
||||
}
|
||||
}, m.after = function(n, t) {
|
||||
return function() {
|
||||
if (--n < 1) return t.apply(this, arguments)
|
||||
}
|
||||
}, m.before = function(n, t) {
|
||||
var r;
|
||||
return function() {
|
||||
return --n > 0 && (r = t.apply(this, arguments)), n <= 1 && (t = null), r
|
||||
}
|
||||
}, m.once = m.partial(m.before, 2), m.restArguments = x;
|
||||
var B = !{
|
||||
toString: null
|
||||
}.propertyIsEnumerable("toString"),
|
||||
q = ["valueOf", "isPrototypeOf", "toString", "propertyIsEnumerable", "hasOwnProperty", "toLocaleString"],
|
||||
D = function(n, t) {
|
||||
var r = q.length,
|
||||
e = n.constructor,
|
||||
i = m.isFunction(e) && e.prototype || c,
|
||||
u = "constructor";
|
||||
for (_(n, u) && !m.contains(t, u) && t.push(u); r--;)(u = q[r]) in n && n[u] !== i[u] && !m.contains(t, u) && t.push(u)
|
||||
};
|
||||
m.keys = function(n) {
|
||||
if (!m.isObject(n)) return [];
|
||||
if (v) return v(n);
|
||||
var t = [];
|
||||
for (var r in n) _(n, r) && t.push(r);
|
||||
return B && D(n, t), t
|
||||
}, m.allKeys = function(n) {
|
||||
if (!m.isObject(n)) return [];
|
||||
var t = [];
|
||||
for (var r in n) t.push(r);
|
||||
return B && D(n, t), t
|
||||
}, m.values = function(n) {
|
||||
for (var t = m.keys(n), r = t.length, e = Array(r), i = 0; i < r; i++) e[i] = n[t[i]];
|
||||
return e
|
||||
}, m.mapObject = function(n, t, r) {
|
||||
t = j(t, r);
|
||||
for (var e = m.keys(n), i = e.length, u = {}, o = 0; o < i; o++) {
|
||||
var a = e[o];
|
||||
u[a] = t(n[a], a, n)
|
||||
}
|
||||
return u
|
||||
}, m.pairs = function(n) {
|
||||
for (var t = m.keys(n), r = t.length, e = Array(r), i = 0; i < r; i++) e[i] = [t[i], n[t[i]]];
|
||||
return e
|
||||
}, m.invert = function(n) {
|
||||
for (var t = {}, r = m.keys(n), e = 0, i = r.length; e < i; e++) t[n[r[e]]] = r[e];
|
||||
return t
|
||||
}, m.functions = m.methods = function(n) {
|
||||
var t = [];
|
||||
for (var r in n) m.isFunction(n[r]) && t.push(r);
|
||||
return t.sort()
|
||||
};
|
||||
var W = function(n, t) {
|
||||
return function(r) {
|
||||
var e = arguments.length;
|
||||
if (t && (r = Object(r)), e < 2 || null == r) return r;
|
||||
for (var i = 1; i < e; i++)
|
||||
for (var u = arguments[i], o = n(u), a = o.length, c = 0; c < a; c++) {
|
||||
var f = o[c];
|
||||
t && void 0 !== r[f] || (r[f] = u[f])
|
||||
}
|
||||
return r
|
||||
}
|
||||
};
|
||||
m.extend = W(m.allKeys), m.extendOwn = m.assign = W(m.keys), m.findKey = function(n, t, r) {
|
||||
t = j(t, r);
|
||||
for (var e, i = m.keys(n), u = 0, o = i.length; u < o; u++)
|
||||
if (t(n[e = i[u]], e, n)) return e
|
||||
};
|
||||
var H, K, C = function(n, t, r) {
|
||||
return t in r
|
||||
};
|
||||
m.pick = x((function(n, t) {
|
||||
var r = {},
|
||||
e = t[0];
|
||||
if (null == n) return r;
|
||||
m.isFunction(e) ? (t.length > 1 && (e = w(e, t[1])), t = m.allKeys(n)) : (e = C, t = P(t, !1, !1), n = Object(n));
|
||||
for (var i = 0, u = t.length; i < u; i++) {
|
||||
var o = t[i],
|
||||
a = n[o];
|
||||
e(a, o, n) && (r[o] = a)
|
||||
}
|
||||
return r
|
||||
})), m.omit = x((function(n, t) {
|
||||
var r, e = t[0];
|
||||
return m.isFunction(e) ? (e = m.negate(e), t.length > 1 && (r = t[1])) : (t = m.map(P(t, !1, !1), String), e = function(n, r) {
|
||||
return !m.contains(t, r)
|
||||
}), m.pick(n, e, r)
|
||||
})), m.defaults = W(m.allKeys, !0), m.create = function(n, t) {
|
||||
var r = O(n);
|
||||
return t && m.extendOwn(r, t), r
|
||||
}, m.clone = function(n) {
|
||||
return m.isObject(n) ? m.isArray(n) ? n.slice() : m.extend({}, n) : n
|
||||
}, m.tap = function(n, t) {
|
||||
return t(n), n
|
||||
}, m.isMatch = function(n, t) {
|
||||
var r = m.keys(t),
|
||||
e = r.length;
|
||||
if (null == n) return !e;
|
||||
for (var i = Object(n), u = 0; u < e; u++) {
|
||||
var o = r[u];
|
||||
if (t[o] !== i[o] || !(o in i)) return !1
|
||||
}
|
||||
return !0
|
||||
}, H = function(n, t, r, e) {
|
||||
if (n === t) return 0 !== n || 1 / n == 1 / t;
|
||||
if (null == n || null == t) return !1;
|
||||
if (n != n) return t != t;
|
||||
var u = i(n);
|
||||
return ("function" === u || "object" === u || "object" == i(t)) && K(n, t, r, e)
|
||||
}, K = function(n, t, r, e) {
|
||||
n instanceof m && (n = n._wrapped), t instanceof m && (t = t._wrapped);
|
||||
var u = p.call(n);
|
||||
if (u !== p.call(t)) return !1;
|
||||
switch (u) {
|
||||
case "[object RegExp]":
|
||||
case "[object String]":
|
||||
return "" + n == "" + t;
|
||||
case "[object Number]":
|
||||
return +n != +n ? +t != +t : 0 == +n ? 1 / +n == 1 / t : +n == +t;
|
||||
case "[object Date]":
|
||||
case "[object Boolean]":
|
||||
return +n == +t;
|
||||
case "[object Symbol]":
|
||||
return f.valueOf.call(n) === f.valueOf.call(t)
|
||||
}
|
||||
var o = "[object Array]" === u;
|
||||
if (!o) {
|
||||
if ("object" != i(n) || "object" != i(t)) return !1;
|
||||
var a = n.constructor,
|
||||
c = t.constructor;
|
||||
if (a !== c && !(m.isFunction(a) && a instanceof a && m.isFunction(c) && c instanceof c) && "constructor" in n && "constructor" in t) return !1
|
||||
}
|
||||
e = e || [];
|
||||
for (var l = (r = r || []).length; l--;)
|
||||
if (r[l] === n) return e[l] === t;
|
||||
if (r.push(n), e.push(t), o) {
|
||||
if ((l = n.length) !== t.length) return !1;
|
||||
for (; l--;)
|
||||
if (!H(n[l], t[l], r, e)) return !1
|
||||
} else {
|
||||
var s, h = m.keys(n);
|
||||
if (l = h.length, m.keys(t).length !== l) return !1;
|
||||
for (; l--;)
|
||||
if (s = h[l], !_(t, s) || !H(n[s], t[s], r, e)) return !1
|
||||
}
|
||||
return r.pop(), e.pop(), !0
|
||||
}, m.isEqual = function(n, t) {
|
||||
return H(n, t)
|
||||
}, m.isEmpty = function(n) {
|
||||
return null == n || (F(n) && (m.isArray(n) || m.isString(n) || m.isArguments(n)) ? 0 === n.length : 0 === m.keys(n).length)
|
||||
}, m.isElement = function(n) {
|
||||
return !(!n || 1 !== n.nodeType)
|
||||
}, m.isArray = d || function(n) {
|
||||
return "[object Array]" === p.call(n)
|
||||
}, m.isObject = function(n) {
|
||||
var t = i(n);
|
||||
return "function" === t || "object" === t && !!n
|
||||
}, m.each(["Arguments", "Function", "String", "Number", "Date", "RegExp", "Error", "Symbol", "Map", "WeakMap", "Set", "WeakSet"], (function(n) {
|
||||
m["is" + n] = function(t) {
|
||||
return p.call(t) === "[object " + n + "]"
|
||||
}
|
||||
})), m.isArguments(arguments) || (m.isArguments = function(n) {
|
||||
return _(n, "callee")
|
||||
});
|
||||
var L = u.document && u.document.childNodes;
|
||||
"object" != ("undefined" == typeof Int8Array ? "undefined" : i(Int8Array)) && "function" != typeof L && (m.isFunction = function(n) {
|
||||
return "function" == typeof n || !1
|
||||
}), m.isFinite = function(n) {
|
||||
return !m.isSymbol(n) && isFinite(n) && !isNaN(parseFloat(n))
|
||||
}, m.isNaN = function(n) {
|
||||
return m.isNumber(n) && isNaN(n)
|
||||
}, m.isBoolean = function(n) {
|
||||
return !0 === n || !1 === n || "[object Boolean]" === p.call(n)
|
||||
}, m.isNull = function(n) {
|
||||
return null === n
|
||||
}, m.isUndefined = function(n) {
|
||||
return void 0 === n
|
||||
}, m.has = function(n, t) {
|
||||
if (!m.isArray(t)) return _(n, t);
|
||||
for (var r = t.length, e = 0; e < r; e++) {
|
||||
var i = t[e];
|
||||
if (null == n || !h.call(n, i)) return !1;
|
||||
n = n[i]
|
||||
}
|
||||
return !!r
|
||||
}, m.noConflict = function() {
|
||||
return u._ = o, this
|
||||
}, m.identity = function(n) {
|
||||
return n
|
||||
}, m.constant = function(n) {
|
||||
return function() {
|
||||
return n
|
||||
}
|
||||
}, m.noop = function() {}, m.property = function(n) {
|
||||
return m.isArray(n) ? function(t) {
|
||||
return S(t, n)
|
||||
} : A(n)
|
||||
}, m.propertyOf = function(n) {
|
||||
return null == n ? function() {} : function(t) {
|
||||
return m.isArray(t) ? S(n, t) : n[t]
|
||||
}
|
||||
}, m.matcher = m.matches = function(n) {
|
||||
return n = m.extendOwn({}, n),
|
||||
function(t) {
|
||||
return m.isMatch(t, n)
|
||||
}
|
||||
}, m.times = function(n, t, r) {
|
||||
var e = Array(Math.max(0, n));
|
||||
t = w(t, r, 1);
|
||||
for (var i = 0; i < n; i++) e[i] = t(i);
|
||||
return e
|
||||
}, m.random = function(n, t) {
|
||||
return null == t && (t = n, n = 0), n + Math.floor(Math.random() * (t - n + 1))
|
||||
}, m.now = Date.now || function() {
|
||||
return (new Date).getTime()
|
||||
};
|
||||
var U = {
|
||||
"&": "&",
|
||||
"<": "<",
|
||||
">": ">",
|
||||
'"': """,
|
||||
"'": "'",
|
||||
"`": "`"
|
||||
},
|
||||
$ = m.invert(U),
|
||||
J = function(n) {
|
||||
var t = function(t) {
|
||||
return n[t]
|
||||
},
|
||||
r = "(?:" + m.keys(n).join("|") + ")",
|
||||
e = RegExp(r),
|
||||
i = RegExp(r, "g");
|
||||
return function(n) {
|
||||
return n = null == n ? "" : "" + n, e.test(n) ? n.replace(i, t) : n
|
||||
}
|
||||
};
|
||||
m.escape = J(U), m.unescape = J($), m.result = function(n, t, r) {
|
||||
m.isArray(t) || (t = [t]);
|
||||
var e = t.length;
|
||||
if (!e) return m.isFunction(r) ? r.call(n) : r;
|
||||
for (var i = 0; i < e; i++) {
|
||||
var u = null == n ? void 0 : n[t[i]];
|
||||
void 0 === u && (u = r, i = e), n = m.isFunction(u) ? u.call(n) : u
|
||||
}
|
||||
return n
|
||||
};
|
||||
var V = 0;
|
||||
m.uniqueId = function(n) {
|
||||
var t = ++V + "";
|
||||
return n ? n + t : t
|
||||
}, m.templateSettings = {
|
||||
evaluate: /<%([\s\S]+?)%>/g,
|
||||
interpolate: /<%=([\s\S]+?)%>/g,
|
||||
escape: /<%-([\s\S]+?)%>/g
|
||||
};
|
||||
var G = /(.)^/,
|
||||
Q = {
|
||||
"'": "'",
|
||||
"\\": "\\",
|
||||
"\r": "r",
|
||||
"\n": "n",
|
||||
"\u2028": "u2028",
|
||||
"\u2029": "u2029"
|
||||
},
|
||||
X = /\\|'|\r|\n|\u2028|\u2029/g,
|
||||
Y = function(n) {
|
||||
return "\\" + Q[n]
|
||||
};
|
||||
m.template = function(n, t, r) {
|
||||
!t && r && (t = r), t = m.defaults({}, t, m.templateSettings);
|
||||
var e, i = RegExp([(t.escape || G).source, (t.interpolate || G).source, (t.evaluate || G).source].join("|") + "|$", "g"),
|
||||
u = 0,
|
||||
o = "__p+='";
|
||||
n.replace(i, (function(t, r, e, i, a) {
|
||||
return o += n.slice(u, a).replace(X, Y), u = a + t.length, r ? o += "'+\n((__t=(" + r + "))==null?'':_.escape(__t))+\n'" : e ? o += "'+\n((__t=(" + e + "))==null?'':__t)+\n'" : i && (o += "';\n" + i + "\n__p+='"), t
|
||||
})), o += "';\n", t.variable || (o = "with(obj||{}){\n" + o + "}\n"), o = "var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n" + o + "return __p;\n";
|
||||
try {
|
||||
e = new Function(t.variable || "obj", "_", o)
|
||||
} catch (n) {
|
||||
throw n.source = o, n
|
||||
}
|
||||
var a = function(n) {
|
||||
return e.call(this, n, m)
|
||||
},
|
||||
c = t.variable || "obj";
|
||||
return a.source = "function(" + c + "){\n" + o + "}", a
|
||||
}, m.chain = function(n) {
|
||||
var t = m(n);
|
||||
return t._chain = !0, t
|
||||
};
|
||||
var Z = function(n, t) {
|
||||
return n._chain ? m(t).chain() : t
|
||||
};
|
||||
m.mixin = function(n) {
|
||||
return m.each(m.functions(n), (function(t) {
|
||||
var r = m[t] = n[t];
|
||||
m.prototype[t] = function() {
|
||||
var n = [this._wrapped];
|
||||
return l.apply(n, arguments), Z(this, r.apply(m, n))
|
||||
}
|
||||
})), m
|
||||
}, m.mixin(m), m.each(["pop", "push", "reverse", "shift", "sort", "splice", "unshift"], (function(n) {
|
||||
var t = a[n];
|
||||
m.prototype[n] = function() {
|
||||
var r = this._wrapped;
|
||||
return t.apply(r, arguments), "shift" !== n && "splice" !== n || 0 !== r.length || delete r[0], Z(this, r)
|
||||
}
|
||||
})), m.each(["concat", "join", "slice"], (function(n) {
|
||||
var t = a[n];
|
||||
m.prototype[n] = function() {
|
||||
return Z(this, t.apply(this._wrapped, arguments))
|
||||
}
|
||||
})), m.prototype.value = function() {
|
||||
return this._wrapped
|
||||
}, m.prototype.valueOf = m.prototype.toJSON = m.prototype.value, m.prototype.toString = function() {
|
||||
return String(this._wrapped)
|
||||
}, void 0 === (e = function() {
|
||||
return m
|
||||
}.apply(t, [])) || (n.exports = e)
|
||||
}()
|
||||
}
|
||||
},
|
||||
t = {};
|
||||
|
||||
function r(e) {
|
||||
var i = t[e];
|
||||
if (void 0 !== i) return i.exports;
|
||||
var u = t[e] = {
|
||||
id: e,
|
||||
loaded: !1,
|
||||
exports: {}
|
||||
};
|
||||
return n[e](u, u.exports, r), u.loaded = !0, u.exports
|
||||
}
|
||||
r.g = function() {
|
||||
if ("object" == typeof globalThis) return globalThis;
|
||||
try {
|
||||
return this || new Function("return this")()
|
||||
} catch (n) {
|
||||
if ("object" == typeof window) return window
|
||||
}
|
||||
}(), r.nmd = n => (n.paths = [], n.children || (n.children = []), n), (() => {
|
||||
function n(n) {
|
||||
return function(n) {
|
||||
if (Array.isArray(n)) return t(n)
|
||||
}(n) || function(n) {
|
||||
if ("undefined" != typeof Symbol && null != n[Symbol.iterator] || null != n["@@iterator"]) return Array.from(n)
|
||||
}(n) || function(n, r) {
|
||||
if (!n) return;
|
||||
if ("string" == typeof n) return t(n, r);
|
||||
var e = Object.prototype.toString.call(n).slice(8, -1);
|
||||
"Object" === e && n.constructor && (e = n.constructor.name);
|
||||
if ("Map" === e || "Set" === e) return Array.from(n);
|
||||
if ("Arguments" === e || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)) return t(n, r)
|
||||
}(n) || function() {
|
||||
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
|
||||
}()
|
||||
}
|
||||
|
||||
function t(n, t) {
|
||||
(null == t || t > n.length) && (t = n.length);
|
||||
for (var r = 0, e = new Array(t); r < t; r++) e[r] = n[r];
|
||||
return e
|
||||
}
|
||||
|
||||
function e(n, t) {
|
||||
var r = Object.keys(n);
|
||||
if (Object.getOwnPropertySymbols) {
|
||||
var e = Object.getOwnPropertySymbols(n);
|
||||
t && (e = e.filter((function(t) {
|
||||
return Object.getOwnPropertyDescriptor(n, t).enumerable
|
||||
}))), r.push.apply(r, e)
|
||||
}
|
||||
return r
|
||||
}
|
||||
|
||||
function i(n) {
|
||||
for (var t = 1; t < arguments.length; t++) {
|
||||
var r = null != arguments[t] ? arguments[t] : {};
|
||||
t % 2 ? e(Object(r), !0).forEach((function(t) {
|
||||
u(n, t, r[t])
|
||||
})) : Object.getOwnPropertyDescriptors ? Object.defineProperties(n, Object.getOwnPropertyDescriptors(r)) : e(Object(r)).forEach((function(t) {
|
||||
Object.defineProperty(n, t, Object.getOwnPropertyDescriptor(r, t))
|
||||
}))
|
||||
}
|
||||
return n
|
||||
}
|
||||
|
||||
function u(n, t, r) {
|
||||
return t in n ? Object.defineProperty(n, t, {
|
||||
value: r,
|
||||
enumerable: !0,
|
||||
configurable: !0,
|
||||
writable: !0
|
||||
}) : n[t] = r, n
|
||||
}
|
||||
var o = r(576),
|
||||
a = {
|
||||
color: "orange",
|
||||
radius: [.6, 5],
|
||||
speed: [1, 3],
|
||||
wind: [-1.5, 4]
|
||||
},
|
||||
c = function(t) {
|
||||
var r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null,
|
||||
e = arguments.length > 2 ? arguments[2] : void 0,
|
||||
u = i(i({}, a), e),
|
||||
c = u.radius,
|
||||
f = u.speed,
|
||||
l = u.wind,
|
||||
s = u.color,
|
||||
p = {
|
||||
color: s,
|
||||
x: o.random(0, t.offsetWidth),
|
||||
y: o.random(-t.offsetHeight, t.offsetHeight),
|
||||
radius: o.random.apply(o, n(c)),
|
||||
speed: o.random.apply(o, n(f)),
|
||||
wind: o.random.apply(o, n(l)),
|
||||
isResized: !1
|
||||
},
|
||||
h = t.getContext("2d"),
|
||||
d = function() {
|
||||
p.x = o.random(0, t.offsetWidth), p.y = o.random(-t.offsetHeight, 0)
|
||||
},
|
||||
v = function() {
|
||||
return p.isResized = !0
|
||||
},
|
||||
y = function() {
|
||||
h.beginPath(), h.arc(p.x, p.y, p.radius, 0, 2 * Math.PI), h.fillStyle = p.color, h.fill(), h.closePath()
|
||||
},
|
||||
g = r ? function() {
|
||||
return r(h, p)
|
||||
} : y,
|
||||
m = function() {
|
||||
p.y += p.speed, p.x += p.wind
|
||||
},
|
||||
b = function() {
|
||||
p.y < t.offsetHeight || (p.isResized ? (d(), p.isResized = !1) : (p.y = 0, p.x = o.random(0, t.offsetWidth)))
|
||||
},
|
||||
w = function() {
|
||||
m(), b()
|
||||
};
|
||||
return {
|
||||
update: w,
|
||||
resized: v,
|
||||
draw: g
|
||||
}
|
||||
},
|
||||
f = (document.getElementById("background_div"), document.querySelector("body"), document.getElementById("bg-canvas")),
|
||||
l = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame;
|
||||
! function(n, t, r) {
|
||||
var e = n.getContext("2d"),
|
||||
i = [],
|
||||
u = function(t) {
|
||||
return i.push(t(n))
|
||||
},
|
||||
a = function() {
|
||||
e.canvas.width = n.offsetWidth, e.canvas.height = n.offsetHeight, o.forEach(i, (function(n) {
|
||||
return n.resized()
|
||||
}))
|
||||
},
|
||||
f = function t() {
|
||||
e.clearRect(0, 0, n.offsetWidth, n.offsetHeight), o.forEach(i, (function(n) {
|
||||
return n.draw()
|
||||
})), o.forEach(i, (function(n) {
|
||||
return n.update()
|
||||
})), l(t)
|
||||
};
|
||||
o.times(t, (function() {
|
||||
return u((function(n) {
|
||||
return c(n, null, r)
|
||||
}))
|
||||
})), window.addEventListener("resize", a), f(), a()
|
||||
}(f, 500, {
|
||||
color: "white"
|
||||
})
|
||||
})()
|
||||
})();
|
||||
|
|
@ -1,54 +1,3 @@
|
|||
:root {
|
||||
--primary-pink: #F5A9B8;
|
||||
--primary-blue: #5BCFFA;
|
||||
--white: #FFFFFF;
|
||||
--dark-bg: #161618;
|
||||
--gray-blue: #A8C5DB;
|
||||
--dark-blue: #12354B;
|
||||
--dark-teal: #12404B;
|
||||
|
||||
}
|
||||
|
||||
display-imagebody,html{
|
||||
-ms-scroll-chaining:none;
|
||||
overscroll-behavior:none;
|
||||
margin:0;
|
||||
padding:0;
|
||||
background-color: var(--dark-bg);
|
||||
background-size: cover;
|
||||
background-attachment: fixed;
|
||||
font-family: "Noto Sans", serif;
|
||||
font-optical-sizing: auto;
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
font-variation-settings:
|
||||
"wdth" 100;
|
||||
}
|
||||
|
||||
@-webkit-keyframes slidetounlock{
|
||||
0%{background-position:-100px 0}
|
||||
10%{background-position:-100px 0}
|
||||
50%{background-position:100px 0}
|
||||
to{background-position:100px 0}
|
||||
}
|
||||
|
||||
@keyframes slidetounlock{
|
||||
0%{background-position:-100px 0}
|
||||
10%{background-position:-100px 0}
|
||||
50%{background-position:100px 0}
|
||||
to{background-position:100px 0}
|
||||
}
|
||||
|
||||
.background-canvas {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: -1;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.min-h-full{
|
||||
min-height:100vh
|
||||
}
|
||||
|
|
@ -0,0 +1,453 @@
|
|||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
:root {
|
||||
--primary-pink: #F5A9B8;
|
||||
--primary-blue: #5BCFFA;
|
||||
--white: #FFFFFF;
|
||||
--dark-bg: #161618;
|
||||
--gray-blue: #A8C5DB;
|
||||
--dark-blue: #12354B;
|
||||
--dark-teal: #12404B;
|
||||
|
||||
--card-bg: rgba(22, 22, 24, 0.85);
|
||||
--card-border: rgba(91, 207, 250, 0.15);
|
||||
--card-hover-border: rgba(245, 169, 184, 0.25);
|
||||
|
||||
--shadow-sm: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
|
||||
--shadow-md: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
|
||||
--shadow-lg: 0 20px 25px -5px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, Roboto, Oxygen, Ubuntu, sans-serif;
|
||||
background-color: var(--dark-bg);
|
||||
color: var(--white);
|
||||
min-height: 100vh;
|
||||
line-height: 1.6;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
.background-canvas {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: -1;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.main-container {
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
padding: 1rem 1.5rem;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.header {
|
||||
text-align: center;
|
||||
padding: 4rem 0 2rem;
|
||||
margin-bottom: 3rem;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.back-button {
|
||||
position: absolute;
|
||||
top: 2rem;
|
||||
left: 0;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 0.5rem;
|
||||
padding: 0.75rem 1.5rem;
|
||||
background: rgba(18, 53, 75, 0.3);
|
||||
border: 1px solid rgba(91, 207, 250, 0.2);
|
||||
border-radius: 12px;
|
||||
color: var(--primary-blue);
|
||||
text-decoration: none;
|
||||
font-weight: 600;
|
||||
transition: border-color 0.2s ease;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
.back-button:hover {
|
||||
border-color: var(--primary-blue);
|
||||
}
|
||||
|
||||
.logo-wrapper {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
margin-bottom: 2rem;
|
||||
width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.logo {
|
||||
width: 360px;
|
||||
height: auto;
|
||||
object-fit: contain;
|
||||
}
|
||||
|
||||
.page-title {
|
||||
font-size: 3.5rem;
|
||||
font-weight: 800;
|
||||
background: linear-gradient(135deg, #F5A9B8, #5BCFFA);
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
margin-bottom: 1rem;
|
||||
letter-spacing: -0.5px;
|
||||
}
|
||||
|
||||
.page-subtitle {
|
||||
font-size: 1.25rem;
|
||||
color: var(--gray-blue);
|
||||
max-width: 700px;
|
||||
margin: 0 auto;
|
||||
opacity: 0.9;
|
||||
line-height: 1.8;
|
||||
}
|
||||
|
||||
.bongo {
|
||||
height: 1.5em;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.loading {
|
||||
text-align: center;
|
||||
padding: 4rem;
|
||||
color: var(--gray-blue);
|
||||
}
|
||||
|
||||
.spinner {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
border: 3px solid rgba(91, 207, 250, 0.1);
|
||||
border-top-color: var(--primary-blue);
|
||||
border-radius: 50%;
|
||||
animation: spin 1s linear infinite;
|
||||
margin: 0 auto 1rem;
|
||||
}
|
||||
|
||||
@keyframes spin {
|
||||
to { transform: rotate(360deg); }
|
||||
}
|
||||
|
||||
.artist-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(350px, 1fr));
|
||||
gap: 2rem;
|
||||
margin-bottom: 4rem;
|
||||
align-items: stretch;
|
||||
}
|
||||
|
||||
.artist-card {
|
||||
background: var(--card-bg);
|
||||
border-radius: 20px;
|
||||
overflow: hidden;
|
||||
border: 1px solid var(--card-border);
|
||||
backdrop-filter: blur(10px);
|
||||
transition: border-color 0.3s ease, box-shadow 0.3s ease;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.artist-card:hover {
|
||||
border-color: var(--card-hover-border);
|
||||
box-shadow: 0 0 0 1px var(--card-hover-border);
|
||||
}
|
||||
|
||||
.image-container {
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
background: linear-gradient(135deg, var(--dark-blue), var(--dark-teal));
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 30px;
|
||||
min-height: 320px;
|
||||
max-height: 320px;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.image-container.horizontal {
|
||||
padding: 40px 20px;
|
||||
}
|
||||
|
||||
.image-container.horizontal .artist-image {
|
||||
width: 100%;
|
||||
height: auto;
|
||||
max-height: 100%;
|
||||
}
|
||||
|
||||
.image-container.vertical {
|
||||
padding: 20px 40px;
|
||||
}
|
||||
|
||||
.image-container.vertical .artist-image {
|
||||
width: 50%;
|
||||
height: auto;
|
||||
max-height: 100%;
|
||||
}
|
||||
|
||||
.artist-image {
|
||||
object-fit: contain;
|
||||
object-position: center;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.content {
|
||||
padding: 1.5rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
.artist-name {
|
||||
font-size: 1.5rem;
|
||||
font-weight: 700;
|
||||
margin-bottom: 0.5rem;
|
||||
background: linear-gradient(135deg, #F5A9B8, #5BCFFA);
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
}
|
||||
|
||||
.artist-role {
|
||||
font-size: 1rem;
|
||||
color: var(--primary-blue);
|
||||
margin-bottom: 1rem;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.artist-description {
|
||||
color: var(--gray-blue);
|
||||
margin-bottom: 1.5rem;
|
||||
line-height: 1.7;
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
.social-links {
|
||||
display: flex;
|
||||
gap: 0.75rem;
|
||||
flex-wrap: wrap;
|
||||
margin-top: auto;
|
||||
}
|
||||
|
||||
.social-link {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
border-radius: 12px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
border: 1px solid rgba(255, 255, 255, 0.1);
|
||||
background: rgba(18, 53, 75, 0.4);
|
||||
transition: all 0.2s ease;
|
||||
}
|
||||
|
||||
.social-link:hover {
|
||||
border-color: transparent;
|
||||
}
|
||||
|
||||
.social-link.vgen:hover {
|
||||
background: #B8FF26;
|
||||
color: #0F0F16;
|
||||
}
|
||||
|
||||
.social-link.twitter:hover {
|
||||
background: #1DA1F2;
|
||||
}
|
||||
|
||||
.social-link.bluesky:hover {
|
||||
background: #0085FF;
|
||||
}
|
||||
|
||||
.social-link.youtube:hover {
|
||||
background: #FF0000;
|
||||
}
|
||||
|
||||
.social-link.twitch:hover {
|
||||
background: #9146FF;
|
||||
}
|
||||
|
||||
.social-link.instagram:hover {
|
||||
background: linear-gradient(45deg, #405DE6, #833AB4, #C13584, #E1306C, #FD1D1D);
|
||||
}
|
||||
|
||||
.social-link.pixiv:hover {
|
||||
background: #0096FA;
|
||||
}
|
||||
|
||||
.social-link.website:hover {
|
||||
background: var(--primary-blue);
|
||||
color: #161618;
|
||||
}
|
||||
|
||||
.footer {
|
||||
text-align: center;
|
||||
padding: 3rem 0 1rem;
|
||||
border-top: 1px solid rgba(91, 207, 250, 0.1);
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.footer::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: -1px;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
width: 100px;
|
||||
height: 2px;
|
||||
background: linear-gradient(135deg, #F5A9B8, #5BCFFA);
|
||||
}
|
||||
|
||||
.footer-text {
|
||||
font-size: 1.25rem;
|
||||
color: var(--gray-blue);
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
.footer a {
|
||||
color: rgba(168, 197, 219, 0.6);
|
||||
}
|
||||
|
||||
.heart {
|
||||
color: var(--primary-pink);
|
||||
display: inline-block;
|
||||
margin: 0 0.25rem;
|
||||
}
|
||||
|
||||
.copyright {
|
||||
color: rgba(168, 197, 219, 0.6);
|
||||
font-size: 0.875rem;
|
||||
}
|
||||
|
||||
.error {
|
||||
text-align: center;
|
||||
padding: 3rem;
|
||||
color: var(--primary-pink);
|
||||
background: rgba(245, 169, 184, 0.1);
|
||||
border-radius: 12px;
|
||||
border: 1px solid rgba(245, 169, 184, 0.2);
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.main-container {
|
||||
padding: 1rem;
|
||||
}
|
||||
|
||||
.header {
|
||||
padding: 3rem 0 1.5rem;
|
||||
}
|
||||
|
||||
.back-button {
|
||||
position: relative;
|
||||
top: auto;
|
||||
left: auto;
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
|
||||
.page-title {
|
||||
font-size: 2.5rem;
|
||||
}
|
||||
|
||||
.page-subtitle {
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
|
||||
.artist-grid {
|
||||
grid-template-columns: 1fr;
|
||||
gap: 1.5rem;
|
||||
}
|
||||
|
||||
.image-container {
|
||||
padding: 20px;
|
||||
min-height: 280px;
|
||||
max-height: 280px;
|
||||
}
|
||||
|
||||
.image-container.horizontal {
|
||||
padding: 30px 15px;
|
||||
}
|
||||
|
||||
.image-container.horizontal .artist-image {
|
||||
width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.image-container.vertical {
|
||||
padding: 15px 30px;
|
||||
}
|
||||
|
||||
.image-container.vertical .artist-image {
|
||||
width: 60%;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.logo {
|
||||
width: 240 px;
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 480px) {
|
||||
.page-title {
|
||||
font-size: 2rem;
|
||||
}
|
||||
|
||||
.logo {
|
||||
width: 200px;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.back-button {
|
||||
padding: 0.5rem 1rem;
|
||||
font-size: 0.875rem;
|
||||
}
|
||||
|
||||
.image-container {
|
||||
padding: 15px;
|
||||
min-height: 250px;
|
||||
max-height: 250px;
|
||||
}
|
||||
|
||||
.image-container.horizontal {
|
||||
padding: 20px 10px;
|
||||
}
|
||||
|
||||
.image-container.vertical {
|
||||
padding: 10px 20px;
|
||||
}
|
||||
|
||||
.image-container.vertical .artist-image {
|
||||
width: 70%;
|
||||
}
|
||||
}
|
||||
|
||||
.social-link.bluesky:hover {
|
||||
background: #0085FF;
|
||||
}
|
||||
|
||||
.social-link.fiverr:hover {
|
||||
background: #1DBF73;
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.artist-card,
|
||||
.social-link,
|
||||
.back-button {
|
||||
transition: none !important;
|
||||
}
|
||||
|
||||
.spinner {
|
||||
animation: spin 3s linear infinite;
|
||||
}
|
||||
}
|
||||
213
index.html
213
index.html
|
|
@ -1,74 +1,69 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link href="assets/css/style.css" rel="stylesheet">
|
||||
<link href="assets/css/sites.css" rel="stylesheet">
|
||||
<meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0'>
|
||||
<link rel="shortcut icon" href="./assets/images/star_favicon.ico" type="image/webp">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="./assets/images/star_favicon.ico">
|
||||
<link rel="icon" href="./assets/images/star_favicon.ico" type="image/webp">
|
||||
<link rel="me" href="https://vt.social/@JaxOffTV">
|
||||
</link>
|
||||
<title>JaxOff Links</title>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans:ital,wght@0,100..900;1,100..900&display=swap" rel="stylesheet">
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
|
||||
<link rel="shortcut icon" href="./assets/star_favicon.ico" type="image/webp">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="./assets/star_favicon.ico">
|
||||
<link rel="icon" href="./assets/star_favicon.ico" type="image/webp">
|
||||
|
||||
|
||||
<title>JaxOff 🌸💦 Artist Credits</title>
|
||||
|
||||
<!-- Open Graph -->
|
||||
<meta property="og:title" content="JaxOff 🌸💦 Social Media Links">
|
||||
<meta property="og:description" content="Twitch, Discord, Bluesky & more! :3">
|
||||
<meta property="og:image" content="https://11tw.ink/assets/images/avatar.webp">
|
||||
<meta property="og:url" content="https://11tw.ink/">
|
||||
<meta property="og:type" content="website">
|
||||
<link rel="preload" as="image" href="./assets/jaxoff_logo.png" />
|
||||
|
||||
<!-- Twitter Card -->
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta name="twitter:title" content="JaxOff 🌸💦 Art Credits">
|
||||
<meta name="twitter:description" content="Twitch, Discord, Bluesky & more! :3">
|
||||
<meta name="twitter:image" content="https://11tw.ink/assets/images/avatar.webp">
|
||||
<link rel="stylesheet" href="./css/styles.css" />
|
||||
<link rel="stylesheet" href="./css/style.css" />
|
||||
<link rel="stylesheet" href="./css/sites.css" />
|
||||
|
||||
<!-- Open Graph -->
|
||||
<meta property="og:title" content="JaxOff 🌸💦 Artist Credits">
|
||||
<meta property="og:description" content="🌸💦">
|
||||
<meta property="og:image" content="https://credit.11tw.ink/assets/og.png">
|
||||
<meta property="og:url" content="https://credit.11twi.ink/">
|
||||
<meta property="og:type" content="website">
|
||||
|
||||
<!-- Twitter Card -->
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta name="twitter:title" content="JaxOff 🌸💦 Artist Credits">
|
||||
<meta name="twitter:description" content="🌸💦">
|
||||
<meta name="twitter:image" content="https://credit.11tw.ink/assets/og.png">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- Snowfall Background Animation
|
||||
<section class="animated-background">
|
||||
<div id="stars1"></div>
|
||||
<div id="stars2"></div>
|
||||
<div id="stars3"></div>
|
||||
</section>
|
||||
End of Snowfall Background Animation -->
|
||||
<canvas class="background-canvas" id="backgroundCanvas" aria-hidden="true"></canvas>
|
||||
<canvas class="background-canvas" id="backgroundCanvas" aria-hidden="true"></canvas>
|
||||
|
||||
<div class="min-h-full flex-h-center" id="background_div">
|
||||
<div class="mt-48 page-full-wrap relative ">
|
||||
<input type="hidden" value="creator-page" id="page-type">
|
||||
<img class="display-image m-auto" data-src="assets/images/avatar.webp" src="assets/images/avatar.webp" />
|
||||
<h1 class="page-text-color page-text-font mt-16 text-center">JaxOff 🌸💦</h1>
|
||||
<p class="description">
|
||||
Elftwink VTuber :3 <br>
|
||||
<img class="flag" src="./assets/images/pansexual.svg" /> <img class="flag" src="./assets/images/enby.svg" /> <img class="flag" src="./assets/images/trans.svg" /> <img class="flag" src="./assets/images/prog.svg" />
|
||||
</p>
|
||||
<div class="main-container">
|
||||
<header class="header">
|
||||
<a href="https://11tw.ink/" class="back-button">
|
||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor" style="margin-right: 4px;">
|
||||
<path d="M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z"/>
|
||||
</svg>
|
||||
Zurück zu 11tw.ink
|
||||
</a>
|
||||
|
||||
<a id="merch">
|
||||
<h1 class="separator" title="Super cooler neuer Merch!!!">
|
||||
Merch!!!
|
||||
</h1>
|
||||
<div class="page-item-wrap relative">
|
||||
<div class="page-item flex-both-center absolute"></div>
|
||||
<a target="_blank" class="page-item-each py-10 flex-both-center daki" href="https://11tw.ink/daki" data-id="261685" data-type="page_item">
|
||||
<svg class="link-each-image">
|
||||
<use href="#eggplant"></use>
|
||||
</svg>
|
||||
<div class="logo-wrapper">
|
||||
<a href="https://11tw.ink/" target="_blank" rel="noopener">
|
||||
<img
|
||||
src="./assets/jaxoff_logo.png"
|
||||
alt="JaxOff Logo"
|
||||
class="logo"
|
||||
width="280"
|
||||
height="280"
|
||||
loading="eager"
|
||||
decoding="async"
|
||||
/>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<span class="item-title text-center">[18+] JAXOFF DAKIMAKURA OMG</span>
|
||||
</a>
|
||||
</div>
|
||||
</a>
|
||||
<h1 class="page-title">Artist Credits</h1>
|
||||
<!--<p class="page-subtitle"><span class="heart">♥</span> Ganz lieber text hier <span class="heart">♥</span></p>-->
|
||||
<audio id="sound1" src="./assets/hoyooooo.wav" preload="auto"></audio>
|
||||
<p class="page-subtitle "><img class="bongo" onclick="document.getElementById('sound1').play();" src="./assets/Bongo.gif"/><a href="https://11tw.ink/onlyfans" target="_blank"><img class="bongo" src="./assets/Bongo.gif"/></a><img class="bongo" onclick="document.getElementById('sound1').play();" src="./assets/Bongo.gif"/> </p>
|
||||
</header>
|
||||
|
||||
|
||||
<a id="socials">
|
||||
<a id="socials">
|
||||
<h1 class="separator" title="Social Media / About Me">
|
||||
Socials
|
||||
</h1>
|
||||
|
|
@ -328,110 +323,6 @@
|
|||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<footer class="source" aria-label="Footer information">
|
||||
<p>© JaxOffTV
|
||||
<script>document.write(new Date().getFullYear())</script>
|
||||
</p>
|
||||
</footer>
|
||||
|
||||
<script src="./assets/js/background.js" defer></script>
|
||||
|
||||
<!-- SVG Dump -->
|
||||
<svg style="display: none;">
|
||||
|
||||
<!-- Eggplant -->
|
||||
|
||||
<symbol id="eggplant" viewBox="0 0 128 128">
|
||||
<path d="M20.03 25.81L9.22 32.96S7.67 36 9.77 46.29s11.58 30.65 30.67 49.97c16.47 16.66 35.7 24.78 52.61 25.65s25.04-10.06 25.04-10.06L20.03 25.81z" fill="#8e2f97"></path>
|
||||
<path d="M29.28 20.58l-9.25 15.96s5.82 21.19 15.63 34.38c10.64 14.3 22.81 26.72 41.88 36.41c16.27 8.27 31.49 11.41 31.49 11.41s9.93-3.97 13.89-14.98c3.77-10.48-1.22-21.97-8.37-27.55s-21.46-9.03-34.5-15.96c-13.83-7.35-24.08-15.94-33.14-25.7c-5.67-6.1-6.98-8.7-7.17-9.8c-.09-.52-.42-.96-.92-1.12l-9.54-3.05z" fill="#a057a1"></path>
|
||||
<path d="M22.71 38.01l-.81 5.74s1.47 1.95 3.23 1.8c1.76-.15 4.47-4.68 5.15-7.77c1-4.52.46-7.04.46-7.04s3.52 1.84 8.8 1.07c5.28-.77 7.96-3.75 8.65-5.28c.69-1.53.54-3.22-.23-3.6c-.77-.38-4.52 1.3-4.52 1.3l-11.94-.46l-11.33 3.29l2.54 10.95z" fill="#bdcf46"></path>
|
||||
<path d="M3 46.41s-1.59.6-1.11 2.36c.34 1.22 3.26 3.15 7.15 1.2s6.37-7.12 7.34-9.57c1.6-4.06 2.3-6.85 2.3-6.85l-5.4-3.2l-4.8 11.55S6.32 45.55 3 46.41z" fill="#bdcf46"></path>
|
||||
<path d="M11.01 20.2s-3.24-5.33-3.6-8.51c-.3-2.7.96-4.37 1.61-5.2c1-1.28 3.09-2.11 4.46-1.38c1.7.9 1.68 2.62 2.79 4.85s3.02 5.59 3.02 5.59s3.84-1.22 9.41.71s8.03 4.44 11.45 5.41c3.42.97 7.6-.31 7.82 1.27S42.69 27.78 37.93 28s-7.73-2.45-9.37-1.41c-1.64 1.04-.36 7.38-1.83 11.91c-1.17 3.6-4.06 5.41-4.81 5.31c-.13-.02-3.48-5.17-4.14-6.58c-.67-1.41-1.93-4.98-3.79-2.23c-1.86 2.75-1.47 6.91-5.13 10.11c-2.71 2.37-5.38 2.16-5.98 1.51c-.19-.21 2.38-2 2.38-4.16s-.62-10.37.5-14.39c1.48-5.35 5.25-7.87 5.25-7.87z" fill="#6f9823"></path>
|
||||
</symbol>
|
||||
|
||||
<!-- Twitch -->
|
||||
<symbol id="svg-twitch" viewBox="0 0 32 32">
|
||||
<path d="m26.711 14.929-4.284 4.284h-4.285l-3.749 3.749v-3.749h-4.82V3.146h17.138zM8.502 1.004 3.146 6.36v19.279h6.427v5.356l5.356-5.356h4.284l9.641-9.64V1.003zm12.854 5.891h2.142v6.427h-2.142zm-5.892 0h2.143v6.427h-2.144z" />
|
||||
</symbol>
|
||||
|
||||
<!-- Discord -->
|
||||
<symbol id="svg-discord" viewBox="0 0 126.644 96">
|
||||
<path d="M81.15 0a74 74 0 0 0-3.36 6.794 97.9 97.9 0 0 0-28.994 0A68 68 0 0 0 45.437 0a105.6 105.6 0 0 0-26.14 8.057C2.779 32.53-1.691 56.373.53 79.887a105 105 0 0 0 32.05 16.088 77 77 0 0 0 6.87-11.063c-3.738-1.389-7.35-3.131-10.81-5.152.91-.657 1.794-1.338 2.653-1.995a75.26 75.26 0 0 0 64.075 0c.86.707 1.743 1.389 2.652 1.995a69 69 0 0 1-10.835 5.178A77 77 0 0 0 94.056 96a105 105 0 0 0 32.051-16.063c2.626-27.277-4.496-50.917-18.817-71.855A104 104 0 0 0 81.175.05zM42.28 65.414c-6.238 0-11.416-5.657-11.416-12.653s4.976-12.679 11.391-12.679 11.517 5.708 11.416 12.679c-.101 6.97-5.026 12.653-11.39 12.653m42.078 0c-6.264 0-11.391-5.657-11.391-12.653s4.975-12.679 11.39-12.679S95.85 45.79 95.749 52.761c-.1 6.97-5.026 12.653-11.39 12.653" />
|
||||
</symbol>
|
||||
|
||||
<!-- Mastodon -->
|
||||
<symbol id="svg-mastodon" viewBox="0 0 74 79">
|
||||
<path fill="inherit" d="M73.701 17.432c-1.14-8.38-8.524-14.985-17.277-16.265C54.947.951 49.352.164 36.39.164h-.097C23.328.164 20.547.95 19.07 1.167 10.56 2.411 2.789 8.346.903 16.826-.004 21.002-.1 25.632.068 29.879c.24 6.09.287 12.17.846 18.237a85 85 0 0 0 2.018 11.96c1.792 7.268 9.048 13.316 16.156 15.784 7.61 2.573 15.794 3 23.636 1.234a35 35 0 0 0 2.56-.692c1.903-.599 4.136-1.269 5.778-2.446a.18.18 0 0 0 .075-.142v-5.877a.17.17 0 0 0-.138-.167.2.2 0 0 0-.077 0 66.2 66.2 0 0 1-15.338 1.773c-8.89 0-11.28-4.173-11.966-5.91-.55-1.502-.9-3.068-1.04-4.659a.17.17 0 0 1 .136-.175.2.2 0 0 1 .08.002 65 65 0 0 0 15.087 1.772c1.223 0 2.441 0 3.664-.032 5.111-.141 10.499-.4 15.528-1.372.125-.024.25-.046.358-.078 7.933-1.506 15.482-6.236 16.249-18.211.029-.472.1-4.939.1-5.428.004-1.662.542-11.794-.079-18.02M61.493 47.314H53.15V27.107c0-4.254-1.792-6.424-5.437-6.424-4.008 0-6.015 2.567-6.015 7.636V39.38h-8.291V28.32c0-5.07-2.011-7.637-6.019-7.637-3.624 0-5.434 2.17-5.437 6.424v20.207h-8.334v-20.82q0-6.381 3.294-10.14c2.265-2.499 5.237-3.782 8.925-3.782 4.27 0 7.496 1.624 9.646 4.867l2.076 3.446 2.079-3.446c2.15-3.244 5.377-4.867 9.639-4.867 3.684 0 6.656 1.283 8.929 3.783Q61.5 20.108 61.5 26.494z" />
|
||||
</symbol>
|
||||
|
||||
<!-- Bluesky -->
|
||||
<symbol id="svg-bsky" viewBox="0 0 600 530">
|
||||
<path d="M135.72 44.03C202.216 93.951 273.74 195.17 300 249.49c26.262-54.316 97.782-155.54 164.28-205.46C512.26 8.009 590-19.862 590 68.825c0 17.712-10.155 148.79-16.111 170.07-20.703 73.984-96.144 92.854-163.25 81.433 117.3 19.964 147.14 86.092 82.697 152.22-122.39 125.59-175.91-31.511-189.63-71.766-2.514-7.38-3.69-10.832-3.708-7.896-.017-2.936-1.193.516-3.707 7.896-13.714 40.255-67.233 197.36-189.63 71.766-64.444-66.128-34.605-132.26 82.697-152.22-67.108 11.421-142.55-7.45-163.25-81.433C20.15 217.613 9.997 86.535 9.997 68.825c0-88.687 77.742-60.816 125.72-24.795z" />
|
||||
</symbol>
|
||||
|
||||
<!-- Anilist -->
|
||||
<symbol id="svg-anilist" viewBox="0 0 24 24">
|
||||
<path d="M6.361 2.943 0 21.056h4.942l1.077-3.133H11.4l1.052 3.133H22.9c.71 0 1.1-.392 1.1-1.101V17.53c0-.71-.39-1.101-1.1-1.101h-6.483V4.045c0-.71-.392-1.102-1.101-1.102h-2.422c-.71 0-1.101.392-1.101 1.102v1.064l-.758-2.166zm2.324 5.948 1.688 5.018H7.144z" />
|
||||
</symbol>
|
||||
|
||||
|
||||
<!-- Instagram -->
|
||||
<symbol id="svg-instagram" viewBox="0 0 512 512">
|
||||
<path d="M256 49.471c67.266 0 75.233.257 101.8 1.469 24.562 1.121 37.9 5.224 46.778 8.674a78.05 78.05 0 0 1 28.966 18.845 78.05 78.05 0 0 1 18.845 28.966c3.45 8.877 7.554 22.216 8.674 46.778 1.212 26.565 1.469 34.532 1.469 101.8s-.257 75.233-1.469 101.8c-1.121 24.562-5.225 37.9-8.674 46.778a83.43 83.43 0 0 1-47.811 47.811c-8.877 3.45-22.216 7.554-46.778 8.674-26.56 1.212-34.527 1.469-101.8 1.469s-75.237-.257-101.8-1.469c-24.562-1.121-37.9-5.225-46.778-8.674a78.05 78.05 0 0 1-28.966-18.845 78.05 78.05 0 0 1-18.845-28.966c-3.45-8.877-7.554-22.216-8.674-46.778-1.212-26.564-1.469-34.532-1.469-101.8s.257-75.233 1.469-101.8c1.121-24.562 5.224-37.9 8.674-46.778a78.05 78.05 0 0 1 18.847-28.967 78.05 78.05 0 0 1 28.966-18.845c8.877-3.45 22.216-7.554 46.778-8.674 26.565-1.212 34.532-1.469 101.8-1.469m0-45.391c-68.418 0-77 .29-103.866 1.516-26.815 1.224-45.127 5.482-61.151 11.71a123.5 123.5 0 0 0-44.62 29.057A123.5 123.5 0 0 0 17.3 90.982c-6.223 16.025-10.481 34.337-11.7 61.152C4.369 179 4.079 187.582 4.079 256s.29 77 1.521 103.866c1.224 26.815 5.482 45.127 11.71 61.151a123.5 123.5 0 0 0 29.057 44.62 123.5 123.5 0 0 0 44.62 29.057c16.025 6.228 34.337 10.486 61.151 11.71 26.87 1.226 35.449 1.516 103.866 1.516s77-.29 103.866-1.516c26.815-1.224 45.127-5.482 61.151-11.71a128.82 128.82 0 0 0 73.677-73.677c6.228-16.025 10.486-34.337 11.71-61.151 1.226-26.87 1.516-35.449 1.516-103.866s-.29-77-1.516-103.866c-1.224-26.815-5.482-45.127-11.71-61.151a123.5 123.5 0 0 0-29.057-44.62A123.5 123.5 0 0 0 421.018 17.3c-16.025-6.223-34.337-10.481-61.152-11.7C333 4.369 324.418 4.079 256 4.079Z" />
|
||||
<path d="M256 126.635A129.365 129.365 0 1 0 385.365 256 129.365 129.365 0 0 0 256 126.635m0 213.338A83.973 83.973 0 1 1 339.974 256 83.974 83.974 0 0 1 256 339.973" />
|
||||
<circle cx="390.476" cy="121.524" r="30.23" />
|
||||
</symbol>
|
||||
|
||||
|
||||
<!-- YouTube -->
|
||||
<symbol id="svg-youtube" viewBox="0 0 71.412 50">
|
||||
<path d="M35.705 0S13.354 0 7.765 1.47c-3 .824-5.47 3.295-6.294 6.354C0 13.413 0 25 0 25s0 11.647 1.47 17.176a8.95 8.95 0 0 0 6.296 6.295c5.647 1.53 27.94 1.53 27.94 1.53s22.353 0 27.941-1.471a8.95 8.95 0 0 0 6.295-6.295c1.47-5.589 1.47-17.176 1.47-17.176s.06-11.646-1.47-17.235a8.95 8.95 0 0 0-6.295-6.295C58.059 0 35.705 0 35.705 0m-7.117 14.295L47.176 25 28.588 35.705z" />
|
||||
</symbol>
|
||||
|
||||
|
||||
<!-- TikTok -->
|
||||
<symbol id="svg-tiktok" viewBox="0 0 448 512">
|
||||
<path d="M448 209.9a210.1 210.1 0 0 1 -122.8-39.3V349.4A162.6 162.6 0 1 1 185 188.3V278.2a74.6 74.6 0 1 0 52.2 71.2V0l88 0a121.2 121.2 0 0 0 1.9 22.2h0A122.2 122.2 0 0 0 381 102.4a121.4 121.4 0 0 0 67 20.1z" />
|
||||
</symbol>
|
||||
|
||||
|
||||
<!-- Throne -->
|
||||
<symbol id="svg-throne" viewBox="0 0 597 503">
|
||||
<path d="M422.563 264.121a43.1 43.1 0 0 1-7.98 11.175L314.398 377.979c-4.61 4.724-8.889 11.324-15.49 11.324-6.833 0-11.192-6.954-15.965-11.844l-99.752-102.184a26 26 0 0 1-1.609-1.716c-11.197-12.577-13.349-30.741-5.452-46.226L289.152 5.471c2.193-3.411 5.786-5.336 9.756-5.336 3.969 0 7.542 1.904 9.631 5.106l56.646 111.213 56.647 111.213c5.954 11.656 6.226 25.3.731 36.454M302.334 456.435l-282.2-287.424-.898-.921c-2.089-1.674-4.491-2.532-7.082-2.532-3.781.146-7.103 1.8-9.15 4.52-1.922 2.553-2.486 5.859-1.609 9.375L83.52 462.566c1.963 6.759 5.139 13.037 9.505 18.604.523.711 1.108 1.402 1.672 2.071 9.756 11.322 24.463 17.537 39.714 17.537 5.912 0 11.908-.921 17.716-2.888 42.284-14.021 86.552-21.889 131.677-23.333 3.824-.293 7.626-.523 11.407-.712 3.134-.167 6.038-1.674 7.918-4.122a10.3 10.3 0 0 0 2.005-8.308c-.355-1.737-1.295-3.411-2.778-4.959zm289.511-289.12c0 .009-.01.015-.017.009-3.57-2.435-8.117-2.285-12.873.557a11 11 0 0 0-2.128 1.689L335.133 416.172c-4.032 4.102-4.053 10.547-.041 14.649l42.283 43.317c5.014 5.148 11.449 8.664 18.656 10.192a459 459 0 0 1 56.595 15.778 40 40 0 0 0 13.182 2.218c5.536 0 11.073-1.13 16.358-3.39 9.109-3.725 16.985-9.605 22.772-17.034a55.4 55.4 0 0 0 9.526-18.645l82.145-283.239c.334-1.318.459-2.637.355-3.767 0-3.593-1.915-6.935-5.101-8.945-.008-.005-.018 0-.018.009" />
|
||||
</symbol>
|
||||
|
||||
<!-- Spotify -->
|
||||
<symbol id="svg-spotify" viewBox="0 0 168 168">
|
||||
<path d="M83.996.277C37.747.277.253 37.77.253 84.019c0 46.251 37.494 83.741 83.743 83.741 46.254 0 83.744-37.49 83.744-83.741 0-46.246-37.49-83.738-83.745-83.738zm38.404 120.78a5.217 5.217 0 0 1-7.18 1.73c-19.662-12.01-44.414-14.73-73.564-8.07a5.22 5.22 0 0 1-6.249-3.93 5.213 5.213 0 0 1 3.926-6.25c31.9-7.291 59.263-4.15 81.337 9.34 2.46 1.51 3.24 4.72 1.73 7.18m10.25-22.805c-1.89 3.075-5.91 4.045-8.98 2.155-22.51-13.839-56.823-17.846-83.448-9.764-3.453 1.043-7.1-.903-8.148-4.35a6.54 6.54 0 0 1 4.354-8.143c30.413-9.228 68.222-4.758 94.072 11.127 3.07 1.89 4.04 5.91 2.15 8.976zm.88-23.744c-26.99-16.031-71.52-17.505-97.289-9.684-4.138 1.255-8.514-1.081-9.768-5.219a7.835 7.835 0 0 1 5.221-9.771c29.581-8.98 78.756-7.245 109.83 11.202a7.823 7.823 0 0 1 2.74 10.733c-2.2 3.722-7.02 4.949-10.73 2.739z" />
|
||||
</symbol>
|
||||
|
||||
<!-- Paintbrush -->
|
||||
<symbol id="svg-paintbrush" viewBox="0 0 640 640">
|
||||
<path d="M512.5 74.3 291.1 222c-29.1 19.4-47.6 50.9-50.6 85.3 62.3 12.8 111.4 61.9 124.3 124.3 34.5-3 65.9-21.5 85.3-50.6l147.6-221.5c6.7-10.1 10.3-21.9 10.3-34.1 0-33.9-27.5-61.4-61.4-61.4-12.1 0-24 3.6-34.1 10.3M320 464c0-61.9-50.1-112-112-112S96 402.1 96 464c0 3.9.2 7.8.6 11.6 1.8 17.5-10.2 36.4-27.8 36.4H64c-17.7 0-32 14.3-32 32s14.3 32 32 32h144c61.9 0 112-50.1 112-112" />
|
||||
</symbol>
|
||||
|
||||
|
||||
<!-- Images -->
|
||||
<symbol id="svg-images" viewBox="0 0 640 640">
|
||||
<path d="M128 160C128 124.7 156.7 96 192 96L512 96C547.3 96 576 124.7 576 160L576 416C576 451.3 547.3 480 512 480L192 480C156.7 480 128 451.3 128 416L128 160zM56 192C69.3 192 80 202.7 80 216L80 512C80 520.8 87.2 528 96 528L456 528C469.3 528 480 538.7 480 552C480 565.3 469.3 576 456 576L96 576C60.7 576 32 547.3 32 512L32 216C32 202.7 42.7 192 56 192zM224 224C241.7 224 256 209.7 256 192C256 174.3 241.7 160 224 160C206.3 160 192 174.3 192 192C192 209.7 206.3 224 224 224zM420.5 235.5C416.1 228.4 408.4 224 400 224C391.6 224 383.9 228.4 379.5 235.5L323.2 327.6L298.7 297C294.1 291.3 287.3 288 280 288C272.7 288 265.8 291.3 261.3 297L197.3 377C191.5 384.2 190.4 394.1 194.4 402.4C198.4 410.7 206.8 416 216 416L488 416C496.7 416 504.7 411.3 508.9 403.7C513.1 396.1 513 386.9 508.4 379.4L420.4 235.4z" />
|
||||
</symbol>
|
||||
|
||||
<!-- Palette -->
|
||||
<symbol id="svg-palette" viewBox="0 0 640 640">
|
||||
<path d="M576 320v2.7c-.4 36.5-33.6 61.3-70.1 61.3H408c-26.5 0-48 21.5-48 48 0 3.4.4 6.7 1 9.9 2.1 10.2 6.5 20 10.8 29.9 6.1 13.8 12.1 27.5 12.1 42 0 31.8-21.6 60.7-53.4 62-3.5.1-7 .2-10.6.2-141.4 0-256-114.6-256-256S178.6 64 320 64s256 114.6 256 256m-384 32c0-17.7-14.3-32-32-32s-32 14.3-32 32 14.3 32 32 32 32-14.3 32-32m0-96c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32m160-96c0-17.7-14.3-32-32-32s-32 14.3-32 32 14.3 32 32 32 32-14.3 32-32m96 96c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32" />
|
||||
</symbol>
|
||||
|
||||
</svg>
|
||||
|
||||
|
||||
<script src="./js/background.js" defer></script>
|
||||
</body>
|
||||
|
||||
<!--
|
||||
A different snowfall
|
||||
<script src="assets/js/snowfall.js"></script>
|
||||
-->
|
||||
|
||||
</html>
|
||||
|
|
@ -0,0 +1,146 @@
|
|||
(() => {
|
||||
document.addEventListener("DOMContentLoaded", init);
|
||||
|
||||
async function init() {
|
||||
document.getElementById("currentYear").textContent = new Date().getFullYear();
|
||||
await loadArtists();
|
||||
}
|
||||
|
||||
async function loadArtists() {
|
||||
const loadingEl = document.getElementById("loading");
|
||||
const errorEl = document.getElementById("error");
|
||||
const gridEl = document.getElementById("artistGrid");
|
||||
|
||||
errorEl.style.display = "none";
|
||||
loadingEl.style.display = "block";
|
||||
|
||||
try {
|
||||
const url = `./data/artists.json?v=${Date.now()}`;
|
||||
const res = await fetch(url, {
|
||||
cache: "no-store",
|
||||
headers: { "Accept": "application/json" }
|
||||
});
|
||||
|
||||
if (!res.ok) {
|
||||
throw new Error(`artists.json fetch failed: ${res.status} ${res.statusText}`);
|
||||
}
|
||||
|
||||
const artists = await res.json();
|
||||
|
||||
loadingEl.style.display = "none";
|
||||
|
||||
if (!Array.isArray(artists) || artists.length === 0) {
|
||||
gridEl.innerHTML = '<p class="error">Keine Künstler-Daten verfügbar.</p>';
|
||||
return;
|
||||
}
|
||||
|
||||
const frag = document.createDocumentFragment();
|
||||
for (const artist of artists) {
|
||||
frag.appendChild(createArtistCardNode(artist));
|
||||
}
|
||||
|
||||
gridEl.replaceChildren(frag);
|
||||
|
||||
} catch (err) {
|
||||
console.error("Error loading artists:", err);
|
||||
|
||||
loadingEl.style.display = "none";
|
||||
errorEl.style.display = "block";
|
||||
|
||||
gridEl.textContent = "";
|
||||
}
|
||||
}
|
||||
|
||||
function createArtistCardNode(artist) {
|
||||
const article = document.createElement("article");
|
||||
article.className = "artist-card";
|
||||
|
||||
const inner = document.createElement("div");
|
||||
inner.className = "card-inner";
|
||||
|
||||
const imageContainer = document.createElement("div");
|
||||
imageContainer.className = "image-container";
|
||||
if (artist.orientation) {
|
||||
imageContainer.classList.add(artist.orientation);
|
||||
}
|
||||
|
||||
const img = document.createElement("img");
|
||||
img.className = "artist-image";
|
||||
img.src = artist.image;
|
||||
img.alt = `${artist.role} von ${artist.name}`;
|
||||
img.loading = "lazy";
|
||||
img.decoding = "async";
|
||||
img.dataset.orientation = artist.orientation || 'auto';
|
||||
|
||||
imageContainer.appendChild(img);
|
||||
|
||||
const content = document.createElement("div");
|
||||
content.className = "content";
|
||||
|
||||
const name = document.createElement("h2");
|
||||
name.className = "artist-name";
|
||||
name.textContent = artist.name;
|
||||
|
||||
const role = document.createElement("div");
|
||||
role.className = "artist-role";
|
||||
role.textContent = artist.role;
|
||||
|
||||
const desc = document.createElement("p");
|
||||
desc.className = "artist-description";
|
||||
desc.textContent = artist.description ?? "";
|
||||
|
||||
content.appendChild(name);
|
||||
content.appendChild(role);
|
||||
content.appendChild(desc);
|
||||
|
||||
const links = createSocialLinksNode(artist.links);
|
||||
if (links) content.appendChild(links);
|
||||
|
||||
inner.appendChild(imageContainer);
|
||||
inner.appendChild(content);
|
||||
article.appendChild(inner);
|
||||
|
||||
return article;
|
||||
}
|
||||
|
||||
function createSocialLinksNode(links) {
|
||||
if (!links) return null;
|
||||
|
||||
const wrap = document.createElement("div");
|
||||
wrap.className = "social-links";
|
||||
|
||||
const order = ["vgen", "twitter", "bluesky", "youtube", "twitch", "instagram", "fiverr", "website"];
|
||||
for (const platform of order) {
|
||||
if (!links[platform]) continue;
|
||||
wrap.appendChild(createIconLink(platform, links[platform]));
|
||||
}
|
||||
|
||||
return wrap.childElementCount ? wrap : null;
|
||||
}
|
||||
|
||||
function createIconLink(platform, url) {
|
||||
const a = document.createElement("a");
|
||||
a.href = url;
|
||||
a.className = `social-link ${platform}`;
|
||||
a.target = "_blank";
|
||||
a.rel = "noopener";
|
||||
a.ariaLabel = platform;
|
||||
|
||||
a.innerHTML = getPlatformSvg(platform);
|
||||
return a;
|
||||
}
|
||||
|
||||
function getPlatformSvg(platform) {
|
||||
const svgs = {
|
||||
vgen: `<svg width="20" height="20" viewBox="18.3 34.08 166.6 150" fill="currentColor" aria-hidden="true" focusable="false"><g transform="translate(0 200) scale(.1 -.1)"><path d="m1151 1644c-184-49-336-213-374-403l-13-64-58 72c-31 39-74 82-94 96-136 88-327 36-396-108-75-157-30-265 222-529 220-230 387-330 572-345 234-18 483 152 731 498 99 138 112 173 107 275-4 75-9 93-52 180-39 78-63 111-129 177-121 121-227 167-382 166-44 0-104-7-134-15zm246-157c73-38 115-77 172-162 51-76 75-151 64-196-15-59-203-303-299-388-229-202-400-212-631-35-86 66-236 220-318 328-50 65-60 85-60 118s7 46 33 69c18 16 44 29 58 29 35 0 78-24 98-55 39-60 199-235 265-290 88-74 176-125 217-125 30 0 91 20 106 35 4 4-29 48-73 98-94 108-119 164-119 267 0 152 92 280 233 326 68 22 191 13 254-19z"></path><path d="m1183 1304c-46-23-73-71-73-129 0-46 3-50 79-128 43-45 83-77 89-73 27 17 132 169 132 192 0 34-22 73-64 113-43 41-111 52-163 25z"></path></g></svg>`,
|
||||
twitter: `<svg width="20" height="20" viewBox="0.98 1.48 246.2 200.05" fill="currentColor" aria-hidden="true" focusable="false"><path d="M221.95 51.29c.15 2.17.15 4.34.15 6.53 0 66.73-50.8 143.69-143.69 143.69v-.04c-27.44.04-54.31-7.82-77.41-22.64 3.99.48 8 .72 12.02.73 22.74.02 44.83-7.61 62.72-21.66-21.61-.41-40.56-14.5-47.18-35.07 7.57 1.46 15.37 1.16 22.8-.87-23.56-4.76-40.51-25.46-40.51-49.5v-.64c7.02 3.91 14.88 6.08 22.92 6.32C11.58 63.31 4.74 33.79 18.14 10.71c25.64 31.55 63.47 50.73 104.08 52.76-4.07-17.54 1.49-35.92 14.61-48.25 20.34-19.12 52.33-18.14 71.45 2.19 11.31-2.23 22.15-6.38 32.07-12.26-3.77 11.69-11.66 21.62-22.2 27.93 10.01-1.18 19.79-3.86 29-7.95-6.78 10.16-15.32 19.01-25.2 26.16z"></path></svg>`,
|
||||
bluesky: `<svg width="20" height="20" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true" focusable="false"><path d="M3.468 1.948C5.303 3.325 7.276 6.118 8 7.616c.725-1.498 2.698-4.29 4.532-5.668C13.855.955 16 .186 16 2.632c0 .489-.28 4.105-.444 4.692-.572 2.04-2.653 2.561-4.504 2.246 3.236.551 4.06 2.375 2.281 4.2-3.376 3.464-4.852-.87-5.23-1.98-.07-.204-.103-.3-.103-.218 0-.081-.033.014-.102.218-.379 1.11-1.855 5.444-5.231 1.98-1.778-1.825-.955-3.65 2.28-4.2-1.85.315-3.932-.205-4.503-2.246C.28 6.737 0 3.12 0 2.632 0 .186 2.145.955 3.468 1.948"/></svg>`,
|
||||
youtube: `<svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false"><path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"></path></svg>`,
|
||||
twitch: `<svg width="20" height="20" viewBox="24.27 0 463.45 512" fill="currentColor" aria-hidden="true" focusable="false"><path d="M391.2 103.5H352.5v109.7h38.6zM285 103H246.4V212.8H285zM120.8 0 24.3 91.4V420.6H140.1V512l96.5-91.4h77.3L487.7 256V0zM449.1 237.8l-77.2 73.1H294.6l-67.6 64v-64H140.1V36.6H449.1z"></path></svg>`,
|
||||
instagram: `<svg width="20" height="20" viewBox="0 0 448 512" fill="currentColor" aria-hidden="true" focusable="false"><path d="M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"></path></svg>`,
|
||||
fiverr: `<svg width="20" height="20" viewBox="-2.5 -2 24 24" fill="currentColor" aria-hidden="true" focusable="false"><path d="M16.25 16.25v-10h-10v-.625c0-1.034.841-1.875 1.875-1.875H10V0H8.125A5.632 5.632 0 0 0 2.5 5.625v.625H0V10h2.5v6.25H0V20h8.75v-3.75h-2.5V10h6.285v6.25H10V20h8.75v-3.75h-2.5z"/><circle cx="14.375" cy="1.875" r="1.875"/></svg>`,
|
||||
website: `<svg width="20" height="20" viewBox="0 0 640 640" fill="currentColor" aria-hidden="true" focusable="false"><path d="M415.9 344L225 344C227.9 408.5 242.2 467.9 262.5 511.4C273.9 535.9 286.2 553.2 297.6 563.8C308.8 574.3 316.5 576 320.5 576C324.5 576 332.2 574.3 343.4 563.8C354.8 553.2 367.1 535.8 378.5 511.4C398.8 467.9 413.1 408.5 416 344zM224.9 296L415.8 296C413 231.5 398.7 172.1 378.4 128.6C367 104.2 354.7 86.8 343.3 76.2C332.1 65.7 324.4 64 320.4 64C316.4 64 308.7 65.7 297.5 76.2C286.1 86.8 273.8 104.2 262.4 128.6C242.1 172.1 227.8 231.5 224.9 296zM176.9 296C180.4 210.4 202.5 130.9 234.8 78.7C142.7 111.3 74.9 195.2 65.5 296L176.9 296zM65.5 344C74.9 444.8 142.7 528.7 234.8 561.3C202.5 509.1 180.4 429.6 176.9 344L65.5 344zM463.9 344C460.4 429.6 438.3 509.1 406 561.3C498.1 528.6 565.9 444.8 575.3 344L463.9 344zM575.3 296C565.9 195.2 498.1 111.3 406 78.7C438.3 130.9 460.4 210.4 463.9 296L575.3 296z"/></svg>`
|
||||
}
|
||||
return svgs[platform] || "";
|
||||
}
|
||||
})();
|
||||
Loading…
Reference in New Issue