redesign: project home, default theme, user settings, groups removed from UI
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
4b913eb53f
commit
acba5c819b
|
|
@ -117,7 +117,7 @@ function createMainWindow(): void {
|
||||||
title: 'Roject',
|
title: 'Roject',
|
||||||
} );
|
} );
|
||||||
|
|
||||||
mainWindow.loadURL( `http://localhost:${PORT}/dashboard.html` );
|
mainWindow.loadURL( `http://localhost:${PORT}/` );
|
||||||
|
|
||||||
const localBase = `http://localhost:${PORT}/`;
|
const localBase = `http://localhost:${PORT}/`;
|
||||||
|
|
||||||
|
|
@ -137,7 +137,7 @@ function createMainWindow(): void {
|
||||||
if ( url.includes( '/api/auth/refresh-session' ) ) {
|
if ( url.includes( '/api/auth/refresh-session' ) ) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
const redirectParam = new URL( url ).searchParams.get( 'redirect' );
|
const redirectParam = new URL( url ).searchParams.get( 'redirect' );
|
||||||
const fallback = `http://localhost:${PORT}/dashboard.html`;
|
const fallback = `http://localhost:${PORT}/`;
|
||||||
|
|
||||||
if ( currentTokens ) {
|
if ( currentTokens ) {
|
||||||
const fresh = await refreshTokens( currentTokens.refreshToken );
|
const fresh = await refreshTokens( currentTokens.refreshToken );
|
||||||
|
|
|
||||||
|
|
@ -66,7 +66,7 @@ class EditorShell extends HTMLElement {
|
||||||
|
|
||||||
this.innerHTML = `
|
this.innerHTML = `
|
||||||
<div class="es-header">
|
<div class="es-header">
|
||||||
<a class="es-back" href="/projects.html">←</a>
|
<a class="es-back" href="/">←</a>
|
||||||
<span class="es-title">${projectName}</span>
|
<span class="es-title">${projectName}</span>
|
||||||
<div class="es-portrait-btns">
|
<div class="es-portrait-btns">
|
||||||
<button class="es-pb-btn" data-panel="left">⊟</button>
|
<button class="es-pb-btn" data-panel="left">⊟</button>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,46 @@
|
||||||
|
project-home {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
min-height: 100vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ph-hero {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
height: 100vh;
|
||||||
|
background: radial-gradient( ellipse at 40% 35%, #282b3c 0%, #000 70% );
|
||||||
|
gap: 2.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ph-brand {
|
||||||
|
font-family: 'Barlow', sans-serif;
|
||||||
|
font-weight: 900;
|
||||||
|
font-style: italic;
|
||||||
|
font-size: clamp( 3rem, 12vw, 7rem );
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.03em;
|
||||||
|
color: #fff;
|
||||||
|
text-shadow: 0 0 80px rgba( 255, 255, 255, 0.12 );
|
||||||
|
}
|
||||||
|
|
||||||
|
.ph-login {
|
||||||
|
font-family: 'Barlow', sans-serif;
|
||||||
|
font-weight: 700;
|
||||||
|
font-style: italic;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.1em;
|
||||||
|
font-size: 1rem;
|
||||||
|
color: rgba( 255, 255, 255, 0.6 );
|
||||||
|
text-decoration: none;
|
||||||
|
padding: 0.65rem 2.2rem;
|
||||||
|
border: 1px solid rgba( 255, 255, 255, 0.25 );
|
||||||
|
border-radius: 4px;
|
||||||
|
transition: border-color 0.2s, color 0.2s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ph-login:hover {
|
||||||
|
border-color: rgba( 255, 255, 255, 0.7 );
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,52 @@
|
||||||
|
const AUTH_HOST = 'https://account.rokojori.com';
|
||||||
|
const APP_URL = 'https://roject.rokojori.com';
|
||||||
|
|
||||||
|
interface JwtUser {
|
||||||
|
userId: string;
|
||||||
|
email: string;
|
||||||
|
roles: string[];
|
||||||
|
products: string[];
|
||||||
|
}
|
||||||
|
|
||||||
|
class ProjectHome extends HTMLElement {
|
||||||
|
async connectedCallback(): Promise<void> {
|
||||||
|
const res = await fetch( '/api/auth/me' );
|
||||||
|
|
||||||
|
if ( !res.ok ) {
|
||||||
|
const loginHref = `${ AUTH_HOST }/login.html?redirect=${ encodeURIComponent( APP_URL ) }`;
|
||||||
|
this.innerHTML = `
|
||||||
|
<div class="ph-hero">
|
||||||
|
<h1 class="ph-brand">Roject</h1>
|
||||||
|
<a class="ph-login" href="${ loginHref }">Log in</a>
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const user = await res.json() as JwtUser;
|
||||||
|
const settingsRes = await fetch( '/api/user/settings' );
|
||||||
|
const settings = settingsRes.ok ? await settingsRes.json() as Record<string, unknown> : {};
|
||||||
|
|
||||||
|
const theme = ( settings[ 'theme' ] as string | undefined ) ?? 'default';
|
||||||
|
await this.loadTheme( theme, user );
|
||||||
|
}
|
||||||
|
|
||||||
|
private async loadTheme( theme: string, user: JwtUser ): Promise<void> {
|
||||||
|
if ( theme === 'italic-neon' ) {
|
||||||
|
const italicNeonPath = '../project-list-italic-neon/project-list-italic-neon.js';
|
||||||
|
await import( italicNeonPath );
|
||||||
|
const el = document.createElement( 'project-list-italic-neon' ) as HTMLElement & { user: JwtUser };
|
||||||
|
el.user = user;
|
||||||
|
this.appendChild( el );
|
||||||
|
} else {
|
||||||
|
await import( '../project-list-default/project-list-default.js' );
|
||||||
|
const el = document.createElement( 'project-list-default' ) as HTMLElement & { user: JwtUser };
|
||||||
|
el.user = user;
|
||||||
|
this.appendChild( el );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
customElements.define( 'project-home', ProjectHome );
|
||||||
|
|
||||||
|
export {};
|
||||||
|
|
@ -0,0 +1,460 @@
|
||||||
|
project-list-default {
|
||||||
|
display: block;
|
||||||
|
min-height: 100vh;
|
||||||
|
background: radial-gradient( ellipse at 40% 35%, #282b3c 0%, #000 70% );
|
||||||
|
color: #fff;
|
||||||
|
overflow-x: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ── Nav ─────────────────────────────────── */
|
||||||
|
|
||||||
|
.pld-nav {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
padding: 0 2rem;
|
||||||
|
height: 84px;
|
||||||
|
position: fixed;
|
||||||
|
overflow: visible;
|
||||||
|
width: 100vw;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Logo: wrapper = inner area (570×240 at 0.35x = 200×84).
|
||||||
|
Full image (1592×637 at 0.35x = 557×223) positioned so inner
|
||||||
|
area aligns with wrapper — decorative FX bleed outside. */
|
||||||
|
.pld-logo-wrap {
|
||||||
|
position: relative;
|
||||||
|
width: 200px;
|
||||||
|
height: 84px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
overflow: visible;
|
||||||
|
margin-left: -40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pld-logo {
|
||||||
|
width: 557px;
|
||||||
|
height: auto;
|
||||||
|
position: absolute;
|
||||||
|
left: -179px;
|
||||||
|
top: -69px;
|
||||||
|
pointer-events: none;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* User group — email + logout, whole thing is one click target */
|
||||||
|
.pld-user-group {
|
||||||
|
position: relative;
|
||||||
|
margin-left: auto;
|
||||||
|
text-decoration: none;
|
||||||
|
cursor: pointer;
|
||||||
|
display: block;
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pld-email {
|
||||||
|
display: block;
|
||||||
|
font-size: 0.82rem;
|
||||||
|
color: rgba( 255, 255, 255, 0.38 );
|
||||||
|
transition: color 0.15s;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pld-user-group:hover .pld-email {
|
||||||
|
color: rgba( 255, 255, 255, 0.7 );
|
||||||
|
}
|
||||||
|
|
||||||
|
.pld-logout-label {
|
||||||
|
position: absolute;
|
||||||
|
top: 100%;
|
||||||
|
right: 0;
|
||||||
|
margin-top: 0.35em;
|
||||||
|
font-family: 'Barlow', sans-serif;
|
||||||
|
font-weight: 700;
|
||||||
|
font-style: italic;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.08em;
|
||||||
|
font-size: 1.25rem;
|
||||||
|
color: rgba( 255, 255, 255, 0.55 );
|
||||||
|
white-space: nowrap;
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateY( -5px );
|
||||||
|
transition: opacity 0.15s, transform 0.15s;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.pld-user-group:hover .pld-logout-label {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translateY( 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ── Main layout ─────────────────────────── */
|
||||||
|
|
||||||
|
.pld-main {
|
||||||
|
padding: 2.5rem 2rem 5rem;
|
||||||
|
max-width: 80em;
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ── Project list ────────────────────────── */
|
||||||
|
|
||||||
|
.pld-list {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 0.1rem;
|
||||||
|
margin-bottom: 3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes pld-row-in {
|
||||||
|
from { opacity: 0; transform: translateX( -18px ); }
|
||||||
|
to { opacity: 1; transform: translateX( 0 ); }
|
||||||
|
}
|
||||||
|
|
||||||
|
.pld-row {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 1.5rem;
|
||||||
|
padding: 2rem 2rem;
|
||||||
|
cursor: pointer;
|
||||||
|
border-radius: 26px;
|
||||||
|
position: relative;
|
||||||
|
animation: pld-row-in 0.32s cubic-bezier( 0.22, 0.68, 0, 1.15 ) both;
|
||||||
|
transition: background 0.18s;
|
||||||
|
overflow: visible;
|
||||||
|
margin: 0.5em 0em
|
||||||
|
}
|
||||||
|
|
||||||
|
.pld-row:hover .pld-name
|
||||||
|
{
|
||||||
|
text-shadow: 0em 0.03em 0.2em hsl(200, 90%, 10%);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.pld-row:hover {
|
||||||
|
background: rgba( 255, 255, 255, 0.035 );
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ── Badge ───────────────────────────────── */
|
||||||
|
|
||||||
|
.pld-badge-wrap {
|
||||||
|
position: relative;
|
||||||
|
flex-shrink: 0;
|
||||||
|
width: 7em;
|
||||||
|
height: 7em;
|
||||||
|
margin-right: 1.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pld-badge {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
border-radius: 15%;
|
||||||
|
background: radial-gradient(circle at 38% 37%, color-mix(in srgb, var(--project-color) 51%, transparent), var(--project-color));
|
||||||
|
}
|
||||||
|
|
||||||
|
.new-project .pld-badge {
|
||||||
|
outline-style: dashed;
|
||||||
|
outline-width: 0.3em;
|
||||||
|
outline-color: #fff;
|
||||||
|
outline-offset: 2px;
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.new-project .pld-name {
|
||||||
|
color: rgba( 255, 255, 255, 0.8 );
|
||||||
|
}
|
||||||
|
|
||||||
|
.new-project:hover .pld-name {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.new-project .pld-btn-delete,
|
||||||
|
.new-project .pld-btn-members {
|
||||||
|
display: none;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Create project dialog overlay */
|
||||||
|
.pld-create-overlay {
|
||||||
|
position: fixed;
|
||||||
|
inset: 0;
|
||||||
|
background: rgba( 0, 0, 0, 0.72 );
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
z-index: 200;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pld-cp-input {
|
||||||
|
width: 100%;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pld-cp-actions {
|
||||||
|
display: flex;
|
||||||
|
gap: 0.5rem;
|
||||||
|
justify-content: flex-end;
|
||||||
|
margin-top: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ── Overlay buttons on badge ────────────── */
|
||||||
|
|
||||||
|
.pld-btn-delete,
|
||||||
|
.pld-btn-members {
|
||||||
|
position: absolute;
|
||||||
|
width: 24px;
|
||||||
|
height: 24px;
|
||||||
|
border-radius: 50%;
|
||||||
|
border: none;
|
||||||
|
padding: 4px;
|
||||||
|
cursor: pointer;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
opacity: 0;
|
||||||
|
transform: scale( 0.6 );
|
||||||
|
transition: opacity 0.14s, transform 0.14s;
|
||||||
|
z-index: 5;
|
||||||
|
box-shadow: 0 2px 8px rgba( 0, 0, 0, 0.55 );
|
||||||
|
}
|
||||||
|
|
||||||
|
.pld-row:hover .pld-btn-delete,
|
||||||
|
.pld-row:hover .pld-btn-members {
|
||||||
|
opacity: 1;
|
||||||
|
transform: scale( 1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
.pld-btn-delete {
|
||||||
|
top: -7px;
|
||||||
|
left: -7px;
|
||||||
|
background: #b02050;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pld-btn-delete:hover { background: #e93978; }
|
||||||
|
|
||||||
|
.pld-btn-members {
|
||||||
|
bottom: -7px;
|
||||||
|
left: -7px;
|
||||||
|
background: #0574a8;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pld-btn-members:hover { background: #04bdff; }
|
||||||
|
|
||||||
|
.pld-btn-delete svg,
|
||||||
|
.pld-btn-members svg {
|
||||||
|
width: 14px;
|
||||||
|
height: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ── Project name ────────────────────────── */
|
||||||
|
|
||||||
|
.pld-name {
|
||||||
|
font-family: 'Barlow', sans-serif;
|
||||||
|
font-weight: 900;
|
||||||
|
font-style: italic;
|
||||||
|
font-size: 5em;
|
||||||
|
letter-spacing: 0.04em;
|
||||||
|
text-transform: uppercase;
|
||||||
|
color: var( --project-color );
|
||||||
|
transform: matrix( 0.953, 0, -0.102, 1.049, 0, 0 );
|
||||||
|
transform-origin: left center;
|
||||||
|
display: inline-block;
|
||||||
|
user-select: none;
|
||||||
|
text-shadow: 0em 0.03em 0.2em hsl(200, 90%, 10%,0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ── Create form ─────────────────────────── */
|
||||||
|
|
||||||
|
.pld-create-form {
|
||||||
|
display: flex;
|
||||||
|
gap: 0.5rem;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pld-create-input {
|
||||||
|
flex: 1;
|
||||||
|
max-width: 300px;
|
||||||
|
padding: 0.55rem 0.9rem;
|
||||||
|
background: rgba( 255, 255, 255, 0.05 );
|
||||||
|
border: 1px solid rgba( 255, 255, 255, 0.14 );
|
||||||
|
border-radius: 6px;
|
||||||
|
color: #fff;
|
||||||
|
font-size: 0.88rem;
|
||||||
|
font-family: inherit;
|
||||||
|
outline: none;
|
||||||
|
transition: border-color 0.15s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pld-create-input::placeholder { color: rgba( 255, 255, 255, 0.28 ); }
|
||||||
|
.pld-create-input:focus { border-color: rgba( 255, 255, 255, 0.38 ); }
|
||||||
|
|
||||||
|
.pld-create-btn {
|
||||||
|
padding: 0.55rem 1.3rem;
|
||||||
|
background: rgba( 255, 255, 255, 0.07 );
|
||||||
|
border: 1px solid rgba( 255, 255, 255, 0.18 );
|
||||||
|
border-radius: 6px;
|
||||||
|
color: rgba( 255, 255, 255, 0.75 );
|
||||||
|
font-family: 'Barlow', sans-serif;
|
||||||
|
font-weight: 700;
|
||||||
|
font-style: italic;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.07em;
|
||||||
|
font-size: 0.82rem;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: background 0.15s, color 0.15s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pld-create-btn:hover {
|
||||||
|
background: rgba( 255, 255, 255, 0.13 );
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ── Members overlay ─────────────────────── */
|
||||||
|
|
||||||
|
.pld-members-overlay {
|
||||||
|
position: fixed;
|
||||||
|
inset: 0;
|
||||||
|
background: rgba( 0, 0, 0, 0.72 );
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
z-index: 200;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pld-mp {
|
||||||
|
background: #131320;
|
||||||
|
border: 1px solid rgba( 255, 255, 255, 0.1 );
|
||||||
|
border-radius: 12px;
|
||||||
|
padding: 1.75rem 2rem;
|
||||||
|
width: min( 480px, 92vw );
|
||||||
|
max-height: 80vh;
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pld-mp-title {
|
||||||
|
font-family: 'Barlow', sans-serif;
|
||||||
|
font-weight: 900;
|
||||||
|
font-style: italic;
|
||||||
|
text-transform: uppercase;
|
||||||
|
font-size: 1.25rem;
|
||||||
|
letter-spacing: 0.04em;
|
||||||
|
color: #fff;
|
||||||
|
margin-bottom: 1.25rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pld-mp-list {
|
||||||
|
list-style: none;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0 0 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pld-mp-list li {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 0.75rem;
|
||||||
|
padding: 0.5rem 0;
|
||||||
|
border-bottom: 1px solid rgba( 255, 255, 255, 0.06 );
|
||||||
|
font-size: 0.88rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pld-mp-owner-row { font-weight: 500; }
|
||||||
|
|
||||||
|
.pld-mp-email {
|
||||||
|
flex: 1;
|
||||||
|
color: rgba( 255, 255, 255, 0.75 );
|
||||||
|
word-break: break-all;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pld-mp-role {
|
||||||
|
font-size: 0.72rem;
|
||||||
|
color: rgba( 255, 255, 255, 0.38 );
|
||||||
|
padding: 0.15rem 0.5rem;
|
||||||
|
border: 1px solid rgba( 255, 255, 255, 0.14 );
|
||||||
|
border-radius: 3px;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pld-mp-empty {
|
||||||
|
color: rgba( 255, 255, 255, 0.32 );
|
||||||
|
font-size: 0.85rem;
|
||||||
|
padding: 0.5rem 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pld-mp-loading {
|
||||||
|
color: rgba( 255, 255, 255, 0.45 );
|
||||||
|
font-size: 0.9rem;
|
||||||
|
text-align: center;
|
||||||
|
padding: 2rem 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pld-mp-add-form {
|
||||||
|
display: flex;
|
||||||
|
gap: 0.5rem;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
margin-top: 1.25rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pld-mp-input {
|
||||||
|
flex: 1;
|
||||||
|
min-width: 150px;
|
||||||
|
padding: 0.45rem 0.7rem;
|
||||||
|
background: rgba( 255, 255, 255, 0.05 );
|
||||||
|
border: 1px solid rgba( 255, 255, 255, 0.14 );
|
||||||
|
border-radius: 5px;
|
||||||
|
color: #fff;
|
||||||
|
font-size: 0.85rem;
|
||||||
|
font-family: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pld-mp-select {
|
||||||
|
padding: 0.45rem 0.6rem;
|
||||||
|
background: rgba( 255, 255, 255, 0.05 );
|
||||||
|
border: 1px solid rgba( 255, 255, 255, 0.14 );
|
||||||
|
border-radius: 5px;
|
||||||
|
color: #fff;
|
||||||
|
font-size: 0.85rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pld-mp-btn {
|
||||||
|
padding: 0.45rem 0.9rem;
|
||||||
|
background: rgba( 255, 255, 255, 0.07 );
|
||||||
|
border: 1px solid rgba( 255, 255, 255, 0.17 );
|
||||||
|
border-radius: 5px;
|
||||||
|
color: rgba( 255, 255, 255, 0.75 );
|
||||||
|
cursor: pointer;
|
||||||
|
font-size: 0.85rem;
|
||||||
|
transition: background 0.14s, color 0.14s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pld-mp-btn:hover {
|
||||||
|
background: rgba( 255, 255, 255, 0.13 );
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pld-mp-close {
|
||||||
|
margin-top: 1.25rem;
|
||||||
|
width: 100%;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ── Mobile ──────────────────────────────── */
|
||||||
|
|
||||||
|
@media ( max-width: 600px ) {
|
||||||
|
.pld-name {
|
||||||
|
transform: none;
|
||||||
|
font-size: 1.15rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pld-row {
|
||||||
|
animation: none;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pld-btn-delete,
|
||||||
|
.pld-btn-members {
|
||||||
|
opacity: 1;
|
||||||
|
transform: scale( 1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
.pld-main {
|
||||||
|
padding: 1.5rem 1rem 4rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,248 @@
|
||||||
|
import { showConfirmDialog } from '../confirm-dialog/confirm-dialog.js';
|
||||||
|
|
||||||
|
const AUTH_HOST = 'https://account.rokojori.com';
|
||||||
|
const APP_URL = 'https://roject.rokojori.com';
|
||||||
|
|
||||||
|
interface JwtUser {
|
||||||
|
userId: string;
|
||||||
|
email: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface Project {
|
||||||
|
id: string;
|
||||||
|
name: string;
|
||||||
|
owner_id: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ProjectMember {
|
||||||
|
id: string;
|
||||||
|
project_id: string;
|
||||||
|
member_type: 'user' | 'group';
|
||||||
|
member_id: string;
|
||||||
|
role: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
function hueFromId( id: string ): number {
|
||||||
|
let h = 0;
|
||||||
|
for ( let i = 0; i < id.length; i++ ) {
|
||||||
|
h = ( h * 31 + id.charCodeAt( i ) ) % 360;
|
||||||
|
}
|
||||||
|
return Math.abs( h );
|
||||||
|
}
|
||||||
|
|
||||||
|
class ProjectListDefault extends HTMLElement {
|
||||||
|
user: JwtUser | null = null;
|
||||||
|
|
||||||
|
async connectedCallback(): Promise<void> {
|
||||||
|
await this.render();
|
||||||
|
}
|
||||||
|
|
||||||
|
private async render(): Promise<void> {
|
||||||
|
const res = await fetch( '/api/projects' );
|
||||||
|
const projects = res.ok ? await res.json() as Project[] : [];
|
||||||
|
const logoutHref = `${ AUTH_HOST }/api/auth/logout?redirect=${ encodeURIComponent( APP_URL ) }`;
|
||||||
|
|
||||||
|
this.innerHTML = `
|
||||||
|
<nav class="pld-nav">
|
||||||
|
<div class="pld-logo-wrap">
|
||||||
|
<img class="pld-logo" src="/rojos/roject-logo-570x240-1592x637.webp" alt="Roject">
|
||||||
|
</div>
|
||||||
|
<a class="pld-user-group" href="${ logoutHref }">
|
||||||
|
<span class="pld-email">${ this.user?.email ?? '' }</span>
|
||||||
|
<span class="pld-logout-label">Log out</span>
|
||||||
|
</a>
|
||||||
|
</nav>
|
||||||
|
<main class="pld-main">
|
||||||
|
<div class="pld-list">
|
||||||
|
<div class="pld-row new-project" id="pld-new-row">
|
||||||
|
<div class="pld-badge-wrap">
|
||||||
|
<div class="pld-badge"></div>
|
||||||
|
</div>
|
||||||
|
<span class="pld-name">New Project…</span>
|
||||||
|
</div>
|
||||||
|
${ projects.map( ( p, i ) => this.rowHtml( p, i ) ).join( '' ) }
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
<div class="pld-members-overlay" style="display:none"></div>
|
||||||
|
<div class="pld-create-overlay" style="display:none"></div>
|
||||||
|
`;
|
||||||
|
|
||||||
|
this.bindEvents( projects );
|
||||||
|
}
|
||||||
|
|
||||||
|
private rowHtml( p: Project, i: number ): string {
|
||||||
|
const color = `hsl( ${ hueFromId( p.id ) }, 95%, 45% )`;
|
||||||
|
return `
|
||||||
|
<div class="pld-row" data-id="${ p.id }" data-name="${ p.name }" data-owner="${ p.owner_id }"
|
||||||
|
style="--project-color: ${ color }; animation-delay: ${ 0.04 + i * 0.06 }s">
|
||||||
|
<div class="pld-badge-wrap">
|
||||||
|
<div class="pld-badge" style="animation-delay: ${ i * 0.45 }s"></div>
|
||||||
|
<button class="pld-btn-delete" data-id="${ p.id }" data-name="${ p.name }" title="Delete">
|
||||||
|
<svg viewBox="0 0 20 20" fill="none" stroke="#fff" stroke-width="2.5" stroke-linecap="round">
|
||||||
|
<line x1="5" y1="5" x2="15" y2="15"/><line x1="15" y1="5" x2="5" y2="15"/>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
<button class="pld-btn-members" data-id="${ p.id }" title="Members">
|
||||||
|
<svg viewBox="0 0 20 20" fill="none" stroke="#fff" stroke-width="1.8" stroke-linecap="round">
|
||||||
|
<circle cx="10" cy="7.5" r="3"/>
|
||||||
|
<path d="M3.5 17.5c0-3.6 2.9-6 6.5-6s6.5 2.4 6.5 6"/>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<span class="pld-name">${ p.name.toUpperCase() }</span>
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
|
||||||
|
private bindEvents( projects: Project[] ): void {
|
||||||
|
this.querySelector( '#pld-new-row' )!.addEventListener( 'click', () => this.openCreateDialog() );
|
||||||
|
|
||||||
|
this.querySelectorAll( '.pld-row:not(.new-project)' ).forEach( row => {
|
||||||
|
row.addEventListener( 'click', ( e: Event ) => {
|
||||||
|
if ( ( e.target as HTMLElement ).closest( '.pld-btn-delete, .pld-btn-members' ) ) return;
|
||||||
|
const el = row as HTMLElement;
|
||||||
|
location.href = `/editor.html?project=${ el.dataset.id }&name=${ encodeURIComponent( el.dataset.name! ) }`;
|
||||||
|
} );
|
||||||
|
} );
|
||||||
|
|
||||||
|
this.querySelectorAll( '.pld-btn-delete' ).forEach( btn => {
|
||||||
|
btn.addEventListener( 'click', async ( e: Event ) => {
|
||||||
|
e.stopPropagation();
|
||||||
|
const el = btn as HTMLElement;
|
||||||
|
const ok = await showConfirmDialog( {
|
||||||
|
icon: '🗑',
|
||||||
|
title: 'Delete Project',
|
||||||
|
message: `Delete "${ el.dataset.name }"? This cannot be undone.`,
|
||||||
|
confirmLabel: 'Delete',
|
||||||
|
cancelLabel: 'Cancel',
|
||||||
|
danger: true
|
||||||
|
} );
|
||||||
|
if ( !ok ) return;
|
||||||
|
await fetch( `/api/projects/${ el.dataset.id }`, { method: 'DELETE' } );
|
||||||
|
await this.render();
|
||||||
|
} );
|
||||||
|
} );
|
||||||
|
|
||||||
|
this.querySelectorAll( '.pld-btn-members' ).forEach( btn => {
|
||||||
|
btn.addEventListener( 'click', ( e: Event ) => {
|
||||||
|
e.stopPropagation();
|
||||||
|
const id = ( btn as HTMLElement ).dataset.id!;
|
||||||
|
const row = this.querySelector( `.pld-row[data-id="${ id }"]` ) as HTMLElement;
|
||||||
|
this.openMembersPanel( id, row );
|
||||||
|
} );
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
|
||||||
|
private openCreateDialog(): void {
|
||||||
|
const overlay = this.querySelector( '.pld-create-overlay' ) as HTMLElement;
|
||||||
|
overlay.style.display = 'flex';
|
||||||
|
overlay.innerHTML = `
|
||||||
|
<div class="pld-mp">
|
||||||
|
<h3 class="pld-mp-title">New Project</h3>
|
||||||
|
<form class="pld-cp-form">
|
||||||
|
<input class="pld-mp-input pld-cp-input" type="text" name="name"
|
||||||
|
placeholder="Project name" required autocomplete="off">
|
||||||
|
<div class="pld-cp-actions">
|
||||||
|
<button type="button" class="pld-mp-btn pld-cp-cancel">Cancel</button>
|
||||||
|
<button type="submit" class="pld-mp-btn">Create</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
|
||||||
|
const panel = overlay.querySelector( '.pld-mp' )!;
|
||||||
|
panel.addEventListener( 'click', e => e.stopPropagation() );
|
||||||
|
overlay.addEventListener( 'click', () => { overlay.style.display = 'none'; }, { once: true } );
|
||||||
|
|
||||||
|
const input = overlay.querySelector( '.pld-cp-input' ) as HTMLInputElement;
|
||||||
|
setTimeout( () => input.focus(), 30 );
|
||||||
|
|
||||||
|
overlay.querySelector( '.pld-cp-cancel' )!.addEventListener( 'click', () => {
|
||||||
|
overlay.style.display = 'none';
|
||||||
|
} );
|
||||||
|
|
||||||
|
overlay.querySelector( '.pld-cp-form' )!.addEventListener( 'submit', async ( e: Event ) => {
|
||||||
|
e.preventDefault();
|
||||||
|
const name = input.value.trim();
|
||||||
|
if ( !name ) return;
|
||||||
|
overlay.style.display = 'none';
|
||||||
|
const res = await fetch( '/api/projects', {
|
||||||
|
method: 'POST',
|
||||||
|
headers: { 'Content-Type': 'application/json' },
|
||||||
|
body: JSON.stringify( { name } )
|
||||||
|
} );
|
||||||
|
if ( res.ok ) await this.render();
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
|
||||||
|
private async openMembersPanel( projectId: string, row: HTMLElement ): Promise<void> {
|
||||||
|
const overlay = this.querySelector( '.pld-members-overlay' ) as HTMLElement;
|
||||||
|
overlay.style.display = 'flex';
|
||||||
|
overlay.innerHTML = `<div class="pld-mp"><p class="pld-mp-loading">Loading…</p></div>`;
|
||||||
|
|
||||||
|
const panel = overlay.querySelector( '.pld-mp' )!;
|
||||||
|
panel.addEventListener( 'click', e => e.stopPropagation() );
|
||||||
|
overlay.addEventListener( 'click', () => { overlay.style.display = 'none'; }, { once: true } );
|
||||||
|
|
||||||
|
const res = await fetch( `/api/projects/${ projectId }/members` );
|
||||||
|
const members = res.ok ? await res.json() as ProjectMember[] : [];
|
||||||
|
|
||||||
|
const ownerId = row.dataset.owner ?? '';
|
||||||
|
const isOwner = this.user?.userId === ownerId;
|
||||||
|
const ownerLabel = isOwner ? this.user!.email : ownerId;
|
||||||
|
|
||||||
|
panel.innerHTML = `
|
||||||
|
<h3 class="pld-mp-title">${ row.dataset.name }</h3>
|
||||||
|
<ul class="pld-mp-list">
|
||||||
|
<li class="pld-mp-owner-row">
|
||||||
|
<span class="pld-mp-email">${ ownerLabel }</span>
|
||||||
|
<span class="pld-mp-role">owner</span>
|
||||||
|
</li>
|
||||||
|
${ members.map( m => `
|
||||||
|
<li>
|
||||||
|
<span class="pld-mp-email">${ m.member_id }</span>
|
||||||
|
<span class="pld-mp-role">${ m.role }</span>
|
||||||
|
${ isOwner ? `<button class="pld-mp-remove" data-pid="${ projectId }" data-mid="${ m.id }">Remove</button>` : '' }
|
||||||
|
</li>
|
||||||
|
` ).join( '' ) }
|
||||||
|
${ members.length === 0 ? '<li class="pld-mp-empty">No additional members</li>' : '' }
|
||||||
|
</ul>
|
||||||
|
${ isOwner ? `
|
||||||
|
<form class="pld-mp-add-form">
|
||||||
|
<input name="email" type="email" placeholder="Email address" class="pld-mp-input" required>
|
||||||
|
<select name="role" class="pld-mp-select">
|
||||||
|
<option value="viewer">Viewer</option>
|
||||||
|
<option value="editor">Editor</option>
|
||||||
|
<option value="admin">Admin</option>
|
||||||
|
</select>
|
||||||
|
<button type="submit" class="pld-mp-btn">Add</button>
|
||||||
|
</form>
|
||||||
|
` : '' }
|
||||||
|
<button class="pld-mp-close pld-mp-btn">Close</button>
|
||||||
|
`;
|
||||||
|
|
||||||
|
panel.querySelector( '.pld-mp-close' )!.addEventListener( 'click', () => { overlay.style.display = 'none'; } );
|
||||||
|
|
||||||
|
panel.querySelectorAll( '.pld-mp-remove' ).forEach( btn => {
|
||||||
|
btn.addEventListener( 'click', async () => {
|
||||||
|
const el = btn as HTMLElement;
|
||||||
|
await fetch( `/api/projects/${ el.dataset.pid }/members/${ el.dataset.mid }`, { method: 'DELETE' } );
|
||||||
|
await this.openMembersPanel( projectId, row );
|
||||||
|
} );
|
||||||
|
} );
|
||||||
|
|
||||||
|
const addForm = panel.querySelector( '.pld-mp-add-form' ) as HTMLFormElement | null;
|
||||||
|
addForm?.addEventListener( 'submit', async ( e: Event ) => {
|
||||||
|
e.preventDefault();
|
||||||
|
const data = Object.fromEntries( new FormData( e.target as HTMLFormElement ) );
|
||||||
|
await fetch( `/api/projects/${ projectId }/members`, {
|
||||||
|
method: 'POST',
|
||||||
|
headers: { 'Content-Type': 'application/json' },
|
||||||
|
body: JSON.stringify( data )
|
||||||
|
} );
|
||||||
|
await this.openMembersPanel( projectId, row );
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
customElements.define( 'project-list-default', ProjectListDefault );
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Roject</title>
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Barlow:ital,wght@1,900;1,700&display=swap">
|
||||||
|
<link rel="stylesheet" href="/components/confirm-dialog/confirm-dialog.css">
|
||||||
|
<link rel="stylesheet" href="/components/project-home/project-home.css">
|
||||||
|
<link rel="stylesheet" href="/components/project-list-default/project-list-default.css">
|
||||||
|
<style>
|
||||||
|
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
||||||
|
html, body { height: 100%; }
|
||||||
|
body { font-family: ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif; background: #000; }
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<confirm-dialog></confirm-dialog>
|
||||||
|
<project-home></project-home>
|
||||||
|
<script type="module" src="/components/confirm-dialog/confirm-dialog.js"></script>
|
||||||
|
<script type="module" src="/components/project-home/project-home.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 206 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 206 KiB |
|
|
@ -88,6 +88,24 @@ export const projects = {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export interface UserSetting {
|
||||||
|
userId: string;
|
||||||
|
settings: Record<string, unknown>;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const userSettings = {
|
||||||
|
forUser( userId: string ): Record<string, unknown> | null {
|
||||||
|
return read<UserSetting>( 'user_settings' ).find( s => s.userId === userId )?.settings ?? null;
|
||||||
|
},
|
||||||
|
save( userId: string, settings: Record<string, unknown> ): Record<string, unknown> {
|
||||||
|
const all = read<UserSetting>( 'user_settings' );
|
||||||
|
const idx = all.findIndex( s => s.userId === userId );
|
||||||
|
if ( idx >= 0 ) { all[ idx ].settings = settings; } else { all.push( { userId, settings } ); }
|
||||||
|
write( 'user_settings', all );
|
||||||
|
return settings;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
export const projectMembers = {
|
export const projectMembers = {
|
||||||
forProject: (projectId: string): ProjectMember[] => read<ProjectMember>('project_members').filter(m => m.project_id === projectId),
|
forProject: (projectId: string): ProjectMember[] => read<ProjectMember>('project_members').filter(m => m.project_id === projectId),
|
||||||
add(data: Omit<ProjectMember, 'id'>): ProjectMember {
|
add(data: Omit<ProjectMember, 'id'>): ProjectMember {
|
||||||
|
|
|
||||||
|
|
@ -3,12 +3,12 @@ import cookieParser from 'cookie-parser';
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
import { ROOT } from './rootDir';
|
import { ROOT } from './rootDir';
|
||||||
import { jwtMiddleware, requireAuth } from './middleware/auth';
|
import { jwtMiddleware, requireAuth } from './middleware/auth';
|
||||||
import groupsRouter from './routes/groups';
|
|
||||||
import projectsRouter from './routes/projects';
|
import projectsRouter from './routes/projects';
|
||||||
import filesRouter from './routes/files';
|
import filesRouter from './routes/files';
|
||||||
import localesRouter from './routes/locales';
|
import localesRouter from './routes/locales';
|
||||||
import layoutRouter from './routes/layout';
|
import layoutRouter from './routes/layout';
|
||||||
import rojosRouter from './routes/rojos';
|
import rojosRouter from './routes/rojos';
|
||||||
|
import userSettingsRouter from './routes/userSettings';
|
||||||
import { generateLocales } from './localeGenerator';
|
import { generateLocales } from './localeGenerator';
|
||||||
import deployRouter from './routes/deploy';
|
import deployRouter from './routes/deploy';
|
||||||
import { EmailService } from './email/EmailService';
|
import { EmailService } from './email/EmailService';
|
||||||
|
|
@ -25,16 +25,16 @@ app.use( jwtMiddleware );
|
||||||
|
|
||||||
app.use( express.static( path.join( ROOT, 'build', 'app' ) ) );
|
app.use( express.static( path.join( ROOT, 'build', 'app' ) ) );
|
||||||
|
|
||||||
app.use( '/api/groups', groupsRouter );
|
|
||||||
app.use( '/api/projects', projectsRouter );
|
app.use( '/api/projects', projectsRouter );
|
||||||
app.use( '/api/files', filesRouter );
|
app.use( '/api/files', filesRouter );
|
||||||
app.use( '/api/locales', localesRouter );
|
app.use( '/api/locales', localesRouter );
|
||||||
app.use( '/api/layout', layoutRouter );
|
app.use( '/api/layout', layoutRouter );
|
||||||
app.use( '/api/rojos', rojosRouter );
|
app.use( '/api/rojos', rojosRouter );
|
||||||
|
app.use( '/api/user/settings', userSettingsRouter );
|
||||||
|
|
||||||
app.get( '/api/auth/me', requireAuth, ( req, res ) => res.json( req.user ) );
|
app.get( '/api/auth/me', requireAuth, ( req, res ) => res.json( req.user ) );
|
||||||
|
|
||||||
app.get( '/', ( _req, res ) => res.redirect( '/dashboard.html' ) );
|
app.get( '/edit', ( _req, res ) => res.redirect( '/editor.html' ) );
|
||||||
|
|
||||||
export function startServer( port: number ): void {
|
export function startServer( port: number ): void {
|
||||||
app.listen( port, () =>
|
app.listen( port, () =>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
import { Router } from 'express';
|
||||||
|
import { requireAuth } from '../middleware/auth';
|
||||||
|
import { userSettings } from '../db';
|
||||||
|
|
||||||
|
const router = Router();
|
||||||
|
router.use( requireAuth );
|
||||||
|
|
||||||
|
router.get( '/', ( req, res ) => {
|
||||||
|
res.json( userSettings.forUser( req.user!.userId ) ?? {} );
|
||||||
|
} );
|
||||||
|
|
||||||
|
router.put( '/', ( req, res ) => {
|
||||||
|
const settings = req.body as Record<string, unknown>;
|
||||||
|
res.json( userSettings.save( req.user!.userId, settings ) );
|
||||||
|
} );
|
||||||
|
|
||||||
|
export default router;
|
||||||
|
|
@ -33,6 +33,7 @@ var NAV_DATA = {
|
||||||
title: 'Actions',
|
title: 'Actions',
|
||||||
path: 'actions/index.html',
|
path: 'actions/index.html',
|
||||||
children: [
|
children: [
|
||||||
|
{ title: 'Update Board', path: 'actions/update-board/index.html' },
|
||||||
{ title: 'Update History', path: 'actions/update-history/index.html' },
|
{ title: 'Update History', path: 'actions/update-history/index.html' },
|
||||||
{ title: 'Update Outline', path: 'actions/update-outline/index.html' },
|
{ title: 'Update Outline', path: 'actions/update-outline/index.html' },
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -25,15 +25,15 @@
|
||||||
inkscape:deskcolor="#333333"
|
inkscape:deskcolor="#333333"
|
||||||
inkscape:document-units="px"
|
inkscape:document-units="px"
|
||||||
showgrid="false"
|
showgrid="false"
|
||||||
inkscape:zoom="0.20890503"
|
inkscape:zoom="0.14771816"
|
||||||
inkscape:cx="1605.9929"
|
inkscape:cx="1397.9324"
|
||||||
inkscape:cy="1093.7985"
|
inkscape:cy="470.49055"
|
||||||
inkscape:window-width="1920"
|
inkscape:window-width="1920"
|
||||||
inkscape:window-height="1017"
|
inkscape:window-height="1017"
|
||||||
inkscape:window-x="-8"
|
inkscape:window-x="-8"
|
||||||
inkscape:window-y="-8"
|
inkscape:window-y="-8"
|
||||||
inkscape:window-maximized="1"
|
inkscape:window-maximized="1"
|
||||||
inkscape:current-layer="g17" /><defs
|
inkscape:current-layer="g27" /><defs
|
||||||
id="defs2"><linearGradient
|
id="defs2"><linearGradient
|
||||||
id="linearGradient19"
|
id="linearGradient19"
|
||||||
inkscape:collect="never"><stop
|
inkscape:collect="never"><stop
|
||||||
|
|
@ -280,19 +280,41 @@
|
||||||
cy="950.70941"
|
cy="950.70941"
|
||||||
fx="1119.998"
|
fx="1119.998"
|
||||||
fy="950.70941"
|
fy="950.70941"
|
||||||
r="624.87445" /></defs><g
|
r="624.87445" /><filter
|
||||||
|
inkscape:collect="always"
|
||||||
|
style="color-interpolation-filters:sRGB"
|
||||||
|
id="filter72"
|
||||||
|
x="-0.02048285"
|
||||||
|
y="-0.082298482"
|
||||||
|
width="1.0409657"
|
||||||
|
height="1.164597"><feGaussianBlur
|
||||||
|
inkscape:collect="always"
|
||||||
|
stdDeviation="6.0393534"
|
||||||
|
id="feGaussianBlur72" /></filter><filter
|
||||||
|
inkscape:collect="always"
|
||||||
|
style="color-interpolation-filters:sRGB"
|
||||||
|
id="filter87"
|
||||||
|
x="-0.02092748"
|
||||||
|
y="-0.084084969"
|
||||||
|
width="1.041855"
|
||||||
|
height="1.1681699"><feGaussianBlur
|
||||||
|
inkscape:collect="always"
|
||||||
|
stdDeviation="6.2156756"
|
||||||
|
id="feGaussianBlur87" /></filter></defs><g
|
||||||
inkscape:label="Content"
|
inkscape:label="Content"
|
||||||
inkscape:groupmode="layer"
|
inkscape:groupmode="layer"
|
||||||
id="layer1"
|
id="layer1"
|
||||||
style="fill:#ffffff;fill-opacity:1"><rect
|
style="fill:#ffffff;fill-opacity:1"><rect
|
||||||
style="fill:#000000;stroke-linecap:round;stroke-linejoin:round;fill-opacity:1"
|
style="fill:#000000;fill-opacity:1;stroke-linecap:round;stroke-linejoin:round"
|
||||||
id="rect1"
|
id="rect1"
|
||||||
width="3840"
|
width="3840"
|
||||||
height="2160"
|
height="2160"
|
||||||
x="0"
|
x="0"
|
||||||
y="0"
|
y="0"
|
||||||
ry="7.9545546" /><g
|
ry="7.9545546"
|
||||||
id="g17"
|
inkscape:label="BG" /><g
|
||||||
|
id="g26"
|
||||||
|
inkscape:label="BG Gradient"
|
||||||
transform="translate(38.057367,61.315595)"><ellipse
|
transform="translate(38.057367,61.315595)"><ellipse
|
||||||
style="opacity:1;mix-blend-mode:normal;fill:#0a0066;fill-opacity:1;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter10)"
|
style="opacity:1;mix-blend-mode:normal;fill:#0a0066;fill-opacity:1;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter10)"
|
||||||
id="path10"
|
id="path10"
|
||||||
|
|
@ -307,10 +329,14 @@
|
||||||
cy="1143.0068"
|
cy="1143.0068"
|
||||||
rx="1200.6875"
|
rx="1200.6875"
|
||||||
ry="480.27499"
|
ry="480.27499"
|
||||||
transform="matrix(0.59256734,0,0,0.55929452,795.32629,304.17302)" /><g
|
transform="matrix(0.59256734,0,0,0.55929452,795.32629,304.17302)" /></g><g
|
||||||
|
id="g87"
|
||||||
|
inkscape:label="Title"><g
|
||||||
id="g12"
|
id="g12"
|
||||||
style="opacity:1;filter:url(#filter12)"
|
style="filter:url(#filter12)"
|
||||||
transform="matrix(0.69112949,0,0,0.69112949,491.63996,291.80532)"><text
|
transform="matrix(0.69112949,0,0,0.69112949,529.69733,353.12091)"
|
||||||
|
inkscape:label="Shadow"
|
||||||
|
sodipodi:insensitive="true"><text
|
||||||
xml:space="preserve"
|
xml:space="preserve"
|
||||||
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-size:457.124px;line-height:1.4;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';writing-mode:lr-tb;direction:ltr;display:inline;opacity:1;fill:#000000;fill-opacity:1;stroke-width:11.4281;stroke-linecap:round;stroke-linejoin:round;filter:url(#filter11)"
|
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-size:457.124px;line-height:1.4;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';writing-mode:lr-tb;direction:ltr;display:inline;opacity:1;fill:#000000;fill-opacity:1;stroke-width:11.4281;stroke-linecap:round;stroke-linejoin:round;filter:url(#filter11)"
|
||||||
x="1423.6522"
|
x="1423.6522"
|
||||||
|
|
@ -332,72 +358,214 @@
|
||||||
id="tspan12"
|
id="tspan12"
|
||||||
x="1423.6522"
|
x="1423.6522"
|
||||||
y="1196.2206"
|
y="1196.2206"
|
||||||
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';fill:#000000;fill-opacity:1;stroke-width:11.4281">ROJECT</tspan></text></g><text
|
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';fill:#000000;fill-opacity:1;stroke-width:11.4281">ROJECT</tspan></text></g><g
|
||||||
xml:space="preserve"
|
id="g25"
|
||||||
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-size:315.932px;line-height:1.4;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';writing-mode:lr-tb;direction:ltr;display:inline;opacity:1;fill:url(#linearGradient10);stroke-width:7.8983;stroke-linecap:round;stroke-linejoin:round"
|
inkscape:label="Title"
|
||||||
x="1484.9595"
|
transform="translate(38.057367,61.315595)"
|
||||||
y="1087.6149"
|
sodipodi:insensitive="true"><text
|
||||||
id="text2"
|
xml:space="preserve"
|
||||||
transform="matrix(0.95321043,0,-0.10226778,1.0490863,0,0)"><tspan
|
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-size:315.932px;line-height:1.4;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';writing-mode:lr-tb;direction:ltr;display:inline;opacity:1;fill:url(#linearGradient10);stroke-width:7.8983;stroke-linecap:round;stroke-linejoin:round"
|
||||||
sodipodi:role="line"
|
|
||||||
id="tspan2"
|
|
||||||
x="1484.9595"
|
x="1484.9595"
|
||||||
y="1087.6149"
|
y="1087.6149"
|
||||||
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';fill:url(#linearGradient10);fill-opacity:1;stroke-width:7.8983">ROJECT</tspan></text><text
|
id="text2"
|
||||||
xml:space="preserve"
|
transform="matrix(0.95321043,0,-0.10226778,1.0490863,0,0)"><tspan
|
||||||
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-size:315.932px;line-height:1.4;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';writing-mode:lr-tb;direction:ltr;display:inline;opacity:1;fill:url(#linearGradient8);stroke-width:7.8983;stroke-linecap:round;stroke-linejoin:round"
|
sodipodi:role="line"
|
||||||
x="1498.2201"
|
id="tspan2"
|
||||||
y="1087.0574"
|
x="1484.9595"
|
||||||
id="text1"
|
y="1087.6149"
|
||||||
transform="matrix(0.95321043,0,-0.10226778,1.0490863,0,0)"><tspan
|
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';fill:url(#linearGradient10);fill-opacity:1;stroke-width:7.8983">ROJECT</tspan></text><text
|
||||||
sodipodi:role="line"
|
xml:space="preserve"
|
||||||
id="tspan1"
|
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-size:315.932px;line-height:1.4;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';writing-mode:lr-tb;direction:ltr;display:inline;opacity:1;fill:url(#linearGradient8);stroke-width:7.8983;stroke-linecap:round;stroke-linejoin:round"
|
||||||
x="1498.2201"
|
x="1498.2201"
|
||||||
y="1087.0574"
|
y="1087.0574"
|
||||||
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';fill:url(#linearGradient8);fill-opacity:1;stroke-width:7.8983">ROJECT</tspan></text><text
|
id="text1"
|
||||||
xml:space="preserve"
|
transform="matrix(0.95321043,0,-0.10226778,1.0490863,0,0)"><tspan
|
||||||
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-size:315.932px;line-height:1.4;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';writing-mode:lr-tb;direction:ltr;display:inline;opacity:1;fill:url(#linearGradient6);stroke-width:7.8983;stroke-linecap:round;stroke-linejoin:round"
|
sodipodi:role="line"
|
||||||
x="1513.8538"
|
id="tspan1"
|
||||||
y="1085.8309"
|
x="1498.2201"
|
||||||
id="text3"
|
y="1087.0574"
|
||||||
transform="matrix(0.95321043,0,-0.10226778,1.0490863,0,0)"><tspan
|
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';fill:url(#linearGradient8);fill-opacity:1;stroke-width:7.8983">ROJECT</tspan></text><text
|
||||||
sodipodi:role="line"
|
xml:space="preserve"
|
||||||
id="tspan3"
|
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-size:315.932px;line-height:1.4;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';writing-mode:lr-tb;direction:ltr;display:inline;opacity:1;fill:url(#linearGradient6);stroke-width:7.8983;stroke-linecap:round;stroke-linejoin:round"
|
||||||
x="1513.8538"
|
x="1513.8538"
|
||||||
y="1085.8309"
|
y="1085.8309"
|
||||||
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';fill:url(#linearGradient6);fill-opacity:1;stroke-width:7.8983">ROJECT</tspan></text><g
|
id="text3"
|
||||||
id="g16"
|
transform="matrix(0.95321043,0,-0.10226778,1.0490863,0,0)"><tspan
|
||||||
transform="translate(9.5737285,-66.875187)"><text
|
sodipodi:role="line"
|
||||||
xml:space="preserve"
|
id="tspan3"
|
||||||
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-size:67.5143px;line-height:1.4;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';writing-mode:lr-tb;direction:ltr;opacity:1;fill:#0056f5;fill-opacity:1;stroke:none;stroke-width:16.8787;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
x="1513.8538"
|
||||||
x="1480.9904"
|
y="1085.8309"
|
||||||
|
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';fill:url(#linearGradient6);fill-opacity:1;stroke-width:7.8983">ROJECT</tspan></text></g><g
|
||||||
|
id="g86"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;display:inline;opacity:0.725207"
|
||||||
|
inkscape:label="White Highlights"><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 1435.1443,979.66538 -33.5441,159.29112"
|
||||||
|
id="path27"
|
||||||
|
sodipodi:nodetypes="cc" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 1889.9057,980.18693 -29.7155,137.11577"
|
||||||
|
id="path28" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 1758.3085,1109.6616 c 0,0 -13.1597,29.7155 -1.6981,57.733"
|
||||||
|
id="path29" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 1967.5806,978.4889 -25.0459,123.9561"
|
||||||
|
id="path30" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 2347.5271,1026.7226 -25.0459,123.9561"
|
||||||
|
id="path31" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 2305.0736,979.12567 -7.4288,32.05033"
|
||||||
|
id="path32" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 2195.5452,978.27595 c 0,0 -19.6906,4.89329 -28.4589,9.76086 -11.5655,6.42041 -22.4448,14.77749 -30.7788,25.05009 -8.2702,10.194 -13.5851,22.6594 -18.0282,35.0113 -5.8348,16.2213 -11.0372,50.5248 -11.0372,50.5248"
|
||||||
|
id="path33"
|
||||||
|
sodipodi:nodetypes="caaac" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 1678.5133,978.27595 c 0,0 -19.6906,4.89329 -28.4589,9.76086 -11.5655,6.42041 -22.4448,14.77749 -30.7788,25.05009 -8.2702,10.194 -13.5851,22.6594 -18.0282,35.0113 -5.8348,16.2213 -11.0372,50.5248 -11.0372,50.5248"
|
||||||
|
id="path34"
|
||||||
|
sodipodi:nodetypes="caaac" /><path
|
||||||
|
style="opacity:1;fill:#ff0404;fill-opacity:1;stroke:#ffffff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 1935.7525,1136.8301 -6.3677,29.7155"
|
||||||
|
id="path57" /><path
|
||||||
|
style="opacity:1;fill:#ff0404;fill-opacity:1;stroke:#ffffff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 1394.5059,1165.6965 -5.0941,20.8009"
|
||||||
|
id="path58" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 2101.3102,1128.7644 c 0,0 -1.7724,9.7315 -1.698,14.6455 0.081,5.3581 0.4954,10.8723 2.3341,15.9057 1.6585,4.5402 4.6858,8.499 7.6384,12.3261 2.3234,3.0117 4.93,5.8463 7.8568,8.2758 3.3069,2.7451 10.8249,7.0044 10.8249,7.0044"
|
||||||
|
id="path59"
|
||||||
|
sodipodi:nodetypes="caaaac" /></g><g
|
||||||
|
id="g65"
|
||||||
|
style="display:inline;opacity:0.54958678;mix-blend-mode:screen;fill:#ffffff;fill-opacity:1;stroke:#ff9f02;stroke-opacity:1;filter:url(#filter72)"
|
||||||
|
inkscape:label="Side Glow Orange"
|
||||||
|
transform="translate(-5.5)"><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#ff9f02;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 1557.5166,983.15848 10.1882,18.67832 0.4245,29.7155 -2.9716,23.3479 -13.1597,25.4704 -13.1597,12.7352 -16.5558,8.0657 c 0,0 -2.547,2.547 -2.9715,4.245 -0.4245,1.6981 5.0941,39.0547 5.0941,39.0547 l 6.3676,26.3194 3.396,22.9234 -7.2166,5.9431 -26.7439,-0.4245"
|
||||||
|
id="path60" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#ff9f02;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 1746.4223,1013.723 -1.6981,33.1115 -12.7352,51.7899 -19.5273,55.1859"
|
||||||
|
id="path61" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#ff9f02;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 1927.2623,1016.27 -33.1115,134.9933 -13.5843,18.6783"
|
||||||
|
id="path62" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#ff9f02;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 2098.7491,974.26209 -10.5859,45.38151"
|
||||||
|
id="path63"
|
||||||
|
sodipodi:nodetypes="cc" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#ff9f02;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 2048.2174,1063.403 -6.7893,45.7962"
|
||||||
|
id="path64"
|
||||||
|
sodipodi:nodetypes="cc" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#ff9f02;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 2065.6123,1152.1404 -11.8609,45.7962"
|
||||||
|
id="path65"
|
||||||
|
sodipodi:nodetypes="cc" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#ff9f02;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 2224.4173,969.99876 22.9234,11.03719 12.3107,12.73521 8.4901,27.59294 -5.0941,23.7724"
|
||||||
|
id="path66" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#ff9f02;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 2249.4632,1127.0664 -4.2451,18.2538 c 0,0 -10.1881,20.8008 -14.0087,22.4989 -3.8206,1.698 -30.989,23.7724 -30.989,23.7724 l -11.8862,4.6696"
|
||||||
|
id="path67" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#ff9f02;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 2451.9531,970.84778 -7.6411,51.78982"
|
||||||
|
id="path68" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#ff9f02;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 2389.5506,1024.7602 -36.9322,174.0479"
|
||||||
|
id="path69" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#ff9f02;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 1932.7809,971.69679 -2.9715,19.95183"
|
||||||
|
id="path70" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#ff9f02;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 1689.5383,1183.1013 -17.8293,15.7068 -42.8752,8.0656"
|
||||||
|
id="path71" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#ff9f02;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 1856.3696,1188.1954 -16.1312,10.1882 -16.5558,1.2735"
|
||||||
|
id="path72" /></g><g
|
||||||
|
id="g85"
|
||||||
|
style="display:inline;opacity:0.56405;mix-blend-mode:screen;fill:#ffffff;fill-opacity:1;stroke:#0226ff;stroke-opacity:1;filter:url(#filter87)"
|
||||||
|
transform="translate(8.693769)"
|
||||||
|
inkscape:label="Side Glow Blue"
|
||||||
|
sodipodi:insensitive="true"><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#0226ff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 1557.5166,983.15848 10.1882,18.67832 0.4245,29.7155 -2.9716,23.3479 -13.1597,25.4704 -13.1597,12.7352 -16.5558,8.0657 c 0,0 -2.547,2.547 -2.9715,4.245 -0.4245,1.6981 5.0941,39.0547 5.0941,39.0547 l 6.3676,26.3194 3.396,22.9234 -7.2166,5.9431 -26.7439,-0.4245"
|
||||||
|
id="path73" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#0226ff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 1746.4223,1013.723 -1.6981,33.1115 -12.7352,51.7899 -19.5273,55.1859"
|
||||||
|
id="path74" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#0226ff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 1927.2623,1016.27 -33.1115,134.9933 -13.5843,18.6783"
|
||||||
|
id="path75" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#0226ff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 2098.7491,974.26209 -10.5859,45.38151"
|
||||||
|
id="path76"
|
||||||
|
sodipodi:nodetypes="cc" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#0226ff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 2048.2174,1063.403 -6.7893,45.7962"
|
||||||
|
id="path77"
|
||||||
|
sodipodi:nodetypes="cc" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#0226ff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 2065.6123,1152.1404 -11.8609,45.7962"
|
||||||
|
id="path78"
|
||||||
|
sodipodi:nodetypes="cc" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#0226ff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 2224.4173,969.99876 22.9234,11.03719 12.3107,12.73521 8.4901,27.59294 -5.0941,23.7724"
|
||||||
|
id="path79" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#0226ff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 2249.4632,1127.0664 -4.2451,18.2538 c 0,0 -10.1881,20.8008 -14.0087,22.4989 -3.8206,1.698 -30.989,23.7724 -30.989,23.7724 l -11.8862,4.6696"
|
||||||
|
id="path80" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#0226ff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 2451.9531,970.84778 -7.6411,51.78982"
|
||||||
|
id="path81" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#0226ff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 2389.5506,1024.7602 -36.9322,174.0479"
|
||||||
|
id="path82" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#0226ff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 1932.7809,971.69679 -2.9715,19.95183"
|
||||||
|
id="path83" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#0226ff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 1689.5383,1183.1013 -17.8293,15.7068 -42.8752,8.0656"
|
||||||
|
id="path84" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#0226ff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 1856.3696,1188.1954 -16.1312,10.1882 -16.5558,1.2735"
|
||||||
|
id="path85" /></g></g><g
|
||||||
|
id="g16"
|
||||||
|
transform="translate(47.631095,-5.559592)"
|
||||||
|
inkscape:label="Slogan"><text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-size:67.5143px;line-height:1.4;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';text-align:center;writing-mode:lr-tb;direction:ltr;text-anchor:middle;opacity:1;fill:#0056f5;fill-opacity:1;stroke:none;stroke-width:16.8787;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
x="1835.4407"
|
||||||
|
y="1349.8354"
|
||||||
|
id="text15"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan15"
|
||||||
|
x="1835.4407"
|
||||||
y="1349.8354"
|
y="1349.8354"
|
||||||
id="text15"><tspan
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Kode Mono';-inkscape-font-specification:'Kode Mono Bold';fill:#0056f5;fill-opacity:1;stroke-width:16.8787">COMPUTER! ZOOM IN!</tspan></text><text
|
||||||
sodipodi:role="line"
|
xml:space="preserve"
|
||||||
id="tspan15"
|
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-size:67.5143px;line-height:1.4;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';text-align:center;writing-mode:lr-tb;direction:ltr;text-anchor:middle;opacity:1;fill:#00f526;fill-opacity:1;stroke:none;stroke-width:16.8787;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
||||||
x="1480.9904"
|
x="1835.4407"
|
||||||
y="1349.8354"
|
y="1342.0404"
|
||||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Kode Mono';-inkscape-font-specification:'Kode Mono Bold';fill:#0056f5;fill-opacity:1;stroke-width:16.8787">COMPUTER! ZOOM IN!</tspan></text><text
|
id="text16"><tspan
|
||||||
xml:space="preserve"
|
sodipodi:role="line"
|
||||||
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-size:67.5143px;line-height:1.4;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';writing-mode:lr-tb;direction:ltr;opacity:1;fill:#00f526;fill-opacity:1;stroke:none;stroke-width:16.8787;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
id="tspan16"
|
||||||
x="1480.9904"
|
x="1835.4407"
|
||||||
y="1342.0404"
|
y="1342.0404"
|
||||||
id="text16"><tspan
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Kode Mono';-inkscape-font-specification:'Kode Mono Bold';fill:#00f526;fill-opacity:1;stroke-width:16.8787">COMPUTER! ZOOM IN!</tspan></text><text
|
||||||
sodipodi:role="line"
|
xml:space="preserve"
|
||||||
id="tspan16"
|
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-size:67.5143px;line-height:1.4;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';text-align:center;writing-mode:lr-tb;direction:ltr;text-anchor:middle;opacity:1;fill:#00cbf5;fill-opacity:1;stroke:none;stroke-width:16.8787;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
||||||
x="1480.9904"
|
x="1835.4407"
|
||||||
y="1342.0404"
|
y="1344.5404"
|
||||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Kode Mono';-inkscape-font-specification:'Kode Mono Bold';fill:#00f526;fill-opacity:1;stroke-width:16.8787">COMPUTER! ZOOM IN!</tspan></text><text
|
id="text14"><tspan
|
||||||
xml:space="preserve"
|
sodipodi:role="line"
|
||||||
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-size:67.5143px;line-height:1.4;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';writing-mode:lr-tb;direction:ltr;opacity:1;fill:#00cbf5;fill-opacity:1;stroke:none;stroke-width:16.8787;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
id="tspan14"
|
||||||
x="1480.9904"
|
x="1835.4407"
|
||||||
y="1344.5404"
|
y="1344.5404"
|
||||||
id="text14"><tspan
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Kode Mono';-inkscape-font-specification:'Kode Mono Bold';fill:#00cbf5;fill-opacity:1;stroke-width:16.8787">COMPUTER! ZOOM IN!</tspan></text></g><g
|
||||||
sodipodi:role="line"
|
id="g27"
|
||||||
id="tspan14"
|
transform="translate(38.057367,61.315595)"
|
||||||
x="1480.9904"
|
style="display:inline"
|
||||||
y="1344.5404"
|
inkscape:label="Glow FX"><rect
|
||||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Kode Mono';-inkscape-font-specification:'Kode Mono Bold';fill:#00cbf5;fill-opacity:1;stroke-width:16.8787">COMPUTER! ZOOM IN!</tspan></text></g><rect
|
|
||||||
style="opacity:0.208678;mix-blend-mode:screen;fill:url(#linearGradient4);stroke:none;stroke-width:9.67817;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
style="opacity:0.208678;mix-blend-mode:screen;fill:url(#linearGradient4);stroke:none;stroke-width:9.67817;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
id="rect3"
|
id="rect3"
|
||||||
width="4009.1892"
|
width="4009.1892"
|
||||||
|
|
@ -420,7 +588,7 @@
|
||||||
y="987.79419"
|
y="987.79419"
|
||||||
ry="0.045129254" /><text
|
ry="0.045129254" /><text
|
||||||
xml:space="preserve"
|
xml:space="preserve"
|
||||||
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-size:642.307px;line-height:1.4;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';writing-mode:lr-tb;direction:ltr;display:inline;opacity:0.05319149;mix-blend-mode:screen;fill:#04ff1d;fill-opacity:1;stroke-width:16.0577;stroke-linecap:round;stroke-linejoin:round"
|
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-size:642.307px;line-height:1.4;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';writing-mode:lr-tb;direction:ltr;display:inline;opacity:0.0531915;mix-blend-mode:screen;fill:#04ff1d;fill-opacity:1;stroke-width:16.0577;stroke-linecap:round;stroke-linejoin:round"
|
||||||
x="1045.7648"
|
x="1045.7648"
|
||||||
y="1203.9724"
|
y="1203.9724"
|
||||||
id="text17"
|
id="text17"
|
||||||
|
|
@ -431,7 +599,7 @@
|
||||||
y="1203.9724"
|
y="1203.9724"
|
||||||
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';fill:#04ff1d;fill-opacity:1;stroke-width:16.0577">ROJECT</tspan></text><text
|
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';fill:#04ff1d;fill-opacity:1;stroke-width:16.0577">ROJECT</tspan></text><text
|
||||||
xml:space="preserve"
|
xml:space="preserve"
|
||||||
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-size:650.011px;line-height:1.4;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';writing-mode:lr-tb;direction:ltr;display:inline;opacity:0.07021277;mix-blend-mode:screen;fill:#ea04ff;fill-opacity:1;stroke-width:16.2503;stroke-linecap:round;stroke-linejoin:round"
|
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-size:650.011px;line-height:1.4;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';writing-mode:lr-tb;direction:ltr;display:inline;opacity:0.0702127;mix-blend-mode:screen;fill:#ea04ff;fill-opacity:1;stroke-width:16.2503;stroke-linecap:round;stroke-linejoin:round"
|
||||||
x="1042.5992"
|
x="1042.5992"
|
||||||
y="1194.2871"
|
y="1194.2871"
|
||||||
id="text18"
|
id="text18"
|
||||||
|
|
@ -442,7 +610,7 @@
|
||||||
y="1194.2871"
|
y="1194.2871"
|
||||||
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';fill:#ea04ff;fill-opacity:1;stroke-width:16.2503">ROJECT</tspan></text><text
|
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';fill:#ea04ff;fill-opacity:1;stroke-width:16.2503">ROJECT</tspan></text><text
|
||||||
xml:space="preserve"
|
xml:space="preserve"
|
||||||
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-size:650.011px;line-height:1.4;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';writing-mode:lr-tb;direction:ltr;display:inline;opacity:0.02553191;mix-blend-mode:screen;fill:#f7ff04;fill-opacity:1;stroke-width:16.2503;stroke-linecap:round;stroke-linejoin:round"
|
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-size:650.011px;line-height:1.4;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';writing-mode:lr-tb;direction:ltr;display:inline;opacity:0.0255319;mix-blend-mode:screen;fill:#f7ff04;fill-opacity:1;stroke-width:16.2503;stroke-linecap:round;stroke-linejoin:round"
|
||||||
x="1056.5159"
|
x="1056.5159"
|
||||||
y="1201.1315"
|
y="1201.1315"
|
||||||
id="text19"
|
id="text19"
|
||||||
|
|
@ -452,7 +620,7 @@
|
||||||
x="1056.5159"
|
x="1056.5159"
|
||||||
y="1201.1315"
|
y="1201.1315"
|
||||||
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';fill:#f7ff04;fill-opacity:1;stroke-width:16.2503">ROJECT</tspan></text><ellipse
|
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';fill:#f7ff04;fill-opacity:1;stroke-width:16.2503">ROJECT</tspan></text><ellipse
|
||||||
style="opacity:0.01652893;mix-blend-mode:screen;fill:url(#radialGradient20);fill-opacity:1;stroke:none;stroke-width:18.4735;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
style="opacity:0.0165289;mix-blend-mode:screen;fill:url(#radialGradient20);fill-opacity:1;stroke:none;stroke-width:18.4735;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
id="path19"
|
id="path19"
|
||||||
cx="1936.1583"
|
cx="1936.1583"
|
||||||
cy="1044.0532"
|
cy="1044.0532"
|
||||||
|
|
@ -464,7 +632,7 @@
|
||||||
cy="1096.7087"
|
cy="1096.7087"
|
||||||
rx="314.21021"
|
rx="314.21021"
|
||||||
ry="314.69763" /><ellipse
|
ry="314.69763" /><ellipse
|
||||||
style="opacity:0.10638298;mix-blend-mode:screen;fill:url(#radialGradient24);fill-opacity:1;stroke:none;stroke-width:13.8885;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter:url(#filter24)"
|
style="opacity:0.106383;mix-blend-mode:screen;fill:url(#radialGradient24);fill-opacity:1;stroke:none;stroke-width:13.8885;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter:url(#filter24)"
|
||||||
id="ellipse24"
|
id="ellipse24"
|
||||||
cx="1500.5537"
|
cx="1500.5537"
|
||||||
cy="1304.9374"
|
cy="1304.9374"
|
||||||
|
|
@ -478,7 +646,7 @@
|
||||||
y="-1783.2252"
|
y="-1783.2252"
|
||||||
ry="0.049766306"
|
ry="0.049766306"
|
||||||
transform="rotate(100.78149)" /><ellipse
|
transform="rotate(100.78149)" /><ellipse
|
||||||
style="opacity:0.10743802;mix-blend-mode:screen;fill:url(#radialGradient25);fill-opacity:1;stroke:none;stroke-width:13.8885;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter:url(#filter24)"
|
style="display:inline;opacity:0.107438;mix-blend-mode:screen;fill:url(#radialGradient25);fill-opacity:1;stroke:none;stroke-width:13.8885;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter:url(#filter24)"
|
||||||
id="ellipse25"
|
id="ellipse25"
|
||||||
cx="1653.7334"
|
cx="1653.7334"
|
||||||
cy="845.39844"
|
cy="845.39844"
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 37 KiB |
|
|
@ -0,0 +1,863 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="3840"
|
||||||
|
height="2160"
|
||||||
|
viewBox="0 0 3840 2160"
|
||||||
|
version="1.1"
|
||||||
|
id="svg5"
|
||||||
|
inkscape:version="1.4.3 (0d15f75, 2025-12-25)"
|
||||||
|
sodipodi:docname="default.svg"
|
||||||
|
xml:space="preserve"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
|
||||||
|
id="namedview7"
|
||||||
|
pagecolor="#333333"
|
||||||
|
bordercolor="#404040"
|
||||||
|
borderopacity="1"
|
||||||
|
inkscape:showpageshadow="0"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#333333"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="0.41781006"
|
||||||
|
inkscape:cx="-1493.5016"
|
||||||
|
inkscape:cy="3112.6584"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1017"
|
||||||
|
inkscape:window-x="-8"
|
||||||
|
inkscape:window-y="-8"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="g101" /><defs
|
||||||
|
id="defs2"><linearGradient
|
||||||
|
id="linearGradient99"
|
||||||
|
inkscape:collect="never"><stop
|
||||||
|
style="stop-color:#04ffd1;stop-opacity:0.51381218;"
|
||||||
|
offset="0"
|
||||||
|
id="stop101" /><stop
|
||||||
|
style="stop-color:#04ffd1;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop100" /></linearGradient><linearGradient
|
||||||
|
id="linearGradient97"
|
||||||
|
inkscape:collect="never"><stop
|
||||||
|
style="stop-color:#e93978;stop-opacity:0.62430942;"
|
||||||
|
offset="0"
|
||||||
|
id="stop99" /><stop
|
||||||
|
style="stop-color:#e93978;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop98" /></linearGradient><linearGradient
|
||||||
|
id="linearGradient95"
|
||||||
|
inkscape:collect="never"><stop
|
||||||
|
style="stop-color:#04bdff;stop-opacity:0.53867406;"
|
||||||
|
offset="0"
|
||||||
|
id="stop97" /><stop
|
||||||
|
style="stop-color:#04bdff;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop96" /></linearGradient><linearGradient
|
||||||
|
id="linearGradient94"
|
||||||
|
inkscape:collect="never"><stop
|
||||||
|
style="stop-color:#282b3c;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop94" /><stop
|
||||||
|
style="stop-color:#000000;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop95" /></linearGradient><linearGradient
|
||||||
|
id="linearGradient90"
|
||||||
|
inkscape:collect="never"><stop
|
||||||
|
style="stop-color:#000000;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop90" /><stop
|
||||||
|
style="stop-color:#000000;stop-opacity:0;"
|
||||||
|
offset="1"
|
||||||
|
id="stop91" /></linearGradient><linearGradient
|
||||||
|
id="linearGradient19"
|
||||||
|
inkscape:collect="never"><stop
|
||||||
|
style="stop-color:#040bff;stop-opacity:0;"
|
||||||
|
offset="0.37807184"
|
||||||
|
id="stop19" /><stop
|
||||||
|
style="stop-color:#28ece5;stop-opacity:0.26666668;"
|
||||||
|
offset="0.71330941"
|
||||||
|
id="stop22" /><stop
|
||||||
|
style="stop-color:#15ff04;stop-opacity:0.5333333;"
|
||||||
|
offset="0.86158413"
|
||||||
|
id="stop21" /><stop
|
||||||
|
style="stop-color:#f8de48;stop-opacity:1;"
|
||||||
|
offset="0.93746954"
|
||||||
|
id="stop23" /><stop
|
||||||
|
style="stop-color:#ff0404;stop-opacity:0;"
|
||||||
|
offset="1"
|
||||||
|
id="stop20" /></linearGradient><linearGradient
|
||||||
|
id="linearGradient3"
|
||||||
|
inkscape:collect="never"><stop
|
||||||
|
style="stop-color:#0495ff;stop-opacity:0;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3" /><stop
|
||||||
|
style="stop-color:#0495ff;stop-opacity:1;"
|
||||||
|
offset="0.46630496"
|
||||||
|
id="stop15" /><stop
|
||||||
|
style="stop-color:#0495ff;stop-opacity:0;"
|
||||||
|
offset="1"
|
||||||
|
id="stop4" /></linearGradient><linearGradient
|
||||||
|
id="linearGradient12"
|
||||||
|
inkscape:collect="never"><stop
|
||||||
|
style="stop-color:#00bcf5;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop12" /><stop
|
||||||
|
style="stop-color:#296af5;stop-opacity:0.65098041;"
|
||||||
|
offset="0.3475728"
|
||||||
|
id="stop14" /><stop
|
||||||
|
style="stop-color:#7800f5;stop-opacity:0;"
|
||||||
|
offset="1"
|
||||||
|
id="stop13" /></linearGradient><linearGradient
|
||||||
|
id="linearGradient9"
|
||||||
|
inkscape:collect="never"><stop
|
||||||
|
style="stop-color:#ff26a7;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop9" /><stop
|
||||||
|
style="stop-color:#ff3426;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop10" /></linearGradient><linearGradient
|
||||||
|
id="linearGradient7"
|
||||||
|
inkscape:collect="never"><stop
|
||||||
|
style="stop-color:#2636ff;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop7" /><stop
|
||||||
|
style="stop-color:#29006f;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop8" /></linearGradient><linearGradient
|
||||||
|
id="linearGradient5"
|
||||||
|
inkscape:collect="never"><stop
|
||||||
|
style="stop-color:#beffc5;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop5" /><stop
|
||||||
|
style="stop-color:#26c5ff;stop-opacity:1;"
|
||||||
|
offset="0.53096259"
|
||||||
|
id="stop11" /><stop
|
||||||
|
style="stop-color:#0051eb;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop6" /></linearGradient><clipPath
|
||||||
|
clipPathUnits="userSpaceOnUse"
|
||||||
|
id="clipPath7940"><rect
|
||||||
|
style="fill:#333333;fill-opacity:1;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
|
||||||
|
id="rect7942"
|
||||||
|
width="1440"
|
||||||
|
height="810"
|
||||||
|
x="0"
|
||||||
|
y="0" /></clipPath><linearGradient
|
||||||
|
inkscape:collect="never"
|
||||||
|
xlink:href="#linearGradient5"
|
||||||
|
id="linearGradient6"
|
||||||
|
x1="2094.8511"
|
||||||
|
y1="824.97723"
|
||||||
|
x2="2175.8127"
|
||||||
|
y2="1376.4214"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.69112949,0,0,0.69112949,529.92586,259.08767)" /><linearGradient
|
||||||
|
inkscape:collect="never"
|
||||||
|
xlink:href="#linearGradient7"
|
||||||
|
id="linearGradient8"
|
||||||
|
x1="2107.4609"
|
||||||
|
y1="790.479"
|
||||||
|
x2="2563.2524"
|
||||||
|
y2="1203.4646"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.69112949,0,0,0.69112949,529.92586,259.08767)" /><linearGradient
|
||||||
|
inkscape:collect="never"
|
||||||
|
xlink:href="#linearGradient9"
|
||||||
|
id="linearGradient10"
|
||||||
|
x1="1966.5072"
|
||||||
|
y1="1228.4695"
|
||||||
|
x2="1874.9818"
|
||||||
|
y2="528.3299"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.69112949,0,0,0.69112949,529.92586,259.08767)" /><filter
|
||||||
|
inkscape:collect="always"
|
||||||
|
style="color-interpolation-filters:sRGB"
|
||||||
|
id="filter10"
|
||||||
|
x="-0.32921062"
|
||||||
|
y="-0.82302656"
|
||||||
|
width="1.6584212"
|
||||||
|
height="2.6460531"><feGaussianBlur
|
||||||
|
inkscape:collect="always"
|
||||||
|
stdDeviation="329.39922"
|
||||||
|
id="feGaussianBlur10" /></filter><filter
|
||||||
|
inkscape:collect="always"
|
||||||
|
style="color-interpolation-filters:sRGB"
|
||||||
|
id="filter11"
|
||||||
|
x="-0.017136762"
|
||||||
|
y="-0.0835418"
|
||||||
|
width="1.0342735"
|
||||||
|
height="1.1670836"><feGaussianBlur
|
||||||
|
inkscape:collect="always"
|
||||||
|
stdDeviation="11.456677"
|
||||||
|
id="feGaussianBlur11" /></filter><filter
|
||||||
|
inkscape:collect="always"
|
||||||
|
style="color-interpolation-filters:sRGB"
|
||||||
|
id="filter12"
|
||||||
|
x="-0.1102434"
|
||||||
|
y="-0.51284629"
|
||||||
|
width="1.2203709"
|
||||||
|
height="2.0256926"><feGaussianBlur
|
||||||
|
inkscape:collect="always"
|
||||||
|
stdDeviation="61.763442"
|
||||||
|
id="feGaussianBlur12" /></filter><radialGradient
|
||||||
|
inkscape:collect="never"
|
||||||
|
xlink:href="#linearGradient12"
|
||||||
|
id="radialGradient13"
|
||||||
|
cx="1008.5775"
|
||||||
|
cy="617.15338"
|
||||||
|
fx="1008.5775"
|
||||||
|
fy="617.15338"
|
||||||
|
r="749.229"
|
||||||
|
gradientTransform="matrix(3.747293,0,0,0.21523126,-1392.2413,742.81336)"
|
||||||
|
gradientUnits="userSpaceOnUse" /><filter
|
||||||
|
inkscape:collect="always"
|
||||||
|
style="color-interpolation-filters:sRGB"
|
||||||
|
id="filter16"
|
||||||
|
x="-0.32921062"
|
||||||
|
y="-0.82302656"
|
||||||
|
width="1.6584212"
|
||||||
|
height="2.6460531"><feGaussianBlur
|
||||||
|
inkscape:collect="always"
|
||||||
|
stdDeviation="329.39922"
|
||||||
|
id="feGaussianBlur16" /></filter><linearGradient
|
||||||
|
inkscape:collect="never"
|
||||||
|
xlink:href="#linearGradient3"
|
||||||
|
id="linearGradient4"
|
||||||
|
x1="564.68774"
|
||||||
|
y1="994.08865"
|
||||||
|
x2="2793.1636"
|
||||||
|
y2="994.08865"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.62449476,0,0,0.04518098,-782.4473,78.113255)" /><linearGradient
|
||||||
|
inkscape:collect="never"
|
||||||
|
xlink:href="#linearGradient3"
|
||||||
|
id="linearGradient15"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.7990724,0,0,0.03619034,-71.449763,1118.434)"
|
||||||
|
x1="564.68774"
|
||||||
|
y1="994.08865"
|
||||||
|
x2="2793.1636"
|
||||||
|
y2="994.08865" /><linearGradient
|
||||||
|
inkscape:collect="never"
|
||||||
|
xlink:href="#linearGradient3"
|
||||||
|
id="linearGradient16"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.62449476,0,0,0.01256241,-754.38778,93.218765)"
|
||||||
|
x1="564.68774"
|
||||||
|
y1="994.08865"
|
||||||
|
x2="2793.1636"
|
||||||
|
y2="994.08865" /><linearGradient
|
||||||
|
inkscape:collect="never"
|
||||||
|
xlink:href="#linearGradient5"
|
||||||
|
id="linearGradient17"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.4051037,0,0,1.4051038,-1136.1343,-483.68581)"
|
||||||
|
x1="2094.8511"
|
||||||
|
y1="824.97723"
|
||||||
|
x2="2175.8127"
|
||||||
|
y2="1376.4214" /><radialGradient
|
||||||
|
inkscape:collect="never"
|
||||||
|
xlink:href="#linearGradient19"
|
||||||
|
id="radialGradient20"
|
||||||
|
cx="1119.998"
|
||||||
|
cy="950.70941"
|
||||||
|
fx="1119.998"
|
||||||
|
fy="950.70941"
|
||||||
|
r="624.87445"
|
||||||
|
gradientTransform="matrix(0.34712042,0,0,0.34765894,-33.450507,-207.77582)"
|
||||||
|
gradientUnits="userSpaceOnUse" /><radialGradient
|
||||||
|
inkscape:collect="never"
|
||||||
|
xlink:href="#linearGradient19"
|
||||||
|
id="radialGradient23"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.17454512,0,0,0.1748159,-48.699567,-25.174513)"
|
||||||
|
cx="1119.998"
|
||||||
|
cy="950.70941"
|
||||||
|
fx="1119.998"
|
||||||
|
fy="950.70941"
|
||||||
|
r="624.87445" /><radialGradient
|
||||||
|
inkscape:collect="never"
|
||||||
|
xlink:href="#linearGradient19"
|
||||||
|
id="radialGradient24"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.75180429,0,0,0.75297064,658.53439,589.08112)"
|
||||||
|
cx="1119.998"
|
||||||
|
cy="950.70941"
|
||||||
|
fx="1119.998"
|
||||||
|
fy="950.70941"
|
||||||
|
r="624.87445" /><filter
|
||||||
|
inkscape:collect="always"
|
||||||
|
style="color-interpolation-filters:sRGB"
|
||||||
|
id="filter24"
|
||||||
|
x="-0.166101"
|
||||||
|
y="-0.16584373"
|
||||||
|
width="1.332202"
|
||||||
|
height="1.3316875"><feGaussianBlur
|
||||||
|
inkscape:collect="always"
|
||||||
|
stdDeviation="65.026231"
|
||||||
|
id="feGaussianBlur24" /></filter><linearGradient
|
||||||
|
inkscape:collect="never"
|
||||||
|
xlink:href="#linearGradient3"
|
||||||
|
id="linearGradient24"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.1914799,0,0,0.0138532,-250.58535,-274.02297)"
|
||||||
|
x1="564.68774"
|
||||||
|
y1="994.08865"
|
||||||
|
x2="2793.1636"
|
||||||
|
y2="994.08865" /><radialGradient
|
||||||
|
inkscape:collect="never"
|
||||||
|
xlink:href="#linearGradient19"
|
||||||
|
id="radialGradient25"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.75180429,0,0,0.75297064,811.71404,129.54216)"
|
||||||
|
cx="1119.998"
|
||||||
|
cy="950.70941"
|
||||||
|
fx="1119.998"
|
||||||
|
fy="950.70941"
|
||||||
|
r="624.87445" /><filter
|
||||||
|
inkscape:collect="always"
|
||||||
|
style="color-interpolation-filters:sRGB"
|
||||||
|
id="filter72"
|
||||||
|
x="-0.02048285"
|
||||||
|
y="-0.082298482"
|
||||||
|
width="1.0409657"
|
||||||
|
height="1.164597"><feGaussianBlur
|
||||||
|
inkscape:collect="always"
|
||||||
|
stdDeviation="6.0393534"
|
||||||
|
id="feGaussianBlur72" /></filter><filter
|
||||||
|
inkscape:collect="always"
|
||||||
|
style="color-interpolation-filters:sRGB"
|
||||||
|
id="filter87"
|
||||||
|
x="-0.02092748"
|
||||||
|
y="-0.084084969"
|
||||||
|
width="1.041855"
|
||||||
|
height="1.1681699"><feGaussianBlur
|
||||||
|
inkscape:collect="always"
|
||||||
|
stdDeviation="6.2156756"
|
||||||
|
id="feGaussianBlur87" /></filter><linearGradient
|
||||||
|
inkscape:collect="never"
|
||||||
|
xlink:href="#linearGradient90"
|
||||||
|
id="linearGradient91"
|
||||||
|
x1="1860.8627"
|
||||||
|
y1="2098.6846"
|
||||||
|
x2="1860.8627"
|
||||||
|
y2="1628.0042"
|
||||||
|
gradientUnits="userSpaceOnUse" /><linearGradient
|
||||||
|
inkscape:collect="never"
|
||||||
|
xlink:href="#linearGradient90"
|
||||||
|
id="linearGradient93"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
x1="1860.8627"
|
||||||
|
y1="2338.822"
|
||||||
|
x2="1860.8627"
|
||||||
|
y2="1788.3641"
|
||||||
|
gradientTransform="translate(27.869358,-2338.8221)" /><radialGradient
|
||||||
|
inkscape:collect="never"
|
||||||
|
xlink:href="#linearGradient94"
|
||||||
|
id="radialGradient95"
|
||||||
|
cx="1920"
|
||||||
|
cy="1080"
|
||||||
|
fx="1920"
|
||||||
|
fy="1080"
|
||||||
|
r="1920"
|
||||||
|
gradientTransform="matrix(1.7192751,0,0,1.324141,-1381.0082,-350.07229)"
|
||||||
|
gradientUnits="userSpaceOnUse" /><radialGradient
|
||||||
|
inkscape:collect="never"
|
||||||
|
xlink:href="#linearGradient95"
|
||||||
|
id="radialGradient97"
|
||||||
|
cx="1083.5778"
|
||||||
|
cy="591.74402"
|
||||||
|
fx="1083.5778"
|
||||||
|
fy="591.74402"
|
||||||
|
r="184.21703"
|
||||||
|
gradientTransform="matrix(1,0,0,1.0326088,0,-19.691775)"
|
||||||
|
gradientUnits="userSpaceOnUse" /><radialGradient
|
||||||
|
inkscape:collect="never"
|
||||||
|
xlink:href="#linearGradient97"
|
||||||
|
id="radialGradient99"
|
||||||
|
cx="1097.7074"
|
||||||
|
cy="1603.3074"
|
||||||
|
fx="1097.7074"
|
||||||
|
fy="1603.3074"
|
||||||
|
r="184.21703"
|
||||||
|
gradientTransform="matrix(1.6794372,0,0,1.7342017,-743.15021,-1179.0033)"
|
||||||
|
gradientUnits="userSpaceOnUse" /><radialGradient
|
||||||
|
inkscape:collect="never"
|
||||||
|
xlink:href="#linearGradient99"
|
||||||
|
id="radialGradient101"
|
||||||
|
cx="1076.0927"
|
||||||
|
cy="1088.3387"
|
||||||
|
fx="1076.0927"
|
||||||
|
fy="1088.3387"
|
||||||
|
r="184.21703"
|
||||||
|
gradientTransform="matrix(1.5456838,0,0,1.5960864,-575.91544,-670.79369)"
|
||||||
|
gradientUnits="userSpaceOnUse" /></defs><g
|
||||||
|
inkscape:label="Content"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
style="fill:#ffffff;fill-opacity:1"><rect
|
||||||
|
style="fill:url(#radialGradient95);fill-opacity:1;stroke-linecap:round;stroke-linejoin:round"
|
||||||
|
id="rect1"
|
||||||
|
width="3840"
|
||||||
|
height="2160"
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
ry="7.9545546"
|
||||||
|
inkscape:label="BG" /><rect
|
||||||
|
style="display:inline;opacity:0.053719;mix-blend-mode:screen;fill:url(#linearGradient15);stroke:none;stroke-width:5.10331;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
id="rect15"
|
||||||
|
width="4009.1892"
|
||||||
|
height="14.339585"
|
||||||
|
x="944.46436"
|
||||||
|
y="1147.2405"
|
||||||
|
ry="0.045129254" /><text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-size:185.911px;line-height:1.4;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';writing-mode:lr-tb;direction:ltr;display:inline;mix-blend-mode:screen;fill:#04bdff;fill-opacity:1;stroke-width:4.64778;stroke-linecap:round;stroke-linejoin:round"
|
||||||
|
x="1534.5441"
|
||||||
|
y="641.80176"
|
||||||
|
id="text87"
|
||||||
|
transform="matrix(0.95321043,0,-0.10226778,1.0490863,0,0)"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan87"
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';fill:#04bdff;fill-opacity:1;stroke-width:4.64778">MY PROJECT</tspan></text><rect
|
||||||
|
style="fill:url(#radialGradient97);fill-opacity:1;stroke:none;stroke-width:8.33839;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
id="rect87"
|
||||||
|
width="368.43405"
|
||||||
|
height="380.44824"
|
||||||
|
x="909.55615"
|
||||||
|
y="413.65512"
|
||||||
|
ry="73.820305" /><text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-size:185.911px;line-height:1.4;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';writing-mode:lr-tb;direction:ltr;display:inline;mix-blend-mode:screen;fill:#04ffd1;fill-opacity:1;stroke-width:4.64778;stroke-linecap:round;stroke-linejoin:round"
|
||||||
|
x="1584.4788"
|
||||||
|
y="1107.2302"
|
||||||
|
id="text88"
|
||||||
|
transform="matrix(0.95321043,0,-0.10226778,1.0490863,0,0)"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan88"
|
||||||
|
x="1584.4788"
|
||||||
|
y="1107.2302"
|
||||||
|
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';fill:#04ffd1;fill-opacity:1;stroke-width:4.64778">SUPER COOL IDEA</tspan></text><rect
|
||||||
|
style="fill:url(#radialGradient101);fill-opacity:1;stroke:none;stroke-width:8.33839;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
id="rect88"
|
||||||
|
width="368.43405"
|
||||||
|
height="380.44824"
|
||||||
|
x="909.55615"
|
||||||
|
y="901.92981"
|
||||||
|
ry="73.820305" /><text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-size:185.911px;line-height:1.4;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';writing-mode:lr-tb;direction:ltr;display:inline;mix-blend-mode:screen;fill:#e93978;fill-opacity:1;stroke-width:4.64778;stroke-linecap:round;stroke-linejoin:round"
|
||||||
|
x="1637.0114"
|
||||||
|
y="1596.8718"
|
||||||
|
id="text89"
|
||||||
|
transform="matrix(0.95321043,0,-0.10226778,1.0490863,0,0)"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan89"
|
||||||
|
x="1637.0114"
|
||||||
|
y="1596.8718"
|
||||||
|
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';fill:#e93978;fill-opacity:1;stroke-width:4.64778">SECRET PROJECT</tspan></text><rect
|
||||||
|
style="fill:url(#radialGradient99);fill-opacity:1;stroke:none;stroke-width:8.33839;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
id="rect89"
|
||||||
|
width="368.43405"
|
||||||
|
height="380.44824"
|
||||||
|
x="909.55615"
|
||||||
|
y="1415.606"
|
||||||
|
ry="73.820305" /><text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-size:185.911px;line-height:1.4;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';writing-mode:lr-tb;direction:ltr;display:inline;mix-blend-mode:screen;fill:#e9a939;fill-opacity:1;stroke-width:4.64778;stroke-linecap:round;stroke-linejoin:round"
|
||||||
|
x="1688.3158"
|
||||||
|
y="2075.0669"
|
||||||
|
id="text92"
|
||||||
|
transform="matrix(0.95321043,0,-0.10226778,1.0490863,0,0)"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan92"
|
||||||
|
x="1688.3158"
|
||||||
|
y="2075.0669"
|
||||||
|
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';fill:#e9a939;fill-opacity:1;stroke-width:4.64778">SECRET PROJECT</tspan></text><rect
|
||||||
|
style="fill:#e9a939;fill-opacity:1;stroke:none;stroke-width:8.33839;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
id="rect92"
|
||||||
|
width="368.43405"
|
||||||
|
height="380.44824"
|
||||||
|
x="909.55615"
|
||||||
|
y="1917.2737"
|
||||||
|
ry="73.820305" /><rect
|
||||||
|
style="display:inline;opacity:1;fill:url(#linearGradient91);fill-opacity:1;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
id="rect90"
|
||||||
|
width="3829.8118"
|
||||||
|
height="566.01849"
|
||||||
|
x="-27.869196"
|
||||||
|
y="1532.6661"
|
||||||
|
ry="0"
|
||||||
|
transform="translate(38.057367,61.315595)" /><rect
|
||||||
|
style="display:inline;opacity:1;fill:url(#linearGradient93);fill-opacity:1;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
id="rect93"
|
||||||
|
width="3829.8118"
|
||||||
|
height="806.15601"
|
||||||
|
x="0"
|
||||||
|
y="-806.15601"
|
||||||
|
ry="0"
|
||||||
|
transform="scale(1,-1)"
|
||||||
|
sodipodi:insensitive="true" /><g
|
||||||
|
id="g101"><rect
|
||||||
|
style="opacity:0;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:10.5587;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
id="rect101"
|
||||||
|
width="1591.7172"
|
||||||
|
height="636.85852"
|
||||||
|
x="-2254.7554"
|
||||||
|
y="3150.8455"
|
||||||
|
inkscape:label="export logo"
|
||||||
|
inkscape:export-filename="C:\rokojori\projects\web-projects\roject\source\rojos\roject-logo-570x240-1592x637.webp"
|
||||||
|
inkscape:export-xdpi="96"
|
||||||
|
inkscape:export-ydpi="96" /><g
|
||||||
|
id="g94"
|
||||||
|
style="display:inline"
|
||||||
|
transform="translate(-1830.355,3284.2183)"><rect
|
||||||
|
style="display:inline;opacity:0.208678;mix-blend-mode:screen;fill:url(#linearGradient4);fill-opacity:1;stroke:none;stroke-width:3.35949;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
id="rect3"
|
||||||
|
width="1391.6715"
|
||||||
|
height="17.90192"
|
||||||
|
x="-429.80276"
|
||||||
|
y="114.0762"
|
||||||
|
ry="0.05634056"
|
||||||
|
transform="translate(38.057367,61.315595)" /><rect
|
||||||
|
style="display:inline;opacity:0.163223;mix-blend-mode:screen;fill:url(#linearGradient16);fill-opacity:1;stroke:none;stroke-width:1.77146;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
id="rect16"
|
||||||
|
width="1391.6715"
|
||||||
|
height="4.9775629"
|
||||||
|
x="-401.74323"
|
||||||
|
y="103.21809"
|
||||||
|
ry="0.015665285"
|
||||||
|
transform="translate(38.057367,61.315595)" /><text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-size:225.632px;line-height:1.4;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';writing-mode:lr-tb;direction:ltr;display:inline;opacity:0.0702127;mix-blend-mode:screen;fill:#ea04ff;fill-opacity:1;stroke-width:5.64081;stroke-linecap:round;stroke-linejoin:round"
|
||||||
|
x="5.0927005"
|
||||||
|
y="186.10992"
|
||||||
|
id="text18"
|
||||||
|
transform="matrix(0.95321043,0,-0.10226778,1.0490863,38.057367,61.315595)"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan18"
|
||||||
|
x="5.0927005"
|
||||||
|
y="186.10992"
|
||||||
|
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';fill:#ea04ff;fill-opacity:1;stroke-width:5.64081">ROJECT</tspan></text><text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-size:225.632px;line-height:1.4;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';writing-mode:lr-tb;direction:ltr;display:inline;opacity:0.0255319;mix-blend-mode:screen;fill:#f7ff04;fill-opacity:1;stroke-width:5.64081;stroke-linecap:round;stroke-linejoin:round"
|
||||||
|
x="9.9234495"
|
||||||
|
y="188.48569"
|
||||||
|
id="text19"
|
||||||
|
transform="matrix(0.95321043,0,-0.10226778,1.0490863,38.057367,61.315595)"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan19"
|
||||||
|
x="9.9234495"
|
||||||
|
y="188.48569"
|
||||||
|
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';fill:#f7ff04;fill-opacity:1;stroke-width:5.64081">ROJECT</tspan></text><ellipse
|
||||||
|
style="display:inline;opacity:0.0165289;mix-blend-mode:screen;fill:url(#radialGradient20);fill-opacity:1;stroke:none;stroke-width:6.41253;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
id="path19"
|
||||||
|
cx="355.32367"
|
||||||
|
cy="122.74678"
|
||||||
|
rx="216.90669"
|
||||||
|
ry="217.24318"
|
||||||
|
transform="translate(38.057367,61.315595)" /><ellipse
|
||||||
|
style="display:inline;opacity:0.0785124;mix-blend-mode:screen;fill:url(#radialGradient23);fill-opacity:1;stroke:none;stroke-width:3.22446;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
id="ellipse23"
|
||||||
|
cx="146.79062"
|
||||||
|
cy="141.02461"
|
||||||
|
rx="109.06878"
|
||||||
|
ry="109.23798"
|
||||||
|
transform="translate(38.057367,61.315595)" /><ellipse
|
||||||
|
style="display:inline;opacity:0.106383;mix-blend-mode:screen;fill:url(#radialGradient24);fill-opacity:1;stroke:none;stroke-width:13.8885;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter:url(#filter24)"
|
||||||
|
id="ellipse24"
|
||||||
|
cx="1500.5537"
|
||||||
|
cy="1304.9374"
|
||||||
|
rx="469.78329"
|
||||||
|
ry="470.51205"
|
||||||
|
transform="matrix(0.34712042,0,0,0.34712042,-278.69904,-178.34982)" /><rect
|
||||||
|
style="display:inline;opacity:0.208678;mix-blend-mode:screen;fill:url(#linearGradient24);fill-opacity:1;stroke:none;stroke-width:1.03007;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
id="rect24"
|
||||||
|
width="426.70831"
|
||||||
|
height="5.4890099"
|
||||||
|
x="-142.45898"
|
||||||
|
y="-262.99619"
|
||||||
|
ry="0.017274901"
|
||||||
|
transform="rotate(100.78149,-6.3419947,46.404872)" /><ellipse
|
||||||
|
style="display:inline;opacity:0.107438;mix-blend-mode:screen;fill:url(#radialGradient25);fill-opacity:1;stroke:none;stroke-width:13.8885;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter:url(#filter24)"
|
||||||
|
id="ellipse25"
|
||||||
|
cx="1653.7334"
|
||||||
|
cy="845.39844"
|
||||||
|
rx="469.78329"
|
||||||
|
ry="470.51205"
|
||||||
|
transform="matrix(0.11905646,0,0,0.11905646,105.1045,19.439942)" /><g
|
||||||
|
id="g26"
|
||||||
|
inkscape:label="BG Gradient"
|
||||||
|
transform="matrix(0.34712042,0,0,0.34712042,-278.69901,-178.34983)"><ellipse
|
||||||
|
style="opacity:1;mix-blend-mode:normal;fill:#0a0066;fill-opacity:1;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter10)"
|
||||||
|
id="path10"
|
||||||
|
cx="1834.5552"
|
||||||
|
cy="1143.0068"
|
||||||
|
rx="1200.6875"
|
||||||
|
ry="480.27499"
|
||||||
|
transform="matrix(0.69112949,0,0,0.69112949,566.63996,353.0411)" /><ellipse
|
||||||
|
style="opacity:1;mix-blend-mode:screen;fill:#005d78;fill-opacity:1;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter16)"
|
||||||
|
id="ellipse16"
|
||||||
|
cx="1834.5552"
|
||||||
|
cy="1143.0068"
|
||||||
|
rx="1200.6875"
|
||||||
|
ry="480.27499"
|
||||||
|
transform="matrix(0.59256734,0,0,0.55929452,795.32629,304.17302)" /></g><g
|
||||||
|
id="g87"
|
||||||
|
inkscape:label="Title"
|
||||||
|
transform="matrix(0.34712042,0,0,0.34712042,-291.90948,-199.63372)"><g
|
||||||
|
id="g12"
|
||||||
|
style="filter:url(#filter12)"
|
||||||
|
transform="matrix(0.69112949,0,0,0.69112949,529.69733,353.12091)"
|
||||||
|
inkscape:label="Shadow"
|
||||||
|
sodipodi:insensitive="true"><text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-size:457.124px;line-height:1.4;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';writing-mode:lr-tb;direction:ltr;display:inline;opacity:1;fill:#000000;fill-opacity:1;stroke-width:11.4281;stroke-linecap:round;stroke-linejoin:round;filter:url(#filter11)"
|
||||||
|
x="1423.6522"
|
||||||
|
y="1196.2206"
|
||||||
|
id="text11"
|
||||||
|
transform="matrix(0.95321043,0,-0.10226778,1.0490863,-55,0)"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan11"
|
||||||
|
x="1423.6522"
|
||||||
|
y="1196.2206"
|
||||||
|
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';fill:#000000;fill-opacity:1;stroke-width:11.4281">ROJECT</tspan></text><text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-size:457.124px;line-height:1.4;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';writing-mode:lr-tb;direction:ltr;display:inline;opacity:1;fill:#000000;fill-opacity:1;stroke-width:11.4281;stroke-linecap:round;stroke-linejoin:round;filter:url(#filter11)"
|
||||||
|
x="1423.6522"
|
||||||
|
y="1196.2206"
|
||||||
|
id="text12"
|
||||||
|
transform="matrix(0.95321043,0,-0.10226778,1.0490863,-4.2276373,0)"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan12"
|
||||||
|
x="1423.6522"
|
||||||
|
y="1196.2206"
|
||||||
|
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';fill:#000000;fill-opacity:1;stroke-width:11.4281">ROJECT</tspan></text></g><g
|
||||||
|
id="g25"
|
||||||
|
inkscape:label="Title"
|
||||||
|
transform="translate(38.057367,61.315595)"
|
||||||
|
sodipodi:insensitive="true"><text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-size:315.932px;line-height:1.4;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';writing-mode:lr-tb;direction:ltr;display:inline;opacity:1;fill:url(#linearGradient10);stroke-width:7.8983;stroke-linecap:round;stroke-linejoin:round"
|
||||||
|
x="1484.9595"
|
||||||
|
y="1087.6149"
|
||||||
|
id="text2"
|
||||||
|
transform="matrix(0.95321043,0,-0.10226778,1.0490863,0,0)"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan2"
|
||||||
|
x="1484.9595"
|
||||||
|
y="1087.6149"
|
||||||
|
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';fill:url(#linearGradient10);fill-opacity:1;stroke-width:7.8983">ROJECT</tspan></text><text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-size:315.932px;line-height:1.4;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';writing-mode:lr-tb;direction:ltr;display:inline;opacity:1;fill:url(#linearGradient8);stroke-width:7.8983;stroke-linecap:round;stroke-linejoin:round"
|
||||||
|
x="1498.2201"
|
||||||
|
y="1087.0574"
|
||||||
|
id="text1"
|
||||||
|
transform="matrix(0.95321043,0,-0.10226778,1.0490863,0,0)"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan1"
|
||||||
|
x="1498.2201"
|
||||||
|
y="1087.0574"
|
||||||
|
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';fill:url(#linearGradient8);fill-opacity:1;stroke-width:7.8983">ROJECT</tspan></text><text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-size:315.932px;line-height:1.4;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';writing-mode:lr-tb;direction:ltr;display:inline;opacity:1;fill:url(#linearGradient6);stroke-width:7.8983;stroke-linecap:round;stroke-linejoin:round"
|
||||||
|
x="1513.8538"
|
||||||
|
y="1085.8309"
|
||||||
|
id="text3"
|
||||||
|
transform="matrix(0.95321043,0,-0.10226778,1.0490863,0,0)"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan3"
|
||||||
|
x="1513.8538"
|
||||||
|
y="1085.8309"
|
||||||
|
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';fill:url(#linearGradient6);fill-opacity:1;stroke-width:7.8983">ROJECT</tspan></text></g><g
|
||||||
|
id="g86"
|
||||||
|
style="display:inline;opacity:0.725207;fill:#ffffff;fill-opacity:1"
|
||||||
|
inkscape:label="White Highlights"><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 1435.1443,979.66538 -33.5441,159.29112"
|
||||||
|
id="path27"
|
||||||
|
sodipodi:nodetypes="cc" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 1889.9057,980.18693 -29.7155,137.11577"
|
||||||
|
id="path28" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 1758.3085,1109.6616 c 0,0 -13.1597,29.7155 -1.6981,57.733"
|
||||||
|
id="path29" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 1967.5806,978.4889 -25.0459,123.9561"
|
||||||
|
id="path30" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 2347.5271,1026.7226 -25.0459,123.9561"
|
||||||
|
id="path31" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 2305.0736,979.12567 -7.4288,32.05033"
|
||||||
|
id="path32" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 2195.5452,978.27595 c 0,0 -19.6906,4.89329 -28.4589,9.76086 -11.5655,6.42041 -22.4448,14.77749 -30.7788,25.05009 -8.2702,10.194 -13.5851,22.6594 -18.0282,35.0113 -5.8348,16.2213 -11.0372,50.5248 -11.0372,50.5248"
|
||||||
|
id="path33"
|
||||||
|
sodipodi:nodetypes="caaac" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 1678.5133,978.27595 c 0,0 -19.6906,4.89329 -28.4589,9.76086 -11.5655,6.42041 -22.4448,14.77749 -30.7788,25.05009 -8.2702,10.194 -13.5851,22.6594 -18.0282,35.0113 -5.8348,16.2213 -11.0372,50.5248 -11.0372,50.5248"
|
||||||
|
id="path34"
|
||||||
|
sodipodi:nodetypes="caaac" /><path
|
||||||
|
style="opacity:1;fill:#ff0404;fill-opacity:1;stroke:#ffffff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 1935.7525,1136.8301 -6.3677,29.7155"
|
||||||
|
id="path57" /><path
|
||||||
|
style="opacity:1;fill:#ff0404;fill-opacity:1;stroke:#ffffff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 1394.5059,1165.6965 -5.0941,20.8009"
|
||||||
|
id="path58" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 2101.3102,1128.7644 c 0,0 -1.7724,9.7315 -1.698,14.6455 0.081,5.3581 0.4954,10.8723 2.3341,15.9057 1.6585,4.5402 4.6858,8.499 7.6384,12.3261 2.3234,3.0117 4.93,5.8463 7.8568,8.2758 3.3069,2.7451 10.8249,7.0044 10.8249,7.0044"
|
||||||
|
id="path59"
|
||||||
|
sodipodi:nodetypes="caaaac" /></g><g
|
||||||
|
id="g65"
|
||||||
|
style="display:inline;opacity:0.549587;mix-blend-mode:screen;fill:#ffffff;fill-opacity:1;stroke:#ff9f02;stroke-opacity:1;filter:url(#filter72)"
|
||||||
|
inkscape:label="Side Glow Orange"
|
||||||
|
transform="translate(-5.5)"><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#ff9f02;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 1557.5166,983.15848 10.1882,18.67832 0.4245,29.7155 -2.9716,23.3479 -13.1597,25.4704 -13.1597,12.7352 -16.5558,8.0657 c 0,0 -2.547,2.547 -2.9715,4.245 -0.4245,1.6981 5.0941,39.0547 5.0941,39.0547 l 6.3676,26.3194 3.396,22.9234 -7.2166,5.9431 -26.7439,-0.4245"
|
||||||
|
id="path60" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#ff9f02;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 1746.4223,1013.723 -1.6981,33.1115 -12.7352,51.7899 -19.5273,55.1859"
|
||||||
|
id="path61" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#ff9f02;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 1927.2623,1016.27 -33.1115,134.9933 -13.5843,18.6783"
|
||||||
|
id="path62" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#ff9f02;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 2098.7491,974.26209 -10.5859,45.38151"
|
||||||
|
id="path63"
|
||||||
|
sodipodi:nodetypes="cc" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#ff9f02;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 2048.2174,1063.403 -6.7893,45.7962"
|
||||||
|
id="path64"
|
||||||
|
sodipodi:nodetypes="cc" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#ff9f02;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 2065.6123,1152.1404 -11.8609,45.7962"
|
||||||
|
id="path65"
|
||||||
|
sodipodi:nodetypes="cc" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#ff9f02;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 2224.4173,969.99876 22.9234,11.03719 12.3107,12.73521 8.4901,27.59294 -5.0941,23.7724"
|
||||||
|
id="path66" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#ff9f02;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 2249.4632,1127.0664 -4.2451,18.2538 c 0,0 -10.1881,20.8008 -14.0087,22.4989 -3.8206,1.698 -30.989,23.7724 -30.989,23.7724 l -11.8862,4.6696"
|
||||||
|
id="path67" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#ff9f02;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 2451.9531,970.84778 -7.6411,51.78982"
|
||||||
|
id="path68" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#ff9f02;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 2389.5506,1024.7602 -36.9322,174.0479"
|
||||||
|
id="path69" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#ff9f02;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 1932.7809,971.69679 -2.9715,19.95183"
|
||||||
|
id="path70" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#ff9f02;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 1689.5383,1183.1013 -17.8293,15.7068 -42.8752,8.0656"
|
||||||
|
id="path71" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#ff9f02;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 1856.3696,1188.1954 -16.1312,10.1882 -16.5558,1.2735"
|
||||||
|
id="path72" /></g><g
|
||||||
|
id="g85"
|
||||||
|
style="display:inline;opacity:0.56405;mix-blend-mode:screen;fill:#ffffff;fill-opacity:1;stroke:#0226ff;stroke-opacity:1;filter:url(#filter87)"
|
||||||
|
transform="translate(8.693769)"
|
||||||
|
inkscape:label="Side Glow Blue"
|
||||||
|
sodipodi:insensitive="true"><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#0226ff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 1557.5166,983.15848 10.1882,18.67832 0.4245,29.7155 -2.9716,23.3479 -13.1597,25.4704 -13.1597,12.7352 -16.5558,8.0657 c 0,0 -2.547,2.547 -2.9715,4.245 -0.4245,1.6981 5.0941,39.0547 5.0941,39.0547 l 6.3676,26.3194 3.396,22.9234 -7.2166,5.9431 -26.7439,-0.4245"
|
||||||
|
id="path73" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#0226ff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 1746.4223,1013.723 -1.6981,33.1115 -12.7352,51.7899 -19.5273,55.1859"
|
||||||
|
id="path74" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#0226ff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 1927.2623,1016.27 -33.1115,134.9933 -13.5843,18.6783"
|
||||||
|
id="path75" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#0226ff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 2098.7491,974.26209 -10.5859,45.38151"
|
||||||
|
id="path76"
|
||||||
|
sodipodi:nodetypes="cc" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#0226ff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 2048.2174,1063.403 -6.7893,45.7962"
|
||||||
|
id="path77"
|
||||||
|
sodipodi:nodetypes="cc" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#0226ff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 2065.6123,1152.1404 -11.8609,45.7962"
|
||||||
|
id="path78"
|
||||||
|
sodipodi:nodetypes="cc" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#0226ff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 2224.4173,969.99876 22.9234,11.03719 12.3107,12.73521 8.4901,27.59294 -5.0941,23.7724"
|
||||||
|
id="path79" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#0226ff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 2249.4632,1127.0664 -4.2451,18.2538 c 0,0 -10.1881,20.8008 -14.0087,22.4989 -3.8206,1.698 -30.989,23.7724 -30.989,23.7724 l -11.8862,4.6696"
|
||||||
|
id="path80" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#0226ff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 2451.9531,970.84778 -7.6411,51.78982"
|
||||||
|
id="path81" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#0226ff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 2389.5506,1024.7602 -36.9322,174.0479"
|
||||||
|
id="path82" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#0226ff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 1932.7809,971.69679 -2.9715,19.95183"
|
||||||
|
id="path83" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#0226ff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 1689.5383,1183.1013 -17.8293,15.7068 -42.8752,8.0656"
|
||||||
|
id="path84" /><path
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#0226ff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="m 1856.3696,1188.1954 -16.1312,10.1882 -16.5558,1.2735"
|
||||||
|
id="path85" /></g></g><g
|
||||||
|
id="g16"
|
||||||
|
transform="matrix(0.34712042,0,0,0.34712042,-275.37576,-201.56357)"
|
||||||
|
inkscape:label="Slogan"><text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-size:67.5143px;line-height:1.4;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';text-align:center;writing-mode:lr-tb;direction:ltr;text-anchor:middle;opacity:1;fill:#0056f5;fill-opacity:1;stroke:none;stroke-width:16.8787;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
x="1835.4407"
|
||||||
|
y="1349.8354"
|
||||||
|
id="text15"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan15"
|
||||||
|
x="1835.4407"
|
||||||
|
y="1349.8354"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Kode Mono';-inkscape-font-specification:'Kode Mono Bold';fill:#0056f5;fill-opacity:1;stroke-width:16.8787">COMPUTER! ZOOM IN!</tspan></text><text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-size:67.5143px;line-height:1.4;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';text-align:center;writing-mode:lr-tb;direction:ltr;text-anchor:middle;opacity:1;fill:#00f526;fill-opacity:1;stroke:none;stroke-width:16.8787;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
x="1835.4407"
|
||||||
|
y="1342.0404"
|
||||||
|
id="text16"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan16"
|
||||||
|
x="1835.4407"
|
||||||
|
y="1342.0404"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Kode Mono';-inkscape-font-specification:'Kode Mono Bold';fill:#00f526;fill-opacity:1;stroke-width:16.8787">COMPUTER! ZOOM IN!</tspan></text><text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:italic;font-variant:normal;font-weight:900;font-stretch:normal;font-size:67.5143px;line-height:1.4;font-family:Barlow;-inkscape-font-specification:'Barlow Heavy Italic';text-align:center;writing-mode:lr-tb;direction:ltr;text-anchor:middle;opacity:1;fill:#00cbf5;fill-opacity:1;stroke:none;stroke-width:16.8787;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
x="1835.4407"
|
||||||
|
y="1344.5404"
|
||||||
|
id="text14"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan14"
|
||||||
|
x="1835.4407"
|
||||||
|
y="1344.5404"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Kode Mono';-inkscape-font-specification:'Kode Mono Bold';fill:#00cbf5;fill-opacity:1;stroke-width:16.8787">COMPUTER! ZOOM IN!</tspan></text></g></g><rect
|
||||||
|
style="opacity:0;fill:#000000;fill-opacity:1;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
id="rect102"
|
||||||
|
width="569.68854"
|
||||||
|
height="240.27089"
|
||||||
|
x="-1743.7411"
|
||||||
|
y="3349.1392" /></g><text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:italic;font-variant:normal;font-weight:500;font-stretch:normal;font-size:56px;line-height:1.4;font-family:Barlow;-inkscape-font-specification:'Barlow Medium Italic';writing-mode:lr-tb;direction:ltr;display:inline;mix-blend-mode:screen;fill:#04bdff;fill-opacity:1;stroke-width:2.26031;stroke-linecap:round;stroke-linejoin:round"
|
||||||
|
x="3479.2214"
|
||||||
|
y="127.57011"
|
||||||
|
id="text91"
|
||||||
|
transform="matrix(0.95321043,0,-0.10226778,1.0490863,0,0)"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan91"
|
||||||
|
x="3479.2214"
|
||||||
|
y="127.57011"
|
||||||
|
style="font-style:italic;font-variant:normal;font-weight:500;font-stretch:normal;font-size:56px;font-family:Barlow;-inkscape-font-specification:'Barlow Medium Italic';fill:#04bdff;fill-opacity:1;stroke-width:2.26031">josef@rokojori.com</tspan></text></g></svg>
|
||||||
|
After Width: | Height: | Size: 49 KiB |
|
|
@ -0,0 +1,372 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!--
|
||||||
|
ITALIC NEON — PATTERN TEMPLATE
|
||||||
|
================================
|
||||||
|
HOW TO USE:
|
||||||
|
1. File > Save As > pattern-01.svg (increment number for each new pattern)
|
||||||
|
2. Edit ONLY the "Pattern (edit this)" layer — all other layers are guides
|
||||||
|
3. Draw white shapes (fill="#ffffff") within the 0-100 coordinate area
|
||||||
|
4. Shapes: use <rect rx="..." ry="..."> for circles/pills, or <ellipse>
|
||||||
|
- Circle: <rect x="35" y="35" width="30" height="30" rx="15" ry="15" fill="#ffffff"/>
|
||||||
|
- Horizontal pill: <rect x="20" y="42" width="60" height="16" rx="8" ry="8" fill="#ffffff"/>
|
||||||
|
- Ellipse: <ellipse cx="50" cy="50" rx="25" ry="15" fill="#ffffff"/>
|
||||||
|
5. Stay within x: 0-100, y: 0-100. Leave ~5 units of margin from edges.
|
||||||
|
6. Aim for 1-8 shapes, non-overlapping, with geometric/symmetric relations.
|
||||||
|
7. The skew is applied at render time — draw flat, it will look correct in the icon.
|
||||||
|
|
||||||
|
The black rect is the inner icon area. The purple rect is the outer chrome (color varies per project at runtime).
|
||||||
|
-->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="540"
|
||||||
|
height="540"
|
||||||
|
viewBox="-20 -20 140 140"
|
||||||
|
version="1.1"
|
||||||
|
id="template"
|
||||||
|
inkscape:version="1.4.3 (0d15f75, 2025-12-25)"
|
||||||
|
sodipodi:docname="pattern-01.svg"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi0="http://sodipodi.sourceforge.net/DTD/sodipodi-0.0.dtd">
|
||||||
|
<defs
|
||||||
|
id="defs30" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview30"
|
||||||
|
pagecolor="#505050"
|
||||||
|
bordercolor="#eeeeee"
|
||||||
|
borderopacity="1"
|
||||||
|
inkscape:showpageshadow="0"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#d1d1d1"
|
||||||
|
inkscape:zoom="1.1614884"
|
||||||
|
inkscape:cx="224.2812"
|
||||||
|
inkscape:cy="238.05663"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1017"
|
||||||
|
inkscape:window-x="-8"
|
||||||
|
inkscape:window-y="-8"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer-pattern" />
|
||||||
|
<sodipodi0:namedview
|
||||||
|
id="namedview"
|
||||||
|
pagecolor="#1a1a2e"
|
||||||
|
bordercolor="#555555"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:current-layer="layer-pattern">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
units="px"
|
||||||
|
spacingx="5"
|
||||||
|
spacingy="5"
|
||||||
|
empspacing="2"
|
||||||
|
color="#2a2a4a"
|
||||||
|
empcolor="#3a3a6a"
|
||||||
|
opacity="0.8"
|
||||||
|
empopacity="1" />
|
||||||
|
</sodipodi0:namedview>
|
||||||
|
<!-- CHROME GUIDE — locked, context only, not exported as pattern data -->
|
||||||
|
<g
|
||||||
|
inkscape:label="Chrome (guide — do not edit)"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer-chrome"
|
||||||
|
sodipodi0:insensitive="true">
|
||||||
|
<!-- Outer colored rect: placeholder purple, will use project color at runtime -->
|
||||||
|
<rect
|
||||||
|
x="-14"
|
||||||
|
y="-14"
|
||||||
|
width="128"
|
||||||
|
height="128"
|
||||||
|
rx="20"
|
||||||
|
ry="20"
|
||||||
|
fill="#6600cc"
|
||||||
|
opacity="0.35"
|
||||||
|
id="rect1" />
|
||||||
|
<!-- Glow hint -->
|
||||||
|
<rect
|
||||||
|
x="-14"
|
||||||
|
y="-14"
|
||||||
|
width="128"
|
||||||
|
height="128"
|
||||||
|
rx="20"
|
||||||
|
ry="20"
|
||||||
|
fill="none"
|
||||||
|
stroke="#8833ff"
|
||||||
|
stroke-width="1.5"
|
||||||
|
opacity="0.5"
|
||||||
|
id="rect2" />
|
||||||
|
<!-- Inner black area = the 0,0 → 100,100 pattern space -->
|
||||||
|
<rect
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
rx="14"
|
||||||
|
ry="14"
|
||||||
|
fill="#000000"
|
||||||
|
id="rect3" />
|
||||||
|
</g>
|
||||||
|
<!-- GRID GUIDE — locked -->
|
||||||
|
<g
|
||||||
|
inkscape:label="Grid (guide — do not edit)"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer-grid"
|
||||||
|
sodipodi0:insensitive="true">
|
||||||
|
<!-- Minor lines every 10 units -->
|
||||||
|
<line
|
||||||
|
x1="10"
|
||||||
|
y1="0"
|
||||||
|
x2="10"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line3" />
|
||||||
|
<line
|
||||||
|
x1="20"
|
||||||
|
y1="0"
|
||||||
|
x2="20"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line4" />
|
||||||
|
<line
|
||||||
|
x1="30"
|
||||||
|
y1="0"
|
||||||
|
x2="30"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line5" />
|
||||||
|
<line
|
||||||
|
x1="40"
|
||||||
|
y1="0"
|
||||||
|
x2="40"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line6" />
|
||||||
|
<line
|
||||||
|
x1="60"
|
||||||
|
y1="0"
|
||||||
|
x2="60"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line7" />
|
||||||
|
<line
|
||||||
|
x1="70"
|
||||||
|
y1="0"
|
||||||
|
x2="70"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line8" />
|
||||||
|
<line
|
||||||
|
x1="80"
|
||||||
|
y1="0"
|
||||||
|
x2="80"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line9" />
|
||||||
|
<line
|
||||||
|
x1="90"
|
||||||
|
y1="0"
|
||||||
|
x2="90"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line10" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="10"
|
||||||
|
x2="100"
|
||||||
|
y2="10"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line11" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="20"
|
||||||
|
x2="100"
|
||||||
|
y2="20"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line12" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="30"
|
||||||
|
x2="100"
|
||||||
|
y2="30"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line13" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="40"
|
||||||
|
x2="100"
|
||||||
|
y2="40"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line14" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="60"
|
||||||
|
x2="100"
|
||||||
|
y2="60"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line15" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="70"
|
||||||
|
x2="100"
|
||||||
|
y2="70"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line16" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="80"
|
||||||
|
x2="100"
|
||||||
|
y2="80"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line17" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="90"
|
||||||
|
x2="100"
|
||||||
|
y2="90"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line18" />
|
||||||
|
<!-- Center crosshair -->
|
||||||
|
<line
|
||||||
|
x1="50"
|
||||||
|
y1="0"
|
||||||
|
x2="50"
|
||||||
|
y2="100"
|
||||||
|
stroke="#2a2a5a"
|
||||||
|
stroke-width="0.8"
|
||||||
|
id="line19" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="50"
|
||||||
|
x2="100"
|
||||||
|
y2="50"
|
||||||
|
stroke="#2a2a5a"
|
||||||
|
stroke-width="0.8"
|
||||||
|
id="line20" />
|
||||||
|
<!-- Pattern area border -->
|
||||||
|
<rect
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
fill="none"
|
||||||
|
stroke="#333366"
|
||||||
|
stroke-width="0.6"
|
||||||
|
id="rect20" />
|
||||||
|
<!-- Quarter markers -->
|
||||||
|
<rect
|
||||||
|
x="25"
|
||||||
|
y="0"
|
||||||
|
width="50"
|
||||||
|
height="0"
|
||||||
|
fill="none"
|
||||||
|
stroke="#2a2a5a"
|
||||||
|
stroke-width="0.4"
|
||||||
|
id="rect21" />
|
||||||
|
<text
|
||||||
|
x="1"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text21">0</text>
|
||||||
|
<text
|
||||||
|
x="23"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text22">25</text>
|
||||||
|
<text
|
||||||
|
x="48"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text23">50</text>
|
||||||
|
<text
|
||||||
|
x="73"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text24">75</text>
|
||||||
|
<text
|
||||||
|
x="97"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text25">100</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="4"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text26">0</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="29"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text27">25</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="54"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text28">50</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="79"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text29">75</text>
|
||||||
|
<text
|
||||||
|
x="-18"
|
||||||
|
y="103"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text30">100</text>
|
||||||
|
</g>
|
||||||
|
<!-- PATTERN — edit this layer only -->
|
||||||
|
<!-- Shapes must use fill="#ffffff". Stay within 0-100. -->
|
||||||
|
<g
|
||||||
|
inkscape:label="Pattern (edit this)"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer-pattern">
|
||||||
|
<!-- Example: single centered circle. Replace with your design. -->
|
||||||
|
<rect
|
||||||
|
x="35"
|
||||||
|
y="35"
|
||||||
|
width="30"
|
||||||
|
height="30"
|
||||||
|
rx="15"
|
||||||
|
ry="15"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="rect30" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
|
@ -0,0 +1,381 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!--
|
||||||
|
ITALIC NEON — PATTERN TEMPLATE
|
||||||
|
================================
|
||||||
|
HOW TO USE:
|
||||||
|
1. File > Save As > pattern-01.svg (increment number for each new pattern)
|
||||||
|
2. Edit ONLY the "Pattern (edit this)" layer — all other layers are guides
|
||||||
|
3. Draw white shapes (fill="#ffffff") within the 0-100 coordinate area
|
||||||
|
4. Shapes: use <rect rx="..." ry="..."> for circles/pills, or <ellipse>
|
||||||
|
- Circle: <rect x="35" y="35" width="30" height="30" rx="15" ry="15" fill="#ffffff"/>
|
||||||
|
- Horizontal pill: <rect x="20" y="42" width="60" height="16" rx="8" ry="8" fill="#ffffff"/>
|
||||||
|
- Ellipse: <ellipse cx="50" cy="50" rx="25" ry="15" fill="#ffffff"/>
|
||||||
|
5. Stay within x: 0-100, y: 0-100. Leave ~5 units of margin from edges.
|
||||||
|
6. Aim for 1-8 shapes, non-overlapping, with geometric/symmetric relations.
|
||||||
|
7. The skew is applied at render time — draw flat, it will look correct in the icon.
|
||||||
|
|
||||||
|
The black rect is the inner icon area. The purple rect is the outer chrome (color varies per project at runtime).
|
||||||
|
-->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="540"
|
||||||
|
height="540"
|
||||||
|
viewBox="-20 -20 140 140"
|
||||||
|
version="1.1"
|
||||||
|
id="template"
|
||||||
|
inkscape:version="1.4.3 (0d15f75, 2025-12-25)"
|
||||||
|
sodipodi:docname="pattern-02.svg"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi0="http://sodipodi.sourceforge.net/DTD/sodipodi-0.0.dtd">
|
||||||
|
<defs
|
||||||
|
id="defs30" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview30"
|
||||||
|
pagecolor="#505050"
|
||||||
|
bordercolor="#eeeeee"
|
||||||
|
borderopacity="1"
|
||||||
|
inkscape:showpageshadow="0"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#d1d1d1"
|
||||||
|
inkscape:zoom="1.1614884"
|
||||||
|
inkscape:cx="224.2812"
|
||||||
|
inkscape:cy="238.05663"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1017"
|
||||||
|
inkscape:window-x="-8"
|
||||||
|
inkscape:window-y="-8"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer-pattern" />
|
||||||
|
<sodipodi0:namedview
|
||||||
|
id="namedview"
|
||||||
|
pagecolor="#1a1a2e"
|
||||||
|
bordercolor="#555555"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:current-layer="layer-pattern">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
units="px"
|
||||||
|
spacingx="5"
|
||||||
|
spacingy="5"
|
||||||
|
empspacing="2"
|
||||||
|
color="#2a2a4a"
|
||||||
|
empcolor="#3a3a6a"
|
||||||
|
opacity="0.8"
|
||||||
|
empopacity="1" />
|
||||||
|
</sodipodi0:namedview>
|
||||||
|
<!-- CHROME GUIDE — locked, context only, not exported as pattern data -->
|
||||||
|
<g
|
||||||
|
inkscape:label="Chrome (guide — do not edit)"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer-chrome"
|
||||||
|
sodipodi0:insensitive="true">
|
||||||
|
<!-- Outer colored rect: placeholder purple, will use project color at runtime -->
|
||||||
|
<rect
|
||||||
|
x="-14"
|
||||||
|
y="-14"
|
||||||
|
width="128"
|
||||||
|
height="128"
|
||||||
|
rx="20"
|
||||||
|
ry="20"
|
||||||
|
fill="#6600cc"
|
||||||
|
opacity="0.35"
|
||||||
|
id="rect1" />
|
||||||
|
<!-- Glow hint -->
|
||||||
|
<rect
|
||||||
|
x="-14"
|
||||||
|
y="-14"
|
||||||
|
width="128"
|
||||||
|
height="128"
|
||||||
|
rx="20"
|
||||||
|
ry="20"
|
||||||
|
fill="none"
|
||||||
|
stroke="#8833ff"
|
||||||
|
stroke-width="1.5"
|
||||||
|
opacity="0.5"
|
||||||
|
id="rect2" />
|
||||||
|
<!-- Inner black area = the 0,0 → 100,100 pattern space -->
|
||||||
|
<rect
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
rx="14"
|
||||||
|
ry="14"
|
||||||
|
fill="#000000"
|
||||||
|
id="rect3" />
|
||||||
|
</g>
|
||||||
|
<!-- GRID GUIDE — locked -->
|
||||||
|
<g
|
||||||
|
inkscape:label="Grid (guide — do not edit)"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer-grid"
|
||||||
|
sodipodi0:insensitive="true">
|
||||||
|
<!-- Minor lines every 10 units -->
|
||||||
|
<line
|
||||||
|
x1="10"
|
||||||
|
y1="0"
|
||||||
|
x2="10"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line3" />
|
||||||
|
<line
|
||||||
|
x1="20"
|
||||||
|
y1="0"
|
||||||
|
x2="20"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line4" />
|
||||||
|
<line
|
||||||
|
x1="30"
|
||||||
|
y1="0"
|
||||||
|
x2="30"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line5" />
|
||||||
|
<line
|
||||||
|
x1="40"
|
||||||
|
y1="0"
|
||||||
|
x2="40"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line6" />
|
||||||
|
<line
|
||||||
|
x1="60"
|
||||||
|
y1="0"
|
||||||
|
x2="60"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line7" />
|
||||||
|
<line
|
||||||
|
x1="70"
|
||||||
|
y1="0"
|
||||||
|
x2="70"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line8" />
|
||||||
|
<line
|
||||||
|
x1="80"
|
||||||
|
y1="0"
|
||||||
|
x2="80"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line9" />
|
||||||
|
<line
|
||||||
|
x1="90"
|
||||||
|
y1="0"
|
||||||
|
x2="90"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line10" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="10"
|
||||||
|
x2="100"
|
||||||
|
y2="10"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line11" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="20"
|
||||||
|
x2="100"
|
||||||
|
y2="20"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line12" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="30"
|
||||||
|
x2="100"
|
||||||
|
y2="30"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line13" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="40"
|
||||||
|
x2="100"
|
||||||
|
y2="40"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line14" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="60"
|
||||||
|
x2="100"
|
||||||
|
y2="60"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line15" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="70"
|
||||||
|
x2="100"
|
||||||
|
y2="70"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line16" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="80"
|
||||||
|
x2="100"
|
||||||
|
y2="80"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line17" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="90"
|
||||||
|
x2="100"
|
||||||
|
y2="90"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line18" />
|
||||||
|
<!-- Center crosshair -->
|
||||||
|
<line
|
||||||
|
x1="50"
|
||||||
|
y1="0"
|
||||||
|
x2="50"
|
||||||
|
y2="100"
|
||||||
|
stroke="#2a2a5a"
|
||||||
|
stroke-width="0.8"
|
||||||
|
id="line19" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="50"
|
||||||
|
x2="100"
|
||||||
|
y2="50"
|
||||||
|
stroke="#2a2a5a"
|
||||||
|
stroke-width="0.8"
|
||||||
|
id="line20" />
|
||||||
|
<!-- Pattern area border -->
|
||||||
|
<rect
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
fill="none"
|
||||||
|
stroke="#333366"
|
||||||
|
stroke-width="0.6"
|
||||||
|
id="rect20" />
|
||||||
|
<!-- Quarter markers -->
|
||||||
|
<rect
|
||||||
|
x="25"
|
||||||
|
y="0"
|
||||||
|
width="50"
|
||||||
|
height="0"
|
||||||
|
fill="none"
|
||||||
|
stroke="#2a2a5a"
|
||||||
|
stroke-width="0.4"
|
||||||
|
id="rect21" />
|
||||||
|
<text
|
||||||
|
x="1"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text21">0</text>
|
||||||
|
<text
|
||||||
|
x="23"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text22">25</text>
|
||||||
|
<text
|
||||||
|
x="48"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text23">50</text>
|
||||||
|
<text
|
||||||
|
x="73"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text24">75</text>
|
||||||
|
<text
|
||||||
|
x="97"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text25">100</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="4"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text26">0</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="29"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text27">25</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="54"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text28">50</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="79"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text29">75</text>
|
||||||
|
<text
|
||||||
|
x="-18"
|
||||||
|
y="103"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text30">100</text>
|
||||||
|
</g>
|
||||||
|
<!-- PATTERN — edit this layer only -->
|
||||||
|
<!-- Shapes must use fill="#ffffff". Stay within 0-100. -->
|
||||||
|
<g
|
||||||
|
inkscape:label="Pattern (edit this)"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer-pattern">
|
||||||
|
<!-- Example: single centered circle. Replace with your design. -->
|
||||||
|
<rect
|
||||||
|
x="61.562344"
|
||||||
|
y="10.000148"
|
||||||
|
width="30"
|
||||||
|
height="30"
|
||||||
|
rx="15"
|
||||||
|
ry="15"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="rect30" />
|
||||||
|
<rect
|
||||||
|
x="9.5537233"
|
||||||
|
y="62.678406"
|
||||||
|
width="30"
|
||||||
|
height="30"
|
||||||
|
rx="15"
|
||||||
|
ry="15"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="rect31" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
|
@ -0,0 +1,381 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!--
|
||||||
|
ITALIC NEON — PATTERN TEMPLATE
|
||||||
|
================================
|
||||||
|
HOW TO USE:
|
||||||
|
1. File > Save As > pattern-01.svg (increment number for each new pattern)
|
||||||
|
2. Edit ONLY the "Pattern (edit this)" layer — all other layers are guides
|
||||||
|
3. Draw white shapes (fill="#ffffff") within the 0-100 coordinate area
|
||||||
|
4. Shapes: use <rect rx="..." ry="..."> for circles/pills, or <ellipse>
|
||||||
|
- Circle: <rect x="35" y="35" width="30" height="30" rx="15" ry="15" fill="#ffffff"/>
|
||||||
|
- Horizontal pill: <rect x="20" y="42" width="60" height="16" rx="8" ry="8" fill="#ffffff"/>
|
||||||
|
- Ellipse: <ellipse cx="50" cy="50" rx="25" ry="15" fill="#ffffff"/>
|
||||||
|
5. Stay within x: 0-100, y: 0-100. Leave ~5 units of margin from edges.
|
||||||
|
6. Aim for 1-8 shapes, non-overlapping, with geometric/symmetric relations.
|
||||||
|
7. The skew is applied at render time — draw flat, it will look correct in the icon.
|
||||||
|
|
||||||
|
The black rect is the inner icon area. The purple rect is the outer chrome (color varies per project at runtime).
|
||||||
|
-->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="540"
|
||||||
|
height="540"
|
||||||
|
viewBox="-20 -20 140 140"
|
||||||
|
version="1.1"
|
||||||
|
id="template"
|
||||||
|
inkscape:version="1.4.3 (0d15f75, 2025-12-25)"
|
||||||
|
sodipodi:docname="pattern-03.svg"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi0="http://sodipodi.sourceforge.net/DTD/sodipodi-0.0.dtd">
|
||||||
|
<defs
|
||||||
|
id="defs30" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview30"
|
||||||
|
pagecolor="#505050"
|
||||||
|
bordercolor="#eeeeee"
|
||||||
|
borderopacity="1"
|
||||||
|
inkscape:showpageshadow="0"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#d1d1d1"
|
||||||
|
inkscape:zoom="1.1614884"
|
||||||
|
inkscape:cx="224.2812"
|
||||||
|
inkscape:cy="238.05663"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1017"
|
||||||
|
inkscape:window-x="-8"
|
||||||
|
inkscape:window-y="-8"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer-pattern" />
|
||||||
|
<sodipodi0:namedview
|
||||||
|
id="namedview"
|
||||||
|
pagecolor="#1a1a2e"
|
||||||
|
bordercolor="#555555"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:current-layer="layer-pattern">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
units="px"
|
||||||
|
spacingx="5"
|
||||||
|
spacingy="5"
|
||||||
|
empspacing="2"
|
||||||
|
color="#2a2a4a"
|
||||||
|
empcolor="#3a3a6a"
|
||||||
|
opacity="0.8"
|
||||||
|
empopacity="1" />
|
||||||
|
</sodipodi0:namedview>
|
||||||
|
<!-- CHROME GUIDE — locked, context only, not exported as pattern data -->
|
||||||
|
<g
|
||||||
|
inkscape:label="Chrome (guide — do not edit)"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer-chrome"
|
||||||
|
sodipodi0:insensitive="true">
|
||||||
|
<!-- Outer colored rect: placeholder purple, will use project color at runtime -->
|
||||||
|
<rect
|
||||||
|
x="-14"
|
||||||
|
y="-14"
|
||||||
|
width="128"
|
||||||
|
height="128"
|
||||||
|
rx="20"
|
||||||
|
ry="20"
|
||||||
|
fill="#6600cc"
|
||||||
|
opacity="0.35"
|
||||||
|
id="rect1" />
|
||||||
|
<!-- Glow hint -->
|
||||||
|
<rect
|
||||||
|
x="-14"
|
||||||
|
y="-14"
|
||||||
|
width="128"
|
||||||
|
height="128"
|
||||||
|
rx="20"
|
||||||
|
ry="20"
|
||||||
|
fill="none"
|
||||||
|
stroke="#8833ff"
|
||||||
|
stroke-width="1.5"
|
||||||
|
opacity="0.5"
|
||||||
|
id="rect2" />
|
||||||
|
<!-- Inner black area = the 0,0 → 100,100 pattern space -->
|
||||||
|
<rect
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
rx="14"
|
||||||
|
ry="14"
|
||||||
|
fill="#000000"
|
||||||
|
id="rect3" />
|
||||||
|
</g>
|
||||||
|
<!-- GRID GUIDE — locked -->
|
||||||
|
<g
|
||||||
|
inkscape:label="Grid (guide — do not edit)"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer-grid"
|
||||||
|
sodipodi0:insensitive="true">
|
||||||
|
<!-- Minor lines every 10 units -->
|
||||||
|
<line
|
||||||
|
x1="10"
|
||||||
|
y1="0"
|
||||||
|
x2="10"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line3" />
|
||||||
|
<line
|
||||||
|
x1="20"
|
||||||
|
y1="0"
|
||||||
|
x2="20"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line4" />
|
||||||
|
<line
|
||||||
|
x1="30"
|
||||||
|
y1="0"
|
||||||
|
x2="30"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line5" />
|
||||||
|
<line
|
||||||
|
x1="40"
|
||||||
|
y1="0"
|
||||||
|
x2="40"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line6" />
|
||||||
|
<line
|
||||||
|
x1="60"
|
||||||
|
y1="0"
|
||||||
|
x2="60"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line7" />
|
||||||
|
<line
|
||||||
|
x1="70"
|
||||||
|
y1="0"
|
||||||
|
x2="70"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line8" />
|
||||||
|
<line
|
||||||
|
x1="80"
|
||||||
|
y1="0"
|
||||||
|
x2="80"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line9" />
|
||||||
|
<line
|
||||||
|
x1="90"
|
||||||
|
y1="0"
|
||||||
|
x2="90"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line10" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="10"
|
||||||
|
x2="100"
|
||||||
|
y2="10"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line11" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="20"
|
||||||
|
x2="100"
|
||||||
|
y2="20"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line12" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="30"
|
||||||
|
x2="100"
|
||||||
|
y2="30"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line13" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="40"
|
||||||
|
x2="100"
|
||||||
|
y2="40"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line14" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="60"
|
||||||
|
x2="100"
|
||||||
|
y2="60"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line15" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="70"
|
||||||
|
x2="100"
|
||||||
|
y2="70"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line16" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="80"
|
||||||
|
x2="100"
|
||||||
|
y2="80"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line17" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="90"
|
||||||
|
x2="100"
|
||||||
|
y2="90"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line18" />
|
||||||
|
<!-- Center crosshair -->
|
||||||
|
<line
|
||||||
|
x1="50"
|
||||||
|
y1="0"
|
||||||
|
x2="50"
|
||||||
|
y2="100"
|
||||||
|
stroke="#2a2a5a"
|
||||||
|
stroke-width="0.8"
|
||||||
|
id="line19" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="50"
|
||||||
|
x2="100"
|
||||||
|
y2="50"
|
||||||
|
stroke="#2a2a5a"
|
||||||
|
stroke-width="0.8"
|
||||||
|
id="line20" />
|
||||||
|
<!-- Pattern area border -->
|
||||||
|
<rect
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
fill="none"
|
||||||
|
stroke="#333366"
|
||||||
|
stroke-width="0.6"
|
||||||
|
id="rect20" />
|
||||||
|
<!-- Quarter markers -->
|
||||||
|
<rect
|
||||||
|
x="25"
|
||||||
|
y="0"
|
||||||
|
width="50"
|
||||||
|
height="0"
|
||||||
|
fill="none"
|
||||||
|
stroke="#2a2a5a"
|
||||||
|
stroke-width="0.4"
|
||||||
|
id="rect21" />
|
||||||
|
<text
|
||||||
|
x="1"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text21">0</text>
|
||||||
|
<text
|
||||||
|
x="23"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text22">25</text>
|
||||||
|
<text
|
||||||
|
x="48"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text23">50</text>
|
||||||
|
<text
|
||||||
|
x="73"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text24">75</text>
|
||||||
|
<text
|
||||||
|
x="97"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text25">100</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="4"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text26">0</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="29"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text27">25</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="54"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text28">50</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="79"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text29">75</text>
|
||||||
|
<text
|
||||||
|
x="-18"
|
||||||
|
y="103"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text30">100</text>
|
||||||
|
</g>
|
||||||
|
<!-- PATTERN — edit this layer only -->
|
||||||
|
<!-- Shapes must use fill="#ffffff". Stay within 0-100. -->
|
||||||
|
<g
|
||||||
|
inkscape:label="Pattern (edit this)"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer-pattern">
|
||||||
|
<!-- Example: single centered circle. Replace with your design. -->
|
||||||
|
<rect
|
||||||
|
x="34.776787"
|
||||||
|
y="9.107296"
|
||||||
|
width="30"
|
||||||
|
height="30"
|
||||||
|
rx="15"
|
||||||
|
ry="15"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="rect30" />
|
||||||
|
<rect
|
||||||
|
x="35"
|
||||||
|
y="59.330212"
|
||||||
|
width="30"
|
||||||
|
height="30"
|
||||||
|
rx="15"
|
||||||
|
ry="15"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="rect31" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
|
@ -0,0 +1,392 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!--
|
||||||
|
ITALIC NEON — PATTERN TEMPLATE
|
||||||
|
================================
|
||||||
|
HOW TO USE:
|
||||||
|
1. File > Save As > pattern-01.svg (increment number for each new pattern)
|
||||||
|
2. Edit ONLY the "Pattern (edit this)" layer — all other layers are guides
|
||||||
|
3. Draw white shapes (fill="#ffffff") within the 0-100 coordinate area
|
||||||
|
4. Shapes: use <rect rx="..." ry="..."> for circles/pills, or <ellipse>
|
||||||
|
- Circle: <rect x="35" y="35" width="30" height="30" rx="15" ry="15" fill="#ffffff"/>
|
||||||
|
- Horizontal pill: <rect x="20" y="42" width="60" height="16" rx="8" ry="8" fill="#ffffff"/>
|
||||||
|
- Ellipse: <ellipse cx="50" cy="50" rx="25" ry="15" fill="#ffffff"/>
|
||||||
|
5. Stay within x: 0-100, y: 0-100. Leave ~5 units of margin from edges.
|
||||||
|
6. Aim for 1-8 shapes, non-overlapping, with geometric/symmetric relations.
|
||||||
|
7. The skew is applied at render time — draw flat, it will look correct in the icon.
|
||||||
|
|
||||||
|
The black rect is the inner icon area. The purple rect is the outer chrome (color varies per project at runtime).
|
||||||
|
-->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="540"
|
||||||
|
height="540"
|
||||||
|
viewBox="-20 -20 140 140"
|
||||||
|
version="1.1"
|
||||||
|
id="template"
|
||||||
|
inkscape:version="1.4.3 (0d15f75, 2025-12-25)"
|
||||||
|
sodipodi:docname="pattern-04.svg"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi0="http://sodipodi.sourceforge.net/DTD/sodipodi-0.0.dtd">
|
||||||
|
<defs
|
||||||
|
id="defs30" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview30"
|
||||||
|
pagecolor="#505050"
|
||||||
|
bordercolor="#eeeeee"
|
||||||
|
borderopacity="1"
|
||||||
|
inkscape:showpageshadow="0"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#d1d1d1"
|
||||||
|
inkscape:zoom="1.1614884"
|
||||||
|
inkscape:cx="224.2812"
|
||||||
|
inkscape:cy="238.05663"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1017"
|
||||||
|
inkscape:window-x="-8"
|
||||||
|
inkscape:window-y="-8"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer-pattern" />
|
||||||
|
<sodipodi0:namedview
|
||||||
|
id="namedview"
|
||||||
|
pagecolor="#1a1a2e"
|
||||||
|
bordercolor="#555555"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:current-layer="layer-pattern">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
units="px"
|
||||||
|
spacingx="5"
|
||||||
|
spacingy="5"
|
||||||
|
empspacing="2"
|
||||||
|
color="#2a2a4a"
|
||||||
|
empcolor="#3a3a6a"
|
||||||
|
opacity="0.8"
|
||||||
|
empopacity="1" />
|
||||||
|
</sodipodi0:namedview>
|
||||||
|
<!-- CHROME GUIDE — locked, context only, not exported as pattern data -->
|
||||||
|
<g
|
||||||
|
inkscape:label="Chrome (guide — do not edit)"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer-chrome"
|
||||||
|
sodipodi0:insensitive="true">
|
||||||
|
<!-- Outer colored rect: placeholder purple, will use project color at runtime -->
|
||||||
|
<rect
|
||||||
|
x="-14"
|
||||||
|
y="-14"
|
||||||
|
width="128"
|
||||||
|
height="128"
|
||||||
|
rx="20"
|
||||||
|
ry="20"
|
||||||
|
fill="#6600cc"
|
||||||
|
opacity="0.35"
|
||||||
|
id="rect1" />
|
||||||
|
<!-- Glow hint -->
|
||||||
|
<rect
|
||||||
|
x="-14"
|
||||||
|
y="-14"
|
||||||
|
width="128"
|
||||||
|
height="128"
|
||||||
|
rx="20"
|
||||||
|
ry="20"
|
||||||
|
fill="none"
|
||||||
|
stroke="#8833ff"
|
||||||
|
stroke-width="1.5"
|
||||||
|
opacity="0.5"
|
||||||
|
id="rect2" />
|
||||||
|
<!-- Inner black area = the 0,0 → 100,100 pattern space -->
|
||||||
|
<rect
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
rx="14"
|
||||||
|
ry="14"
|
||||||
|
fill="#000000"
|
||||||
|
id="rect3" />
|
||||||
|
</g>
|
||||||
|
<!-- GRID GUIDE — locked -->
|
||||||
|
<g
|
||||||
|
inkscape:label="Grid (guide — do not edit)"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer-grid"
|
||||||
|
sodipodi0:insensitive="true">
|
||||||
|
<!-- Minor lines every 10 units -->
|
||||||
|
<line
|
||||||
|
x1="10"
|
||||||
|
y1="0"
|
||||||
|
x2="10"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line3" />
|
||||||
|
<line
|
||||||
|
x1="20"
|
||||||
|
y1="0"
|
||||||
|
x2="20"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line4" />
|
||||||
|
<line
|
||||||
|
x1="30"
|
||||||
|
y1="0"
|
||||||
|
x2="30"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line5" />
|
||||||
|
<line
|
||||||
|
x1="40"
|
||||||
|
y1="0"
|
||||||
|
x2="40"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line6" />
|
||||||
|
<line
|
||||||
|
x1="60"
|
||||||
|
y1="0"
|
||||||
|
x2="60"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line7" />
|
||||||
|
<line
|
||||||
|
x1="70"
|
||||||
|
y1="0"
|
||||||
|
x2="70"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line8" />
|
||||||
|
<line
|
||||||
|
x1="80"
|
||||||
|
y1="0"
|
||||||
|
x2="80"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line9" />
|
||||||
|
<line
|
||||||
|
x1="90"
|
||||||
|
y1="0"
|
||||||
|
x2="90"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line10" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="10"
|
||||||
|
x2="100"
|
||||||
|
y2="10"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line11" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="20"
|
||||||
|
x2="100"
|
||||||
|
y2="20"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line12" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="30"
|
||||||
|
x2="100"
|
||||||
|
y2="30"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line13" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="40"
|
||||||
|
x2="100"
|
||||||
|
y2="40"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line14" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="60"
|
||||||
|
x2="100"
|
||||||
|
y2="60"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line15" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="70"
|
||||||
|
x2="100"
|
||||||
|
y2="70"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line16" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="80"
|
||||||
|
x2="100"
|
||||||
|
y2="80"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line17" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="90"
|
||||||
|
x2="100"
|
||||||
|
y2="90"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line18" />
|
||||||
|
<!-- Center crosshair -->
|
||||||
|
<line
|
||||||
|
x1="50"
|
||||||
|
y1="0"
|
||||||
|
x2="50"
|
||||||
|
y2="100"
|
||||||
|
stroke="#2a2a5a"
|
||||||
|
stroke-width="0.8"
|
||||||
|
id="line19" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="50"
|
||||||
|
x2="100"
|
||||||
|
y2="50"
|
||||||
|
stroke="#2a2a5a"
|
||||||
|
stroke-width="0.8"
|
||||||
|
id="line20" />
|
||||||
|
<!-- Pattern area border -->
|
||||||
|
<rect
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
fill="none"
|
||||||
|
stroke="#333366"
|
||||||
|
stroke-width="0.6"
|
||||||
|
id="rect20" />
|
||||||
|
<!-- Quarter markers -->
|
||||||
|
<rect
|
||||||
|
x="25"
|
||||||
|
y="0"
|
||||||
|
width="50"
|
||||||
|
height="0"
|
||||||
|
fill="none"
|
||||||
|
stroke="#2a2a5a"
|
||||||
|
stroke-width="0.4"
|
||||||
|
id="rect21" />
|
||||||
|
<text
|
||||||
|
x="1"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text21">0</text>
|
||||||
|
<text
|
||||||
|
x="23"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text22">25</text>
|
||||||
|
<text
|
||||||
|
x="48"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text23">50</text>
|
||||||
|
<text
|
||||||
|
x="73"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text24">75</text>
|
||||||
|
<text
|
||||||
|
x="97"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text25">100</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="4"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text26">0</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="29"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text27">25</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="54"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text28">50</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="79"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text29">75</text>
|
||||||
|
<text
|
||||||
|
x="-18"
|
||||||
|
y="103"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text30">100</text>
|
||||||
|
</g>
|
||||||
|
<!-- PATTERN — edit this layer only -->
|
||||||
|
<!-- Shapes must use fill="#ffffff". Stay within 0-100. -->
|
||||||
|
<g
|
||||||
|
inkscape:label="Pattern (edit this)"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer-pattern">
|
||||||
|
<!-- Example: single centered circle. Replace with your design. -->
|
||||||
|
<rect
|
||||||
|
x="34.776787"
|
||||||
|
y="9.107296"
|
||||||
|
width="30"
|
||||||
|
height="30"
|
||||||
|
rx="15"
|
||||||
|
ry="15"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="rect30" />
|
||||||
|
<rect
|
||||||
|
x="7.9912314"
|
||||||
|
y="69.374794"
|
||||||
|
width="13.035815"
|
||||||
|
height="13.035815"
|
||||||
|
rx="6.5179076"
|
||||||
|
ry="6.5179076"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="rect31"
|
||||||
|
style="stroke-width:0.434527" />
|
||||||
|
<rect
|
||||||
|
x="78.303314"
|
||||||
|
y="69.374794"
|
||||||
|
width="13.035815"
|
||||||
|
height="13.035815"
|
||||||
|
rx="6.5179076"
|
||||||
|
ry="6.5179076"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="rect32"
|
||||||
|
style="stroke-width:0.434527" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
|
@ -0,0 +1,401 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!--
|
||||||
|
ITALIC NEON — PATTERN TEMPLATE
|
||||||
|
================================
|
||||||
|
HOW TO USE:
|
||||||
|
1. File > Save As > pattern-01.svg (increment number for each new pattern)
|
||||||
|
2. Edit ONLY the "Pattern (edit this)" layer — all other layers are guides
|
||||||
|
3. Draw white shapes (fill="#ffffff") within the 0-100 coordinate area
|
||||||
|
4. Shapes: use <rect rx="..." ry="..."> for circles/pills, or <ellipse>
|
||||||
|
- Circle: <rect x="35" y="35" width="30" height="30" rx="15" ry="15" fill="#ffffff"/>
|
||||||
|
- Horizontal pill: <rect x="20" y="42" width="60" height="16" rx="8" ry="8" fill="#ffffff"/>
|
||||||
|
- Ellipse: <ellipse cx="50" cy="50" rx="25" ry="15" fill="#ffffff"/>
|
||||||
|
5. Stay within x: 0-100, y: 0-100. Leave ~5 units of margin from edges.
|
||||||
|
6. Aim for 1-8 shapes, non-overlapping, with geometric/symmetric relations.
|
||||||
|
7. The skew is applied at render time — draw flat, it will look correct in the icon.
|
||||||
|
|
||||||
|
The black rect is the inner icon area. The purple rect is the outer chrome (color varies per project at runtime).
|
||||||
|
-->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="540"
|
||||||
|
height="540"
|
||||||
|
viewBox="-20 -20 140 140"
|
||||||
|
version="1.1"
|
||||||
|
id="template"
|
||||||
|
inkscape:version="1.4.3 (0d15f75, 2025-12-25)"
|
||||||
|
sodipodi:docname="pattern-05.svg"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi0="http://sodipodi.sourceforge.net/DTD/sodipodi-0.0.dtd">
|
||||||
|
<defs
|
||||||
|
id="defs30" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview30"
|
||||||
|
pagecolor="#505050"
|
||||||
|
bordercolor="#eeeeee"
|
||||||
|
borderopacity="1"
|
||||||
|
inkscape:showpageshadow="0"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#d1d1d1"
|
||||||
|
inkscape:zoom="1.1614884"
|
||||||
|
inkscape:cx="224.2812"
|
||||||
|
inkscape:cy="238.05663"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1017"
|
||||||
|
inkscape:window-x="-8"
|
||||||
|
inkscape:window-y="-8"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer-pattern" />
|
||||||
|
<sodipodi0:namedview
|
||||||
|
id="namedview"
|
||||||
|
pagecolor="#1a1a2e"
|
||||||
|
bordercolor="#555555"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:current-layer="layer-pattern">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
units="px"
|
||||||
|
spacingx="5"
|
||||||
|
spacingy="5"
|
||||||
|
empspacing="2"
|
||||||
|
color="#2a2a4a"
|
||||||
|
empcolor="#3a3a6a"
|
||||||
|
opacity="0.8"
|
||||||
|
empopacity="1" />
|
||||||
|
</sodipodi0:namedview>
|
||||||
|
<!-- CHROME GUIDE — locked, context only, not exported as pattern data -->
|
||||||
|
<g
|
||||||
|
inkscape:label="Chrome (guide — do not edit)"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer-chrome"
|
||||||
|
sodipodi0:insensitive="true">
|
||||||
|
<!-- Outer colored rect: placeholder purple, will use project color at runtime -->
|
||||||
|
<rect
|
||||||
|
x="-14"
|
||||||
|
y="-14"
|
||||||
|
width="128"
|
||||||
|
height="128"
|
||||||
|
rx="20"
|
||||||
|
ry="20"
|
||||||
|
fill="#6600cc"
|
||||||
|
opacity="0.35"
|
||||||
|
id="rect1" />
|
||||||
|
<!-- Glow hint -->
|
||||||
|
<rect
|
||||||
|
x="-14"
|
||||||
|
y="-14"
|
||||||
|
width="128"
|
||||||
|
height="128"
|
||||||
|
rx="20"
|
||||||
|
ry="20"
|
||||||
|
fill="none"
|
||||||
|
stroke="#8833ff"
|
||||||
|
stroke-width="1.5"
|
||||||
|
opacity="0.5"
|
||||||
|
id="rect2" />
|
||||||
|
<!-- Inner black area = the 0,0 → 100,100 pattern space -->
|
||||||
|
<rect
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
rx="14"
|
||||||
|
ry="14"
|
||||||
|
fill="#000000"
|
||||||
|
id="rect3" />
|
||||||
|
</g>
|
||||||
|
<!-- GRID GUIDE — locked -->
|
||||||
|
<g
|
||||||
|
inkscape:label="Grid (guide — do not edit)"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer-grid"
|
||||||
|
sodipodi0:insensitive="true">
|
||||||
|
<!-- Minor lines every 10 units -->
|
||||||
|
<line
|
||||||
|
x1="10"
|
||||||
|
y1="0"
|
||||||
|
x2="10"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line3" />
|
||||||
|
<line
|
||||||
|
x1="20"
|
||||||
|
y1="0"
|
||||||
|
x2="20"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line4" />
|
||||||
|
<line
|
||||||
|
x1="30"
|
||||||
|
y1="0"
|
||||||
|
x2="30"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line5" />
|
||||||
|
<line
|
||||||
|
x1="40"
|
||||||
|
y1="0"
|
||||||
|
x2="40"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line6" />
|
||||||
|
<line
|
||||||
|
x1="60"
|
||||||
|
y1="0"
|
||||||
|
x2="60"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line7" />
|
||||||
|
<line
|
||||||
|
x1="70"
|
||||||
|
y1="0"
|
||||||
|
x2="70"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line8" />
|
||||||
|
<line
|
||||||
|
x1="80"
|
||||||
|
y1="0"
|
||||||
|
x2="80"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line9" />
|
||||||
|
<line
|
||||||
|
x1="90"
|
||||||
|
y1="0"
|
||||||
|
x2="90"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line10" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="10"
|
||||||
|
x2="100"
|
||||||
|
y2="10"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line11" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="20"
|
||||||
|
x2="100"
|
||||||
|
y2="20"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line12" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="30"
|
||||||
|
x2="100"
|
||||||
|
y2="30"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line13" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="40"
|
||||||
|
x2="100"
|
||||||
|
y2="40"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line14" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="60"
|
||||||
|
x2="100"
|
||||||
|
y2="60"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line15" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="70"
|
||||||
|
x2="100"
|
||||||
|
y2="70"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line16" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="80"
|
||||||
|
x2="100"
|
||||||
|
y2="80"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line17" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="90"
|
||||||
|
x2="100"
|
||||||
|
y2="90"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line18" />
|
||||||
|
<!-- Center crosshair -->
|
||||||
|
<line
|
||||||
|
x1="50"
|
||||||
|
y1="0"
|
||||||
|
x2="50"
|
||||||
|
y2="100"
|
||||||
|
stroke="#2a2a5a"
|
||||||
|
stroke-width="0.8"
|
||||||
|
id="line19" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="50"
|
||||||
|
x2="100"
|
||||||
|
y2="50"
|
||||||
|
stroke="#2a2a5a"
|
||||||
|
stroke-width="0.8"
|
||||||
|
id="line20" />
|
||||||
|
<!-- Pattern area border -->
|
||||||
|
<rect
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
fill="none"
|
||||||
|
stroke="#333366"
|
||||||
|
stroke-width="0.6"
|
||||||
|
id="rect20" />
|
||||||
|
<!-- Quarter markers -->
|
||||||
|
<rect
|
||||||
|
x="25"
|
||||||
|
y="0"
|
||||||
|
width="50"
|
||||||
|
height="0"
|
||||||
|
fill="none"
|
||||||
|
stroke="#2a2a5a"
|
||||||
|
stroke-width="0.4"
|
||||||
|
id="rect21" />
|
||||||
|
<text
|
||||||
|
x="1"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text21">0</text>
|
||||||
|
<text
|
||||||
|
x="23"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text22">25</text>
|
||||||
|
<text
|
||||||
|
x="48"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text23">50</text>
|
||||||
|
<text
|
||||||
|
x="73"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text24">75</text>
|
||||||
|
<text
|
||||||
|
x="97"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text25">100</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="4"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text26">0</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="29"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text27">25</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="54"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text28">50</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="79"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text29">75</text>
|
||||||
|
<text
|
||||||
|
x="-18"
|
||||||
|
y="103"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text30">100</text>
|
||||||
|
</g>
|
||||||
|
<!-- PATTERN — edit this layer only -->
|
||||||
|
<!-- Shapes must use fill="#ffffff". Stay within 0-100. -->
|
||||||
|
<g
|
||||||
|
inkscape:label="Pattern (edit this)"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer-pattern">
|
||||||
|
<!-- Example: single centered circle. Replace with your design. -->
|
||||||
|
<rect
|
||||||
|
x="34.776787"
|
||||||
|
y="9.107296"
|
||||||
|
width="30"
|
||||||
|
height="30"
|
||||||
|
rx="15"
|
||||||
|
ry="15"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="rect30" />
|
||||||
|
<rect
|
||||||
|
x="22.500074"
|
||||||
|
y="43.48209"
|
||||||
|
width="13.035815"
|
||||||
|
height="13.035815"
|
||||||
|
rx="6.5179076"
|
||||||
|
ry="6.5179076"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="rect31"
|
||||||
|
style="stroke-width:0.434527" />
|
||||||
|
<rect
|
||||||
|
x="63.348045"
|
||||||
|
y="44.15173"
|
||||||
|
width="13.035815"
|
||||||
|
height="13.035815"
|
||||||
|
rx="6.5179076"
|
||||||
|
ry="6.5179076"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="rect32"
|
||||||
|
style="stroke-width:0.434527" />
|
||||||
|
<rect
|
||||||
|
x="34.776787"
|
||||||
|
y="61.33913"
|
||||||
|
width="30"
|
||||||
|
height="30"
|
||||||
|
rx="15"
|
||||||
|
ry="15"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="rect33" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
|
@ -0,0 +1,401 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!--
|
||||||
|
ITALIC NEON — PATTERN TEMPLATE
|
||||||
|
================================
|
||||||
|
HOW TO USE:
|
||||||
|
1. File > Save As > pattern-01.svg (increment number for each new pattern)
|
||||||
|
2. Edit ONLY the "Pattern (edit this)" layer — all other layers are guides
|
||||||
|
3. Draw white shapes (fill="#ffffff") within the 0-100 coordinate area
|
||||||
|
4. Shapes: use <rect rx="..." ry="..."> for circles/pills, or <ellipse>
|
||||||
|
- Circle: <rect x="35" y="35" width="30" height="30" rx="15" ry="15" fill="#ffffff"/>
|
||||||
|
- Horizontal pill: <rect x="20" y="42" width="60" height="16" rx="8" ry="8" fill="#ffffff"/>
|
||||||
|
- Ellipse: <ellipse cx="50" cy="50" rx="25" ry="15" fill="#ffffff"/>
|
||||||
|
5. Stay within x: 0-100, y: 0-100. Leave ~5 units of margin from edges.
|
||||||
|
6. Aim for 1-8 shapes, non-overlapping, with geometric/symmetric relations.
|
||||||
|
7. The skew is applied at render time — draw flat, it will look correct in the icon.
|
||||||
|
|
||||||
|
The black rect is the inner icon area. The purple rect is the outer chrome (color varies per project at runtime).
|
||||||
|
-->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="540"
|
||||||
|
height="540"
|
||||||
|
viewBox="-20 -20 140 140"
|
||||||
|
version="1.1"
|
||||||
|
id="template"
|
||||||
|
inkscape:version="1.4.3 (0d15f75, 2025-12-25)"
|
||||||
|
sodipodi:docname="pattern-06.svg"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi0="http://sodipodi.sourceforge.net/DTD/sodipodi-0.0.dtd">
|
||||||
|
<defs
|
||||||
|
id="defs30" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview30"
|
||||||
|
pagecolor="#505050"
|
||||||
|
bordercolor="#eeeeee"
|
||||||
|
borderopacity="1"
|
||||||
|
inkscape:showpageshadow="0"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#d1d1d1"
|
||||||
|
inkscape:zoom="1.1614884"
|
||||||
|
inkscape:cx="224.2812"
|
||||||
|
inkscape:cy="238.05663"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1017"
|
||||||
|
inkscape:window-x="-8"
|
||||||
|
inkscape:window-y="-8"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer-pattern" />
|
||||||
|
<sodipodi0:namedview
|
||||||
|
id="namedview"
|
||||||
|
pagecolor="#1a1a2e"
|
||||||
|
bordercolor="#555555"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:current-layer="layer-pattern">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
units="px"
|
||||||
|
spacingx="5"
|
||||||
|
spacingy="5"
|
||||||
|
empspacing="2"
|
||||||
|
color="#2a2a4a"
|
||||||
|
empcolor="#3a3a6a"
|
||||||
|
opacity="0.8"
|
||||||
|
empopacity="1" />
|
||||||
|
</sodipodi0:namedview>
|
||||||
|
<!-- CHROME GUIDE — locked, context only, not exported as pattern data -->
|
||||||
|
<g
|
||||||
|
inkscape:label="Chrome (guide — do not edit)"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer-chrome"
|
||||||
|
sodipodi0:insensitive="true">
|
||||||
|
<!-- Outer colored rect: placeholder purple, will use project color at runtime -->
|
||||||
|
<rect
|
||||||
|
x="-14"
|
||||||
|
y="-14"
|
||||||
|
width="128"
|
||||||
|
height="128"
|
||||||
|
rx="20"
|
||||||
|
ry="20"
|
||||||
|
fill="#6600cc"
|
||||||
|
opacity="0.35"
|
||||||
|
id="rect1" />
|
||||||
|
<!-- Glow hint -->
|
||||||
|
<rect
|
||||||
|
x="-14"
|
||||||
|
y="-14"
|
||||||
|
width="128"
|
||||||
|
height="128"
|
||||||
|
rx="20"
|
||||||
|
ry="20"
|
||||||
|
fill="none"
|
||||||
|
stroke="#8833ff"
|
||||||
|
stroke-width="1.5"
|
||||||
|
opacity="0.5"
|
||||||
|
id="rect2" />
|
||||||
|
<!-- Inner black area = the 0,0 → 100,100 pattern space -->
|
||||||
|
<rect
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
rx="14"
|
||||||
|
ry="14"
|
||||||
|
fill="#000000"
|
||||||
|
id="rect3" />
|
||||||
|
</g>
|
||||||
|
<!-- GRID GUIDE — locked -->
|
||||||
|
<g
|
||||||
|
inkscape:label="Grid (guide — do not edit)"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer-grid"
|
||||||
|
sodipodi0:insensitive="true">
|
||||||
|
<!-- Minor lines every 10 units -->
|
||||||
|
<line
|
||||||
|
x1="10"
|
||||||
|
y1="0"
|
||||||
|
x2="10"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line3" />
|
||||||
|
<line
|
||||||
|
x1="20"
|
||||||
|
y1="0"
|
||||||
|
x2="20"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line4" />
|
||||||
|
<line
|
||||||
|
x1="30"
|
||||||
|
y1="0"
|
||||||
|
x2="30"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line5" />
|
||||||
|
<line
|
||||||
|
x1="40"
|
||||||
|
y1="0"
|
||||||
|
x2="40"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line6" />
|
||||||
|
<line
|
||||||
|
x1="60"
|
||||||
|
y1="0"
|
||||||
|
x2="60"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line7" />
|
||||||
|
<line
|
||||||
|
x1="70"
|
||||||
|
y1="0"
|
||||||
|
x2="70"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line8" />
|
||||||
|
<line
|
||||||
|
x1="80"
|
||||||
|
y1="0"
|
||||||
|
x2="80"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line9" />
|
||||||
|
<line
|
||||||
|
x1="90"
|
||||||
|
y1="0"
|
||||||
|
x2="90"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line10" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="10"
|
||||||
|
x2="100"
|
||||||
|
y2="10"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line11" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="20"
|
||||||
|
x2="100"
|
||||||
|
y2="20"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line12" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="30"
|
||||||
|
x2="100"
|
||||||
|
y2="30"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line13" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="40"
|
||||||
|
x2="100"
|
||||||
|
y2="40"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line14" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="60"
|
||||||
|
x2="100"
|
||||||
|
y2="60"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line15" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="70"
|
||||||
|
x2="100"
|
||||||
|
y2="70"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line16" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="80"
|
||||||
|
x2="100"
|
||||||
|
y2="80"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line17" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="90"
|
||||||
|
x2="100"
|
||||||
|
y2="90"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line18" />
|
||||||
|
<!-- Center crosshair -->
|
||||||
|
<line
|
||||||
|
x1="50"
|
||||||
|
y1="0"
|
||||||
|
x2="50"
|
||||||
|
y2="100"
|
||||||
|
stroke="#2a2a5a"
|
||||||
|
stroke-width="0.8"
|
||||||
|
id="line19" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="50"
|
||||||
|
x2="100"
|
||||||
|
y2="50"
|
||||||
|
stroke="#2a2a5a"
|
||||||
|
stroke-width="0.8"
|
||||||
|
id="line20" />
|
||||||
|
<!-- Pattern area border -->
|
||||||
|
<rect
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
fill="none"
|
||||||
|
stroke="#333366"
|
||||||
|
stroke-width="0.6"
|
||||||
|
id="rect20" />
|
||||||
|
<!-- Quarter markers -->
|
||||||
|
<rect
|
||||||
|
x="25"
|
||||||
|
y="0"
|
||||||
|
width="50"
|
||||||
|
height="0"
|
||||||
|
fill="none"
|
||||||
|
stroke="#2a2a5a"
|
||||||
|
stroke-width="0.4"
|
||||||
|
id="rect21" />
|
||||||
|
<text
|
||||||
|
x="1"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text21">0</text>
|
||||||
|
<text
|
||||||
|
x="23"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text22">25</text>
|
||||||
|
<text
|
||||||
|
x="48"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text23">50</text>
|
||||||
|
<text
|
||||||
|
x="73"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text24">75</text>
|
||||||
|
<text
|
||||||
|
x="97"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text25">100</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="4"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text26">0</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="29"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text27">25</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="54"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text28">50</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="79"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text29">75</text>
|
||||||
|
<text
|
||||||
|
x="-18"
|
||||||
|
y="103"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text30">100</text>
|
||||||
|
</g>
|
||||||
|
<!-- PATTERN — edit this layer only -->
|
||||||
|
<!-- Shapes must use fill="#ffffff". Stay within 0-100. -->
|
||||||
|
<g
|
||||||
|
inkscape:label="Pattern (edit this)"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer-pattern">
|
||||||
|
<!-- Example: single centered circle. Replace with your design. -->
|
||||||
|
<rect
|
||||||
|
x="9.3305092"
|
||||||
|
y="10.223361"
|
||||||
|
width="30"
|
||||||
|
height="30"
|
||||||
|
rx="15"
|
||||||
|
ry="15"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="rect30" />
|
||||||
|
<rect
|
||||||
|
x="17.812603"
|
||||||
|
y="47.723133"
|
||||||
|
width="13.035815"
|
||||||
|
height="13.035815"
|
||||||
|
rx="6.5179076"
|
||||||
|
ry="6.5179076"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="rect31"
|
||||||
|
style="stroke-width:0.434527" />
|
||||||
|
<rect
|
||||||
|
x="68.258736"
|
||||||
|
y="38.34819"
|
||||||
|
width="13.035815"
|
||||||
|
height="13.035815"
|
||||||
|
rx="6.5179076"
|
||||||
|
ry="6.5179076"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="rect32"
|
||||||
|
style="stroke-width:0.434527" />
|
||||||
|
<rect
|
||||||
|
x="61.56234"
|
||||||
|
y="59.553425"
|
||||||
|
width="30"
|
||||||
|
height="30"
|
||||||
|
rx="15"
|
||||||
|
ry="15"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="rect33" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
|
@ -0,0 +1,411 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!--
|
||||||
|
ITALIC NEON — PATTERN TEMPLATE
|
||||||
|
================================
|
||||||
|
HOW TO USE:
|
||||||
|
1. File > Save As > pattern-01.svg (increment number for each new pattern)
|
||||||
|
2. Edit ONLY the "Pattern (edit this)" layer — all other layers are guides
|
||||||
|
3. Draw white shapes (fill="#ffffff") within the 0-100 coordinate area
|
||||||
|
4. Shapes: use <rect rx="..." ry="..."> for circles/pills, or <ellipse>
|
||||||
|
- Circle: <rect x="35" y="35" width="30" height="30" rx="15" ry="15" fill="#ffffff"/>
|
||||||
|
- Horizontal pill: <rect x="20" y="42" width="60" height="16" rx="8" ry="8" fill="#ffffff"/>
|
||||||
|
- Ellipse: <ellipse cx="50" cy="50" rx="25" ry="15" fill="#ffffff"/>
|
||||||
|
5. Stay within x: 0-100, y: 0-100. Leave ~5 units of margin from edges.
|
||||||
|
6. Aim for 1-8 shapes, non-overlapping, with geometric/symmetric relations.
|
||||||
|
7. The skew is applied at render time — draw flat, it will look correct in the icon.
|
||||||
|
|
||||||
|
The black rect is the inner icon area. The purple rect is the outer chrome (color varies per project at runtime).
|
||||||
|
-->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="540"
|
||||||
|
height="540"
|
||||||
|
viewBox="-20 -20 140 140"
|
||||||
|
version="1.1"
|
||||||
|
id="template"
|
||||||
|
inkscape:version="1.4.3 (0d15f75, 2025-12-25)"
|
||||||
|
sodipodi:docname="pattern-07.svg"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi0="http://sodipodi.sourceforge.net/DTD/sodipodi-0.0.dtd">
|
||||||
|
<defs
|
||||||
|
id="defs30" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview30"
|
||||||
|
pagecolor="#505050"
|
||||||
|
bordercolor="#eeeeee"
|
||||||
|
borderopacity="1"
|
||||||
|
inkscape:showpageshadow="0"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#d1d1d1"
|
||||||
|
inkscape:zoom="1.1614884"
|
||||||
|
inkscape:cx="224.2812"
|
||||||
|
inkscape:cy="238.05663"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1017"
|
||||||
|
inkscape:window-x="-8"
|
||||||
|
inkscape:window-y="-8"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer-pattern" />
|
||||||
|
<sodipodi0:namedview
|
||||||
|
id="namedview"
|
||||||
|
pagecolor="#1a1a2e"
|
||||||
|
bordercolor="#555555"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:current-layer="layer-pattern">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
units="px"
|
||||||
|
spacingx="5"
|
||||||
|
spacingy="5"
|
||||||
|
empspacing="2"
|
||||||
|
color="#2a2a4a"
|
||||||
|
empcolor="#3a3a6a"
|
||||||
|
opacity="0.8"
|
||||||
|
empopacity="1" />
|
||||||
|
</sodipodi0:namedview>
|
||||||
|
<!-- CHROME GUIDE — locked, context only, not exported as pattern data -->
|
||||||
|
<g
|
||||||
|
inkscape:label="Chrome (guide — do not edit)"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer-chrome"
|
||||||
|
sodipodi0:insensitive="true">
|
||||||
|
<!-- Outer colored rect: placeholder purple, will use project color at runtime -->
|
||||||
|
<rect
|
||||||
|
x="-14"
|
||||||
|
y="-14"
|
||||||
|
width="128"
|
||||||
|
height="128"
|
||||||
|
rx="20"
|
||||||
|
ry="20"
|
||||||
|
fill="#6600cc"
|
||||||
|
opacity="0.35"
|
||||||
|
id="rect1" />
|
||||||
|
<!-- Glow hint -->
|
||||||
|
<rect
|
||||||
|
x="-14"
|
||||||
|
y="-14"
|
||||||
|
width="128"
|
||||||
|
height="128"
|
||||||
|
rx="20"
|
||||||
|
ry="20"
|
||||||
|
fill="none"
|
||||||
|
stroke="#8833ff"
|
||||||
|
stroke-width="1.5"
|
||||||
|
opacity="0.5"
|
||||||
|
id="rect2" />
|
||||||
|
<!-- Inner black area = the 0,0 → 100,100 pattern space -->
|
||||||
|
<rect
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
rx="14"
|
||||||
|
ry="14"
|
||||||
|
fill="#000000"
|
||||||
|
id="rect3" />
|
||||||
|
</g>
|
||||||
|
<!-- GRID GUIDE — locked -->
|
||||||
|
<g
|
||||||
|
inkscape:label="Grid (guide — do not edit)"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer-grid"
|
||||||
|
sodipodi0:insensitive="true">
|
||||||
|
<!-- Minor lines every 10 units -->
|
||||||
|
<line
|
||||||
|
x1="10"
|
||||||
|
y1="0"
|
||||||
|
x2="10"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line3" />
|
||||||
|
<line
|
||||||
|
x1="20"
|
||||||
|
y1="0"
|
||||||
|
x2="20"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line4" />
|
||||||
|
<line
|
||||||
|
x1="30"
|
||||||
|
y1="0"
|
||||||
|
x2="30"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line5" />
|
||||||
|
<line
|
||||||
|
x1="40"
|
||||||
|
y1="0"
|
||||||
|
x2="40"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line6" />
|
||||||
|
<line
|
||||||
|
x1="60"
|
||||||
|
y1="0"
|
||||||
|
x2="60"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line7" />
|
||||||
|
<line
|
||||||
|
x1="70"
|
||||||
|
y1="0"
|
||||||
|
x2="70"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line8" />
|
||||||
|
<line
|
||||||
|
x1="80"
|
||||||
|
y1="0"
|
||||||
|
x2="80"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line9" />
|
||||||
|
<line
|
||||||
|
x1="90"
|
||||||
|
y1="0"
|
||||||
|
x2="90"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line10" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="10"
|
||||||
|
x2="100"
|
||||||
|
y2="10"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line11" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="20"
|
||||||
|
x2="100"
|
||||||
|
y2="20"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line12" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="30"
|
||||||
|
x2="100"
|
||||||
|
y2="30"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line13" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="40"
|
||||||
|
x2="100"
|
||||||
|
y2="40"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line14" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="60"
|
||||||
|
x2="100"
|
||||||
|
y2="60"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line15" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="70"
|
||||||
|
x2="100"
|
||||||
|
y2="70"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line16" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="80"
|
||||||
|
x2="100"
|
||||||
|
y2="80"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line17" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="90"
|
||||||
|
x2="100"
|
||||||
|
y2="90"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line18" />
|
||||||
|
<!-- Center crosshair -->
|
||||||
|
<line
|
||||||
|
x1="50"
|
||||||
|
y1="0"
|
||||||
|
x2="50"
|
||||||
|
y2="100"
|
||||||
|
stroke="#2a2a5a"
|
||||||
|
stroke-width="0.8"
|
||||||
|
id="line19" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="50"
|
||||||
|
x2="100"
|
||||||
|
y2="50"
|
||||||
|
stroke="#2a2a5a"
|
||||||
|
stroke-width="0.8"
|
||||||
|
id="line20" />
|
||||||
|
<!-- Pattern area border -->
|
||||||
|
<rect
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
fill="none"
|
||||||
|
stroke="#333366"
|
||||||
|
stroke-width="0.6"
|
||||||
|
id="rect20" />
|
||||||
|
<!-- Quarter markers -->
|
||||||
|
<rect
|
||||||
|
x="25"
|
||||||
|
y="0"
|
||||||
|
width="50"
|
||||||
|
height="0"
|
||||||
|
fill="none"
|
||||||
|
stroke="#2a2a5a"
|
||||||
|
stroke-width="0.4"
|
||||||
|
id="rect21" />
|
||||||
|
<text
|
||||||
|
x="1"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text21">0</text>
|
||||||
|
<text
|
||||||
|
x="23"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text22">25</text>
|
||||||
|
<text
|
||||||
|
x="48"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text23">50</text>
|
||||||
|
<text
|
||||||
|
x="73"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text24">75</text>
|
||||||
|
<text
|
||||||
|
x="97"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text25">100</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="4"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text26">0</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="29"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text27">25</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="54"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text28">50</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="79"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text29">75</text>
|
||||||
|
<text
|
||||||
|
x="-18"
|
||||||
|
y="103"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text30">100</text>
|
||||||
|
</g>
|
||||||
|
<!-- PATTERN — edit this layer only -->
|
||||||
|
<!-- Shapes must use fill="#ffffff". Stay within 0-100. -->
|
||||||
|
<g
|
||||||
|
inkscape:label="Pattern (edit this)"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer-pattern">
|
||||||
|
<!-- Example: single centered circle. Replace with your design. -->
|
||||||
|
<rect
|
||||||
|
x="22.276861"
|
||||||
|
y="22.500074"
|
||||||
|
width="30"
|
||||||
|
height="30"
|
||||||
|
rx="15"
|
||||||
|
ry="15"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="rect30" />
|
||||||
|
<rect
|
||||||
|
x="78.526527"
|
||||||
|
y="78.52652"
|
||||||
|
width="13.035815"
|
||||||
|
height="13.035815"
|
||||||
|
rx="6.5179076"
|
||||||
|
ry="6.5179076"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="rect31"
|
||||||
|
style="stroke-width:0.434527" />
|
||||||
|
<rect
|
||||||
|
x="58.66058"
|
||||||
|
y="28.973246"
|
||||||
|
width="13.035815"
|
||||||
|
height="13.035815"
|
||||||
|
rx="6.5179076"
|
||||||
|
ry="6.5179076"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="rect32"
|
||||||
|
style="stroke-width:0.434527" />
|
||||||
|
<rect
|
||||||
|
x="49.732052"
|
||||||
|
y="50.401695"
|
||||||
|
width="30"
|
||||||
|
height="30"
|
||||||
|
rx="15"
|
||||||
|
ry="15"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="rect33" />
|
||||||
|
<rect
|
||||||
|
x="8.8840828"
|
||||||
|
y="9.1072884"
|
||||||
|
width="13.035815"
|
||||||
|
height="13.035815"
|
||||||
|
rx="6.5179076"
|
||||||
|
ry="6.5179076"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="rect34"
|
||||||
|
style="stroke-width:0.434527" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
|
@ -0,0 +1,411 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!--
|
||||||
|
ITALIC NEON — PATTERN TEMPLATE
|
||||||
|
================================
|
||||||
|
HOW TO USE:
|
||||||
|
1. File > Save As > pattern-01.svg (increment number for each new pattern)
|
||||||
|
2. Edit ONLY the "Pattern (edit this)" layer — all other layers are guides
|
||||||
|
3. Draw white shapes (fill="#ffffff") within the 0-100 coordinate area
|
||||||
|
4. Shapes: use <rect rx="..." ry="..."> for circles/pills, or <ellipse>
|
||||||
|
- Circle: <rect x="35" y="35" width="30" height="30" rx="15" ry="15" fill="#ffffff"/>
|
||||||
|
- Horizontal pill: <rect x="20" y="42" width="60" height="16" rx="8" ry="8" fill="#ffffff"/>
|
||||||
|
- Ellipse: <ellipse cx="50" cy="50" rx="25" ry="15" fill="#ffffff"/>
|
||||||
|
5. Stay within x: 0-100, y: 0-100. Leave ~5 units of margin from edges.
|
||||||
|
6. Aim for 1-8 shapes, non-overlapping, with geometric/symmetric relations.
|
||||||
|
7. The skew is applied at render time — draw flat, it will look correct in the icon.
|
||||||
|
|
||||||
|
The black rect is the inner icon area. The purple rect is the outer chrome (color varies per project at runtime).
|
||||||
|
-->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="540"
|
||||||
|
height="540"
|
||||||
|
viewBox="-20 -20 140 140"
|
||||||
|
version="1.1"
|
||||||
|
id="template"
|
||||||
|
inkscape:version="1.4.3 (0d15f75, 2025-12-25)"
|
||||||
|
sodipodi:docname="pattern-08.svg"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi0="http://sodipodi.sourceforge.net/DTD/sodipodi-0.0.dtd">
|
||||||
|
<defs
|
||||||
|
id="defs30" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview30"
|
||||||
|
pagecolor="#505050"
|
||||||
|
bordercolor="#eeeeee"
|
||||||
|
borderopacity="1"
|
||||||
|
inkscape:showpageshadow="0"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#d1d1d1"
|
||||||
|
inkscape:zoom="1.1614884"
|
||||||
|
inkscape:cx="236.3347"
|
||||||
|
inkscape:cy="243.22241"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1017"
|
||||||
|
inkscape:window-x="-8"
|
||||||
|
inkscape:window-y="-8"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer-pattern" />
|
||||||
|
<sodipodi0:namedview
|
||||||
|
id="namedview"
|
||||||
|
pagecolor="#1a1a2e"
|
||||||
|
bordercolor="#555555"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:current-layer="layer-pattern">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
units="px"
|
||||||
|
spacingx="5"
|
||||||
|
spacingy="5"
|
||||||
|
empspacing="2"
|
||||||
|
color="#2a2a4a"
|
||||||
|
empcolor="#3a3a6a"
|
||||||
|
opacity="0.8"
|
||||||
|
empopacity="1" />
|
||||||
|
</sodipodi0:namedview>
|
||||||
|
<!-- CHROME GUIDE — locked, context only, not exported as pattern data -->
|
||||||
|
<g
|
||||||
|
inkscape:label="Chrome (guide — do not edit)"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer-chrome"
|
||||||
|
sodipodi0:insensitive="true">
|
||||||
|
<!-- Outer colored rect: placeholder purple, will use project color at runtime -->
|
||||||
|
<rect
|
||||||
|
x="-14"
|
||||||
|
y="-14"
|
||||||
|
width="128"
|
||||||
|
height="128"
|
||||||
|
rx="20"
|
||||||
|
ry="20"
|
||||||
|
fill="#6600cc"
|
||||||
|
opacity="0.35"
|
||||||
|
id="rect1" />
|
||||||
|
<!-- Glow hint -->
|
||||||
|
<rect
|
||||||
|
x="-14"
|
||||||
|
y="-14"
|
||||||
|
width="128"
|
||||||
|
height="128"
|
||||||
|
rx="20"
|
||||||
|
ry="20"
|
||||||
|
fill="none"
|
||||||
|
stroke="#8833ff"
|
||||||
|
stroke-width="1.5"
|
||||||
|
opacity="0.5"
|
||||||
|
id="rect2" />
|
||||||
|
<!-- Inner black area = the 0,0 → 100,100 pattern space -->
|
||||||
|
<rect
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
rx="14"
|
||||||
|
ry="14"
|
||||||
|
fill="#000000"
|
||||||
|
id="rect3" />
|
||||||
|
</g>
|
||||||
|
<!-- GRID GUIDE — locked -->
|
||||||
|
<g
|
||||||
|
inkscape:label="Grid (guide — do not edit)"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer-grid"
|
||||||
|
sodipodi0:insensitive="true">
|
||||||
|
<!-- Minor lines every 10 units -->
|
||||||
|
<line
|
||||||
|
x1="10"
|
||||||
|
y1="0"
|
||||||
|
x2="10"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line3" />
|
||||||
|
<line
|
||||||
|
x1="20"
|
||||||
|
y1="0"
|
||||||
|
x2="20"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line4" />
|
||||||
|
<line
|
||||||
|
x1="30"
|
||||||
|
y1="0"
|
||||||
|
x2="30"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line5" />
|
||||||
|
<line
|
||||||
|
x1="40"
|
||||||
|
y1="0"
|
||||||
|
x2="40"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line6" />
|
||||||
|
<line
|
||||||
|
x1="60"
|
||||||
|
y1="0"
|
||||||
|
x2="60"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line7" />
|
||||||
|
<line
|
||||||
|
x1="70"
|
||||||
|
y1="0"
|
||||||
|
x2="70"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line8" />
|
||||||
|
<line
|
||||||
|
x1="80"
|
||||||
|
y1="0"
|
||||||
|
x2="80"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line9" />
|
||||||
|
<line
|
||||||
|
x1="90"
|
||||||
|
y1="0"
|
||||||
|
x2="90"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line10" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="10"
|
||||||
|
x2="100"
|
||||||
|
y2="10"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line11" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="20"
|
||||||
|
x2="100"
|
||||||
|
y2="20"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line12" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="30"
|
||||||
|
x2="100"
|
||||||
|
y2="30"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line13" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="40"
|
||||||
|
x2="100"
|
||||||
|
y2="40"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line14" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="60"
|
||||||
|
x2="100"
|
||||||
|
y2="60"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line15" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="70"
|
||||||
|
x2="100"
|
||||||
|
y2="70"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line16" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="80"
|
||||||
|
x2="100"
|
||||||
|
y2="80"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line17" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="90"
|
||||||
|
x2="100"
|
||||||
|
y2="90"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line18" />
|
||||||
|
<!-- Center crosshair -->
|
||||||
|
<line
|
||||||
|
x1="50"
|
||||||
|
y1="0"
|
||||||
|
x2="50"
|
||||||
|
y2="100"
|
||||||
|
stroke="#2a2a5a"
|
||||||
|
stroke-width="0.8"
|
||||||
|
id="line19" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="50"
|
||||||
|
x2="100"
|
||||||
|
y2="50"
|
||||||
|
stroke="#2a2a5a"
|
||||||
|
stroke-width="0.8"
|
||||||
|
id="line20" />
|
||||||
|
<!-- Pattern area border -->
|
||||||
|
<rect
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
fill="none"
|
||||||
|
stroke="#333366"
|
||||||
|
stroke-width="0.6"
|
||||||
|
id="rect20" />
|
||||||
|
<!-- Quarter markers -->
|
||||||
|
<rect
|
||||||
|
x="25"
|
||||||
|
y="0"
|
||||||
|
width="50"
|
||||||
|
height="0"
|
||||||
|
fill="none"
|
||||||
|
stroke="#2a2a5a"
|
||||||
|
stroke-width="0.4"
|
||||||
|
id="rect21" />
|
||||||
|
<text
|
||||||
|
x="1"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text21">0</text>
|
||||||
|
<text
|
||||||
|
x="23"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text22">25</text>
|
||||||
|
<text
|
||||||
|
x="48"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text23">50</text>
|
||||||
|
<text
|
||||||
|
x="73"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text24">75</text>
|
||||||
|
<text
|
||||||
|
x="97"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text25">100</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="4"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text26">0</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="29"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text27">25</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="54"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text28">50</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="79"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text29">75</text>
|
||||||
|
<text
|
||||||
|
x="-18"
|
||||||
|
y="103"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text30">100</text>
|
||||||
|
</g>
|
||||||
|
<!-- PATTERN — edit this layer only -->
|
||||||
|
<!-- Shapes must use fill="#ffffff". Stay within 0-100. -->
|
||||||
|
<g
|
||||||
|
inkscape:label="Pattern (edit this)"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer-pattern">
|
||||||
|
<!-- Example: single centered circle. Replace with your design. -->
|
||||||
|
<rect
|
||||||
|
x="16.696537"
|
||||||
|
y="10.223361"
|
||||||
|
width="30"
|
||||||
|
height="30"
|
||||||
|
rx="15"
|
||||||
|
ry="15"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="rect30" />
|
||||||
|
<rect
|
||||||
|
x="54.196316"
|
||||||
|
y="77.85688"
|
||||||
|
width="13.035815"
|
||||||
|
height="13.035815"
|
||||||
|
rx="6.5179076"
|
||||||
|
ry="6.5179076"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="rect31"
|
||||||
|
style="stroke-width:0.434527" />
|
||||||
|
<rect
|
||||||
|
x="33.660728"
|
||||||
|
y="78.303307"
|
||||||
|
width="13.035815"
|
||||||
|
height="13.035815"
|
||||||
|
rx="6.5179076"
|
||||||
|
ry="6.5179076"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="rect32"
|
||||||
|
style="stroke-width:0.434527" />
|
||||||
|
<rect
|
||||||
|
x="53.526672"
|
||||||
|
y="11.116214"
|
||||||
|
width="30"
|
||||||
|
height="30"
|
||||||
|
rx="15"
|
||||||
|
ry="15"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="rect33" />
|
||||||
|
<rect
|
||||||
|
x="44.151733"
|
||||||
|
y="63.124828"
|
||||||
|
width="13.035815"
|
||||||
|
height="13.035815"
|
||||||
|
rx="6.5179076"
|
||||||
|
ry="6.5179076"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="rect34"
|
||||||
|
style="stroke-width:0.434527" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
|
@ -0,0 +1,391 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!--
|
||||||
|
ITALIC NEON — PATTERN TEMPLATE
|
||||||
|
================================
|
||||||
|
HOW TO USE:
|
||||||
|
1. File > Save As > pattern-01.svg (increment number for each new pattern)
|
||||||
|
2. Edit ONLY the "Pattern (edit this)" layer — all other layers are guides
|
||||||
|
3. Draw white shapes (fill="#ffffff") within the 0-100 coordinate area
|
||||||
|
4. Shapes: use <rect rx="..." ry="..."> for circles/pills, or <ellipse>
|
||||||
|
- Circle: <rect x="35" y="35" width="30" height="30" rx="15" ry="15" fill="#ffffff"/>
|
||||||
|
- Horizontal pill: <rect x="20" y="42" width="60" height="16" rx="8" ry="8" fill="#ffffff"/>
|
||||||
|
- Ellipse: <ellipse cx="50" cy="50" rx="25" ry="15" fill="#ffffff"/>
|
||||||
|
5. Stay within x: 0-100, y: 0-100. Leave ~5 units of margin from edges.
|
||||||
|
6. Aim for 1-8 shapes, non-overlapping, with geometric/symmetric relations.
|
||||||
|
7. The skew is applied at render time — draw flat, it will look correct in the icon.
|
||||||
|
|
||||||
|
The black rect is the inner icon area. The purple rect is the outer chrome (color varies per project at runtime).
|
||||||
|
-->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="540"
|
||||||
|
height="540"
|
||||||
|
viewBox="-20 -20 140 140"
|
||||||
|
version="1.1"
|
||||||
|
id="template"
|
||||||
|
inkscape:version="1.4.3 (0d15f75, 2025-12-25)"
|
||||||
|
sodipodi:docname="pattern-09.svg"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi0="http://sodipodi.sourceforge.net/DTD/sodipodi-0.0.dtd">
|
||||||
|
<defs
|
||||||
|
id="defs30" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview30"
|
||||||
|
pagecolor="#505050"
|
||||||
|
bordercolor="#eeeeee"
|
||||||
|
borderopacity="1"
|
||||||
|
inkscape:showpageshadow="0"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#d1d1d1"
|
||||||
|
inkscape:zoom="1.1614884"
|
||||||
|
inkscape:cx="236.3347"
|
||||||
|
inkscape:cy="243.22241"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1017"
|
||||||
|
inkscape:window-x="-8"
|
||||||
|
inkscape:window-y="-8"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer-pattern" />
|
||||||
|
<sodipodi0:namedview
|
||||||
|
id="namedview"
|
||||||
|
pagecolor="#1a1a2e"
|
||||||
|
bordercolor="#555555"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:current-layer="layer-pattern">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
units="px"
|
||||||
|
spacingx="5"
|
||||||
|
spacingy="5"
|
||||||
|
empspacing="2"
|
||||||
|
color="#2a2a4a"
|
||||||
|
empcolor="#3a3a6a"
|
||||||
|
opacity="0.8"
|
||||||
|
empopacity="1" />
|
||||||
|
</sodipodi0:namedview>
|
||||||
|
<!-- CHROME GUIDE — locked, context only, not exported as pattern data -->
|
||||||
|
<g
|
||||||
|
inkscape:label="Chrome (guide — do not edit)"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer-chrome"
|
||||||
|
sodipodi0:insensitive="true">
|
||||||
|
<!-- Outer colored rect: placeholder purple, will use project color at runtime -->
|
||||||
|
<rect
|
||||||
|
x="-14"
|
||||||
|
y="-14"
|
||||||
|
width="128"
|
||||||
|
height="128"
|
||||||
|
rx="20"
|
||||||
|
ry="20"
|
||||||
|
fill="#6600cc"
|
||||||
|
opacity="0.35"
|
||||||
|
id="rect1" />
|
||||||
|
<!-- Glow hint -->
|
||||||
|
<rect
|
||||||
|
x="-14"
|
||||||
|
y="-14"
|
||||||
|
width="128"
|
||||||
|
height="128"
|
||||||
|
rx="20"
|
||||||
|
ry="20"
|
||||||
|
fill="none"
|
||||||
|
stroke="#8833ff"
|
||||||
|
stroke-width="1.5"
|
||||||
|
opacity="0.5"
|
||||||
|
id="rect2" />
|
||||||
|
<!-- Inner black area = the 0,0 → 100,100 pattern space -->
|
||||||
|
<rect
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
rx="14"
|
||||||
|
ry="14"
|
||||||
|
fill="#000000"
|
||||||
|
id="rect3" />
|
||||||
|
</g>
|
||||||
|
<!-- GRID GUIDE — locked -->
|
||||||
|
<g
|
||||||
|
inkscape:label="Grid (guide — do not edit)"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer-grid"
|
||||||
|
sodipodi0:insensitive="true">
|
||||||
|
<!-- Minor lines every 10 units -->
|
||||||
|
<line
|
||||||
|
x1="10"
|
||||||
|
y1="0"
|
||||||
|
x2="10"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line3" />
|
||||||
|
<line
|
||||||
|
x1="20"
|
||||||
|
y1="0"
|
||||||
|
x2="20"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line4" />
|
||||||
|
<line
|
||||||
|
x1="30"
|
||||||
|
y1="0"
|
||||||
|
x2="30"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line5" />
|
||||||
|
<line
|
||||||
|
x1="40"
|
||||||
|
y1="0"
|
||||||
|
x2="40"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line6" />
|
||||||
|
<line
|
||||||
|
x1="60"
|
||||||
|
y1="0"
|
||||||
|
x2="60"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line7" />
|
||||||
|
<line
|
||||||
|
x1="70"
|
||||||
|
y1="0"
|
||||||
|
x2="70"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line8" />
|
||||||
|
<line
|
||||||
|
x1="80"
|
||||||
|
y1="0"
|
||||||
|
x2="80"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line9" />
|
||||||
|
<line
|
||||||
|
x1="90"
|
||||||
|
y1="0"
|
||||||
|
x2="90"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line10" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="10"
|
||||||
|
x2="100"
|
||||||
|
y2="10"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line11" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="20"
|
||||||
|
x2="100"
|
||||||
|
y2="20"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line12" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="30"
|
||||||
|
x2="100"
|
||||||
|
y2="30"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line13" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="40"
|
||||||
|
x2="100"
|
||||||
|
y2="40"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line14" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="60"
|
||||||
|
x2="100"
|
||||||
|
y2="60"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line15" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="70"
|
||||||
|
x2="100"
|
||||||
|
y2="70"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line16" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="80"
|
||||||
|
x2="100"
|
||||||
|
y2="80"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line17" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="90"
|
||||||
|
x2="100"
|
||||||
|
y2="90"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line18" />
|
||||||
|
<!-- Center crosshair -->
|
||||||
|
<line
|
||||||
|
x1="50"
|
||||||
|
y1="0"
|
||||||
|
x2="50"
|
||||||
|
y2="100"
|
||||||
|
stroke="#2a2a5a"
|
||||||
|
stroke-width="0.8"
|
||||||
|
id="line19" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="50"
|
||||||
|
x2="100"
|
||||||
|
y2="50"
|
||||||
|
stroke="#2a2a5a"
|
||||||
|
stroke-width="0.8"
|
||||||
|
id="line20" />
|
||||||
|
<!-- Pattern area border -->
|
||||||
|
<rect
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
fill="none"
|
||||||
|
stroke="#333366"
|
||||||
|
stroke-width="0.6"
|
||||||
|
id="rect20" />
|
||||||
|
<!-- Quarter markers -->
|
||||||
|
<rect
|
||||||
|
x="25"
|
||||||
|
y="0"
|
||||||
|
width="50"
|
||||||
|
height="0"
|
||||||
|
fill="none"
|
||||||
|
stroke="#2a2a5a"
|
||||||
|
stroke-width="0.4"
|
||||||
|
id="rect21" />
|
||||||
|
<text
|
||||||
|
x="1"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text21">0</text>
|
||||||
|
<text
|
||||||
|
x="23"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text22">25</text>
|
||||||
|
<text
|
||||||
|
x="48"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text23">50</text>
|
||||||
|
<text
|
||||||
|
x="73"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text24">75</text>
|
||||||
|
<text
|
||||||
|
x="97"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text25">100</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="4"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text26">0</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="29"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text27">25</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="54"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text28">50</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="79"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text29">75</text>
|
||||||
|
<text
|
||||||
|
x="-18"
|
||||||
|
y="103"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text30">100</text>
|
||||||
|
</g>
|
||||||
|
<!-- PATTERN — edit this layer only -->
|
||||||
|
<!-- Shapes must use fill="#ffffff". Stay within 0-100. -->
|
||||||
|
<g
|
||||||
|
inkscape:label="Pattern (edit this)"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer-pattern">
|
||||||
|
<!-- Example: single centered circle. Replace with your design. -->
|
||||||
|
<rect
|
||||||
|
x="8.8840837"
|
||||||
|
y="35.66964"
|
||||||
|
width="30"
|
||||||
|
height="30"
|
||||||
|
rx="15"
|
||||||
|
ry="15"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="rect30" />
|
||||||
|
<rect
|
||||||
|
x="44.151737"
|
||||||
|
y="43.928509"
|
||||||
|
width="13.035815"
|
||||||
|
height="13.035815"
|
||||||
|
rx="6.5179076"
|
||||||
|
ry="6.5179076"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="rect32"
|
||||||
|
style="stroke-width:0.434527" />
|
||||||
|
<rect
|
||||||
|
x="64.017685"
|
||||||
|
y="35.446426"
|
||||||
|
width="30"
|
||||||
|
height="30"
|
||||||
|
rx="15"
|
||||||
|
ry="15"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="rect33" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
|
@ -0,0 +1,392 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!--
|
||||||
|
ITALIC NEON — PATTERN TEMPLATE
|
||||||
|
================================
|
||||||
|
HOW TO USE:
|
||||||
|
1. File > Save As > pattern-01.svg (increment number for each new pattern)
|
||||||
|
2. Edit ONLY the "Pattern (edit this)" layer — all other layers are guides
|
||||||
|
3. Draw white shapes (fill="#ffffff") within the 0-100 coordinate area
|
||||||
|
4. Shapes: use <rect rx="..." ry="..."> for circles/pills, or <ellipse>
|
||||||
|
- Circle: <rect x="35" y="35" width="30" height="30" rx="15" ry="15" fill="#ffffff"/>
|
||||||
|
- Horizontal pill: <rect x="20" y="42" width="60" height="16" rx="8" ry="8" fill="#ffffff"/>
|
||||||
|
- Ellipse: <ellipse cx="50" cy="50" rx="25" ry="15" fill="#ffffff"/>
|
||||||
|
5. Stay within x: 0-100, y: 0-100. Leave ~5 units of margin from edges.
|
||||||
|
6. Aim for 1-8 shapes, non-overlapping, with geometric/symmetric relations.
|
||||||
|
7. The skew is applied at render time — draw flat, it will look correct in the icon.
|
||||||
|
|
||||||
|
The black rect is the inner icon area. The purple rect is the outer chrome (color varies per project at runtime).
|
||||||
|
-->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="540"
|
||||||
|
height="540"
|
||||||
|
viewBox="-20 -20 140 140"
|
||||||
|
version="1.1"
|
||||||
|
id="template"
|
||||||
|
inkscape:version="1.4.3 (0d15f75, 2025-12-25)"
|
||||||
|
sodipodi:docname="pattern-10.svg"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi0="http://sodipodi.sourceforge.net/DTD/sodipodi-0.0.dtd">
|
||||||
|
<defs
|
||||||
|
id="defs30" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview30"
|
||||||
|
pagecolor="#505050"
|
||||||
|
bordercolor="#eeeeee"
|
||||||
|
borderopacity="1"
|
||||||
|
inkscape:showpageshadow="0"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#d1d1d1"
|
||||||
|
inkscape:zoom="1.1614884"
|
||||||
|
inkscape:cx="236.3347"
|
||||||
|
inkscape:cy="243.22241"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1017"
|
||||||
|
inkscape:window-x="-8"
|
||||||
|
inkscape:window-y="-8"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer-pattern" />
|
||||||
|
<sodipodi0:namedview
|
||||||
|
id="namedview"
|
||||||
|
pagecolor="#1a1a2e"
|
||||||
|
bordercolor="#555555"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:current-layer="layer-pattern">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
units="px"
|
||||||
|
spacingx="5"
|
||||||
|
spacingy="5"
|
||||||
|
empspacing="2"
|
||||||
|
color="#2a2a4a"
|
||||||
|
empcolor="#3a3a6a"
|
||||||
|
opacity="0.8"
|
||||||
|
empopacity="1" />
|
||||||
|
</sodipodi0:namedview>
|
||||||
|
<!-- CHROME GUIDE — locked, context only, not exported as pattern data -->
|
||||||
|
<g
|
||||||
|
inkscape:label="Chrome (guide — do not edit)"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer-chrome"
|
||||||
|
sodipodi0:insensitive="true">
|
||||||
|
<!-- Outer colored rect: placeholder purple, will use project color at runtime -->
|
||||||
|
<rect
|
||||||
|
x="-14"
|
||||||
|
y="-14"
|
||||||
|
width="128"
|
||||||
|
height="128"
|
||||||
|
rx="20"
|
||||||
|
ry="20"
|
||||||
|
fill="#6600cc"
|
||||||
|
opacity="0.35"
|
||||||
|
id="rect1" />
|
||||||
|
<!-- Glow hint -->
|
||||||
|
<rect
|
||||||
|
x="-14"
|
||||||
|
y="-14"
|
||||||
|
width="128"
|
||||||
|
height="128"
|
||||||
|
rx="20"
|
||||||
|
ry="20"
|
||||||
|
fill="none"
|
||||||
|
stroke="#8833ff"
|
||||||
|
stroke-width="1.5"
|
||||||
|
opacity="0.5"
|
||||||
|
id="rect2" />
|
||||||
|
<!-- Inner black area = the 0,0 → 100,100 pattern space -->
|
||||||
|
<rect
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
rx="14"
|
||||||
|
ry="14"
|
||||||
|
fill="#000000"
|
||||||
|
id="rect3" />
|
||||||
|
</g>
|
||||||
|
<!-- GRID GUIDE — locked -->
|
||||||
|
<g
|
||||||
|
inkscape:label="Grid (guide — do not edit)"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer-grid"
|
||||||
|
sodipodi0:insensitive="true">
|
||||||
|
<!-- Minor lines every 10 units -->
|
||||||
|
<line
|
||||||
|
x1="10"
|
||||||
|
y1="0"
|
||||||
|
x2="10"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line3" />
|
||||||
|
<line
|
||||||
|
x1="20"
|
||||||
|
y1="0"
|
||||||
|
x2="20"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line4" />
|
||||||
|
<line
|
||||||
|
x1="30"
|
||||||
|
y1="0"
|
||||||
|
x2="30"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line5" />
|
||||||
|
<line
|
||||||
|
x1="40"
|
||||||
|
y1="0"
|
||||||
|
x2="40"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line6" />
|
||||||
|
<line
|
||||||
|
x1="60"
|
||||||
|
y1="0"
|
||||||
|
x2="60"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line7" />
|
||||||
|
<line
|
||||||
|
x1="70"
|
||||||
|
y1="0"
|
||||||
|
x2="70"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line8" />
|
||||||
|
<line
|
||||||
|
x1="80"
|
||||||
|
y1="0"
|
||||||
|
x2="80"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line9" />
|
||||||
|
<line
|
||||||
|
x1="90"
|
||||||
|
y1="0"
|
||||||
|
x2="90"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line10" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="10"
|
||||||
|
x2="100"
|
||||||
|
y2="10"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line11" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="20"
|
||||||
|
x2="100"
|
||||||
|
y2="20"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line12" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="30"
|
||||||
|
x2="100"
|
||||||
|
y2="30"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line13" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="40"
|
||||||
|
x2="100"
|
||||||
|
y2="40"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line14" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="60"
|
||||||
|
x2="100"
|
||||||
|
y2="60"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line15" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="70"
|
||||||
|
x2="100"
|
||||||
|
y2="70"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line16" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="80"
|
||||||
|
x2="100"
|
||||||
|
y2="80"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line17" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="90"
|
||||||
|
x2="100"
|
||||||
|
y2="90"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line18" />
|
||||||
|
<!-- Center crosshair -->
|
||||||
|
<line
|
||||||
|
x1="50"
|
||||||
|
y1="0"
|
||||||
|
x2="50"
|
||||||
|
y2="100"
|
||||||
|
stroke="#2a2a5a"
|
||||||
|
stroke-width="0.8"
|
||||||
|
id="line19" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="50"
|
||||||
|
x2="100"
|
||||||
|
y2="50"
|
||||||
|
stroke="#2a2a5a"
|
||||||
|
stroke-width="0.8"
|
||||||
|
id="line20" />
|
||||||
|
<!-- Pattern area border -->
|
||||||
|
<rect
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
fill="none"
|
||||||
|
stroke="#333366"
|
||||||
|
stroke-width="0.6"
|
||||||
|
id="rect20" />
|
||||||
|
<!-- Quarter markers -->
|
||||||
|
<rect
|
||||||
|
x="25"
|
||||||
|
y="0"
|
||||||
|
width="50"
|
||||||
|
height="0"
|
||||||
|
fill="none"
|
||||||
|
stroke="#2a2a5a"
|
||||||
|
stroke-width="0.4"
|
||||||
|
id="rect21" />
|
||||||
|
<text
|
||||||
|
x="1"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text21">0</text>
|
||||||
|
<text
|
||||||
|
x="23"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text22">25</text>
|
||||||
|
<text
|
||||||
|
x="48"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text23">50</text>
|
||||||
|
<text
|
||||||
|
x="73"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text24">75</text>
|
||||||
|
<text
|
||||||
|
x="97"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text25">100</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="4"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text26">0</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="29"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text27">25</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="54"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text28">50</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="79"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text29">75</text>
|
||||||
|
<text
|
||||||
|
x="-18"
|
||||||
|
y="103"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text30">100</text>
|
||||||
|
</g>
|
||||||
|
<!-- PATTERN — edit this layer only -->
|
||||||
|
<!-- Shapes must use fill="#ffffff". Stay within 0-100. -->
|
||||||
|
<g
|
||||||
|
inkscape:label="Pattern (edit this)"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer-pattern">
|
||||||
|
<!-- Example: single centered circle. Replace with your design. -->
|
||||||
|
<rect
|
||||||
|
x="34.776787"
|
||||||
|
y="35.223213"
|
||||||
|
width="30"
|
||||||
|
height="30"
|
||||||
|
rx="15"
|
||||||
|
ry="15"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="rect30" />
|
||||||
|
<rect
|
||||||
|
x="43.258888"
|
||||||
|
y="72.94619"
|
||||||
|
width="13.035815"
|
||||||
|
height="13.035815"
|
||||||
|
rx="6.5179076"
|
||||||
|
ry="6.5179076"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="rect32"
|
||||||
|
style="stroke-width:0.434527" />
|
||||||
|
<rect
|
||||||
|
x="43.258888"
|
||||||
|
y="13.348329"
|
||||||
|
width="13.035815"
|
||||||
|
height="13.035815"
|
||||||
|
rx="6.5179076"
|
||||||
|
ry="6.5179076"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="rect34"
|
||||||
|
style="stroke-width:0.434527" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
|
@ -0,0 +1,412 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!--
|
||||||
|
ITALIC NEON — PATTERN TEMPLATE
|
||||||
|
================================
|
||||||
|
HOW TO USE:
|
||||||
|
1. File > Save As > pattern-01.svg (increment number for each new pattern)
|
||||||
|
2. Edit ONLY the "Pattern (edit this)" layer — all other layers are guides
|
||||||
|
3. Draw white shapes (fill="#ffffff") within the 0-100 coordinate area
|
||||||
|
4. Shapes: use <rect rx="..." ry="..."> for circles/pills, or <ellipse>
|
||||||
|
- Circle: <rect x="35" y="35" width="30" height="30" rx="15" ry="15" fill="#ffffff"/>
|
||||||
|
- Horizontal pill: <rect x="20" y="42" width="60" height="16" rx="8" ry="8" fill="#ffffff"/>
|
||||||
|
- Ellipse: <ellipse cx="50" cy="50" rx="25" ry="15" fill="#ffffff"/>
|
||||||
|
5. Stay within x: 0-100, y: 0-100. Leave ~5 units of margin from edges.
|
||||||
|
6. Aim for 1-8 shapes, non-overlapping, with geometric/symmetric relations.
|
||||||
|
7. The skew is applied at render time — draw flat, it will look correct in the icon.
|
||||||
|
|
||||||
|
The black rect is the inner icon area. The purple rect is the outer chrome (color varies per project at runtime).
|
||||||
|
-->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="540"
|
||||||
|
height="540"
|
||||||
|
viewBox="-20 -20 140 140"
|
||||||
|
version="1.1"
|
||||||
|
id="template"
|
||||||
|
inkscape:version="1.4.3 (0d15f75, 2025-12-25)"
|
||||||
|
sodipodi:docname="pattern-11.svg"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi0="http://sodipodi.sourceforge.net/DTD/sodipodi-0.0.dtd">
|
||||||
|
<defs
|
||||||
|
id="defs30" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview30"
|
||||||
|
pagecolor="#505050"
|
||||||
|
bordercolor="#eeeeee"
|
||||||
|
borderopacity="1"
|
||||||
|
inkscape:showpageshadow="0"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#d1d1d1"
|
||||||
|
inkscape:zoom="1.1614884"
|
||||||
|
inkscape:cx="236.3347"
|
||||||
|
inkscape:cy="243.22241"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1017"
|
||||||
|
inkscape:window-x="-8"
|
||||||
|
inkscape:window-y="-8"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer-pattern" />
|
||||||
|
<sodipodi0:namedview
|
||||||
|
id="namedview"
|
||||||
|
pagecolor="#1a1a2e"
|
||||||
|
bordercolor="#555555"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:current-layer="layer-pattern">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
units="px"
|
||||||
|
spacingx="5"
|
||||||
|
spacingy="5"
|
||||||
|
empspacing="2"
|
||||||
|
color="#2a2a4a"
|
||||||
|
empcolor="#3a3a6a"
|
||||||
|
opacity="0.8"
|
||||||
|
empopacity="1" />
|
||||||
|
</sodipodi0:namedview>
|
||||||
|
<!-- CHROME GUIDE — locked, context only, not exported as pattern data -->
|
||||||
|
<g
|
||||||
|
inkscape:label="Chrome (guide — do not edit)"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer-chrome"
|
||||||
|
sodipodi0:insensitive="true">
|
||||||
|
<!-- Outer colored rect: placeholder purple, will use project color at runtime -->
|
||||||
|
<rect
|
||||||
|
x="-14"
|
||||||
|
y="-14"
|
||||||
|
width="128"
|
||||||
|
height="128"
|
||||||
|
rx="20"
|
||||||
|
ry="20"
|
||||||
|
fill="#6600cc"
|
||||||
|
opacity="0.35"
|
||||||
|
id="rect1" />
|
||||||
|
<!-- Glow hint -->
|
||||||
|
<rect
|
||||||
|
x="-14"
|
||||||
|
y="-14"
|
||||||
|
width="128"
|
||||||
|
height="128"
|
||||||
|
rx="20"
|
||||||
|
ry="20"
|
||||||
|
fill="none"
|
||||||
|
stroke="#8833ff"
|
||||||
|
stroke-width="1.5"
|
||||||
|
opacity="0.5"
|
||||||
|
id="rect2" />
|
||||||
|
<!-- Inner black area = the 0,0 → 100,100 pattern space -->
|
||||||
|
<rect
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
rx="14"
|
||||||
|
ry="14"
|
||||||
|
fill="#000000"
|
||||||
|
id="rect3" />
|
||||||
|
</g>
|
||||||
|
<!-- GRID GUIDE — locked -->
|
||||||
|
<g
|
||||||
|
inkscape:label="Grid (guide — do not edit)"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer-grid"
|
||||||
|
sodipodi0:insensitive="true">
|
||||||
|
<!-- Minor lines every 10 units -->
|
||||||
|
<line
|
||||||
|
x1="10"
|
||||||
|
y1="0"
|
||||||
|
x2="10"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line3" />
|
||||||
|
<line
|
||||||
|
x1="20"
|
||||||
|
y1="0"
|
||||||
|
x2="20"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line4" />
|
||||||
|
<line
|
||||||
|
x1="30"
|
||||||
|
y1="0"
|
||||||
|
x2="30"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line5" />
|
||||||
|
<line
|
||||||
|
x1="40"
|
||||||
|
y1="0"
|
||||||
|
x2="40"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line6" />
|
||||||
|
<line
|
||||||
|
x1="60"
|
||||||
|
y1="0"
|
||||||
|
x2="60"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line7" />
|
||||||
|
<line
|
||||||
|
x1="70"
|
||||||
|
y1="0"
|
||||||
|
x2="70"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line8" />
|
||||||
|
<line
|
||||||
|
x1="80"
|
||||||
|
y1="0"
|
||||||
|
x2="80"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line9" />
|
||||||
|
<line
|
||||||
|
x1="90"
|
||||||
|
y1="0"
|
||||||
|
x2="90"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line10" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="10"
|
||||||
|
x2="100"
|
||||||
|
y2="10"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line11" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="20"
|
||||||
|
x2="100"
|
||||||
|
y2="20"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line12" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="30"
|
||||||
|
x2="100"
|
||||||
|
y2="30"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line13" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="40"
|
||||||
|
x2="100"
|
||||||
|
y2="40"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line14" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="60"
|
||||||
|
x2="100"
|
||||||
|
y2="60"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line15" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="70"
|
||||||
|
x2="100"
|
||||||
|
y2="70"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line16" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="80"
|
||||||
|
x2="100"
|
||||||
|
y2="80"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line17" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="90"
|
||||||
|
x2="100"
|
||||||
|
y2="90"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line18" />
|
||||||
|
<!-- Center crosshair -->
|
||||||
|
<line
|
||||||
|
x1="50"
|
||||||
|
y1="0"
|
||||||
|
x2="50"
|
||||||
|
y2="100"
|
||||||
|
stroke="#2a2a5a"
|
||||||
|
stroke-width="0.8"
|
||||||
|
id="line19" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="50"
|
||||||
|
x2="100"
|
||||||
|
y2="50"
|
||||||
|
stroke="#2a2a5a"
|
||||||
|
stroke-width="0.8"
|
||||||
|
id="line20" />
|
||||||
|
<!-- Pattern area border -->
|
||||||
|
<rect
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
fill="none"
|
||||||
|
stroke="#333366"
|
||||||
|
stroke-width="0.6"
|
||||||
|
id="rect20" />
|
||||||
|
<!-- Quarter markers -->
|
||||||
|
<rect
|
||||||
|
x="25"
|
||||||
|
y="0"
|
||||||
|
width="50"
|
||||||
|
height="0"
|
||||||
|
fill="none"
|
||||||
|
stroke="#2a2a5a"
|
||||||
|
stroke-width="0.4"
|
||||||
|
id="rect21" />
|
||||||
|
<text
|
||||||
|
x="1"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text21">0</text>
|
||||||
|
<text
|
||||||
|
x="23"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text22">25</text>
|
||||||
|
<text
|
||||||
|
x="48"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text23">50</text>
|
||||||
|
<text
|
||||||
|
x="73"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text24">75</text>
|
||||||
|
<text
|
||||||
|
x="97"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text25">100</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="4"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text26">0</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="29"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text27">25</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="54"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text28">50</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="79"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text29">75</text>
|
||||||
|
<text
|
||||||
|
x="-18"
|
||||||
|
y="103"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text30">100</text>
|
||||||
|
</g>
|
||||||
|
<!-- PATTERN — edit this layer only -->
|
||||||
|
<!-- Shapes must use fill="#ffffff". Stay within 0-100. -->
|
||||||
|
<g
|
||||||
|
inkscape:label="Pattern (edit this)"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer-pattern">
|
||||||
|
<!-- Example: single centered circle. Replace with your design. -->
|
||||||
|
<rect
|
||||||
|
x="34.776787"
|
||||||
|
y="35.223213"
|
||||||
|
width="30"
|
||||||
|
height="30"
|
||||||
|
rx="15"
|
||||||
|
ry="15"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="rect30" />
|
||||||
|
<rect
|
||||||
|
x="68.481949"
|
||||||
|
y="68.481926"
|
||||||
|
width="13.035815"
|
||||||
|
height="13.035815"
|
||||||
|
rx="6.5179076"
|
||||||
|
ry="6.5179076"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="rect32"
|
||||||
|
style="stroke-width:0.434527" />
|
||||||
|
<rect
|
||||||
|
x="17.812611"
|
||||||
|
y="18.928654"
|
||||||
|
width="13.035815"
|
||||||
|
height="13.035815"
|
||||||
|
rx="6.5179076"
|
||||||
|
ry="6.5179076"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="rect34"
|
||||||
|
style="stroke-width:0.434527" />
|
||||||
|
<rect
|
||||||
|
x="67.365891"
|
||||||
|
y="17.589373"
|
||||||
|
width="13.035815"
|
||||||
|
height="13.035815"
|
||||||
|
rx="6.5179076"
|
||||||
|
ry="6.5179076"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="rect37"
|
||||||
|
style="stroke-width:0.434527" />
|
||||||
|
<rect
|
||||||
|
x="18.035822"
|
||||||
|
y="68.25872"
|
||||||
|
width="13.035815"
|
||||||
|
height="13.035815"
|
||||||
|
rx="6.5179076"
|
||||||
|
ry="6.5179076"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="rect38"
|
||||||
|
style="stroke-width:0.434527" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
|
@ -0,0 +1,402 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!--
|
||||||
|
ITALIC NEON — PATTERN TEMPLATE
|
||||||
|
================================
|
||||||
|
HOW TO USE:
|
||||||
|
1. File > Save As > pattern-01.svg (increment number for each new pattern)
|
||||||
|
2. Edit ONLY the "Pattern (edit this)" layer — all other layers are guides
|
||||||
|
3. Draw white shapes (fill="#ffffff") within the 0-100 coordinate area
|
||||||
|
4. Shapes: use <rect rx="..." ry="..."> for circles/pills, or <ellipse>
|
||||||
|
- Circle: <rect x="35" y="35" width="30" height="30" rx="15" ry="15" fill="#ffffff"/>
|
||||||
|
- Horizontal pill: <rect x="20" y="42" width="60" height="16" rx="8" ry="8" fill="#ffffff"/>
|
||||||
|
- Ellipse: <ellipse cx="50" cy="50" rx="25" ry="15" fill="#ffffff"/>
|
||||||
|
5. Stay within x: 0-100, y: 0-100. Leave ~5 units of margin from edges.
|
||||||
|
6. Aim for 1-8 shapes, non-overlapping, with geometric/symmetric relations.
|
||||||
|
7. The skew is applied at render time — draw flat, it will look correct in the icon.
|
||||||
|
|
||||||
|
The black rect is the inner icon area. The purple rect is the outer chrome (color varies per project at runtime).
|
||||||
|
-->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="540"
|
||||||
|
height="540"
|
||||||
|
viewBox="-20 -20 140 140"
|
||||||
|
version="1.1"
|
||||||
|
id="template"
|
||||||
|
inkscape:version="1.4.3 (0d15f75, 2025-12-25)"
|
||||||
|
sodipodi:docname="pattern-12.svg"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi0="http://sodipodi.sourceforge.net/DTD/sodipodi-0.0.dtd">
|
||||||
|
<defs
|
||||||
|
id="defs30" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview30"
|
||||||
|
pagecolor="#505050"
|
||||||
|
bordercolor="#eeeeee"
|
||||||
|
borderopacity="1"
|
||||||
|
inkscape:showpageshadow="0"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#d1d1d1"
|
||||||
|
inkscape:zoom="1.1614884"
|
||||||
|
inkscape:cx="236.3347"
|
||||||
|
inkscape:cy="243.22241"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1017"
|
||||||
|
inkscape:window-x="-8"
|
||||||
|
inkscape:window-y="-8"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer-pattern" />
|
||||||
|
<sodipodi0:namedview
|
||||||
|
id="namedview"
|
||||||
|
pagecolor="#1a1a2e"
|
||||||
|
bordercolor="#555555"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:current-layer="layer-pattern">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
units="px"
|
||||||
|
spacingx="5"
|
||||||
|
spacingy="5"
|
||||||
|
empspacing="2"
|
||||||
|
color="#2a2a4a"
|
||||||
|
empcolor="#3a3a6a"
|
||||||
|
opacity="0.8"
|
||||||
|
empopacity="1" />
|
||||||
|
</sodipodi0:namedview>
|
||||||
|
<!-- CHROME GUIDE — locked, context only, not exported as pattern data -->
|
||||||
|
<g
|
||||||
|
inkscape:label="Chrome (guide — do not edit)"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer-chrome"
|
||||||
|
sodipodi0:insensitive="true">
|
||||||
|
<!-- Outer colored rect: placeholder purple, will use project color at runtime -->
|
||||||
|
<rect
|
||||||
|
x="-14"
|
||||||
|
y="-14"
|
||||||
|
width="128"
|
||||||
|
height="128"
|
||||||
|
rx="20"
|
||||||
|
ry="20"
|
||||||
|
fill="#6600cc"
|
||||||
|
opacity="0.35"
|
||||||
|
id="rect1" />
|
||||||
|
<!-- Glow hint -->
|
||||||
|
<rect
|
||||||
|
x="-14"
|
||||||
|
y="-14"
|
||||||
|
width="128"
|
||||||
|
height="128"
|
||||||
|
rx="20"
|
||||||
|
ry="20"
|
||||||
|
fill="none"
|
||||||
|
stroke="#8833ff"
|
||||||
|
stroke-width="1.5"
|
||||||
|
opacity="0.5"
|
||||||
|
id="rect2" />
|
||||||
|
<!-- Inner black area = the 0,0 → 100,100 pattern space -->
|
||||||
|
<rect
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
rx="14"
|
||||||
|
ry="14"
|
||||||
|
fill="#000000"
|
||||||
|
id="rect3" />
|
||||||
|
</g>
|
||||||
|
<!-- GRID GUIDE — locked -->
|
||||||
|
<g
|
||||||
|
inkscape:label="Grid (guide — do not edit)"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer-grid"
|
||||||
|
sodipodi0:insensitive="true">
|
||||||
|
<!-- Minor lines every 10 units -->
|
||||||
|
<line
|
||||||
|
x1="10"
|
||||||
|
y1="0"
|
||||||
|
x2="10"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line3" />
|
||||||
|
<line
|
||||||
|
x1="20"
|
||||||
|
y1="0"
|
||||||
|
x2="20"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line4" />
|
||||||
|
<line
|
||||||
|
x1="30"
|
||||||
|
y1="0"
|
||||||
|
x2="30"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line5" />
|
||||||
|
<line
|
||||||
|
x1="40"
|
||||||
|
y1="0"
|
||||||
|
x2="40"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line6" />
|
||||||
|
<line
|
||||||
|
x1="60"
|
||||||
|
y1="0"
|
||||||
|
x2="60"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line7" />
|
||||||
|
<line
|
||||||
|
x1="70"
|
||||||
|
y1="0"
|
||||||
|
x2="70"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line8" />
|
||||||
|
<line
|
||||||
|
x1="80"
|
||||||
|
y1="0"
|
||||||
|
x2="80"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line9" />
|
||||||
|
<line
|
||||||
|
x1="90"
|
||||||
|
y1="0"
|
||||||
|
x2="90"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line10" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="10"
|
||||||
|
x2="100"
|
||||||
|
y2="10"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line11" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="20"
|
||||||
|
x2="100"
|
||||||
|
y2="20"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line12" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="30"
|
||||||
|
x2="100"
|
||||||
|
y2="30"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line13" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="40"
|
||||||
|
x2="100"
|
||||||
|
y2="40"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line14" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="60"
|
||||||
|
x2="100"
|
||||||
|
y2="60"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line15" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="70"
|
||||||
|
x2="100"
|
||||||
|
y2="70"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line16" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="80"
|
||||||
|
x2="100"
|
||||||
|
y2="80"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line17" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="90"
|
||||||
|
x2="100"
|
||||||
|
y2="90"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line18" />
|
||||||
|
<!-- Center crosshair -->
|
||||||
|
<line
|
||||||
|
x1="50"
|
||||||
|
y1="0"
|
||||||
|
x2="50"
|
||||||
|
y2="100"
|
||||||
|
stroke="#2a2a5a"
|
||||||
|
stroke-width="0.8"
|
||||||
|
id="line19" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="50"
|
||||||
|
x2="100"
|
||||||
|
y2="50"
|
||||||
|
stroke="#2a2a5a"
|
||||||
|
stroke-width="0.8"
|
||||||
|
id="line20" />
|
||||||
|
<!-- Pattern area border -->
|
||||||
|
<rect
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
fill="none"
|
||||||
|
stroke="#333366"
|
||||||
|
stroke-width="0.6"
|
||||||
|
id="rect20" />
|
||||||
|
<!-- Quarter markers -->
|
||||||
|
<rect
|
||||||
|
x="25"
|
||||||
|
y="0"
|
||||||
|
width="50"
|
||||||
|
height="0"
|
||||||
|
fill="none"
|
||||||
|
stroke="#2a2a5a"
|
||||||
|
stroke-width="0.4"
|
||||||
|
id="rect21" />
|
||||||
|
<text
|
||||||
|
x="1"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text21">0</text>
|
||||||
|
<text
|
||||||
|
x="23"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text22">25</text>
|
||||||
|
<text
|
||||||
|
x="48"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text23">50</text>
|
||||||
|
<text
|
||||||
|
x="73"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text24">75</text>
|
||||||
|
<text
|
||||||
|
x="97"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text25">100</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="4"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text26">0</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="29"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text27">25</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="54"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text28">50</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="79"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text29">75</text>
|
||||||
|
<text
|
||||||
|
x="-18"
|
||||||
|
y="103"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text30">100</text>
|
||||||
|
</g>
|
||||||
|
<!-- PATTERN — edit this layer only -->
|
||||||
|
<!-- Shapes must use fill="#ffffff". Stay within 0-100. -->
|
||||||
|
<g
|
||||||
|
inkscape:label="Pattern (edit this)"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer-pattern">
|
||||||
|
<!-- Example: single centered circle. Replace with your design. -->
|
||||||
|
<rect
|
||||||
|
x="8.4376574"
|
||||||
|
y="33.883934"
|
||||||
|
width="30"
|
||||||
|
height="30"
|
||||||
|
rx="15"
|
||||||
|
ry="15"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="rect30" />
|
||||||
|
<rect
|
||||||
|
x="63.794476"
|
||||||
|
y="43.035648"
|
||||||
|
width="13.035815"
|
||||||
|
height="13.035815"
|
||||||
|
rx="6.5179076"
|
||||||
|
ry="6.5179076"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="rect32"
|
||||||
|
style="stroke-width:0.434527" />
|
||||||
|
<rect
|
||||||
|
x="43.258888"
|
||||||
|
y="9.3304958"
|
||||||
|
width="13.035815"
|
||||||
|
height="13.035815"
|
||||||
|
rx="6.5179076"
|
||||||
|
ry="6.5179076"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="rect34"
|
||||||
|
style="stroke-width:0.434527" />
|
||||||
|
<rect
|
||||||
|
x="43.258888"
|
||||||
|
y="78.303307"
|
||||||
|
width="13.035815"
|
||||||
|
height="13.035815"
|
||||||
|
rx="6.5179076"
|
||||||
|
ry="6.5179076"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="rect38"
|
||||||
|
style="stroke-width:0.434527" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
|
@ -0,0 +1,391 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!--
|
||||||
|
ITALIC NEON — PATTERN TEMPLATE
|
||||||
|
================================
|
||||||
|
HOW TO USE:
|
||||||
|
1. File > Save As > pattern-01.svg (increment number for each new pattern)
|
||||||
|
2. Edit ONLY the "Pattern (edit this)" layer — all other layers are guides
|
||||||
|
3. Draw white shapes (fill="#ffffff") within the 0-100 coordinate area
|
||||||
|
4. Shapes: use <rect rx="..." ry="..."> for circles/pills, or <ellipse>
|
||||||
|
- Circle: <rect x="35" y="35" width="30" height="30" rx="15" ry="15" fill="#ffffff"/>
|
||||||
|
- Horizontal pill: <rect x="20" y="42" width="60" height="16" rx="8" ry="8" fill="#ffffff"/>
|
||||||
|
- Ellipse: <ellipse cx="50" cy="50" rx="25" ry="15" fill="#ffffff"/>
|
||||||
|
5. Stay within x: 0-100, y: 0-100. Leave ~5 units of margin from edges.
|
||||||
|
6. Aim for 1-8 shapes, non-overlapping, with geometric/symmetric relations.
|
||||||
|
7. The skew is applied at render time — draw flat, it will look correct in the icon.
|
||||||
|
|
||||||
|
The black rect is the inner icon area. The purple rect is the outer chrome (color varies per project at runtime).
|
||||||
|
-->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="540"
|
||||||
|
height="540"
|
||||||
|
viewBox="-20 -20 140 140"
|
||||||
|
version="1.1"
|
||||||
|
id="template"
|
||||||
|
inkscape:version="1.4.3 (0d15f75, 2025-12-25)"
|
||||||
|
sodipodi:docname="pattern-13.svg"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi0="http://sodipodi.sourceforge.net/DTD/sodipodi-0.0.dtd">
|
||||||
|
<defs
|
||||||
|
id="defs30" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview30"
|
||||||
|
pagecolor="#505050"
|
||||||
|
bordercolor="#eeeeee"
|
||||||
|
borderopacity="1"
|
||||||
|
inkscape:showpageshadow="0"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#d1d1d1"
|
||||||
|
inkscape:zoom="1.1614884"
|
||||||
|
inkscape:cx="236.3347"
|
||||||
|
inkscape:cy="243.22241"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1017"
|
||||||
|
inkscape:window-x="-8"
|
||||||
|
inkscape:window-y="-8"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer-pattern" />
|
||||||
|
<sodipodi0:namedview
|
||||||
|
id="namedview"
|
||||||
|
pagecolor="#1a1a2e"
|
||||||
|
bordercolor="#555555"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:current-layer="layer-pattern">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
units="px"
|
||||||
|
spacingx="5"
|
||||||
|
spacingy="5"
|
||||||
|
empspacing="2"
|
||||||
|
color="#2a2a4a"
|
||||||
|
empcolor="#3a3a6a"
|
||||||
|
opacity="0.8"
|
||||||
|
empopacity="1" />
|
||||||
|
</sodipodi0:namedview>
|
||||||
|
<!-- CHROME GUIDE — locked, context only, not exported as pattern data -->
|
||||||
|
<g
|
||||||
|
inkscape:label="Chrome (guide — do not edit)"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer-chrome"
|
||||||
|
sodipodi0:insensitive="true">
|
||||||
|
<!-- Outer colored rect: placeholder purple, will use project color at runtime -->
|
||||||
|
<rect
|
||||||
|
x="-14"
|
||||||
|
y="-14"
|
||||||
|
width="128"
|
||||||
|
height="128"
|
||||||
|
rx="20"
|
||||||
|
ry="20"
|
||||||
|
fill="#6600cc"
|
||||||
|
opacity="0.35"
|
||||||
|
id="rect1" />
|
||||||
|
<!-- Glow hint -->
|
||||||
|
<rect
|
||||||
|
x="-14"
|
||||||
|
y="-14"
|
||||||
|
width="128"
|
||||||
|
height="128"
|
||||||
|
rx="20"
|
||||||
|
ry="20"
|
||||||
|
fill="none"
|
||||||
|
stroke="#8833ff"
|
||||||
|
stroke-width="1.5"
|
||||||
|
opacity="0.5"
|
||||||
|
id="rect2" />
|
||||||
|
<!-- Inner black area = the 0,0 → 100,100 pattern space -->
|
||||||
|
<rect
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
rx="14"
|
||||||
|
ry="14"
|
||||||
|
fill="#000000"
|
||||||
|
id="rect3" />
|
||||||
|
</g>
|
||||||
|
<!-- GRID GUIDE — locked -->
|
||||||
|
<g
|
||||||
|
inkscape:label="Grid (guide — do not edit)"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer-grid"
|
||||||
|
sodipodi0:insensitive="true">
|
||||||
|
<!-- Minor lines every 10 units -->
|
||||||
|
<line
|
||||||
|
x1="10"
|
||||||
|
y1="0"
|
||||||
|
x2="10"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line3" />
|
||||||
|
<line
|
||||||
|
x1="20"
|
||||||
|
y1="0"
|
||||||
|
x2="20"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line4" />
|
||||||
|
<line
|
||||||
|
x1="30"
|
||||||
|
y1="0"
|
||||||
|
x2="30"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line5" />
|
||||||
|
<line
|
||||||
|
x1="40"
|
||||||
|
y1="0"
|
||||||
|
x2="40"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line6" />
|
||||||
|
<line
|
||||||
|
x1="60"
|
||||||
|
y1="0"
|
||||||
|
x2="60"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line7" />
|
||||||
|
<line
|
||||||
|
x1="70"
|
||||||
|
y1="0"
|
||||||
|
x2="70"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line8" />
|
||||||
|
<line
|
||||||
|
x1="80"
|
||||||
|
y1="0"
|
||||||
|
x2="80"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line9" />
|
||||||
|
<line
|
||||||
|
x1="90"
|
||||||
|
y1="0"
|
||||||
|
x2="90"
|
||||||
|
y2="100"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line10" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="10"
|
||||||
|
x2="100"
|
||||||
|
y2="10"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line11" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="20"
|
||||||
|
x2="100"
|
||||||
|
y2="20"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line12" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="30"
|
||||||
|
x2="100"
|
||||||
|
y2="30"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line13" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="40"
|
||||||
|
x2="100"
|
||||||
|
y2="40"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line14" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="60"
|
||||||
|
x2="100"
|
||||||
|
y2="60"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line15" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="70"
|
||||||
|
x2="100"
|
||||||
|
y2="70"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line16" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="80"
|
||||||
|
x2="100"
|
||||||
|
y2="80"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line17" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="90"
|
||||||
|
x2="100"
|
||||||
|
y2="90"
|
||||||
|
stroke="#1e1e3a"
|
||||||
|
stroke-width="0.5"
|
||||||
|
id="line18" />
|
||||||
|
<!-- Center crosshair -->
|
||||||
|
<line
|
||||||
|
x1="50"
|
||||||
|
y1="0"
|
||||||
|
x2="50"
|
||||||
|
y2="100"
|
||||||
|
stroke="#2a2a5a"
|
||||||
|
stroke-width="0.8"
|
||||||
|
id="line19" />
|
||||||
|
<line
|
||||||
|
x1="0"
|
||||||
|
y1="50"
|
||||||
|
x2="100"
|
||||||
|
y2="50"
|
||||||
|
stroke="#2a2a5a"
|
||||||
|
stroke-width="0.8"
|
||||||
|
id="line20" />
|
||||||
|
<!-- Pattern area border -->
|
||||||
|
<rect
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
fill="none"
|
||||||
|
stroke="#333366"
|
||||||
|
stroke-width="0.6"
|
||||||
|
id="rect20" />
|
||||||
|
<!-- Quarter markers -->
|
||||||
|
<rect
|
||||||
|
x="25"
|
||||||
|
y="0"
|
||||||
|
width="50"
|
||||||
|
height="0"
|
||||||
|
fill="none"
|
||||||
|
stroke="#2a2a5a"
|
||||||
|
stroke-width="0.4"
|
||||||
|
id="rect21" />
|
||||||
|
<text
|
||||||
|
x="1"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text21">0</text>
|
||||||
|
<text
|
||||||
|
x="23"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text22">25</text>
|
||||||
|
<text
|
||||||
|
x="48"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text23">50</text>
|
||||||
|
<text
|
||||||
|
x="73"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text24">75</text>
|
||||||
|
<text
|
||||||
|
x="97"
|
||||||
|
y="-2"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text25">100</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="4"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text26">0</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="29"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text27">25</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="54"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text28">50</text>
|
||||||
|
<text
|
||||||
|
x="-14"
|
||||||
|
y="79"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text29">75</text>
|
||||||
|
<text
|
||||||
|
x="-18"
|
||||||
|
y="103"
|
||||||
|
font-size="3"
|
||||||
|
fill="#444488"
|
||||||
|
font-family="monospace"
|
||||||
|
id="text30">100</text>
|
||||||
|
</g>
|
||||||
|
<!-- PATTERN — edit this layer only -->
|
||||||
|
<!-- Shapes must use fill="#ffffff". Stay within 0-100. -->
|
||||||
|
<g
|
||||||
|
inkscape:label="Pattern (edit this)"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer-pattern">
|
||||||
|
<!-- Example: single centered circle. Replace with your design. -->
|
||||||
|
<rect
|
||||||
|
x="8.4376574"
|
||||||
|
y="33.883934"
|
||||||
|
width="30"
|
||||||
|
height="30"
|
||||||
|
rx="15"
|
||||||
|
ry="15"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="rect30" />
|
||||||
|
<rect
|
||||||
|
x="76.964043"
|
||||||
|
y="78.749733"
|
||||||
|
width="13.035815"
|
||||||
|
height="13.035815"
|
||||||
|
rx="6.5179076"
|
||||||
|
ry="6.5179076"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="rect38"
|
||||||
|
style="stroke-width:0.434527" />
|
||||||
|
<rect
|
||||||
|
x="63.794472"
|
||||||
|
y="5.0894618"
|
||||||
|
width="30"
|
||||||
|
height="30"
|
||||||
|
rx="15"
|
||||||
|
ry="15"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="rect39" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
|
@ -0,0 +1,107 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!--
|
||||||
|
ITALIC NEON — PATTERN TEMPLATE
|
||||||
|
================================
|
||||||
|
HOW TO USE:
|
||||||
|
1. File > Save As > pattern-01.svg (increment number for each new pattern)
|
||||||
|
2. Edit ONLY the "Pattern (edit this)" layer — all other layers are guides
|
||||||
|
3. Draw white shapes (fill="#ffffff") within the 0-100 coordinate area
|
||||||
|
4. Shapes: use <rect rx="..." ry="..."> for circles/pills, or <ellipse>
|
||||||
|
- Circle: <rect x="35" y="35" width="30" height="30" rx="15" ry="15" fill="#ffffff"/>
|
||||||
|
- Horizontal pill: <rect x="20" y="42" width="60" height="16" rx="8" ry="8" fill="#ffffff"/>
|
||||||
|
- Ellipse: <ellipse cx="50" cy="50" rx="25" ry="15" fill="#ffffff"/>
|
||||||
|
5. Stay within x: 0-100, y: 0-100. Leave ~5 units of margin from edges.
|
||||||
|
6. Aim for 1-8 shapes, non-overlapping, with geometric/symmetric relations.
|
||||||
|
7. The skew is applied at render time — draw flat, it will look correct in the icon.
|
||||||
|
|
||||||
|
The black rect is the inner icon area. The purple rect is the outer chrome (color varies per project at runtime).
|
||||||
|
-->
|
||||||
|
<svg
|
||||||
|
width="540"
|
||||||
|
height="540"
|
||||||
|
viewBox="-20 -20 140 140"
|
||||||
|
version="1.1"
|
||||||
|
id="template"
|
||||||
|
inkscape:version="1.4.3"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg">
|
||||||
|
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview"
|
||||||
|
pagecolor="#1a1a2e"
|
||||||
|
bordercolor="#555555"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:current-layer="layer-pattern">
|
||||||
|
<inkscape:grid type="xygrid" units="px" spacingx="5" spacingy="5" empspacing="2"
|
||||||
|
color="#2a2a4a" empcolor="#3a3a6a" opacity="0.8" empopacity="1"/>
|
||||||
|
</sodipodi:namedview>
|
||||||
|
|
||||||
|
<!-- CHROME GUIDE — locked, context only, not exported as pattern data -->
|
||||||
|
<g inkscape:label="Chrome (guide — do not edit)"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer-chrome"
|
||||||
|
sodipodi:insensitive="true">
|
||||||
|
<!-- Outer colored rect: placeholder purple, will use project color at runtime -->
|
||||||
|
<rect x="-14" y="-14" width="128" height="128" rx="20" ry="20"
|
||||||
|
fill="#6600cc" opacity="0.35"/>
|
||||||
|
<!-- Glow hint -->
|
||||||
|
<rect x="-14" y="-14" width="128" height="128" rx="20" ry="20"
|
||||||
|
fill="none" stroke="#8833ff" stroke-width="1.5" opacity="0.5"/>
|
||||||
|
<!-- Inner black area = the 0,0 → 100,100 pattern space -->
|
||||||
|
<rect x="0" y="0" width="100" height="100" rx="14" ry="14"
|
||||||
|
fill="#000000"/>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<!-- GRID GUIDE — locked -->
|
||||||
|
<g inkscape:label="Grid (guide — do not edit)"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer-grid"
|
||||||
|
sodipodi:insensitive="true">
|
||||||
|
<!-- Minor lines every 10 units -->
|
||||||
|
<line x1="10" y1="0" x2="10" y2="100" stroke="#1e1e3a" stroke-width="0.5"/>
|
||||||
|
<line x1="20" y1="0" x2="20" y2="100" stroke="#1e1e3a" stroke-width="0.5"/>
|
||||||
|
<line x1="30" y1="0" x2="30" y2="100" stroke="#1e1e3a" stroke-width="0.5"/>
|
||||||
|
<line x1="40" y1="0" x2="40" y2="100" stroke="#1e1e3a" stroke-width="0.5"/>
|
||||||
|
<line x1="60" y1="0" x2="60" y2="100" stroke="#1e1e3a" stroke-width="0.5"/>
|
||||||
|
<line x1="70" y1="0" x2="70" y2="100" stroke="#1e1e3a" stroke-width="0.5"/>
|
||||||
|
<line x1="80" y1="0" x2="80" y2="100" stroke="#1e1e3a" stroke-width="0.5"/>
|
||||||
|
<line x1="90" y1="0" x2="90" y2="100" stroke="#1e1e3a" stroke-width="0.5"/>
|
||||||
|
<line x1="0" y1="10" x2="100" y2="10" stroke="#1e1e3a" stroke-width="0.5"/>
|
||||||
|
<line x1="0" y1="20" x2="100" y2="20" stroke="#1e1e3a" stroke-width="0.5"/>
|
||||||
|
<line x1="0" y1="30" x2="100" y2="30" stroke="#1e1e3a" stroke-width="0.5"/>
|
||||||
|
<line x1="0" y1="40" x2="100" y2="40" stroke="#1e1e3a" stroke-width="0.5"/>
|
||||||
|
<line x1="0" y1="60" x2="100" y2="60" stroke="#1e1e3a" stroke-width="0.5"/>
|
||||||
|
<line x1="0" y1="70" x2="100" y2="70" stroke="#1e1e3a" stroke-width="0.5"/>
|
||||||
|
<line x1="0" y1="80" x2="100" y2="80" stroke="#1e1e3a" stroke-width="0.5"/>
|
||||||
|
<line x1="0" y1="90" x2="100" y2="90" stroke="#1e1e3a" stroke-width="0.5"/>
|
||||||
|
<!-- Center crosshair -->
|
||||||
|
<line x1="50" y1="0" x2="50" y2="100" stroke="#2a2a5a" stroke-width="0.8"/>
|
||||||
|
<line x1="0" y1="50" x2="100" y2="50" stroke="#2a2a5a" stroke-width="0.8"/>
|
||||||
|
<!-- Pattern area border -->
|
||||||
|
<rect x="0" y="0" width="100" height="100" fill="none" stroke="#333366" stroke-width="0.6"/>
|
||||||
|
<!-- Quarter markers -->
|
||||||
|
<rect x="25" y="0" width="50" height="0" fill="none" stroke="#2a2a5a" stroke-width="0.4"/>
|
||||||
|
<text x="1" y="-2" font-size="3" fill="#444488" font-family="monospace">0</text>
|
||||||
|
<text x="23" y="-2" font-size="3" fill="#444488" font-family="monospace">25</text>
|
||||||
|
<text x="48" y="-2" font-size="3" fill="#444488" font-family="monospace">50</text>
|
||||||
|
<text x="73" y="-2" font-size="3" fill="#444488" font-family="monospace">75</text>
|
||||||
|
<text x="97" y="-2" font-size="3" fill="#444488" font-family="monospace">100</text>
|
||||||
|
<text x="-14" y="4" font-size="3" fill="#444488" font-family="monospace">0</text>
|
||||||
|
<text x="-14" y="29" font-size="3" fill="#444488" font-family="monospace">25</text>
|
||||||
|
<text x="-14" y="54" font-size="3" fill="#444488" font-family="monospace">50</text>
|
||||||
|
<text x="-14" y="79" font-size="3" fill="#444488" font-family="monospace">75</text>
|
||||||
|
<text x="-18" y="103" font-size="3" fill="#444488" font-family="monospace">100</text>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<!-- PATTERN — edit this layer only -->
|
||||||
|
<!-- Shapes must use fill="#ffffff". Stay within 0-100. -->
|
||||||
|
<g inkscape:label="Pattern (edit this)"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer-pattern">
|
||||||
|
<!-- Example: single centered circle. Replace with your design. -->
|
||||||
|
<rect x="35" y="35" width="30" height="30" rx="15" ry="15" fill="#ffffff"/>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
||||||
|
|
@ -0,0 +1,640 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="3840"
|
||||||
|
height="2160"
|
||||||
|
viewBox="0 0 3840 2160"
|
||||||
|
version="1.1"
|
||||||
|
id="svg5"
|
||||||
|
inkscape:version="1.4.3 (0d15f75, 2025-12-25)"
|
||||||
|
sodipodi:docname="italic-neon.svg"
|
||||||
|
xml:space="preserve"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
|
||||||
|
id="namedview7"
|
||||||
|
pagecolor="#333333"
|
||||||
|
bordercolor="#404040"
|
||||||
|
borderopacity="1"
|
||||||
|
inkscape:showpageshadow="0"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#333333"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="0.20890503"
|
||||||
|
inkscape:cx="1797.4675"
|
||||||
|
inkscape:cy="1170.3883"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1017"
|
||||||
|
inkscape:window-x="-8"
|
||||||
|
inkscape:window-y="-8"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="g13" /><defs
|
||||||
|
id="defs2"><linearGradient
|
||||||
|
id="linearGradient65"
|
||||||
|
inkscape:collect="never"><stop
|
||||||
|
style="stop-color:#414caa;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop64" /><stop
|
||||||
|
style="stop-color:#2422cf;stop-opacity:0.77900553;"
|
||||||
|
offset="1"
|
||||||
|
id="stop65" /></linearGradient><linearGradient
|
||||||
|
id="linearGradient63"
|
||||||
|
inkscape:collect="never"><stop
|
||||||
|
style="stop-color:#0076fd;stop-opacity:1"
|
||||||
|
offset="0"
|
||||||
|
id="stop62" /><stop
|
||||||
|
style="stop-color:#1a84c5;stop-opacity:0.6767956;"
|
||||||
|
offset="1"
|
||||||
|
id="stop63" /></linearGradient><linearGradient
|
||||||
|
id="linearGradient60"
|
||||||
|
inkscape:collect="never"><stop
|
||||||
|
style="stop-color:#ffea64;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop59" /><stop
|
||||||
|
style="stop-color:#ffa264;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop60" /></linearGradient><linearGradient
|
||||||
|
id="linearGradient56"
|
||||||
|
inkscape:collect="never"><stop
|
||||||
|
style="stop-color:#000041;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop56" /><stop
|
||||||
|
style="stop-color:#000041;stop-opacity:0.7845304;"
|
||||||
|
offset="1"
|
||||||
|
id="stop57" /></linearGradient><linearGradient
|
||||||
|
id="linearGradient46"
|
||||||
|
inkscape:collect="never"><stop
|
||||||
|
style="stop-color:#611b0c;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop48" /><stop
|
||||||
|
style="stop-color:#4b0429;stop-opacity:0;"
|
||||||
|
offset="1"
|
||||||
|
id="stop47" /></linearGradient><linearGradient
|
||||||
|
id="linearGradient45"
|
||||||
|
inkscape:collect="never"><stop
|
||||||
|
style="stop-color:#2d1717;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop45" /><stop
|
||||||
|
style="stop-color:#0f0f15;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop46" /></linearGradient><linearGradient
|
||||||
|
id="linearGradient43"
|
||||||
|
inkscape:collect="never"><stop
|
||||||
|
style="stop-color:#1a84c5;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop43" /><stop
|
||||||
|
style="stop-color:#1a84c5;stop-opacity:0.6767956;"
|
||||||
|
offset="1"
|
||||||
|
id="stop44" /></linearGradient><linearGradient
|
||||||
|
id="linearGradient40"
|
||||||
|
inkscape:collect="never"><stop
|
||||||
|
style="stop-color:#9a133a;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop40" /><stop
|
||||||
|
style="stop-color:#9a1375;stop-opacity:0.50552487;"
|
||||||
|
offset="1"
|
||||||
|
id="stop41" /></linearGradient><linearGradient
|
||||||
|
id="linearGradient38"
|
||||||
|
inkscape:collect="never"><stop
|
||||||
|
style="stop-color:#850d4f;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop38" /><stop
|
||||||
|
style="stop-color:#5a2c66;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop39" /></linearGradient><linearGradient
|
||||||
|
id="linearGradient36"
|
||||||
|
inkscape:collect="never"><stop
|
||||||
|
style="stop-color:#283069;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop36" /><stop
|
||||||
|
style="stop-color:#0c0b46;stop-opacity:0.77900553;"
|
||||||
|
offset="1"
|
||||||
|
id="stop37" /></linearGradient><linearGradient
|
||||||
|
id="linearGradient7"
|
||||||
|
inkscape:collect="never"><stop
|
||||||
|
style="stop-color:#ffda25;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop7" /><stop
|
||||||
|
style="stop-color:#ff3e25;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop8" /></linearGradient><clipPath
|
||||||
|
clipPathUnits="userSpaceOnUse"
|
||||||
|
id="clipPath7940"><rect
|
||||||
|
style="fill:#333333;fill-opacity:1;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
|
||||||
|
id="rect7942"
|
||||||
|
width="1440"
|
||||||
|
height="810"
|
||||||
|
x="0"
|
||||||
|
y="0" /></clipPath><filter
|
||||||
|
inkscape:collect="always"
|
||||||
|
style="color-interpolation-filters:sRGB"
|
||||||
|
id="filter5"
|
||||||
|
x="-0.2561334"
|
||||||
|
y="-0.24780269"
|
||||||
|
width="1.5122668"
|
||||||
|
height="1.4956054"><feGaussianBlur
|
||||||
|
inkscape:collect="always"
|
||||||
|
stdDeviation="69.411603"
|
||||||
|
id="feGaussianBlur5" /></filter><linearGradient
|
||||||
|
inkscape:collect="never"
|
||||||
|
xlink:href="#linearGradient60"
|
||||||
|
id="linearGradient8"
|
||||||
|
x1="1669.6682"
|
||||||
|
y1="768.40881"
|
||||||
|
x2="1682.3977"
|
||||||
|
y2="1245.6689"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="translate(-116.04751,13.150766)" /><linearGradient
|
||||||
|
inkscape:collect="never"
|
||||||
|
xlink:href="#linearGradient7"
|
||||||
|
id="linearGradient15"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
x1="1669.6682"
|
||||||
|
y1="768.40881"
|
||||||
|
x2="1682.3977"
|
||||||
|
y2="1245.6689" /><linearGradient
|
||||||
|
xlink:href="#linearGradient7"
|
||||||
|
id="linearGradient21"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
x1="1669.6682"
|
||||||
|
y1="768.40881"
|
||||||
|
x2="1682.3977"
|
||||||
|
y2="1245.6689"
|
||||||
|
gradientTransform="translate(21.551594,-189.27249)"
|
||||||
|
inkscape:collect="never" /><linearGradient
|
||||||
|
inkscape:collect="never"
|
||||||
|
xlink:href="#linearGradient65"
|
||||||
|
id="linearGradient37"
|
||||||
|
x1="-624.23932"
|
||||||
|
y1="876.91034"
|
||||||
|
x2="6438.915"
|
||||||
|
y2="1084.6312"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="translate(-114.6496,13.663333)" /><linearGradient
|
||||||
|
inkscape:collect="never"
|
||||||
|
xlink:href="#linearGradient38"
|
||||||
|
id="linearGradient39"
|
||||||
|
x1="543.13513"
|
||||||
|
y1="909.59547"
|
||||||
|
x2="4564.0665"
|
||||||
|
y2="909.59547"
|
||||||
|
gradientUnits="userSpaceOnUse" /><linearGradient
|
||||||
|
inkscape:collect="never"
|
||||||
|
xlink:href="#linearGradient40"
|
||||||
|
id="linearGradient41"
|
||||||
|
x1="544.56726"
|
||||||
|
y1="712.94585"
|
||||||
|
x2="4565.4987"
|
||||||
|
y2="712.94585"
|
||||||
|
gradientUnits="userSpaceOnUse" /><linearGradient
|
||||||
|
inkscape:collect="never"
|
||||||
|
xlink:href="#linearGradient43"
|
||||||
|
id="linearGradient44"
|
||||||
|
x1="3747.958"
|
||||||
|
y1="-84.731155"
|
||||||
|
x2="4035.8533"
|
||||||
|
y2="482.54166"
|
||||||
|
gradientUnits="userSpaceOnUse" /><radialGradient
|
||||||
|
inkscape:collect="never"
|
||||||
|
xlink:href="#linearGradient45"
|
||||||
|
id="radialGradient46"
|
||||||
|
cx="1934.041"
|
||||||
|
cy="-286.27405"
|
||||||
|
fx="1934.041"
|
||||||
|
fy="-286.27405"
|
||||||
|
r="1920"
|
||||||
|
gradientTransform="matrix(1.4338096,0,0,1.1246674,-857.83344,320.13179)"
|
||||||
|
gradientUnits="userSpaceOnUse" /><radialGradient
|
||||||
|
inkscape:collect="never"
|
||||||
|
xlink:href="#linearGradient46"
|
||||||
|
id="radialGradient48"
|
||||||
|
cx="1095.6782"
|
||||||
|
cy="1786.6388"
|
||||||
|
fx="1095.6782"
|
||||||
|
fy="1786.6388"
|
||||||
|
r="869.29773"
|
||||||
|
gradientTransform="matrix(1,0,0,0.97237571,2493.9563,-386.25002)"
|
||||||
|
gradientUnits="userSpaceOnUse" /><linearGradient
|
||||||
|
inkscape:collect="never"
|
||||||
|
xlink:href="#linearGradient36"
|
||||||
|
id="linearGradient54"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
x1="543.13513"
|
||||||
|
y1="909.59547"
|
||||||
|
x2="4564.0665"
|
||||||
|
y2="909.59547" /><linearGradient
|
||||||
|
inkscape:collect="never"
|
||||||
|
xlink:href="#linearGradient7"
|
||||||
|
id="linearGradient55"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
x1="1669.6682"
|
||||||
|
y1="768.40881"
|
||||||
|
x2="1682.3977"
|
||||||
|
y2="1245.6689" /><radialGradient
|
||||||
|
inkscape:collect="never"
|
||||||
|
xlink:href="#linearGradient56"
|
||||||
|
id="radialGradient57"
|
||||||
|
cx="1034.474"
|
||||||
|
cy="856.92493"
|
||||||
|
fx="1034.474"
|
||||||
|
fy="856.92493"
|
||||||
|
r="276.50925"
|
||||||
|
gradientTransform="matrix(1,0,0,1.0336182,-154.9789,-10.503984)"
|
||||||
|
gradientUnits="userSpaceOnUse" /><radialGradient
|
||||||
|
xlink:href="#linearGradient63"
|
||||||
|
id="radialGradient62"
|
||||||
|
cx="3726.292"
|
||||||
|
cy="288.33737"
|
||||||
|
fx="3726.292"
|
||||||
|
fy="288.33737"
|
||||||
|
r="600.08325"
|
||||||
|
gradientTransform="matrix(2.0952238,-0.88278288,-1.2179052,2.1199119,-3615.4392,2810.7434)"
|
||||||
|
gradientUnits="userSpaceOnUse" /><filter
|
||||||
|
inkscape:collect="always"
|
||||||
|
style="color-interpolation-filters:sRGB"
|
||||||
|
id="filter65"
|
||||||
|
x="-0.052118368"
|
||||||
|
y="-0.60273221"
|
||||||
|
width="1.1042367"
|
||||||
|
height="2.2054644"><feGaussianBlur
|
||||||
|
inkscape:collect="always"
|
||||||
|
stdDeviation="41.388646"
|
||||||
|
id="feGaussianBlur65" /></filter></defs><g
|
||||||
|
inkscape:label="Content"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
style="fill:#ffffff;fill-opacity:1"><rect
|
||||||
|
style="opacity:1;fill:url(#radialGradient46);fill-opacity:1;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke fill markers"
|
||||||
|
id="rect1"
|
||||||
|
width="3840"
|
||||||
|
height="2160"
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
ry="7.9545546" /><g
|
||||||
|
id="g8"
|
||||||
|
transform="matrix(0.51477218,0,0,0.51477218,750.18195,221.32555)"
|
||||||
|
style="opacity:1"><rect
|
||||||
|
style="opacity:1;fill:none;fill-opacity:1;stroke:#115dff;stroke-width:3.96021;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
|
||||||
|
id="rect65"
|
||||||
|
width="4167.8018"
|
||||||
|
height="605.45441"
|
||||||
|
x="418.77679"
|
||||||
|
y="671.59515"
|
||||||
|
ry="72.055"
|
||||||
|
transform="matrix(1,0,-0.27133169,0.9624859,0,0)" /><rect
|
||||||
|
style="opacity:0.08085106;fill:none;fill-opacity:1;stroke:#11cbff;stroke-width:19.80102824;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;paint-order:stroke fill markers;stroke-dasharray:none"
|
||||||
|
id="rect56"
|
||||||
|
width="4167.8018"
|
||||||
|
height="605.45441"
|
||||||
|
x="380.40701"
|
||||||
|
y="631.54047"
|
||||||
|
ry="72.055"
|
||||||
|
transform="matrix(1,0,-0.27133169,0.9624859,0,0)" /><rect
|
||||||
|
style="opacity:0.38723404;fill:none;fill-opacity:1;stroke:#0226ff;stroke-width:10.193;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;paint-order:stroke fill markers"
|
||||||
|
id="rect55"
|
||||||
|
width="4167.8018"
|
||||||
|
height="605.45441"
|
||||||
|
x="336.33093"
|
||||||
|
y="594.06683"
|
||||||
|
ry="72.055"
|
||||||
|
transform="matrix(1,0,-0.27133169,0.9624859,0,0)" /><rect
|
||||||
|
style="opacity:1;fill:url(#linearGradient37);fill-opacity:1;stroke:none;stroke-width:10.193;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke fill markers"
|
||||||
|
id="rect8"
|
||||||
|
width="4020.9314"
|
||||||
|
height="493.97916"
|
||||||
|
x="428.48553"
|
||||||
|
y="676.26923"
|
||||||
|
ry="72.055"
|
||||||
|
transform="matrix(1,0,-0.27133169,0.9624859,0,0)" /><text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-weight:bold;font-size:229.213px;line-height:1.4;font-family:'Kode Mono';-inkscape-font-specification:'Kode Mono Bold';writing-mode:lr-tb;direction:ltr;opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:57.3032;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke fill markers;filter:url(#filter65)"
|
||||||
|
x="1368.9021"
|
||||||
|
y="968.88202"
|
||||||
|
id="text65"
|
||||||
|
transform="skewX(-9.9600568)"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan65"
|
||||||
|
x="1368.9021"
|
||||||
|
y="968.88202"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:Barlow;-inkscape-font-specification:'Barlow Bold';fill:#000000;fill-opacity:1;stroke-width:57.3032">MY-OWN-PROJECT</tspan></text><text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-weight:bold;font-size:229.213px;line-height:1.4;font-family:'Kode Mono';-inkscape-font-specification:'Kode Mono Bold';writing-mode:lr-tb;direction:ltr;opacity:1;fill:#0065d9;fill-opacity:1;stroke:none;stroke-width:57.3032;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke fill markers"
|
||||||
|
x="1350.876"
|
||||||
|
y="959.84082"
|
||||||
|
id="text7"
|
||||||
|
transform="skewX(-9.9600568)"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan7"
|
||||||
|
x="1350.876"
|
||||||
|
y="959.84082"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:Barlow;-inkscape-font-specification:'Barlow Bold';fill:#0065d9;fill-opacity:1;stroke-width:57.3032">MY-OWN-PROJECT</tspan></text><text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-weight:bold;font-size:229.213px;line-height:1.4;font-family:'Kode Mono';-inkscape-font-specification:'Kode Mono Bold';writing-mode:lr-tb;direction:ltr;opacity:1;fill:url(#linearGradient8);fill-opacity:1;stroke:none;stroke-width:57.3032;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke fill markers"
|
||||||
|
x="1329.0663"
|
||||||
|
y="935.90649"
|
||||||
|
id="text6"
|
||||||
|
transform="skewX(-9.9600568)"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan6"
|
||||||
|
x="1329.0663"
|
||||||
|
y="935.90649"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:Barlow;-inkscape-font-specification:'Barlow Bold';fill:url(#linearGradient8);fill-opacity:1;stroke-width:57.3032">MY-OWN-PROJECT</tspan></text><g
|
||||||
|
id="g6"
|
||||||
|
transform="matrix(0.74186024,0,0,0.74186024,284.22401,182.48817)"><rect
|
||||||
|
style="opacity:1;mix-blend-mode:normal;fill:#3b46a0;fill-opacity:1;stroke:none;stroke-width:10.1616;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke fill markers;filter:url(#filter5)"
|
||||||
|
id="rect5"
|
||||||
|
width="650.3949"
|
||||||
|
height="672.26007"
|
||||||
|
x="732.64203"
|
||||||
|
y="542.77356"
|
||||||
|
ry="169.38864"
|
||||||
|
transform="matrix(1.158109,0,-0.28862323,1.1215673,-292.16247,-116.85116)" /><g
|
||||||
|
id="g5"><rect
|
||||||
|
style="opacity:1;fill:#004fdb;fill-opacity:1;stroke:none;stroke-width:10.1616;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke fill markers"
|
||||||
|
id="rect2"
|
||||||
|
width="650.3949"
|
||||||
|
height="672.26007"
|
||||||
|
x="577.66315"
|
||||||
|
y="561.07788"
|
||||||
|
ry="169.38864"
|
||||||
|
transform="matrix(1,0,-0.2492194,0.96844705,0,0)" /><rect
|
||||||
|
style="opacity:1;fill:url(#radialGradient57);stroke:none;stroke-width:8.64022;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke fill markers"
|
||||||
|
id="rect3"
|
||||||
|
width="553.01849"
|
||||||
|
height="571.60999"
|
||||||
|
x="602.98584"
|
||||||
|
y="589.42426"
|
||||||
|
ry="144.02795"
|
||||||
|
transform="matrix(1,0,-0.2492194,0.96844705,0,0)" /><rect
|
||||||
|
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2.99946;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke fill markers"
|
||||||
|
id="rect4"
|
||||||
|
width="191.9814"
|
||||||
|
height="198.43549"
|
||||||
|
x="646.90363"
|
||||||
|
y="639.01685"
|
||||||
|
ry="93.48381"
|
||||||
|
transform="matrix(1,0,-0.2492194,0.96844705,0,0)" /></g></g></g><g
|
||||||
|
id="g15"
|
||||||
|
transform="matrix(0.51477218,0,0,0.51477218,780.64536,655.48683)"><text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-weight:bold;font-size:229.213px;line-height:1.4;font-family:'Kode Mono';-inkscape-font-specification:'Kode Mono Bold';writing-mode:lr-tb;direction:ltr;opacity:1;fill:#5c25ff;fill-opacity:1;stroke:none;stroke-width:57.3032;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke fill markers"
|
||||||
|
x="1466.9235"
|
||||||
|
y="946.69006"
|
||||||
|
id="text8"
|
||||||
|
transform="skewX(-9.9600568)"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan8"
|
||||||
|
x="1466.9235"
|
||||||
|
y="946.69006"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:Barlow;-inkscape-font-specification:'Barlow Bold';fill:#5c25ff;fill-opacity:1;stroke-width:57.3032">VIVI NUMBER ONE</tspan></text><rect
|
||||||
|
style="opacity:0.52766;fill:url(#linearGradient39);stroke:none;stroke-width:10.193;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke fill markers"
|
||||||
|
id="rect9"
|
||||||
|
width="4020.9314"
|
||||||
|
height="493.97916"
|
||||||
|
x="543.13513"
|
||||||
|
y="662.6059"
|
||||||
|
ry="72.055"
|
||||||
|
transform="matrix(1,0,-0.27133169,0.9624859,0,0)" /><text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-weight:bold;font-size:229.213px;line-height:1.4;font-family:'Kode Mono';-inkscape-font-specification:'Kode Mono Bold';writing-mode:lr-tb;direction:ltr;opacity:1;fill:url(#linearGradient15);fill-opacity:1;stroke:none;stroke-width:57.3032;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke fill markers"
|
||||||
|
x="1445.1138"
|
||||||
|
y="922.75574"
|
||||||
|
id="text9"
|
||||||
|
transform="skewX(-9.9600568)"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan9"
|
||||||
|
x="1445.1138"
|
||||||
|
y="922.75574"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:Barlow;-inkscape-font-specification:'Barlow Bold';fill:url(#linearGradient15);fill-opacity:1;stroke-width:57.3032">VIVI NUMBER ONE</tspan></text><g
|
||||||
|
id="g14"
|
||||||
|
transform="matrix(0.74186024,0,0,0.74186024,284.22401,182.48817)"><rect
|
||||||
|
style="opacity:1;mix-blend-mode:normal;fill:#863ba0;fill-opacity:1;stroke:none;stroke-width:10.1616;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke fill markers;filter:url(#filter5)"
|
||||||
|
id="rect10"
|
||||||
|
width="650.3949"
|
||||||
|
height="672.26007"
|
||||||
|
x="732.64203"
|
||||||
|
y="542.77356"
|
||||||
|
ry="169.38864"
|
||||||
|
transform="matrix(1.158109,0,-0.28862323,1.1215673,-132.62178,-134.5779)" /><g
|
||||||
|
id="g13"><rect
|
||||||
|
style="opacity:1;fill:#bb00db;fill-opacity:1;stroke:none;stroke-width:10.1616;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke fill markers"
|
||||||
|
id="rect11"
|
||||||
|
width="650.3949"
|
||||||
|
height="672.26007"
|
||||||
|
x="732.64203"
|
||||||
|
y="542.77356"
|
||||||
|
ry="169.38864"
|
||||||
|
transform="matrix(1,0,-0.2492194,0.96844705,0,0)" /><rect
|
||||||
|
style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:8.64022;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke fill markers"
|
||||||
|
id="rect12"
|
||||||
|
width="553.01849"
|
||||||
|
height="571.60999"
|
||||||
|
x="757.96472"
|
||||||
|
y="571.11993"
|
||||||
|
ry="144.02795"
|
||||||
|
transform="matrix(1,0,-0.2492194,0.96844705,0,0)" /><rect
|
||||||
|
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2.99946;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke fill markers"
|
||||||
|
id="rect13"
|
||||||
|
width="191.9814"
|
||||||
|
height="198.43549"
|
||||||
|
x="1044.7726"
|
||||||
|
y="728.56091"
|
||||||
|
ry="93.48381"
|
||||||
|
transform="matrix(1,0,-0.2492194,0.96844705,0,0)" /><rect
|
||||||
|
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2.99946;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke fill markers"
|
||||||
|
id="rect21"
|
||||||
|
width="191.9814"
|
||||||
|
height="198.43549"
|
||||||
|
x="805.70337"
|
||||||
|
y="740.81641"
|
||||||
|
ry="93.48381"
|
||||||
|
transform="matrix(1,0,-0.2492194,0.96844705,0,0)" /><rect
|
||||||
|
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.88797;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke fill markers"
|
||||||
|
id="rect22"
|
||||||
|
width="120.84007"
|
||||||
|
height="124.9025"
|
||||||
|
x="950.50409"
|
||||||
|
y="615.8103"
|
||||||
|
ry="58.842106"
|
||||||
|
transform="matrix(1,0,-0.2492194,0.96844705,0,0)" /><rect
|
||||||
|
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.88797;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke fill markers"
|
||||||
|
id="rect23"
|
||||||
|
width="120.84007"
|
||||||
|
height="124.9025"
|
||||||
|
x="971.18292"
|
||||||
|
y="936.90436"
|
||||||
|
ry="58.842106"
|
||||||
|
transform="matrix(1,0,-0.2492194,0.96844705,0,0)" /></g></g></g><g
|
||||||
|
id="g21"
|
||||||
|
transform="matrix(0.51477218,0,0,0.51477218,737.93709,1148.1585)"><g
|
||||||
|
id="g24"
|
||||||
|
transform="translate(0,105.65989)"><text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-weight:bold;font-size:229.213px;line-height:1.4;font-family:'Kode Mono';-inkscape-font-specification:'Kode Mono Bold';writing-mode:lr-tb;direction:ltr;opacity:1;fill:#5c25ff;fill-opacity:1;stroke:none;stroke-width:57.3032;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke fill markers"
|
||||||
|
x="1488.4751"
|
||||||
|
y="757.41754"
|
||||||
|
id="text15"
|
||||||
|
transform="skewX(-9.9600568)"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan15"
|
||||||
|
x="1488.4751"
|
||||||
|
y="757.41754"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:Barlow;-inkscape-font-specification:'Barlow Bold';fill:#5c25ff;fill-opacity:1;stroke-width:57.3032">SOME OTHER PROJECT</tspan></text><rect
|
||||||
|
style="opacity:0.52766;fill:url(#linearGradient41);stroke:none;stroke-width:10.193;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke fill markers"
|
||||||
|
id="rect15"
|
||||||
|
width="4020.9314"
|
||||||
|
height="493.97916"
|
||||||
|
x="544.56726"
|
||||||
|
y="465.95627"
|
||||||
|
ry="72.055"
|
||||||
|
transform="matrix(1,0,-0.27133169,0.9624859,0,0)" /><text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-weight:bold;font-size:229.213px;line-height:1.4;font-family:'Kode Mono';-inkscape-font-specification:'Kode Mono Bold';writing-mode:lr-tb;direction:ltr;opacity:1;fill:url(#linearGradient21);fill-opacity:1;stroke:none;stroke-width:57.3032;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke fill markers"
|
||||||
|
x="1466.6654"
|
||||||
|
y="733.48322"
|
||||||
|
id="text16"
|
||||||
|
transform="skewX(-9.9600568)"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan16"
|
||||||
|
x="1466.6654"
|
||||||
|
y="733.48322"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:Barlow;-inkscape-font-specification:'Barlow Bold';fill:url(#linearGradient21);fill-opacity:1;stroke-width:57.3032">SOME OTHER PROJECT</tspan></text><g
|
||||||
|
id="g20"
|
||||||
|
transform="matrix(0.74186024,0,0,0.74186024,339.01342,-6.7843222)"><rect
|
||||||
|
style="opacity:1;mix-blend-mode:normal;fill:#a03b66;fill-opacity:1;stroke:none;stroke-width:10.1616;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke fill markers;filter:url(#filter5)"
|
||||||
|
id="rect16"
|
||||||
|
width="650.3949"
|
||||||
|
height="672.26007"
|
||||||
|
x="732.64203"
|
||||||
|
y="542.77356"
|
||||||
|
ry="169.38864"
|
||||||
|
transform="matrix(1.158109,0,-0.28862323,1.1215673,-132.62178,-134.5779)" /><g
|
||||||
|
id="g19"><rect
|
||||||
|
style="opacity:1;fill:#db004b;fill-opacity:1;stroke:none;stroke-width:10.1616;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke fill markers"
|
||||||
|
id="rect17"
|
||||||
|
width="650.3949"
|
||||||
|
height="672.26007"
|
||||||
|
x="732.64203"
|
||||||
|
y="542.77356"
|
||||||
|
ry="169.38864"
|
||||||
|
transform="matrix(1,0,-0.2492194,0.96844705,0,0)" /><rect
|
||||||
|
style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:8.64022;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke fill markers"
|
||||||
|
id="rect18"
|
||||||
|
width="553.01849"
|
||||||
|
height="571.60999"
|
||||||
|
x="757.96472"
|
||||||
|
y="571.11993"
|
||||||
|
ry="144.02795"
|
||||||
|
transform="matrix(1,0,-0.2492194,0.96844705,0,0)" /><rect
|
||||||
|
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2.31831;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke fill markers"
|
||||||
|
id="rect19"
|
||||||
|
width="148.38416"
|
||||||
|
height="153.37257"
|
||||||
|
x="826.74255"
|
||||||
|
y="601.6474"
|
||||||
|
ry="72.254478"
|
||||||
|
transform="matrix(1,0,-0.2492194,0.96844705,0,0)" /><rect
|
||||||
|
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2.31831;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke fill markers"
|
||||||
|
id="rect24"
|
||||||
|
width="148.38416"
|
||||||
|
height="153.37257"
|
||||||
|
x="814.33466"
|
||||||
|
y="922.28735"
|
||||||
|
ry="72.254478"
|
||||||
|
transform="matrix(1,0,-0.2492194,0.96844705,0,0)" /></g></g></g></g><g
|
||||||
|
id="g28"
|
||||||
|
transform="matrix(0.52065651,0,0,0.52065651,1519.624,20.867626)"
|
||||||
|
style="stroke:none;stroke-opacity:1"><rect
|
||||||
|
style="opacity:1;fill:#0076fd;fill-opacity:1;stroke:none;stroke-width:19.3165;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;paint-order:stroke fill markers"
|
||||||
|
id="rect36"
|
||||||
|
width="1200.1665"
|
||||||
|
height="389.25839"
|
||||||
|
x="3188.9819"
|
||||||
|
y="69.372932"
|
||||||
|
ry="130.26378"
|
||||||
|
transform="matrix(1,0,-0.1503105,0.98863884,0,0)" /><g
|
||||||
|
id="g36"
|
||||||
|
style="fill:#000000;fill-opacity:1"
|
||||||
|
transform="translate(5951.8249,49.825586)"><text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:italic;font-variant:normal;font-weight:500;font-stretch:normal;font-size:54.9038px;line-height:1.4;font-family:Barlow;-inkscape-font-specification:'Barlow Medium Italic';writing-mode:lr-tb;direction:ltr;opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:13.726;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke fill markers"
|
||||||
|
x="148.1445"
|
||||||
|
y="149.99455"
|
||||||
|
id="text24"
|
||||||
|
transform="matrix(1.9206521,0,0,1.9206521,-2918.669,-40.079449)"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan24"
|
||||||
|
x="148.1445"
|
||||||
|
y="149.99455"
|
||||||
|
style="font-style:italic;font-variant:normal;font-weight:500;font-stretch:normal;font-family:Barlow;-inkscape-font-specification:'Barlow Medium Italic';fill:#000000;fill-opacity:1;stroke-width:13.726">josef@rokojori.com</tspan></text><g
|
||||||
|
id="g29"
|
||||||
|
transform="matrix(0.48281691,0,-0.09911318,0.48281691,-4222.0102,71.895415)"
|
||||||
|
style="fill:#000000;fill-opacity:1"><rect
|
||||||
|
style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;paint-order:stroke fill markers"
|
||||||
|
id="rect25"
|
||||||
|
width="7.6411281"
|
||||||
|
height="94.240585"
|
||||||
|
x="3170.2192"
|
||||||
|
y="81.069603"
|
||||||
|
ry="3.820564" /><rect
|
||||||
|
style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;paint-order:stroke fill markers"
|
||||||
|
id="rect26"
|
||||||
|
width="7.6411281"
|
||||||
|
height="94.240585"
|
||||||
|
x="43.533764"
|
||||||
|
y="-3288.8032"
|
||||||
|
ry="3.820564"
|
||||||
|
transform="rotate(90)" /><rect
|
||||||
|
style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;paint-order:stroke fill markers"
|
||||||
|
id="rect27"
|
||||||
|
width="7.6411281"
|
||||||
|
height="94.240585"
|
||||||
|
x="43.533764"
|
||||||
|
y="-3430.2549"
|
||||||
|
ry="3.820564"
|
||||||
|
transform="rotate(90)" /><rect
|
||||||
|
style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;paint-order:stroke fill markers"
|
||||||
|
id="rect28"
|
||||||
|
width="7.6411281"
|
||||||
|
height="94.240585"
|
||||||
|
x="3170.2192"
|
||||||
|
y="225.8365"
|
||||||
|
ry="3.820564" /></g><g
|
||||||
|
id="g35"
|
||||||
|
transform="matrix(-0.48281691,0,0.07417883,-0.48281691,-169.54742,355.53317)"
|
||||||
|
style="fill:#000000;fill-opacity:1"><rect
|
||||||
|
style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;paint-order:stroke fill markers"
|
||||||
|
id="rect32"
|
||||||
|
width="7.6411281"
|
||||||
|
height="94.240585"
|
||||||
|
x="3170.2192"
|
||||||
|
y="81.069603"
|
||||||
|
ry="3.820564" /><rect
|
||||||
|
style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;paint-order:stroke fill markers"
|
||||||
|
id="rect33"
|
||||||
|
width="7.6411281"
|
||||||
|
height="94.240585"
|
||||||
|
x="43.533764"
|
||||||
|
y="-3288.8032"
|
||||||
|
ry="3.820564"
|
||||||
|
transform="rotate(90)" /><rect
|
||||||
|
style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;paint-order:stroke fill markers"
|
||||||
|
id="rect34"
|
||||||
|
width="7.6411281"
|
||||||
|
height="94.240585"
|
||||||
|
x="43.533764"
|
||||||
|
y="-3430.2549"
|
||||||
|
ry="3.820564"
|
||||||
|
transform="rotate(90)" /><rect
|
||||||
|
style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;paint-order:stroke fill markers"
|
||||||
|
id="rect35"
|
||||||
|
width="7.6411281"
|
||||||
|
height="94.240585"
|
||||||
|
x="3170.2192"
|
||||||
|
y="225.8365"
|
||||||
|
ry="3.820564" /></g></g></g></g></svg>
|
||||||
|
After Width: | Height: | Size: 30 KiB |
|
|
@ -20,6 +20,18 @@
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
|
|
||||||
|
<div class="card">
|
||||||
|
<h3>Update Board</h3>
|
||||||
|
<p>
|
||||||
|
Review what was done in a session and keep the three boards accurate —
|
||||||
|
moving completed tasks and bugs to Done, adding new To Do items, and
|
||||||
|
recommending whether Update Outline is also needed.
|
||||||
|
</p>
|
||||||
|
<p style="margin-top:0.75rem">
|
||||||
|
<a href="update-board/index.html">Read the action</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<h3>Update History</h3>
|
<h3>Update History</h3>
|
||||||
<p>
|
<p>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,98 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Update Board — Roject</title>
|
||||||
|
<link rel="stylesheet" href="../../_assets_/styles.css">
|
||||||
|
<link rel="stylesheet" href="../../_assets_/nav.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="page">
|
||||||
|
|
||||||
|
<header>
|
||||||
|
<h1>Update Board</h1>
|
||||||
|
<p class="subtitle">Review what was done in this session and keep the three boards accurate.</p>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h2>Summary</h2>
|
||||||
|
|
||||||
|
<div class="card">
|
||||||
|
<p>
|
||||||
|
At an appropriate point in a working session, read the boards and the recent git
|
||||||
|
history, then propose which items should move, be added, or be removed.
|
||||||
|
Present the proposal to the user first. Only after approval, apply the changes.
|
||||||
|
Never move items silently.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h2>Steps</h2>
|
||||||
|
|
||||||
|
<div class="card">
|
||||||
|
<h3>Step 1 — Read the current state</h3>
|
||||||
|
<p>Read all three board files:</p>
|
||||||
|
<pre><code>workspace/boards/tasks.html
|
||||||
|
workspace/boards/bugs.html
|
||||||
|
workspace/boards/backlog.html</code></pre>
|
||||||
|
<p style="margin-top:0.75rem">
|
||||||
|
Also read the recent git log and the current session's history entry (if one exists)
|
||||||
|
to understand what was actually completed.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card">
|
||||||
|
<h3>Step 2 — Propose changes</h3>
|
||||||
|
<p>
|
||||||
|
Present a clear proposal to the user before touching any file.
|
||||||
|
For each proposed change, state the item name, the board, and the action:
|
||||||
|
</p>
|
||||||
|
<ul style="margin-top:0.5rem;padding-left:1.25rem;line-height:1.8">
|
||||||
|
<li><strong>Move to Done</strong> — task or bug that was completed this session</li>
|
||||||
|
<li><strong>Move to In Progress</strong> — task that was started but not finished</li>
|
||||||
|
<li><strong>Move to To Do</strong> — new task worth adding now</li>
|
||||||
|
<li><strong>Remove</strong> — item that is no longer relevant</li>
|
||||||
|
<li><strong>Add to Backlog</strong> — idea or future work surfaced during the session</li>
|
||||||
|
</ul>
|
||||||
|
<p style="margin-top:0.75rem">
|
||||||
|
Also note whether <strong>Update Outline</strong> should be run — recommend it
|
||||||
|
when new systems, subsystems, or conventions were added that the outline does not
|
||||||
|
yet describe.
|
||||||
|
</p>
|
||||||
|
<p style="margin-top:0.75rem">Wait for the user to confirm before continuing.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card">
|
||||||
|
<h3>Step 3 — Apply the changes</h3>
|
||||||
|
<p>
|
||||||
|
After the user approves the proposal, edit the board HTML files accordingly.
|
||||||
|
Use the correct colour class for each lane:
|
||||||
|
</p>
|
||||||
|
<ul style="margin-top:0.5rem;padding-left:1.25rem;line-height:1.8">
|
||||||
|
<li><code>class="green hide-content"</code> — Done (Tasks)</li>
|
||||||
|
<li><code>class="red hide-content"</code> — Critical (Bugs)</li>
|
||||||
|
<li><code>class="yellow hide-content"</code> — In Progress (Tasks) or Visual/UI/UX (Bugs)</li>
|
||||||
|
<li><code>class="blue hide-content"</code> — To Do (Tasks) or MVP (Backlog)</li>
|
||||||
|
<li><code>class="purple hide-content"</code> — Nice To Have (Backlog)</li>
|
||||||
|
<li><code>class="orange hide-content"</code> — To The Moon (Backlog)</li>
|
||||||
|
</ul>
|
||||||
|
<p style="margin-top:0.75rem">
|
||||||
|
Keep the Done lane in Tasks focused — if it grows beyond three or four items,
|
||||||
|
ask the user whether old Done items should be cleared out.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<footer>
|
||||||
|
Roject — update board
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<script>var NAV_ROOT = '../../';</script>
|
||||||
|
<script src="../../_assets_/nav-data.js"></script>
|
||||||
|
<script src="../../_assets_/nav.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -22,15 +22,6 @@
|
||||||
<div class="lane">
|
<div class="lane">
|
||||||
<div class="lane-header">Critical</div>
|
<div class="lane-header">Critical</div>
|
||||||
|
|
||||||
<task-item class="red hide-content">
|
|
||||||
<task-title>Projects Lookup/Editing Broken</task-title>
|
|
||||||
<task-content>
|
|
||||||
The projects a user can view should only be the ones the user created
|
|
||||||
or is a member of. Currently a second account can open and edit the content
|
|
||||||
of a project belonging to the first account.
|
|
||||||
</task-content>
|
|
||||||
</task-item>
|
|
||||||
|
|
||||||
<task-item class="red hide-content">
|
<task-item class="red hide-content">
|
||||||
<task-title>401 Not Handled in Data-Fetching Components</task-title>
|
<task-title>401 Not Handled in Data-Fetching Components</task-title>
|
||||||
<task-content>
|
<task-content>
|
||||||
|
|
@ -69,11 +60,28 @@
|
||||||
</task-content>
|
</task-content>
|
||||||
</task-item>
|
</task-item>
|
||||||
|
|
||||||
<task-item class="yellow hide-content">
|
</div>
|
||||||
|
|
||||||
|
<div class="lane">
|
||||||
|
<div class="lane-header">Done</div>
|
||||||
|
|
||||||
|
<task-item class="green hide-content">
|
||||||
|
<task-title>Projects Lookup/Editing Broken</task-title>
|
||||||
|
<task-content>
|
||||||
|
Fixed. GET /api/projects now filters to owner-or-member only. All file routes
|
||||||
|
(tree, read, write, rename, delete) go through checkAccess() in projectAccess.ts.
|
||||||
|
Delete and member-management routes verify ownership. A single memberMatchesUser()
|
||||||
|
function centralises the comparison so migrating from email to user ID later
|
||||||
|
requires changing one line.
|
||||||
|
</task-content>
|
||||||
|
</task-item>
|
||||||
|
|
||||||
|
<task-item class="green hide-content">
|
||||||
<task-title>Member List Shows Raw UUIDs</task-title>
|
<task-title>Member List Shows Raw UUIDs</task-title>
|
||||||
<task-content>
|
<task-content>
|
||||||
The member list UI displays raw UUIDs instead of usernames.
|
Fixed. Members are now stored by email (Option B interim). The member panel
|
||||||
Should resolve user IDs to display names via the auth service.
|
shows the owner's email first, then added members by email with their role badge.
|
||||||
|
Add-member form takes an email address and role; the member_type select is gone.
|
||||||
</task-content>
|
</task-content>
|
||||||
</task-item>
|
</task-item>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -56,10 +56,13 @@
|
||||||
</task-item>
|
</task-item>
|
||||||
|
|
||||||
<task-item class="blue hide-content">
|
<task-item class="blue hide-content">
|
||||||
<task-title>CI deploy email notification</task-title>
|
<task-title>Investigate Gitea webhook auto-deploy</task-title>
|
||||||
<task-content>
|
<task-content>
|
||||||
The /api/deploy endpoint should send an email notification after each successful
|
The webhook did not fire on the last two pushes to main. Check the Gitea
|
||||||
restart so deploys are visible without checking server logs.
|
webhook delivery log for the response code from /api/deploy. Also run
|
||||||
|
journalctl -u roject -n 100 on the server to see whether the endpoint
|
||||||
|
was reached at all. Most likely causes: signature mismatch, wrong branch
|
||||||
|
ref, or the deploy command failing silently.
|
||||||
</task-content>
|
</task-content>
|
||||||
</task-item>
|
</task-item>
|
||||||
|
|
||||||
|
|
@ -89,6 +92,16 @@
|
||||||
<div class="lane">
|
<div class="lane">
|
||||||
<div class="lane-header">Done</div>
|
<div class="lane-header">Done</div>
|
||||||
|
|
||||||
|
<task-item class="green hide-content">
|
||||||
|
<task-title>CI deploy email notification</task-title>
|
||||||
|
<task-content>
|
||||||
|
EmailService added to Roject (SMTP via Nodemailer, same credentials as rokojori-auth).
|
||||||
|
Startup email sent from startServer() listen callback; deploy email sent from
|
||||||
|
/api/deploy after signature verification passes. reportEmail defined as a static
|
||||||
|
field on EmailService.
|
||||||
|
</task-content>
|
||||||
|
</task-item>
|
||||||
|
|
||||||
<task-item class="green hide-content">
|
<task-item class="green hide-content">
|
||||||
<task-title>Electron Desktop App Shell</task-title>
|
<task-title>Electron Desktop App Shell</task-title>
|
||||||
<task-content>
|
<task-content>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,41 @@
|
||||||
|
[ Redesign of Roject ]
|
||||||
|
- Dashboard, Groups and Projects will be removed as html
|
||||||
|
- Effectively there will be:
|
||||||
|
a) "/" ( one for not logged in, one for logged in )
|
||||||
|
b) "/edit"
|
||||||
|
|
||||||
|
When the user is not logged in, the dynamic roject svg will be shown.
|
||||||
|
|
||||||
|
Else the overview of the projects is shown.
|
||||||
|
|
||||||
|
[ UX Update ]
|
||||||
|
Every theme will be able to edit the project by hovering and clicking on it.
|
||||||
|
Member management and project deletion are button overlays that only appear on the left side of the element.
|
||||||
|
On top left there will be an circle with an X for deletion, on bottom left there will be an icon for member management.
|
||||||
|
|
||||||
|
[ Different themes ]
|
||||||
|
The styling/themes of the entry point/project list will change dynamically everyday (or when the user clicks a button).
|
||||||
|
There will be one styling that matches the roject logo, which will be used when the user chooses to not have different themes.
|
||||||
|
The themes should be a little bit an interactive journey, with a strong focus on flash websites from around 2008-2010.
|
||||||
|
They will have big, bold fonts, strong colors, a lot of animations. We will create the themes one by one together.
|
||||||
|
We would start with two: The default one and the italic-neon one.
|
||||||
|
|
||||||
|
|
||||||
|
[ Default Theme ]
|
||||||
|
The default theme uses Barlow as font-family. Every project has one color that is chosen automatically.
|
||||||
|
It has one rounded rect left and the title is written in uppercase Barlow Bold Italic.
|
||||||
|
A mock is here: workspace/_assets_/themes/default.svg
|
||||||
|
|
||||||
|
[ Italic Neon heme ]
|
||||||
|
The theme uses Barlow as font-family. Every project has one color that is chosen automatically.
|
||||||
|
It has one procedural icon on the left and the title is written in uppercase Barlow Bold Italic.
|
||||||
|
Every element has a background skewed rounded rect that has a slight gradient from warmer to colder color from left to right.
|
||||||
|
The icon is a skewed rounded rect with a glow. Inside is a black skwed rounded rect and on top
|
||||||
|
there are 1-8 white skewed circles, which can be a third high/wide and can be placed to form a symbol/glyph, mainly non overlapping
|
||||||
|
with strong geometric relations, symmetry prefered.
|
||||||
|
A mock is here: workspace/_assets_/themes/italic-neon.svg
|
||||||
|
|
||||||
|
|
||||||
|
For both description try to use the information from the image, because the text can have missing information. For instance the colors
|
||||||
|
vary slightly in Italic Neon from warm (hue towards yellow, less satur, brighter ) to cold (hue towards blue, more satur, darker )
|
||||||
|
|
||||||
|
|
@ -208,13 +208,96 @@
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h2>Project home redesign</h2>
|
||||||
|
|
||||||
|
<div class="card">
|
||||||
|
<h3>Backend: user settings & server cleanup</h3>
|
||||||
|
<p>
|
||||||
|
Added <code>UserSetting</code> interface and <code>userSettings</code> CRUD module
|
||||||
|
to <code>source/server/db.ts</code> (persisted in <code>user_settings.json</code>).
|
||||||
|
Created <code>source/server/routes/userSettings.ts</code> with
|
||||||
|
<code>GET / PUT /api/user/settings</code> (requires auth).
|
||||||
|
Cleaned up <code>source/server/index.ts</code>: removed the groups router and
|
||||||
|
explicit <code>/</code> redirect; added <code>/edit</code> → <code>/editor.html</code>
|
||||||
|
redirect and wired the new userSettings route.
|
||||||
|
</p>
|
||||||
|
<div class="tags">
|
||||||
|
<span class="tag">user_settings.json</span>
|
||||||
|
<span class="tag">/api/user/settings</span>
|
||||||
|
<span class="tag">groups router removed</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card">
|
||||||
|
<h3>project-home component</h3>
|
||||||
|
<p>
|
||||||
|
New <code>source/pages/index.html</code> entry point loads Barlow 900 Italic
|
||||||
|
from Google Fonts and the <code>project-home</code> component.
|
||||||
|
<code>project-home</code> checks auth: logged-out → full-screen dark hero with
|
||||||
|
brand text and login link; logged-in → fetches user settings, reads
|
||||||
|
<code>settings.theme</code>, and dynamically imports the matching theme component
|
||||||
|
(<code>project-list-default</code> by default; <code>project-list-italic-neon</code>
|
||||||
|
planned).
|
||||||
|
</p>
|
||||||
|
<div class="tags">
|
||||||
|
<span class="tag">source/pages/index.html</span>
|
||||||
|
<span class="tag">project-home</span>
|
||||||
|
<span class="tag">dynamic import</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card">
|
||||||
|
<h3>project-list-default component (default theme)</h3>
|
||||||
|
<p>
|
||||||
|
Full default theme: dark radial-gradient background, fixed nav with Roject logo
|
||||||
|
(webp, inner area positioned at 70% scale) and a user-group element where hover
|
||||||
|
slides in "Log out" beneath the email — clicking anywhere triggers logout.
|
||||||
|
Each project row: 7em×7em rounded badge with project colour (hue from UUID via
|
||||||
|
31-hash), radial-gradient fill (centre at 51% alpha), Barlow 900 Italic skewed
|
||||||
|
name in project colour. Hover reveals delete (×) and members buttons over the
|
||||||
|
badge corners. A "New Project…" dashed-outline card sits first in the list and
|
||||||
|
opens a name dialog on click. Rows animate in staggered on load.
|
||||||
|
Back arrow in the editor updated to <code>/</code>.
|
||||||
|
</p>
|
||||||
|
<div class="tags">
|
||||||
|
<span class="tag">project-list-default</span>
|
||||||
|
<span class="tag">hueFromId (31-hash)</span>
|
||||||
|
<span class="tag">Barlow skew matrix</span>
|
||||||
|
<span class="tag">new-project dialog</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="decision">
|
||||||
|
<strong>Groups removed from the UI</strong>
|
||||||
|
<p>
|
||||||
|
The redesign spec removed groups entirely from the frontend and server routes.
|
||||||
|
The data layer (<code>groups</code> / <code>groupMembers</code> in db.ts) is
|
||||||
|
retained in case groups return later via rokojori-auth; only the router and all
|
||||||
|
UI references were deleted.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="decision">
|
||||||
|
<strong>Theme preference stored server-side, not in localStorage</strong>
|
||||||
|
<p>
|
||||||
|
JWT settings from rokojori-auth are read-only. A local
|
||||||
|
<code>user_settings.json</code> DB file with a generic
|
||||||
|
<code>Record<string, unknown></code> value map provides per-user persistence
|
||||||
|
for any app setting (starting with <code>theme</code>) without requiring changes
|
||||||
|
to the auth service.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
<h2>What's next</h2>
|
<h2>What's next</h2>
|
||||||
|
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<p>
|
<p>
|
||||||
See <a href="../../../../boards/tasks.html">Tasks board</a> for the current sprint.
|
Italic Neon theme (batch 2): skewed cards, warm→cold gradient, hand-crafted SVG
|
||||||
Local filesystem access and remote projects in Electron are the two active items.
|
pattern icons (13 files already drawn), daily auto-rotation + user toggle.
|
||||||
|
See <a href="../../../../boards/tasks.html">Tasks board</a> for the full sprint.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@
|
||||||
|
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<h3><a href="2026/07-July/14-Monday/index.html">Monday, 14 July 2026</a></h3>
|
<h3><a href="2026/07-July/14-Monday/index.html">Monday, 14 July 2026</a></h3>
|
||||||
<p>Electron desktop app shell — login window, JWT auth via API, Authorization header injection, token persistence, ROJECT_ROOT path fix, ELECTRON_RUN_AS_NODE workaround. Workspace boards system (Tasks/Bugs/Backlog) with custom task-item elements; outline shortened; workspace index quick orientation added.</p>
|
<p>Electron desktop app shell, workspace boards system. Full project home redesign: new <code>/</code> entry point, project-home component (hero / theme dispatch), default theme (logo nav, UUID-coloured badges, Barlow skewed names, new-project dialog), user settings backend, groups removed from UI.</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="card">
|
<div class="card">
|
||||||
|
|
|
||||||
|
|
@ -52,12 +52,30 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<h3>Groups, projects & storage</h3>
|
<h3>Projects & storage</h3>
|
||||||
<p>
|
<p>
|
||||||
Groups and projects with member management (viewer / editor / admin roles).
|
Projects with member management (viewer / editor / admin roles).
|
||||||
Each project gets a real directory on disk at <code>storage/<uuid>/root/</code>
|
Each project gets a real directory on disk at <code>storage/<uuid>/root/</code>
|
||||||
with a default <code>index.html</code> on creation. All data lives as JSON files
|
with a default <code>index.html</code> on creation. All data lives as JSON files
|
||||||
in <code>data/</code> — no external database.
|
in <code>build/data/db/</code> — no external database. Groups exist in the data
|
||||||
|
layer but have been removed from the UI; they may return later via rokojori-auth.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card">
|
||||||
|
<h3>Project home & theme system</h3>
|
||||||
|
<p>
|
||||||
|
The root <code>/</code> serves a new <code>index.html</code> entry point that
|
||||||
|
loads the <code>project-home</code> component. Logged-out users see a full-screen
|
||||||
|
dark hero; logged-in users get the active theme component dynamically imported.
|
||||||
|
The default theme (<code>project-list-default</code>) renders a dark
|
||||||
|
radial-gradient page with a Roject logo nav, per-project coloured badges (hue
|
||||||
|
from UUID via 31-hash, <code>hsl(h, 95%, 45%)</code>), Barlow 900 Italic
|
||||||
|
uppercase project names, hover-revealed delete / member buttons, and a dashed
|
||||||
|
"New Project" card that opens a name dialog on click. Theme preference is
|
||||||
|
persisted server-side in <code>user_settings.json</code> via
|
||||||
|
<code>GET / PUT /api/user/settings</code>. A second theme (Italic Neon) is
|
||||||
|
planned. <code>/edit</code> redirects to the existing <code>/editor.html</code>.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
@ -76,6 +94,20 @@
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="card">
|
||||||
|
<h3>Project access control</h3>
|
||||||
|
<p>
|
||||||
|
<code>source/server/projectAccess.ts</code> is the single point of truth for
|
||||||
|
ownership and membership checks. <code>GET /api/projects</code> filters to
|
||||||
|
projects the requesting user owns or is a member of. Every file route
|
||||||
|
(tree, read, write, rename, delete) calls <code>checkAccess()</code> before
|
||||||
|
touching the filesystem. Delete and member-management routes verify ownership.
|
||||||
|
Members are currently stored by email address (Option B interim);
|
||||||
|
<code>memberMatchesUser()</code> is the one line to change when migrating to
|
||||||
|
user-ID-based lookup via rokojori-auth.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<h3>AI chat & utilities</h3>
|
<h3>AI chat & utilities</h3>
|
||||||
<p>
|
<p>
|
||||||
|
|
@ -85,6 +117,9 @@
|
||||||
An <code>EmailService</code> facade (<code>source/server/email/</code>) provides
|
An <code>EmailService</code> facade (<code>source/server/email/</code>) provides
|
||||||
a <code>sendEmail()</code> entry point backed by a swappable <code>EmailSender</code>
|
a <code>sendEmail()</code> entry point backed by a swappable <code>EmailSender</code>
|
||||||
interface; the default is <code>SMTPEmailSender</code> (Nodemailer).
|
interface; the default is <code>SMTPEmailSender</code> (Nodemailer).
|
||||||
|
<code>EmailService.reportEmail</code> is a static field holding the admin
|
||||||
|
notification address; Roject sends emails on server startup and on each
|
||||||
|
verified deploy request.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue