build step for less repetition

This commit is contained in:
bronku 2026-05-13 23:56:18 +02:00
parent d894860000
commit 41884e7386
23 changed files with 1791 additions and 132 deletions

92
templates/footer.gohtml Normal file
View file

@ -0,0 +1,92 @@
{{define "footer"}}
<footer id="footer">
<div>
<div>
<img alt="logo" src="images/logo.png" style="width: 14rem"/>
<p>Pasja, natura i domowy smak w każdym kawałku ciasta.</p>
</div>
</div>
<div>
<h4>Lokalizacja</h4>
<ul>
<li>
<a href="https://maps.app.goo.gl/YD3DWUNKBoweKdpb7">
<div>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"
stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"
class="lucide lucide-map-pin-icon lucide-map-pin">
<path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"/>
<circle cx="12" cy="10" r="3"/>
</svg>
<span>Pracownia</span></div>
<p>ul. Polna 7k<br>
83-314 Somonino</p>
</a>
</li>
<li>
<a href="https://maps.app.goo.gl/568ax4QLJnXvqbhD9">
<div>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"
stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"
class="lucide lucide-map-pin-icon lucide-map-pin">
<path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"/>
<circle cx="12" cy="10" r="3"/>
</svg>
<span>Kawiarnia</span></div>
<p>ul. Dworcowa 3a<br>
83-300 Kartuzy</p>
</a>
</li>
</ul>
</div>
<div>
<h4>Kontakt</h4>
<ul>
<li>
<a href="https://facebook.com/piekarnikgosi">
<svg xmlns="http://www.w3.org/2000/svg" width="200" height="200" viewBox="0 0 48 48">
<mask id="ipSFacebook0">
<path fill="#fff" stroke="#fff" stroke-linejoin="round" stroke-width="3.8"
d="M36 12.6h-6.013c-1.086 0-1.967.88-1.967 1.967v6.9H36l-1.169 7.597h-6.81V43h-8.776V29.064H12v-7.597h7.151l.094-7.21l-.013-1.31A7.868 7.868 0 0 1 27.099 5H36v7.6Z"/>
</mask>
<path fill="currentColor" d="M0 0h48v48H0z" mask="url(#ipSFacebook0)"/>
</svg>
<span>facebook.com/PiekarnikGosi</span>
</a>
</li>
<li>
<a href="https://instagram.com/piekarnikgosi">
<svg xmlns="http://www.w3.org/2000/svg" width="200" height="200" viewBox="0 0 24 24">
<path fill="currentColor"
d="M17.34 5.46a1.2 1.2 0 1 0 1.2 1.2a1.2 1.2 0 0 0-1.2-1.2Zm4.6 2.42a7.59 7.59 0 0 0-.46-2.43a4.94 4.94 0 0 0-1.16-1.77a4.7 4.7 0 0 0-1.77-1.15a7.3 7.3 0 0 0-2.43-.47C15.06 2 14.72 2 12 2s-3.06 0-4.12.06a7.3 7.3 0 0 0-2.43.47a4.78 4.78 0 0 0-1.77 1.15a4.7 4.7 0 0 0-1.15 1.77a7.3 7.3 0 0 0-.47 2.43C2 8.94 2 9.28 2 12s0 3.06.06 4.12a7.3 7.3 0 0 0 .47 2.43a4.7 4.7 0 0 0 1.15 1.77a4.78 4.78 0 0 0 1.77 1.15a7.3 7.3 0 0 0 2.43.47C8.94 22 9.28 22 12 22s3.06 0 4.12-.06a7.3 7.3 0 0 0 2.43-.47a4.7 4.7 0 0 0 1.77-1.15a4.85 4.85 0 0 0 1.16-1.77a7.59 7.59 0 0 0 .46-2.43c0-1.06.06-1.4.06-4.12s0-3.06-.06-4.12ZM20.14 16a5.61 5.61 0 0 1-.34 1.86a3.06 3.06 0 0 1-.75 1.15a3.19 3.19 0 0 1-1.15.75a5.61 5.61 0 0 1-1.86.34c-1 .05-1.37.06-4 .06s-3 0-4-.06a5.73 5.73 0 0 1-1.94-.3a3.27 3.27 0 0 1-1.1-.75a3 3 0 0 1-.74-1.15a5.54 5.54 0 0 1-.4-1.9c0-1-.06-1.37-.06-4s0-3 .06-4a5.54 5.54 0 0 1 .35-1.9A3 3 0 0 1 5 5a3.14 3.14 0 0 1 1.1-.8A5.73 5.73 0 0 1 8 3.86c1 0 1.37-.06 4-.06s3 0 4 .06a5.61 5.61 0 0 1 1.86.34a3.06 3.06 0 0 1 1.19.8a3.06 3.06 0 0 1 .75 1.1a5.61 5.61 0 0 1 .34 1.9c.05 1 .06 1.37.06 4s-.01 3-.06 4ZM12 6.87A5.13 5.13 0 1 0 17.14 12A5.12 5.12 0 0 0 12 6.87Zm0 8.46A3.33 3.33 0 1 1 15.33 12A3.33 3.33 0 0 1 12 15.33Z"/>
</svg>
<span>instagram.com/PiekarnikGosi</span>
</a>
</li>
<li>
<a href="mailto:gosia@piekarnikgosi.pl">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"
stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"
class="lucide lucide-mail-icon lucide-mail">
<path d="m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7"/>
<rect x="2" y="4" width="20" height="16" rx="2"/>
</svg>
<span>gosia@piekarnikgosi.pl</span>
</a>
</li>
<li>
<a href="tel:+48503186245">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"
stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"
class="lucide lucide-phone-icon lucide-phone">
<path d="M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233 14 14 0 0 0 6.392 6.384"/>
</svg>
<span>+48 503 186 245</span>
</a>
</li>
</ul>
</div>
<p>&copy 2026 Piekarnik Gosi.</p>
</footer>
</body>
{{end}}

