This commit is contained in:
2026-10-17 14:40:21 +07:00
parent e9a6814ebb
commit 00bd14bac1
7 changed files with 122 additions and 6 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 318 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 294 KiB

+17 -6
View File
@@ -5,17 +5,26 @@
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="gman-world — уютная техническая сборка Minecraft: механизмы Create, аэронавтика и виноделие."> <meta name="description" content="gman-world — уютная техническая сборка Minecraft: механизмы Create, аэронавтика и виноделие.">
<title>gman-world — Minecraft</title> <title>gman-world — Minecraft</title>
<link rel="stylesheet" href="/minecraft/style.css?v=20261017-workbench"> <link rel="stylesheet" href="/minecraft/style.css?v=20261017-steam">
<script src="/minecraft/app.js?v=20261017-workbench" defer></script> <script src="/minecraft/app.js?v=20261017-steam" defer></script>
<script src="/minecraft/motion.js?v=20261017-steam" defer></script>
</head> </head>
<body> <body>
<svg class="machine-definitions" aria-hidden="true" xmlns="http://www.w3.org/2000/svg"><defs>
<g id="cog"><path d="M42 2h16l3 12 11 5 12-6 11 11-6 12 5 11 12 3v16l-12 3-5 11 6 12-11 11-12-6-11 5-3 12H42l-3-12-11-5-12 6L5 92l6-12-5-11-12-3V50l12-3 5-11-6-12 11-11 12 6 11-5z" transform="translate(6 -6) scale(.9)" fill="#ae693a" stroke="#e2b878" stroke-width="3"/><circle cx="50" cy="50" r="27" fill="#302b23" stroke="#d3a361" stroke-width="7"/><path d="M50 24v52M24 50h52M32 32l36 36M32 68l36-36" stroke="#b67b44" stroke-width="8"/><circle cx="50" cy="50" r="10" fill="#e2b878" stroke="#634126" stroke-width="3"/></g>
<g id="wheel"><circle cx="50" cy="50" r="42" fill="#30281c" stroke="#c98b47" stroke-width="7"/><circle cx="50" cy="50" r="30" fill="none" stroke="#875b32" stroke-width="5"/><path d="M50 8v84M8 50h84M20 20l60 60M20 80l60-60" stroke="#c58b4b" stroke-width="6"/><path d="M38 4h24v10H38zM86 38h10v24H86zM38 86h24v10H38zM4 38h10v24H4zM13 13h20v12H13zM75 13h12v20H75zM67 75h20v12H67zM13 67h12v20H13z" fill="#815332" stroke="#dda25d" stroke-width="2"/><circle cx="50" cy="50" r="9" fill="#e6bb77" stroke="#563822" stroke-width="4"/></g>
<g id="propeller"><path d="M46 45C10 37 5 19 18 15c15-5 27 14 32 29C58 9 77 4 82 18c4 14-13 26-31 32 36 9 41 27 27 32-14 4-26-13-29-31-9 36-27 41-31 27-5-14 12-26 27-29z" fill="#cfb37a" stroke="#785232" stroke-width="3"/><circle cx="50" cy="50" r="9" fill="#b5703e" stroke="#f0c589" stroke-width="3"/></g>
</defs></svg>
<main> <main>
<div class="side-machine side-machine-left" aria-hidden="true"><div class="chain-drive"></div><svg class="rotor side-cog" viewBox="0 0 100 100"><use href="#cog"/></svg><svg class="rotor reverse side-cog-small" viewBox="0 0 100 100"><use href="#cog"/></svg><div class="gauge"><i class="needle"></i></div></div>
<div class="side-machine side-machine-right" aria-hidden="true"><div class="pipe vertical-pipe"></div><div class="valve"></div><div class="gauge"><i class="needle"></i></div><div class="steam"><i></i><i></i><i></i></div></div>
<nav class="topbar" aria-label="Главная навигация"> <nav class="topbar" aria-label="Главная навигация">
<a class="brand" href="/">CRABS GAMES<span> / </span>GMAN-WORLD</a> <a class="brand" href="/">CRABS GAMES<span> / </span>GMAN-WORLD</a>
<a class="nav-link" href="#installation">Как зайти?</a> <div class="nav-actions"><a class="nav-link" href="#installation">Как зайти?</a><button id="motion-toggle" class="button" type="button" aria-pressed="false" hidden>Остановить механизмы</button></div>
</nav> </nav>
<header class="hero"> <header class="hero">
<div class="hero-machine" aria-hidden="true"><div class="pipe machine-pipe"></div><div class="gauge"><i class="needle"></i></div><svg class="rotor waterwheel" viewBox="0 0 100 100"><use href="#wheel"/></svg><svg class="rotor hero-cog" viewBox="0 0 100 100"><use href="#cog"/></svg><svg class="rotor reverse hero-cog-small" viewBox="0 0 100 100"><use href="#cog"/></svg><div class="steam"><i></i><i></i><i></i></div><span class="machine-caption">ВОДЯНОЙ ПРИВОД / CREATE</span></div>
<div class="hero-copy"> <div class="hero-copy">
<p class="eyebrow">ТВОЯ МАСТЕРСКАЯ В MINECRAFT</p> <p class="eyebrow">ТВОЯ МАСТЕРСКАЯ В MINECRAFT</p>
<h1>GMAN-WORLD</h1> <h1>GMAN-WORLD</h1>
@@ -31,15 +40,17 @@
</div> </div>
</header> </header>
<div class="pipe pipe-bridge" aria-hidden="true"><span class="valve"></span><span class="pipe-joint"></span><div class="steam"><i></i><i></i><i></i></div></div>
<section class="world" aria-labelledby="world-title"> <section class="world" aria-labelledby="world-title">
<div class="section-heading"><p class="eyebrow">ЧТО БУДЕМ КРАФТИТЬ?</p><h2 id="world-title">Верстак приключений</h2></div> <div class="section-heading"><p class="eyebrow">ЧТО БУДЕМ КРАФТИТЬ?</p><h2 id="world-title">Верстак приключений</h2></div>
<div class="world-grid"> <div class="world-grid">
<article class="theme mechanics"><span class="theme-symbol" aria-hidden="true"><svg viewBox="0 0 16 16" width="48" height="48" aria-hidden="true" shape-rendering="crispEdges"><path fill="#69442c" d="M6 0h4v3h3v3h3v4h-3v3h-3v3H6v-3H3v-3H0V6h3V3h3z"/><path fill="#d7a358" d="M5 4h6v1h1v6h-1v1H5v-1H4V5h1z"/><path fill="#483523" d="M6 6h4v4H6z"/></svg></span><p class="eyebrow">КРУТИМ</p><h3>Механизмы Create</h3><p>Начни с шестерёнки. А потом попробуй остановиться — мастерская сама себя не построит!</p></article> <article class="theme mechanics"><div class="scene"><img src="/minecraft/create-foundry.webp" width="1672" height="941" loading="lazy" decoding="async" alt="Медные котлы, шестерни и конвейеры в блочной мастерской."><svg class="rotor card-rotor" viewBox="0 0 100 100" aria-hidden="true"><use href="#cog"/></svg></div><span class="theme-symbol" aria-hidden="true"><svg viewBox="0 0 16 16" width="48" height="48" aria-hidden="true" shape-rendering="crispEdges"><path fill="#69442c" d="M6 0h4v3h3v3h3v4h-3v3h-3v3H6v-3H3v-3H0V6h3V3h3z"/><path fill="#d7a358" d="M5 4h6v1h1v6h-1v1H5v-1H4V5h1z"/><path fill="#483523" d="M6 6h4v4H6z"/></svg></span><p class="eyebrow">КРУТИМ</p><h3>Механизмы Create</h3><p>Начни с шестерёнки. А потом попробуй остановиться — мастерская сама себя не построит!</p></article>
<article class="theme aviation"><span class="theme-symbol" aria-hidden="true"><svg viewBox="0 0 16 16" width="48" height="48" aria-hidden="true" shape-rendering="crispEdges"><path fill="#dbcaa0" d="M1 1h5v3h1v3h2V4h1V1h5v5h-3v1H9v2h3v1h3v5h-5v-3H9V9H7v3H6v3H1v-5h3V9h3V7H4V6H1z"/><path fill="#8d5632" d="M6 6h4v4H6z"/></svg></span><p class="eyebrow">ЛЕТАЕМ</p><h3>Аэронавтика</h3><p>Засиделся у верстака? Пора наверх. Там облака и отличный вид на твою базу.</p></article> <article class="theme aviation"><div class="scene"><img src="/minecraft/airship-dock.webp" width="1672" height="941" loading="lazy" decoding="async" alt="Дирижабль у медной причальной башни над горами."><svg class="rotor card-rotor" viewBox="0 0 100 100" aria-hidden="true"><use href="#propeller"/></svg></div><span class="theme-symbol" aria-hidden="true"><svg viewBox="0 0 16 16" width="48" height="48" aria-hidden="true" shape-rendering="crispEdges"><path fill="#dbcaa0" d="M1 1h5v3h1v3h2V4h1V1h5v5h-3v1H9v2h3v1h3v5h-5v-3H9V9H7v3H6v3H1v-5h3V9h3V7H4V6H1z"/><path fill="#8d5632" d="M6 6h4v4H6z"/></svg></span><p class="eyebrow">ЛЕТАЕМ</p><h3>Аэронавтика</h3><p>Засиделся у верстака? Пора наверх. Там облака и отличный вид на твою базу.</p></article>
<article class="theme winery"><span class="theme-symbol" aria-hidden="true"><svg viewBox="0 0 16 16" width="48" height="48" aria-hidden="true" shape-rendering="crispEdges"><path fill="#5e8441" d="M7 0h2v3h4v2H9v2H7V5H3V3h4z"/><path fill="#663c7a" d="M3 6h4v4H3zm6 0h4v4H9zM6 9h4v4H6zm1 4h3v3H7z"/><path fill="#a781b5" d="M3 6h2v1H3zm6 0h2v1H9zM6 9h2v1H6z"/></svg></span><p class="eyebrow">ВЫРАЩИВАЕМ</p><h3>Виноделье</h3><p>Пока механизмы работают, займись виноградником. И оставь место под бочки!</p></article> <article class="theme winery"><div class="scene"><img src="/minecraft/mechanical-winery.webp" width="1672" height="941" loading="lazy" decoding="async" alt="Механическая винодельня с медными чанами, бочками и виноградником."><div class="steam" aria-hidden="true"><i></i><i></i><i></i></div></div><span class="theme-symbol" aria-hidden="true"><svg viewBox="0 0 16 16" width="48" height="48" aria-hidden="true" shape-rendering="crispEdges"><path fill="#5e8441" d="M7 0h2v3h4v2H9v2H7V5H3V3h4z"/><path fill="#663c7a" d="M3 6h4v4H3zm6 0h4v4H9zM6 9h4v4H6zm1 4h3v3H7z"/><path fill="#a781b5" d="M3 6h2v1H3zm6 0h2v1H9zM6 9h2v1H6z"/></svg></span><p class="eyebrow">ВЫРАЩИВАЕМ</p><h3>Виноделье</h3><p>Пока механизмы работают, займись виноградником. И оставь место под бочки!</p></article>
</div> </div>
</section> </section>
<div class="pipe pipe-bridge lower-pipe" aria-hidden="true"><span class="valve"></span><span class="pipe-joint"></span></div>
<div id="installation" class="downloads"> <div id="installation" class="downloads">
<section aria-labelledby="build-title"> <section aria-labelledby="build-title">
<p class="eyebrow">НОВЫЙ ИГРОК</p> <p class="eyebrow">НОВЫЙ ИГРОК</p>
Binary file not shown.

