Repository navigation
Expand file tree
/
Copy pathcrafts.html
More file actions
99 lines (98 loc) · 13.7 KB
/
Copy pathcrafts.html
File metadata and controls
99 lines (98 loc) · 13.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Novack’s Crafts — games, tools, and other things I make. Personal projects by Marcos, a game developer from Argentina.">
<meta name="theme-color" content="#f3f1e9">
<title>Novack’s Crafts — Games, tools, and other things I make</title>
<style>
:root{--paper:#f3f1e9;--ink:#252923;--muted:#64695e;--line:#d2d4c8;--red:#a93628}*{box-sizing:border-box}[hidden]{display:none!important}html{scroll-behavior:smooth;scroll-padding-top:30px}body{margin:0;background:var(--paper);color:var(--ink);font-family:Arial,Helvetica,sans-serif;line-height:1.6}a{color:inherit;text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:5px}button{font:inherit}a:focus-visible,button:focus-visible,summary:focus-visible{outline:3px solid var(--red);outline-offset:6px}.wrap{width:min(1280px,90%);margin:auto}.skip{position:absolute;top:-100px;background:var(--ink);color:white;padding:12px}.skip:focus{top:0;z-index:5}header{display:flex;align-items:center;justify-content:space-between;padding:28px 0;border-bottom:1px solid var(--line)}.brand{font-size:12px;letter-spacing:.22em;font-weight:700;display:flex;align-items:center;gap:12px}.mark{display:grid;place-items:center;width:32px;height:32px;border:1px solid var(--ink);font-family:Georgia,serif;font-size:22px;letter-spacing:0}nav{display:flex;gap:30px;font-size:13px}.eyebrow,.meta{font-family:monospace;font-size:11px;text-transform:uppercase;letter-spacing:.13em}.eyebrow{color:var(--red)}.hero{padding:70px 0 55px;display:grid;grid-template-columns:1.5fr 1fr;gap:60px;align-items:center}.hero h1{font-size:clamp(52px,6.7vw,94px);line-height:1.02;letter-spacing:-.065em;font-weight:500;margin:25px 0 28px}.hero h1 em{font-family:Georgia,serif;font-weight:400;color:var(--red)}.intro{max-width:430px;color:var(--muted);font-size:17px}.action{display:inline-flex;gap:35px;padding:13px 0;border-bottom:1px solid;margin-top:18px;font-size:13px;font-weight:700}.art{position:relative;border:1px solid var(--line);padding:20px;background:#e7e9dd}.art img{display:block;width:100%;aspect-ratio:1;object-fit:cover}.art-caption{display:flex;justify-content:space-between;gap:10px;margin-top:15px;font-family:monospace;font-size:10px;letter-spacing:.06em}.hero-bottom{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding:18px 0;color:var(--muted)}section{padding:75px 0;border-top:1px solid var(--line)}.section-head{display:flex;justify-content:space-between;align-items:end;gap:30px;margin-bottom:35px}h2{font-size:clamp(34px,4vw,52px);line-height:1.15;letter-spacing:-.045em;font-weight:500;margin:12px 0}h3{font-size:22px;letter-spacing:-.03em;font-weight:500;margin:0}.filters{display:flex;gap:8px;flex-wrap:wrap}.filters button{background:none;border:1px solid var(--line);border-radius:30px;padding:7px 17px;font-size:12px;cursor:pointer}.filters button[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:var(--paper)}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:38px 26px}.project img{width:100%;aspect-ratio:1;object-fit:cover;display:block;transition:transform .3s}.project figure{margin:0 0 16px;overflow:hidden;background:#e7e9dd}.project:hover img{transform:scale(1.025)}.project p{color:var(--muted);font-size:13px;margin:5px 0}.project .meta{color:var(--red);margin-top:12px}.project[hidden]{display:none}details{margin-top:45px;padding:20px 0;border-top:1px solid var(--line)}summary{cursor:pointer;font-size:14px}details ul{columns:2;padding-left:20px;color:var(--muted);font-size:14px}details li{padding:4px}.philosophy{display:grid;grid-template-columns:1fr 2fr;gap:70px}.budo{font-size:clamp(65px,10vw,145px);line-height:1;font-family:Georgia,serif;letter-spacing:-.07em;color:var(--red);margin:20px 0}.philosophy blockquote{font-family:Georgia,serif;font-size:clamp(28px,3vw,42px);line-height:1.3;margin:0 0 25px;letter-spacing:-.025em}.philosophy p{color:var(--muted);max-width:660px}.principles{display:flex;gap:20px;flex-wrap:wrap;border-top:1px solid var(--line);margin-top:30px;padding-top:20px;font-family:monospace;font-size:11px}.about{display:grid;grid-template-columns:1fr 1fr;gap:70px}.about p{color:var(--muted);font-size:16px;margin-top:0}.skills{display:flex;gap:9px;flex-wrap:wrap;margin-top:25px}.skills span{font-size:12px;border-bottom:1px solid var(--line);padding:5px 8px}.contact{background:var(--ink);color:var(--paper);padding:65px 5%;margin-top:20px}.contact-inner{max-width:1280px;margin:auto}.contact .eyebrow{color:#d7aa83}.contact h2{font-size:clamp(40px,6vw,75px);margin:20px 0}.contact .email{font-size:clamp(15px,2.2vw,28px);overflow-wrap:anywhere;border-bottom:1px solid #899080;padding-bottom:6px}.socials{display:flex;gap:30px;margin-top:40px;font-size:13px}footer{padding:25px 0;display:flex;justify-content:space-between;gap:20px;color:var(--muted);font-size:11px}.note{font-size:12px;color:var(--muted)}@media(max-width:800px){.hero{gap:30px}.brand{font-size:10px;letter-spacing:.1em}nav{gap:15px}.grid{grid-template-columns:repeat(2,1fr)}.philosophy,.about{gap:30px}.section-head{align-items:start;flex-direction:column}}@media(max-width:560px){header{align-items:start;gap:20px}.brand{max-width:155px}nav{gap:12px;font-size:12px;flex-wrap:wrap;justify-content:end}.hero{grid-template-columns:1fr;padding-top:40px}.hero h1{font-size:62px}.art{max-width:380px}.hero-bottom{font-size:9px;gap:20px}.grid{gap:28px 15px}.project h3{font-size:19px}.project p{font-size:12px}.project .meta{font-size:9px}.philosophy,.about{grid-template-columns:1fr}section{padding:50px 0}details ul{columns:1}.socials{gap:24px}footer{flex-direction:column;gap:6px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.project img{transition:none}}
.grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.project figure{background:#e7e9dd;padding:24px;border:1px solid var(--line)}
.project img{aspect-ratio:4/3;object-fit:contain}
.project p{max-width:480px;margin:12px 0;font-size:15px}
.project .meta{display:inline-block}.project h3 a{display:block}
.art{transform:rotate(2deg)}.art img{aspect-ratio:1.26;object-fit:contain}.art a{display:block}
.brand{letter-spacing:.04em;font-size:17px}.mark{flex-shrink:0}
.hero h1{font-family:Georgia,serif;letter-spacing:-.06em}
.hero h1 em{font-weight:400}.hero .intro{font-size:18px}
.contact p{color:#c7cbbd;max-width:480px}.socials a{font-size:18px}
@media(max-width:560px){.grid{grid-template-columns:1fr}.brand{font-size:14px}.hero h1{font-size:clamp(48px,12vw,62px)}.art{transform:none}.project figure{padding:20px}.socials{flex-wrap:wrap}.hero-bottom{flex-wrap:wrap}.art-caption{flex-wrap:wrap}}
</style>
</head>
<body>
<a class="skip" href="#main">Skip to content</a>
<div class="wrap">
<header>
<a class="brand" href="#" aria-label="Novack’s Crafts home"><span class="mark" aria-hidden="true">n</span>Novack’s Crafts</a>
<nav aria-label="Main navigation"><a href="#work">Creations</a><a href="#approach">Craft</a><a href="#about">About</a></nav>
</header>
<main id="main">
<div class="hero">
<div><div class="eyebrow">The personal workshop of Marcos / Novack</div>
<h1>Games, tools,<br>and <em>other things</em><br>I make.</h1>
<p class="intro">A place for my own creations. Useful little tools, playable ideas, and things made for the joy of figuring them out.</p>
<a class="action" href="#work">Take a look around <span aria-hidden="true">↓</span></a></div>
<div class="art"><a href="https://novack.itch.io/sumocruisers" aria-label="Explore the SumoCruisers prototype on itch.io"><img src="assets/sumocruisers.jpg" alt="SumoCruisers artwork: a space cruiser beside a glowing planet" width="315" height="250" fetchpriority="high"></a><div class="art-caption"><span>FROM THE WORKSHOP</span><span>SUMOCRUISERS / PROTOTYPE</span></div></div>
</div>
<div class="hero-bottom meta"><span>Made with curiosity · From Argentina</span><span>Games / Tools / Experiments</span></div>
<section id="work">
<div class="section-head"><div><div class="eyebrow">01 / The shelf</div><h2>Things I’ve made.</h2></div>
<div class="filters" aria-label="Filter creations" hidden><button type="button" data-filter="all" aria-pressed="true">Everything</button><button type="button" data-filter="game" aria-pressed="false">Games</button><button type="button" data-filter="tool" aria-pressed="false">Tools</button></div></div>
<div class="grid">
<article class="project" data-type="tool">
<figure><a href="https://novack.itch.io/google-sheets-for-unity" aria-label="Explore Google Sheets for Unity"><img src="assets/google-sheets-for-unity.jpg" alt="Google Sheets for Unity artwork" loading="lazy" width="512" height="512"></a></figure>
<div class="meta">Tool / Unity + Google Drive</div><h3><a href="https://novack.itch.io/google-sheets-for-unity">Google Sheets for Unity ↗</a></h3>
<p>A bridge between Unity and Google Sheets. Read and write spreadsheet data, work with Drive files, and bring familiar tools into a game’s workflow.</p>
<a class="meta" href="https://novack.itch.io/google-sheets-for-unity">Explore the tool on itch.io ↗</a></article>
<article class="project" data-type="game">
<figure><a href="https://novack.itch.io/sumocruisers" aria-label="Explore SumoCruisers"><img src="assets/sumocruisers.jpg" alt="SumoCruisers space strategy prototype artwork" loading="lazy" width="315" height="250"></a></figure>
<div class="meta">Game / Strategy prototype</div><h3><a href="https://novack.itch.io/sumocruisers">SumoCruisers ↗</a></h3>
<p>One cruiser against another. A small experiment in real-time strategy, with short battles and time as your resource. Production, design, and development by me.</p>
<a class="meta" href="https://novack.itch.io/sumocruisers">Play the prototype on itch.io ↗</a></article>
<article class="project" data-type="tool">
<figure><a href="https://novack.itch.io/cloudconsole" aria-label="Explore Cloud Console for Unity"><img src="assets/cloudconsole.jpg" alt="Cloud Console for Unity artwork" loading="lazy" width="1024" height="768"></a></figure>
<div class="meta">Tool / Remote debugging</div><h3><a href="https://novack.itch.io/cloudconsole">Cloud Console for Unity ↗</a></h3>
<p>A way to read Unity’s console output from a web browser. Connect a running game to a service hosted on Google Drive and follow its logs remotely.</p>
<a class="meta" href="https://novack.itch.io/cloudconsole">Explore the tool on itch.io ↗</a></article>
<article class="project" data-type="tool">
<figure><a href="https://novack.itch.io/borderless" aria-label="Explore Borderless Unity Window"><img src="assets/borderless.jpg" alt="Borderless Unity Window artwork" loading="lazy" width="1024" height="734"></a></figure>
<div class="meta">Tool / Unity on Windows</div><h3><a href="https://novack.itch.io/borderless">Borderless Unity Window ↗</a></h3>
<p>A small package for frameless Unity apps on Windows. Drag, minimize, maximize, and restore the window from code.</p>
<a class="meta" href="https://novack.itch.io/borderless">Explore the tool on itch.io ↗</a></article>
</div><p id="filter-status" class="note" role="status" aria-live="polite"></p>
</section>
<section class="philosophy" id="approach">
<div><div class="eyebrow">02 / A little philosophy</div><h2 class="budo">Craft.</h2><span class="meta">Curiosity, followed through.</span></div>
<div><blockquote>Make something.<br>Understand it.<br>Make it a little better.</blockquote>
<p>I like the space where an idea becomes something you can use or play. Sometimes that means a game. Sometimes it means a small tool that makes another task easier.</p>
<p>Craft, to me, is in the attention: asking questions, keeping the code simple, and taking the time to understand what I’m making. Practice and curiosity belong together.</p>
<div class="principles"><span>01 / Explore</span><span>02 / Make</span><span>03 / Refine</span></div></div>
</section>
<section class="about" id="about">
<div><div class="eyebrow">03 / The person at the desk</div><h2>Hi, I’m Marcos.<br>You can call me Novack.</h2></div>
<div><p>I’m a game developer from Argentina. I work with gameplay, integrations, and developer tools, mostly in Unity and C#.</p>
<p>This is the home for my own projects: a place to collect the things I make, from practical utilities to playable experiments.</p>
<p>I like to keep code simple—as a teamwork skill, and as a personal preference.</p>
<p>For professional work and game development services, visit <a href="https://www.cyberiansoftware.com.ar/" style="text-decoration:underline;text-underline-offset:4px">Cyberian Software ↗</a>.</p></div>
</section>
</main></div>
<section class="contact" id="contact"><div class="contact-inner"><div class="eyebrow">04 / Keep exploring</div><h2>Elsewhere on<br>the internet.</h2><p>Play something, find a useful tool, or take a look at the code.</p><div class="socials"><a href="https://novack.itch.io/">itch.io ↗</a><a href="https://github.com/Novack">GitHub ↗</a><a href="mailto:marcos@cyberiansoftware.com.ar">Say hello ↗</a></div></div></section>
<footer class="wrap"><span>© <span id="year">2026</span> Novack’s Crafts · Made by Marcos / Novack</span><a href="#">Back to top ↑</a></footer>
<script>
const filters = document.querySelector('.filters');
filters.hidden = false;
filters.querySelectorAll('button').forEach(button => button.addEventListener('click', () => {
filters.querySelectorAll('button').forEach(item => item.setAttribute('aria-pressed', String(item === button)));
let count = 0;
document.querySelectorAll('.project').forEach(project => {
project.hidden = button.dataset.filter !== 'all' && project.dataset.type !== button.dataset.filter;
if (!project.hidden) count++;
});
document.getElementById('filter-status').textContent = `${count} projects shown`;
}));
document.getElementById('year').textContent = new Date().getFullYear();
</script>
</body>
</html>