25
templates/header.gohtml Normal file
View file

@ -0,0 +1,25 @@
{{define "header"}}
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8"/>
<title>Piekarnik Gosi</title>
<meta name="viewport" content="width=device-width,initial-scale=1"/>
<meta name="description" content=""/>
<link href="styles/style.css" rel="stylesheet"/>
<link rel="icon" href="images/favicon.png">
</head>
<body>
<nav>
<div>
<img alt="logo" src="images/logo.png"/>
<div>
<a{{if (ne . "index")}} href="index.html" {{end}}>Strona Główna</a>
<a{{if (ne . "wyroby")}} href="wyroby.gohtml" {{end}}>Wyroby</a>
<a{{if (ne . "portfolio")}} href="portfolio.gohtml" {{end}}>Portfolio</a>
<a{{if (ne . "kawiarnia")}} href="kawiarnia.gohtml" {{end}}>Kawiarnia</a>
</div>
<a class="btn" href="#footer">Kontakt</a>
</div>
</nav>
{{end}}

View file

@ -0,0 +1,16 @@
{{template "header" "portfolio"}}
<main>
<section class="portfolio">
<header>
<h1>Nasze Słodkie Realizacje</h1>
<p>Galeria pasji uwieczniona w kremie i dekoracjach. Zobacz wybrane projekty, które uświetniły wyjątkowe chwile naszych klientów od bajkowych tortów dla dzieci po eleganckie torty weselne.</p>
</header>
<div>
<a class="btn-green">Ciasta</a>
<a class="btn-green" href="wyroby_torty.gohtml">Torty</a>
<a class="btn-green" href="wyroby_slodkie_stoly.html">Slodkie stoły</a>
<a class="btn-green" href="wyroby_lody.html">Lody</a>
</div>
</section>
</main>
{{template "footer"}}

101
templates/styles/base.css Normal file
View file

@ -0,0 +1,101 @@
:root {
--surface-container-low: #faf3e7;
--surface-container-highest: #eae2d2;
--surface: #fff8f0;
--backdrop-blur: 24px;
--primary: #8c4d50;
--primary-container: #fcacaf;
--on-background: #363227;
--nav-height: 4rem;
--border-radius: 48px;
--small-radius: 24px;
--small-border-radius: 8px;
--max-content-width: 80rem;
--secondary-container: #e0f5cb;
--on-secondary-container: #4c5e3e;
--on-surface: #363227;
--outline-variant: #b9b1a3;
--on-surface-variant: #645f52;
--grid-cols: 3;
}
@media (max-width: 768px) {
:root {
--grid-cols: 1;
}
}
body {
background-color: var(--surface);
font-family: 'Plus Jakarta Sans', sans-serif;
box-sizing: border-box;
}
h1, h2, h3, h4 {
margin: 0;
font-family: serif;
color: var(--on-background);
& > span {
font-style: italic;
color: var(--primary);
}
}
h1 {
font-size: 4rem;
line-height: 3.5rem;
margin: 1.5rem 0;
}
h2 {
font-size: 3.5rem;
}
h3 {
font-size: 1.5rem;
}
h4 {
font-size: 1rem;
}
h5 {
font-size: 0.8rem;
}
p {
color: var(--on-background);
line-height: 1.5rem;
}
body > nav, body > footer, body > main > * {
padding: 8rem 2rem;
& > div:only-child, &:not(:has(>div:only-child)) {
max-width: var(--max-content-width);
margin: 0 auto;
}
}
body > nav {
padding: 1rem;
}
svg {
height: 1em;
width: 1em;
}
ul {
list-style-type: none;
padding: 0;
margin: 0;
}
img {
color: transparent;
}

View file

@ -0,0 +1,163 @@
.btn {
background-image: linear-gradient(to right, var(--primary), var(--primary-container));
padding: 1rem 2rem;
font-size: 1rem;
border-radius: 100rem;
text-decoration: none;
color: var(--on-background);
transition-duration: 0.2s;
&:hover {
transform: scale(1.1);
}
}
.btn-green {
padding: 0.5rem 1.5rem;
text-decoration: none;
background-color: var(--secondary-container);
border-radius: var(--border-radius);
color: var(--on-secondary-container);
transition-duration: 0.2s;
&[href]:not(:hover) {
background-color: var(--surface-container-highest);
color: var(--on-background);
}
}
.card {
width: 100%;
display: flex;
flex-direction: column;
position: relative;
border-radius: var(--border-radius);
overflow: hidden;
background-color: white;
.greener {
background-color: rgb(from var(--secondary-container) r g b / 0.3);
}
& img {
display: block;
width: 100%;
scale: 1;
transition: scale 0.7s;
}
& > div:first-child {
overflow: hidden;
}
& > div:last-child {
display: grid;
grid-template-rows: auto auto 1fr;
padding: 2rem;
flex-grow: 1;
& > a {
display: flex;
align-self: end;
align-items: center;
justify-content: flex-start;
gap: 1rem;
color: var(--primary);
font-weight: bold;
text-decoration: none;
}
}
top: 0;
transition: top 0.2s;
&:hover {
top: -10px;
& img {
scale: 1.1;
}
& svg {
margin-left: 10px;
}
}
& svg {
transition-duration: 0.2s;
height: 2em;
width: 2em;
}
}
.subnav {
justify-content: center;
align-items: center;
display: flex;
flex-direction: column;
/* we don't want any gap between this element and the main contents of the site */
padding-bottom: 0;
& + * {
padding-top: 0;
}
& > p {
margin: 0;
}
& > * {
text-align: center;
max-width: 40rem;
}
& > nav {
display: flex;
align-items: center;
gap: 1rem;
justify-content: center;
padding: 3rem;
}
}
.card-low {
background-color: var(--surface-container-low);
border: 1px solid var(--surface-container-highest);
border-radius: var(--border-radius);
padding: 2rem;
& > h3 {
padding-bottom: 1rem;
}
& > span {
color: var(--primary);
font-weight: bold;
font-size: 1.25rem;
}
}
.offer-card {
display: grid;
grid-template-columns: auto 1fr;
grid-template-rows: auto 1fr;
gap: 1rem;
& > svg {
padding: 1rem;
color: var(--icon-color);
background-color: rgb(from var(--icon-color) r g b / 10%);
border-radius: var(--border-radius);
overflow: visible;
}
& > h3 {
align-self: center;
}
& > :last-child {
grid-column: 1 / -1;
}
}

190
templates/styles/home.css Normal file
View file

@ -0,0 +1,190 @@
#index > header {
max-width: var(--max-content-width);
display: grid;
grid-template-columns: 1fr 1fr;
gap: 2rem;
padding: 2rem;
@media (max-width: 768px) {
grid-template-columns: 1fr;
& > :last-child {
grid-row: 1;
}
& > :first-child {
grid-row: 2;
}
}
& > div {
display: flex;
justify-content: center;
}
& > :first-child {
align-items: flex-start;
flex-direction: column;
gap: 1rem;
}
& > :last-child {
align-items: center;
& > img {
rotate: 2deg;
border-radius: var(--border-radius);
max-width: 100%;
max-height: 80%;
aspect-ratio: 4/5;
transition: rotate 0.7s;
&:hover {
rotate: 0deg;
}
}
}
}
#about-us {
background-color: var(--surface-container-low);
& > div {
gap: 4rem;
display: grid;
grid-template-columns: 3fr 2fr;
align-items: center;
@media (max-width: 768px) {
grid-template-columns: 1fr;
}
& > :first-child {
position: relative;
& > div {
overflow: hidden;
border-radius: var(--border-radius);
border: 10px solid var(--surface-container-low);
&:first-child {
position: relative;
z-index: 10;
width: 80%;
}
&:last-child {
position: absolute;
bottom: -3rem;
right: 0;
z-index: 20;
width: 50%;
}
& > img {
width: 100%;
height: 100%;
object-fit: cover;
}
}
}
& :last-child {
& > span {
color: var(--primary);
}
}
}
}
#featured-delights {
gap: 2rem;
display: grid;
grid-template-columns: 1fr 1fr 1fr;
grid-template-rows: auto auto;
& > h2 {
align-self: center;
justify-self: center;
grid-column: 1/ span 3;
}
@media (max-width: 768px) {
grid-template-columns: 1fr;
& > h2 {
grid-column: 1;
}
}
}
#kawiarnia {
background-color: var(--secondary-container);
& > div {
background-color: rgb(from var(--surface) r g b / 0.6);
border-radius: var(--border-radius);
padding: 4rem;
display: grid;
grid-template-columns: 1fr 1fr;
gap: 4rem;
@media (max-width: 768px) {
grid-template-columns: 1fr;
}
& > :first-child {
& > h3 {
color: var(--on-secondary-container);
font-size: 3rem;
margin-bottom: 1.5rem;
}
& > p {
color: var(--on-secondary-container);
font-size: 1.125rem;
opacity: 0.8;
margin-bottom: 2rem;
}
& li {
font-size: 1.25rem;
margin: 1rem 0;
& span {
margin-left: 1rem;
color: var(--on-secondary-container);
}
}
}
& > :last-child {
width: 100%;
display: grid;
grid-template-columns: 1fr 1fr;
gap: 1rem;
& > div {
display: flex;
align-items: center;
}
& img {
width: 100%;
border-radius: var(--border-radius);
position: relative;
}
& div:first-child > img {
top: -1rem;
}
& div:last-child > img {
top: 1rem;
}
}
}
}

View file

@ -0,0 +1,171 @@
#kawiarnia-header {
padding: 0;
max-width: 100%;
width: 100%;
overflow: hidden;
position: relative;
& > :last-child {
z-index: -10;
position: absolute;
bottom: 0;
width: 100%;
height: 100%;
& > img {
width: 100%;
height: 100%;
object-fit: cover;
}
& > div {
position: absolute;
bottom: 0;
background-image: linear-gradient(to right, var(--surface), transparent);
width: 100%;
height: 100%;
z-index: 100;
}
}
& > :first-child {
margin: 0 auto;
max-width: var(--max-content-width);
padding: 8rem 2rem;
display: flex;
flex-direction: column;
gap: 1.5rem;
align-items: flex-start;
& > h1 {
line-height: unset;
}
& > * {
max-width: 32rem;
margin: 0;
}
& > span {
color: var(--primary);
letter-spacing: 0.05rem;
font-size: 1.125rem;
}
& > p {
font-size: 1.125rem;
color: var(--on-surface-variant);
}
}
}
#kawiarnia-content {
background-color: var(--surface-container-low);
& > div {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
gap: 2rem;
& > div {
justify-content: center;
display: grid;
grid-template-columns: repeat(var(--grid-cols), 1fr);
width: 100%;
gap: 2rem;
& > div {
background-color: white;
border-radius: var(--border-radius);
padding: 2rem;
& > ul {
& > h3 {
padding-top: 2rem;
}
& > li {
display: flex;
align-items: center;
justify-content: space-between;
font-weight: bolder;
& > span {
color: var(--primary);
}
&:not(:last-child) {
border-bottom: 1px dashed var(--on-surface-variant);
}
}
}
&:first-child {
grid-row: span 2;
}
}
}
}
}
#kawiarnia-details {
display: grid;
grid-template-columns: repeat(var(--grid-cols), 1fr);
justify-content: center;
gap: 2rem;
width: 100%;
& > header {
grid-column: 1/ -1;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
gap: 1rem;
padding-bottom: 1rem;
}
& > div {
padding: 2rem;
display: flex;
flex-direction: column;
align-items: center;
justify-content: flex-start;
gap: 2rem;
background-color: white;
border-radius: var(--border-radius);
& > svg {
--icon-color: var(--primary);
padding: 1rem;
overflow: visible;
color: var(--icon-color);
background-color: rgb(from var(--icon-color) r g b / 10%);
border-radius: var(--border-radius);
}
& > ul {
width: 100%;
& > li {
display: flex;
justify-content: space-between;
padding: 1rem 0;
&:not(:last-child) {
border-bottom: 1px dashed var(--on-surface-variant);
}
}
}
& > a {
color: var(--primary);
text-decoration: none;
font-size: 1.25rem;
}
}
}

127
templates/styles/layout.css Normal file
View file

@ -0,0 +1,127 @@
body > nav {
position: sticky;
top: 0;
z-index: 50;
backdrop-filter: blur(var(--backdrop-blur));
background-color: color-mix(in srgb, var(--surface), transparent 20%);
padding: 1rem;
& > div {
display: grid;
grid-template-columns: 1fr auto 1fr;
grid-template-rows: 1fr;
align-items: center;
& > img {
width: 20rem;
}
@media (max-width: 768px) {
grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr 1fr;
gap: 1rem;
& > .btn {
grid-column: 2;
grid-row: 1;
}
}
& > :last-child {
justify-self: end
}
& > div {
display: flex;
align-items: center;
gap: 2rem;
@media (max-width: 768px) {
grid-row: 2;
grid-column: 1/ span 2;
display: flex;
justify-content: center;
align-items: center;
}
& > a {
font-size: 1.25rem;
color: var(--on-background);
text-decoration: none;
font-weight: bold;
&[href] {
font-weight: 200;
transition: color 0.2s;
&:hover {
color: var(--primary);
}
}
/* The main selected link doesn't have a href attribute, so we can use that for styles */
&:not([href]) {
color: var(--primary);
padding-bottom: 8px;
border-bottom: 2px solid var(--primary);
}
}
}
}
}
footer {
display: grid;
grid-template-columns: 3fr 2fr 2fr;
gap: 1rem;
@media (max-width: 768px) {
grid-template-columns: 1fr;
}
& > :first-child {
display: flex;
flex-direction: column;
justify-content: space-between;
& p {
font-size: 0.875rem;
}
& > :last-child {
font-weight: lighter;
font-size: 0.75rem;
}
}
& > :nth-child(2) a {
flex-direction: column;
align-items: flex-start;
}
& a {
font-size: 0.875rem;
color: var(--on-background);
display: flex;
flex-direction: row;
align-items: center;
justify-content: flex-start;
text-decoration: none;
margin: 1rem 0;
& > div {
display: flex;
align-items: center;
justify-content: center;
}
}
& h4 {
color: var(--primary);
}
& svg {
margin-right: 0.5rem;
}
}

349
templates/styles/normalize.css vendored Normal file
View file

@ -0,0 +1,349 @@
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
/* Document
========================================================================== */
/**
* 1. Correct the line height in all browsers.
* 2. Prevent adjustments of font size after orientation changes in iOS.
*/
html {
line-height: 1.15; /* 1 */
-webkit-text-size-adjust: 100%; /* 2 */
}
/* Sections
========================================================================== */
/**
* Remove the margin in all browsers.
*/
body {
margin: 0;
}
/**
* Render the `main` element consistently in IE.
*/
main {
display: block;
}
/**
* Correct the font size and margin on `h1` elements within `section` and
* `article` contexts in Chrome, Firefox, and Safari.
*/
h1 {
font-size: 2em;
margin: 0.67em 0;
}
/* Grouping content
========================================================================== */
/**
* 1. Add the correct box sizing in Firefox.
* 2. Show the overflow in Edge and IE.
*/
hr {
box-sizing: content-box; /* 1 */
height: 0; /* 1 */
overflow: visible; /* 2 */
}
/**
* 1. Correct the inheritance and scaling of font size in all browsers.
* 2. Correct the odd `em` font sizing in all browsers.
*/
pre {
font-family: monospace, monospace; /* 1 */
font-size: 1em; /* 2 */
}
/* Text-level semantics
========================================================================== */
/**
* Remove the gray background on active links in IE 10.
*/
a {
background-color: transparent;
}
/**
* 1. Remove the bottom border in Chrome 57-
* 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
*/
abbr[title] {
border-bottom: none; /* 1 */
text-decoration: underline; /* 2 */
text-decoration: underline dotted; /* 2 */
}
/**
* Add the correct font weight in Chrome, Edge, and Safari.
*/
b,
strong {
font-weight: bolder;
}
/**
* 1. Correct the inheritance and scaling of font size in all browsers.
* 2. Correct the odd `em` font sizing in all browsers.
*/
code,
kbd,
samp {
font-family: monospace, monospace; /* 1 */
font-size: 1em; /* 2 */
}
/**
* Add the correct font size in all browsers.
*/
small {
font-size: 80%;
}
/**
* Prevent `sub` and `sup` elements from affecting the line height in
* all browsers.
*/
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
/* Embedded content
========================================================================== */
/**
* Remove the border on images inside links in IE 10.
*/
img {
border-style: none;
}
/* Forms
========================================================================== */
/**
* 1. Change the font styles in all browsers.
* 2. Remove the margin in Firefox and Safari.
*/
button,
input,
optgroup,
select,
textarea {
font-family: inherit; /* 1 */
font-size: 100%; /* 1 */
line-height: 1.15; /* 1 */
margin: 0; /* 2 */
}
/**
* Show the overflow in IE.
* 1. Show the overflow in Edge.
*/
button,
input { /* 1 */
overflow: visible;
}
/**
* Remove the inheritance of text transform in Edge, Firefox, and IE.
* 1. Remove the inheritance of text transform in Firefox.
*/
button,
select { /* 1 */
text-transform: none;
}
/**
* Correct the inability to style clickable types in iOS and Safari.
*/
button,
[type="button"],
[type="reset"],
[type="submit"] {
-webkit-appearance: button;
}
/**
* Remove the inner border and padding in Firefox.
*/
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
border-style: none;
padding: 0;
}
/**
* Restore the focus styles unset by the previous rule.
*/
button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
outline: 1px dotted ButtonText;
}
/**
* Correct the padding in Firefox.
*/
fieldset {
padding: 0.35em 0.75em 0.625em;
}
/**
* 1. Correct the text wrapping in Edge and IE.
* 2. Correct the color inheritance from `fieldset` elements in IE.
* 3. Remove the padding so developers are not caught out when they zero out
* `fieldset` elements in all browsers.
*/
legend {
box-sizing: border-box; /* 1 */
color: inherit; /* 2 */
display: table; /* 1 */
max-width: 100%; /* 1 */
padding: 0; /* 3 */
white-space: normal; /* 1 */
}
/**
* Add the correct vertical alignment in Chrome, Firefox, and Opera.
*/
progress {
vertical-align: baseline;
}
/**
* Remove the default vertical scrollbar in IE 10+.
*/
textarea {
overflow: auto;
}
/**
* 1. Add the correct box sizing in IE 10.
* 2. Remove the padding in IE 10.
*/
[type="checkbox"],
[type="radio"] {
box-sizing: border-box; /* 1 */
padding: 0; /* 2 */
}
/**
* Correct the cursor style of increment and decrement buttons in Chrome.
*/
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
height: auto;
}
/**
* 1. Correct the odd appearance in Chrome and Safari.
* 2. Correct the outline style in Safari.
*/
[type="search"] {
-webkit-appearance: textfield; /* 1 */
outline-offset: -2px; /* 2 */
}
/**
* Remove the inner padding in Chrome and Safari on macOS.
*/
[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
/**
* 1. Correct the inability to style clickable types in iOS and Safari.
* 2. Change font properties to `inherit` in Safari.
*/
::-webkit-file-upload-button {
-webkit-appearance: button; /* 1 */
font: inherit; /* 2 */
}
/* Interactive
========================================================================== */
/*
* Add the correct display in Edge, IE 10+, and Firefox.
*/
details {
display: block;
}
/*
* Add the correct display in all browsers.
*/
summary {
display: list-item;
}
/* Misc
========================================================================== */
/**
* Add the correct display in IE 10+.
*/
template {
display: none;
}
/**
* Add the correct display in IE 10.
*/
[hidden] {
display: none;
}

View file

@ -0,0 +1,27 @@
.portfolio {
padding-top: 2rem;
& > header {
justify-content: center;
align-items: center;
display: flex;
flex-direction: column;
& > p {
margin: 0;
}
& > * {
text-align: center;
max-width: 40rem;
}
}
& > div:nth-child(2) {
display: flex;
align-items: center;
gap: 1rem;
justify-content: center;
padding: 3rem;
}
}

View file

@ -0,0 +1,9 @@
{{template "normalize.css"}}
{{template "base.css"}}
{{template "components.css"}}
{{template "home.css"}}
{{template "layout.css"}}
{{template "wyroby.css"}}
{{template "wyroby_torty.css"}}
{{template "portfolio.css"}}
{{template "kawiarnia.css"}}

View file

@ -0,0 +1,35 @@
#wyroby {
display: grid;
justify-content: center;
grid-template-columns: repeat(var(--grid-cols), 1fr);
width: 100%;
gap: 2rem;
& > .card {
width: 100%;
}
& > .card > div:last-child {
display: grid;
grid-template-columns: auto auto;
grid-template-rows: auto auto;
& > h3 {
font-size: 1.25rem;
}
& > span {
color: var(--primary);
font-size: 1.25rem;
font-weight: bold;
justify-self: end;
}
& > p {
grid-row: 2;
grid-column: 1/span 2;
color: var(--on-surface);
font-size: 0.875em;
}
}
}

