@property --glow-deg { syntax: ""; inherits: true; initial-value: 0deg; } @font-face { font-display: swap; font-family: 'Noto IKEA'; font-style: italic; font-weight: 400; src: url(noto-ikea-400i.latin-ext.5f8f91ea.woff2) format("woff2"); unicode-range:u + 0100-024f, u + 0259, u + 1e??, u + 2020, u + 20a0-20ab, u + 20ad-20cf, u + 2113, u + 2c60-2c7f, u + a720-a7ff } @font-face { font-display: swap; font-family: 'Noto IKEA'; font-style: italic; font-weight: 400; src: url(noto-ikea-400i.latin.10395910.woff2) format("woff2"); unicode-range:u + 00??, u + 0131, u + 0152-0153, u + 02bb-02bc, u + 02c6, u + 02da, u + 02dc, u + 2000-206f, u + 2074, u + 20ac, u + 2122, u + 2191, u + 2193, u + 2212, u + 2215, u + feff, u + fffd } @font-face { font-display: swap; font-family: 'Noto IKEA'; font-style: italic; font-weight: 700; src: url(noto-ikea-700i.latin-ext.3637155a.woff2) format("woff2"); unicode-range:u + 0100-024f, u + 0259, u + 1e??, u + 2020, u + 20a0-20ab, u + 20ad-20cf, u + 2113, u + 2c60-2c7f, u + a720-a7ff } @font-face { font-display: swap; font-family: 'Noto IKEA'; font-style: italic; font-weight: 700; src: url(noto-ikea-700i.latin.29eb18bb.woff2) format("woff2"); unicode-range:u + 00??, u + 0131, u + 0152-0153, u + 02bb-02bc, u + 02c6, u + 02da, u + 02dc, u + 2000-206f, u + 2074, u + 20ac, u + 2122, u + 2191, u + 2193, u + 2212, u + 2215, u + feff, u + fffd } @font-face { font-display: swap; font-family: 'Noto IKEA'; font-style: normal; font-weight: 400; src: url(noto-ikea-400.latin-ext.edd421f4.woff2) format("woff2"); unicode-range:u + 0100-024f, u + 0259, u + 1e??, u + 2020, u + 20a0-20ab, u + 20ad-20cf, u + 2113, u + 2c60-2c7f, u + a720-a7ff } @font-face { font-display: swap; font-family: 'Noto IKEA'; font-style: normal; font-weight: 400; src: url(noto-ikea-400.latin.647e877d.woff2) format("woff2"); unicode-range:u + 00??, u + 0131, u + 0152-0153, u + 02bb-02bc, u + 02c6, u + 02da, u + 02dc, u + 2000-206f, u + 2074, u + 20ac, u + 2122, u + 2191, u + 2193, u + 2212, u + 2215, u + feff, u + fffd } @font-face { font-display: swap; font-family: 'Noto IKEA'; font-style: normal; font-weight: 700; src: url(noto-ikea-700.latin-ext.97f0d455.woff2) format("woff2"); unicode-range:u + 0100-024f, u + 0259, u + 1e??, u + 2020, u + 20a0-20ab, u + 20ad-20cf, u + 2113, u + 2c60-2c7f, u + a720-a7ff } @font-face { font-display: swap; font-family: 'Noto IKEA'; font-style: normal; font-weight: 700; src: url(noto-ikea-700.latin.d7277c39.woff2) format("woff2"); unicode-range:u + 00??, u + 0131, u + 0152-0153, u + 02bb-02bc, u + 02c6, u + 02da, u + 02dc, u + 2000-206f, u + 2074, u + 20ac, u + 2122, u + 2191, u + 2193, u + 2212, u + 2215, u + feff, u + fffd } :root { --clr-white: #fff; --clr-black: #000; --clr-green: #3FB83E; --clr-blue: #4297FF; --clr-sand: #F1EBDD; --clr-sand-light: #F7F3EB; --ff-ikea: "Noto IKEA", "Noto Sans", system-ui, sans-serif; --fs-s: 0.75rem; --fs-m: 0.875rem; --fs-base: 1rem; --fs-lg: 1.125rem; --fs-xl: 2rem; --fs-2xl: 3rem; --fs-3xl: 4rem; --td-s: 400 0.75rem/1.3 var(--ff-ikea); --td-base: 400 1rem/1.4 var(--ff-ikea); --td-lg: 400 1.125rem/1.4 var(--ff-ikea); --td-xl: 700 2rem/1.2 var(--ff-ikea); --td-2xl: 700 3rem/1.2 var(--ff-ikea); --td-3xl: 700 4rem/1.2 var(--ff-ikea); --ease-out: cubic-bezier(0.22, 0.61, 0.36, 1); --ease-in: cubic-bezier(0.55, 0, 0.68, 0.53); --dur-fast: 400ms; --dur-base: 600ms; --dur-slow: 900ms; font: 16px/1.4 var(--ff-ikea); } .turbo-progress-bar { height: 3px; background-color: #0058a3; } turbo-frame#game { display: contents; } body { margin: 0; display: flex; flex-direction: column; gap: 0; min-height: 100vh; min-height: 100svh; -webkit-font-smoothing: antialiased; touch-action: manipulation; background-color: var(--clr-white); &:has(.results) { background-color: var(--clr-sand-light); } } button { cursor: pointer; } ul[class] { margin: 0; padding: 0; list-style: none; } form { margin: 0; } header { background-color: var(--clr-white); position: fixed; inset: 1rem 1rem auto 1rem; padding: 0.875rem 1rem; display: flex; justify-content: space-between; align-items: center; box-shadow: 0px 2px 2px 0px #0000000A; z-index: 100; > a { flex-grow: 1; max-width: 12.6875rem; } } .language-button { display: flex; justify-content: center; align-items: center; aspect-ratio: 1; background-color: var(--clr-sand); border: none; border-radius: 50%; width: 2.25rem; cursor: pointer; svg { display: none; &:nth-child(1) { display: block; } } &[aria-expanded="true"] { svg:nth-child(1) { display: none; } svg:nth-child(2) { display: block; } } } #language-menu { position: absolute; inset: 0 0 auto 0; z-index: 90; background-color: var(--clr-sand); padding: calc(1rem + 4rem + 2rem) 1rem 1rem 1rem; & .language-button { display: none; } & h2 { font: var(--td-xl); font-weight: 400; margin: 0 0 1rem 0; strong { display: block; } } & ul { font: var(--td-base); border-top: 1px solid var(--clr-black); } & li { border-bottom: 1px solid var(--clr-black); padding: 0.75rem 0; position: relative; min-height: 3.5rem; } & a { text-decoration: none; color: var(--clr-black); display: flex; align-items: center; min-height: 2rem; &.current { font-weight: 700; } &::after { content: ""; position: absolute; right: 0; width: 2rem; aspect-ratio: 1; border-radius: 50%; background-color: var(--clr-green); background-image: url("ico-arrow-right.svg"); background-repeat: no-repeat; background-position: 50% 50%; } } } main, .modal-panel { display: flex; flex-direction: column; min-height: 100vh; min-height: 100svh; & article { flex: 0 0 auto; background-color: var(--clr-bg); flex-shrink: 0; text-align: center; padding: 1.5rem 1.5rem 1rem 1.5rem; & p { max-width: 32ch; margin: 0 auto 1.5rem auto; } & .cta + * { margin-top: 0.75rem; } } & h1, h2 { font: var(--td-xl); font-weight: 400; margin: 0 auto 0.5rem auto; } } .start { --clr-bg: var(--clr-white); --clr-action: var(--clr-green); } @keyframes fade-in { from { opacity: 0; } to { opacity: 1; } } @keyframes header-drop-in { from { transform: translateY(calc(-100% - 1rem)); opacity: 0; } to { transform: translateY(0); opacity: 1; } } @keyframes wave-slide-in { from { translate: 100% 0; } to { translate: 0 0; } } @keyframes wave-slide-out { from { transform: translateX(0); } to { transform: translateX(-100vw); } } @keyframes screen-slide-in { from { transform: translateX(100%); } to { transform: translateX(0); } } @keyframes screen-slide-up { from { transform: translateY(100dvh); } to { transform: translateY(0); } } @keyframes answers-sink { from { opacity: 1; transform: translateY(0); } to { opacity: 0; transform: translateY(1.5rem); } } @keyframes answers-rise { from { opacity: 0; transform: translateY(1.5rem); } to { opacity: 1; transform: translateY(0); } } @keyframes answers-slide-up { from { transform: translateY(100%); } to { transform: translateY(0); } } @keyframes indicator-blink { from { background-color: var(--clr-green); } to { background-color: var(--clr-white); } } @keyframes hero-rise { from { opacity: 0; transform: translateY(1.5rem); } to { opacity: 1; transform: translateY(0); } } @keyframes wave-rise-in { from { translate: 0 200px; } to { translate: 0 0; } } @keyframes hero-detail-slide-in { from { transform: translateX(100vw); } to { transform: translateX(0); } } @keyframes hero-wave-slide-in { from { transform: translateY(100vw); } to { transform: translateY(0); } } @keyframes screen-push-left { from { transform: translateX(0); } to { transform: translateX(-100vw); } } @media (max-width: 1023.98px) and (prefers-reduced-motion: no-preference) { .start .hero-container { overflow: clip; } .start .hero-container img, .start > article { animation: fade-in var(--dur-slow) var(--ease-out) both; } body:has(.start) header { animation: header-drop-in var(--dur-base) var(--ease-out) 200ms both; } .start .hero-container svg.ico-wave { animation: wave-slide-in var(--dur-base) var(--ease-out) calc(var(--dur-slow) * 0.4) both; } .start > article { transition: transform var(--dur-base) var(--ease-in), margin-block-end var(--dur-base) var(--ease-in); } .start.is-exiting { overflow: clip; } .start.is-exiting > article { transform: translateY(100%); margin-block-end: calc(var(--exit-shift, 0px) * -1); } .start.is-exiting .hero-container svg.ico-wave { animation: wave-slide-out var(--dur-fast) var(--ease-in) var(--dur-base) both; } .facts-modal { transition: translate var(--dur-base) var(--ease-in); } .facts-modal::backdrop { transition: background-color var(--dur-base) var(--ease-in); } .facts-modal.is-leaving { translate: 0 100%; } .facts-modal.is-leaving::backdrop { background-color: rgba(0, 0, 0, 0); } .facts-modal .carousel > li { overflow: clip; } .facts-modal .carousel-frame > svg.ico-wave { animation: wave-slide-in var(--dur-base) var(--ease-out) both; transition: bottom var(--dur-base) var(--ease-out); } .facts-modal .is-entering { max-height: 100%; overflow: clip; } .facts-modal .is-entering .carousel-frame, .facts-modal .is-entering .carousel, .facts-modal .is-entering .carousel > li > .hero-container { flex: 0 0 auto; transition: height var(--dur-base) var(--ease-out); } html:is([data-screen-transition="slide-left"], [data-screen-transition="slide-up"]) main { view-transition-name: game; } html:is([data-screen-transition="slide-left"], [data-screen-transition="slide-up"])::view-transition-old(root), html:is([data-screen-transition="slide-left"], [data-screen-transition="slide-up"])::view-transition-new(root), html:is([data-screen-transition="slide-left"], [data-screen-transition="slide-up"])::view-transition-old(game), html:is([data-screen-transition="slide-left"], [data-screen-transition="slide-up"])::view-transition-new(game) { mix-blend-mode: normal; } html:is([data-screen-transition="slide-left"], [data-screen-transition="slide-up"])::view-transition-old(root), html:is([data-screen-transition="slide-left"], [data-screen-transition="slide-up"])::view-transition-new(root), html:is([data-screen-transition="slide-left"], [data-screen-transition="slide-up"])::view-transition-old(game) { animation: none; } html[data-screen-transition="slide-left"]::view-transition-new(game) { animation: screen-slide-in var(--dur-base) var(--ease-out) both; } html[data-screen-transition="slide-up"]::view-transition-new(game) { animation: screen-slide-up var(--dur-base) var(--ease-out) both; } html[data-screen-transition="slide-up"] main.results { background-color: var(--clr-sand-light); } html[data-screen-transition="slide-up"] .results-tagline svg.ico-wave { opacity: 0; } .results.is-settling .results-tagline { overflow: clip; } .results.is-settling .results-tagline svg.ico-wave { animation: wave-slide-in var(--dur-fast) var(--ease-out) both; } html[data-screen-transition="answer"] .hero-container { view-transition-name: hero; } html[data-screen-transition="answer"] .answers-container { view-transition-name: answers; } html[data-screen-transition="answer"]::view-transition-group(hero), html[data-screen-transition="answer"]::view-transition-group(answers), html[data-screen-transition="answer"]::view-transition-old(hero), html[data-screen-transition="answer"]::view-transition-new(hero) { animation-duration: var(--dur-base); animation-timing-function: var(--ease-out); } html[data-screen-transition="answer"]::view-transition-old(answers), html[data-screen-transition="answer"]::view-transition-new(answers) { mix-blend-mode: normal; } html[data-screen-transition="answer"]::view-transition-old(answers) { animation: answers-sink calc(var(--dur-base) * 0.6) var(--ease-in) both; } html[data-screen-transition="answer"]::view-transition-new(answers) { animation: answers-rise calc(var(--dur-base) * 0.6) var(--ease-out) calc(var(--dur-base) * 0.4) both; } .good_answer > .answers-container, .bad_answer > .answers-container { transition: transform var(--dur-base) var(--ease-in), margin-block-end var(--dur-base) var(--ease-in); } .good_answer > .stage-header-container, .bad_answer > .stage-header-container { transition: margin-block-start var(--dur-base) var(--ease-in); } .good_answer.is-finishing > .stage-header-container, .bad_answer.is-finishing > .stage-header-container { margin-block-start: calc(var(--header-shift, 0px) * -1); } .good_answer.is-exiting .stage-progress li.done + li:not(.done), .bad_answer.is-exiting .stage-progress li.done + li:not(.done) { animation: indicator-blink calc(var(--dur-base) * 2) steps(2, jump-none) infinite; } .good_answer .hero-container article, .bad_answer .hero-container article, .good_answer .hero-container video, .bad_answer .hero-container video { transition: opacity var(--dur-base) var(--ease-out); } .good_answer.is-exiting, .bad_answer.is-exiting { overflow: clip; } .good_answer.is-exiting > .answers-container, .bad_answer.is-exiting > .answers-container { transform: translateY(100%); margin-block-end: calc(var(--exit-shift, 0px) * -1); } .good_answer.is-exiting .hero-container article, .bad_answer.is-exiting .hero-container article { opacity: 0; } .good_answer.is-exiting .hero-container video, .bad_answer.is-exiting .hero-container video { opacity: 1; } .good_answer.is-exiting .hero-container svg.ico-wave, .bad_answer.is-exiting .hero-container svg.ico-wave { animation: wave-slide-out var(--dur-fast) var(--ease-in) both; } html[data-screen-transition="stage-in"] .stage-header-container { view-transition-name: stage-header; } html[data-screen-transition="last-save-in"] .last_save > .stage-header-container { view-transition-name: stage-header; } html:is([data-screen-transition="stage-in"], [data-screen-transition="last-save-in"]) .hero-container { view-transition-name: hero; } html:is([data-screen-transition="stage-in"], [data-screen-transition="last-save-in"]) :is(.stage, .last_save) > .answers-container { view-transition-name: answers; } html:is([data-screen-transition="slide-left"], [data-screen-transition="stage-in"], [data-screen-transition="last-save-in"]) :is(.stage, .last_save) .hero-container svg.ico-wave { opacity: 0; } :is(.stage, .last_save).is-settling .hero-container { overflow: clip; } :is(.stage, .last_save).is-settling .hero-container svg.ico-wave { animation: wave-slide-in var(--dur-fast) var(--ease-out) both; } html[data-screen-transition="stage-in"]::view-transition-group(stage-header), html[data-screen-transition="stage-in"]::view-transition-group(hero), html[data-screen-transition="last-save-in"]::view-transition-group(hero), html[data-screen-transition="stage-in"]::view-transition-old(stage-header), html[data-screen-transition="stage-in"]::view-transition-new(stage-header) { animation-duration: var(--dur-base); animation-timing-function: var(--ease-out); } html[data-screen-transition="last-save-in"]::view-transition-new(stage-header) { animation: header-drop-in var(--dur-base) var(--ease-out) calc(var(--dur-base) * 0.3) both; mix-blend-mode: normal; } html:is([data-screen-transition="stage-in"], [data-screen-transition="last-save-in"])::view-transition-old(hero) { height: 100%; object-fit: cover; object-position: top; animation: none; } html:is([data-screen-transition="stage-in"], [data-screen-transition="last-save-in"])::view-transition-new(hero) { animation: hero-rise var(--dur-base) var(--ease-out) both; } html:is([data-screen-transition="stage-in"], [data-screen-transition="last-save-in"])::view-transition-new(answers) { animation: answers-slide-up var(--dur-base) var(--ease-out) both; mix-blend-mode: normal; } } @media (min-width: 1024px) and (prefers-reduced-motion: no-preference) { body:has(.start) header { animation: header-drop-in var(--dur-base) var(--ease-out) 100ms both; } .start > article { animation: fade-in var(--dur-slow) var(--ease-out) 250ms both; } .start .hero-container { animation: fade-in var(--dur-slow) var(--ease-out) both; } .start .hero-container svg.ico-wave { animation: wave-rise-in var(--dur-slow) var(--ease-out) both; } .facts-modal[open] { translate: 0 0; transition: translate var(--dur-base) var(--ease-out); } @starting-style { .facts-modal[open] { translate: 0 100dvh; } } .facts-modal[open]::backdrop { opacity: 1; transition: opacity var(--dur-base) var(--ease-out); } @starting-style { .facts-modal[open]::backdrop { opacity: 0; } } .facts-modal[open].is-leaving { translate: 0 -100dvh; transition-timing-function: var(--ease-in); pointer-events: none; } .facts-modal[open].is-leaving::backdrop { opacity: 0; } html:is([data-screen-transition="stage-in-wide"], [data-screen-transition="results-in-wide"]) main { view-transition-name: game; } html:is([data-screen-transition="stage-in-wide"], [data-screen-transition="results-in-wide"])::view-transition-old(root), html:is([data-screen-transition="stage-in-wide"], [data-screen-transition="results-in-wide"])::view-transition-new(root), html:is([data-screen-transition="stage-in-wide"], [data-screen-transition="results-in-wide"])::view-transition-old(game), html:is([data-screen-transition="stage-in-wide"], [data-screen-transition="results-in-wide"])::view-transition-new(game) { mix-blend-mode: normal; } html:is([data-screen-transition="stage-in-wide"], [data-screen-transition="results-in-wide"])::view-transition-old(root), html:is([data-screen-transition="stage-in-wide"], [data-screen-transition="results-in-wide"])::view-transition-new(root), html:is([data-screen-transition="stage-in-wide"], [data-screen-transition="results-in-wide"])::view-transition-old(game) { animation: none; } html:is([data-screen-transition="stage-in-wide"], [data-screen-transition="results-in-wide"])::view-transition-new(game) { animation: screen-slide-in var(--dur-base) var(--ease-out) both; } html[data-screen-transition="stage-in-wide"] :is(.stage, .last_save) .hero-container img { view-transition-name: hero-image; } html[data-screen-transition="stage-in-wide"]::view-transition-new(hero-image) { animation: fade-in var(--dur-base) linear var(--dur-base) both; mix-blend-mode: normal; } html[data-screen-transition="stage-in-wide"] :is(.stage, .last_save) .hero-container svg.ico-wave { view-transition-name: hero-wave; } html[data-screen-transition="stage-in-wide"] :is(.stage, .last_save) .hero-container #inter-ikea-systems { view-transition-name: hero-logo; } html[data-screen-transition="stage-in-wide"]::view-transition-new(hero-wave), html[data-screen-transition="stage-in-wide"]::view-transition-new(hero-logo) { mix-blend-mode: normal; } html[data-screen-transition="stage-in-wide"]::view-transition-new(hero-wave) { animation: hero-wave-slide-in var(--dur-base) var(--ease-out) both; } html[data-screen-transition="stage-in-wide"]::view-transition-new(hero-logo) { animation: hero-detail-slide-in var(--dur-base) var(--ease-out) both; } html[data-screen-transition="answer-wide"]::view-transition-old(root), html[data-screen-transition="answer-wide"]::view-transition-new(root) { animation-duration: var(--dur-base); animation-timing-function: linear; } html[data-screen-transition="answer-wide"] .answers-container > form:nth-of-type(1) { view-transition-name: answer-1; } html[data-screen-transition="answer-wide"] .answers-container > form:nth-of-type(2) { view-transition-name: answer-2; } html[data-screen-transition="answer-wide"] .answers-container > form:nth-of-type(3) { view-transition-name: answer-3; } html[data-screen-transition="answer-wide"] .answers-container > form:nth-of-type(4) { view-transition-name: answer-4; } html[data-screen-transition="answer-wide"]::view-transition-old(answer-1), html[data-screen-transition="answer-wide"]::view-transition-old(answer-2), html[data-screen-transition="answer-wide"]::view-transition-old(answer-3), html[data-screen-transition="answer-wide"]::view-transition-old(answer-4) { animation: answers-sink calc(var(--dur-base) * 0.6) var(--ease-in) both; mix-blend-mode: normal; } html:has(:is(.good_answer, .bad_answer):is(.is-exiting, .is-playing)) { overflow: hidden; } :is(.good_answer, .bad_answer).is-exiting { animation: screen-push-left var(--dur-base) var(--ease-out) both; } :is(.good_answer, .bad_answer):is(.is-exiting, .is-playing) .hero-container video { position: absolute; inset: 0; width: 100vw; max-width: none; height: 100vh; opacity: 1; z-index: 3; } :is(.good_answer, .bad_answer).is-exiting .hero-container video { transform: translateX(100vw); } } .facts { --clr-bg: var(--clr-green); --clr-action: var(--clr-white); } .facts-modal { padding: 0; border: none; width: 100vw; max-width: 100vw; height: 100dvh; max-height: 100dvh; overflow-y: auto; background-color: var(--clr-green); } .facts-modal::backdrop { background-color: rgba(0, 0, 0, 0.5); } .modal-panel { background-color: var(--clr-bg); } .stage, .last_save { --clr-bg: var(--clr-sand-light); --clr-action: var(--clr-white); & .hero-container article { color: var(--clr-white); text-align: left; } } .question-container { display: none; } .results { --clr-action: var(--clr-green); margin-block-end: 1rem; .hero-container { display: none; } } .good_answer { & .hero-container { background-color: var(--clr-green); } } .bad_answer { & .hero-container { background-color: var(--clr-blue); } } .good_answer, .bad_answer { --clr-bg: var(--clr-sand-light); --clr-action: var(--clr-sand-light); .hero-container { svg, svg.ico-wave { fill: var(--clr-white); } img { display: none; } video { opacity: 0; } } .hero-container article { font-size: var(--fs-xl); line-height: 1.2; text-align: left; font-weight: 400; & h2 { margin: 0; font-weight: 700; } } & .answers-container { background-color: var(--clr-white); font-size: var(--fs-m); line-height: 1.5; text-align: left; font-weight: 400; gap: 0; & div:has(.cta) { display: flex; margin-block-start: 3rem; } & .cta { max-width: inherit; background-color: var(--clr-sand-light); } &:has(.cta.last_save) { font-size: var(--fs-xl); line-height: 1.2; } & h2 { font-size: var(--fs-m); line-height: 1.5; text-align: left; font-weight: 700; margin: 0; } & p { margin: 0; max-width: inherit; } } } .preload-media { position: fixed; inset: auto auto 0 0; width: 1px; height: 1px; opacity: 0; pointer-events: none; } .hero-container, .carousel, .carousel-frame { flex: 1 1 0; min-height: 0; } .carousel-frame { display: flex; flex-direction: column; position: relative; overflow: clip; > svg.ico-wave { position: absolute; right: 0; bottom: var(--slide-copy-height, 0px); margin-bottom: -0.5px; width: 190px; height: 96px; display: block; fill: var(--clr-bg, var(--clr-green)); pointer-events: none; } } .hero-container { display: grid; grid-template: 1fr / 1fr; position: relative; & img, video { grid-area: 1 / 1; width: 100%; height: 100%; object-fit: cover; min-width: 0; min-height: 0; } & article { grid-area: 1 / 1; place-self: start start; z-index: 1; background-color: transparent; } .intro &:has(video) { color: var(--clr-white); & h2 { text-align: left; margin-top: 1em; } } svg.ico-wave { grid-area: 1 / 1; place-self: end end; fill: var(--clr-bg, var(--clr-green)); display: block; width: 190px; height: 96px; } #inter-ikea-systems { position: absolute; right: 0.5rem; top: 1rem; fill: var(--clr-black); } &:has(img, video) { #inter-ikea-systems { fill: var(--clr-white); } } & .hero-link { grid-area: 1 / 1; z-index: 2; } } body:has(header) { .hero-container #inter-ikea-systems { top: 25%; } } form:has(.cta) { display: flex; } .cta { display: flex; flex: 1; align-items: center; justify-content: center; background-color: var(--clr-action, var(--clr-sand-light)); background-image: url("ico-arrow-right.svg"); background-repeat: no-repeat; background-position: 1rem 50%; padding: 0.5rem calc(1.5rem + 19px); border: none; font-size: var(--fs-base); max-width: 22rem; border-radius: 100vw; min-height: 3rem; margin: 0 auto; font-weight: 700; color: var(--clr-black); text-decoration: none; } .arrow { display: block; background-image: url("ico-arrow-right.svg"); background-repeat: no-repeat; background-position: 50% 50%; width: 2rem; aspect-ratio: 1; background-color: var(--clr-white); border-radius: 50%; } .cta-container { display: grid; grid-template-columns: 1fr; gap: 0.5rem; justify-content: stretch; align-items: stretch; margin: 0 1rem; } .share-container { display: flex; } .cta-link { display: flex; --clr-action: transparent; border-radius: 100vw; border: 1px solid var(--clr-black); flex-grow: 1; width: 100%; } .play-time { font: var(--td-s); display: inline-flex; gap: 0.4em; align-items: center; margin-block-start: 0.75rem; } .carousel { display: grid; grid-auto-flow: column; grid-auto-columns: 100%; overflow-x: auto; scroll-behavior: smooth; scroll-snap-type: x mandatory; scrollbar-width: none; > li { scroll-snap-align: center; display: flex; flex-direction: column; --clr-bg: var(--clr-green); } } .scroll-marker-group { display: flex; gap: 0.5rem; justify-content: center; background-color: var(--clr-bg); margin: 0.4rem 0 1rem 0; & button { appearance: none; border: none; width: 0.75rem; aspect-ratio: 1; border-radius: 50%; background-color: var(--clr-white); transition: background-color 0.1s ease; &.current { background-color: var(--clr-black); } } } .stage-header-container { background-color: var(--clr-bg); padding: 1rem; display: flex; flex-direction: column; gap: 1rem; } .stage-progress { list-style: none; display: flex; gap: 0.5rem; justify-content: stretch; margin: 0; padding: 0; & li { flex-grow: 1; height: 0.25rem; border-radius: 100vw; background-color: var(--clr-white); &.done { background-color: var(--clr-green); } } } .stage-header { display: flex; gap: 0.5rem; align-items: center; & h1 { font: var(--td-base); margin: 0; } } .stage-icon { width: 2.5rem; aspect-ratio: 1; background-color: var(--clr-green); border-radius: 50%; display: flex; align-items: center; justify-content: center; } .stage-progress { font: var(--td-s); text-transform: uppercase; font-weight: 700; } @keyframes glow { from { --glow-deg: 0deg; } to { --glow-deg: 360deg; } } .answers-container { display: flex; flex-direction: column; gap: 0.5rem; padding: 1.5rem; & form { display: flex; } & button { text-align: left; appearance: none; border: 3px solid transparent; flex-grow: 1; line-height: 1.25; background: var(--clr-white); border-radius: 100vw; font-weight: 700; padding: 1rem; box-sizing: border-box; color: var(--clr-black); &.chance { animation: glow 4s linear infinite; background: linear-gradient(var(--clr-white), var(--clr-white)) padding-box, conic-gradient( from var(--glow-deg), var(--clr-blue), var(--clr-green), var(--clr-blue), var(--clr-green), var(--clr-blue) ) border-box; @media (prefers-reduced-motion: reduce) { animation: none; } } } } dialog:not(.facts-modal) { border: none; border-radius: 0.5rem; width: 280px; max-width: 90%; padding: 0; & > * { padding: 0 1.25rem; } & > *:first-child { padding-block-start: 2rem; } & > *:last-child { padding-block-end: 2rem; } & h2 { padding-block-end: 2rem; margin: 0; } & svg { fill: var(--clr-white); rotate: 180deg; } } dialog::backdrop { background: rgba(0,0,0,.5); } @media (prefers-reduced-motion: no-preference) { dialog:not(.facts-modal)[open] { translate: 0 0; transition: translate var(--dur-base) var(--ease-out); } @starting-style { dialog:not(.facts-modal)[open] { translate: 0 100dvh; } } dialog:not(.facts-modal)[open].is-leaving, dialog:not(.facts-modal)[open].is-confirming { pointer-events: none; transition-timing-function: var(--ease-in); } dialog:not(.facts-modal)[open].is-leaving { translate: 0 100dvh; } dialog:not(.facts-modal)[open].is-confirming { translate: 0 -100dvh; } dialog:not(.facts-modal)[open]::backdrop { opacity: 1; transition: opacity var(--dur-base) var(--ease-out); } @starting-style { dialog:not(.facts-modal)[open]::backdrop { opacity: 0; } } dialog:not(.facts-modal)[open].is-leaving::backdrop, dialog:not(.facts-modal)[open].is-confirming::backdrop { opacity: 0; } } .header-label { text-transform: uppercase; font: var(--td-s); font-weight: 700; padding-block-end: 1rem; } .dialog-actions { background-color: var(--clr-green); display: flex; flex-direction: column; gap: 2rem; svg.ico-wave { align-self: center; transform: translateY(1px); } & > div { display: flex; gap: 0.5rem; } & button { text-align: center; flex: 1; } } .results-header { background-color: var(--clr-green); padding: 2rem 1rem 2rem 1rem; strong { display: block; } } .results-header { background-image: url("inter-ikea-systems.svg"); background-repeat: no-repeat; background-position: calc(100% - 0.5rem) 0.5rem; button { appearance: none; background-color: transparent; border: none; display: flex; align-items: center; gap: 0.5rem; } } .results-tagline { display: grid; grid-template-columns: 1fr max-content; svg { fill: var(--clr-green); rotate: 180deg; width: 190px; height: 96px; } &>div:first-child { align-self: center; font: var(--td-base); padding: 1rem 0 1rem 1rem; } } .impact { display: flex; flex-direction: column; margin: 1.5rem 1rem; font: var(--td-base); & + .impact { margin-block-start: 0; } h3 { font: var(--td-base); font-weight: 700; margin: 0; } .icon { width: 40px; aspect-ratio: 1; display: inline-flex; justify-content: center; align-items: center; background-color: var(--clr-green); border-radius: 50%; margin-block-end: 0.25rem; } details { border-width: 1px 0; border-color: var(--clr-black); border-style: solid; margin: 0.5rem 0; padding: 0.5rem 0; & summary { list-style: none; cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: 0.5rem; } h4 { font: var(--td-base); font-weight: 700; margin: 0; } & p { margin: 0.5rem 0; } & summary::-webkit-details-marker { display: none; } & .details-icon { width: 23px; aspect-ratio: 1; border-radius: 50%; border: 1px solid var(--clr-black); box-sizing: border-box; position: relative; &::before { content: ""; height: 13px; width: 1px; left: 10px; top: 4px; position: absolute; background-color: var(--clr-black); } &::after { content: ""; width: 13px; height: 1px; left: 4px; top: 10px; position: absolute; background-color: var(--clr-black); } } &[open] .details-icon::before { display: none; } } } .newsletter-container { margin: 0 1rem 2rem 1rem; & p { margin: 0 0 1rem 0; } a { display: inline-flex; align-items: center; gap: 0.5rem; color: var(--clr-black); text-decoration: none; & .arrow { background-color: var(--clr-green); } } } @media (min-width: 1024px) { header { inset: 1.5625rem 1.75rem auto 1.75rem; box-shadow: 0px 4px 8px 0px #0000000F, 0px 0px 4px 0px #0000000A; } .facts-modal { width: min(90vw, 42rem); max-width: min(90vw, 42rem); height: max-content; max-height: 90vh; } main, .modal-panel { article h1, .results-header h1 { font: var(--td-2xl); font-weight: 400; } } .modal-panel { min-height: 0; --clr-bg: var(--clr-white); --clr-action: var(--clr-green); .hero-container, .carousel, .carousel-frame { flex: 0 0 auto; } .hero-container { height: min(30vh, 320px); } .carousel-frame > svg.ico-wave { transform: translateY(1px); } .carousel > li { --clr-bg: var(--clr-white); article p:last-of-type { margin-block-end: 0; } } .scroll-marker-group button { background-color: var(--clr-sand); &.current { background-color: var(--clr-black); } } h2 { max-width: 22ch; } & > article { padding-block-start: 0.5rem; margin-block-end: 1rem; } } #language-menu { position: fixed; background-color: var(--clr-white); inset: 0; margin: auto; width: max-content; max-width: 90vw; height: 50%; min-height: 24rem; padding: 1.5rem; border-radius: 0; overflow-y: auto; box-shadow: 0 0 0 100vmax rgba(0, 0, 0, 0.5); .language-button { display: flex; width: 1.5rem; height: 1.5rem; padding: 0; box-sizing: border-box; background-color: transparent; border: 1px solid var(--clr-black); margin-block-end: 1rem; svg { width: 37.5%; display: block; aspect-ratio: 1; } } h2 strong { display: inline; } &::-webkit-scrollbar { width: 0.75rem; } &::-webkit-scrollbar-thumb { border-radius: 0; background-color: rgba(0, 0, 0, 0.3); } &::-webkit-scrollbar-track { border-radius: 0; background-color: var(--clr-white); } } main { display: grid; grid-template-columns: 4fr 6fr; h1, h2 { font: var(--td-2xl); } .hero-container { display: grid; position: sticky; top: 0; align-self: start; height: 100vh; } &.intro { h2 { font-size: var(--fs-2xl); } .hero-container { grid-column: 1 / span 2; article { max-width: 50vw; } } } &.start { article { grid-area: 1 / 1; display: flex; flex-direction: column; padding: 2.5rem; text-align: left; h1, p, .cta { margin-left: 0; margin-right: 0; } h1 { font-size: var(--fs-3xl); } p { font-size: var(--fs-lg); } & > div:first-child { flex: 1; display: flex; flex-direction: column; justify-content: center; } } .play-time { flex: 0 0 auto; margin-block-start: 0; } .hero-container { grid-area: 1 / 2; svg.ico-wave { place-self: start start; display: block; width: 345px; height: 174px; transform-origin: 0 0; transform: rotate(90deg) translate(345px, -174px) scaleX(-1); } } } &.stage, &.good_answer, &.bad_answer, &.last_save { grid-template-columns: 6fr 4fr; grid-template-rows: auto 1fr auto; .hero-container { grid-area: 1 / 1 / span 3 / span 1; article { display: none; } #inter-ikea-systems { bottom: 1rem; top: auto; } svg.ico-wave { place-self: start end; display: block; width: 345px; height: 174px; transform-origin: 0 0; transform: rotate(-90deg) translate(-345px, 174px); } } .stage-header-container { grid-area: 1 / 2; padding: 2.5rem; } .question-container { display: block; grid-area: 2 / 2; text-align: left; padding: 0 2.5rem; h2 { font-size: var(--fs-2xl); } } .answers-container { grid-area: 3 / 2; justify-content: end; padding: 2.5rem; gap: 1rem; } } &.good_answer, &.bad_answer { grid-template-rows: auto auto 1fr; --clr-action: var(--clr-sand-light); .stage-progress li.done { background-color: var(--clr-black); } .stage-icon { background-color: var(--clr-white); } .question-container { font-size: var(--fs-2xl); line-height: 1.2; text-align: left; font-weight: 400; padding-bottom: 0.2rem; h2 { margin: 0; font-weight: 700; } p { margin: 0; } } .answers-container { justify-content: space-between; font-size: var(--fs-lg); padding-top: 1.8rem; h2 { font-size: var(--fs-lg); } } .hero-container img { display: block; } } &.good_answer { .stage-header-container, .question-container, .answers-container { background-color: var(--clr-green); } .hero-container svg.ico-wave { fill: var(--clr-green); } } &.bad_answer { .stage-header-container, .question-container, .answers-container { background-color: var(--clr-blue); } .hero-container svg.ico-wave { fill: var(--clr-blue); } } &.results { margin-block-end: 0; .results-header { background-image: none; } .icon { background-color: var(--clr-sand-light); margin-block-end: 0.5rem; } .impact { font: var(--td-lg); h3 { font-size: var(--fs-lg); } details { margin: 1rem 0; } } & > *:not(.hero-container) { grid-column-start: 1; background-color: var(--clr-green); margin: 0; padding: 1.5rem 2.5rem 0 2.5rem; } .results-tagline { display: block; svg { display: none; } &>div:first-child { font: var(--td-lg); padding: 0; } } .hero-container { display: block; grid-column: 2 / span 1; grid-row: 1 / span 8; svg.ico-wave { top: 0; left: 0; position: absolute; width: 345px; height: 174px; transform-origin: 0 0; transform: rotate(90deg) translate(345px, -174px) scaleX(-1); } } .newsletter-container a .arrow { background-color: var(--clr-white); } .cta-container { gap: 1rem; padding-bottom: 2.5rem; --clr-action: var(--clr-sand-light); } } } } .debug-score { display: none; position: fixed; font-size: var(--fs-s); left: 50%; bottom: 0; padding: 1rem; background-color: var(--clr-white); transform: translateX(-50%); z-index: 100; & dl { display: grid; grid-template-columns: max-content max-content; gap: 0 1ch; & dd { text-align: right; } } }