Enhance CSS: magnetic menu hover text, home grid captions, responsive improvements

This commit is contained in:
2026-08-30 00:40:20 +02:00
parent 3012e5b994
commit 823f04fc05
108 changed files with 1977 additions and 413 deletions

View File

@@ -1,16 +1,14 @@
* {
margin: 0;
padding: 0;
}
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;600;700&display=swap');
/* ===== CSS Variables ===== */
:root {
--padding: 1.5rem;
--color-black: #000;
--color-white: #fff;
--color-grey: #777;
--color-light: #efefef;
--color-text: var(--color-black);
--color-text-grey: var(--color-grey);
--color-text: #e8f4ff;
--color-text-grey: #cfd9e4;
--color-background: var(--color-white);
--color-code-light-grey: #cacbd1;
--color-code-comment: #a9aaad;
@@ -22,52 +20,237 @@
--color-code-aqua: #8abeb7;
--color-code-blue: #7e9abf;
--color-code-purple: #b294bb;
--font-family-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
--font-family-sans: 'Poppins', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
--font-family-mono: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;
}
html {
/* ===== Background overlay ===== */
body {
font-family: var(--font-family-sans);
color: var(--color-text);
background: var(--color-background);
}
img {
width: 100%;
}
body {
padding: var(--padding);
max-width: 70rem;
margin: 0 auto;
}
li {
list-style: none;
}
a {
color: currentColor;
text-decoration: none;
}
button {
font: inherit;
background: none;
border: 0;
color: currentColor;
position: relative;
min-height: 100vh;
z-index: 0;
}
body::before {
content: "";
position: fixed;
top: 50%;
left: 50%;
width: 320vmax;
height: 320vmax;
background: linear-gradient(135deg, #3f0e00, #a63b00, #ffbe6e);
z-index: -1;
animation: rotate-gradient 60s linear infinite;
pointer-events: none;
}
.is-blackout body::before {
animation: none;
background: #000;
}
.blackout-overlay {
position: fixed;
inset: 0;
background: rgba(0, 0, 0, 0.95);
color: #fff;
display: none;
align-items: center;
justify-content: center;
flex-direction: column;
text-align: center;
z-index: 100;
font-size: 2rem;
letter-spacing: 0.2em;
pointer-events: none;
}
.is-blackout .blackout-overlay {
display: flex;
}
/* ===== Magnetic Menu (improved) ===== */
.magnetic-menu {
min-height: 70vh;
display: flex;
align-items: center;
justify-content: center;
padding: 4rem var(--padding) 2rem;
text-align: center;
}
.magnetic-menu__inner {
display: flex;
flex-wrap: wrap;
justify-content: center;
gap: 2.5rem;
width: min(60rem, 100%);
}
.magnetic-menu__item {
width: clamp(8rem, 18vw, 12rem);
flex: 0 0 auto;
aspect-ratio: 1 / 1;
border-radius: 50%;
position: relative;
overflow: visible;
display: grid;
place-items: center;
text-decoration: none;
color: var(--color-text);
transition: transform 200ms ease-out;
will-change: transform;
cursor: pointer;
}
strong, b {
.magnetic-menu__item:hover {
transform: scale(1.1) rotate(5deg);
}
.magnetic-menu__image {
width: 62%;
aspect-ratio: 1 / 1;
border-radius: 50%;
overflow: hidden;
position: relative;
z-index: 1;
}
.magnetic-menu__image img {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
}
.magnetic-menu__circle {
position: absolute;
inset: 0;
width: 100%;
height: 100%;
pointer-events: none;
}
.magnetic-menu__circle text {
font-size: clamp(0.55rem, 1.6vw, 0.75rem);
letter-spacing: 0.4em;
text-transform: uppercase;
fill: var(--color-text);
font-weight: 600;
}
small {
font-size: inherit;
color: var(--color-text-grey);
.magnetic-menu__item.is-placeholder {
pointer-events: none;
opacity: 0.45;
}
.bg-light {
background-color: var(--color-light);
/* ===== NEW: Hover text on magnetic menu items ===== */
.magnetic-menu__item::before {
content: attr(data-lamp-desc);
position: absolute;
inset: 0;
display: flex;
align-items: center;
justify-content: center;
opacity: 0;
transition: opacity 200ms ease;
pointer-events: none;
background: rgba(0, 0, 0, 0.7);
color: var(--color-white);
font-size: clamp(0.4rem, 1.2vw, 0.5rem);
letter-spacing: 0.2em;
text-transform: uppercase;
z-index: 10;
width: 100%;
height: 100%;
}
.color-grey {
color: var(--color-text-grey);
.magnetic-menu__item:hover::before {
opacity: 1;
}
/* ===== Footer magnet ===== */
.footer-magnet {
display: inline-block;
transition: transform 280ms cubic-bezier(.25, .8, .25, 1);
will-change: transform;
user-select: none;
}
.footer-dim-image {
display: block;
margin-top: 1rem;
filter: brightness(1);
transition: filter 250ms ease;
cursor: pointer;
}
/* ===== Responsive ===== */
@media (max-width: 800px) {
.magnetic-menu {
min-height: auto;
padding: 3rem var(--padding) 1rem;
justify-content: flex-start;
}
.magnetic-menu__inner {
width: 100%;
justify-content: space-between;
gap: 1.5rem;
}
.magnetic-menu__item {
flex: 1 1 calc((100% / 3) - 1rem);
max-width: none;
width: calc((100% / 3) - 1rem);
}
.has-top-menu .magnetic-menu__inner {
justify-content: space-between;
}
}
@media (max-width: 520px) {
.magnetic-menu {
min-height: auto;
padding: 1rem var(--padding) 0.5rem;
}
.magnetic-menu__inner {
gap: 0.75rem;
}
.magnetic-menu__item {
flex: 1 1 calc((100% / 3) - 0.5rem);
width: calc((100% / 3) - 0.5rem);
}
.magnetic-menu__circle text {
font-size: clamp(0.45rem, 3vw, 0.6rem);
}
}
/* ===== Top menu mode ===== */
.has-top-menu .magnetic-menu {
position: sticky;
top: 0;
z-index: 20;
min-height: auto;
justify-content: center;
padding: 1rem 0 0.5rem;
}
.has-top-menu .magnetic-menu__inner {
justify-content: center;
max-width: 70rem;
margin: 0 auto;
padding: 0 var(--padding);
}
.has-top-menu .main {
padding-top: calc(var(--padding) + 6rem);
}
/* ===== Main layout ===== */
.main {
max-width: 70rem;
margin: 0 auto;
padding: var(--padding);
padding-bottom: calc(8rem + var(--padding));
}
/* ===== Base elements ===== */
li { list-style: none; }
a { color: currentColor; text-decoration: none; }
button { font: inherit; background: none; border: 0; color: currentColor; cursor: pointer; }
strong, b { font-weight: 600; }
small { font-size: inherit; color: var(--color-text-grey); }
/* ===== Background helpers ===== */
.bg-light { background-color: var(--color-light); }
.color-grey { color: var(--color-text-grey); }
/* ===== Header ===== */
.header {
position: relative;
display: flex;
@@ -77,7 +260,6 @@ small {
margin-left: -1rem;
margin-bottom: 6rem;
}
.logo {
padding: 1rem;
display: flex;
@@ -86,189 +268,56 @@ small {
cursor: pointer;
}
.menu {
display: flex;
}
.menu a {
padding: 1rem;
display: block;
}
.menu a[aria-current] {
text-decoration: underline;
}
/* ===== Menu ===== */
.menu { display: flex; }
.menu a { padding: 1rem; display: block; }
.menu a[aria-current] { text-decoration: underline; }
.social {
display: flex;
padding: 0 .5rem;
}
.social a {
padding: 1rem .5rem;
}
/* ===== Social ===== */
.social { display: flex; padding: 0 .5rem; }
.social a { padding: 1rem .5rem; }
.section {
padding: 3rem 0;
}
/* ===== Sections ===== */
.section { padding: 3rem 0; }
.grid {
--columns: 12;
--gutter: 3rem;
display: grid;
grid-gap: var(--gutter);
grid-template-columns: 1fr;
}
.grid > .column {
margin-bottom: var(--gutter);
}
/* ===== Grid ===== */
.grid { --columns: 12; --gutter: 3rem; display: grid; grid-gap: var(--gutter); grid-template-columns: 1fr; }
.grid > .column { margin-bottom: var(--gutter); }
.autogrid {
--gutter: 3rem;
--min: 10rem;
display: grid;
grid-gap: var(--gutter);
grid-template-columns: repeat(auto-fit, minmax(var(--min), 1fr));
grid-auto-flow: dense;
}
/* ===== Auto-grid ===== */
.autogrid { --gutter: 3rem; --min: 10rem; display: grid; grid-gap: var(--gutter); grid-template-columns: repeat(auto-fit, minmax(var(--min), 1fr)); grid-auto-flow: dense; }
h1, h2, h3, h4, h5, h6 {
font-size: inherit;
font-weight: inherit;
line-height: inherit;
}
/* ===== Headings ===== */
h1, h2, h3, h4, h5, h6 { font-size: inherit; font-weight: inherit; line-height: inherit; }
.text {
line-height: 1.5em;
}
.text a {
text-decoration: underline;
}
.text :first-child {
margin-top: 0;
}
.text :last-child {
margin-bottom: 0;
}
.text p,
.text ul,
.text ol {
margin-bottom: 1.5rem;
}
.text ul,
.text ol {
margin-left: 1rem;
}
.text ul p,
.text ol p {
margin-bottom: 0;
}
.text ul > li {
list-style: disc;
}
.text ol > li {
list-style: decimal;
}
.text ul ol,
.text ul ul,
.text ol ul,
.text ol ol {
margin-bottom: 0;
}
.text h1,
.h1,
.intro {
font-size: 2rem;
margin-bottom: 3rem;
line-height: 1.25em;
}
.text h2,
.h2 {
font-size: 1.25rem;
font-weight: 600;
margin-bottom: 1.25rem;
}
.text h3,
.h3 {
font-weight: 600;
}
.text .codeblock {
display: grid;
}
.text code {
font-family: var(--font-family-mono);
font-size: 1em;
background: var(--color-light);
padding: 0 .5rem;
display: inline-block;
color: var(--color-black);
}
.text pre {
margin: 3rem 0;
background: var(--color-black);
color: var(--color-white);
padding: 1.5rem;
overflow-x: scroll;
overflow-y: hidden;
line-height: 1.5rem;
}
.text pre code {
padding: 0;
background: none;
color: inherit;
}
.text hr {
margin: 6rem 0;
}
.text dt {
font-weight: 600;
}
.text blockquote {
font-size: 1.25rem;
line-height: 1.325em;
border-left: 2px solid var(--color-black);
padding-left: 1rem;
margin: 3rem 0;
max-width: 25rem;
}
.text blockquote footer {
font-size: .875rem;
font-style: italic;
}
.text figure {
margin: 3rem 0;
}
.text figcaption {
padding-top: .75rem;
color: var(--color-text-grey);
}
.text figure ul {
line-height: 0;
display: grid;
gap: 1.5rem;
margin: 0;
grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));
}
.text figure ul li {
list-style: none;
}
/* ===== Text ===== */
.text { line-height: 1.5em; }
.text a { text-decoration: underline; }
.text :first-child { margin-top: 0; }
.text :last-child { margin-bottom: 0; }
.text p, .text ul, .text ol { margin-bottom: 1.5rem; }
.text ul, .text ol { margin-left: 1rem; }
.text ul p, .text ol p { margin-bottom: 0; }
.text ul > li { list-style: disc; }
.text ol > li { list-style: decimal; }
.text ul ol, .text ul ul, .text ol ul, .text ol ol { margin-bottom: 0; }
.text h1, .h1, .intro { font-size: 2rem; margin-bottom: 3rem; line-height: 1.25em; }
.text h2, .h2 { font-size: 1.25rem; font-weight: 600; margin-bottom: 1.25rem; }
.text h3, .h3 { font-weight: 600; }
.text .codeblock { display: grid; }
.text code { font-family: var(--font-family-mono); font-size: 1em; background: var(--color-light); padding: 0 .5rem; display: inline-block; color: var(--color-black); }
.text pre { margin: 3rem 0; background: var(--color-black); color: var(--color-white); padding: 1.5rem; overflow-x: scroll; overflow-y: hidden; line-height: 1.5rem; }
.text pre code { padding: 0; background: none; color: inherit; }
hr {
border: 0;
background: currentColor;
height: 2px;
width: 1.5rem;
margin: 3rem auto;
}
/* ===== HR & Alignment ===== */
hr { border: 0; background: currentColor; height: 2px; width: 1.5rem; margin: 3rem auto; }
.align-center { text-align: center; }
.align-center {
text-align: center;
}
.intro {
max-width: 40rem;
}
.intro *:not(:last-child) {
margin-bottom: 1em;
}
/* ===== Intro ===== */
.intro { max-width: 40rem; }
.intro *:not(:last-child) { margin-bottom: 1em; }
/* ===== CTA ===== */
.cta {
background: var(--color-black);
color: var(--color-white);
@@ -279,6 +328,7 @@ hr {
outline: 2px solid var(--color-black);
}
/* ===== Box ===== */
.box {
background: var(--color-light);
padding: 1.5rem;
@@ -286,149 +336,5 @@ hr {
outline: 2px solid var(--color-light);
}
.video,
.img {
position: relative;
display: block;
--w: 1;
--h: 1;
padding-bottom: calc(100% / var(--w) * var(--h));
background: var(--color-black);
}
.img img,
.video iframe {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
width: 100%;
height: 100%;
object-fit: cover;
border: 0;
}
.img[data-contain] img {
object-fit: contain;
}
.img-caption,
.video-caption {
padding-top: .75rem;
line-height: 1.5em;
}
.footer {
padding: 9rem 0 6rem;
line-height: 1.5em;
}
.footer:before {
content: "";
display: block;
width: 1.5rem;
height: 2px;
background: var(--color-black);
margin-bottom: 1.5rem;
}
.footer h2 {
font-weight: 600;
margin-bottom: .75rem;
}
.footer ul,
.footer p {
color: var(--color-text-grey);
}
.footer p {
max-width: 15rem;
}
.footer a:hover {
color: var(--color-text);
}
.map {
--w: 2;
--h: 1;
padding-bottom: calc(100% / var(--w) * var(--h));
position: relative;
overflow: hidden;
background: var(--color-black);
}
.map iframe {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
width: 100%;
height: 100%;
border: 0;
}
.margin-s {
margin-bottom: .75rem;
}
.margin-m {
margin-bottom: 1.5rem;
}
.margin-l {
margin-bottom: 3rem;
}
.margin-xl {
margin-bottom: 4.5rem;
}
.margin-xxl {
margin-bottom: 6rem;
}
@media screen and (min-width: 60rem) {
body {
--padding: 3rem;
}
.grid {
grid-template-columns: repeat(12, 1fr);
}
.grid > .column {
grid-column: span var(--columns);
}
}
.pagination {
display: flex;
padding-top: 6rem;
}
.pagination > span {
color: var(--color-text-grey);
}
.pagination > * {
padding: .5rem;
width: 3rem;
text-align: center;
border: 2px solid currentColor;
margin-right: 1.5rem;
}
.pagination > a:hover {
background: var(--color-black);
color: var(--color-white);
border-color: var(--color-black);
}
.note-excerpt {
line-height: 1.5em;
}
.note-excerpt header {
margin-bottom: 1.5rem;
}
.note-excerpt figure {
margin-bottom: .5rem;
}
.note-excerpt-title {
font-weight: 600;
}
.note-excerpt-date {
color: var(--color-text-grey);
}
/* ===== Video ===== */
.video,

View File

@@ -10,7 +10,6 @@
position: relative;
--cols: 1;
--rows: 1;
overflow: hidden;
background: #000;
line-height: 0;
@@ -55,9 +54,15 @@
left: 0;
line-height: 1;
text-align: center;
background: rgba(0,0,0, .5);
background: rgba(0,0,0, .7);
opacity: 0;
transition: opacity .3s;
}
.home-grid li:hover figcaption {
opacity: 1;
}
/* Medium screens */
@media screen and (min-width: 45em) {
.home-grid {
grid-template-columns: repeat(3, 1fr);
@@ -69,4 +74,4 @@
.home-grid a {
padding-bottom: 52.65%;
}
}
}

View File

@@ -5,3 +5,150 @@ Array.from(document.querySelectorAll("[data-lightbox]")).forEach(element => {
basicLightbox.create(`<img src="${element.href}">`).show();
};
});
let lastPointerType = "mouse";
window.addEventListener("pointerdown", event => {
lastPointerType = event.pointerType || "mouse";
});
// Central magnetic menu
const menuContainer = document.querySelector("[data-magnetic-menu]");
if (menuContainer) {
const menuItems = Array.from(menuContainer.querySelectorAll(".magnetic-menu__item"));
const hoverRadius = 240;
const shiftStrength = 45;
const spread = 18;
const isHome = document.body.classList.contains("is-home");
const applySpreadOnly = () => {
menuItems.forEach((item, index) => {
const neighborSpread = (index - (menuItems.length - 1) / 2) * spread;
item.style.transform = `translate(${neighborSpread}px, 0px)`;
});
};
const handleMenuPointer = event => {
const pointerX = event?.clientX ?? null;
const pointerY = event?.clientY ?? null;
menuItems.forEach((item, index) => {
const rect = item.getBoundingClientRect();
const centerX = rect.left + rect.width / 2;
const centerY = rect.top + rect.height / 2;
let offsetX = 0;
let offsetY = 0;
if (pointerX !== null) {
const dx = pointerX - centerX;
const dy = pointerY - centerY;
const distance = Math.hypot(dx, dy);
if (distance < hoverRadius && distance > 0.001) {
const force = 1 - distance / hoverRadius;
offsetX = -(dx / distance) * force * shiftStrength;
offsetY = -(dy / distance) * force * shiftStrength;
}
}
const neighborSpread = (index - (menuItems.length - 1) / 2) * spread;
item.style.transform = `translate(${offsetX + neighborSpread}px, ${offsetY}px)`;
});
};
menuContainer.addEventListener("pointermove", handleMenuPointer);
menuContainer.addEventListener("pointerleave", applySpreadOnly);
applySpreadOnly();
if (isHome) {
const pinMenu = () => {
document.body.classList.add("has-top-menu");
};
menuItems.forEach(item => {
item.addEventListener("pointerdown", pinMenu, { once: true });
item.addEventListener("click", pinMenu, { once: true });
item.addEventListener("touchstart", pinMenu, { once: true });
});
}
}
// Footer magnet hover
const footer = document.querySelector(".footer");
const footerMagnets = footer ? Array.from(footer.querySelectorAll("[data-footer-magnet]")) : [];
if (footer && footerMagnets.length) {
const radius = 240;
const maxOffset = 60;
let pointerX = null;
let pointerY = null;
let rafId = null;
const updateFooterMagnets = () => {
footerMagnets.forEach(item => {
if (pointerX === null || pointerY === null) {
item.style.transform = "";
return;
}
const rect = item.getBoundingClientRect();
const centerX = rect.left + rect.width / 2;
const centerY = rect.top + rect.height / 2;
const dx = centerX - pointerX;
const dy = centerY - pointerY;
const distance = Math.hypot(dx, dy);
if (distance < radius && distance > 0.001) {
const force = 1 - distance / radius;
const offsetX = (dx / distance) * force * maxOffset;
const offsetY = (dy / distance) * force * maxOffset;
item.style.transform = `translate(${offsetX}px, ${offsetY}px)`;
} else {
item.style.transform = "";
}
});
rafId = null;
};
const requestFooterUpdate = () => {
if (rafId === null) {
rafId = requestAnimationFrame(updateFooterMagnets);
}
};
footer.addEventListener("pointermove", event => {
pointerX = event.clientX;
pointerY = event.clientY;
requestFooterUpdate();
});
footer.addEventListener("pointerleave", () => {
pointerX = null;
pointerY = null;
footerMagnets.forEach(item => {
item.style.transform = "";
});
});
}
// Footer image brightness cycle
const footerDimImage = document.querySelector(".footer-dim-image");
if (footerDimImage) {
const brightnessSteps = [1, 0.75, 0.5, 0.25];
let brightnessIndex = Number(footerDimImage.dataset.brightnessIndex || 0);
footerDimImage.style.filter = `brightness(${brightnessSteps[brightnessIndex]})`;
footerDimImage.addEventListener("click", () => {
brightnessIndex = (brightnessIndex + 1) % brightnessSteps.length;
footerDimImage.dataset.brightnessIndex = String(brightnessIndex);
footerDimImage.style.filter = `brightness(${brightnessSteps[brightnessIndex]})`;
if (!document.body.classList.contains("is-blackout") && Math.random() < 0.15) {
document.body.classList.add("is-blackout");
}
});
}
// Blackout toggle based on click
const blackoutOverlay = document.querySelector("[data-blackout-overlay]");
document.addEventListener("pointerdown", () => {
if (document.body.classList.contains("is-blackout")) {
document.body.classList.remove("is-blackout");
}
}, true);

View File

@@ -0,0 +1,25 @@
Title: Aurora Weave Pendant
----
Cover: - file://Jc0l1BA0i5z0QjRf
----
Headline: Sculpted orbit for evening rituals
----
Subheadline: Hand-braided rattan halo for golden evenings
----
Text: <p>Aurora Weave gathers slender rattan strands around a linen core, diffusing light into a gentle dusk that favours story corners and shared tables alike. The woven silhouette casts soft, organic shadows that dance along the walls.</p><p>Each pendant is finished with brushed brass detailing and dim-to-warm LEDs, balancing artisanal tactility with understated technology for living rooms that double as sanctuaries.</p>
----
Tags: pendant, woven, living room
----
Uuid: v59sIVPYM141Uotu

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 KiB

View File

@@ -0,0 +1,29 @@
Caption: Aurora Weave pendant scattering honeyed light across oak panels.
----
Alt: Aurora Weave pendant lamp in a reading nook
----
Photographer: Lichterei Studio
----
License: Courtesy of Lichterei
----
Link:
----
Template: image
----
Sort: 2
----
Uuid: p6ClztZrkCB1KfLF

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

View File

@@ -0,0 +1,29 @@
Caption: Brass canopy detail of Aurora Weave hovering over linen upholstery.
----
Alt: Close view of Aurora Weave pendant with layered rattan bands
----
Photographer: Lichterei Studio
----
License: Courtesy of Lichterei
----
Link:
----
Template: image
----
Sort: 1
----
Uuid: mX73tq8jwu6bLxBt

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

View File

@@ -0,0 +1,29 @@
Caption: Aurora Weave casting layered shadows that drift like morning mist.
----
Alt: Aurora Weave pendant diffusing light through hand-braided rattan
----
Photographer: Lichterei Studio
----
License: Courtesy of Lichterei
----
Link:
----
Template: image
----
Sort: 3
----
Uuid: Jc0l1BA0i5z0QjRf

Binary file not shown.

After

Width:  |  Height:  |  Size: 211 KiB

View File

@@ -0,0 +1,29 @@
Caption: Evening vignette of Aurora Weave guiding guests toward a lounge alcove.
----
Alt: Ambient view of Aurora Weave pendant illuminating a walkway
----
Photographer: Lichterei Studio
----
License: Courtesy of Lichterei
----
Link:
----
Template: image
----
Sort: 4
----
Uuid: 4J6JHoVhngADKZ93

Binary file not shown.

After

Width:  |  Height:  |  Size: 238 KiB

View File

@@ -0,0 +1,29 @@
Caption: Aurora Weave guiding a late-night return with a mellow amber glow.
----
Alt: Aurora Weave pendant shimmering through twilight tones
----
Photographer: Lichterei Studio
----
License: Courtesy of Lichterei
----
Link:
----
Template: image
----
Sort: 5
----
Uuid: Qb0tGC63X1pU3qH1

View File

@@ -0,0 +1,25 @@
Title: Skylark Halo Pendant
----
Cover: - file://9APZDUNsDTbHMMTZ
----
Headline: Circular glow that floats like dawn
----
Subheadline: Brushed aluminium ring layered with opal diffusers
----
Text: <p>Skylark Halo levitates on near-invisible suspension, its twin opal diffusers projecting a soft horizon line. Adjustable co-axial LEDs let you move from sunrise to starlight with a single gesture.</p><p>The pendant thrives above lounge sofas and dining tables, pairing architectural clarity with a weightless presence that keeps conversations in the spotlight.</p>
----
Tags: pendant, halo, dimmable
----
Uuid: EWQEPJBB2Xyrrrj6

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

View File

@@ -0,0 +1,29 @@
Caption: Skylark Halo suspended above a lounge, glowing like a rising moon.
----
Alt: Skylark Halo pendant floating with amber outer ring
----
Photographer: Lichterei Studio
----
License: Courtesy of Lichterei
----
Link:
----
Template: image
----
Sort: 1
----
Uuid: kUpBxXRb6As5AI4Q

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 KiB

View File

@@ -0,0 +1,25 @@
Caption: Diffused inner glow of Skylark Halo reflecting off matte plaster.
----
Alt: Close-up of Skylark Halo pendant with dual diffusion rings
----
Photographer: Lichterei Studio
----
License: Courtesy of Lichterei
----
Link:
----
Template: image
----
Uuid: qQdp74eJyZtSsN04

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 KiB

View File

@@ -0,0 +1,29 @@
Caption: Skylark Halo washing a vaulted ceiling with soft starlight hues.
----
Alt: Skylark Halo pendant illuminating a vaulted ceiling
----
Photographer: Lichterei Studio
----
License: Courtesy of Lichterei
----
Link:
----
Template: image
----
Sort: 4
----
Uuid: 9APZDUNsDTbHMMTZ

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 KiB

View File

@@ -0,0 +1,29 @@
Caption: Skylark Halo echoing twilight across an open-layout living room.
----
Alt: Skylark Halo pendant emitting a gradient of warm and cool light
----
Photographer: Lichterei Studio
----
License: Courtesy of Lichterei
----
Link:
----
Template: image
----
Sort: 3
----
Uuid: QpaDWZ8W1hy2JAsd

Binary file not shown.

After

Width:  |  Height:  |  Size: 251 KiB

View File

@@ -0,0 +1,25 @@
Caption: Skylark Halo dimmed low to frame a fireside gathering.
----
Alt: Skylark Halo pendant glowing softly above lounge seating
----
Photographer: Lichterei Studio
----
License: Courtesy of Lichterei
----
Link:
----
Template: image
----
Uuid: ofXkD4gdgBOkHBAb

View File

@@ -0,0 +1,25 @@
Title: Tidefall Floor Lamp
----
Cover: - file://Kxk9ITpo07vV6u3e
----
Headline: Cascading linen for atmosphere seekers
----
Subheadline: Tiered textile shade with ripple dimming
----
Text: <p>Tidefall is a sculpted column of cascading linen, layered to echo the movement of falling water. Its integrated dimming ribbon washes the seams in luminous gradients, perfect for softening corners and anchoring lounge seating.</p><p>The base is turned from reclaimed ash, grounding the lamp with a tactile warmth that invites barefoot evenings and long playlists.</p>
----
Tags: floor lamp, textile, ambient
----
Uuid: D4DuOwcJk0fL0twA

Binary file not shown.

After

Width:  |  Height:  |  Size: 230 KiB

View File

@@ -0,0 +1,25 @@
Caption: Tidefall Floor Lamp pouring layered light beside a velvet sofa.
----
Alt: Tidefall floor lamp casting ripples of warm light
----
Photographer: Lichterei Studio
----
License: Courtesy of Lichterei
----
Link:
----
Template: image
----
Uuid: 0pQGdoX7b4QuEqhl

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 KiB

View File

@@ -0,0 +1,29 @@
Caption: Tidefall's layered linen shade viewed from above.
----
Alt: Top view of Tidefall floor lamp with concentric textile tiers
----
Photographer: Lichterei Studio
----
License: Courtesy of Lichterei
----
Link:
----
Template: image
----
Sort: 1
----
Uuid: Kxk9ITpo07vV6u3e

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

View File

@@ -0,0 +1,29 @@
Caption: Tidefall's cascading linen evokes bioluminescent drifts at sea.
----
Alt: Tidefall floor lamp with translucent linen layers aglow
----
Photographer: Lichterei Studio
----
License: Courtesy of Lichterei
----
Link:
----
Template: image
----
Sort: 3
----
Uuid: bUbLFbPgBpL51DSp

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 KiB

View File

@@ -0,0 +1,29 @@
Caption: Tidefall dimmed low to frame a stone fireplace vignette.
----
Alt: Tidefall floor lamp beside textured stone wall
----
Photographer: Lichterei Studio
----
License: Courtesy of Lichterei
----
Link:
----
Template: image
----
Sort: 2
----
Uuid: GPuhd1glEC35U9k1

Binary file not shown.

After

Width:  |  Height:  |  Size: 206 KiB

View File

@@ -0,0 +1,29 @@
Caption: Tidefall embracing the curve of an arched reading niche.
----
Alt: Tidefall floor lamp glowing through layered textile shade
----
Photographer: Lichterei Studio
----
License: Courtesy of Lichterei
----
Link:
----
Template: image
----
Sort: 4
----
Uuid: 9n3HLGrBUs8MZUnB

Binary file not shown.

After

Width:  |  Height:  |  Size: 231 KiB

View File

@@ -0,0 +1,25 @@
Caption: Tidefall greeting guests with a gentle welcome wash.
----
Alt: Tidefall floor lamp illuminating an entryway bench
----
Photographer: Lichterei Studio
----
License: Courtesy of Lichterei
----
Link:
----
Template: image
----
Uuid: o3d9HlDINEzeJvp8

View File

@@ -0,0 +1,25 @@
Title: Dune Loom Lantern
----
Cover: - file://TcCivi92OPvsiwka
----
Headline: Sculptural wall light with woven depth
----
Subheadline: Clay-toned lattice cradling opal glass
----
Text: <p>Dune Loom wraps hand-dyed jute around a frosted opal core, melding artisanal craft with a gentle, architectural presence. The lantern throws a crescent of light upward and down, perfect for layering ambience in living rooms and hallways.</p><p>Each piece is sealed with breathable clay pigment, giving the fixture a sun-baked warmth that feels both grounded and indulgent.</p>
----
Tags: wall light, woven, accent
----
Uuid: w8ymxqAzqTvYkHJ4

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

View File

@@ -0,0 +1,29 @@
Caption: Dune Loom Lantern tracing soft halos across clay plaster.
----
Alt: Dune Loom wall lamp glowing against textured clay
----
Photographer: Lichterei Studio
----
License: Courtesy of Lichterei
----
Link:
----
Template: image
----
Sort: 1
----
Uuid: oe7VNInWgLwgKYOZ

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

View File

@@ -0,0 +1,29 @@
Caption: Dune Loom's wrapped fibres reveal their hand-braided origins.
----
Alt: Close detail of Dune Loom Lantern's jute lattice
----
Photographer: Lichterei Studio
----
License: Courtesy of Lichterei
----
Link:
----
Template: image
----
Sort: 5
----
Uuid: 1R9Haswet76cNlUB

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

View File

@@ -0,0 +1,29 @@
Caption: Dune Loom glowing softly along a textured hallway curve.
----
Alt: Dune Loom Lantern illuminating an arched corridor
----
Photographer: Lichterei Studio
----
License: Courtesy of Lichterei
----
Link:
----
Template: image
----
Sort: 2
----
Uuid: i8yimrGbe132VGr5

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

View File

@@ -0,0 +1,29 @@
Caption: Light spilling from Dune Loom paints the wall like desert sunlight.
----
Alt: Dune Loom Lantern sending warm beams across a wall
----
Photographer: Lichterei Studio
----
License: Courtesy of Lichterei
----
Link:
----
Template: image
----
Sort: 3
----
Uuid: TcCivi92OPvsiwka

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

View File

@@ -0,0 +1,29 @@
Caption: Night scene with Dune Loom guiding guests with a soft glow.
----
Alt: Dune Loom Lantern casting crescent light during evening
----
Photographer: Lichterei Studio
----
License: Courtesy of Lichterei
----
Link:
----
Template: image
----
Sort: 4
----
Uuid: 6rSAbkLtovvdhS2E

View File

@@ -0,0 +1,25 @@
Title: Summit Ember Chandelier
----
Cover: - file://PHRV0Y0YkDOf7Cdc
----
Headline: Layered tiers sculpted for social heights
----
Subheadline: Forged steel arms with smoked glass globes
----
Text: <p>Summit Ember anchors rooms with a sculptural canopy of forged steel, offset by smoked glass globes that glow like embers. Its multi-tiered composition spreads light evenly, ideal for lofted living rooms and dining stages.</p><p>Dim-to-amber modules soften the atmosphere for late-night conversations while keeping the chandelier's silhouette crisp and architectural.</p>
----
Tags: chandelier, statement, living room
----
Uuid: XqbutgSsL5ibgjxP

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

View File

@@ -0,0 +1,29 @@
Caption: Summit Ember chandelier staged above a stone coffee table.
----
Alt: Summit Ember chandelier illuminating sculpted stone furniture
----
Photographer: Lichterei Studio
----
License: Courtesy of Lichterei
----
Link:
----
Template: image
----
Sort: 1
----
Uuid: G8fDPmaJBTPAYPX6

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 KiB

View File

@@ -0,0 +1,29 @@
Caption: Summit Ember's warm cascade mirrored in a glass partition.
----
Alt: Summit Ember chandelier reflecting in a dark glass wall
----
Photographer: Lichterei Studio
----
License: Courtesy of Lichterei
----
Link:
----
Template: image
----
Sort: 2
----
Uuid: VI8RHCHCnTx1ygYK

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

View File

@@ -0,0 +1,29 @@
Caption: Summit Ember sketched against a twilight-toned ceiling.
----
Alt: Summit Ember chandelier silhouetted against moody ceiling
----
Photographer: Lichterei Studio
----
License: Courtesy of Lichterei
----
Link:
----
Template: image
----
Sort: 3
----
Uuid: PHRV0Y0YkDOf7Cdc

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

View File

@@ -0,0 +1,29 @@
Caption: Summit Ember's globes emitting ember-like highlights.
----
Alt: Detail of Summit Ember chandelier's smoked glass sphere
----
Photographer: Lichterei Studio
----
License: Courtesy of Lichterei
----
Link:
----
Template: image
----
Sort: 4
----
Uuid: fWxKEZqZZp27Zmsb

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 KiB

View File

@@ -0,0 +1,29 @@
Caption: Summit Ember anchoring a double-height living room vignette.
----
Alt: Summit Ember chandelier hanging in a tall living room
----
Photographer: Lichterei Studio
----
License: Courtesy of Lichterei
----
Link:
----
Template: image
----
Sort: 5
----
Uuid: p8iAVxYBqkjR8eAA

View File

@@ -0,0 +1,25 @@
Title: Cascade Veil Column
----
Cover: - file://KwkXlLQwSJP3JhYI
----
Headline: Vertical ribbons of luminescence
----
Subheadline: Etched glass fins with programmable warmth
----
Text: <p>Cascade Veil rises as a slender column of etched glass fins, each one channeling light into a gentle shimmer. The programmable warm-to-neutral spectrum lets you match the lamp to the mood of your music or evening ritual.</p><p>The base remains discreet, allowing the illuminated ribbons to take centre stage beside sofas, in entry halls, or tucked between bookshelves.</p>
----
Tags: column, floor lamp, programmable
----
Uuid: Ne4eXh9gk3SPWsxu

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

View File

@@ -0,0 +1,25 @@
Caption: Cascade Veil Column anchoring a lounge with vertical shimmer.
----
Alt: Cascade Veil column lamp beside a lounge chair
----
Photographer: Lichterei Studio
----
License: Courtesy of Lichterei
----
Link:
----
Template: image
----
Uuid: zCSNdxdxQLv7v90m

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 KiB

View File

@@ -0,0 +1,25 @@
Caption: Cascade Veil catching light across overlapping glass fins.
----
Alt: Detail of Cascade Veil column lamp's layered glass
----
Photographer: Lichterei Studio
----
License: Courtesy of Lichterei
----
Link:
----
Template: image
----
Uuid: ypnar0L4JLSOhyzI

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

View File

@@ -0,0 +1,25 @@
Caption: Cascade Veil diffusing a misty glow throughout a music lounge.
----
Alt: Cascade Veil column lamp illuminating a music lounge
----
Photographer: Lichterei Studio
----
License: Courtesy of Lichterei
----
Link:
----
Template: image
----
Uuid: EL2AU2LNatipeWPl

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 KiB

View File

@@ -0,0 +1,25 @@
Caption: Cascade Veil reflecting soft gradients across stone surfaces.
----
Alt: Cascade Veil column lamp beside textured stone
----
Photographer: Lichterei Studio
----
License: Courtesy of Lichterei
----
Link:
----
Template: image
----
Uuid: ywQvOO1zShxtHb0k

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 KiB

View File

@@ -0,0 +1,25 @@
Caption: Cascade Veil turned to ember mode for late-night ambience.
----
Alt: Cascade Veil column lamp glowing with ember-toned gradients
----
Photographer: Lichterei Studio
----
License: Courtesy of Lichterei
----
Link:
----
Template: image
----
Uuid: KwkXlLQwSJP3JhYI

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

View File

@@ -0,0 +1,25 @@
Caption: Cascade Veil standing beside twin lounge chairs.
----
Alt: Cascade Veil column lamp illuminating paired lounge chairs
----
Photographer: Lichterei Studio
----
License: Courtesy of Lichterei
----
Link:
----
Template: image
----
Uuid: SbAezZovkgdEbopo

View File

@@ -0,0 +1,25 @@
Title: Botanika Glow Table Lamp
----
Cover: - file://ta7NGtnZzvMSzTEF
----
Headline: Botanical light for intimate corners
----
Subheadline: Mouth-blown glass dome with terracotta base
----
Text: <p>Botanika Glow brings the garden indoors with a gentle dome of mouth-blown glass perched on a terracotta base. The nested LED tray allows foliage-inspired patterns to diffuse across nearby walls.</p><p>Its modest footprint makes it ideal for side tables, consoles, and window sills, inviting calm while accenting curated objects.</p>
----
Tags: table lamp, glass, cosy
----
Uuid: wAgKEa9FhpZ5mTMG

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

View File

@@ -0,0 +1,25 @@
Caption: Botanika Glow casting botanical silhouettes across nearby walls.
----
Alt: Botanika Glow table lamp highlighting fern silhouettes
----
Photographer: Lichterei Studio
----
License: Courtesy of Lichterei
----
Link:
----
Template: image
----
Uuid: JfJDhAS8XTPgtAaf

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 KiB

View File

@@ -0,0 +1,25 @@
Caption: Botanika Glow revealing tinted glass gradients inspired by foliage.
----
Alt: Detail of Botanika Glow lamp's tinted glass dome
----
Photographer: Lichterei Studio
----
License: Courtesy of Lichterei
----
Link:
----
Template: image
----
Uuid: rireqNIOuBwm0JP9

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

View File

@@ -0,0 +1,25 @@
Caption: Botanika Glow table lamp after a misting session in the studio.
----
Alt: Botanika Glow lamp dome with dewy reflections
----
Photographer: Lichterei Studio
----
License: Courtesy of Lichterei
----
Link:
----
Template: image
----
Uuid: J9nD5vVe6kNTjN6G

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

View File

@@ -0,0 +1,25 @@
Caption: Botanika Glow blending with hand-selected succulents on a shelf.
----
Alt: Botanika Glow lamp illuminating sculptural succulents
----
Photographer: Lichterei Studio
----
License: Courtesy of Lichterei
----
Link:
----
Template: image
----
Uuid: ta7NGtnZzvMSzTEF

Binary file not shown.

After

Width:  |  Height:  |  Size: 234 KiB

View File

@@ -0,0 +1,25 @@
Caption: Botanika Glow's terracotta base perched among curated objects.
----
Alt: Close-up of Botanika Glow lamp base and curated decor
----
Photographer: Lichterei Studio
----
License: Courtesy of Lichterei
----
Link:
----
Template: image
----
Uuid: 0QpycMSjftE9nh4q

View File

@@ -0,0 +1,25 @@
Title: Horizon Hush Wall Light
----
Cover: - file://oQRCHqkIUNESUPJp
----
Headline: Ambient line light for layered comfort
----
Subheadline: Powder-coated rail with fabric diffuser
----
Text: <p>Horizon Hush spans the wall as a slender, fabric-faced rail that emits a barely-there glow. The linear fixture can be mounted horizontally or vertically, making it a flexible companion for sofas, hallways, or reading corners.</p><p>A magnetic diffuser allows easy access to the smart lighting engine, ensuring the ambience always matches the soundtrack.</p>
----
Tags: wall light, linear, ambient
----
Uuid: PjvoKxwSNH1m9vjC

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

View File

@@ -0,0 +1,25 @@
Caption: Horizon Hush tracing a subtle horizon line above timber panelling.
----
Alt: Horizon Hush wall light glowing across timber panelling
----
Photographer: Lichterei Studio
----
License: Courtesy of Lichterei
----
Link:
----
Template: image
----
Uuid: QHkCr8pRTluhzX70

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

View File

@@ -0,0 +1,25 @@
Caption: Horizon Hush wall light curving gently around a reading alcove.
----
Alt: Horizon Hush linear wall lamp wrapping a reading alcove
----
Photographer: Lichterei Studio
----
License: Courtesy of Lichterei
----
Link:
----
Template: image
----
Uuid: IAl9t0J8Xy3XnXxw

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

View File

@@ -0,0 +1,25 @@
Caption: Horizon Hush adding a soft gradient above a console vignette.
----
Alt: Horizon Hush wall light highlighting a console arrangement
----
Photographer: Lichterei Studio
----
License: Courtesy of Lichterei
----
Link:
----
Template: image
----
Uuid: EC7pNvYO0LFdSuHW

Binary file not shown.

After

Width:  |  Height:  |  Size: 203 KiB

View File

@@ -0,0 +1,25 @@
Caption: Horizon Hush spanning the length of a hallway.
----
Alt: Horizon Hush wall light guiding a hallway
----
Photographer: Lichterei Studio
----
License: Courtesy of Lichterei
----
Link:
----
Template: image
----
Uuid: uuylPxWZl8MyybAG

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

View File

@@ -0,0 +1,25 @@
Caption: Horizon Hush at its lowest setting, barely outlining the wall.
----
Alt: Horizon Hush wall light dimmed to a subtle glow
----
Photographer: Lichterei Studio
----
License: Courtesy of Lichterei
----
Link:
----
Template: image
----
Uuid: B1la4J7v249AHeXu

Binary file not shown.

After

Width:  |  Height:  |  Size: 218 KiB

View File

@@ -0,0 +1,25 @@
Caption: Horizon Hush layered through gentle fog from a diffuser.
----
Alt: Horizon Hush wall light glowing through soft haze
----
Photographer: Lichterei Studio
----
License: Courtesy of Lichterei
----
Link:
----
Template: image
----
Uuid: 9UWtZINIn5FrO9If

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 KiB

View File

@@ -0,0 +1,25 @@
Caption: Horizon Hush colouring a lounge wall with gentle gradients.
----
Alt: Horizon Hush wall light washing a lounge wall
----
Photographer: Lichterei Studio
----
License: Courtesy of Lichterei
----
Link:
----
Template: image
----
Uuid: oQRCHqkIUNESUPJp

View File

@@ -0,0 +1,5 @@
Title: Leuchten
----
Uuid: EgfXk155nyUvqqA1

Some files were not shown because too many files have changed in this diff Show More