View file

@ -0,0 +1,130 @@
#wyroby-torty > section{
padding: 2rem;
}
#rodzaje-tortow {
display: grid;
grid-template-columns: repeat(4, 1fr);
@media (max-width: 786px) {
grid-template-columns: 1fr;
}
gap: 2rem;
& > div {
}
}
#cennik-tortow {
display: grid;
grid-template-columns: 2fr 1fr;
@media (max-width: 786px) {
grid-template-columns: 1fr;
}
gap: 2rem;
& li {
display: flex;
align-items: center;
justify-content: space-between;
& > span:last-child {
font-weight: bold;
color: var(--primary);
}
&:not(:last-child) {
border-bottom: 1px solid var(--surface-container-highest);
}
}
& > div:first-child {
display: grid;
grid-template-columns: auto 1fr;
grid-template-rows: auto 1fr;
& > h3, & > svg {
padding: 1rem;
}
& > svg {
place-self: center;
font-size: 2rem;
padding-right: 0;
}
& > ul {
grid-column: 1 / -1;
border-radius: var(--small-radius);
border: 1px solid var(--surface-container-highest);
background-color: white;
overflow: hidden;
& > li {
padding: 1rem 2rem;
&:first-child {
background-color: rgb(from var(--secondary-container) r g b / 30%);
font-weight: bold;
& > span:last-child {
color: black;
}
}
}
}
}
& > div:last-child > ul > li {
padding: 0.75rem 0;
}
}
#menu-smakow {
display: grid;
grid-template-columns: repeat(var(--grid-cols), 1fr);
gap: 2rem;
& > header {
grid-column: 1 / -1;
text-align: center;
}
& dl {
color: var(--on-surface);
& > * {
padding: 0.25rem 0;
}
& dt {
font-weight: 700;
}
& dd {
font-size: 0.75rem;
margin: 0;
}
}
}
#torty-musowe {
background-color: var(--surface-container-highest);
border-radius: var(--border-radius);
display: grid;
grid-template-columns: auto auto;
gap: 2rem;
& > div{
display: grid;
grid-template-columns: 1fr 1fr;
gap : 2rem;
}
@media (max-width: 786px) {
grid-template-columns: 1fr;
& > div {
grid-template-columns: 1fr;
}
}
}

164
templates/wyroby.gohtml Normal file
View file