After

Width:  |  Height:  |  Size: 347 KiB

+15
View File
@@ -0,0 +1,15 @@
const motionToggle = document.getElementById('motion-toggle');
const reducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)');
function setMotionPaused(isPaused) {
document.documentElement.classList.toggle('motion-running', !isPaused);
motionToggle.setAttribute('aria-pressed', String(isPaused));
motionToggle.textContent = isPaused ? 'Запустить механизмы' : 'Остановить механизмы';
}
setMotionPaused(reducedMotion.matches);
motionToggle.hidden = false;
motionToggle.addEventListener('click', () => {
setMotionPaused(document.documentElement.classList.contains('motion-running'));
});
reducedMotion.addEventListener('change', event => setMotionPaused(event.matches));
Binary file not shown.

After

Width:  |  Height:  |  Size: 291 KiB

+90
View File
@@ -89,3 +89,93 @@ footer span { color: #c5c1ac; font-family: monospace; }
.hero { min-height: 720px; padding: 56px; } .hero { min-height: 720px; padding: 56px; }
.hero::before { background: linear-gradient(90deg, #151a14e8, #151a14a3 43%, #151a140d 75%); } .hero::before { background: linear-gradient(90deg, #151a14e8, #151a14a3 43%, #151a140d 75%); }
} }
/* Copper fittings and moving machinery are decorative layers, clear of controls. */
.machine-definitions { position: absolute; width: 0; height: 0; overflow: hidden; }
main { position: relative; }
body { background-color: #201d19; }
.nav-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; }
button { cursor: pointer; }
#motion-toggle { font-size: 8px; padding: 12px; }
.topbar, .join-panel, .theme, .downloads section { position: relative; border-color: #3e281a; box-shadow: inset 3px 3px #bc8c56, inset -3px -3px #573820, 5px 5px #0007; }
.topbar::after, .join-panel::after, .theme::after, .downloads section::after { content: ''; position: absolute; inset: 7px; pointer-events: none; background: radial-gradient(circle at 4px 4px, #ffe0a4 0 1px, #a66a3c 2px 3px, #302116 4px, transparent 5px) top left / 10px 10px no-repeat, radial-gradient(circle at 4px 4px, #ffe0a4 0 1px, #a66a3c 2px 3px, #302116 4px, transparent 5px) top right / 10px 10px no-repeat, radial-gradient(circle at 4px 4px, #e5bd79 0 1px, #8a512d 2px 3px, #302116 4px, transparent 5px) bottom left / 10px 10px no-repeat, radial-gradient(circle at 4px 4px, #e5bd79 0 1px, #8a512d 2px 3px, #302116 4px, transparent 5px) bottom right / 10px 10px no-repeat; }
.hero { background-image: url('/minecraft/steam-workshop.webp'); background-position: center; overflow: hidden; }
.hero-copy { position: relative; z-index: 2; }
.join-panel { background: linear-gradient(125deg, #544536f5, #282e28fa); border-width: 6px; }
.hero-machine { position: absolute; right: 3%; bottom: 24px; width: 350px; height: 300px; pointer-events: none; z-index: 1; background: linear-gradient(0deg, #141815cc, transparent); }
.rotor { animation: machine-turn 28s linear infinite; transform-origin: center; transform-box: fill-box; filter: drop-shadow(4px 5px 2px #0009); }
.reverse { animation-direction: reverse; }
.waterwheel { position: absolute; width: 230px; height: 230px; right: 12px; bottom: 20px; animation-duration: 38s; }
.hero-cog { position: absolute; width: 100px; height: 100px; left: 6px; bottom: 20px; }
.hero-cog-small { position: absolute; width: 70px; height: 70px; left: 68px; bottom: 92px; animation-duration: 19.6s; }
.machine-caption { position: absolute; right: 8px; bottom: 0; font: 8px/1.6 var(--pixel); color: #e9bd7a; text-shadow: 2px 2px #000; }
.pipe { position: relative; height: 24px; border: 3px solid #492c1b; background: linear-gradient(#634124, #d5a067 24%, #a96538 50%, #5f3c26 85%, #9e6439); box-shadow: 0 5px #0005, inset 0 1px #f8cf96; pointer-events: none; }
.pipe-bridge { margin: -20px 18px 32px; }
.pipe-joint, .pipe::before, .pipe::after { content: ''; position: absolute; top: -8px; height: 34px; width: 14px; border: 3px solid #492e1d; background: linear-gradient(90deg, #9a6038, #e5b57d 50%, #6d4026); box-shadow: 2px 2px #0004; }
.pipe::before { left: 12%; }
.pipe::after { right: 12%; }
.pipe-joint { left: 65%; }
.valve { position: absolute; left: 32%; top: -20px; width: 44px; height: 44px; border: 6px solid #ae633c; border-radius: 50%; background: radial-gradient(circle, #d7a16a 0 4px, transparent 5px), linear-gradient(90deg, transparent 43%, #ae633c 43% 57%, transparent 57%), linear-gradient(transparent 43%, #ae633c 43% 57%, transparent 57%); box-shadow: 2px 3px #281a12; }
.machine-pipe { position: absolute; left: 0; right: 0; top: 48px; }
.gauge { position: relative; width: 70px; height: 70px; border: 7px solid #a57040; border-radius: 50%; background: repeating-conic-gradient(from -120deg, #5a4630 0deg 3deg, transparent 3deg 30deg), #ddcea6; box-shadow: inset 0 0 0 5px #eedcb4, 0 0 0 3px #35261b, 4px 5px #0005; }
.gauge::after { content: ''; position: absolute; width: 10px; height: 10px; border-radius: 50%; background: #73432a; left: calc(50% - 5px); top: calc(50% - 5px); }
.needle { position: absolute; width: 24px; height: 3px; left: 50%; top: calc(50% - 1px); background: #8a3429; transform-origin: left center; animation: pressure 7s ease-in-out infinite alternate; }
.hero-machine > .gauge { position: absolute; top: 0; left: 95px; }
.steam { position: absolute; width: 80px; height: 130px; bottom: 35px; right: 16px; pointer-events: none; }
.steam i { position: absolute; width: 30px; height: 30px; left: 20px; bottom: 0; border-radius: 35%; background: #f0e7cd; opacity: 0; animation: steam-rise 5s ease-out infinite; }
.steam i:nth-child(2) { animation-delay: -1.7s; left: 10px; }
.steam i:nth-child(3) { animation-delay: -3.4s; left: 30px; }
.hero-machine > .steam { top: -100px; left: 0; }
.pipe-bridge > .steam { bottom: 10px; right: 22%; }
.world-grid { gap: 24px; }
.theme { padding: 18px; background-image: linear-gradient(135deg, #9c69451a, #0002); }
.scene { position: relative; margin: -2px -2px 22px; border: 3px solid #291e15; box-shadow: 0 0 0 2px #ad794b; overflow: hidden; }
.scene img { display: block; width: 100%; height: auto; aspect-ratio: 3 / 2; object-fit: cover; }
.card-rotor { position: absolute; width: 72px; height: 72px; bottom: 8px; right: 10px; background: #29261caa; border: 3px solid #a77a44; border-radius: 50%; }
.aviation .card-rotor { animation-duration: 4s; }
.theme-symbol { width: 52px; height: 52px; border-width: 3px; float: right; margin: 0 0 10px 10px; }
.theme-symbol svg { width: 36px; height: 36px; }
.theme .eyebrow { margin-top: 0; padding-top: 12px; }
.theme h3 { clear: both; }
.lower-pipe { margin-top: 46px; margin-bottom: 40px; }
.downloads section { background-color: #454b43; border-width: 6px; }
.side-machine { display: none; position: absolute; top: 240px; width: 75px; height: 570px; pointer-events: none; }
.side-machine-left { left: -64px; }
.side-machine-right { right: -64px; }
.side-cog { position: absolute; width: 85px; height: 85px; top: 80px; left: -12px; }
.side-cog-small { position: absolute; width: 58px; height: 58px; top: 146px; left: 26px; animation-duration: 19s; }
.side-machine-left > .gauge { position: absolute; top: 260px; left: 0; }
.chain-drive { position: absolute; top: 0; left: 17px; height: 430px; width: 35px; border: 7px solid #82552f; border-radius: 22px; background: repeating-linear-gradient(#b8a07b 0 6px, #292821 6px 14px); background-size: 100% 14px; box-shadow: inset 0 0 0 5px #211b15, 3px 3px #0007; animation: chain-run 1.5s linear infinite; }
.vertical-pipe { position: absolute; left: 20px; top: 30px; width: 24px; height: 500px; background: linear-gradient(90deg, #634124, #d5a067 24%, #a96538 50%, #5f3c26 85%, #9e6439); }
.vertical-pipe::before, .vertical-pipe::after { width: 36px; height: 14px; left: -9px; }
.vertical-pipe::before { top: 80px; }
.vertical-pipe::after { top: 410px; }
.side-machine-right > .valve { top: 100px; left: 10px; }
.side-machine-right > .gauge { top: 210px; left: 0; }
.side-machine-right > .steam { top: -90px; right: 0; }
@keyframes machine-turn { to { transform: rotate(360deg); } }
@keyframes pressure { from { transform: rotate(-130deg); } to { transform: rotate(-50deg); } }
@keyframes steam-rise { 0% { opacity: 0; transform: translate(0, 0) scale(.4); } 15% { opacity: .4; } 100% { opacity: 0; transform: translate(15px, -120px) scale(2.2); } }
@keyframes chain-run { to { background-position-y: -28px; } }
.rotor, .needle, .steam i, .chain-drive { animation-play-state: paused; }
html.motion-running .rotor, html.motion-running .needle, html.motion-running .steam i, html.motion-running .chain-drive { animation-play-state: running; }
@media (max-width: 1099px) {
.hero-machine { width: 180px; height: 170px; right: 12px; bottom: 8px; opacity: .85; }
.waterwheel { width: 130px; height: 130px; right: 0; bottom: 15px; }
.hero-cog { width: 54px; height: 54px; left: 0; bottom: 10px; }
.hero-cog-small { width: 38px; height: 38px; left: 31px; bottom: 48px; }
.hero-machine > .gauge, .hero-machine > .machine-pipe, .machine-caption { display: none; }
.hero-machine > .steam { top: 0; }
.hero { padding-bottom: 170px; }
}
@media (max-width: 699px) {
.steam i:nth-child(3), .pipe-bridge > .steam { display: none; }
.pipe-bridge { margin-left: 8px; margin-right: 8px; }
.scene { margin-bottom: 18px; }
#motion-toggle { font-size: 7px; }
}
@media (min-width: 1580px) { .side-machine { display: block; } }
@media (prefers-reduced-motion: reduce) {
html:not(.motion-running) .rotor, html:not(.motion-running) .needle, html:not(.motion-running) .steam i, html:not(.motion-running) .chain-drive { animation: none; }
.needle { transform: rotate(-90deg); }
}