diff --git a/assets/css/style.css b/assets/css/style.css index 2b79c49..cdd2c25 100644 --- a/assets/css/style.css +++ b/assets/css/style.css @@ -69,7 +69,7 @@ --white: #fff; /* Texturen */ - --grain: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.78' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); + --grain: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.78' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='1.6 0 0 0 -.3 1.6 0 0 0 -.3 1.6 0 0 0 -.3 0 0 0 0 1'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); --mottle: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='600' height='600'%3E%3Cfilter id='m'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.012' numOctaves='4' seed='7' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .5 0 0 0 0 .28 0 0 0 0 .06 0 0 0 1.3 -.5'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23m)'/%3E%3C/svg%3E"); --grain-soft: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .35 0 0 0 0 .2 0 0 0 0 .05 0 0 0 .2 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); --halftone: radial-gradient(circle at center, var(--dot, rgba(0, 0, 0, .55)) 0 1.5px, transparent 1.9px); @@ -94,6 +94,8 @@ html { -webkit-text-size-adjust: 100%; scroll-padding-top: calc(var(--nav-h) + 1 html.lenis, html.lenis body { height: auto; } .lenis.lenis-smooth { scroll-behavior: auto !important; } html, body { overflow-x: clip; } +@supports not (overflow: clip) { body { overflow-x: hidden; } } +html:has(body.menu-open) { overflow: hidden; } body { margin: 0; background: var(--grain-soft) 0 0 / 240px, var(--cream); @@ -101,7 +103,6 @@ body { font-family: var(--f-body); font-size: clamp(1rem, .95rem + .3vw, 1.15rem); line-height: 1.55; - overflow-x: hidden; -webkit-font-smoothing: antialiased; } img, svg { display: block; max-width: 100%; height: auto; } @@ -145,6 +146,8 @@ p:last-child { margin-bottom: 0; } .h2 { font-size: clamp(3.4rem, 11.5vw, 11rem); color: var(--red); } .display.h2 { margin-bottom: .22em; } +.display.x3d { line-height: .94; } +.hero__big.x3d { line-height: .82; } .h2--sm { font-size: clamp(3rem, 8.5vw, 8rem); } .lead { font-size: clamp(1.08rem, 1rem + .45vw, 1.35rem); max-width: 36ch; } .lead strong { font-weight: 800; } @@ -245,7 +248,7 @@ p:last-child { margin-bottom: 0; } } .burst { display: grid; place-items: center; - width: clamp(92px, 11vw, 160px); aspect-ratio: 1; + width: 5.8em; aspect-ratio: 1; font-family: var(--f-sticker); text-transform: uppercase; text-align: center; line-height: .95; font-size: clamp(1rem, .8rem + 1vw, 1.7rem); color: var(--ink); @@ -266,12 +269,13 @@ p:last-child { margin-bottom: 0; } /* ============ Texturen & Licht ============ .fx-Ebenen liegen hinter dem Inhalt (z-index 0), der Inhalt (.wrap) darüber. */ -.section > .wrap, .hero > *, .page-hero > .wrap { position: relative; z-index: 2; } -.fx { position: absolute; inset: 0; z-index: 0; pointer-events: none; overflow: hidden; } +.section, .footer, .only-here, .tenders { isolation: isolate; } +.section > .wrap, .hero > *, .page-hero > .wrap, .tenders > .wrap { position: relative; z-index: 2; } +.fx { position: absolute; inset: 0; pointer-events: none; overflow: hidden; } .fx > * { position: absolute; } /* Feuerwirbel: SVG als Maske, Farbe frei wählbar */ .fx__swirl { - left: 50%; top: var(--swirl-y, 50%); width: var(--swirl-size, max(1900px, 150vw)); aspect-ratio: 1; + left: 50%; top: var(--swirl-y, 50%); width: var(--swirl-size, min(1500px, 115vw)); aspect-ratio: 1; translate: -50% -50%; background: var(--swirl, rgba(90, 0, 0, .42)); -webkit-mask: url(../img/fx/flame-swirl.svg) center / contain no-repeat; @@ -279,8 +283,8 @@ p:last-child { margin-bottom: 0; } } .fx__spot { inset: 0; background: radial-gradient(var(--spot-size, 60% 55%) at var(--spot-x, 50%) var(--spot-y, 45%), var(--spot, rgba(255, 90, 40, .55)), transparent 70%); } .fx__vignette { inset: 0; background: radial-gradient(120% 90% at 50% 45%, transparent 55%, var(--vignette, rgba(40, 0, 0, .45))); } -.fx__grain { inset: 0; background: var(--grain) 0 0 / 240px; opacity: var(--grain-o, .16); mix-blend-mode: var(--grain-mode, multiply); } -.fx__mottle { inset: 0; background: var(--mottle) 0 0 / 600px; opacity: var(--mottle-o, .12); mix-blend-mode: multiply; } +.fx__grain { inset: 0; background: var(--grain) 0 0 / 240px; opacity: var(--grain-o, .22); mix-blend-mode: var(--grain-mode, overlay); } +.fx__mottle { inset: 0; background: var(--mottle) 0 0 / 600px; opacity: var(--mottle-o, .12); mix-blend-mode: multiply; -webkit-mask: linear-gradient(transparent, #000 160px); mask: linear-gradient(transparent, #000 160px); } .fx__dots { inset: 0; background: var(--halftone) 0 0 / var(--dot-size, 10px) var(--dot-size, 10px); opacity: var(--dots-o, .22); @@ -316,6 +320,8 @@ p:last-child { margin-bottom: 0; } .flames i:nth-child(1) { top: 0; background: linear-gradient(var(--yellow-hot), var(--yellow) 60%); --ft: 13s; } .flames i:nth-child(2) { top: 18%; background: linear-gradient(var(--orange), var(--red-hot)); --fw: 900px; --ft: 10s; -webkit-mask-image: url(../img/fx/flame-edge-2.svg); mask-image: url(../img/fx/flame-edge-2.svg); animation-direction: reverse; } .flames i:nth-child(3) { top: 40%; background: var(--flame-front, currentColor); --fw: 1250px; --ft: 15s; } +.flames i, .cta__burst, .fx__sparks i { animation-play-state: paused; } +.flames.is-live i, .cta__fire.is-live .cta__burst, .fx__sparks.is-live i { animation-play-state: running; } @keyframes flicker { to { -webkit-mask-position: var(--fw, 1100px) 100%; mask-position: var(--fw, 1100px) 100%; } } .flames--down { top: auto; bottom: 1px; transform: translateY(100%) scaleY(-1); } @@ -364,6 +370,9 @@ p:last-child { margin-bottom: 0; } transition: transform .35s cubic-bezier(.2, .8, .2, 1); } .nav.is-hidden { transform: translateY(calc(-100% - 12px)); } +.nav::before { content: ""; position: absolute; inset: 0; z-index: -1; background: rgba(251, 238, 214, .92); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); box-shadow: 0 6px 20px rgba(21, 13, 12, .12); opacity: 0; transition: opacity .3s, background-color .3s; } +.nav.is-scrolled::before { opacity: 1; } +.nav.is-dark::before { background: rgba(23, 11, 9, .82); } .nav__brand { display: flex; align-items: center; gap: .6rem; text-decoration: none; color: var(--ink); } .nav__brand img { height: 58px; width: auto; } .nav__brand .wm { width: 150px; height: auto; color: var(--ink); } @@ -426,9 +435,8 @@ body.menu-open .menu-panel { transform: scale(1); opacity: 1; visibility: visibl --spot: rgba(255, 110, 40, .55); --spot-y: 48%; --spot-size: 45% 50%; --swirl: rgba(110, 4, 2, .5); --dot: rgba(70, 0, 0, .9); --dots-o: .2; - --grain-o: .22; + --grain-o: .3; } -.hero .fx__grain { mix-blend-mode: overlay; opacity: .35; } .hero__stage { position: relative; display: grid; place-items: center; } .hero__title { position: relative; z-index: 1; text-align: left; margin: 0; } .hero__eyebrow { @@ -451,24 +459,15 @@ body.menu-open .menu-panel { transform: scale(1); opacity: 1; visibility: visibl .hero__big .part { display: inline-block; letter-spacing: .02em; } .hero__burger { position: absolute; z-index: 2; - left: 50%; top: 55%; - width: clamp(250px, 34vw, 620px); + left: 50%; top: 60%; + width: clamp(240px, 29vw, 540px); transform: translate(-50%, -50%); pointer-events: none; } .hero__burger .blast__food { position: relative; z-index: 2; width: 100%; height: auto; filter: drop-shadow(0 34px 34px rgba(60, 0, 0, .45)) saturate(1.08); } -.hero__glow { position: absolute; z-index: 0; left: 50%; top: 52%; width: 120%; aspect-ratio: 1; translate: -50% -50%; border-radius: 50%; background: radial-gradient(closest-side, rgba(255, 190, 60, .55), rgba(255, 90, 20, .25) 55%, transparent); filter: blur(10px); } -.hero__wm { - position: absolute; z-index: 4; - left: 50%; top: 84%; - width: clamp(240px, 34vw, 600px); - transform: translate(-50%, -50%) rotate(-6deg); - color: var(--yellow); -} -.hero__wm svg, .hero__wm img { width: 100%; height: auto; } -.hero__wm .wm-fill { filter: drop-shadow(3px 0 0 var(--ink)) drop-shadow(-3px 0 0 var(--ink)) drop-shadow(0 3px 0 var(--ink)) drop-shadow(0 -3px 0 var(--ink)) drop-shadow(0 6px 0 var(--ink)) drop-shadow(0 16px 16px rgba(30, 0, 0, .45)); } -.hero__st1 { position: absolute; z-index: 5; left: 3%; top: 70%; --r: -12deg; } -.hero__st2 { position: absolute; z-index: 5; right: 4%; top: 66%; --r: 9deg; } +.hero__glow { position: absolute; z-index: 0; left: 50%; top: 55%; width: 105%; aspect-ratio: 1; translate: -50% -50%; border-radius: 50%; background: radial-gradient(closest-side, rgba(255, 170, 50, .32), rgba(255, 90, 20, .14) 55%, transparent); } +.hero__st1 { position: absolute; z-index: 5; left: 4%; top: 74%; --r: -12deg; } +.hero__st2 { position: absolute; z-index: 5; right: 4%; top: 72%; --r: 9deg; } .hero__rooster { position: absolute; z-index: 5; right: 9%; top: 2%; width: clamp(80px, 9vw, 150px); transform: rotate(12deg); } .hero__bottom { position: relative; z-index: 5; @@ -494,6 +493,7 @@ body.menu-open .menu-panel { transform: scale(1); opacity: 1; visibility: visibl } .open-badge.is-open::before { background: #1fa83a; box-shadow: 0 0 0 0 rgba(31, 168, 58, .6); animation: ping 1.8s infinite; } .open-badge.is-closed::before { background: var(--red); } +@media (max-width: 480px) { .open-badge { border-radius: 16px; line-height: 1.25; } } @keyframes ping { 70% { box-shadow: 0 0 0 10px rgba(31, 168, 58, 0); } 100% { box-shadow: 0 0 0 0 rgba(31, 168, 58, 0); } } /* ============ Ticker (zwei gekreuzte Bänder) ============ */ @@ -523,7 +523,7 @@ body.menu-open .menu-panel { transform: scale(1); opacity: 1; visibility: visibl @keyframes ticker { to { transform: translateX(-50%); } } /* ============ Champions ============ */ -.champs { text-align: center; overflow-x: clip; --mottle-o: .06; --grain-o: .08; --dot: rgba(229, 19, 11, .7); --dots-o: .14; --dots-mask: radial-gradient(90% 80% at 50% 40%, transparent 45%, #000 95%); } +.champs { text-align: center; overflow-x: clip; --mottle-o: .12; --grain-o: .16; --dot: rgba(229, 19, 11, .7); --dots-o: .14; --dots-mask: radial-gradient(90% 80% at 50% 40%, transparent 45%, #000 95%); } .champs .h2 { max-width: 12ch; margin: 0 auto .3em; --sw: 0; } .champs .lead { margin: 0 auto 2.2rem; } .champs__cards { @@ -559,7 +559,8 @@ body.menu-open .menu-panel { transform: scale(1); opacity: 1; visibility: visibl .champ__rays { inset: -50%; background: repeating-conic-gradient(from 0deg at 50% 62%, rgba(255, 220, 120, .22) 0 6deg, transparent 6deg 15deg); -webkit-mask: radial-gradient(closest-side at 50% 62%, #000, transparent); mask: radial-gradient(closest-side at 50% 62%, #000, transparent); } .champ--ink { --champ-bg: radial-gradient(100% 70% at 50% 85%, #5a1307, var(--ink) 60%); --champ-depth: #000; } .champ__embers { inset: 0; background: radial-gradient(60% 40% at 50% 100%, rgba(255, 90, 18, .65), transparent 70%), radial-gradient(30% 25% at 20% 95%, rgba(255, 190, 40, .35), transparent), radial-gradient(30% 25% at 85% 92%, rgba(255, 60, 10, .4), transparent); } -.champ .fx__grain { inset: 0; mix-blend-mode: overlay; opacity: .4; } +.champ .fx__grain { inset: 0; opacity: .3; } +.champ--orange .champ__kicker, .champ--orange .champ__go { color: var(--ink); } .champ__kicker { font-family: var(--f-sticker); text-transform: uppercase; font-size: .95rem; letter-spacing: .08em; color: var(--yellow); transform: translateZ(30px); } .champ__name { font-size: clamp(2.6rem, 1.6rem + 3.4vw, 5.2rem); color: var(--cream); margin-top: .2em; @@ -571,8 +572,8 @@ body.menu-open .menu-panel { transform: scale(1); opacity: 1; visibility: visibl .champ__food { position: relative; z-index: 2; display: block; width: 112%; margin: auto -6% 0; transform: translateZ(80px); transition: transform .7s var(--ease-pop); } .champ__food .blast__food { position: relative; z-index: 2; width: 100%; height: auto; filter: drop-shadow(0 26px 22px rgba(0, 0, 0, .45)); } .champ:hover .champ__food { transform: translateZ(80px) scale(1.07) rotate(-2deg); } -.champ__foot { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-top: 1rem; transform: translateZ(30px); } -.champ__price { font-size: clamp(1.1rem, .9rem + .6vw, 1.5rem); background-color: var(--yellow); color: var(--ink); } +.champ__foot { position: relative; z-index: 4; display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-top: 1rem; transform: translateZ(100px); } +.champ .champ__price { font-size: clamp(1.1rem, .9rem + .6vw, 1.5rem); background-color: var(--yellow); color: var(--ink); } .champ--ink .champ__price { background-color: var(--red); color: var(--white); } .champ__go { display: inline-flex; align-items: center; gap: .4em; font-family: var(--f-sticker); text-transform: uppercase; font-size: .95rem; } .champ__go svg { width: 1.1em; height: 1.1em; transition: transform .3s var(--ease-pop); } @@ -581,25 +582,25 @@ body.menu-open .menu-panel { transform: scale(1); opacity: 1; visibility: visibl /* ============ Wings (Crunch-Time-Plakat) ============ */ .wings { overflow-x: clip; - background: radial-gradient(80% 60% at 70% 40%, #ff7426, var(--orange) 45%, #e04205); - --spot: rgba(255, 200, 90, .4); --spot-x: 72%; --spot-y: 35%; + background: var(--orange); + --spot: rgba(255, 190, 70, .55); --spot-x: 72%; --spot-y: 55%; --spot-size: 45% 55%; --grain-o: .3; --dot: rgba(140, 30, 0, .9); --dots-o: .18; --dots-mask: linear-gradient(160deg, #000, transparent 45%); } -.wings .fx__grain { mix-blend-mode: overlay; opacity: .4; } .wings__stage { position: relative; display: grid; grid-template-columns: 1fr 1fr; grid-template-areas: "kick kick" "big big" "info hero"; align-items: start; } .wings__stage .kicker { grid-area: kick; justify-self: start; } +.wings .classic-wings, .wings .sauce { color: var(--ink); } .wings__big { grid-area: big; position: relative; z-index: 1; font-size: clamp(4.6rem, 15vw, 15.5rem); color: var(--cream); margin: 0; --ext: #9a2800; text-shadow: 0 2px 0 var(--ext), 0 4px 0 var(--ext), 0 6px 0 var(--ext), 0 8px 0 var(--ext), 0 10px 0 var(--ext), 0 12px 0 var(--ext), 0 24px 30px rgba(90, 20, 0, .45); } -.wings__hero { grid-area: hero; position: relative; z-index: 2; margin-top: clamp(-14rem, -16vw, -5rem); } +.wings__hero { grid-area: hero; position: relative; z-index: 2; margin-top: clamp(-8rem, -8vw, -3rem); } .wings__hero .blast__food { position: relative; z-index: 2; width: 100%; max-width: 680px; margin-left: auto; filter: drop-shadow(0 30px 30px rgba(90, 20, 0, .5)) saturate(1.1) contrast(1.04); } -.wings__hero .burst { position: absolute; z-index: 4; left: 6%; top: 8%; --r: -12deg; } +.wings__hero .burst { position: absolute; z-index: 4; left: 2%; bottom: 6%; --r: -12deg; } .wings__info { grid-area: info; position: relative; z-index: 3; align-self: end; padding-bottom: 2rem; } -.wings__claim { font-size: clamp(1.4rem, 1rem + 1.6vw, 2.4rem); color: var(--yellow); margin-bottom: .6rem; max-width: 14ch; text-shadow: 0 2px 0 #8a2400, 0 4px 0 #8a2400, 0 10px 16px rgba(0, 0, 0, .25); } -.wings__lead { color: var(--cream); } +.wings__claim { font-size: clamp(1.5rem, 1rem + 1.6vw, 2.4rem); color: var(--ink); margin-bottom: .6rem; max-width: 14ch; } +.wings__lead { color: var(--ink); font-weight: 500; } .sauce-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: clamp(1rem, 2vw, 1.8rem); margin-top: clamp(4rem, 7vw, 6rem); perspective: 1200px; } .sauce { @@ -618,11 +619,11 @@ body.menu-open .menu-panel { transform: scale(1); opacity: 1; visibility: visibl .sauce:nth-child(odd) { --r: -2deg; } .sauce:nth-child(even) { --r: 2deg; } .sauce:hover { --r: 0deg; } -.sauce__img { aspect-ratio: 1; display: grid; place-items: center; margin: -3.4rem auto .4rem; width: 92%; position: relative; transform: translateZ(60px); } +.sauce__img { aspect-ratio: 5 / 4; display: grid; place-items: center; margin: -3.4rem auto .4rem; width: 92%; position: relative; transform: translateZ(60px); } .sauce__img::before { content: ""; position: absolute; inset: 14% 4% 10%; border-radius: 50%; background: radial-gradient(closest-side, var(--sauce), transparent); opacity: .55; filter: blur(14px); } .sauce__img img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; transition: transform .6s var(--ease-pop); filter: drop-shadow(0 16px 14px rgba(70, 20, 0, .35)); } .sauce:hover .sauce__img img { transform: scale(1.1) rotate(-4deg); } -.sauce h3 { font-family: var(--f-display); text-transform: uppercase; font-weight: 400; font-size: clamp(1.6rem, 1.2rem + 1.2vw, 2.3rem); line-height: .95; margin: 0 0 .35rem; color: var(--red); text-shadow: 0 1px 0 var(--oxblood), 0 2px 0 var(--oxblood), 0 3px 0 var(--oxblood), 0 8px 10px rgba(0, 0, 0, .15); transform: translateZ(30px); } +.sauce h3 { min-height: 1.9em; display: grid; place-items: center; font-family: var(--f-display); text-transform: uppercase; font-weight: 400; font-size: clamp(1.6rem, 1.2rem + 1.2vw, 2.3rem); line-height: .95; margin: 0 0 .35rem; color: var(--red); text-shadow: 0 1px 0 var(--oxblood), 0 2px 0 var(--oxblood), 0 3px 0 var(--oxblood), 0 8px 10px rgba(0, 0, 0, .15); transform: translateZ(30px); } .sauce p { font-size: .95rem; margin: 0; } .sauce .price { display: inline-block; margin-top: .7rem; transform: translateZ(20px); } @@ -649,20 +650,22 @@ body.menu-open .menu-panel { transform: scale(1); opacity: 1; visibility: visibl .classic-wings__prices .price { background: var(--red); color: var(--white); } .classic-wings__prices .price small { font-family: var(--f-body); font-weight: 700; font-size: .8em; opacity: .9; margin-right: .3em; } -/* ============ Photo band ============ */ -.band { position: relative; height: clamp(360px, 70vw, 900px); overflow: hidden; background: #d9c8b2; } -.band img { position: absolute; inset: -10% 0; width: 100%; height: 120%; object-fit: cover; filter: saturate(1.15) contrast(1.06); } -.band__shade { position: absolute; inset: 0; z-index: 1; background: radial-gradient(90% 80% at 50% 45%, transparent 50%, rgba(60, 10, 0, .45)), linear-gradient(transparent 60%, rgba(23, 11, 9, .55)); } -.band .wave { color: var(--orange); } -.band .wave--top { top: -1px; transform: none; } -.band__tag { position: absolute; z-index: 4; right: 6%; bottom: 26%; --r: 7deg; font-size: clamp(1rem, .7rem + 1.4vw, 2rem); } +/* ============ Tenders (Papier-Plakat) ============ */ +.tenders { background: var(--cream); overflow-x: clip; --dot: rgba(229, 19, 11, .8); --dots-o: .16; --dots-mask: radial-gradient(60% 70% at 72% 55%, #000, transparent 75%); --mottle-o: .12; padding-bottom: clamp(8rem, 13vw, 12rem); } +.tenders .torn { color: var(--cream); } +.tenders__rays { inset: -20%; background: repeating-conic-gradient(from 0deg at 68% 55%, rgba(229, 19, 11, .13) 0 7deg, transparent 7deg 16deg); -webkit-mask: radial-gradient(closest-side at 68% 55%, #000 30%, transparent); mask: radial-gradient(closest-side at 68% 55%, #000 30%, transparent); } +.tenders__grid { display: grid; grid-template-columns: .9fr 1.1fr; gap: 2rem; align-items: center; } +.tenders__title { color: var(--red); max-width: 8ch; } +.tenders .lead { font-weight: 500; } +.tenders__food { position: relative; } +.tenders__food .blast__food { position: relative; z-index: 2; width: 100%; filter: drop-shadow(0 30px 26px rgba(110, 40, 0, .3)) saturate(1.08); } +.tenders__tag { position: absolute; z-index: 4; right: 2%; top: -4%; --r: 8deg; font-size: clamp(1rem, .7rem + 1.2vw, 1.8rem); } /* ============ Buckets ============ */ -.buckets { overflow-x: clip; background: radial-gradient(120% 70% at 50% 100%, #3a0d05, var(--ink) 60%); --spot: rgba(255, 80, 20, .28); --spot-y: 100%; --spot-size: 80% 60%; } -.buckets .fx__grain { mix-blend-mode: soft-light; opacity: .5; } +.buckets { overflow-x: clip; background: var(--ink); --spot: rgba(255, 80, 20, .35); --spot-y: 100%; --spot-size: 90% 70%; --swirl: rgba(150, 25, 5, .3); --swirl-y: 75%; --grain-o: .35; } .fx__embers { inset: auto 0 0 0; height: 60%; background: radial-gradient(40% 50% at 20% 100%, rgba(255, 110, 20, .35), transparent 70%), radial-gradient(40% 50% at 80% 100%, rgba(255, 60, 10, .35), transparent 70%), radial-gradient(60% 40% at 50% 100%, rgba(255, 170, 40, .25), transparent 70%); } .fx__sparks { inset: 0; } -.fx__sparks i { position: absolute; bottom: -10px; width: var(--sz, 4px); height: var(--sz, 4px); border-radius: 50%; background: #ffcf5a; box-shadow: 0 0 8px 2px rgba(255, 140, 30, .8); opacity: 0; animation: spark var(--d, 6s) linear var(--dl, 0s) infinite; } +.fx__sparks i { position: absolute; bottom: -10px; width: var(--sz, 4px); height: var(--sz, 4px); border-radius: 50%; background: #ffd56a; box-shadow: 0 0 10px 3px rgba(255, 140, 30, .85), 0 0 22px 6px rgba(255, 80, 20, .35); opacity: 0; animation: spark var(--d, 6s) linear var(--dl, 0s) infinite; } @keyframes spark { 0% { transform: translate(0, 0); opacity: 0; } 10% { opacity: 1; } @@ -670,7 +673,7 @@ body.menu-open .menu-panel { transform: scale(1); opacity: 1; visibility: visibl 100% { transform: translate(var(--dx, 40px), calc(-1 * var(--h, 600px))); opacity: 0; } } .buckets .h2 { color: var(--yellow); --ext: #8a1f00; font-size: clamp(3.4rem, 9.5vw, 9.5rem); } -.buckets__head { display: grid; grid-template-columns: 1.4fr .6fr; gap: 2rem; align-items: end; } +.buckets__head { display: grid; grid-template-columns: auto minmax(0, 30ch); gap: 2rem 4rem; align-items: end; justify-content: start; } .buckets__head .lead { color: var(--cream); opacity: .92; } .fight-card-row { display: grid; grid-template-columns: 1fr auto 1fr; gap: clamp(1rem, 3vw, 2.5rem); align-items: center; margin-top: clamp(3rem, 6vw, 5rem); } .fight-card.is-tilting { transition: transform .15s ease-out; } @@ -689,30 +692,31 @@ body.menu-open .menu-panel { transform: scale(1); opacity: 1; visibility: visibl .fight-card::before { content: ""; position: absolute; inset: auto 0 0 0; height: 64px; background-color: #fff; - background-image: linear-gradient(90deg, rgba(224, 20, 14, .55) 50%, transparent 50%), linear-gradient(rgba(224, 20, 14, .55) 50%, transparent 50%); + background-image: linear-gradient(90deg, rgba(229, 19, 11, .8) 50%, transparent 50%), linear-gradient(rgba(229, 19, 11, .8) 50%, transparent 50%); background-size: 32px 32px; opacity: .9; } .fight-card__class { font-family: var(--f-sticker); text-transform: uppercase; color: var(--red-deep); font-size: 1rem; letter-spacing: .08em; } .fight-card h3 { font-family: var(--f-display); font-weight: 400; text-transform: uppercase; margin: .15em 0 .3em; font-size: clamp(2.8rem, 2rem + 3vw, 5rem); line-height: .86; color: var(--red); --ext: var(--oxblood); text-shadow: 1px 1px 0 var(--ext), 2px 2px 0 var(--ext), 3px 3px 0 var(--ext), 4px 4px 0 var(--ext), 5px 5px 0 var(--ext), 8px 10px 14px rgba(0, 0, 0, .2); } -.fight-card ul { list-style: none; margin: 0 0 1.2rem; padding: 0; display: flex; flex-wrap: wrap; gap: .45rem; } +.fight-card ul { list-style: none; margin: 0 0 1.2rem; padding: 0 clamp(0px, 9vw, 150px) 0 0; display: flex; flex-wrap: wrap; gap: .45rem; } .fight-card li { background: var(--white); border: 2px solid var(--ink); border-radius: 999px; padding: .25em .7em; font-weight: 700; font-size: .92rem; } .fight-card__foot { position: relative; z-index: 1; display: flex; justify-content: space-between; align-items: end; gap: 1rem; padding-bottom: 38px; } .fight-card__foot .price { font-size: clamp(1.4rem, 1.1rem + 1vw, 2rem); } -.fight-card__foot img { width: clamp(130px, 15vw, 230px); margin: -5rem -1rem -2.4rem 0; filter: drop-shadow(0 14px 12px rgba(0, 0, 0, .35)); transition: transform .6s var(--ease-pop); } +.fight-card__foot img { position: relative; z-index: 2; width: clamp(150px, 18vw, 280px); margin: -7rem -1.5rem -2.6rem 0; filter: drop-shadow(0 14px 12px rgba(0, 0, 0, .35)); transition: transform .6s var(--ease-pop); } .fight-card:hover .fight-card__foot img { transform: scale(1.08) rotate(-5deg); } .buckets__note { margin-top: 2.5rem; text-align: center; opacity: .8; font-size: .95rem; } /* ============ Take away (route) ============ */ -.takeaway { overflow-x: clip; background: radial-gradient(90% 80% at 30% 30%, var(--yellow-hot), var(--yellow) 50%, #f3a800); color: var(--ink); --spot: rgba(255, 255, 220, .5); --spot-x: 25%; --spot-y: 25%; --dot: rgba(229, 19, 11, .85); --dots-o: .16; --dots-mask: linear-gradient(200deg, #000, transparent 50%); --mottle-o: .06; --grain-o: .1; } +.takeaway { overflow-x: clip; background: var(--yellow); color: var(--ink); --spot: rgba(255, 255, 220, .5); --spot-x: 25%; --spot-y: 25%; --dot: rgba(229, 19, 11, .85); --dots-o: .16; --dots-mask: linear-gradient(200deg, #000, transparent 50%); --mottle-o: .06; --grain-o: .1; } .takeaway .torn { color: var(--yellow); } +.takeaway__burst { right: -12%; top: -8%; width: min(900px, 70vw); aspect-ratio: 1; background: repeating-conic-gradient(rgba(229, 19, 11, .14) 0 6deg, transparent 6deg 15deg); -webkit-mask: radial-gradient(closest-side, #000 25%, transparent); mask: radial-gradient(closest-side, #000 25%, transparent); } .takeaway .h2 { color: var(--white); --stroke-c: var(--ink); --sw: .04em; --ext: var(--ink); max-width: 13ch; } .takeaway__lead { max-width: 40ch; margin-top: 1.4rem; font-weight: 500; } .route { position: relative; margin-top: clamp(6rem, 10vw, 9rem); } .route__svg { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; pointer-events: none; } .route__svg path { fill: none; stroke: var(--ink); stroke-width: 3; stroke-dasharray: 10 12; stroke-linecap: round; opacity: .55; } .route__rider { position: absolute; left: 0; top: 0; width: clamp(64px, 7vw, 100px); z-index: 3; will-change: transform; pointer-events: none; } -.stops { position: relative; z-index: 2; display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(1.2rem, 3vw, 3rem); } +.stops { position: relative; z-index: 2; display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(1.2rem, 3vw, 3rem); align-items: start; } .stop { border: 3px solid var(--ink); border-radius: var(--radius); padding: clamp(1.3rem, 2.4vw, 2rem); @@ -738,7 +742,7 @@ body.menu-open .menu-panel { transform: scale(1); opacity: 1; visibility: visibl .stop__links svg { width: 1em; height: 1em; } /* ============ Visit ============ */ -.visit { --mottle-o: .07; --grain-o: .08; } +.visit { --mottle-o: .12; --grain-o: .16; } .wave--deep svg { filter: drop-shadow(0 -8px 10px rgba(0, 0, 0, .12)); } .visit__grid { display: grid; grid-template-columns: 1.05fr .95fr; gap: clamp(2rem, 5vw, 5rem); align-items: start; } .visit .h2 { max-width: 10ch; } @@ -768,17 +772,17 @@ body.menu-open .menu-panel { transform: scale(1); opacity: 1; visibility: visibl .visit__deco .sticker { position: absolute; z-index: 4; right: -10%; top: 0; --r: 8deg; } /* ============ Final CTA ============ */ -.cta { text-align: center; overflow-x: clip; background: radial-gradient(80% 70% at 50% 55%, #ff2a12, var(--red) 40%, #9a0a05); --spot: rgba(255, 140, 40, .5); --spot-y: 60%; --swirl: rgba(100, 3, 1, .45); --swirl-y: 60%; --dot: rgba(70, 0, 0, .9); --dots-o: .2; } -.cta .fx__grain { mix-blend-mode: overlay; opacity: .35; } +.cta { text-align: center; overflow-x: clip; background: var(--red); --spot: rgba(255, 140, 40, .55); --grain-o: .3; --spot-y: 60%; --swirl: rgba(100, 3, 1, .45); --swirl-y: 60%; --dot: rgba(70, 0, 0, .9); --dots-o: .2; } .cta .h2 { font-size: clamp(5rem, 20vw, 20rem); color: var(--yellow); --ext: #7d0603; position: relative; z-index: 1; } .cta__fire { position: relative; width: clamp(220px, 30vw, 460px); margin: clamp(-5rem, -6vw, -2rem) auto 0; } .cta__burst { - position: absolute; left: 50%; bottom: -6%; width: 170%; aspect-ratio: 1; translate: -50% 0; - background: linear-gradient(var(--yellow-hot), var(--orange) 55%, var(--red-hot)); + position: absolute; left: 50%; bottom: -4%; width: 160%; aspect-ratio: 1; translate: -50% 0; + background: linear-gradient(var(--orange), var(--red-hot) 70%); -webkit-mask: url(../img/fx/flame-burst.svg) center / contain no-repeat; mask: url(../img/fx/flame-burst.svg) center / contain no-repeat; - filter: drop-shadow(0 0 40px rgba(255, 120, 30, .6)); - transform-origin: 50% 90%; animation: burn 1.8s ease-in-out infinite alternate; + transform-origin: 50% 90%; animation: burn 1.9s ease-in-out infinite alternate; } +.cta__burst--back { width: 210%; bottom: -8%; background: linear-gradient(var(--yellow-hot), var(--yellow) 40%, var(--orange)); filter: drop-shadow(0 0 50px rgba(255, 160, 40, .55)); animation-duration: 2.4s; animation-delay: -.8s; } +.cta__burst--front { width: 120%; bottom: -6%; background: linear-gradient(var(--red-hot), var(--red-deep)); animation-duration: 1.5s; animation-delay: -.4s; scale: -1 1; } @keyframes burn { 0% { transform: scale(1, 1) skewX(0deg); } 50% { transform: scale(1.03, .96) skewX(1.5deg); } 100% { transform: scale(.98, 1.05) skewX(-1.5deg); } } .cta__rooster { position: relative; width: 74%; margin: 0 auto; transform: rotate(-8deg); } .cta .lead { margin: 1.6rem auto 2rem; color: var(--white); max-width: 30ch; position: relative; } @@ -786,13 +790,15 @@ body.menu-open .menu-panel { transform: scale(1); opacity: 1; visibility: visibl /* ============ Footer ============ */ .footer { position: relative; background: var(--ink); color: var(--cream); padding: clamp(4rem, 8vw, 6rem) 0 0; overflow: hidden; } -.footer .fx__grain { mix-blend-mode: soft-light; opacity: .5; } -.footer > .wrap, .footer__giant { position: relative; z-index: 2; } +.footer > .wrap { position: relative; z-index: 2; } +.footer__giant { z-index: 1; } .footer__grid { display: grid; grid-template-columns: 1.3fr 1fr 1fr 1fr; gap: 2rem; } .footer h2 { font-family: var(--f-sticker); font-weight: 400; text-transform: uppercase; font-size: 1.05rem; color: var(--yellow); margin: 0 0 .9rem; letter-spacing: .04em; } .footer ul { list-style: none; margin: 0; padding: 0; } .footer li { margin: .35rem 0; } .footer a { text-decoration: none; transition: color .2s; } +.footer li a { display: inline-block; padding: .35rem 0; } +.footer__bottom a { display: inline-block; padding: .5rem .15rem; } .footer a:hover { color: var(--yellow); } .footer__brand p { max-width: 30ch; opacity: .85; } .footer__brand img { width: 84px; margin-bottom: 1rem; } @@ -833,7 +839,6 @@ body.menu-open .menu-panel { transform: scale(1); opacity: 1; visibility: visibl --spot: rgba(255, 110, 40, .5); --spot-x: 72%; --spot-y: 55%; --swirl: rgba(110, 4, 2, .5); --swirl-y: 60%; --dot: rgba(70, 0, 0, .9); --dots-o: .2; } -.page-hero .fx__grain { mix-blend-mode: overlay; opacity: .35; } .page-hero .display { font-size: clamp(5rem, 16vw, 16rem); color: var(--cream); --ext: #7d0603; } .page-hero .lead { color: var(--cream); margin-top: 1.6rem; } .page-hero__img { position: absolute; right: 1%; bottom: 12%; width: clamp(240px, 36vw, 600px); z-index: 2; } @@ -860,8 +865,28 @@ body.nav-visible .cat-nav { top: var(--nav-h); } .cat-nav a.is-active { background: var(--red); border-color: var(--red); color: var(--white); } .menu-cat { padding: clamp(3.5rem, 7vw, 6rem) 0 0; scroll-margin-top: calc(var(--nav-h) + 70px); } +.menu-cat--band { position: relative; isolation: isolate; margin-top: clamp(5rem, 9vw, 8rem); padding: clamp(3rem, 6vw, 5rem) 0 clamp(5rem, 8vw, 7rem); } +.cat-bg { position: absolute; z-index: -1; top: 0; bottom: 0; left: 50%; width: 100vw; translate: -50% 0; background: var(--cat-bg); } +.cat-bg .flames { --fh: clamp(60px, 8vw, 130px); } +.cat-bg .fx { overflow: hidden; } +.cat-bg .torn--in { color: var(--cream); } +.menu-cat--red { --cat-bg: var(--red); --spot: rgba(255, 140, 50, .45); --spot-y: 60%; --swirl: rgba(100, 3, 1, .4); --dot: rgba(70, 0, 0, .9); --dots-o: .16; --grain-o: .3; color: var(--cream); } +.menu-cat--yellow { --cat-bg: var(--yellow); --spot: rgba(255, 255, 220, .5); --dot: rgba(229, 19, 11, .8); --dots-o: .12; --grain-o: .2; } +.menu-cat--ink { --cat-bg: var(--ink); --spot: rgba(255, 80, 20, .3); --spot-y: 100%; --spot-size: 90% 70%; --swirl: rgba(150, 25, 5, .28); --grain-o: .35; color: var(--cream); } +.menu-cat--red .menu-cat__head .display { color: var(--cream); --ext: #7d0603; } +.menu-cat--ink .menu-cat__head .display { color: var(--yellow); --ext: #8a1f00; } +.menu-cat--red .item h3 { color: var(--yellow); } +.menu-cat--ink .item h3 { color: var(--yellow); } +.menu-cat--red .item__price, .menu-cat--ink .item__price { color: var(--cream); } +.menu-cat--red .item__dots, .menu-cat--ink .item__dots { border-color: rgba(251, 238, 214, .4); } +.menu-cat--red .item, .menu-cat--ink .item { border-color: rgba(251, 238, 214, .2); } +.menu-cat--red .item p, .menu-cat--ink .item p { opacity: .9; } +.menu-cat--red .menu-extra span, .menu-cat--ink .menu-extra span { background: rgba(0, 0, 0, .22); } +.menu-cat--red .dish--special { box-shadow: 0 6px 0 var(--oxblood), 0 0 0 3px var(--cream), 0 26px 40px -8px rgba(60, 0, 0, .55); } +.menu-cat--yellow .dish { box-shadow: 0 6px 0 #c98c00, 0 22px 36px -8px rgba(120, 70, 0, .35); } +.page-end { position: relative; height: clamp(26px, 3vw, 44px); margin-top: clamp(3rem, 6vw, 5rem); } .menu-cat__head { display: flex; flex-wrap: wrap; align-items: end; justify-content: space-between; gap: 1rem 2rem; margin-bottom: clamp(1.8rem, 4vw, 3rem); } -.menu-cat__head .display { font-size: clamp(3.4rem, 9vw, 8rem); color: var(--red); --ext: var(--oxblood); } +.menu-cat__head .display { font-size: clamp(3rem, 8.6vw, 8rem); color: var(--red); --ext: var(--oxblood); } .menu-cat__head p { max-width: 46ch; margin: 0; font-weight: 500; } .dish-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(1rem, 2vw, 1.8rem); margin-bottom: clamp(1.5rem, 3vw, 2.5rem); } @@ -873,7 +898,7 @@ body.nav-visible .cat-nav { top: var(--nav-h); } --media-h: clamp(220px, min(22vw, calc(.92 * (100cqi + 2 * var(--pad-x)))), 300px); --checker: conic-gradient(var(--red) 25%, var(--white) 0 50%, var(--red) 0 75%, var(--white) 0); position: relative; display: flex; flex-direction: column; align-items: center; text-align: center; - container-type: inline-size; + container-type: inline-size; color: var(--ink); padding: calc(var(--sq) * 2 + clamp(1.2rem, 2.4vw, 1.7rem)) var(--pad-x) calc(var(--sq) * 2 + clamp(1.2rem, 2.4vw, 1.6rem)); background: var(--checker) 0 0 / calc(var(--sq) * 2) calc(var(--sq) * 2) repeat-x, @@ -904,7 +929,7 @@ body.nav-visible .cat-nav { top: var(--nav-h); } .dish__media img { position: absolute; z-index: 1; left: 11%; top: 6%; width: 78%; height: 88%; object-fit: contain; filter: drop-shadow(0 16px 16px rgba(21, 13, 12, .25)); transition: transform .7s var(--ease-pop); } .dish:hover .dish__media img { transform: scale(1.06) rotate(-2deg); } /* Die neuen Speisenfotos (assets/img/menu/) bringen ihren Kontaktschatten schon mit, deshalb kein zweiter CSS-Schatten */ -.dish__media img.shot, .hero__burger img.shot { filter: none; } +.dish__media img.shot { filter: none; } .dish__badge { position: absolute; z-index: 2; right: calc(var(--pad-x) * .6); top: 14%; font-size: .85rem; --r: 7deg; border-width: 3px; } .dish__body { width: 100%; display: flex; flex-direction: column; align-items: center; gap: .75rem; flex: 1; } .dish p { font-size: .95rem; margin: 0; opacity: .85; max-width: 34ch; } @@ -946,7 +971,7 @@ body.nav-visible .cat-nav { top: var(--nav-h); } } .dish--special .price { background: var(--cream); color: var(--red-deep); } -.dish--promo { justify-content: center; gap: 1.1rem; } +.dish--promo { justify-content: center; gap: 1.1rem; grid-column: span 2; } .dish__kicker { letter-spacing: .32em; } .dish--promo .promo-row { width: 100%; display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding: .9rem 0 0; border-top: 1px solid rgba(247, 235, 217, .35); text-align: left; } .dish--promo .promo-row strong { font-family: var(--f-wide); font-weight: 900; text-transform: uppercase; font-size: 1.15rem; line-height: 1; letter-spacing: -.01em; } @@ -982,7 +1007,6 @@ body.nav-visible .cat-nav { top: var(--nav-h); } border: 4px solid var(--yellow); } .only-here > img, .only-here > div:not(.fx) { position: relative; z-index: 2; } -.only-here .fx__grain { mix-blend-mode: soft-light; opacity: .5; } .only-here img { width: clamp(100px, 12vw, 170px); transform: rotate(-8deg); } .only-here h2 { font-family: var(--f-display); font-weight: 400; text-transform: uppercase; font-size: clamp(2.4rem, 1.6rem + 3vw, 4.4rem); line-height: .9; margin: 0 0 .5rem; color: var(--yellow); } @@ -993,7 +1017,7 @@ body.nav-visible .cat-nav { top: var(--nav-h); } .legal { padding: calc(var(--nav-h) + clamp(2.5rem, 6vw, 5rem)) 0 clamp(4rem, 8vw, 7rem); } .legal .display { font-size: clamp(3.6rem, 11vw, 9rem); color: var(--red); --ext: var(--oxblood); margin-bottom: 2rem; } .legal__body { max-width: 760px; } -.legal__body h2 { font-family: var(--f-sticker); font-weight: 400; text-transform: uppercase; font-size: clamp(1.2rem, 1rem + .6vw, 1.5rem); margin: 2.4rem 0 .7rem; color: var(--red-deep); } +.legal__body h2 { overflow-wrap: anywhere; hyphens: auto; font-family: var(--f-sticker); font-weight: 400; text-transform: uppercase; font-size: clamp(1.2rem, 1rem + .6vw, 1.5rem); margin: 2.4rem 0 .7rem; color: var(--red-deep); } .legal__body h3 { font-size: 1.1rem; margin: 1.6rem 0 .4rem; } .legal__body ul { padding-left: 1.2rem; } .legal__body .credits { font-size: .92rem; } @@ -1026,13 +1050,15 @@ body.nav-visible .cat-nav { top: var(--nav-h); } /* ============ Fliegende Zutaten ============ */ .blast__bits { position: absolute; inset: 0; pointer-events: none; } -.bit { position: absolute; z-index: 3; translate: -50% -50%; will-change: transform; } -.bit__in { display: block; } +.bit { position: absolute; z-index: 3; } +.bit__c { display: block; translate: -50% -50%; } +.bit__in, .bit__fl { display: block; } .bit img { display: block; width: 100%; height: auto; filter: drop-shadow(0 12px 10px rgba(40, 0, 0, .35)); } .bit--b { z-index: 1; } .bit--b img { filter: blur(1.2px) brightness(.88) drop-shadow(0 8px 8px rgba(40, 0, 0, .3)); } .hero__burger .blast__bits, .visit__deco .blast__bits, .wings__hero .blast__bits { z-index: auto; } .champ__food .bit--f { z-index: 3; } +@media (max-width: 820px) { .bit--b img { filter: brightness(.9) drop-shadow(0 6px 6px rgba(40, 0, 0, .3)); } } /* ============ Motion setup ============ */ html.js [data-pop] .pw { display: inline-block; will-change: transform; } @@ -1076,10 +1102,9 @@ html.js.anim .juggle { visibility: hidden; } .hero__eyebrow > span { display: inline; } .hero__big { font-size: 30vw; line-height: .8; } .hero__big .part { display: block; } - .hero__burger { top: auto; bottom: 8vw; transform: translateX(-50%); width: 56vw; } - .hero__wm { top: auto; bottom: 0; width: 72vw; transform: translate(-50%, 0) rotate(-6deg); } - .hero__st1 { left: 0; top: auto; bottom: 38vw; } - .hero__st2 { right: 0; top: auto; bottom: 26vw; } + .hero__burger { top: auto; bottom: 2vw; transform: translateX(-50%); width: 60vw; } + .hero__st1 { left: 0; top: auto; bottom: 4vw; font-size: .8rem; } + .hero__st2 { right: 0; top: auto; bottom: 4vw; font-size: .8rem; } .hero__rooster { right: 6vw; top: 30vw; width: 24vw; } .hero__bottom { grid-template-columns: 1fr; margin-top: 2.2rem; } .hero__cta { justify-content: flex-start; } @@ -1087,8 +1112,12 @@ html.js.anim .juggle { visibility: hidden; } .champ:nth-child(2) { margin-top: 0; } .champ { min-height: 0; } .wings__stage { grid-template-columns: 1fr; grid-template-areas: "kick" "big" "hero" "info"; } - .wings__hero { margin-top: -2rem; } + .wings__hero { margin-top: 1rem; } .wings__info { padding-bottom: 0; } + .tenders__grid { grid-template-columns: 1fr; } + .tenders__food { max-width: 560px; margin: 2rem auto 0; } + .fight-card ul { padding-right: 0; } + .fight-card__foot img { width: 44vw; } .flames { --fh: clamp(60px, 16vw, 110px); } .flames i { --fw: 700px; } .wings__head, .buckets__head, .visit__grid { grid-template-columns: 1fr; } @@ -1115,9 +1144,14 @@ html.js.anim .juggle { visibility: hidden; } .sauce { padding: .8rem .6rem 1rem; } .sauce p { display: none; } .sauce h3 { font-size: 1.45rem; overflow-wrap: anywhere; } - .sauce .price { font-size: .82rem; white-space: normal; } + .sauce .price { font-size: .74rem; padding: .5em .6em; } .dish-grid, .dish-grid--4, .dish-grid--2 { grid-template-columns: 1fr; } + .dish--promo { grid-column: auto; } .footer__grid { grid-template-columns: 1fr; } .btn { font-size: 1rem; padding: .95em 1.4em 1em; } .hero__cta .btn { flex: 1 1 auto; } } + +@media (max-width: 400px) { + #menu-btn .roll { display: none; } +} diff --git a/assets/img/bits/crumb-1.webp b/assets/img/bits/crumb-1.webp index c18050d..2810776 100644 Binary files a/assets/img/bits/crumb-1.webp and b/assets/img/bits/crumb-1.webp differ diff --git a/assets/img/bits/crumb-2.webp b/assets/img/bits/crumb-2.webp index c712e3f..cafea19 100644 Binary files a/assets/img/bits/crumb-2.webp and b/assets/img/bits/crumb-2.webp differ diff --git a/assets/img/bits/crumb-3.webp b/assets/img/bits/crumb-3.webp index be3e172..8bf45d4 100644 Binary files a/assets/img/bits/crumb-3.webp and b/assets/img/bits/crumb-3.webp differ diff --git a/assets/img/bits/crumb-4.webp b/assets/img/bits/crumb-4.webp index 75dfee3..8c34cd8 100644 Binary files a/assets/img/bits/crumb-4.webp and b/assets/img/bits/crumb-4.webp differ diff --git a/assets/img/bits/crumb-5.webp b/assets/img/bits/crumb-5.webp index cb6ce9e..eb249ea 100644 Binary files a/assets/img/bits/crumb-5.webp and b/assets/img/bits/crumb-5.webp differ diff --git a/assets/img/bits/crumb-6.webp b/assets/img/bits/crumb-6.webp index a071a23..9418150 100644 Binary files a/assets/img/bits/crumb-6.webp and b/assets/img/bits/crumb-6.webp differ diff --git a/assets/img/bits/crumb-7.webp b/assets/img/bits/crumb-7.webp index e8cbdbc..f419706 100644 Binary files a/assets/img/bits/crumb-7.webp and b/assets/img/bits/crumb-7.webp differ diff --git a/assets/img/bits/crumb-8.webp b/assets/img/bits/crumb-8.webp index 872c352..099068a 100644 Binary files a/assets/img/bits/crumb-8.webp and b/assets/img/bits/crumb-8.webp differ diff --git a/assets/img/cut-chicken-wings.webp b/assets/img/cut-chicken-wings.webp index 18574f8..76b7096 100644 Binary files a/assets/img/cut-chicken-wings.webp and b/assets/img/cut-chicken-wings.webp differ diff --git a/assets/js/lenis.min.js b/assets/js/lenis.min.js deleted file mode 100644 index e69de29..0000000 diff --git a/assets/js/main.js b/assets/js/main.js index aed21f5..9afd3ad 100644 --- a/assets/js/main.js +++ b/assets/js/main.js @@ -84,6 +84,7 @@ if (y > 140 && y - lastY > 6) nav.classList.add('is-hidden'); else if (lastY - y > 6 || y < 140) nav.classList.remove('is-hidden'); document.body.classList.toggle('nav-visible', !nav.classList.contains('is-hidden') && y > 10); + nav.classList.toggle('is-scrolled', y > 60); lastY = y; } window.addEventListener('scroll', onScroll, { passive: true }); @@ -137,7 +138,7 @@ /* ---------- Mobile Bestell-Leiste ---------- */ var orderbar = $('#orderbar'); - var heroEl = $('.hero') || $('.page-hero'); + var heroEl = $('.hero__cta .btn') || $('.page-hero'); if (orderbar && heroEl && 'IntersectionObserver' in window) { new IntersectionObserver(function (entries) { orderbar.classList.toggle('is-visible', !entries[0].isIntersecting); @@ -185,23 +186,29 @@ ], 'burger-sm': [ ['onion-2', 6, 10, 15, -14, 'b', 1], ['bacon', 94, 6, 20, 24, 'b', 1], - ['lettuce-1', -4, 70, 20, -20, 'f', 1], ['tomato', 102, 64, 17, 18, 'f', 1], ['pickle', 72, 102, 11, 8, 'f', 0], ['sesame-1', 30, -4, 3, 0, 'f', 0] + ['lettuce-1', -4, 70, 20, -20, 'f', 1], ['tomato', 102, 64, 17, 18, 'f', 1], ['sesame-1', 30, -4, 3, 0, 'f', 0] ], 'chicken-sm': [ - ['bacon', 98, 10, 20, 24, 'b', 1, 1], ['crumb-1', 6, 4, 8, 0, 'b', 0], ['crumb-2', 88, -4, 7, 30, 'b', 0], - ['lettuce-2', -6, 70, 20, -24, 'f', 1], ['tomato', 104, 64, 15, 18, 'f', 1], ['crumb-3', 26, 104, 8, 10, 'f', 0], ['crumb-4', 66, 104, 8, 60, 'f', 0] + ['bacon', 98, 10, 20, 24, 'b', 1, 1], ['crumb-1', 6, 4, 10, 0, 'b', 0], ['crumb-2', 88, -4, 9, 30, 'b', 0], + ['lettuce-2', -6, 70, 20, -24, 'f', 1], ['tomato', 104, 64, 15, 18, 'f', 1] ], 'wrap-sm': [ ['jalapeno-2', 6, 6, 11, -20, 'b', 1], ['onion-2', 96, 6, 13, 20, 'b', 1], - ['lettuce-3', -8, 70, 20, -18, 'f', 1], ['tomato', 104, 64, 15, 22, 'f', 1], ['crumb-5', 28, 104, 8, 0, 'f', 0], ['jalapeno-1', 74, 104, 9, 40, 'f', 0] + ['lettuce-3', -8, 70, 20, -18, 'f', 1], ['tomato', 104, 64, 15, 22, 'f', 1] + ], + tenders: [ + ['crumb-6', 2, 20, 11, 0, 'b', 1], ['crumb-7', 98, 14, 10, 40, 'b', 0], ['chili', 104, 78, 20, 20, 'b', 1], + ['crumb-1', 14, -6, 12, 10, 'f', 1], ['crumb-3', 64, -14, 11, 90, 'f', 1], ['crumb-4', 90, 8, 11, 120, 'f', 0], + ['crumb-8', -4, 84, 12, 70, 'f', 1], ['jalapeno-1', 40, 108, 11, -10, 'f', 0], ['crumb-5', 78, 106, 10, 30, 'f', 0] ], wings: [ - ['crumb-6', 4, 30, 8, 0, 'b', 0], ['crumb-7', 96, 18, 7, 40, 'b', 1], ['chili', 100, 72, 18, 20, 'b', 0], ['jalapeno-1', -4, 62, 11, -30, 'b', 1], - ['crumb-1', 12, 4, 9, 10, 'f', 1], ['crumb-2', 32, -8, 7, 50, 'f', 1], ['crumb-3', 58, -10, 8, 90, 'f', 1], ['crumb-4', 84, 2, 8, 120, 'f', 1], - ['crumb-5', 104, 40, 7, 0, 'f', 0], ['crumb-8', -4, 88, 8, 70, 'f', 0], ['jalapeno-2', 88, 102, 11, -10, 'f', 1], ['crumb-2', 46, 104, 6, 30, 'f', 0, 1] + ['crumb-6', 2, 34, 11, 0, 'b', 0], ['crumb-7', 98, 22, 10, 40, 'b', 1], ['chili', 102, 74, 20, 20, 'b', 0], ['jalapeno-1', -6, 66, 12, -30, 'b', 1], + ['crumb-1', 14, 10, 12, 10, 'f', 1], ['crumb-3', 60, 8, 11, 90, 'f', 1], ['crumb-4', 88, 12, 11, 120, 'f', 1], + ['crumb-5', 104, 46, 10, 0, 'f', 0], ['crumb-8', -2, 92, 11, 70, 'f', 0], ['jalapeno-2', 86, 104, 12, -10, 'f', 1], ['crumb-2', 48, 106, 9, 30, 'f', 0, 1] ] }; var mobileBits = window.matchMedia('(max-width: 820px)').matches; + var bitScale = mobileBits ? 1.35 : 1; var blasts = $$('[data-blast]').map(function (box) { var set = PRESETS[box.getAttribute('data-blast')]; if (!set) return null; @@ -212,10 +219,15 @@ var bits = []; set.forEach(function (b) { if (mobileBits && !b[6]) return; + // Verschachtelt, damit sich nichts in die Quere kommt: + // .bit (Scroll-Explosion) > .bit__c (CSS-Zentrierung) > .bit__in (Intro) > .bit__fl (Schweben) > img (feste Drehung) + var size = b[3] * bitScale; var el = document.createElement('span'); el.className = 'bit bit--' + b[5]; - el.style.left = b[1] + '%'; el.style.top = b[2] + '%'; el.style.width = b[3] + '%'; + el.style.left = b[1] + '%'; el.style.top = b[2] + '%'; el.style.width = size + '%'; + var c = document.createElement('span'); c.className = 'bit__c'; var inner = document.createElement('span'); inner.className = 'bit__in'; + var fl = document.createElement('span'); fl.className = 'bit__fl'; var img = document.createElement('img'); img.alt = ''; img.decoding = 'async'; img.draggable = false; if (lazy) img.loading = 'lazy'; @@ -225,16 +237,26 @@ // Größe als Fläche: lange, schmale Zutaten (Salatblatt, Bacon) wirken so gleich groß wie runde img.onload = function () { var ratio = img.naturalWidth / img.naturalHeight; - el.style.width = (b[3] * Math.sqrt(ratio)).toFixed(2) + '%'; + el.style.width = (size * Math.sqrt(ratio)).toFixed(2) + '%'; }; img.src = BITS + b[0] + '.webp'; - inner.appendChild(img); el.appendChild(inner); holder.appendChild(el); - bits.push({ el: el, inner: inner, img: img, x: b[1], y: b[2], layer: b[5] }); + fl.appendChild(img); inner.appendChild(fl); c.appendChild(inner); el.appendChild(c); holder.appendChild(el); + bits.push({ el: el, inner: inner, fl: fl, x: b[1], y: b[2], layer: b[5] }); }); box.appendChild(holder); return { box: box, bits: bits, hero: !lazy }; }).filter(Boolean); + /* ---------- Flammen nur animieren, solange sie sichtbar sind ---------- */ + if ('IntersectionObserver' in window) { + var flameIO = new IntersectionObserver(function (entries) { + entries.forEach(function (en) { en.target.classList.toggle('is-live', en.isIntersecting); }); + }); + $$('.flames, .cta__fire, .fx__sparks').forEach(function (el) { flameIO.observe(el); }); + } else { + $$('.flames, .cta__fire, .fx__sparks').forEach(function (el) { el.classList.add('is-live'); }); + } + /* ---------- Funken (Buckets) ---------- */ if (!reduce) { $$('[data-sparks]').forEach(function (wrap) { @@ -254,14 +276,17 @@ /* ---------- 3D-Neigung der Karten (nur Maus) ---------- */ if (!reduce && window.matchMedia('(hover: hover) and (pointer: fine)').matches) { $$('[data-tilt]').forEach(function (card) { + var r = null; + card.addEventListener('pointerenter', function () { r = card.getBoundingClientRect(); }); card.addEventListener('pointermove', function (e) { - var r = card.getBoundingClientRect(); + if (!r) r = card.getBoundingClientRect(); var nx = (e.clientX - r.left) / r.width - .5, ny = (e.clientY - r.top) / r.height - .5; card.classList.add('is-tilting'); card.style.setProperty('--ty', (nx * 14).toFixed(2) + 'deg'); card.style.setProperty('--tx', (-ny * 12).toFixed(2) + 'deg'); }); card.addEventListener('pointerleave', function () { + r = null; card.classList.remove('is-tilting'); card.style.setProperty('--tx', '0deg'); card.style.setProperty('--ty', '0deg'); }); @@ -356,7 +381,6 @@ .fromTo(chars, { scale: 0, opacity: 0, y: function () { return rand(40, 100); }, rotation: function () { return rand(-18, 18); }, transformOrigin: '50% 90%' }, { scale: 1, opacity: 1, y: 0, rotation: 0, duration: .75, stagger: .045, ease: 'back.out(2.2)' }, .05) .fromTo(burgerImg, { scale: .45, y: 140, rotation: -12, opacity: 0 }, { scale: 1, y: 0, rotation: 0, opacity: 1, duration: 1.1, ease: 'back.out(1.5)' }, .3) - .fromTo('.hero__wm .wm-fill', { xPercent: -30, opacity: 0, rotation: -8 }, { xPercent: 0, opacity: 1, rotation: 0, duration: .8, ease: 'back.out(1.8)' }, .75) .fromTo($$('[data-sticker]', hero), { '--s': 0 }, { '--s': 1, duration: .6, stagger: .12, ease: 'back.out(3)' }, .9) .fromTo(['.hero__bottom .lead', '.hero__cta'], { y: 30, opacity: 0 }, { y: 0, opacity: 1, duration: .7, stagger: .1, ease: 'power3.out' }, .8) .add(function () { @@ -423,29 +447,49 @@ /* ---- Zutaten: schweben, beim Laden aus dem Essen platzen, beim Scrollen wegfliegen ---- */ blasts.forEach(function (bl) { + var W = function () { return bl.box.offsetWidth; }; var vec = function (b) { - var w = bl.box.offsetWidth, h = bl.box.offsetHeight; - return { x: (b.x - 50) / 100 * w, y: (b.y - 50) / 100 * h }; + return { x: (b.x - 50) / 100 * W(), y: (b.y - 50) / 100 * bl.box.offsetHeight }; }; + // Explosionsziel: kräftig nach außen, mit Drall zur Seite und nach oben + var away = function (b, k) { + var v = vec(b), len = Math.sqrt(v.x * v.x + v.y * v.y) || 1; + var side = b.side; + return { + x: v.x * .5 + (v.x / len) * W() * k + (-v.y / len) * W() * .18 * side, + y: v.y * .3 + (v.y / len) * W() * k * .55 - W() * .45 * k + }; + }; + var floats = []; + var tl = gsap.timeline({ paused: true }); bl.bits.forEach(function (b, i) { - gsap.to(b.img, { y: rand(-16, -8), rotation: rand(-10, 10), duration: rand(1.8, 3.2), yoyo: true, repeat: -1, ease: 'sine.inOut', delay: rand(0, 1.5) }); - var spin = rand(120, 300) * (i % 2 ? 1 : -1); - var grow = b.layer === 'b' ? 1.05 : 1.35; + b.side = i % 2 ? 1 : -1; + floats.push(gsap.to(b.fl, { y: '+=' + rand(-16, -8), rotation: '+=' + rand(-8, 8), duration: rand(1.8, 3.2), yoyo: true, repeat: -1, ease: 'sine.inOut', delay: rand(0, 1.5), paused: true })); + var spin = rand(160, 340) * b.side; + var grow = b.layer === 'b' ? 1.15 : 1.9; if (bl.hero) { - gsap.from(b.inner, { x: function () { return -vec(b).x; }, y: function () { return -vec(b).y; }, scale: .2, opacity: 0, rotation: -spin / 2, duration: 1.2, ease: 'back.out(1.3)', delay: .55 + i * .035 }); - gsap.to(b.el, { - x: function () { return vec(b).x * 1.7; }, y: function () { return vec(b).y * 1.7 - 80; }, - rotation: spin, scale: grow, ease: 'power1.in', - scrollTrigger: { trigger: bl.box.closest('section') || bl.box, start: 'top top', end: 'bottom top', scrub: .6, invalidateOnRefresh: true } - }); + gsap.from(b.inner, { x: function () { return -vec(b).x; }, y: function () { return -vec(b).y; }, scale: .2, opacity: 0, rotation: -spin / 3, duration: 1.2, ease: 'back.out(1.3)', delay: .55 + i * .035 }); + tl.to(b.el, { x: function () { return away(b, 1).x; }, y: function () { return away(b, 1).y; }, rotation: spin, scale: grow, duration: 1, ease: 'power2.in' }, 0) + .to(b.el, { opacity: 0, duration: .25, ease: 'none' }, .75); } else { - var tl = gsap.timeline({ scrollTrigger: { trigger: bl.box, start: 'top 95%', end: 'bottom 5%', scrub: .7, invalidateOnRefresh: true } }); tl.fromTo(b.el, { x: function () { return -vec(b).x * .6; }, y: function () { return -vec(b).y * .6; }, scale: .4, opacity: 0, rotation: -spin / 3 }, - { x: 0, y: 0, scale: 1, opacity: 1, rotation: 0, duration: .42, ease: 'power2.out' }) - .to(b.el, { duration: .12 }) - .to(b.el, { x: function () { return vec(b).x * 1.3; }, y: function () { return vec(b).y * 1.3 - 40; }, scale: grow, rotation: spin, duration: .46, ease: 'power2.in' }); + { x: 0, y: 0, scale: 1, opacity: 1, rotation: 0, duration: .4, ease: 'power2.out' }, 0) + .to(b.el, { x: function () { return away(b, .8).x; }, y: function () { return away(b, .8).y; }, scale: grow, rotation: spin, duration: .45, ease: 'power2.in' }, .55) + .to(b.el, { opacity: 0, duration: .12, ease: 'none' }, .88); } }); + var sec = bl.box.closest('section') || bl.box; + ST.create({ + animation: tl, invalidateOnRefresh: true, scrub: .6, + trigger: bl.hero ? sec : bl.box, + start: bl.hero ? 'top top' : 'top 92%', + end: bl.hero ? '65% top' : 'bottom 12%' + }); + // Schweben nur, solange die Zutaten im Bild sind (spart Akku und Rechenzeit) + ST.create({ + trigger: bl.box, start: 'top bottom', end: 'bottom top', + onToggle: function (self) { floats.forEach(function (t) { self.isActive ? t.play() : t.pause(); }); } + }); }); /* ---- Feuerwirbel dreht sich langsam mit ---- */ diff --git a/datenschutz.html b/datenschutz.html index 7f3ce23..44ce59a 100644 --- a/datenschutz.html +++ b/datenschutz.html @@ -27,7 +27,6 @@ - @@ -51,7 +50,7 @@ Jetzt bestellen - diff --git a/impressum.html b/impressum.html index 797a6a6..31a5860 100644 --- a/impressum.html +++ b/impressum.html @@ -27,7 +27,6 @@ - @@ -51,7 +50,7 @@ Jetzt bestellen - diff --git a/index.html b/index.html index f66c8dd..b768587 100644 --- a/index.html +++ b/index.html @@ -60,7 +60,6 @@ - @@ -84,7 +83,7 @@ Jetzt bestellen - @@ -125,7 +124,6 @@ US Burger von Chickago Boys mit Cheddar, Spiegelei und Bacon - Knusprig
paniert
Mild oder
scharf?
@@ -195,7 +193,7 @@ Round 1