@ -0,0 +1,164 @@
{{template "header" "wyroby"}}
<main>
<header class="subnav">
<h1>Nasze słodkości</h1>
<p>Poznaj nasze tradycyjne receptury przekute w nowoczesne formy. Każdy wypiek to historia pasji, a każde lody
to
powiew naturalnej świeżości</p>
<nav>
<a class="btn-green">Ciasta</a>
<a class="btn-green" href="wyroby_torty.gohtml">Torty</a>
<a class="btn-green" href="wyroby_slodkie_stoly.html">Slodkie stoły</a>
<a class="btn-green" href="wyroby_lody.html">Lody</a>
</nav>
</header>
<section >
<div id="wyroby">
<div class="card">
<div>
<img alt="Malinowa chmurka" src="images/wyroby/001.jpg"/>
</div>
<div>
<h3>Malinowa chmurka</h3>
<span>150zł</span>
<p>kruchy spód, warstwa malin w galaretce, krem śmietankowy, beza</p>
</div>
</div>
<div class="card">
<div>
<img alt="Sernik ulubiony" src="images/wyroby/002.jpg"/>
</div>
<div>
<h3>Sernik ulubiony</h3>
<span>150zł</span>
<p>kruchy spód, aksamitna masa serowa, beza z kruszonką</p>
</div>
</div>
<div class="card">
<div>
<img alt="Jabłecznik z kruszonką" src="images/wyroby/003.jpg"/>
</div>
<div>
<h3>Jabłecznik z kruszonką</h3>
<span>130zł</span>
<p>ciasto ucierane, jabłka, kruszonka</p>
</div>
</div>
<div class="card">
<div>
<img alt="Sernik klasyczny" src="www/images/wyroby/004.jpg"/>
</div>
<div>
<h3>Sernik klasyczny</h3>
<span>150zł</span>
<p>wykończony czekoladowym ganache lub oprószony cukrem pudrem</p>
</div>
</div>
<div class="card">
<div>
<img alt="Sernik królewski" src="www/images/wyroby/005.jpg"/>
</div>
<div>
<h3>Sernik królewski</h3>
<span>150zł</span>
<p>kakaowy spód i kruszonka, wilgotna masa serowa</p>
</div>
</div>
<div class="card">
<div>
<img alt="Pleśniak" src="www/images/wyroby/006.jpg"/>
</div>
<div>
<h3>Pleśniak</h3>
<span>120zł</span>
<p>kruche ciasto waniliowe, powidła owocowe, kruche ciasto kakaowe, beza i kruszonka</p>
</div>
</div>
<div class="card">
<div>
<img alt="Leśny mech z musem truskawkowym" src="www/images/wyroby/007.jpg"/>
</div>
<div>
<h3>Leśny mech z musem truskawkowym</h3>
<span>110zł</span>
<p>biszkoptowe ciasto z dodatkiem szpinaku, mus truskawkowy</p>
</div>
</div>
<div class="card">
<div>
<img alt="Snickers" src="www/images/wyroby/008.jpg"/>
</div>
<div>
<h3>Snickers</h3>
<span>150zł</span>
<p>dwie warstwy kakaowego biszkoptu a pomiędzy bezowy blat orzechowy , krem budyniowy , toffi i
orzeszki ziemne</p>
</div>
</div>
<div class="card">
<div>
<img alt="Mleczna kanapka" src="www/images/wyroby/009.jpg"/>
</div>
<div>
<h3>Mleczna kanapka</h3>
<span>120zł</span>
<p>dwa blaty czekoladowego ciasta, a pomiędzy krem waniliowy z dodatkiem cienkiej warstwy
czekoladowej</p>
</div>
</div>
<div class="card">
<div>
<img alt="3Bit" src="www/images/wyroby/010.jpg"/>
</div>
<div>
<h3>3Bit</h3>
<span>120zł</span>
<p>herbatniki, krem budyniowy, toffi i śmietana</p>
</div>
</div>
<div class="card">
<div>
<img alt="Biszkoptowe z kremem i owocami w galaretce" src="www/images/wyroby/011.jpg"/>
</div>
<div>
<h3>Biszkoptowe z kremem i owocami w galaretce</h3>
<span>120zł</span>
<p>biszkopt, krem budyniowy, owoce</p>
</div>
</div>
<div class="card">
<div>
<img alt="Kora orzechowa" src="www/images/wyroby/012.jpg"/>
</div>
<div>
<h3>Kora orzechowa</h3>
<span>150zł</span>
<p>dwa blaty bezy orzechowej a pomiędzy krem budyniowy na bazie soku z brzoskwiń, delicje
pomarańczowe, owoce brzoskwiń i galaretka</p>
</div>
</div>
<div class="card">
<div>
<img alt="Nutelowiec z wiśniami" src="www/images/wyroby/013.jpg"/>
</div>
<div>
<h3>Nutelowiec z wiśniami</h3>
<span>120zł</span>
<p>nutelowy spód , krem śmietankowy z dodatkiem twarożku, wiśnie i galaretka</p>
</div>
</div>
<div class="card">
<div>
<img alt="Karpatka" src="www/images/wyroby/014.jpg">
</div>
<div>
<h3>Karpatka</h3>
<span>120zł</span>
<p></p>
</div>
</div>
</div>
</section>
</main>
{{template "footer"}}