Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f82c7eb444 | ||
|
|
05db376b89 | ||
|
|
77e9c25353 |
@@ -3,8 +3,9 @@
|
|||||||
The backend seam for the admin panel: the registration gate — the first account
|
The backend seam for the admin panel: the registration gate — the first account
|
||||||
on a fresh install becomes the administrator and closes signup behind itself,
|
on a fresh install becomes the administrator and closes signup behind itself,
|
||||||
and this is how that gets reopened — the default quota, and managing users
|
and this is how that gets reopened — the default quota, and managing users
|
||||||
(search, per-user quota, block, delete). An administrator cannot block or delete
|
(search, per-user quota, block, delete). An administrator can change their own
|
||||||
their own account, so the instance can never lock out its last admin that way.
|
quota but cannot block or delete their own account, so the instance can never
|
||||||
|
lock out its last admin that way.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
@@ -280,12 +281,15 @@ def _user_out(user: User, used_bytes: int, accounts: list[str]) -> AdminUserOut:
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
async def _target(db: AsyncSession, admin: User, user_id: uuid.UUID) -> User:
|
async def _target(
|
||||||
"""The user an admin action is aimed at; never the admin themselves."""
|
db: AsyncSession, admin: User, user_id: uuid.UUID, *, allow_self: bool = False
|
||||||
|
) -> User:
|
||||||
|
"""The user an admin action is aimed at. Blocking and deleting are never
|
||||||
|
allowed on the admin themselves; a quota change is (``allow_self``)."""
|
||||||
user = await db.scalar(select(User).where(User.id == user_id))
|
user = await db.scalar(select(User).where(User.id == user_id))
|
||||||
if user is None:
|
if user is None:
|
||||||
raise_api_error(404, "not_found", "user not found")
|
raise_api_error(404, "not_found", "user not found")
|
||||||
if user.id == admin.id:
|
if user.id == admin.id and not allow_self:
|
||||||
raise_api_error(409, "cannot_modify_self", "you cannot do this to your own account")
|
raise_api_error(409, "cannot_modify_self", "you cannot do this to your own account")
|
||||||
return user
|
return user
|
||||||
|
|
||||||
@@ -303,7 +307,8 @@ async def patch_user(
|
|||||||
user_id: uuid.UUID, body: AdminUserPatch, admin: CurrentAdmin, db: DbSession
|
user_id: uuid.UUID, body: AdminUserPatch, admin: CurrentAdmin, db: DbSession
|
||||||
) -> AdminUserOut:
|
) -> AdminUserOut:
|
||||||
"""Change a user's quota and/or block or unblock them."""
|
"""Change a user's quota and/or block or unblock them."""
|
||||||
user = await _target(db, admin, user_id)
|
# Your own quota is fine to change; blocking yourself is not.
|
||||||
|
user = await _target(db, admin, user_id, allow_self=body.blocked is None)
|
||||||
if body.quota_bytes is not None:
|
if body.quota_bytes is not None:
|
||||||
user.quota_bytes = body.quota_bytes
|
user.quota_bytes = body.quota_bytes
|
||||||
if body.blocked is not None:
|
if body.blocked is not None:
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 5.9 KiB After Width: | Height: | Size: 5.5 KiB |
@@ -168,6 +168,20 @@ async def test_admin_cannot_block_or_delete_themselves(world: World) -> None:
|
|||||||
assert (await c.delete(f"/api/admin/users/{admin.id}")).status_code == 409
|
assert (await c.delete(f"/api/admin/users/{admin.id}")).status_code == 409
|
||||||
|
|
||||||
|
|
||||||
|
async def test_admin_can_change_their_own_quota(world: World) -> None:
|
||||||
|
admin = await world.user(admin=True)
|
||||||
|
async with await world.client(admin) as c:
|
||||||
|
resp = await c.patch(f"/api/admin/users/{admin.id}", json={"quota_bytes": 5 * 2**30})
|
||||||
|
assert resp.status_code == 200
|
||||||
|
assert resp.json()["quota_bytes"] == 5 * 2**30
|
||||||
|
# Quota together with a block is still refused: the block is the problem.
|
||||||
|
assert (
|
||||||
|
await c.patch(
|
||||||
|
f"/api/admin/users/{admin.id}", json={"quota_bytes": 2**30, "blocked": True}
|
||||||
|
)
|
||||||
|
).status_code == 409
|
||||||
|
|
||||||
|
|
||||||
async def test_delete_removes_the_user_and_their_data(world: World, bus: _Bus) -> None:
|
async def test_delete_removes_the_user_and_their_data(world: World, bus: _Bus) -> None:
|
||||||
admin = await world.user(admin=True)
|
admin = await world.user(admin=True)
|
||||||
target = await world.user()
|
target = await world.user()
|
||||||
|
|||||||
@@ -26,11 +26,11 @@
|
|||||||
inkscape:document-units="mm"
|
inkscape:document-units="mm"
|
||||||
inkscape:zoom="2.5488772"
|
inkscape:zoom="2.5488772"
|
||||||
inkscape:cx="89.451151"
|
inkscape:cx="89.451151"
|
||||||
inkscape:cy="-10.20057"
|
inkscape:cy="-10.004405"
|
||||||
inkscape:window-width="2560"
|
inkscape:window-width="2560"
|
||||||
inkscape:window-height="1403"
|
inkscape:window-height="1376"
|
||||||
inkscape:window-x="0"
|
inkscape:window-x="2560"
|
||||||
inkscape:window-y="0"
|
inkscape:window-y="27"
|
||||||
inkscape:window-maximized="1"
|
inkscape:window-maximized="1"
|
||||||
inkscape:current-layer="svg1" /><defs
|
inkscape:current-layer="svg1" /><defs
|
||||||
id="defs1"><linearGradient
|
id="defs1"><linearGradient
|
||||||
@@ -84,61 +84,61 @@
|
|||||||
style="fill:url(#linearGradient1789);fill-opacity:1;stroke-width:0.2;stroke-linecap:round"
|
style="fill:url(#linearGradient1789);fill-opacity:1;stroke-width:0.2;stroke-linecap:round"
|
||||||
d="m 18.20332,107.02297 c 0,0 1.930731,1.59986 4.989281,4.12846 1.725315,1.42637 3.809507,3.14827 6.108453,5.04523 5.657506,4.74616 33.20207,27.48506 33.558689,27.18811 0.241178,-0.20083 -16.275384,9.86387 -16.275384,9.86387 L 17.979141,140.69463 Z"
|
d="m 18.20332,107.02297 c 0,0 1.930731,1.59986 4.989281,4.12846 1.725315,1.42637 3.809507,3.14827 6.108453,5.04523 5.657506,4.74616 33.20207,27.48506 33.558689,27.18811 0.241178,-0.20083 -16.275384,9.86387 -16.275384,9.86387 L 17.979141,140.69463 Z"
|
||||||
id="path1776-1"
|
id="path1776-1"
|
||||||
sodipodi:nodetypes="cccsccc" /></mask><linearGradient
|
sodipodi:nodetypes="cccsccc" /></mask><radialGradient
|
||||||
inkscape:collect="always"
|
inkscape:collect="always"
|
||||||
xlink:href="#linearGradient11"
|
xlink:href="#linearGradient8-5"
|
||||||
id="linearGradient13-6"
|
id="radialGradient816-3"
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
gradientTransform="matrix(0.75684298,0,0,0.80151105,-18.692802,-93.278335)"
|
|
||||||
x1="54.340946"
|
|
||||||
y1="122.84999"
|
|
||||||
x2="54.340946"
|
|
||||||
y2="162.66415" /><radialGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient8"
|
|
||||||
id="radialGradient816"
|
|
||||||
cx="8.0343275"
|
cx="8.0343275"
|
||||||
cy="13.452971"
|
cy="13.452971"
|
||||||
fx="8.0343275"
|
fx="8.0343275"
|
||||||
fy="13.452971"
|
fy="13.452971"
|
||||||
r="16.678839"
|
r="16.678839"
|
||||||
gradientTransform="matrix(-0.29271702,0.00410386,-0.01334442,-0.95181978,11.840139,23.950941)"
|
gradientTransform="matrix(-0.29273442,-0.00257918,0.01127876,-1.2801289,10.212159,-15.400302)"
|
||||||
gradientUnits="userSpaceOnUse" /><linearGradient
|
gradientUnits="userSpaceOnUse" /><linearGradient
|
||||||
id="linearGradient8"
|
id="linearGradient8-5"
|
||||||
inkscape:collect="always"><stop
|
inkscape:collect="always"><stop
|
||||||
style="stop-color:#fa7367;stop-opacity:1;"
|
style="stop-color:#fa4435;stop-opacity:1;"
|
||||||
offset="0"
|
offset="0"
|
||||||
id="stop8" /><stop
|
id="stop8-6" /><stop
|
||||||
style="stop-color:#fa7367;stop-opacity:0;"
|
style="stop-color:#fa7367;stop-opacity:0;"
|
||||||
offset="1"
|
offset="1"
|
||||||
id="stop9" /></linearGradient><radialGradient
|
id="stop9-2" /></linearGradient><radialGradient
|
||||||
inkscape:collect="always"
|
inkscape:collect="always"
|
||||||
xlink:href="#linearGradient6"
|
xlink:href="#linearGradient6-1"
|
||||||
id="radialGradient815"
|
id="radialGradient815-9"
|
||||||
cx="35.709007"
|
cx="34.523952"
|
||||||
cy="12.042645"
|
cy="11.253304"
|
||||||
fx="35.709007"
|
fx="34.523952"
|
||||||
fy="12.042645"
|
fy="11.253304"
|
||||||
r="16.740065"
|
r="16.740065"
|
||||||
gradientTransform="matrix(0.25712152,0.00260463,-0.00969379,0.95694375,26.644192,0.97301292)"
|
gradientTransform="matrix(0.27572675,-0.00557307,0.0193391,0.95679742,24.457243,-42.568342)"
|
||||||
gradientUnits="userSpaceOnUse" /><linearGradient
|
gradientUnits="userSpaceOnUse" /><linearGradient
|
||||||
id="linearGradient6"
|
id="linearGradient6-1"
|
||||||
inkscape:collect="always"><stop
|
inkscape:collect="always"><stop
|
||||||
style="stop-color:#fab23b;stop-opacity:1;"
|
style="stop-color:#fadc56;stop-opacity:1;"
|
||||||
offset="0"
|
offset="0"
|
||||||
id="stop6" /><stop
|
id="stop6-2" /><stop
|
||||||
style="stop-color:#fab23a;stop-opacity:0;"
|
style="stop-color:#faae3a;stop-opacity:0;"
|
||||||
offset="1"
|
offset="1"
|
||||||
id="stop7" /></linearGradient></defs><g
|
id="stop7-7" /></linearGradient><linearGradient
|
||||||
id="g816"
|
inkscape:collect="always"
|
||||||
transform="translate(0.128676,-0.079965)"><path
|
xlink:href="#linearGradient11"
|
||||||
id="path1-2-1-1"
|
id="linearGradient1"
|
||||||
style="baseline-shift:baseline;display:inline;overflow:visible;vector-effect:none;fill:url(#linearGradient13-6);fill-opacity:1;stroke-width:0.778856;stroke-linecap:round;enable-background:accumulate;stop-color:#000000"
|
gradientUnits="userSpaceOnUse"
|
||||||
d="m 37.175189,4.174075 c -2.15234,-7.4e-4 -4.0678,1.84724 -4.0671,4.1266 v 2.85212 c -0.073,-0.005 -0.14656,-0.007 -0.2202,-0.007 h -10.50012 -10.49855 c -0.0418,-7e-5 -0.0835,5.9e-4 -0.12516,0.002 v -2.78918 c -1.6e-4,-2.27807 -1.9592601,-4.12477 -4.1103801,-4.12494 -2.15111,1.8e-4 -4.20874,1.84687 -4.2089,4.12494 v 15.55127 c -4e-5,0.005 -0.0295,3.84339 2.173,7.60498 2.20396,3.76402 7.0382001,7.38257 14.4526701,7.38257 h 4.58067 c 7.4177,0 12.26918,-3.66617 14.50586,-7.44221 2.23668,-3.77604 2.27039,-7.63481 2.27039,-7.63481 l 0.002,-0.0344 V 8.300605 c 7e-4,-2.27872 -2.10202,-4.12642 -4.25374,-4.1266 z m -2.00792,7.9252 v 11.59858 0.0286 c 0,0 -0.0664,2.0824 -1.31139,4.18416 -0.57202,0.96572 -1.44541,2.15762 -2.91767,2.99793 -1.47227,0.8403 -3.46066,1.33079 -6.27223,1.33079 h -4.58106 c -2.82381,0 -4.79864,-0.47938 -6.25697,-1.30429 -1.45833,-0.8249 -2.31357,-2.00343 -2.85901,-2.93496 -1.1966401,-2.04365 -1.2300401,-4.07193 -1.2300401,-4.07193 l -0.001,-0.0141 v -0.0157 -11.69637 l 1.96e-4,-0.0142 0.0035,-0.008 c 0.05128,0.0487 0.18806,0.16304 0.24192,0.20765 l 5.4247011,4.54513 5.51504,4.57144 c 0.65194,0.53945 2.27903,0.53945 2.93097,0 l 5.51504,-4.57144 5.487378,-4.57351 c 0.0199,-0.0164 0.04083,-0.0331 0.06003,-0.048 l 0.02765,-0.0215 z"
|
gradientTransform="matrix(0.75684298,0,0,0.80151105,-19.989667,-137.1)"
|
||||||
|
x1="54.340946"
|
||||||
|
y1="122.84999"
|
||||||
|
x2="54.340946"
|
||||||
|
y2="162.66415" /></defs><g
|
||||||
|
id="g1"
|
||||||
|
transform="translate(1.425541,43.741704)"><path
|
||||||
|
id="path1-2-1"
|
||||||
|
style="baseline-shift:baseline;display:inline;overflow:visible;vector-effect:none;fill:url(#linearGradient1);fill-opacity:1;stroke-width:0.778856;stroke-linecap:round;enable-background:accumulate;stop-color:#000000"
|
||||||
|
d="m 35.878324,-39.647594 c -2.15234,-7.4e-4 -4.0678,1.84724 -4.0671,4.1266 v 2.85212 c -0.073,-0.005 -0.14656,-0.007 -0.2202,-0.007 h -10.50012 -10.49855 c -0.0418,-7e-5 -0.0835,5.9e-4 -0.12516,0.002 v -2.78918 c -1.6e-4,-2.27807 -1.9592603,-4.12477 -4.1103803,-4.12494 -2.15111,1.8e-4 -4.20874,1.84687 -4.2089,4.12494 v 15.55127 c -4e-5,0.005 -0.0295,3.84339 2.173,7.60498 2.20396,3.7640196 7.0382003,7.3825696 14.4526703,7.3825696 h 4.58067 c 7.4177,0 12.26918,-3.66617 14.50586,-7.4422096 2.23668,-3.77604 2.27039,-7.63481 2.27039,-7.63481 l 0.002,-0.0344 v -15.48541 c 7e-4,-2.27872 -2.10202,-4.12642 -4.25374,-4.1266 z m -2.00792,7.9252 v 11.59858 0.0286 c 0,0 -0.0664,2.0824 -1.31139,4.18416 -0.57202,0.96572 -1.44541,2.15762 -2.91767,2.99793 -1.47227,0.8403 -3.46066,1.33079 -6.27223,1.33079 h -4.58106 c -2.82381,0 -4.79864,-0.47938 -6.25697,-1.30429 -1.45833,-0.8249 -2.31357,-2.00343 -2.8590102,-2.93496 -1.1966401,-2.04365 -1.2300401,-4.07193 -1.2300401,-4.07193 l -10e-4,-0.0141 v -0.0157 -11.69637 l 1.96e-4,-0.0142 0.0035,-0.008 c 0.05128,0.0487 0.18806,0.16304 0.24192,0.20765 l 5.4247013,4.54513 5.51504,4.57144 c 0.65194,0.53945 2.27903,0.53945 2.93097,0 l 5.51504,-4.57144 5.487378,-4.57351 c 0.0199,-0.0164 0.04083,-0.0331 0.06003,-0.048 l 0.02765,-0.0215 z"
|
||||||
sodipodi:nodetypes="cccccccccccssssccccccccssssssccccccccccccscc" /><path
|
sodipodi:nodetypes="cccccccccccssssccccccccssssssccccccccccccscc" /><path
|
||||||
id="path1-2-1-9"
|
id="path1-2-1-9-9"
|
||||||
style="baseline-shift:baseline;display:inline;overflow:visible;vector-effect:none;fill:url(#radialGradient816);fill-opacity:1;stroke-width:0.778856;stroke-linecap:round;enable-background:accumulate;stop-color:#000000"
|
style="baseline-shift:baseline;display:inline;overflow:visible;vector-effect:none;fill:url(#radialGradient816-3);fill-opacity:1;stroke-width:0.778856;stroke-linecap:round;enable-background:accumulate;stop-color:#000000"
|
||||||
d="M 3.6452555,7.14375 C 3.5159759,7.5278714 3.4447807,7.9357538 3.444751,8.3586629 V 23.909652 c -4e-5,0.005 -0.029506,3.84363 2.172994,7.60522 2.20396,3.76402 7.038395,7.382495 14.452865,7.382495 h 4.580598 c 5.433936,0 9.490679,-1.96731 12.151197,-4.504117 -1.517177,-1.218257 -3.218664,-2.595334 -5.013648,-4.05505 -0.258984,0.201994 -0.541601,0.394146 -0.850594,0.570508 -1.47227,0.8403 -3.460398,1.330668 -6.271968,1.330668 h -4.581116 c -2.82381,0 -4.798652,-0.479403 -6.256982,-1.304313 -1.45833,-0.8249 -2.313817,-2.003692 -2.859257,-2.935222 -1.1966406,-2.04365 -1.2298996,-4.071586 -1.2298996,-4.071586 l -0.00103,-0.01395 v -0.01602 -11.696444 -0.01395 l 0.00362,-0.0083 c 0.05128,0.0487 0.1879857,0.16313 0.2418457,0.20774 l 5.4249919,4.545459 5.514909,4.571297 c 0.0844,0.06984 0.185312,0.130661 0.298173,0.182418 C 16.15064,17.512631 11.679239,13.804108 9.750826,12.186336 7.4531167,10.290397 5.3700283,8.5696704 3.6452555,7.14375 Z" /><path
|
d="m 2.3483903,-36.677919 c -0.1292796,0.384121 -0.2004748,0.792004 -0.2005045,1.214913 v 15.550989 c -4e-5,0.005 -0.029506,3.84363 2.172994,7.60522 2.20396,3.7640196 7.0383952,7.3824946 14.4528652,7.3824946 h 4.580598 c 5.433936,0 9.490679,-1.96731 12.151197,-4.504117 -1.517177,-1.2182566 -3.218664,-2.5953336 -5.013648,-4.0550496 -0.258984,0.201994 -0.541601,0.394146 -0.850594,0.570508 -1.47227,0.8403 -3.460398,1.330668 -6.271968,1.330668 h -4.581116 c -2.82381,0 -4.798652,-0.479403 -6.256982,-1.304313 -1.45833,-0.8249 -2.313817,-2.003692 -2.8592572,-2.935222 -1.1966406,-2.04365 -1.2298996,-4.071586 -1.2298996,-4.071586 l -0.00103,-0.01395 v -0.01602 -11.696444 -0.01395 l 0.00362,-0.0083 c 0.05128,0.0487 0.1879857,0.16313 0.2418457,0.20774 l 5.4249921,4.545459 5.514909,4.571297 c 0.0844,0.06984 0.185312,0.130661 0.298173,0.182418 -5.07081,-4.173874 -9.542211,-7.882397 -11.4706242,-9.500169 -2.2977093,-1.895939 -4.3807977,-3.616666 -6.1055705,-5.042586 z" /><path
|
||||||
id="path1-2-1-7"
|
id="path1-2-1-7-3"
|
||||||
style="baseline-shift:baseline;display:inline;overflow:visible;vector-effect:none;fill:url(#radialGradient815);fill-opacity:1;stroke-width:0.778856;stroke-linecap:round;enable-background:accumulate;stop-color:#000000"
|
style="baseline-shift:baseline;display:inline;overflow:visible;vector-effect:none;fill:url(#radialGradient815-9);fill-opacity:1;stroke-width:0.778856;stroke-linecap:round;enable-background:accumulate;stop-color:#000000"
|
||||||
d="m 41.226941,7.09104 c -1.718284,1.4205409 -3.7895,3.131915 -6.072498,5.015715 -1.93499,1.62329 -6.430112,5.351263 -11.522294,9.54257 0.08232,-0.04302 0.156783,-0.0915 0.221692,-0.145211 l 5.514909,-4.571297 5.48752,-4.573881 c 0.0199,-0.0164 0.04075,-0.03316 0.05994,-0.04806 l 0.0279,-0.02119 0.222726,-0.190169 v 11.598258 0.02894 c 0,0 -0.06656,2.081964 -1.311548,4.183724 -0.57202,0.96572 -1.445392,2.157957 -2.917652,2.998267 -1.47227,0.8403 -3.460398,1.330668 -6.271968,1.330668 h -4.581116 c -2.82381,0 -4.798652,-0.479403 -6.256982,-1.304313 -0.308682,-0.174605 -0.590588,-0.364744 -0.848011,-0.565341 -1.805553,1.467965 -3.513225,2.849693 -5.0307002,4.067452 2.6425302,2.518552 6.6894502,4.460193 12.1212242,4.460193 h 4.580599 c 7.4177,0 12.269411,-3.665883 14.506091,-7.441923 2.23668,-3.77604 2.270146,-7.635193 2.270146,-7.635193 l 0.0021,-0.03411 V 8.3007853 C 41.429125,7.8798785 41.357396,7.4736084 41.226941,7.09104 Z" /></g></svg>
|
d="m 39.930076,-36.730629 c -1.718284,1.420541 -3.7895,3.131915 -6.072498,5.015715 -1.93499,1.62329 -6.430112,5.351263 -11.522294,9.54257 0.08232,-0.04302 0.156783,-0.0915 0.221692,-0.145211 l 5.514909,-4.571297 5.48752,-4.573881 c 0.0199,-0.0164 0.04075,-0.03316 0.05994,-0.04806 l 0.0279,-0.02119 0.222726,-0.190169 v 11.598258 0.02894 c 0,0 -0.06656,2.081964 -1.311548,4.183724 -0.57202,0.96572 -1.445392,2.157957 -2.917652,2.998267 -1.47227,0.8403 -3.460398,1.330668 -6.271968,1.330668 h -4.581116 c -2.82381,0 -4.798652,-0.479403 -6.256982,-1.304313 -0.308682,-0.174605 -0.590588,-0.364744 -0.848011,-0.565341 -1.8055532,1.467965 -3.5132252,2.849693 -5.0307004,4.0674516 2.6425302,2.518552 6.6894504,4.460193 12.1212244,4.460193 h 4.580599 c 7.4177,0 12.269411,-3.665883 14.506091,-7.4419226 2.23668,-3.77604 2.270146,-7.635193 2.270146,-7.635193 l 0.0021,-0.03411 v -15.485354 c 1.06e-4,-0.420906 -0.07162,-0.827177 -0.202078,-1.209745 z" /></g></svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 9.0 KiB After Width: | Height: | Size: 9.1 KiB |
@@ -24,19 +24,19 @@
|
|||||||
inkscape:pagecheckerboard="0"
|
inkscape:pagecheckerboard="0"
|
||||||
inkscape:deskcolor="#d1d1d1"
|
inkscape:deskcolor="#d1d1d1"
|
||||||
inkscape:document-units="mm"
|
inkscape:document-units="mm"
|
||||||
inkscape:zoom="1.9327415"
|
inkscape:zoom="0.96637075"
|
||||||
inkscape:cx="187.29872"
|
inkscape:cx="84.853562"
|
||||||
inkscape:cy="135.81744"
|
inkscape:cy="115.89755"
|
||||||
inkscape:window-width="2560"
|
inkscape:window-width="2560"
|
||||||
inkscape:window-height="1376"
|
inkscape:window-height="1403"
|
||||||
inkscape:window-x="2560"
|
inkscape:window-x="0"
|
||||||
inkscape:window-y="27"
|
inkscape:window-y="0"
|
||||||
inkscape:window-maximized="1"
|
inkscape:window-maximized="1"
|
||||||
inkscape:current-layer="svg1" /><defs
|
inkscape:current-layer="svg1" /><defs
|
||||||
id="defs1"><linearGradient
|
id="defs1"><linearGradient
|
||||||
id="linearGradient8"
|
id="linearGradient8"
|
||||||
inkscape:collect="always"><stop
|
inkscape:collect="always"><stop
|
||||||
style="stop-color:#fa7367;stop-opacity:1;"
|
style="stop-color:#fa4435;stop-opacity:1;"
|
||||||
offset="0"
|
offset="0"
|
||||||
id="stop8" /><stop
|
id="stop8" /><stop
|
||||||
style="stop-color:#fa7367;stop-opacity:0;"
|
style="stop-color:#fa7367;stop-opacity:0;"
|
||||||
@@ -44,10 +44,10 @@
|
|||||||
id="stop9" /></linearGradient><linearGradient
|
id="stop9" /></linearGradient><linearGradient
|
||||||
id="linearGradient6"
|
id="linearGradient6"
|
||||||
inkscape:collect="always"><stop
|
inkscape:collect="always"><stop
|
||||||
style="stop-color:#fab23b;stop-opacity:1;"
|
style="stop-color:#fadc56;stop-opacity:1;"
|
||||||
offset="0"
|
offset="0"
|
||||||
id="stop6" /><stop
|
id="stop6" /><stop
|
||||||
style="stop-color:#fab23a;stop-opacity:0;"
|
style="stop-color:#faae3a;stop-opacity:0;"
|
||||||
offset="1"
|
offset="1"
|
||||||
id="stop7" /></linearGradient><linearGradient
|
id="stop7" /></linearGradient><linearGradient
|
||||||
id="linearGradient11"><stop
|
id="linearGradient11"><stop
|
||||||
@@ -105,12 +105,12 @@
|
|||||||
inkscape:collect="always"
|
inkscape:collect="always"
|
||||||
xlink:href="#linearGradient6"
|
xlink:href="#linearGradient6"
|
||||||
id="radialGradient815"
|
id="radialGradient815"
|
||||||
cx="35.709007"
|
cx="34.523952"
|
||||||
cy="12.042645"
|
cy="11.253304"
|
||||||
fx="35.709007"
|
fx="34.523952"
|
||||||
fy="12.042645"
|
fy="11.253304"
|
||||||
r="16.740065"
|
r="16.740065"
|
||||||
gradientTransform="matrix(0.25712152,0.00260463,-0.00969379,0.95694375,26.644192,0.97301292)"
|
gradientTransform="matrix(0.27572675,-0.00557307,0.0193391,0.95679742,25.754108,1.2533273)"
|
||||||
gradientUnits="userSpaceOnUse" /><radialGradient
|
gradientUnits="userSpaceOnUse" /><radialGradient
|
||||||
inkscape:collect="always"
|
inkscape:collect="always"
|
||||||
xlink:href="#linearGradient8"
|
xlink:href="#linearGradient8"
|
||||||
@@ -120,19 +120,18 @@
|
|||||||
fx="8.0343275"
|
fx="8.0343275"
|
||||||
fy="13.452971"
|
fy="13.452971"
|
||||||
r="16.678839"
|
r="16.678839"
|
||||||
gradientTransform="matrix(-0.29271702,0.00410386,-0.01334442,-0.95181978,11.840139,23.950941)"
|
gradientTransform="matrix(-0.29273442,-0.00257918,0.01127876,-1.2801289,11.509024,28.421367)"
|
||||||
gradientUnits="userSpaceOnUse" /></defs><g
|
gradientUnits="userSpaceOnUse" /></defs><path
|
||||||
id="g816"><path
|
|
||||||
id="path1-2-1"
|
id="path1-2-1"
|
||||||
style="baseline-shift:baseline;display:inline;overflow:visible;vector-effect:none;fill:url(#linearGradient13);fill-opacity:1;stroke-width:0.778856;stroke-linecap:round;enable-background:accumulate;stop-color:#000000"
|
style="baseline-shift:baseline;display:inline;overflow:visible;vector-effect:none;fill:url(#linearGradient13);fill-opacity:1;stroke-width:0.778856;stroke-linecap:round;enable-background:accumulate;stop-color:#000000"
|
||||||
d="m 37.175189,4.174075 c -2.15234,-7.4e-4 -4.0678,1.84724 -4.0671,4.1266 v 2.85212 c -0.073,-0.005 -0.14656,-0.007 -0.2202,-0.007 h -10.50012 -10.49855 c -0.0418,-7e-5 -0.0835,5.9e-4 -0.12516,0.002 v -2.78918 c -1.6e-4,-2.27807 -1.9592601,-4.12477 -4.1103801,-4.12494 -2.15111,1.8e-4 -4.20874,1.84687 -4.2089,4.12494 v 15.55127 c -4e-5,0.005 -0.0295,3.84339 2.173,7.60498 2.20396,3.76402 7.0382001,7.38257 14.4526701,7.38257 h 4.58067 c 7.4177,0 12.26918,-3.66617 14.50586,-7.44221 2.23668,-3.77604 2.27039,-7.63481 2.27039,-7.63481 l 0.002,-0.0344 V 8.300605 c 7e-4,-2.27872 -2.10202,-4.12642 -4.25374,-4.1266 z m -2.00792,7.9252 v 11.59858 0.0286 c 0,0 -0.0664,2.0824 -1.31139,4.18416 -0.57202,0.96572 -1.44541,2.15762 -2.91767,2.99793 -1.47227,0.8403 -3.46066,1.33079 -6.27223,1.33079 h -4.58106 c -2.82381,0 -4.79864,-0.47938 -6.25697,-1.30429 -1.45833,-0.8249 -2.31357,-2.00343 -2.85901,-2.93496 -1.1966401,-2.04365 -1.2300401,-4.07193 -1.2300401,-4.07193 l -0.001,-0.0141 v -0.0157 -11.69637 l 1.96e-4,-0.0142 0.0035,-0.008 c 0.05128,0.0487 0.18806,0.16304 0.24192,0.20765 l 5.4247011,4.54513 5.51504,4.57144 c 0.65194,0.53945 2.27903,0.53945 2.93097,0 l 5.51504,-4.57144 5.487378,-4.57351 c 0.0199,-0.0164 0.04083,-0.0331 0.06003,-0.048 l 0.02765,-0.0215 z"
|
d="m 37.175189,4.174075 c -2.15234,-7.4e-4 -4.0678,1.84724 -4.0671,4.1266 v 2.85212 c -0.073,-0.005 -0.14656,-0.007 -0.2202,-0.007 h -10.50012 -10.49855 c -0.0418,-7e-5 -0.0835,5.9e-4 -0.12516,0.002 v -2.78918 c -1.6e-4,-2.27807 -1.9592601,-4.12477 -4.1103801,-4.12494 -2.15111,1.8e-4 -4.20874,1.84687 -4.2089,4.12494 v 15.55127 c -4e-5,0.005 -0.0295,3.84339 2.173,7.60498 2.20396,3.76402 7.0382001,7.38257 14.4526701,7.38257 h 4.58067 c 7.4177,0 12.26918,-3.66617 14.50586,-7.44221 2.23668,-3.77604 2.27039,-7.63481 2.27039,-7.63481 l 0.002,-0.0344 V 8.300605 c 7e-4,-2.27872 -2.10202,-4.12642 -4.25374,-4.1266 z m -2.00792,7.9252 v 11.59858 0.0286 c 0,0 -0.0664,2.0824 -1.31139,4.18416 -0.57202,0.96572 -1.44541,2.15762 -2.91767,2.99793 -1.47227,0.8403 -3.46066,1.33079 -6.27223,1.33079 h -4.58106 c -2.82381,0 -4.79864,-0.47938 -6.25697,-1.30429 -1.45833,-0.8249 -2.31357,-2.00343 -2.85901,-2.93496 -1.1966401,-2.04365 -1.2300401,-4.07193 -1.2300401,-4.07193 l -0.001,-0.0141 v -0.0157 -11.69637 l 1.96e-4,-0.0142 0.0035,-0.008 c 0.05128,0.0487 0.18806,0.16304 0.24192,0.20765 l 5.4247011,4.54513 5.51504,4.57144 c 0.65194,0.53945 2.27903,0.53945 2.93097,0 l 5.51504,-4.57144 5.487378,-4.57351 c 0.0199,-0.0164 0.04083,-0.0331 0.06003,-0.048 l 0.02765,-0.0215 z"
|
||||||
sodipodi:nodetypes="cccccccccccssssccccccccssssssccccccccccccscc" /><path
|
sodipodi:nodetypes="cccccccccccssssccccccccssssssccccccccccccscc" /><path
|
||||||
id="path1-2-1-9"
|
id="path1-2-1-9"
|
||||||
style="baseline-shift:baseline;display:inline;overflow:visible;vector-effect:none;fill:url(#radialGradient816);fill-opacity:1;stroke-width:0.778856;stroke-linecap:round;enable-background:accumulate;stop-color:#000000"
|
style="baseline-shift:baseline;display:inline;overflow:visible;vector-effect:none;fill:url(#radialGradient816);fill-opacity:1;stroke-width:0.778856;stroke-linecap:round;enable-background:accumulate;stop-color:#000000"
|
||||||
d="M 3.6452555 7.14375 C 3.5159759 7.5278714 3.4447807 7.9357538 3.444751 8.3586629 L 3.444751 23.909652 C 3.444711 23.914652 3.4152451 27.753282 5.617745 31.514872 C 7.821705 35.278892 12.65614 38.897367 20.07061 38.897367 L 24.651208 38.897367 C 30.085144 38.897367 34.141887 36.930057 36.802405 34.39325 C 35.285228 33.174993 33.583741 31.797916 31.788757 30.3382 C 31.529773 30.540194 31.247156 30.732346 30.938163 30.908708 C 29.465893 31.749008 27.477765 32.239376 24.666195 32.239376 L 20.085079 32.239376 C 17.261269 32.239376 15.286427 31.759973 13.828097 30.935063 C 12.369767 30.110163 11.51428 28.931371 10.96884 27.999841 C 9.7721994 25.956191 9.7389404 23.928255 9.7389404 23.928255 L 9.7379069 23.914303 L 9.7379069 23.898283 L 9.7379069 12.201839 L 9.7379069 12.187887 L 9.7415243 12.179618 C 9.7928043 12.228318 9.92951 12.342748 9.98337 12.387358 L 15.408362 16.932817 L 20.923271 21.504114 C 21.007674 21.573954 21.108583 21.634775 21.221444 21.686532 C 16.15064 17.512631 11.679239 13.804108 9.750826 12.186336 C 7.4531167 10.290397 5.3700283 8.5696704 3.6452555 7.14375 z " /><path
|
d="M 3.6452555,7.14375 C 3.5159759,7.5278714 3.4447807,7.9357538 3.444751,8.3586629 V 23.909652 c -4e-5,0.005 -0.029506,3.84363 2.172994,7.60522 2.20396,3.76402 7.038395,7.382495 14.452865,7.382495 h 4.580598 c 5.433936,0 9.490679,-1.96731 12.151197,-4.504117 -1.517177,-1.218257 -3.218664,-2.595334 -5.013648,-4.05505 -0.258984,0.201994 -0.541601,0.394146 -0.850594,0.570508 -1.47227,0.8403 -3.460398,1.330668 -6.271968,1.330668 h -4.581116 c -2.82381,0 -4.798652,-0.479403 -6.256982,-1.304313 -1.45833,-0.8249 -2.313817,-2.003692 -2.859257,-2.935222 -1.1966406,-2.04365 -1.2298996,-4.071586 -1.2298996,-4.071586 l -0.00103,-0.01395 v -0.01602 -11.696444 -0.01395 l 0.00362,-0.0083 c 0.05128,0.0487 0.1879857,0.16313 0.2418457,0.20774 l 5.4249919,4.545459 5.514909,4.571297 c 0.0844,0.06984 0.185312,0.130661 0.298173,0.182418 C 16.15064,17.512631 11.679239,13.804108 9.750826,12.186336 7.4531167,10.290397 5.3700283,8.5696704 3.6452555,7.14375 Z" /><path
|
||||||
id="path1-2-1-7"
|
id="path1-2-1-7"
|
||||||
style="baseline-shift:baseline;display:inline;overflow:visible;vector-effect:none;fill:url(#radialGradient815);fill-opacity:1;stroke-width:0.778856;stroke-linecap:round;enable-background:accumulate;stop-color:#000000"
|
style="baseline-shift:baseline;display:inline;overflow:visible;vector-effect:none;fill:url(#radialGradient815);fill-opacity:1;stroke-width:0.778856;stroke-linecap:round;enable-background:accumulate;stop-color:#000000"
|
||||||
d="M 41.226941 7.09104 C 39.508657 8.5115809 37.437441 10.222955 35.154443 12.106755 C 33.219453 13.730045 28.724331 17.458018 23.632149 21.649325 C 23.714466 21.60631 23.788932 21.557823 23.853841 21.504114 L 29.36875 16.932817 L 34.85627 12.358936 C 34.87617 12.342536 34.897015 12.325776 34.916215 12.310876 L 34.94412 12.289689 L 35.166846 12.09952 L 35.166846 23.697778 L 35.166846 23.726717 C 35.166846 23.726717 35.100288 25.808681 33.855298 27.910441 C 33.283278 28.876161 32.409906 30.068398 30.937646 30.908708 C 29.465376 31.749008 27.477248 32.239376 24.665678 32.239376 L 20.084562 32.239376 C 17.260752 32.239376 15.28591 31.759973 13.82758 30.935063 C 13.518898 30.760458 13.236992 30.570319 12.979569 30.369722 C 11.174016 31.837687 9.466344 33.219415 7.9488688 34.437174 C 10.591399 36.955726 14.638319 38.897367 20.070093 38.897367 L 24.650692 38.897367 C 32.068392 38.897367 36.920103 35.231484 39.156783 31.455444 C 41.393463 27.679404 41.426929 23.820251 41.426929 23.820251 L 41.428996 23.786145 L 41.428996 8.3007853 C 41.429125 7.8798785 41.357396 7.4736084 41.226941 7.09104 z " /></g><text
|
d="m 41.226941,7.09104 c -1.718284,1.4205409 -3.7895,3.131915 -6.072498,5.015715 -1.93499,1.62329 -6.430112,5.351263 -11.522294,9.54257 0.08232,-0.04302 0.156783,-0.0915 0.221692,-0.145211 l 5.514909,-4.571297 5.48752,-4.573881 c 0.0199,-0.0164 0.04075,-0.03316 0.05994,-0.04806 l 0.0279,-0.02119 0.222726,-0.190169 v 11.598258 0.02894 c 0,0 -0.06656,2.081964 -1.311548,4.183724 -0.57202,0.96572 -1.445392,2.157957 -2.917652,2.998267 -1.47227,0.8403 -3.460398,1.330668 -6.271968,1.330668 h -4.581116 c -2.82381,0 -4.798652,-0.479403 -6.256982,-1.304313 -0.308682,-0.174605 -0.590588,-0.364744 -0.848011,-0.565341 -1.805553,1.467965 -3.513225,2.849693 -5.0307002,4.067452 2.6425302,2.518552 6.6894502,4.460193 12.1212242,4.460193 h 4.580599 c 7.4177,0 12.269411,-3.665883 14.506091,-7.441923 2.23668,-3.77604 2.270146,-7.635193 2.270146,-7.635193 l 0.0021,-0.03411 V 8.3007853 C 41.429125,7.8798785 41.357396,7.4736084 41.226941,7.09104 Z" /><text
|
||||||
xml:space="preserve"
|
xml:space="preserve"
|
||||||
style="font-size:44.7887px;line-height:1.5;font-family:Roboto;-inkscape-font-specification:Roboto;letter-spacing:0.223944px;writing-mode:lr-tb;direction:ltr;fill:#f74e6a;fill-opacity:1;stroke:#ff0000;stroke-width:56.4265;stroke-linecap:round;stroke-linejoin:miter;stroke-dasharray:none"
|
style="font-size:44.7887px;line-height:1.5;font-family:Roboto;-inkscape-font-specification:Roboto;letter-spacing:0.223944px;writing-mode:lr-tb;direction:ltr;fill:#f74e6a;fill-opacity:1;stroke:#ff0000;stroke-width:56.4265;stroke-linecap:round;stroke-linejoin:miter;stroke-dasharray:none"
|
||||||
x="43.547977"
|
x="43.547977"
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 9.8 KiB After Width: | Height: | Size: 9.5 KiB |
@@ -0,0 +1,237 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<title>Ultimo Splash</title>
|
||||||
|
<style>
|
||||||
|
/* ---- Splash styles (copy into your site) ---------------------------- */
|
||||||
|
:root { --splash-bg: #0f0f12; }
|
||||||
|
#ultimo-splash {
|
||||||
|
position: fixed; inset: 0; z-index: 9999;
|
||||||
|
display: grid; place-items: center;
|
||||||
|
background: var(--splash-bg);
|
||||||
|
transition: opacity .35s ease, visibility 0s linear .35s;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
#ultimo-splash.is-done { opacity: 0; visibility: hidden; pointer-events: none; }
|
||||||
|
#ultimo-splash svg { width: min(46vmin, 340px); height: auto; overflow: visible; }
|
||||||
|
|
||||||
|
/* ---- Demo page only (remove on your site) ---------------------------- */
|
||||||
|
html, body { margin: 0; height: 100%; }
|
||||||
|
body { font-family: system-ui, sans-serif; background: #f6f6f7; color: #1b1b1f;
|
||||||
|
display: grid; place-items: center; }
|
||||||
|
.demo { text-align: center; }
|
||||||
|
.demo button { font: inherit; padding: 12px 20px; border-radius: 10px; border: 1px solid #c9c9cf;
|
||||||
|
background: #fff; cursor: pointer; min-height: 44px; }
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<!-- ======================= SPLASH MARKUP (copy) ======================= -->
|
||||||
|
<div id="ultimo-splash" aria-hidden="true">
|
||||||
|
<svg viewBox="-10 -6 65 56" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<defs>
|
||||||
|
<linearGradient id="ul-g1" x1="54.340946" y1="122.84999" x2="54.340946" y2="162.66415" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.75684298,0,0,0.80151105,-19.989667,-137.1)">
|
||||||
|
<stop offset="0.20198774" stop-color="#f89629"/><stop offset="1" stop-color="#f74176"/>
|
||||||
|
</linearGradient>
|
||||||
|
<radialGradient id="ul-r1" cx="8.0343275" cy="13.452971" fx="8.0343275" fy="13.452971" r="16.678839" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-0.29273442,-0.00257918,0.01127876,-1.2801289,10.212159,-15.400302)">
|
||||||
|
<stop offset="0" stop-color="#fa4435" stop-opacity="1"/><stop offset="1" stop-color="#fa7367" stop-opacity="0"/>
|
||||||
|
</radialGradient>
|
||||||
|
<radialGradient id="ul-r2" cx="34.523952" cy="11.253304" fx="34.523952" fy="11.253304" r="16.740065" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.27572675,-0.00557307,0.0193391,0.95679742,24.457243,-42.568342)">
|
||||||
|
<stop offset="0" stop-color="#fadc56" stop-opacity="1"/><stop offset="1" stop-color="#faae3a" stop-opacity="0"/>
|
||||||
|
</radialGradient>
|
||||||
|
<linearGradient id="ul-gs" x1="0" y1="5.11" x2="0" y2="37.01" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset="0.202" stop-color="#f89629"/><stop offset="1" stop-color="#f74176"/>
|
||||||
|
</linearGradient>
|
||||||
|
<filter id="ul-sh" x="-30%" y="-30%" width="160%" height="160%">
|
||||||
|
<feDropShadow dx="0" dy="0.35" stdDeviation="0.5" flood-color="#000" flood-opacity="0.42"/>
|
||||||
|
</filter>
|
||||||
|
<filter id="ul-blur" x="-40%" y="-40%" width="180%" height="180%">
|
||||||
|
<feGaussianBlur stdDeviation="1.1"/>
|
||||||
|
</filter>
|
||||||
|
<g id="ul-logo" transform="translate(1.425541,43.741704)">
|
||||||
|
<path id="ul-main" fill="url(#ul-g1)" d="m 35.878324,-39.647594 c -2.15234,-7.4e-4 -4.0678,1.84724 -4.0671,4.1266 v 2.85212 c -0.073,-0.005 -0.14656,-0.007 -0.2202,-0.007 h -10.50012 -10.49855 c -0.0418,-7e-5 -0.0835,5.9e-4 -0.12516,0.002 v -2.78918 c -1.6e-4,-2.27807 -1.9592603,-4.12477 -4.1103803,-4.12494 -2.15111,1.8e-4 -4.20874,1.84687 -4.2089,4.12494 v 15.55127 c -4e-5,0.005 -0.0295,3.84339 2.173,7.60498 2.20396,3.7640196 7.0382003,7.3825696 14.4526703,7.3825696 h 4.58067 c 7.4177,0 12.26918,-3.66617 14.50586,-7.4422096 2.23668,-3.77604 2.27039,-7.63481 2.27039,-7.63481 l 0.002,-0.0344 v -15.48541 c 7e-4,-2.27872 -2.10202,-4.12642 -4.25374,-4.1266 z m -2.00792,7.9252 v 11.59858 0.0286 c 0,0 -0.0664,2.0824 -1.31139,4.18416 -0.57202,0.96572 -1.44541,2.15762 -2.91767,2.99793 -1.47227,0.8403 -3.46066,1.33079 -6.27223,1.33079 h -4.58106 c -2.82381,0 -4.79864,-0.47938 -6.25697,-1.30429 -1.45833,-0.8249 -2.31357,-2.00343 -2.8590102,-2.93496 -1.1966401,-2.04365 -1.2300401,-4.07193 -1.2300401,-4.07193 l -10e-4,-0.0141 v -0.0157 -11.69637 l 1.96e-4,-0.0142 0.0035,-0.008 c 0.05128,0.0487 0.18806,0.16304 0.24192,0.20765 l 5.4247013,4.54513 5.51504,4.57144 c 0.65194,0.53945 2.27903,0.53945 2.93097,0 l 5.51504,-4.57144 5.487378,-4.57351 c 0.0199,-0.0164 0.04083,-0.0331 0.06003,-0.048 l 0.02765,-0.0215 z"/>
|
||||||
|
<path fill="url(#ul-r1)" d="m 2.3483903,-36.677919 c -0.1292796,0.384121 -0.2004748,0.792004 -0.2005045,1.214913 v 15.550989 c -4e-5,0.005 -0.029506,3.84363 2.172994,7.60522 2.20396,3.7640196 7.0383952,7.3824946 14.4528652,7.3824946 h 4.580598 c 5.433936,0 9.490679,-1.96731 12.151197,-4.504117 -1.517177,-1.2182566 -3.218664,-2.5953336 -5.013648,-4.0550496 -0.258984,0.201994 -0.541601,0.394146 -0.850594,0.570508 -1.47227,0.8403 -3.460398,1.330668 -6.271968,1.330668 h -4.581116 c -2.82381,0 -4.798652,-0.479403 -6.256982,-1.304313 -1.45833,-0.8249 -2.313817,-2.003692 -2.8592572,-2.935222 -1.1966406,-2.04365 -1.2298996,-4.071586 -1.2298996,-4.071586 l -0.00103,-0.01395 v -0.01602 -11.696444 -0.01395 l 0.00362,-0.0083 c 0.05128,0.0487 0.1879857,0.16313 0.2418457,0.20774 l 5.4249921,4.545459 5.514909,4.571297 c 0.0844,0.06984 0.185312,0.130661 0.298173,0.182418 -5.07081,-4.173874 -9.542211,-7.882397 -11.4706242,-9.500169 -2.2977093,-1.895939 -4.3807977,-3.616666 -6.1055705,-5.042586 z"/>
|
||||||
|
<path fill="url(#ul-r2)" d="m 39.930076,-36.730629 c -1.718284,1.420541 -3.7895,3.131915 -6.072498,5.015715 -1.93499,1.62329 -6.430112,5.351263 -11.522294,9.54257 0.08232,-0.04302 0.156783,-0.0915 0.221692,-0.145211 l 5.514909,-4.571297 5.48752,-4.573881 c 0.0199,-0.0164 0.04075,-0.03316 0.05994,-0.04806 l 0.0279,-0.02119 0.222726,-0.190169 v 11.598258 0.02894 c 0,0 -0.06656,2.081964 -1.311548,4.183724 -0.57202,0.96572 -1.445392,2.157957 -2.917652,2.998267 -1.47227,0.8403 -3.460398,1.330668 -6.271968,1.330668 h -4.581116 c -2.82381,0 -4.798652,-0.479403 -6.256982,-1.304313 -0.308682,-0.174605 -0.590588,-0.364744 -0.848011,-0.565341 -1.8055532,1.467965 -3.5132252,2.849693 -5.0307004,4.0674516 2.6425302,2.518552 6.6894504,4.460193 12.1212244,4.460193 h 4.580599 c 7.4177,0 12.269411,-3.665883 14.506091,-7.4419226 2.23668,-3.77604 2.270146,-7.635193 2.270146,-7.635193 l 0.0021,-0.03411 v -15.485354 c 1.06e-4,-0.420906 -0.07162,-0.827177 -0.202078,-1.209745 z"/>
|
||||||
|
</g>
|
||||||
|
<!-- Mask that reveals the logo's U as the stroke draws -->
|
||||||
|
<mask id="ul-mask-u" maskUnits="userSpaceOnUse" x="-20" y="-20" width="100" height="100">
|
||||||
|
<path id="ul-stroke" d="M7.73,8.31 L7.73,23.8 C7.73,30.6 13.6,34.65 22.57,34.65 C31.5,34.65 37.4,30.6 37.4,23.8 L37.4,8.31"
|
||||||
|
pathLength="1" fill="none" stroke="#fff" stroke-width="9.6" stroke-linecap="round"
|
||||||
|
stroke-dasharray="1 2" stroke-dashoffset="1"/>
|
||||||
|
</mask>
|
||||||
|
<!-- Logo colours limited to the top-flap area -->
|
||||||
|
<!-- Area between the U's arms: inside it the logo's own fill is exactly the flap -->
|
||||||
|
<clipPath id="ul-clip-flap"><path d="M10.093,11.066 L35.296,11.066 L35.296,12.1 L22.69,23.6 L10.093,12.1 Z"/></clipPath>
|
||||||
|
<!-- Darkens the coloured flap while it is mid-fold -->
|
||||||
|
<filter id="ul-dark" x="0" y="0" width="1" height="1">
|
||||||
|
<feComponentTransfer>
|
||||||
|
<feFuncR id="ul-dr" type="linear" slope="1"/><feFuncG id="ul-dg" type="linear" slope="1"/><feFuncB id="ul-db" type="linear" slope="1"/>
|
||||||
|
</feComponentTransfer>
|
||||||
|
</filter>
|
||||||
|
</defs>
|
||||||
|
|
||||||
|
<!-- Envelope (white/grey paper) -->
|
||||||
|
<g id="ul-env">
|
||||||
|
<g id="ul-rest">
|
||||||
|
<!-- Thin paper margin tucked under the U so no background shows along its inner edge -->
|
||||||
|
<rect id="ul-under" x="9.8" y="12.1" width="25.8" height="20.4" fill="rgb(250,250,253)" opacity="0" mask="url(#ul-mask-u)"/>
|
||||||
|
<rect x="10.093" y="11.066" width="25.203" height="21.064" fill="rgb(226,226,230)"/>
|
||||||
|
<path id="ul-fl" filter="url(#ul-sh)"/>
|
||||||
|
<path id="ul-fr" filter="url(#ul-sh)"/>
|
||||||
|
<path id="ul-fb" filter="url(#ul-sh)"/>
|
||||||
|
</g>
|
||||||
|
<!-- Top flap: exact outline of the logo's V flap (shown folded); flipped about the top edge while folding -->
|
||||||
|
<!-- Inside of the flap = white paper; outside = the logo's colours (clipped to the flap) -->
|
||||||
|
<g id="ul-ftg" filter="url(#ul-sh)">
|
||||||
|
<path id="ul-ft"
|
||||||
|
d="M10.093,11.066 L35.296,11.066 L35.296,12.019 L35.208,12.089 L24.206,21.234 C23.554,21.773 21.927,21.773 21.275,21.234 L10.335,12.117 L10.093,11.910 Z"/>
|
||||||
|
<g id="ul-fto" opacity="0" filter="url(#ul-dark)">
|
||||||
|
<use href="#ul-logo" clip-path="url(#ul-clip-flap)"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<!-- U drawn over the envelope: the real logo artwork (with its side gradients) revealed by a growing stroke -->
|
||||||
|
<g id="ul-ug" opacity="0">
|
||||||
|
<use href="#ul-logo" mask="url(#ul-mask-u)"/>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<!-- Final logo + glow -->
|
||||||
|
<use id="ul-glow" href="#ul-logo" filter="url(#ul-blur)" opacity="0"/>
|
||||||
|
<use id="ul-final" href="#ul-logo" opacity="0"/>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
<!-- ===================================================================== -->
|
||||||
|
|
||||||
|
<!-- Demo page content (remove on your site) -->
|
||||||
|
<main class="demo">
|
||||||
|
<p>Your website content</p>
|
||||||
|
<button type="button" id="replay">Replay intro</button>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
/* ======================= SPLASH SCRIPT (copy) ======================== */
|
||||||
|
(function () {
|
||||||
|
var ONCE_PER_SESSION = false; // true = show only on the first page view per browser session
|
||||||
|
var SPEED = 1; // 1 = ~2.6 s to final logo; 0.8 = faster, 1.2 = slower
|
||||||
|
var HOLD_MS = 450; // how long the finished logo stays before the splash fades
|
||||||
|
|
||||||
|
var root = document.getElementById('ultimo-splash');
|
||||||
|
if (!root) return;
|
||||||
|
var $ = function (id) { return document.getElementById(id); };
|
||||||
|
var env = $('ul-env'), rest = $('ul-rest'), fl = $('ul-fl'), fr = $('ul-fr'), fb = $('ul-fb'), ft = $('ul-ft');
|
||||||
|
var stroke = $('ul-stroke'), glow = $('ul-glow'), fin = $('ul-final');
|
||||||
|
var ug = $('ul-ug'), under = $('ul-under');
|
||||||
|
var ftg = $('ul-ftg'), fto = $('ul-fto'), dr = $('ul-dr'), dg = $('ul-dg'), db = $('ul-db');
|
||||||
|
|
||||||
|
// Envelope body edges (logo coordinates) and the four flaps.
|
||||||
|
var L = 10.093, R = 35.296, T = 11.066, B = 32.13, CX = 22.69, CY = 21.6;
|
||||||
|
var FLAPS = {
|
||||||
|
l: { axis: 'x', h: L, a: T, b: B, mid: CY, depth: 12.2, dir: -1, r: 3.2 },
|
||||||
|
r: { axis: 'x', h: R, a: T, b: B, mid: CY, depth: 12.2, dir: 1, r: 3.2 },
|
||||||
|
b: { axis: 'y', h: B, a: L, b: R, mid: CX, depth: 14.0, dir: 1, r: 3.6 }
|
||||||
|
};
|
||||||
|
var END = 2450; // ms (at SPEED 1) when the logo is fully formed
|
||||||
|
|
||||||
|
function clamp(x) { return x < 0 ? 0 : x > 1 ? 1 : x; }
|
||||||
|
function seg(t, a, b) { return clamp((t - a) / (b - a)); }
|
||||||
|
function ease(x) { return x < .5 ? 4 * x * x * x : 1 - Math.pow(-2 * x + 2, 3) / 2; }
|
||||||
|
function easeOut(x) { return 1 - Math.pow(1 - x, 3); }
|
||||||
|
function n(v) { return Math.round(v * 1000) / 1000; }
|
||||||
|
|
||||||
|
// Flap outline: base fixed exactly on the body edge, apex swings over the hinge, tip rounded.
|
||||||
|
function flapD(f, p) {
|
||||||
|
var s = Math.cos(Math.PI * p), ax, ay, A, C;
|
||||||
|
if (f.axis === 'x') { ax = f.h + f.dir * f.depth * s; ay = f.mid; A = [f.h, f.a]; C = [f.h, f.b]; }
|
||||||
|
else { ax = f.mid; ay = f.h + f.dir * f.depth * s; A = [f.a, f.h]; C = [f.b, f.h]; }
|
||||||
|
function toward(P) {
|
||||||
|
var dx = P[0] - ax, dy = P[1] - ay, l = Math.hypot(dx, dy) || 1, r = Math.min(f.r, l * 0.45);
|
||||||
|
return n(ax + dx * r / l) + ',' + n(ay + dy * r / l);
|
||||||
|
}
|
||||||
|
return 'M' + A[0] + ',' + A[1] + ' L' + toward(A) + ' Q' + n(ax) + ',' + n(ay) + ' ' + toward(C) +
|
||||||
|
' L' + C[0] + ',' + C[1] + ' Z';
|
||||||
|
}
|
||||||
|
// Paper shading: inner face (grey) before the flip, outer face (white) after it.
|
||||||
|
function faceC(p) {
|
||||||
|
var lift = Math.sin(Math.PI * p);
|
||||||
|
var c = Math.round(p < .5 ? 230 - 42 * lift : 250 - 36 * lift);
|
||||||
|
return 'rgb(' + c + ',' + c + ',' + (c + 3) + ')';
|
||||||
|
}
|
||||||
|
function setFlap(el, f, p) {
|
||||||
|
el.setAttribute('d', flapD(f, p));
|
||||||
|
el.setAttribute('fill', faceC(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
function render(ms) {
|
||||||
|
var intro = easeOut(seg(ms, 0, 220));
|
||||||
|
setFlap(fl, FLAPS.l, ease(seg(ms, 180, 560)));
|
||||||
|
setFlap(fr, FLAPS.r, ease(seg(ms, 240, 620)));
|
||||||
|
setFlap(fb, FLAPS.b, ease(seg(ms, 560, 920)));
|
||||||
|
var pt = ease(seg(ms, 880, 1260)), st = -Math.cos(Math.PI * pt);
|
||||||
|
if (Math.abs(st) < 0.001) st = 0.001;
|
||||||
|
// Top flap: white inside while open; once it flips past vertical its outside (logo colours) shows
|
||||||
|
ftg.setAttribute('transform', 'translate(0 ' + T + ') scale(1 ' + n(st) + ') translate(0 ' + (-T) + ')');
|
||||||
|
ft.setAttribute('fill', faceC(pt));
|
||||||
|
ft.setAttribute('opacity', pt >= 0.5 ? 0 : 1); // white inside face only while it faces the viewer
|
||||||
|
fto.setAttribute('opacity', pt >= 0.5 ? 1 : 0);
|
||||||
|
var slope = n(1 - 0.35 * Math.sin(Math.PI * pt));
|
||||||
|
dr.setAttribute('slope', slope); dg.setAttribute('slope', slope); db.setAttribute('slope', slope);
|
||||||
|
|
||||||
|
var draw = ease(seg(ms, 1180, 1800));
|
||||||
|
var fade = ease(seg(ms, 2150, 2450)); // white envelope (all but the top flap) vanishes after the logo has formed
|
||||||
|
var dis = ease(seg(ms, 1800, 2150)); // dissolve: U stroke + top flap -> final logo
|
||||||
|
var sc = 0.9 + 0.1 * intro;
|
||||||
|
env.setAttribute('transform', 'translate(22.5 22) scale(' + sc + ') translate(-22.5 -22)');
|
||||||
|
env.setAttribute('opacity', intro);
|
||||||
|
rest.setAttribute('opacity', 1 - fade);
|
||||||
|
ftg.setAttribute('opacity', 1 - fade); // coloured flap sits under the logo until the envelope goes
|
||||||
|
stroke.setAttribute('stroke-dashoffset', 1 - draw);
|
||||||
|
// Stroke stays solid under the logo while it dissolves in, then is removed once fully covered
|
||||||
|
ug.setAttribute('opacity', draw > 0 && dis < 1 ? 1 : 0);
|
||||||
|
under.setAttribute('opacity', draw > 0 ? 1 : 0);
|
||||||
|
fin.setAttribute('opacity', dis);
|
||||||
|
glow.setAttribute('opacity', 0.35 * Math.sin(Math.PI * seg(ms, 1900, 2450)));
|
||||||
|
}
|
||||||
|
|
||||||
|
var raf = 0, start = 0, hideTimer = 0;
|
||||||
|
function finish() {
|
||||||
|
cancelAnimationFrame(raf);
|
||||||
|
render(99999);
|
||||||
|
root.classList.add('is-done');
|
||||||
|
document.dispatchEvent(new CustomEvent('ultimo-splash:done'));
|
||||||
|
}
|
||||||
|
function tick(now) {
|
||||||
|
if (!start) start = now;
|
||||||
|
var ms = (now - start) / SPEED;
|
||||||
|
render(ms);
|
||||||
|
if (ms < END) raf = requestAnimationFrame(tick);
|
||||||
|
else hideTimer = setTimeout(finish, HOLD_MS);
|
||||||
|
}
|
||||||
|
function play() {
|
||||||
|
cancelAnimationFrame(raf); clearTimeout(hideTimer);
|
||||||
|
root.classList.remove('is-done');
|
||||||
|
start = 0; render(0);
|
||||||
|
if (window.matchMedia && matchMedia('(prefers-reduced-motion: reduce)').matches) {
|
||||||
|
render(99999); hideTimer = setTimeout(finish, 700); return;
|
||||||
|
}
|
||||||
|
raf = requestAnimationFrame(tick);
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (ONCE_PER_SESSION && sessionStorage.getItem('ultimo-splash-seen')) { root.classList.add('is-done'); return; }
|
||||||
|
sessionStorage.setItem('ultimo-splash-seen', '1');
|
||||||
|
} catch (e) {}
|
||||||
|
|
||||||
|
root.addEventListener('click', finish); // click / tap skips the intro
|
||||||
|
window.ultimoSplash = { play: play, skip: finish, seek: function (ms) { cancelAnimationFrame(raf); clearTimeout(hideTimer); root.classList.remove('is-done'); render(ms); } };
|
||||||
|
play();
|
||||||
|
})();
|
||||||
|
/* ===================================================================== */
|
||||||
|
|
||||||
|
// Demo only
|
||||||
|
document.getElementById('replay').addEventListener('click', function () { window.ultimoSplash.play(); });
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -13,8 +13,99 @@
|
|||||||
<meta name="apple-mobile-web-app-title" content="Ultimo" />
|
<meta name="apple-mobile-web-app-title" content="Ultimo" />
|
||||||
<meta name="apple-mobile-web-app-status-bar-style" content="default" />
|
<meta name="apple-mobile-web-app-status-bar-style" content="default" />
|
||||||
<title>Ultimo Email</title>
|
<title>Ultimo Email</title>
|
||||||
|
<style>
|
||||||
|
/* Loading splash (public/splash.js). Dark grey like the app's dark theme. */
|
||||||
|
#ultimo-splash {
|
||||||
|
position: fixed; inset: 0; z-index: 9999;
|
||||||
|
display: grid; place-items: center;
|
||||||
|
background: #1b1e20;
|
||||||
|
transition: opacity .35s ease, visibility 0s linear .35s;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
#ultimo-splash.is-done { opacity: 0; visibility: hidden; pointer-events: none; }
|
||||||
|
#ultimo-splash svg { width: min(46vmin, 340px); height: auto; overflow: visible; }
|
||||||
|
/* Never on a phone (same query as useIsMobile). */
|
||||||
|
@media (max-width: 767px), (pointer: coarse) and (max-height: 500px) {
|
||||||
|
#ultimo-splash { display: none; }
|
||||||
|
}
|
||||||
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
<div id="ultimo-splash" aria-hidden="true">
|
||||||
|
<svg viewBox="-10 -6 65 56" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<defs>
|
||||||
|
<linearGradient id="ul-g1" x1="54.340946" y1="122.84999" x2="54.340946" y2="162.66415" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.75684298,0,0,0.80151105,-19.989667,-137.1)">
|
||||||
|
<stop offset="0.20198774" stop-color="#f89629"/><stop offset="1" stop-color="#f74176"/>
|
||||||
|
</linearGradient>
|
||||||
|
<radialGradient id="ul-r1" cx="8.0343275" cy="13.452971" fx="8.0343275" fy="13.452971" r="16.678839" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-0.29273442,-0.00257918,0.01127876,-1.2801289,10.212159,-15.400302)">
|
||||||
|
<stop offset="0" stop-color="#fa4435" stop-opacity="1"/><stop offset="1" stop-color="#fa7367" stop-opacity="0"/>
|
||||||
|
</radialGradient>
|
||||||
|
<radialGradient id="ul-r2" cx="34.523952" cy="11.253304" fx="34.523952" fy="11.253304" r="16.740065" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.27572675,-0.00557307,0.0193391,0.95679742,24.457243,-42.568342)">
|
||||||
|
<stop offset="0" stop-color="#fadc56" stop-opacity="1"/><stop offset="1" stop-color="#faae3a" stop-opacity="0"/>
|
||||||
|
</radialGradient>
|
||||||
|
<linearGradient id="ul-gs" x1="0" y1="5.11" x2="0" y2="37.01" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset="0.202" stop-color="#f89629"/><stop offset="1" stop-color="#f74176"/>
|
||||||
|
</linearGradient>
|
||||||
|
<filter id="ul-sh" x="-30%" y="-30%" width="160%" height="160%">
|
||||||
|
<feDropShadow dx="0" dy="0.35" stdDeviation="0.5" flood-color="#000" flood-opacity="0.42"/>
|
||||||
|
</filter>
|
||||||
|
<filter id="ul-blur" x="-40%" y="-40%" width="180%" height="180%">
|
||||||
|
<feGaussianBlur stdDeviation="1.1"/>
|
||||||
|
</filter>
|
||||||
|
<g id="ul-logo" transform="translate(1.425541,43.741704)">
|
||||||
|
<path id="ul-main" fill="url(#ul-g1)" d="m 35.878324,-39.647594 c -2.15234,-7.4e-4 -4.0678,1.84724 -4.0671,4.1266 v 2.85212 c -0.073,-0.005 -0.14656,-0.007 -0.2202,-0.007 h -10.50012 -10.49855 c -0.0418,-7e-5 -0.0835,5.9e-4 -0.12516,0.002 v -2.78918 c -1.6e-4,-2.27807 -1.9592603,-4.12477 -4.1103803,-4.12494 -2.15111,1.8e-4 -4.20874,1.84687 -4.2089,4.12494 v 15.55127 c -4e-5,0.005 -0.0295,3.84339 2.173,7.60498 2.20396,3.7640196 7.0382003,7.3825696 14.4526703,7.3825696 h 4.58067 c 7.4177,0 12.26918,-3.66617 14.50586,-7.4422096 2.23668,-3.77604 2.27039,-7.63481 2.27039,-7.63481 l 0.002,-0.0344 v -15.48541 c 7e-4,-2.27872 -2.10202,-4.12642 -4.25374,-4.1266 z m -2.00792,7.9252 v 11.59858 0.0286 c 0,0 -0.0664,2.0824 -1.31139,4.18416 -0.57202,0.96572 -1.44541,2.15762 -2.91767,2.99793 -1.47227,0.8403 -3.46066,1.33079 -6.27223,1.33079 h -4.58106 c -2.82381,0 -4.79864,-0.47938 -6.25697,-1.30429 -1.45833,-0.8249 -2.31357,-2.00343 -2.8590102,-2.93496 -1.1966401,-2.04365 -1.2300401,-4.07193 -1.2300401,-4.07193 l -10e-4,-0.0141 v -0.0157 -11.69637 l 1.96e-4,-0.0142 0.0035,-0.008 c 0.05128,0.0487 0.18806,0.16304 0.24192,0.20765 l 5.4247013,4.54513 5.51504,4.57144 c 0.65194,0.53945 2.27903,0.53945 2.93097,0 l 5.51504,-4.57144 5.487378,-4.57351 c 0.0199,-0.0164 0.04083,-0.0331 0.06003,-0.048 l 0.02765,-0.0215 z"/>
|
||||||
|
<path fill="url(#ul-r1)" d="m 2.3483903,-36.677919 c -0.1292796,0.384121 -0.2004748,0.792004 -0.2005045,1.214913 v 15.550989 c -4e-5,0.005 -0.029506,3.84363 2.172994,7.60522 2.20396,3.7640196 7.0383952,7.3824946 14.4528652,7.3824946 h 4.580598 c 5.433936,0 9.490679,-1.96731 12.151197,-4.504117 -1.517177,-1.2182566 -3.218664,-2.5953336 -5.013648,-4.0550496 -0.258984,0.201994 -0.541601,0.394146 -0.850594,0.570508 -1.47227,0.8403 -3.460398,1.330668 -6.271968,1.330668 h -4.581116 c -2.82381,0 -4.798652,-0.479403 -6.256982,-1.304313 -1.45833,-0.8249 -2.313817,-2.003692 -2.8592572,-2.935222 -1.1966406,-2.04365 -1.2298996,-4.071586 -1.2298996,-4.071586 l -0.00103,-0.01395 v -0.01602 -11.696444 -0.01395 l 0.00362,-0.0083 c 0.05128,0.0487 0.1879857,0.16313 0.2418457,0.20774 l 5.4249921,4.545459 5.514909,4.571297 c 0.0844,0.06984 0.185312,0.130661 0.298173,0.182418 -5.07081,-4.173874 -9.542211,-7.882397 -11.4706242,-9.500169 -2.2977093,-1.895939 -4.3807977,-3.616666 -6.1055705,-5.042586 z"/>
|
||||||
|
<path fill="url(#ul-r2)" d="m 39.930076,-36.730629 c -1.718284,1.420541 -3.7895,3.131915 -6.072498,5.015715 -1.93499,1.62329 -6.430112,5.351263 -11.522294,9.54257 0.08232,-0.04302 0.156783,-0.0915 0.221692,-0.145211 l 5.514909,-4.571297 5.48752,-4.573881 c 0.0199,-0.0164 0.04075,-0.03316 0.05994,-0.04806 l 0.0279,-0.02119 0.222726,-0.190169 v 11.598258 0.02894 c 0,0 -0.06656,2.081964 -1.311548,4.183724 -0.57202,0.96572 -1.445392,2.157957 -2.917652,2.998267 -1.47227,0.8403 -3.460398,1.330668 -6.271968,1.330668 h -4.581116 c -2.82381,0 -4.798652,-0.479403 -6.256982,-1.304313 -0.308682,-0.174605 -0.590588,-0.364744 -0.848011,-0.565341 -1.8055532,1.467965 -3.5132252,2.849693 -5.0307004,4.0674516 2.6425302,2.518552 6.6894504,4.460193 12.1212244,4.460193 h 4.580599 c 7.4177,0 12.269411,-3.665883 14.506091,-7.4419226 2.23668,-3.77604 2.270146,-7.635193 2.270146,-7.635193 l 0.0021,-0.03411 v -15.485354 c 1.06e-4,-0.420906 -0.07162,-0.827177 -0.202078,-1.209745 z"/>
|
||||||
|
</g>
|
||||||
|
<!-- Mask that reveals the logo's U as the stroke draws -->
|
||||||
|
<mask id="ul-mask-u" maskUnits="userSpaceOnUse" x="-20" y="-20" width="100" height="100">
|
||||||
|
<path id="ul-stroke" d="M7.73,8.31 L7.73,23.8 C7.73,30.6 13.6,34.65 22.57,34.65 C31.5,34.65 37.4,30.6 37.4,23.8 L37.4,8.31"
|
||||||
|
pathLength="1" fill="none" stroke="#fff" stroke-width="9.6" stroke-linecap="round"
|
||||||
|
stroke-dasharray="1 2" stroke-dashoffset="1"/>
|
||||||
|
</mask>
|
||||||
|
<!-- Logo colours limited to the top-flap area -->
|
||||||
|
<!-- Area between the U's arms: inside it the logo's own fill is exactly the flap -->
|
||||||
|
<clipPath id="ul-clip-flap"><path d="M10.093,11.066 L35.296,11.066 L35.296,12.1 L22.69,23.6 L10.093,12.1 Z"/></clipPath>
|
||||||
|
<!-- Darkens the coloured flap while it is mid-fold -->
|
||||||
|
<filter id="ul-dark" x="0" y="0" width="1" height="1">
|
||||||
|
<feComponentTransfer>
|
||||||
|
<feFuncR id="ul-dr" type="linear" slope="1"/><feFuncG id="ul-dg" type="linear" slope="1"/><feFuncB id="ul-db" type="linear" slope="1"/>
|
||||||
|
</feComponentTransfer>
|
||||||
|
</filter>
|
||||||
|
</defs>
|
||||||
|
|
||||||
|
<!-- Envelope (white/grey paper) -->
|
||||||
|
<g id="ul-env">
|
||||||
|
<g id="ul-rest">
|
||||||
|
<!-- Thin paper margin tucked under the U so no background shows along its inner edge -->
|
||||||
|
<rect id="ul-under" x="9.8" y="12.1" width="25.8" height="20.4" fill="rgb(250,250,253)" opacity="0" mask="url(#ul-mask-u)"/>
|
||||||
|
<rect x="10.093" y="11.066" width="25.203" height="21.064" fill="rgb(226,226,230)"/>
|
||||||
|
<path id="ul-fl" filter="url(#ul-sh)"/>
|
||||||
|
<path id="ul-fr" filter="url(#ul-sh)"/>
|
||||||
|
<path id="ul-fb" filter="url(#ul-sh)"/>
|
||||||
|
</g>
|
||||||
|
<!-- Top flap: exact outline of the logo's V flap (shown folded); flipped about the top edge while folding -->
|
||||||
|
<!-- Inside of the flap = white paper; outside = the logo's colours (clipped to the flap) -->
|
||||||
|
<g id="ul-ftg" filter="url(#ul-sh)">
|
||||||
|
<path id="ul-ft"
|
||||||
|
d="M10.093,11.066 L35.296,11.066 L35.296,12.019 L35.208,12.089 L24.206,21.234 C23.554,21.773 21.927,21.773 21.275,21.234 L10.335,12.117 L10.093,11.910 Z"/>
|
||||||
|
<g id="ul-fto" opacity="0" filter="url(#ul-dark)">
|
||||||
|
<use href="#ul-logo" clip-path="url(#ul-clip-flap)"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<!-- U drawn over the envelope: the real logo artwork (with its side gradients) revealed by a growing stroke -->
|
||||||
|
<g id="ul-ug" opacity="0">
|
||||||
|
<use href="#ul-logo" mask="url(#ul-mask-u)"/>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<!-- Final logo + glow -->
|
||||||
|
<use id="ul-glow" href="#ul-logo" filter="url(#ul-blur)" opacity="0"/>
|
||||||
|
<use id="ul-final" href="#ul-logo" opacity="0"/>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
<script src="/splash.js"></script>
|
||||||
<div id="root"></div>
|
<div id="root"></div>
|
||||||
<script type="module" src="/src/main.tsx"></script>
|
<script type="module" src="/src/main.tsx"></script>
|
||||||
</body>
|
</body>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 6.5 KiB After Width: | Height: | Size: 3.2 KiB |
@@ -1,7 +1,7 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" version="1.2" baseProfile="tiny-ps" viewBox="0 0 512 512">
|
<svg xmlns="http://www.w3.org/2000/svg" version="1.2" baseProfile="tiny-ps" viewBox="0 0 512 512">
|
||||||
<title>Ultimo Email</title>
|
<title>Ultimo Email</title>
|
||||||
<desc>Ultimo Email logo, for BIMI (SVG Tiny Portable/Secure)</desc>
|
<desc>Ultimo Email logo, for BIMI (SVG Tiny Portable/Secure)</desc>
|
||||||
<defs><linearGradient id="g0" gradientUnits="userSpaceOnUse" x1="22.4348" y1="5.1873" x2="22.4348" y2="37.0988"><stop offset="0.2020" stop-color="#f89629" stop-opacity="1.0000"/><stop offset="1.0000" stop-color="#f74176" stop-opacity="1.0000"/></linearGradient><radialGradient id="g1" gradientUnits="userSpaceOnUse" cx="8.0343" cy="13.4530" r="16.6788"><stop offset="0.0000" stop-color="#fa7367" stop-opacity="1.0000"/><stop offset="1.0000" stop-color="#fa7367" stop-opacity="0.0000"/></radialGradient><radialGradient id="g2" gradientUnits="userSpaceOnUse" cx="35.7090" cy="12.0426" r="16.7401"><stop offset="0.0000" stop-color="#fab23b" stop-opacity="1.0000"/><stop offset="1.0000" stop-color="#fab23a" stop-opacity="0.0000"/></radialGradient></defs>
|
<defs><linearGradient id="g0" gradientUnits="userSpaceOnUse" x1="54.3409" y1="122.8500" x2="54.3409" y2="162.6642"><stop offset="0.2020" stop-color="#f89629" stop-opacity="1.0000"/><stop offset="1.0000" stop-color="#f74176" stop-opacity="1.0000"/></linearGradient><radialGradient id="g1" gradientUnits="userSpaceOnUse" cx="8.0343" cy="13.4530" r="16.6788"><stop offset="0.0000" stop-color="#fa4435" stop-opacity="1.0000"/><stop offset="1.0000" stop-color="#fa7367" stop-opacity="0.0000"/></radialGradient><radialGradient id="g2" gradientUnits="userSpaceOnUse" cx="34.5240" cy="11.2533" r="16.7401"><stop offset="0.0000" stop-color="#fadc56" stop-opacity="1.0000"/><stop offset="1.0000" stop-color="#faae3a" stop-opacity="0.0000"/></radialGradient></defs>
|
||||||
<rect width="512" height="512" fill="#ffffff"/>
|
<rect width="512" height="512" fill="#ffffff"/>
|
||||||
<g transform="matrix(7.081810,0,0,7.081810,96.1936,104.0546)"><g transform="matrix(1,0,0,1,0.128676,-0.079965)"><path fill="url(#g0)" d="M37.1752,4.1741C35.0228,4.1733 33.1074,6.0213 33.1081,8.3007L33.1081,11.1528C33.0351,11.1478 32.9615,11.1458 32.8879,11.1458L22.3878,11.1458L11.8892,11.1458C11.8474,11.1457 11.8057,11.1464 11.7641,11.1478L11.7641,8.3586C11.7639,6.0805 9.8048,4.2338 7.6537,4.2337C5.5026,4.2339 3.4449,6.0805 3.4448,8.3586L3.4448,23.9099C3.4447,23.9149 3.4153,27.7533 5.6178,31.5149C7.8217,35.2789 12.6560,38.8974 20.0704,38.8974L24.6511,38.8974C32.0688,38.8974 36.9203,35.2313 39.1570,31.4552C41.3937,27.6792 41.4274,23.8204 41.4274,23.8204L41.4294,23.7860L41.4294,8.3006C41.4301,6.0219 39.3273,4.1742 37.1756,4.1740ZM35.1673,12.0993L35.1673,23.6979L35.1673,23.7265C35.1673,23.7265 35.1009,25.8089 33.8559,27.9106C33.2839,28.8763 32.4105,30.0682 30.9382,30.9085C29.4659,31.7488 27.4775,32.2393 24.6660,32.2393L20.0849,32.2393C17.2611,32.2393 15.2863,31.7600 13.8279,30.9350C12.3696,30.1101 11.5144,28.9316 10.9689,28.0001C9.7723,25.9564 9.7389,23.9282 9.7389,23.9282L9.7379,23.9141L9.7379,23.8984L9.7379,12.2020L9.7381,12.1878L9.7416,12.1798C9.7929,12.2285 9.9297,12.3428 9.9835,12.3874L15.4082,16.9326L20.9233,21.5040C21.5752,22.0435 23.2023,22.0435 23.8542,21.5040L29.3693,16.9326L34.8566,12.3591C34.8765,12.3427 34.8975,12.3260 34.9167,12.3111L34.9443,12.2896Z"/><g transform="matrix(-0.29271702,0.00410386,-0.01334442,-0.95181978,11.840139,23.950941)"><path fill="url(#g1)" d="M27.1856,17.7752C27.6455,17.3736 27.9083,16.9462 27.9286,16.5020L28.6733,0.1670C28.6737,0.1618 28.9581,-3.8700 21.6154,-7.8536C14.2678,-11.8398 -2.0714,-15.7119 -27.3962,-15.8211L-43.0417,-15.8886C-61.6019,-15.9686 -75.5523,-13.9619 -84.7610,-11.3363C-79.6373,-10.0343 -73.8916,-8.5628 -67.8306,-7.0030C-66.9363,-7.2114 -65.9618,-7.4091 -64.8980,-7.5898C-59.8291,-8.4508 -53.0149,-8.9366 -43.4117,-8.8952L-27.7645,-8.8277C-18.1195,-8.7861 -11.3972,-8.2535 -6.4556,-7.3655C-1.5141,-6.4775 1.3515,-5.2267 3.1699,-4.2402C7.1593,-2.0759 7.1758,0.0548 7.1758,0.0548L7.1786,0.0694L7.1778,0.0863L6.6177,12.3724L6.6171,12.3870L6.6043,12.3957C6.4315,12.3438 5.9700,12.2216 5.7882,12.1739L-12.5237,7.3194L-31.1415,2.4364C-31.4264,2.3618 -31.7682,2.2965 -32.1512,2.2404C-15.0312,6.6994 0.0637,10.6607 6.5729,12.3885C14.3301,14.4138 21.3627,16.2520 27.1856,17.7752Z"/></g><g transform="matrix(0.25712152,0.00260463,-0.00969379,0.95694375,26.644192,0.973013)"><path fill="url(#g2)" d="M56.9506,6.2383C50.3245,7.7408 42.3373,9.5509 33.5334,11.5434C26.0725,13.2601 8.7387,17.2029 -10.8988,21.6363C-10.5803,21.5905 -10.2927,21.5390 -10.0424,21.4822L11.2240,16.6473L32.3838,11.8101C32.4605,11.7927 32.5409,11.7750 32.6150,11.7592L32.7226,11.7368L33.5813,11.5357L34.0382,23.6546L34.0393,23.6848C34.0393,23.6848 33.8625,25.8609 29.1038,28.0702C26.9173,29.0853 23.5679,30.3403 17.8757,31.2340C12.1834,32.1276 4.4713,32.6610 -6.4624,32.6907L-24.2775,32.7392C-35.2588,32.7691 -42.9575,32.2891 -48.6611,31.4426C-49.8684,31.2634 -50.9722,31.0677 -51.9812,30.8609C-58.9448,32.4138 -65.5312,33.8756 -71.3844,35.1641C-61.0089,37.7678 -45.1947,39.7537 -24.0715,39.6962L-6.2584,39.6477C22.5876,39.5692 41.3106,35.6874 49.8599,31.7182C58.4092,27.7490 58.3873,23.7163 58.3873,23.7163L58.3941,23.6806L57.7841,7.5002C57.7679,7.0604 57.4730,6.6366 56.9506,6.2383Z"/></g></g></g>
|
<g transform="matrix(5.359577,0.000000,0.000000,5.675894,-34.596697,-557.282863)"><path fill="url(#g0)" d="M73.8171,121.5859C70.9733,121.5849 68.4425,123.8906 68.4434,126.7344L68.4434,130.2928C68.3469,130.2866 68.2497,130.2841 68.1524,130.2841L54.2789,130.2841L40.4074,130.2841C40.3521,130.2840 40.2970,130.2848 40.2420,130.2866L40.2420,126.8067C40.2418,123.9644 37.6533,121.6604 34.8110,121.6602C31.9688,121.6604 29.2501,123.9644 29.2499,126.8067L29.2499,146.2091C29.2498,146.2153 29.2109,151.0043 32.1210,155.6974C35.0331,160.3936 41.4205,164.9082 51.2170,164.9082L57.2694,164.9082C67.0702,164.9082 73.4804,160.3342 76.4356,155.6230C79.3909,150.9119 79.4355,146.0975 79.4355,146.0975L79.4381,146.0546L79.4381,126.7343C79.4390,123.8913 76.6608,121.5860 73.8177,121.5858ZM71.1641,131.4737L71.1641,145.9446L71.1641,145.9803C71.1641,145.9803 71.0764,148.5783 69.4314,151.2006C68.6756,152.4055 67.5216,153.8925 65.5764,154.9409C63.6311,155.9893 61.0039,156.6013 57.2890,156.6013L51.2362,156.6013C47.5051,156.6013 44.8958,156.0032 42.9690,154.9740C41.0421,153.9448 39.9121,152.4744 39.1914,151.3122C37.6103,148.7625 37.5662,146.2319 37.5662,146.2319L37.5649,146.2143L37.5649,146.1947L37.5649,131.6018L37.5651,131.5841L37.5697,131.5741C37.6375,131.6349 37.8182,131.7775 37.8894,131.8332L45.0569,137.5039L52.3438,143.2074C53.2052,143.8805 55.3551,143.8805 56.2165,143.2074L63.5034,137.5039L70.7537,131.7978C70.7800,131.7773 70.8077,131.7565 70.8330,131.7379L70.8696,131.7111Z"/></g><g transform="matrix(-2.072996,-0.018264,0.079870,-9.065222,179.277271,304.532491)"><path fill="url(#g1)" d="M27.5014,16.5661C27.9315,16.2651 28.1624,15.9460 28.1497,15.6157L27.6817,3.4686C27.6817,3.4647 27.6668,0.4661 20.0303,-2.4569C12.3888,-5.3819 -4.2336,-8.1750 -29.5599,-8.1240L-45.2064,-8.0925C-63.7676,-8.0551 -77.5654,-6.4905 -86.5769,-4.4906C-81.3578,-3.5495 -75.5044,-2.4855 -69.3292,-1.3577C-68.4507,-1.5173 -67.4911,-1.6693 -66.4409,-1.8092C-61.4372,-2.4757 -54.6609,-2.8724 -45.0572,-2.8917L-29.4090,-2.9233C-19.7634,-2.9427 -13.0033,-2.5818 -7.9971,-1.9475C-2.9910,-1.3132 -0.0333,-0.3983 1.8578,0.3255C6.0068,1.9136 6.1815,3.4974 6.1815,3.4974L6.1854,3.5083L6.1859,3.5208L6.5379,12.6571L6.5383,12.6680L6.5262,12.6745C6.3496,12.6368 5.8792,12.5483 5.6939,12.5139L-12.9736,9.0007L-31.9490,5.4680C-32.2394,5.4140 -32.5860,5.3672 -32.9730,5.3275C-15.5265,8.5529 -0.1415,11.4189 6.4943,12.6693C14.3998,14.1344 21.5670,15.4641 27.5014,16.5661Z"/></g><g transform="matrix(1.952557,-0.039466,0.136950,6.775553,280.153710,112.142252)"><path fill="url(#g2)" d="M55.6659,6.4255C49.3325,7.8733 41.6983,9.6175 33.2837,11.5374C26.1499,13.1924 9.5805,16.9922 -9.1873,21.2634C-8.8857,21.2202 -8.6122,21.1712 -8.3729,21.1164L11.9552,16.4571L32.1843,11.7945C32.2576,11.7778 32.3344,11.7607 32.4051,11.7456L32.5078,11.7240L33.3292,11.5301L32.4793,23.6471L32.4772,23.6773C32.4772,23.6773 32.0833,25.8510 27.4159,28.0205C25.2714,29.0173 22.0178,30.2444 16.6188,31.0912C11.2198,31.9380 3.9763,32.4083 -6.2164,32.3490L-22.8244,32.2522C-33.0615,32.1926 -40.1858,31.6500 -45.4122,30.7574C-46.5185,30.5685 -47.5265,30.3639 -48.4451,30.1489C-55.0983,31.6444 -61.3904,33.0519 -66.9809,34.2921C-57.5855,36.9791 -43.0565,39.0930 -23.3647,39.2077L-6.7586,39.3044C20.1327,39.4611 37.9902,35.7337 46.3756,31.8360C54.7609,27.9383 55.1650,23.9072 55.1650,23.9072L55.1751,23.8716L56.3098,7.6937C56.3410,7.2539 56.1108,6.8280 55.6659,6.4255Z"/></g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 7.2 KiB After Width: | Height: | Size: 5.9 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 12 KiB |
@@ -0,0 +1,120 @@
|
|||||||
|
// Loading splash: the animated Ultimo logo over a dark overlay while the app
|
||||||
|
// starts (markup and styles inline in index.html, so it paints before any script
|
||||||
|
// runs; this file is separate because the CSP allows no inline scripts). About
|
||||||
|
// 3.25 s in all: ~2.45 s to the finished logo, a short hold, then a .35 s fade.
|
||||||
|
// Desktop and tablet only; a click skips it. Source: frontend/icons/ultimo-splash.html.
|
||||||
|
(function () {
|
||||||
|
var SPEED = 1; // 1 = ~2.6 s to final logo; 0.8 = faster, 1.2 = slower
|
||||||
|
var HOLD_MS = 450; // how long the finished logo stays before the splash fades
|
||||||
|
|
||||||
|
var root = document.getElementById('ultimo-splash');
|
||||||
|
if (!root) return;
|
||||||
|
// Not on a phone (same query as useIsMobile), and not in a pop-out compose window.
|
||||||
|
var PHONE = '(max-width: 767px), (pointer: coarse) and (max-height: 500px)';
|
||||||
|
if ((window.matchMedia && matchMedia(PHONE).matches) || location.pathname.indexOf('/compose/') === 0) {
|
||||||
|
root.parentNode.removeChild(root);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var $ = function (id) { return document.getElementById(id); };
|
||||||
|
var env = $('ul-env'), rest = $('ul-rest'), fl = $('ul-fl'), fr = $('ul-fr'), fb = $('ul-fb'), ft = $('ul-ft');
|
||||||
|
var stroke = $('ul-stroke'), glow = $('ul-glow'), fin = $('ul-final');
|
||||||
|
var ug = $('ul-ug'), under = $('ul-under');
|
||||||
|
var ftg = $('ul-ftg'), fto = $('ul-fto'), dr = $('ul-dr'), dg = $('ul-dg'), db = $('ul-db');
|
||||||
|
|
||||||
|
// Envelope body edges (logo coordinates) and the four flaps.
|
||||||
|
var L = 10.093, R = 35.296, T = 11.066, B = 32.13, CX = 22.69, CY = 21.6;
|
||||||
|
var FLAPS = {
|
||||||
|
l: { axis: 'x', h: L, a: T, b: B, mid: CY, depth: 12.2, dir: -1, r: 3.2 },
|
||||||
|
r: { axis: 'x', h: R, a: T, b: B, mid: CY, depth: 12.2, dir: 1, r: 3.2 },
|
||||||
|
b: { axis: 'y', h: B, a: L, b: R, mid: CX, depth: 14.0, dir: 1, r: 3.6 }
|
||||||
|
};
|
||||||
|
var END = 2450; // ms (at SPEED 1) when the logo is fully formed
|
||||||
|
|
||||||
|
function clamp(x) { return x < 0 ? 0 : x > 1 ? 1 : x; }
|
||||||
|
function seg(t, a, b) { return clamp((t - a) / (b - a)); }
|
||||||
|
function ease(x) { return x < .5 ? 4 * x * x * x : 1 - Math.pow(-2 * x + 2, 3) / 2; }
|
||||||
|
function easeOut(x) { return 1 - Math.pow(1 - x, 3); }
|
||||||
|
function n(v) { return Math.round(v * 1000) / 1000; }
|
||||||
|
|
||||||
|
// Flap outline: base fixed exactly on the body edge, apex swings over the hinge, tip rounded.
|
||||||
|
function flapD(f, p) {
|
||||||
|
var s = Math.cos(Math.PI * p), ax, ay, A, C;
|
||||||
|
if (f.axis === 'x') { ax = f.h + f.dir * f.depth * s; ay = f.mid; A = [f.h, f.a]; C = [f.h, f.b]; }
|
||||||
|
else { ax = f.mid; ay = f.h + f.dir * f.depth * s; A = [f.a, f.h]; C = [f.b, f.h]; }
|
||||||
|
function toward(P) {
|
||||||
|
var dx = P[0] - ax, dy = P[1] - ay, l = Math.hypot(dx, dy) || 1, r = Math.min(f.r, l * 0.45);
|
||||||
|
return n(ax + dx * r / l) + ',' + n(ay + dy * r / l);
|
||||||
|
}
|
||||||
|
return 'M' + A[0] + ',' + A[1] + ' L' + toward(A) + ' Q' + n(ax) + ',' + n(ay) + ' ' + toward(C) +
|
||||||
|
' L' + C[0] + ',' + C[1] + ' Z';
|
||||||
|
}
|
||||||
|
// Paper shading: inner face (grey) before the flip, outer face (white) after it.
|
||||||
|
function faceC(p) {
|
||||||
|
var lift = Math.sin(Math.PI * p);
|
||||||
|
var c = Math.round(p < .5 ? 230 - 42 * lift : 250 - 36 * lift);
|
||||||
|
return 'rgb(' + c + ',' + c + ',' + (c + 3) + ')';
|
||||||
|
}
|
||||||
|
function setFlap(el, f, p) {
|
||||||
|
el.setAttribute('d', flapD(f, p));
|
||||||
|
el.setAttribute('fill', faceC(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
function render(ms) {
|
||||||
|
var intro = easeOut(seg(ms, 0, 220));
|
||||||
|
setFlap(fl, FLAPS.l, ease(seg(ms, 180, 560)));
|
||||||
|
setFlap(fr, FLAPS.r, ease(seg(ms, 240, 620)));
|
||||||
|
setFlap(fb, FLAPS.b, ease(seg(ms, 560, 920)));
|
||||||
|
var pt = ease(seg(ms, 880, 1260)), st = -Math.cos(Math.PI * pt);
|
||||||
|
if (Math.abs(st) < 0.001) st = 0.001;
|
||||||
|
// Top flap: white inside while open; once it flips past vertical its outside (logo colours) shows
|
||||||
|
ftg.setAttribute('transform', 'translate(0 ' + T + ') scale(1 ' + n(st) + ') translate(0 ' + (-T) + ')');
|
||||||
|
ft.setAttribute('fill', faceC(pt));
|
||||||
|
ft.setAttribute('opacity', pt >= 0.5 ? 0 : 1); // white inside face only while it faces the viewer
|
||||||
|
fto.setAttribute('opacity', pt >= 0.5 ? 1 : 0);
|
||||||
|
var slope = n(1 - 0.35 * Math.sin(Math.PI * pt));
|
||||||
|
dr.setAttribute('slope', slope); dg.setAttribute('slope', slope); db.setAttribute('slope', slope);
|
||||||
|
|
||||||
|
var draw = ease(seg(ms, 1180, 1800));
|
||||||
|
var fade = ease(seg(ms, 2150, 2450)); // white envelope (all but the top flap) vanishes after the logo has formed
|
||||||
|
var dis = ease(seg(ms, 1800, 2150)); // dissolve: U stroke + top flap -> final logo
|
||||||
|
var sc = 0.9 + 0.1 * intro;
|
||||||
|
env.setAttribute('transform', 'translate(22.5 22) scale(' + sc + ') translate(-22.5 -22)');
|
||||||
|
env.setAttribute('opacity', intro);
|
||||||
|
rest.setAttribute('opacity', 1 - fade);
|
||||||
|
ftg.setAttribute('opacity', 1 - fade); // coloured flap sits under the logo until the envelope goes
|
||||||
|
stroke.setAttribute('stroke-dashoffset', 1 - draw);
|
||||||
|
// Stroke stays solid under the logo while it dissolves in, then is removed once fully covered
|
||||||
|
ug.setAttribute('opacity', draw > 0 && dis < 1 ? 1 : 0);
|
||||||
|
under.setAttribute('opacity', draw > 0 ? 1 : 0);
|
||||||
|
fin.setAttribute('opacity', dis);
|
||||||
|
glow.setAttribute('opacity', 0.35 * Math.sin(Math.PI * seg(ms, 1900, 2450)));
|
||||||
|
}
|
||||||
|
|
||||||
|
var raf = 0, start = 0, hideTimer = 0;
|
||||||
|
function finish() {
|
||||||
|
cancelAnimationFrame(raf);
|
||||||
|
render(99999);
|
||||||
|
root.classList.add('is-done');
|
||||||
|
// Gone from the page once faded out (the .35 s opacity transition).
|
||||||
|
setTimeout(function () { if (root.parentNode) root.parentNode.removeChild(root); }, 400);
|
||||||
|
}
|
||||||
|
function tick(now) {
|
||||||
|
if (!start) start = now;
|
||||||
|
var ms = (now - start) / SPEED;
|
||||||
|
render(ms);
|
||||||
|
if (ms < END) raf = requestAnimationFrame(tick);
|
||||||
|
else hideTimer = setTimeout(finish, HOLD_MS);
|
||||||
|
}
|
||||||
|
function play() {
|
||||||
|
cancelAnimationFrame(raf); clearTimeout(hideTimer);
|
||||||
|
root.classList.remove('is-done');
|
||||||
|
start = 0; render(0);
|
||||||
|
if (window.matchMedia && matchMedia('(prefers-reduced-motion: reduce)').matches) {
|
||||||
|
render(99999); hideTimer = setTimeout(finish, 700); return;
|
||||||
|
}
|
||||||
|
raf = requestAnimationFrame(tick);
|
||||||
|
}
|
||||||
|
|
||||||
|
root.addEventListener('click', finish); // a click skips the intro
|
||||||
|
play();
|
||||||
|
})();
|
||||||
@@ -58,55 +58,55 @@
|
|||||||
id="mask1776-6"><path
|
id="mask1776-6"><path
|
||||||
style="fill:url(#linearGradient1789);fill-opacity:1;stroke-width:0.2;stroke-linecap:round"
|
style="fill:url(#linearGradient1789);fill-opacity:1;stroke-width:0.2;stroke-linecap:round"
|
||||||
d="m 18.20332,107.02297 c 0,0 1.930731,1.59986 4.989281,4.12846 1.725315,1.42637 3.809507,3.14827 6.108453,5.04523 5.657506,4.74616 33.20207,27.48506 33.558689,27.18811 0.241178,-0.20083 -16.275384,9.86387 -16.275384,9.86387 L 17.979141,140.69463 Z"
|
d="m 18.20332,107.02297 c 0,0 1.930731,1.59986 4.989281,4.12846 1.725315,1.42637 3.809507,3.14827 6.108453,5.04523 5.657506,4.74616 33.20207,27.48506 33.558689,27.18811 0.241178,-0.20083 -16.275384,9.86387 -16.275384,9.86387 L 17.979141,140.69463 Z"
|
||||||
id="path1776-1" /></mask><linearGradient
|
id="path1776-1" /></mask><radialGradient
|
||||||
xlink:href="#linearGradient11"
|
xlink:href="#linearGradient8-5"
|
||||||
id="linearGradient13-6"
|
id="radialGradient816-3"
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
gradientTransform="matrix(0.75684298,0,0,0.80151105,-18.692802,-93.278335)"
|
|
||||||
x1="54.340946"
|
|
||||||
y1="122.84999"
|
|
||||||
x2="54.340946"
|
|
||||||
y2="162.66415" /><radialGradient
|
|
||||||
xlink:href="#linearGradient8"
|
|
||||||
id="radialGradient816"
|
|
||||||
cx="8.0343275"
|
cx="8.0343275"
|
||||||
cy="13.452971"
|
cy="13.452971"
|
||||||
fx="8.0343275"
|
fx="8.0343275"
|
||||||
fy="13.452971"
|
fy="13.452971"
|
||||||
r="16.678839"
|
r="16.678839"
|
||||||
gradientTransform="matrix(-0.29271702,0.00410386,-0.01334442,-0.95181978,11.840139,23.950941)"
|
gradientTransform="matrix(-0.29273442,-0.00257918,0.01127876,-1.2801289,10.212159,-15.400302)"
|
||||||
gradientUnits="userSpaceOnUse" /><linearGradient
|
gradientUnits="userSpaceOnUse" /><linearGradient
|
||||||
id="linearGradient8"><stop
|
id="linearGradient8-5"><stop
|
||||||
style="stop-color:#fa7367;stop-opacity:1;"
|
style="stop-color:#fa4435;stop-opacity:1;"
|
||||||
offset="0"
|
offset="0"
|
||||||
id="stop8" /><stop
|
id="stop8-6" /><stop
|
||||||
style="stop-color:#fa7367;stop-opacity:0;"
|
style="stop-color:#fa7367;stop-opacity:0;"
|
||||||
offset="1"
|
offset="1"
|
||||||
id="stop9" /></linearGradient><radialGradient
|
id="stop9-2" /></linearGradient><radialGradient
|
||||||
xlink:href="#linearGradient6"
|
xlink:href="#linearGradient6-1"
|
||||||
id="radialGradient815"
|
id="radialGradient815-9"
|
||||||
cx="35.709007"
|
cx="34.523952"
|
||||||
cy="12.042645"
|
cy="11.253304"
|
||||||
fx="35.709007"
|
fx="34.523952"
|
||||||
fy="12.042645"
|
fy="11.253304"
|
||||||
r="16.740065"
|
r="16.740065"
|
||||||
gradientTransform="matrix(0.25712152,0.00260463,-0.00969379,0.95694375,26.644192,0.97301292)"
|
gradientTransform="matrix(0.27572675,-0.00557307,0.0193391,0.95679742,24.457243,-42.568342)"
|
||||||
gradientUnits="userSpaceOnUse" /><linearGradient
|
gradientUnits="userSpaceOnUse" /><linearGradient
|
||||||
id="linearGradient6"><stop
|
id="linearGradient6-1"><stop
|
||||||
style="stop-color:#fab23b;stop-opacity:1;"
|
style="stop-color:#fadc56;stop-opacity:1;"
|
||||||
offset="0"
|
offset="0"
|
||||||
id="stop6" /><stop
|
id="stop6-2" /><stop
|
||||||
style="stop-color:#fab23a;stop-opacity:0;"
|
style="stop-color:#faae3a;stop-opacity:0;"
|
||||||
offset="1"
|
offset="1"
|
||||||
id="stop7" /></linearGradient></defs><g
|
id="stop7-7" /></linearGradient><linearGradient
|
||||||
id="g816"
|
xlink:href="#linearGradient11"
|
||||||
transform="translate(0.128676,-0.079965)"><path
|
id="linearGradient1"
|
||||||
id="path1-2-1-1"
|
gradientUnits="userSpaceOnUse"
|
||||||
style="baseline-shift:baseline;display:inline;overflow:visible;vector-effect:none;fill:url(#linearGradient13-6);fill-opacity:1;stroke-width:0.778856;stroke-linecap:round;enable-background:accumulate;stop-color:#000000"
|
gradientTransform="matrix(0.75684298,0,0,0.80151105,-19.989667,-137.1)"
|
||||||
d="m 37.175189,4.174075 c -2.15234,-7.4e-4 -4.0678,1.84724 -4.0671,4.1266 v 2.85212 c -0.073,-0.005 -0.14656,-0.007 -0.2202,-0.007 h -10.50012 -10.49855 c -0.0418,-7e-5 -0.0835,5.9e-4 -0.12516,0.002 v -2.78918 c -1.6e-4,-2.27807 -1.9592601,-4.12477 -4.1103801,-4.12494 -2.15111,1.8e-4 -4.20874,1.84687 -4.2089,4.12494 v 15.55127 c -4e-5,0.005 -0.0295,3.84339 2.173,7.60498 2.20396,3.76402 7.0382001,7.38257 14.4526701,7.38257 h 4.58067 c 7.4177,0 12.26918,-3.66617 14.50586,-7.44221 2.23668,-3.77604 2.27039,-7.63481 2.27039,-7.63481 l 0.002,-0.0344 V 8.300605 c 7e-4,-2.27872 -2.10202,-4.12642 -4.25374,-4.1266 z m -2.00792,7.9252 v 11.59858 0.0286 c 0,0 -0.0664,2.0824 -1.31139,4.18416 -0.57202,0.96572 -1.44541,2.15762 -2.91767,2.99793 -1.47227,0.8403 -3.46066,1.33079 -6.27223,1.33079 h -4.58106 c -2.82381,0 -4.79864,-0.47938 -6.25697,-1.30429 -1.45833,-0.8249 -2.31357,-2.00343 -2.85901,-2.93496 -1.1966401,-2.04365 -1.2300401,-4.07193 -1.2300401,-4.07193 l -0.001,-0.0141 v -0.0157 -11.69637 l 1.96e-4,-0.0142 0.0035,-0.008 c 0.05128,0.0487 0.18806,0.16304 0.24192,0.20765 l 5.4247011,4.54513 5.51504,4.57144 c 0.65194,0.53945 2.27903,0.53945 2.93097,0 l 5.51504,-4.57144 5.487378,-4.57351 c 0.0199,-0.0164 0.04083,-0.0331 0.06003,-0.048 l 0.02765,-0.0215 z" /><path
|
x1="54.340946"
|
||||||
id="path1-2-1-9"
|
y1="122.84999"
|
||||||
style="baseline-shift:baseline;display:inline;overflow:visible;vector-effect:none;fill:url(#radialGradient816);fill-opacity:1;stroke-width:0.778856;stroke-linecap:round;enable-background:accumulate;stop-color:#000000"
|
x2="54.340946"
|
||||||
d="M 3.6452555,7.14375 C 3.5159759,7.5278714 3.4447807,7.9357538 3.444751,8.3586629 V 23.909652 c -4e-5,0.005 -0.029506,3.84363 2.172994,7.60522 2.20396,3.76402 7.038395,7.382495 14.452865,7.382495 h 4.580598 c 5.433936,0 9.490679,-1.96731 12.151197,-4.504117 -1.517177,-1.218257 -3.218664,-2.595334 -5.013648,-4.05505 -0.258984,0.201994 -0.541601,0.394146 -0.850594,0.570508 -1.47227,0.8403 -3.460398,1.330668 -6.271968,1.330668 h -4.581116 c -2.82381,0 -4.798652,-0.479403 -6.256982,-1.304313 -1.45833,-0.8249 -2.313817,-2.003692 -2.859257,-2.935222 -1.1966406,-2.04365 -1.2298996,-4.071586 -1.2298996,-4.071586 l -0.00103,-0.01395 v -0.01602 -11.696444 -0.01395 l 0.00362,-0.0083 c 0.05128,0.0487 0.1879857,0.16313 0.2418457,0.20774 l 5.4249919,4.545459 5.514909,4.571297 c 0.0844,0.06984 0.185312,0.130661 0.298173,0.182418 C 16.15064,17.512631 11.679239,13.804108 9.750826,12.186336 7.4531167,10.290397 5.3700283,8.5696704 3.6452555,7.14375 Z" /><path
|
y2="162.66415" /></defs><g
|
||||||
id="path1-2-1-7"
|
id="g1"
|
||||||
style="baseline-shift:baseline;display:inline;overflow:visible;vector-effect:none;fill:url(#radialGradient815);fill-opacity:1;stroke-width:0.778856;stroke-linecap:round;enable-background:accumulate;stop-color:#000000"
|
transform="translate(1.425541,43.741704)"><path
|
||||||
d="m 41.226941,7.09104 c -1.718284,1.4205409 -3.7895,3.131915 -6.072498,5.015715 -1.93499,1.62329 -6.430112,5.351263 -11.522294,9.54257 0.08232,-0.04302 0.156783,-0.0915 0.221692,-0.145211 l 5.514909,-4.571297 5.48752,-4.573881 c 0.0199,-0.0164 0.04075,-0.03316 0.05994,-0.04806 l 0.0279,-0.02119 0.222726,-0.190169 v 11.598258 0.02894 c 0,0 -0.06656,2.081964 -1.311548,4.183724 -0.57202,0.96572 -1.445392,2.157957 -2.917652,2.998267 -1.47227,0.8403 -3.460398,1.330668 -6.271968,1.330668 h -4.581116 c -2.82381,0 -4.798652,-0.479403 -6.256982,-1.304313 -0.308682,-0.174605 -0.590588,-0.364744 -0.848011,-0.565341 -1.805553,1.467965 -3.513225,2.849693 -5.0307002,4.067452 2.6425302,2.518552 6.6894502,4.460193 12.1212242,4.460193 h 4.580599 c 7.4177,0 12.269411,-3.665883 14.506091,-7.441923 2.23668,-3.77604 2.270146,-7.635193 2.270146,-7.635193 l 0.0021,-0.03411 V 8.3007853 C 41.429125,7.8798785 41.357396,7.4736084 41.226941,7.09104 Z" /></g></svg>
|
id="path1-2-1"
|
||||||
|
style="baseline-shift:baseline;display:inline;overflow:visible;vector-effect:none;fill:url(#linearGradient1);fill-opacity:1;stroke-width:0.778856;stroke-linecap:round;enable-background:accumulate;stop-color:#000000"
|
||||||
|
d="m 35.878324,-39.647594 c -2.15234,-7.4e-4 -4.0678,1.84724 -4.0671,4.1266 v 2.85212 c -0.073,-0.005 -0.14656,-0.007 -0.2202,-0.007 h -10.50012 -10.49855 c -0.0418,-7e-5 -0.0835,5.9e-4 -0.12516,0.002 v -2.78918 c -1.6e-4,-2.27807 -1.9592603,-4.12477 -4.1103803,-4.12494 -2.15111,1.8e-4 -4.20874,1.84687 -4.2089,4.12494 v 15.55127 c -4e-5,0.005 -0.0295,3.84339 2.173,7.60498 2.20396,3.7640196 7.0382003,7.3825696 14.4526703,7.3825696 h 4.58067 c 7.4177,0 12.26918,-3.66617 14.50586,-7.4422096 2.23668,-3.77604 2.27039,-7.63481 2.27039,-7.63481 l 0.002,-0.0344 v -15.48541 c 7e-4,-2.27872 -2.10202,-4.12642 -4.25374,-4.1266 z m -2.00792,7.9252 v 11.59858 0.0286 c 0,0 -0.0664,2.0824 -1.31139,4.18416 -0.57202,0.96572 -1.44541,2.15762 -2.91767,2.99793 -1.47227,0.8403 -3.46066,1.33079 -6.27223,1.33079 h -4.58106 c -2.82381,0 -4.79864,-0.47938 -6.25697,-1.30429 -1.45833,-0.8249 -2.31357,-2.00343 -2.8590102,-2.93496 -1.1966401,-2.04365 -1.2300401,-4.07193 -1.2300401,-4.07193 l -10e-4,-0.0141 v -0.0157 -11.69637 l 1.96e-4,-0.0142 0.0035,-0.008 c 0.05128,0.0487 0.18806,0.16304 0.24192,0.20765 l 5.4247013,4.54513 5.51504,4.57144 c 0.65194,0.53945 2.27903,0.53945 2.93097,0 l 5.51504,-4.57144 5.487378,-4.57351 c 0.0199,-0.0164 0.04083,-0.0331 0.06003,-0.048 l 0.02765,-0.0215 z" /><path
|
||||||
|
id="path1-2-1-9-9"
|
||||||
|
style="baseline-shift:baseline;display:inline;overflow:visible;vector-effect:none;fill:url(#radialGradient816-3);fill-opacity:1;stroke-width:0.778856;stroke-linecap:round;enable-background:accumulate;stop-color:#000000"
|
||||||
|
d="m 2.3483903,-36.677919 c -0.1292796,0.384121 -0.2004748,0.792004 -0.2005045,1.214913 v 15.550989 c -4e-5,0.005 -0.029506,3.84363 2.172994,7.60522 2.20396,3.7640196 7.0383952,7.3824946 14.4528652,7.3824946 h 4.580598 c 5.433936,0 9.490679,-1.96731 12.151197,-4.504117 -1.517177,-1.2182566 -3.218664,-2.5953336 -5.013648,-4.0550496 -0.258984,0.201994 -0.541601,0.394146 -0.850594,0.570508 -1.47227,0.8403 -3.460398,1.330668 -6.271968,1.330668 h -4.581116 c -2.82381,0 -4.798652,-0.479403 -6.256982,-1.304313 -1.45833,-0.8249 -2.313817,-2.003692 -2.8592572,-2.935222 -1.1966406,-2.04365 -1.2298996,-4.071586 -1.2298996,-4.071586 l -0.00103,-0.01395 v -0.01602 -11.696444 -0.01395 l 0.00362,-0.0083 c 0.05128,0.0487 0.1879857,0.16313 0.2418457,0.20774 l 5.4249921,4.545459 5.514909,4.571297 c 0.0844,0.06984 0.185312,0.130661 0.298173,0.182418 -5.07081,-4.173874 -9.542211,-7.882397 -11.4706242,-9.500169 -2.2977093,-1.895939 -4.3807977,-3.616666 -6.1055705,-5.042586 z" /><path
|
||||||
|
id="path1-2-1-7-3"
|
||||||
|
style="baseline-shift:baseline;display:inline;overflow:visible;vector-effect:none;fill:url(#radialGradient815-9);fill-opacity:1;stroke-width:0.778856;stroke-linecap:round;enable-background:accumulate;stop-color:#000000"
|
||||||
|
d="m 39.930076,-36.730629 c -1.718284,1.420541 -3.7895,3.131915 -6.072498,5.015715 -1.93499,1.62329 -6.430112,5.351263 -11.522294,9.54257 0.08232,-0.04302 0.156783,-0.0915 0.221692,-0.145211 l 5.514909,-4.571297 5.48752,-4.573881 c 0.0199,-0.0164 0.04075,-0.03316 0.05994,-0.04806 l 0.0279,-0.02119 0.222726,-0.190169 v 11.598258 0.02894 c 0,0 -0.06656,2.081964 -1.311548,4.183724 -0.57202,0.96572 -1.445392,2.157957 -2.917652,2.998267 -1.47227,0.8403 -3.460398,1.330668 -6.271968,1.330668 h -4.581116 c -2.82381,0 -4.798652,-0.479403 -6.256982,-1.304313 -0.308682,-0.174605 -0.590588,-0.364744 -0.848011,-0.565341 -1.8055532,1.467965 -3.5132252,2.849693 -5.0307004,4.0674516 2.6425302,2.518552 6.6894504,4.460193 12.1212244,4.460193 h 4.580599 c 7.4177,0 12.269411,-3.665883 14.506091,-7.4419226 2.23668,-3.77604 2.270146,-7.635193 2.270146,-7.635193 l 0.0021,-0.03411 v -15.485354 c 1.06e-4,-0.420906 -0.07162,-0.827177 -0.202078,-1.209745 z" /></g></svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 7.9 KiB After Width: | Height: | Size: 7.9 KiB |
@@ -58,55 +58,55 @@
|
|||||||
id="mask1776-6"><path
|
id="mask1776-6"><path
|
||||||
style="fill:url(#linearGradient1789);fill-opacity:1;stroke-width:0.2;stroke-linecap:round"
|
style="fill:url(#linearGradient1789);fill-opacity:1;stroke-width:0.2;stroke-linecap:round"
|
||||||
d="m 18.20332,107.02297 c 0,0 1.930731,1.59986 4.989281,4.12846 1.725315,1.42637 3.809507,3.14827 6.108453,5.04523 5.657506,4.74616 33.20207,27.48506 33.558689,27.18811 0.241178,-0.20083 -16.275384,9.86387 -16.275384,9.86387 L 17.979141,140.69463 Z"
|
d="m 18.20332,107.02297 c 0,0 1.930731,1.59986 4.989281,4.12846 1.725315,1.42637 3.809507,3.14827 6.108453,5.04523 5.657506,4.74616 33.20207,27.48506 33.558689,27.18811 0.241178,-0.20083 -16.275384,9.86387 -16.275384,9.86387 L 17.979141,140.69463 Z"
|
||||||
id="path1776-1" /></mask><linearGradient
|
id="path1776-1" /></mask><radialGradient
|
||||||
xlink:href="#linearGradient11"
|
xlink:href="#linearGradient8-5"
|
||||||
id="linearGradient13-6"
|
id="radialGradient816-3"
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
gradientTransform="matrix(0.75684298,0,0,0.80151105,-18.692802,-93.278335)"
|
|
||||||
x1="54.340946"
|
|
||||||
y1="122.84999"
|
|
||||||
x2="54.340946"
|
|
||||||
y2="162.66415" /><radialGradient
|
|
||||||
xlink:href="#linearGradient8"
|
|
||||||
id="radialGradient816"
|
|
||||||
cx="8.0343275"
|
cx="8.0343275"
|
||||||
cy="13.452971"
|
cy="13.452971"
|
||||||
fx="8.0343275"
|
fx="8.0343275"
|
||||||
fy="13.452971"
|
fy="13.452971"
|
||||||
r="16.678839"
|
r="16.678839"
|
||||||
gradientTransform="matrix(-0.29271702,0.00410386,-0.01334442,-0.95181978,11.840139,23.950941)"
|
gradientTransform="matrix(-0.29273442,-0.00257918,0.01127876,-1.2801289,10.212159,-15.400302)"
|
||||||
gradientUnits="userSpaceOnUse" /><linearGradient
|
gradientUnits="userSpaceOnUse" /><linearGradient
|
||||||
id="linearGradient8"><stop
|
id="linearGradient8-5"><stop
|
||||||
style="stop-color:#fa7367;stop-opacity:1;"
|
style="stop-color:#fa4435;stop-opacity:1;"
|
||||||
offset="0"
|
offset="0"
|
||||||
id="stop8" /><stop
|
id="stop8-6" /><stop
|
||||||
style="stop-color:#fa7367;stop-opacity:0;"
|
style="stop-color:#fa7367;stop-opacity:0;"
|
||||||
offset="1"
|
offset="1"
|
||||||
id="stop9" /></linearGradient><radialGradient
|
id="stop9-2" /></linearGradient><radialGradient
|
||||||
xlink:href="#linearGradient6"
|
xlink:href="#linearGradient6-1"
|
||||||
id="radialGradient815"
|
id="radialGradient815-9"
|
||||||
cx="35.709007"
|
cx="34.523952"
|
||||||
cy="12.042645"
|
cy="11.253304"
|
||||||
fx="35.709007"
|
fx="34.523952"
|
||||||
fy="12.042645"
|
fy="11.253304"
|
||||||
r="16.740065"
|
r="16.740065"
|
||||||
gradientTransform="matrix(0.25712152,0.00260463,-0.00969379,0.95694375,26.644192,0.97301292)"
|
gradientTransform="matrix(0.27572675,-0.00557307,0.0193391,0.95679742,24.457243,-42.568342)"
|
||||||
gradientUnits="userSpaceOnUse" /><linearGradient
|
gradientUnits="userSpaceOnUse" /><linearGradient
|
||||||
id="linearGradient6"><stop
|
id="linearGradient6-1"><stop
|
||||||
style="stop-color:#fab23b;stop-opacity:1;"
|
style="stop-color:#fadc56;stop-opacity:1;"
|
||||||
offset="0"
|
offset="0"
|
||||||
id="stop6" /><stop
|
id="stop6-2" /><stop
|
||||||
style="stop-color:#fab23a;stop-opacity:0;"
|
style="stop-color:#faae3a;stop-opacity:0;"
|
||||||
offset="1"
|
offset="1"
|
||||||
id="stop7" /></linearGradient></defs><g
|
id="stop7-7" /></linearGradient><linearGradient
|
||||||
id="g816"
|
xlink:href="#linearGradient11"
|
||||||
transform="translate(0.128676,-0.079965)"><path
|
id="linearGradient1"
|
||||||
id="path1-2-1-1"
|
gradientUnits="userSpaceOnUse"
|
||||||
style="baseline-shift:baseline;display:inline;overflow:visible;vector-effect:none;fill:url(#linearGradient13-6);fill-opacity:1;stroke-width:0.778856;stroke-linecap:round;enable-background:accumulate;stop-color:#000000"
|
gradientTransform="matrix(0.75684298,0,0,0.80151105,-19.989667,-137.1)"
|
||||||
d="m 37.175189,4.174075 c -2.15234,-7.4e-4 -4.0678,1.84724 -4.0671,4.1266 v 2.85212 c -0.073,-0.005 -0.14656,-0.007 -0.2202,-0.007 h -10.50012 -10.49855 c -0.0418,-7e-5 -0.0835,5.9e-4 -0.12516,0.002 v -2.78918 c -1.6e-4,-2.27807 -1.9592601,-4.12477 -4.1103801,-4.12494 -2.15111,1.8e-4 -4.20874,1.84687 -4.2089,4.12494 v 15.55127 c -4e-5,0.005 -0.0295,3.84339 2.173,7.60498 2.20396,3.76402 7.0382001,7.38257 14.4526701,7.38257 h 4.58067 c 7.4177,0 12.26918,-3.66617 14.50586,-7.44221 2.23668,-3.77604 2.27039,-7.63481 2.27039,-7.63481 l 0.002,-0.0344 V 8.300605 c 7e-4,-2.27872 -2.10202,-4.12642 -4.25374,-4.1266 z m -2.00792,7.9252 v 11.59858 0.0286 c 0,0 -0.0664,2.0824 -1.31139,4.18416 -0.57202,0.96572 -1.44541,2.15762 -2.91767,2.99793 -1.47227,0.8403 -3.46066,1.33079 -6.27223,1.33079 h -4.58106 c -2.82381,0 -4.79864,-0.47938 -6.25697,-1.30429 -1.45833,-0.8249 -2.31357,-2.00343 -2.85901,-2.93496 -1.1966401,-2.04365 -1.2300401,-4.07193 -1.2300401,-4.07193 l -0.001,-0.0141 v -0.0157 -11.69637 l 1.96e-4,-0.0142 0.0035,-0.008 c 0.05128,0.0487 0.18806,0.16304 0.24192,0.20765 l 5.4247011,4.54513 5.51504,4.57144 c 0.65194,0.53945 2.27903,0.53945 2.93097,0 l 5.51504,-4.57144 5.487378,-4.57351 c 0.0199,-0.0164 0.04083,-0.0331 0.06003,-0.048 l 0.02765,-0.0215 z" /><path
|
x1="54.340946"
|
||||||
id="path1-2-1-9"
|
y1="122.84999"
|
||||||
style="baseline-shift:baseline;display:inline;overflow:visible;vector-effect:none;fill:url(#radialGradient816);fill-opacity:1;stroke-width:0.778856;stroke-linecap:round;enable-background:accumulate;stop-color:#000000"
|
x2="54.340946"
|
||||||
d="M 3.6452555,7.14375 C 3.5159759,7.5278714 3.4447807,7.9357538 3.444751,8.3586629 V 23.909652 c -4e-5,0.005 -0.029506,3.84363 2.172994,7.60522 2.20396,3.76402 7.038395,7.382495 14.452865,7.382495 h 4.580598 c 5.433936,0 9.490679,-1.96731 12.151197,-4.504117 -1.517177,-1.218257 -3.218664,-2.595334 -5.013648,-4.05505 -0.258984,0.201994 -0.541601,0.394146 -0.850594,0.570508 -1.47227,0.8403 -3.460398,1.330668 -6.271968,1.330668 h -4.581116 c -2.82381,0 -4.798652,-0.479403 -6.256982,-1.304313 -1.45833,-0.8249 -2.313817,-2.003692 -2.859257,-2.935222 -1.1966406,-2.04365 -1.2298996,-4.071586 -1.2298996,-4.071586 l -0.00103,-0.01395 v -0.01602 -11.696444 -0.01395 l 0.00362,-0.0083 c 0.05128,0.0487 0.1879857,0.16313 0.2418457,0.20774 l 5.4249919,4.545459 5.514909,4.571297 c 0.0844,0.06984 0.185312,0.130661 0.298173,0.182418 C 16.15064,17.512631 11.679239,13.804108 9.750826,12.186336 7.4531167,10.290397 5.3700283,8.5696704 3.6452555,7.14375 Z" /><path
|
y2="162.66415" /></defs><g
|
||||||
id="path1-2-1-7"
|
id="g1"
|
||||||
style="baseline-shift:baseline;display:inline;overflow:visible;vector-effect:none;fill:url(#radialGradient815);fill-opacity:1;stroke-width:0.778856;stroke-linecap:round;enable-background:accumulate;stop-color:#000000"
|
transform="translate(1.425541,43.741704)"><path
|
||||||
d="m 41.226941,7.09104 c -1.718284,1.4205409 -3.7895,3.131915 -6.072498,5.015715 -1.93499,1.62329 -6.430112,5.351263 -11.522294,9.54257 0.08232,-0.04302 0.156783,-0.0915 0.221692,-0.145211 l 5.514909,-4.571297 5.48752,-4.573881 c 0.0199,-0.0164 0.04075,-0.03316 0.05994,-0.04806 l 0.0279,-0.02119 0.222726,-0.190169 v 11.598258 0.02894 c 0,0 -0.06656,2.081964 -1.311548,4.183724 -0.57202,0.96572 -1.445392,2.157957 -2.917652,2.998267 -1.47227,0.8403 -3.460398,1.330668 -6.271968,1.330668 h -4.581116 c -2.82381,0 -4.798652,-0.479403 -6.256982,-1.304313 -0.308682,-0.174605 -0.590588,-0.364744 -0.848011,-0.565341 -1.805553,1.467965 -3.513225,2.849693 -5.0307002,4.067452 2.6425302,2.518552 6.6894502,4.460193 12.1212242,4.460193 h 4.580599 c 7.4177,0 12.269411,-3.665883 14.506091,-7.441923 2.23668,-3.77604 2.270146,-7.635193 2.270146,-7.635193 l 0.0021,-0.03411 V 8.3007853 C 41.429125,7.8798785 41.357396,7.4736084 41.226941,7.09104 Z" /></g></svg>
|
id="path1-2-1"
|
||||||
|
style="baseline-shift:baseline;display:inline;overflow:visible;vector-effect:none;fill:url(#linearGradient1);fill-opacity:1;stroke-width:0.778856;stroke-linecap:round;enable-background:accumulate;stop-color:#000000"
|
||||||
|
d="m 35.878324,-39.647594 c -2.15234,-7.4e-4 -4.0678,1.84724 -4.0671,4.1266 v 2.85212 c -0.073,-0.005 -0.14656,-0.007 -0.2202,-0.007 h -10.50012 -10.49855 c -0.0418,-7e-5 -0.0835,5.9e-4 -0.12516,0.002 v -2.78918 c -1.6e-4,-2.27807 -1.9592603,-4.12477 -4.1103803,-4.12494 -2.15111,1.8e-4 -4.20874,1.84687 -4.2089,4.12494 v 15.55127 c -4e-5,0.005 -0.0295,3.84339 2.173,7.60498 2.20396,3.7640196 7.0382003,7.3825696 14.4526703,7.3825696 h 4.58067 c 7.4177,0 12.26918,-3.66617 14.50586,-7.4422096 2.23668,-3.77604 2.27039,-7.63481 2.27039,-7.63481 l 0.002,-0.0344 v -15.48541 c 7e-4,-2.27872 -2.10202,-4.12642 -4.25374,-4.1266 z m -2.00792,7.9252 v 11.59858 0.0286 c 0,0 -0.0664,2.0824 -1.31139,4.18416 -0.57202,0.96572 -1.44541,2.15762 -2.91767,2.99793 -1.47227,0.8403 -3.46066,1.33079 -6.27223,1.33079 h -4.58106 c -2.82381,0 -4.79864,-0.47938 -6.25697,-1.30429 -1.45833,-0.8249 -2.31357,-2.00343 -2.8590102,-2.93496 -1.1966401,-2.04365 -1.2300401,-4.07193 -1.2300401,-4.07193 l -10e-4,-0.0141 v -0.0157 -11.69637 l 1.96e-4,-0.0142 0.0035,-0.008 c 0.05128,0.0487 0.18806,0.16304 0.24192,0.20765 l 5.4247013,4.54513 5.51504,4.57144 c 0.65194,0.53945 2.27903,0.53945 2.93097,0 l 5.51504,-4.57144 5.487378,-4.57351 c 0.0199,-0.0164 0.04083,-0.0331 0.06003,-0.048 l 0.02765,-0.0215 z" /><path
|
||||||
|
id="path1-2-1-9-9"
|
||||||
|
style="baseline-shift:baseline;display:inline;overflow:visible;vector-effect:none;fill:url(#radialGradient816-3);fill-opacity:1;stroke-width:0.778856;stroke-linecap:round;enable-background:accumulate;stop-color:#000000"
|
||||||
|
d="m 2.3483903,-36.677919 c -0.1292796,0.384121 -0.2004748,0.792004 -0.2005045,1.214913 v 15.550989 c -4e-5,0.005 -0.029506,3.84363 2.172994,7.60522 2.20396,3.7640196 7.0383952,7.3824946 14.4528652,7.3824946 h 4.580598 c 5.433936,0 9.490679,-1.96731 12.151197,-4.504117 -1.517177,-1.2182566 -3.218664,-2.5953336 -5.013648,-4.0550496 -0.258984,0.201994 -0.541601,0.394146 -0.850594,0.570508 -1.47227,0.8403 -3.460398,1.330668 -6.271968,1.330668 h -4.581116 c -2.82381,0 -4.798652,-0.479403 -6.256982,-1.304313 -1.45833,-0.8249 -2.313817,-2.003692 -2.8592572,-2.935222 -1.1966406,-2.04365 -1.2298996,-4.071586 -1.2298996,-4.071586 l -0.00103,-0.01395 v -0.01602 -11.696444 -0.01395 l 0.00362,-0.0083 c 0.05128,0.0487 0.1879857,0.16313 0.2418457,0.20774 l 5.4249921,4.545459 5.514909,4.571297 c 0.0844,0.06984 0.185312,0.130661 0.298173,0.182418 -5.07081,-4.173874 -9.542211,-7.882397 -11.4706242,-9.500169 -2.2977093,-1.895939 -4.3807977,-3.616666 -6.1055705,-5.042586 z" /><path
|
||||||
|
id="path1-2-1-7-3"
|
||||||
|
style="baseline-shift:baseline;display:inline;overflow:visible;vector-effect:none;fill:url(#radialGradient815-9);fill-opacity:1;stroke-width:0.778856;stroke-linecap:round;enable-background:accumulate;stop-color:#000000"
|
||||||
|
d="m 39.930076,-36.730629 c -1.718284,1.420541 -3.7895,3.131915 -6.072498,5.015715 -1.93499,1.62329 -6.430112,5.351263 -11.522294,9.54257 0.08232,-0.04302 0.156783,-0.0915 0.221692,-0.145211 l 5.514909,-4.571297 5.48752,-4.573881 c 0.0199,-0.0164 0.04075,-0.03316 0.05994,-0.04806 l 0.0279,-0.02119 0.222726,-0.190169 v 11.598258 0.02894 c 0,0 -0.06656,2.081964 -1.311548,4.183724 -0.57202,0.96572 -1.445392,2.157957 -2.917652,2.998267 -1.47227,0.8403 -3.460398,1.330668 -6.271968,1.330668 h -4.581116 c -2.82381,0 -4.798652,-0.479403 -6.256982,-1.304313 -0.308682,-0.174605 -0.590588,-0.364744 -0.848011,-0.565341 -1.8055532,1.467965 -3.5132252,2.849693 -5.0307004,4.0674516 2.6425302,2.518552 6.6894504,4.460193 12.1212244,4.460193 h 4.580599 c 7.4177,0 12.269411,-3.665883 14.506091,-7.4419226 2.23668,-3.77604 2.270146,-7.635193 2.270146,-7.635193 l 0.0021,-0.03411 v -15.485354 c 1.06e-4,-0.420906 -0.07162,-0.827177 -0.202078,-1.209745 z" /></g></svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 7.9 KiB After Width: | Height: | Size: 7.9 KiB |