Wings mit Punch

- Ein Berg knuspriger Chicken Wings + Ein Berg knuspriger Chicken Wings K.O.
Crunch
@@ -243,18 +241,28 @@
- - + +
+ + +
+
+ Round 2 +

Crispy Tenders

+

Zarte Hähnchenfilets, knusprig paniert – pur oder in Buffalo-, Chipotle-Honey-BBQ- oder Teriyaki-Sauce. Mild oder scharf.

+ Zur Karte +
+
+ Zehn knusprig panierte Crispy-Chicken Tenders + 5 Stück
ab 9,50 €
+
+
+
- +
@@ -273,7 +281,7 @@
42,00 € - +
@@ -285,7 +293,7 @@
68,00 € - +
@@ -296,7 +304,7 @@
- +
Take away

Hol’s dir. Oder lass kommen.

@@ -392,11 +400,13 @@
- +

Hunger?

+ +

Dann ab in den Ring: jetzt online bestellen oder direkt bei uns anrufen.

diff --git a/speisekarte.html b/speisekarte.html index fa8ee6b..896d952 100644 --- a/speisekarte.html +++ b/speisekarte.html @@ -27,7 +27,6 @@ - @@ -51,7 +50,7 @@ Jetzt bestellen - @@ -177,7 +176,8 @@
-
+