From 6bf09bea5dafa42182ea4c84a67982035304643b Mon Sep 17 00:00:00 2001 From: Athanasia Monika Mowinckel Date: Thu, 15 Oct 2026 20:43:57 +0200 Subject: [PATCH] Add three landing page directions to compare Draft-only pages under /options/, noindex, not linked from the nav. They exist to pick a direction, not to merge as-is. Each answers the "people don't get what we do" problem differently, in what the page leads with rather than in styling: A /options/a-stuck/ Lead with the visitor's problem in their own words; six first-person statements that self-route to the relevant service. B /options/b-receipts/ Lead with delivered work and the researchers' own quotes, which are specific and quantified. C /options/c-sentence/ One screen, one sentence, one action. The literal reading of "minimalistic". Each page carries a bar linking the others plus the current site, with its premise in a disclosure, so they can be compared in one sitting. Only two of the quoted projects have imagery that genuinely belongs to them, so B shows those two as full cases and the rest as plain quotes rather than pairing quotes with unrelated project logos. Co-Authored-By: Claude Opus 5 (1M context) --- content/options/_index.md | 10 + content/options/a-stuck.md | 36 ++ content/options/b-receipts.md | 59 ++ content/options/c-sentence.md | 32 ++ .../assets/css/components/options.css | 539 ++++++++++++++++++ themes/capro-tw/assets/css/main.css | 1 + .../capro-tw/assets/css/vendor/tailwind.css | 2 +- themes/capro-tw/layouts/options/list.html | 19 + themes/capro-tw/layouts/options/single.html | 6 + .../layouts/partials/options/bar.html | 14 + .../layouts/partials/options/receipts.html | 47 ++ .../layouts/partials/options/sentence.html | 21 + .../layouts/partials/options/stuck.html | 31 + 13 files changed, 816 insertions(+), 1 deletion(-) create mode 100644 content/options/_index.md create mode 100644 content/options/a-stuck.md create mode 100644 content/options/b-receipts.md create mode 100644 content/options/c-sentence.md create mode 100644 themes/capro-tw/assets/css/components/options.css create mode 100644 themes/capro-tw/layouts/options/list.html create mode 100644 themes/capro-tw/layouts/options/single.html create mode 100644 themes/capro-tw/layouts/partials/options/bar.html create mode 100644 themes/capro-tw/layouts/partials/options/receipts.html create mode 100644 themes/capro-tw/layouts/partials/options/sentence.html create mode 100644 themes/capro-tw/layouts/partials/options/stuck.html diff --git a/content/options/_index.md b/content/options/_index.md new file mode 100644 index 00000000..d47fcf16 --- /dev/null +++ b/content/options/_index.md @@ -0,0 +1,10 @@ +--- +title: Landing page options +summary: Three different answers to "people don't get what we do or how to use us" +--- + +Three directions for the landing page. They differ in **what the page leads +with**, not in styling — the question each one answers first is different. + +Compare them against the current site at [/](/) and against the capability-grid +version in PR #23. diff --git a/content/options/a-stuck.md b/content/options/a-stuck.md new file mode 100644 index 00000000..8c580678 --- /dev/null +++ b/content/options/a-stuck.md @@ -0,0 +1,36 @@ +--- +title: "Option A — What are you stuck on?" +variant: stuck +weight: 1 +premise: | + Visitors do not know what "data engineering" means, but they know exactly what + is blocking them. Lead with their problem in their own words and let them + self-route. +lead: What are you stuck on? +standfirst: | + CAPRO is the data team at the Department of Psychology, University of Oslo. + Most people arrive with one of these. +items: + - say: I'm writing a grant and need a data management plan. + answer: Data governance & FAIR + link: /service/ + - say: I've collected data and can't get it analysis-ready. + answer: Data engineering + link: /service/ + - say: My analysis is too big for my laptop. + answer: High-performance computing + link: /service/ + - say: I need to collect data from participants, securely. + answer: Data capture + link: /service/ + - say: My team needs to learn R or Python. + answer: Workshops + link: /service/ + - say: I need a database or app to keep the project straight. + answer: Applications & databases + link: /service/ +closer: + text: Something else, or not sure which of these it is? + label: Book a free 30-minute conversation + link: https://app.reclaim.ai/m/capro/initiating-talks +--- diff --git a/content/options/b-receipts.md b/content/options/b-receipts.md new file mode 100644 index 00000000..3e487106 --- /dev/null +++ b/content/options/b-receipts.md @@ -0,0 +1,59 @@ +--- +title: "Option B — We have already done this" +variant: receipts +weight: 2 +premise: | + A core facility earns trust by showing delivered work. The team's testimonials + are specific and quantified; that is a stronger asset than any description of + services. Lead with the receipts. +lead: We have already done this for projects like yours. +standfirst: | + CAPRO is the data team at the Department of Psychology, University of Oslo. + Here is the work, in the words of the researchers who ran it. +cases: + - project: Center for Lifespan Changes in Brain and Cognition + did: A custom database spanning 15 years of longitudinal collection. + quote: | + I am finally able to work with merged and tidy data for my papers, and to + explore the entire catalogue of data without assistance. + who: Kristine B. Walhovd + role: Center leader + portfolio: /portfolio/tsd-mri + kind: photo + alt: Sagittal MPRAGE brain scan produced by the centre's imaging pipeline + + - project: Lifebrain EU-Consortium + did: Data from 5,000 participants, plus a 27,000-respondent survey, organised and released. + quote: | + A real treasure-trove: a user-friendly, secure, easy to explore data + structure, with all the data and statistical analyses available for + further use. + who: Barbara Bodorkos Friedman + role: Administrative coordinator + portfolio: /portfolio/gbhs + kind: mark + alt: Global Brain Health Survey project mark, Lifebrain consortium +alsoTitle: And for others +also: + - quote: | + Amazing in creating and maintaining a stable and scalable data management + and processing environment. It has allowed me to successfully process + thousands of brain MRI data sets. + who: William F. C. Baaré + role: Senior researcher, Danish Research Centre for Magnetic Resonance + - quote: | + Successful access to the Lifebrain Consortium data thanks to the Capro + team's effective coordination, organised in an easy-to-navigate system. + who: David Bartrés-Faz + role: Professor, University of Barcelona + - quote: | + An excellent instructor who can adapt to different teaching contexts and + audiences. Her enthusiasm for the topics makes the learning experience + better. + who: Agata Bochynska + role: Researcher and research librarian, University of Oslo Library +closer: + text: Your project is probably not as unusual as it feels. + label: Book a free 30-minute conversation + link: https://app.reclaim.ai/m/capro/initiating-talks +--- diff --git a/content/options/c-sentence.md b/content/options/c-sentence.md new file mode 100644 index 00000000..cceba645 --- /dev/null +++ b/content/options/c-sentence.md @@ -0,0 +1,32 @@ +--- +title: "Option C — One sentence" +variant: sentence +weight: 3 +premise: | + The literal reading of "minimalistic". One screen, one sentence a + non-technical reader understands, one action. Everything else is one click + away. Also proposes a four-item nav. +lead: | + We handle the data side of your research project. +body: | + Collecting it, cleaning it, storing it safely, running the analyses that are + too big for your laptop, and teaching your team to do it themselves. +verbs: + - word: Collect + link: /service/ + - word: Process + link: /service/ + - word: Store + link: /service/ + - word: Teach + link: /service/ +closer: + text: | + Thirty minutes, free, no commitment. We will tell you honestly if we are + not the right people. + label: Book a conversation + link: https://app.reclaim.ai/m/capro/initiating-talks +whois: | + CAPRO — the data team at the Department of Psychology, University of Oslo. + Harald Schjelderups hus, Forskningsveien 3A, Oslo. +--- diff --git a/themes/capro-tw/assets/css/components/options.css b/themes/capro-tw/assets/css/components/options.css new file mode 100644 index 00000000..0495188a --- /dev/null +++ b/themes/capro-tw/assets/css/components/options.css @@ -0,0 +1,539 @@ +@layer components { + /* ---- shared: the draft-option strip ------------------------------- */ + + .option-bar { + @apply flex flex-wrap items-center gap-x-5 gap-y-2 px-4 py-3; + background-color: var(--color-dark); + border-bottom: 1px solid var(--color-border); + font-size: 0.8rem; + } + + .option-bar__tag { + @apply px-2 py-1 font-semibold uppercase; + font-size: 0.65rem; + letter-spacing: 0.09em; + background-color: var(--color-primary); + color: #fff; + } + + .option-bar__links { + @apply flex flex-wrap gap-x-4 gap-y-1; + } + + .option-bar__links a { + color: var(--color-muted); + text-decoration: underline; + text-underline-offset: 3px; + text-decoration-color: color-mix( + in oklch, + var(--color-muted) 40%, + transparent + ); + } + + .option-bar__links a:hover { + color: var(--color-body); + } + + .option-bar__links a[aria-current="page"] { + color: var(--color-primary-text); + text-decoration: none; + font-weight: 500; + } + + .option-bar__why summary { + color: var(--color-muted); + cursor: pointer; + } + + .option-bar__why p { + @apply mt-2; + max-width: 62ch; + font-size: 0.85rem; + color: var(--color-body); + } + + /* ---- A: what are you stuck on ------------------------------------- */ + + .stuck { + padding-block: clamp(3.5rem, 9vw, 8rem); + } + + .stuck__inner { + @apply mx-auto px-6; + max-width: 68rem; + } + + .stuck__head { + margin-bottom: clamp(2.5rem, 6vw, 5rem); + } + + .stuck h1 { + font-size: clamp(2.4rem, 7vw, 5rem); + font-weight: 300; + line-height: 1.02; + letter-spacing: -0.03em; + color: var(--color-body); + text-wrap: balance; + max-width: 16ch; + } + + .stuck__standfirst { + @apply mt-6; + max-width: 46ch; + font-size: 1.02rem; + color: var(--color-muted); + text-wrap: pretty; + } + + .stuck__list { + list-style: none; + margin: 0; + padding: 0; + border-top: 1px solid var(--color-border); + } + + .stuck__row { + border-bottom: 1px solid var(--color-border); + } + + .stuck__row > a { + @apply flex flex-wrap items-baseline justify-between gap-x-8 gap-y-2; + padding-block: clamp(1.1rem, 2.6vw, 1.9rem); + color: var(--color-body); + transition: + color 220ms cubic-bezier(0.16, 1, 0.3, 1), + padding-inline 320ms cubic-bezier(0.16, 1, 0.3, 1); + } + + .stuck__say { + font-family: var(--font-serif); + font-size: clamp(1.15rem, 2.5vw, 1.8rem); + line-height: 1.35; + flex: 1 1 22ch; + text-wrap: pretty; + } + + .stuck__answer { + @apply inline-flex items-center gap-3 flex-shrink-0; + color: var(--color-muted); + font-size: 0.78rem; + font-weight: 500; + text-transform: uppercase; + letter-spacing: 0.1em; + } + + .stuck__arrow { + transition: transform 320ms cubic-bezier(0.16, 1, 0.3, 1); + } + + .stuck__row > a:hover, + .stuck__row > a:focus-visible { + color: var(--color-primary-text); + padding-inline: 1rem; + } + + .stuck__row > a:hover .stuck__answer, + .stuck__row > a:focus-visible .stuck__answer { + color: var(--color-primary-text); + } + + .stuck__row > a:hover .stuck__arrow, + .stuck__row > a:focus-visible .stuck__arrow { + transform: translateX(6px); + } + + .stuck__closer { + @apply flex flex-wrap items-center justify-between gap-6; + margin-top: clamp(2.5rem, 6vw, 4.5rem); + } + + .stuck__closer p { + margin: 0; + max-width: 34ch; + color: var(--color-muted); + font-size: 0.98rem; + } + + .stuck__cta, + .receipts__cta, + .sentence__cta { + @apply inline-block font-semibold; + padding: 1rem 2rem; + background-color: var(--color-primary); + color: #fff; + font-size: 0.85rem; + text-transform: uppercase; + letter-spacing: 0.09em; + transition: + background-color 200ms ease, + transform 200ms cubic-bezier(0.16, 1, 0.3, 1); + } + + .stuck__cta:hover, + .receipts__cta:hover, + .sentence__cta:hover { + background-color: var(--color-primary-dark); + color: #fff; + transform: translateY(-2px); + } + + /* ---- B: receipts --------------------------------------------------- */ + + .receipts { + padding-block: clamp(3.5rem, 8vw, 7rem) 0; + } + + .receipts__head { + @apply mx-auto px-6; + max-width: 68rem; + margin-bottom: clamp(3rem, 8vw, 6rem); + } + + .receipts h1 { + font-size: clamp(2.2rem, 6vw, 4.2rem); + font-weight: 300; + line-height: 1.05; + letter-spacing: -0.03em; + color: var(--color-body); + text-wrap: balance; + max-width: 20ch; + } + + .receipts__standfirst { + @apply mt-6; + max-width: 48ch; + color: var(--color-muted); + text-wrap: pretty; + } + + .receipt { + @apply grid items-center gap-x-12 gap-y-8 mx-auto px-6; + max-width: 76rem; + grid-template-columns: 1fr; + padding-block: clamp(2.5rem, 6vw, 4.5rem); + border-top: 1px solid var(--color-border); + } + + @media (min-width: 900px) { + .receipt { + grid-template-columns: 5fr 7fr; + } + .receipt--flip .receipt__media { + order: 2; + } + } + + .receipt__media { + background-color: var(--color-dark); + border: 1px solid var(--color-border); + aspect-ratio: 3 / 2; + display: flex; + align-items: center; + justify-content: center; + padding: clamp(1rem, 3vw, 2.25rem); + overflow: hidden; + } + + .receipt__media--photo { + padding: 0; + } + + .receipt__media--photo img { + width: 100%; + height: 100%; + object-fit: cover; + } + + .receipt__media--mark img { + width: auto; + height: auto; + max-width: min(100%, 15rem); + max-height: 100%; + object-fit: contain; + } + + .receipt__project { + font-size: 0.78rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.11em; + color: var(--color-secondary); + } + + .receipt__did { + @apply mt-3; + font-family: var(--font-sans); + font-size: 1.05rem; + color: var(--color-body); + max-width: 44ch; + } + + .receipt__quote { + @apply mt-7 pl-6; + border-left: 1px solid var(--color-primary); + max-width: 50ch; + } + + .receipt__quote p { + font-family: var(--font-serif); + font-size: clamp(1.15rem, 2.2vw, 1.55rem); + line-height: 1.55; + color: var(--color-body); + margin: 0; + text-wrap: pretty; + } + + .receipt__who { + @apply mt-5 flex flex-wrap items-baseline gap-x-3; + font-family: var(--font-sans); + font-size: 0.85rem; + color: var(--color-muted); + } + + .receipt__who strong { + font-weight: 500; + color: var(--color-body); + } + + .also { + @apply mx-auto px-6; + max-width: 76rem; + padding-block: clamp(2.5rem, 6vw, 4.5rem); + border-top: 1px solid var(--color-border); + } + + .also__title { + font-size: 0.78rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.11em; + color: var(--color-secondary); + } + + .also__grid { + @apply grid gap-x-10 gap-y-9 mt-8; + grid-template-columns: repeat(auto-fit, minmax(17rem, 1fr)); + } + + .also__item { margin: 0; } + + .also__item blockquote { margin: 0; } + + .also__item blockquote p { + margin: 0; + font-family: var(--font-serif); + font-size: 1.02rem; + line-height: 1.6; + color: var(--color-body); + text-wrap: pretty; + } + + .also__item figcaption { + @apply mt-4 flex flex-col; + font-size: 0.82rem; + color: var(--color-muted); + } + + .also__item figcaption strong { + font-weight: 500; + color: var(--color-body); + } + + .receipts__closer { + @apply flex flex-wrap items-center justify-between gap-6 mx-auto px-6; + max-width: 76rem; + padding-block: clamp(3rem, 7vw, 5.5rem); + border-top: 1px solid var(--color-border); + } + + .receipts__closer p { + margin: 0; + max-width: 30ch; + font-family: var(--font-serif); + font-size: clamp(1.1rem, 2.2vw, 1.5rem); + color: var(--color-body); + } + + /* ---- C: one sentence ----------------------------------------------- */ + + .sentence { + @apply flex flex-col; + min-height: calc(100svh - 4rem - 3.25rem); + padding: clamp(3rem, 9vh, 7rem) 1.5rem clamp(2rem, 5vh, 3rem); + } + + .sentence__inner { + @apply flex-1 flex flex-col justify-center mx-auto w-full; + max-width: 54rem; + } + + .sentence__lead { + font-size: clamp(2.5rem, 7.2vw, 5.5rem); + font-weight: 300; + line-height: 1.03; + letter-spacing: -0.035em; + color: var(--color-body); + text-wrap: balance; + } + + .sentence__body { + @apply mt-8; + max-width: 50ch; + font-size: clamp(1.05rem, 2.1vw, 1.3rem); + line-height: 1.65; + color: var(--color-muted); + text-wrap: pretty; + } + + .sentence__verbs { + @apply flex flex-wrap gap-x-8 gap-y-3 mt-10 p-0; + list-style: none; + } + + .sentence__verbs a { + font-size: 0.82rem; + font-weight: 500; + text-transform: uppercase; + letter-spacing: 0.12em; + color: var(--color-secondary); + padding-bottom: 3px; + border-bottom: 1px solid + color-mix(in oklch, var(--color-secondary) 35%, transparent); + transition: + color 200ms ease, + border-color 200ms ease; + } + + .sentence__verbs a:hover { + color: var(--color-primary-text); + border-bottom-color: var(--color-primary); + } + + .sentence__act { + @apply flex flex-wrap items-center gap-x-8 gap-y-4; + margin-top: clamp(3rem, 7vh, 5rem); + } + + .sentence__fineprint { + margin: 0; + max-width: 34ch; + font-size: 0.9rem; + color: var(--color-muted); + } + + .sentence__whois { + @apply mx-auto w-full mt-16; + max-width: 54rem; + font-family: var(--font-sans); + font-size: 0.8rem; + line-height: 1.7; + color: var(--color-muted); + } + + /* ---- options index -------------------------------------------------- */ + + .optindex { + @apply mx-auto px-6; + max-width: 60rem; + padding-block: clamp(3rem, 8vw, 6rem); + } + + .optindex h1 { + font-size: clamp(2rem, 5vw, 3.2rem); + font-weight: 300; + letter-spacing: -0.025em; + color: var(--color-body); + } + + .optindex__intro { + @apply mt-5; + max-width: 58ch; + color: var(--color-muted); + } + + .optindex__list { + @apply mt-12 p-0; + list-style: none; + border-top: 1px solid var(--color-border); + } + + .optindex__list li { + border-bottom: 1px solid var(--color-border); + } + + .optindex__list a { + @apply block; + padding-block: 1.75rem; + } + + .optindex__list h2 { + font-size: clamp(1.2rem, 2.6vw, 1.7rem); + font-weight: 400; + color: var(--color-body); + transition: color 200ms ease; + } + + .optindex__list a:hover h2 { + color: var(--color-primary-text); + } + + .optindex__list p { + @apply mt-2; + max-width: 62ch; + font-size: 0.95rem; + color: var(--color-muted); + } +} + +/* Entrance motion: enhances an already-visible default. */ +@media (prefers-reduced-motion: no-preference) { + .stuck__row, + .receipt, + .sentence__inner > * { + animation: option-rise 640ms cubic-bezier(0.16, 1, 0.3, 1) backwards; + } + + .stuck__row { + animation-delay: calc(90ms + var(--row) * 55ms); + } + .receipt { + animation-delay: 120ms; + } + .sentence__inner > *:nth-child(1) { + animation-delay: 60ms; + } + .sentence__inner > *:nth-child(2) { + animation-delay: 150ms; + } + .sentence__inner > *:nth-child(3) { + animation-delay: 240ms; + } + .sentence__inner > *:nth-child(4) { + animation-delay: 330ms; + } + + @keyframes option-rise { + from { + opacity: 0; + transform: translateY(14px); + } + to { + opacity: 1; + transform: none; + } + } +} + +/* Entrance motion must never be what makes content visible: if animations + are suppressed (print, forced-colors, a renderer that skips them), the + backwards fill would otherwise hold opacity 0. */ +@media print, (forced-colors: active) { + .stuck__row, + .receipt, + .sentence__inner > * { + animation: none !important; + opacity: 1 !important; + transform: none !important; + } +} diff --git a/themes/capro-tw/assets/css/main.css b/themes/capro-tw/assets/css/main.css index bdc5f9bb..d9f90f3e 100644 --- a/themes/capro-tw/assets/css/main.css +++ b/themes/capro-tw/assets/css/main.css @@ -123,3 +123,4 @@ @import "./components/team.css"; @import "./components/pubs.css"; @import "./components/footer-waves.css"; +@import "./components/options.css"; diff --git a/themes/capro-tw/assets/css/vendor/tailwind.css b/themes/capro-tw/assets/css/vendor/tailwind.css index a6f2f9fc..880bb8d3 100644 --- a/themes/capro-tw/assets/css/vendor/tailwind.css +++ b/themes/capro-tw/assets/css/vendor/tailwind.css @@ -1,2 +1,2 @@ /*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */ -@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-tracking:initial;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0}}}@layer theme{:root,:host{--font-sans:"Space Grotesk", sans-serif;--font-serif:"Spectral", serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--container-5xl:64rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--text-5xl:3rem;--text-5xl--line-height:1;--text-7xl:4.5rem;--text-7xl--line-height:1;--text-8xl:6rem;--text-8xl--line-height:1;--font-weight-light:300;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wider:.05em;--tracking-widest:.1em;--leading-relaxed:1.625;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-primary:#c04545;--color-primary-text:#e57575;--color-primary-dark:#b84444;--color-secondary:#85bfbf;--color-dark:#20242b;--color-grey:#2a2f36;--color-light:#8a8e93;--color-body:#d0d2d4;--color-muted:#9a9da0;--color-border:#eceff11f;--transition-fast:.2s ease;--transition-base:.3s ease;--transition-slow:.6s ease}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}@font-face{font-family:Space Grotesk;src:url(/webfonts/google-fonts/space-grotesk/space-grotesk-latin-300-normal.woff2)format("woff2");font-weight:300;font-display:swap}@font-face{font-family:Space Grotesk;src:url(/webfonts/google-fonts/space-grotesk/space-grotesk-latin-400-normal.woff2)format("woff2");font-weight:400;font-display:swap}@font-face{font-family:Space Grotesk;src:url(/webfonts/google-fonts/space-grotesk/space-grotesk-latin-500-normal.woff2)format("woff2");font-weight:500;font-display:swap}@font-face{font-family:Spectral;src:url(/webfonts/google-fonts/spectral/spectral-latin-300-normal.woff2)format("woff2");font-weight:300;font-display:swap}html{scroll-behavior:smooth;background-color:var(--color-grey);color:var(--color-body)}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}body{font-family:var(--font-sans);-webkit-font-smoothing:antialiased;font-size:18px;line-height:1.6}@media (min-width:768px){body{font-size:20px}}h1,h2,h3,h4,h5,h6{font-family:var(--font-sans);color:var(--color-secondary);line-height:1.2}h1{font-weight:300}h2{font-weight:500}h3,h4,h5,h6{font-weight:400}p{font-family:var(--font-serif);color:var(--color-body);line-height:1.7}a{color:var(--color-secondary);transition:color var(--transition-fast);text-decoration:none}a:hover{color:var(--color-body)}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}::selection{background:var(--color-primary);color:var(--color-body)}}@layer components{.section{padding-top:6rem;padding-bottom:6rem}@media (max-width:768px){.section{padding-top:3rem;padding-bottom:3rem}}.section-title{margin-bottom:calc(var(--spacing) * 12);text-align:center}.section-title h2{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height));--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold);text-transform:capitalize;color:var(--color-body)}.section-title .accent{color:var(--color-primary-text)}.border-accent{border-top:2px solid var(--color-border);width:30%;height:1px;margin:15px auto 0;position:relative}.border-accent:before{content:"";background-color:var(--color-primary);width:50px;height:6px;margin-left:-25px;position:absolute;top:-4px;left:50%}.bg-dark{background-color:var(--color-dark)}.bg-grey{background-color:var(--color-grey)}.reveal{opacity:0;transition:opacity var(--transition-slow), transform var(--transition-slow);transform:translateY(24px)}.reveal.visible{opacity:1;transform:translateY(0)}.site-nav{top:calc(var(--spacing) * 0);z-index:50;background-color:var(--color-dark);transition:border-color var(--transition-base), box-shadow var(--transition-base);border-bottom:1px solid #0000;position:sticky}.site-nav.nav-scrolled{border-bottom-color:var(--color-border);box-shadow:0 2px 12px #0000004d}.site-nav a{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider);text-transform:uppercase;color:var(--color-body);transition:color var(--transition-fast)}.site-nav a:hover,.site-nav a.active{color:var(--color-primary)}.lang-select{cursor:pointer;border-style:var(--tw-border-style);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));appearance:none;background:var(--color-dark);color:var(--color-body);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23d0d2d4' stroke-width='2' fill='none'/%3E%3C/svg%3E");background-position:right 6px center;background-repeat:no-repeat;border-width:0;padding:4px 24px 4px 8px}.footer-social-icon{height:calc(var(--spacing) * 12);width:calc(var(--spacing) * 12);font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height));color:var(--color-light);border:1px solid var(--color-border);transition:all var(--transition-base);border-radius:3.40282e38px;justify-content:center;align-items:center;display:flex}.footer-social-icon:hover{background-color:var(--color-primary);border-color:var(--color-primary);color:#fff}.btn{padding-inline:calc(var(--spacing) * 8);padding-block:calc(var(--spacing) * 3);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider);text-transform:uppercase;transition:all var(--transition-fast);display:inline-block}.btn-primary{background-color:var(--color-primary-dark);color:#fff}.btn-primary:hover{background-color:var(--color-primary);color:#fff}.btn-outline{border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-border);color:var(--color-body)}.btn-outline:hover{border-color:var(--color-primary);color:var(--color-primary)}.btn-hero{padding-inline:calc(var(--spacing) * 14);padding-block:calc(var(--spacing) * 5);font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height));--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold);--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest);text-transform:uppercase;background-color:var(--color-primary);border:2px solid var(--color-primary);color:#fff}.btn-hero:hover{color:#fff;background-color:#0000;border-color:#fff}.about-block{background:var(--color-dark);height:100%;transition:border-color var(--transition-base);border-bottom:2px solid #0000;padding:40px 32px}.about-block:hover{border-bottom-color:var(--color-primary)}.about-block:hover .icon-box{transform:translateY(-10px)}.about-block h3{color:var(--color-secondary)}.icon-box{border-left:2px solid var(--color-secondary);border-right:2px solid var(--color-secondary);width:160px;height:92px;color:var(--color-light);transition:transform var(--transition-base);z-index:1;background-color:#0000;justify-content:center;align-items:center;margin:46px auto 60px;padding:20px 0;font-size:36px;display:flex;position:relative}.icon-box:before,.icon-box:after{content:"";z-index:-1;background-color:var(--color-dark);width:113.14px;height:113.14px;position:absolute;left:20.43px;transform:scaleY(.5774)rotate(-45deg)}.icon-box:before{border-top:2px solid var(--color-secondary);border-right:2px solid var(--color-secondary);top:-56.57px}.icon-box:after{border-bottom:2px solid var(--color-secondary);border-left:2px solid var(--color-secondary);bottom:-56.57px}.service-block{text-align:center;background-color:var(--color-dark);border-left:1px solid var(--color-border);border-top:1px solid var(--color-border);height:100%;padding:60px 32px;box-shadow:2px 2px 5px #2c2c2c4d,13px 13px #ffffff1f}.service-block i{margin-bottom:calc(var(--spacing) * 6);color:var(--color-light);font-size:50px;display:block}.service-block h3{margin-bottom:calc(var(--spacing) * 3);font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-secondary)}.progress-bar-track{background-color:var(--color-border);border-radius:3.40282e38px;width:100%;height:6px}.progress-bar-fill{background-color:var(--color-primary);border-radius:3.40282e38px;height:100%;transition:width .8s}.counter-card{background-color:var(--color-dark);flex-direction:column;justify-content:center;align-items:center;width:200px;height:200px;padding:32px 24px;display:flex}.counter-card i{margin-bottom:calc(var(--spacing) * 3);color:var(--color-light);font-size:40px;display:block}.counter-card .counter-value{color:var(--color-secondary);font-size:48px;font-weight:700}.counter-card h3{margin-top:calc(var(--spacing) * 2);color:var(--color-body);font-size:.9rem}.price-card{background-color:var(--color-dark);border:1px solid var(--color-border);height:100%;transition:border-color var(--transition-base);padding:40px 32px}.price-card h3{color:var(--color-secondary);margin-bottom:24px}.price-card table td{padding:6px 8px}.price-card:hover{border-color:var(--color-primary)}.testimonial-scroll{align-items:stretch;gap:calc(var(--spacing) * 6);scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:var(--color-light) transparent;padding-bottom:16px;display:flex;overflow-x:auto}.testimonial-scroll::-webkit-scrollbar{height:6px}.testimonial-scroll::-webkit-scrollbar-track{background:0 0}.testimonial-scroll::-webkit-scrollbar-thumb{background:var(--color-light);border-radius:3px}.testimonial-nav{z-index:10;height:calc(var(--spacing) * 10);width:calc(var(--spacing) * 10);--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y);background:var(--color-dark);border:1px solid var(--color-border);color:var(--color-body);transition:all var(--transition-fast);cursor:pointer;justify-content:center;align-items:center;display:flex;position:absolute;top:50%}.testimonial-nav:hover{border-color:var(--color-primary);color:var(--color-primary)}.testimonial-nav-left{left:-20px}.testimonial-nav-right{right:-20px}@media (max-width:768px){.testimonial-nav{display:none}}.testimonial-modern{background-color:var(--color-grey);border:1px solid var(--color-border);scroll-snap-align:start;width:360px;transition:border-color var(--transition-base);flex-direction:column;flex-shrink:0;padding:32px;display:flex}.testimonial-modern:hover{border-color:var(--color-primary)}.testimonial-modern blockquote{font-size:1rem;line-height:1.7}.testimonial-modern blockquote p{margin:0}.contact-icon{margin-top:calc(var(--spacing) * 1);margin-right:calc(var(--spacing) * 4);color:var(--color-primary);font-size:20px}.portfolio-card{border:1px solid var(--color-border);background-color:var(--color-dark);transition:border-color var(--transition-base)}.portfolio-card:hover{border-color:var(--color-primary)}.portfolio-card .portfolio-img{background:#fff;justify-content:center;align-items:center;height:16rem;padding:40px;display:flex;position:relative;overflow:hidden}.portfolio-card .portfolio-img img{object-fit:contain;width:auto;max-height:100%}.portfolio-card .portfolio-overlay{inset:calc(var(--spacing) * 0);opacity:0;transition:opacity var(--transition-base);background:#ffffffeb;justify-content:center;align-items:center;display:flex;position:absolute}.portfolio-card:hover .portfolio-overlay{opacity:1}.portfolio-card .portfolio-overlay .search-circle{background-color:var(--color-primary);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:50px;height:50px;font-size:20px;display:flex}.portfolio-card .portfolio-meta{padding:20px}.portfolio-card .portfolio-meta h3{color:var(--color-secondary);font-size:1rem}.portfolio-card .portfolio-meta p{color:var(--color-light);margin-top:8px;font-size:.85rem}.team-card{border:1px solid var(--color-border);height:100%;transition:border-color var(--transition-base);background-color:#0000;flex-direction:column;display:flex;overflow:hidden}.team-card:hover{border-color:var(--color-primary)}.team-photo{position:relative;overflow:hidden}.team-photo img{width:100%;transition:transform var(--transition-base), filter var(--transition-base)}.team-photo:hover img{filter:brightness(1.15);transform:scale(1.05)}@media (prefers-contrast:more){.team-photo:hover img{filter:none}}.team-photo .social-overlay{inset:calc(var(--spacing) * 0);padding-bottom:calc(var(--spacing) * 5);opacity:0;background:linear-gradient(to top, var(--color-dark) 0%, transparent 60%);transition:opacity var(--transition-base);justify-content:center;align-items:flex-end;display:flex;position:absolute}.team-card:hover .social-overlay{opacity:1}.social-overlay a{margin-inline:calc(var(--spacing) * 1);height:calc(var(--spacing) * 9);width:calc(var(--spacing) * 9);text-align:center;font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height));--tw-leading:calc(var(--spacing) * 9);line-height:calc(var(--spacing) * 9);color:var(--color-body);transition:color var(--transition-fast);display:inline-block}.social-overlay a:hover{color:var(--color-primary)}.team-meta{background-color:var(--color-dark);flex:1;padding:16px}.team-meta h3{margin-bottom:calc(var(--spacing) * 1);font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.team-meta span{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:var(--color-light)}.pubs-table{width:100%;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-body)}.pubs-table th{padding-bottom:calc(var(--spacing) * 3);text-align:left;font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider);text-transform:uppercase;color:var(--color-body);border-bottom:1px solid var(--color-border)}.pubs-table td{padding-block:calc(var(--spacing) * 3);vertical-align:top;border-bottom:1px solid var(--color-border)}.pubs-table .pub-year{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);font-family:var(--font-sans);color:var(--color-secondary)}.pubs-table .pub-authors{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed);color:var(--color-muted)}.pubs-table .pub-title a{color:var(--color-secondary);transition:color var(--transition-fast)}.pubs-table .pub-title a:hover{color:var(--color-primary)}.pubs-table .pub-journal{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:var(--color-muted);font-style:italic}.pubs-table tbody tr:hover td{color:var(--color-body)}.year-select{cursor:pointer;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);appearance:none;background:var(--color-dark);color:var(--color-body);border:1px solid var(--color-border);transition:border-color var(--transition-fast);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23d0d2d4' stroke-width='2' fill='none'/%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;border-radius:4px;padding:8px 36px 8px 14px}.year-select:hover,.year-select:focus{border-color:var(--color-primary)}.year-select option{background:var(--color-dark);color:var(--color-body)}.footer-waves{background-color:var(--color-dark);height:60px;position:relative;overflow:hidden}.footer-waves svg{width:100%;height:100%;position:absolute;bottom:0;left:0}}@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.top-0{top:calc(var(--spacing) * 0)}.top-16{top:calc(var(--spacing) * 16)}.right-0{right:calc(var(--spacing) * 0)}.right-5{right:calc(var(--spacing) * 5)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-5{bottom:calc(var(--spacing) * 5)}.left-0{left:calc(var(--spacing) * 0)}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.my-6{margin-block:calc(var(--spacing) * 6)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mt-auto{margin-top:auto}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.mb-10{margin-bottom:calc(var(--spacing) * 10)}.mb-12{margin-bottom:calc(var(--spacing) * 12)}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-16{height:calc(var(--spacing) * 16)}.h-20{height:calc(var(--spacing) * 20)}.h-24{height:calc(var(--spacing) * 24)}.h-48{height:calc(var(--spacing) * 48)}.h-full{height:100%}.min-h-\[400px\]{min-height:400px}.min-h-screen{min-height:100vh}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-48{width:calc(var(--spacing) * 48)}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-none{max-width:none}.flex-shrink-0{flex-shrink:0}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-12{gap:calc(var(--spacing) * 12)}.gap-16{gap:calc(var(--spacing) * 16)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-border{border-color:var(--color-border)}.border-primary{border-color:var(--color-primary)}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.bg-black\/50{background-color:color-mix(in oklab, var(--color-black) 50%, transparent)}}.bg-black\/60{background-color:#0009}@supports (color:color-mix(in lab, red, red)){.bg-black\/60{background-color:color-mix(in oklab, var(--color-black) 60%, transparent)}}.bg-dark{background-color:var(--color-dark)}.bg-grey{background-color:var(--color-grey)}.bg-primary{background-color:var(--color-primary)}.bg-cover{background-size:cover}.bg-center{background-position:50%}.bg-top{background-position:top}.object-cover{object-fit:cover}.p-2{padding:calc(var(--spacing) * 2)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-8{padding:calc(var(--spacing) * 8)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-24{padding-block:calc(var(--spacing) * 24)}.py-28{padding-block:calc(var(--spacing) * 28)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pb-12{padding-bottom:calc(var(--spacing) * 12)}.pl-2{padding-left:calc(var(--spacing) * 2)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-serif{font-family:var(--font-serif)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.text-8xl{font-size:var(--text-8xl);line-height:var(--tw-leading,var(--text-8xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-light{--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.text-body{color:var(--color-body)}.text-light{color:var(--color-light)}.text-muted{color:var(--color-muted)}.text-primary{color:var(--color-primary)}.text-secondary{color:var(--color-secondary)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.italic{font-style:italic}.opacity-40{opacity:.4}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media (hover:hover){.hover\:border-primary:hover{border-color:var(--color-primary)}.hover\:bg-primary:hover{background-color:var(--color-primary)}.hover\:text-primary:hover{color:var(--color-primary)}.hover\:underline:hover{text-decoration-line:underline}}@media (min-width:40rem){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:48rem){.md\:flex{display:flex}.md\:hidden{display:none}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:text-7xl{font-size:var(--text-7xl);line-height:var(--tw-leading,var(--text-7xl--line-height))}.md\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}}@media (min-width:64rem){.lg\:w-1\/2{width:50%}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:p-16{padding:calc(var(--spacing) * 16)}.lg\:text-8xl{font-size:var(--text-8xl);line-height:var(--tw-leading,var(--text-8xl--line-height))}}}[x-cloak]{display:none!important}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0} \ No newline at end of file +@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-tracking:initial;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0}}}@layer theme{:root,:host{--font-sans:"Space Grotesk", sans-serif;--font-serif:"Spectral", serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--container-5xl:64rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--text-5xl:3rem;--text-5xl--line-height:1;--text-7xl:4.5rem;--text-7xl--line-height:1;--text-8xl:6rem;--text-8xl--line-height:1;--font-weight-light:300;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wider:.05em;--tracking-widest:.1em;--leading-relaxed:1.625;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-primary:#c04545;--color-primary-text:#e57575;--color-primary-dark:#b84444;--color-secondary:#85bfbf;--color-dark:#20242b;--color-grey:#2a2f36;--color-light:#8a8e93;--color-body:#d0d2d4;--color-muted:#9a9da0;--color-border:#eceff11f;--transition-fast:.2s ease;--transition-base:.3s ease;--transition-slow:.6s ease}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}@font-face{font-family:Space Grotesk;src:url(/webfonts/google-fonts/space-grotesk/space-grotesk-latin-300-normal.woff2)format("woff2");font-weight:300;font-display:swap}@font-face{font-family:Space Grotesk;src:url(/webfonts/google-fonts/space-grotesk/space-grotesk-latin-400-normal.woff2)format("woff2");font-weight:400;font-display:swap}@font-face{font-family:Space Grotesk;src:url(/webfonts/google-fonts/space-grotesk/space-grotesk-latin-500-normal.woff2)format("woff2");font-weight:500;font-display:swap}@font-face{font-family:Spectral;src:url(/webfonts/google-fonts/spectral/spectral-latin-300-normal.woff2)format("woff2");font-weight:300;font-display:swap}html{scroll-behavior:smooth;background-color:var(--color-grey);color:var(--color-body)}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}body{font-family:var(--font-sans);-webkit-font-smoothing:antialiased;font-size:18px;line-height:1.6}@media (min-width:768px){body{font-size:20px}}h1,h2,h3,h4,h5,h6{font-family:var(--font-sans);color:var(--color-secondary);line-height:1.2}h1{font-weight:300}h2{font-weight:500}h3,h4,h5,h6{font-weight:400}p{font-family:var(--font-serif);color:var(--color-body);line-height:1.7}a{color:var(--color-secondary);transition:color var(--transition-fast);text-decoration:none}a:hover{color:var(--color-body)}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}::selection{background:var(--color-primary);color:var(--color-body)}}@layer components{.section{padding-top:6rem;padding-bottom:6rem}@media (max-width:768px){.section{padding-top:3rem;padding-bottom:3rem}}.section-title{margin-bottom:calc(var(--spacing) * 12);text-align:center}.section-title h2{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height));--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold);text-transform:capitalize;color:var(--color-body)}.section-title .accent{color:var(--color-primary-text)}.border-accent{border-top:2px solid var(--color-border);width:30%;height:1px;margin:15px auto 0;position:relative}.border-accent:before{content:"";background-color:var(--color-primary);width:50px;height:6px;margin-left:-25px;position:absolute;top:-4px;left:50%}.bg-dark{background-color:var(--color-dark)}.bg-grey{background-color:var(--color-grey)}.reveal{opacity:0;transition:opacity var(--transition-slow), transform var(--transition-slow);transform:translateY(24px)}.reveal.visible{opacity:1;transform:translateY(0)}.site-nav{top:calc(var(--spacing) * 0);z-index:50;background-color:var(--color-dark);transition:border-color var(--transition-base), box-shadow var(--transition-base);border-bottom:1px solid #0000;position:sticky}.site-nav.nav-scrolled{border-bottom-color:var(--color-border);box-shadow:0 2px 12px #0000004d}.site-nav a{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider);text-transform:uppercase;color:var(--color-body);transition:color var(--transition-fast)}.site-nav a:hover,.site-nav a.active{color:var(--color-primary)}.lang-select{cursor:pointer;border-style:var(--tw-border-style);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));appearance:none;background:var(--color-dark);color:var(--color-body);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23d0d2d4' stroke-width='2' fill='none'/%3E%3C/svg%3E");background-position:right 6px center;background-repeat:no-repeat;border-width:0;padding:4px 24px 4px 8px}.footer-social-icon{height:calc(var(--spacing) * 12);width:calc(var(--spacing) * 12);font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height));color:var(--color-light);border:1px solid var(--color-border);transition:all var(--transition-base);border-radius:3.40282e38px;justify-content:center;align-items:center;display:flex}.footer-social-icon:hover{background-color:var(--color-primary);border-color:var(--color-primary);color:#fff}.btn{padding-inline:calc(var(--spacing) * 8);padding-block:calc(var(--spacing) * 3);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider);text-transform:uppercase;transition:all var(--transition-fast);display:inline-block}.btn-primary{background-color:var(--color-primary-dark);color:#fff}.btn-primary:hover{background-color:var(--color-primary);color:#fff}.btn-outline{border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-border);color:var(--color-body)}.btn-outline:hover{border-color:var(--color-primary);color:var(--color-primary)}.btn-hero{padding-inline:calc(var(--spacing) * 14);padding-block:calc(var(--spacing) * 5);font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height));--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold);--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest);text-transform:uppercase;background-color:var(--color-primary);border:2px solid var(--color-primary);color:#fff}.btn-hero:hover{color:#fff;background-color:#0000;border-color:#fff}.about-block{background:var(--color-dark);height:100%;transition:border-color var(--transition-base);border-bottom:2px solid #0000;padding:40px 32px}.about-block:hover{border-bottom-color:var(--color-primary)}.about-block:hover .icon-box{transform:translateY(-10px)}.about-block h3{color:var(--color-secondary)}.icon-box{border-left:2px solid var(--color-secondary);border-right:2px solid var(--color-secondary);width:160px;height:92px;color:var(--color-light);transition:transform var(--transition-base);z-index:1;background-color:#0000;justify-content:center;align-items:center;margin:46px auto 60px;padding:20px 0;font-size:36px;display:flex;position:relative}.icon-box:before,.icon-box:after{content:"";z-index:-1;background-color:var(--color-dark);width:113.14px;height:113.14px;position:absolute;left:20.43px;transform:scaleY(.5774)rotate(-45deg)}.icon-box:before{border-top:2px solid var(--color-secondary);border-right:2px solid var(--color-secondary);top:-56.57px}.icon-box:after{border-bottom:2px solid var(--color-secondary);border-left:2px solid var(--color-secondary);bottom:-56.57px}.service-block{text-align:center;background-color:var(--color-dark);border-left:1px solid var(--color-border);border-top:1px solid var(--color-border);height:100%;padding:60px 32px;box-shadow:2px 2px 5px #2c2c2c4d,13px 13px #ffffff1f}.service-block i{margin-bottom:calc(var(--spacing) * 6);color:var(--color-light);font-size:50px;display:block}.service-block h3{margin-bottom:calc(var(--spacing) * 3);font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-secondary)}.progress-bar-track{background-color:var(--color-border);border-radius:3.40282e38px;width:100%;height:6px}.progress-bar-fill{background-color:var(--color-primary);border-radius:3.40282e38px;height:100%;transition:width .8s}.counter-card{background-color:var(--color-dark);flex-direction:column;justify-content:center;align-items:center;width:200px;height:200px;padding:32px 24px;display:flex}.counter-card i{margin-bottom:calc(var(--spacing) * 3);color:var(--color-light);font-size:40px;display:block}.counter-card .counter-value{color:var(--color-secondary);font-size:48px;font-weight:700}.counter-card h3{margin-top:calc(var(--spacing) * 2);color:var(--color-body);font-size:.9rem}.price-card{background-color:var(--color-dark);border:1px solid var(--color-border);height:100%;transition:border-color var(--transition-base);padding:40px 32px}.price-card h3{color:var(--color-secondary);margin-bottom:24px}.price-card table td{padding:6px 8px}.price-card:hover{border-color:var(--color-primary)}.testimonial-scroll{align-items:stretch;gap:calc(var(--spacing) * 6);scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:var(--color-light) transparent;padding-bottom:16px;display:flex;overflow-x:auto}.testimonial-scroll::-webkit-scrollbar{height:6px}.testimonial-scroll::-webkit-scrollbar-track{background:0 0}.testimonial-scroll::-webkit-scrollbar-thumb{background:var(--color-light);border-radius:3px}.testimonial-nav{z-index:10;height:calc(var(--spacing) * 10);width:calc(var(--spacing) * 10);--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y);background:var(--color-dark);border:1px solid var(--color-border);color:var(--color-body);transition:all var(--transition-fast);cursor:pointer;justify-content:center;align-items:center;display:flex;position:absolute;top:50%}.testimonial-nav:hover{border-color:var(--color-primary);color:var(--color-primary)}.testimonial-nav-left{left:-20px}.testimonial-nav-right{right:-20px}@media (max-width:768px){.testimonial-nav{display:none}}.testimonial-modern{background-color:var(--color-grey);border:1px solid var(--color-border);scroll-snap-align:start;width:360px;transition:border-color var(--transition-base);flex-direction:column;flex-shrink:0;padding:32px;display:flex}.testimonial-modern:hover{border-color:var(--color-primary)}.testimonial-modern blockquote{font-size:1rem;line-height:1.7}.testimonial-modern blockquote p{margin:0}.contact-icon{margin-top:calc(var(--spacing) * 1);margin-right:calc(var(--spacing) * 4);color:var(--color-primary);font-size:20px}.portfolio-card{border:1px solid var(--color-border);background-color:var(--color-dark);transition:border-color var(--transition-base)}.portfolio-card:hover{border-color:var(--color-primary)}.portfolio-card .portfolio-img{background:#fff;justify-content:center;align-items:center;height:16rem;padding:40px;display:flex;position:relative;overflow:hidden}.portfolio-card .portfolio-img img{object-fit:contain;width:auto;max-height:100%}.portfolio-card .portfolio-overlay{inset:calc(var(--spacing) * 0);opacity:0;transition:opacity var(--transition-base);background:#ffffffeb;justify-content:center;align-items:center;display:flex;position:absolute}.portfolio-card:hover .portfolio-overlay{opacity:1}.portfolio-card .portfolio-overlay .search-circle{background-color:var(--color-primary);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:50px;height:50px;font-size:20px;display:flex}.portfolio-card .portfolio-meta{padding:20px}.portfolio-card .portfolio-meta h3{color:var(--color-secondary);font-size:1rem}.portfolio-card .portfolio-meta p{color:var(--color-light);margin-top:8px;font-size:.85rem}.team-card{border:1px solid var(--color-border);height:100%;transition:border-color var(--transition-base);background-color:#0000;flex-direction:column;display:flex;overflow:hidden}.team-card:hover{border-color:var(--color-primary)}.team-photo{position:relative;overflow:hidden}.team-photo img{width:100%;transition:transform var(--transition-base), filter var(--transition-base)}.team-photo:hover img{filter:brightness(1.15);transform:scale(1.05)}@media (prefers-contrast:more){.team-photo:hover img{filter:none}}.team-photo .social-overlay{inset:calc(var(--spacing) * 0);padding-bottom:calc(var(--spacing) * 5);opacity:0;background:linear-gradient(to top, var(--color-dark) 0%, transparent 60%);transition:opacity var(--transition-base);justify-content:center;align-items:flex-end;display:flex;position:absolute}.team-card:hover .social-overlay{opacity:1}.social-overlay a{margin-inline:calc(var(--spacing) * 1);height:calc(var(--spacing) * 9);width:calc(var(--spacing) * 9);text-align:center;font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height));--tw-leading:calc(var(--spacing) * 9);line-height:calc(var(--spacing) * 9);color:var(--color-body);transition:color var(--transition-fast);display:inline-block}.social-overlay a:hover{color:var(--color-primary)}.team-meta{background-color:var(--color-dark);flex:1;padding:16px}.team-meta h3{margin-bottom:calc(var(--spacing) * 1);font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.team-meta span{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:var(--color-light)}.pubs-table{width:100%;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-body)}.pubs-table th{padding-bottom:calc(var(--spacing) * 3);text-align:left;font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider);text-transform:uppercase;color:var(--color-body);border-bottom:1px solid var(--color-border)}.pubs-table td{padding-block:calc(var(--spacing) * 3);vertical-align:top;border-bottom:1px solid var(--color-border)}.pubs-table .pub-year{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);font-family:var(--font-sans);color:var(--color-secondary)}.pubs-table .pub-authors{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed);color:var(--color-muted)}.pubs-table .pub-title a{color:var(--color-secondary);transition:color var(--transition-fast)}.pubs-table .pub-title a:hover{color:var(--color-primary)}.pubs-table .pub-journal{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:var(--color-muted);font-style:italic}.pubs-table tbody tr:hover td{color:var(--color-body)}.year-select{cursor:pointer;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);appearance:none;background:var(--color-dark);color:var(--color-body);border:1px solid var(--color-border);transition:border-color var(--transition-fast);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23d0d2d4' stroke-width='2' fill='none'/%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;border-radius:4px;padding:8px 36px 8px 14px}.year-select:hover,.year-select:focus{border-color:var(--color-primary)}.year-select option{background:var(--color-dark);color:var(--color-body)}.footer-waves{background-color:var(--color-dark);height:60px;position:relative;overflow:hidden}.footer-waves svg{width:100%;height:100%;position:absolute;bottom:0;left:0}.option-bar{align-items:center;column-gap:calc(var(--spacing) * 5);row-gap:calc(var(--spacing) * 2);padding-inline:calc(var(--spacing) * 4);padding-block:calc(var(--spacing) * 3);background-color:var(--color-dark);border-bottom:1px solid var(--color-border);flex-wrap:wrap;font-size:.8rem;display:flex}.option-bar__tag{padding-inline:calc(var(--spacing) * 2);padding-block:calc(var(--spacing) * 1);--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:.09em;background-color:var(--color-primary);color:#fff;font-size:.65rem}.option-bar__links{column-gap:calc(var(--spacing) * 4);row-gap:calc(var(--spacing) * 1);flex-wrap:wrap;display:flex}.option-bar__links a{color:var(--color-muted);text-underline-offset:3px;-webkit-text-decoration:underline oklch(69.4471% .00558561 247.905/.4);text-decoration:underline oklch(69.4471% .00558561 247.905/.4)}@supports (color:color-mix(in lab, red, red)){.option-bar__links a{-webkit-text-decoration-color:color-mix(in oklch, var(--color-muted) 40%, transparent);-webkit-text-decoration-color:color-mix(in oklch, var(--color-muted) 40%, transparent);text-decoration-color:color-mix(in oklch, var(--color-muted) 40%, transparent)}}.option-bar__links a:hover{color:var(--color-body)}.option-bar__links a[aria-current=page]{color:var(--color-primary-text);font-weight:500;text-decoration:none}.option-bar__why summary{color:var(--color-muted);cursor:pointer}.option-bar__why p{margin-top:calc(var(--spacing) * 2);max-width:62ch;color:var(--color-body);font-size:.85rem}.stuck{padding-block:clamp(3.5rem,9vw,8rem)}.stuck__inner{padding-inline:calc(var(--spacing) * 6);max-width:68rem;margin-inline:auto}.stuck__head{margin-bottom:clamp(2.5rem,6vw,5rem)}.stuck h1{letter-spacing:-.03em;color:var(--color-body);text-wrap:balance;max-width:16ch;font-size:clamp(2.4rem,7vw,5rem);font-weight:300;line-height:1.02}.stuck__standfirst{margin-top:calc(var(--spacing) * 6);max-width:46ch;color:var(--color-muted);text-wrap:pretty;font-size:1.02rem}.stuck__list{border-top:1px solid var(--color-border);margin:0;padding:0;list-style:none}.stuck__row{border-bottom:1px solid var(--color-border)}.stuck__row>a{justify-content:space-between;align-items:baseline;column-gap:calc(var(--spacing) * 8);row-gap:calc(var(--spacing) * 2);color:var(--color-body);flex-wrap:wrap;padding-block:clamp(1.1rem,2.6vw,1.9rem);transition:color .22s cubic-bezier(.16,1,.3,1),padding-inline .32s cubic-bezier(.16,1,.3,1);display:flex}.stuck__say{font-family:var(--font-serif);text-wrap:pretty;flex:22ch;font-size:clamp(1.15rem,2.5vw,1.8rem);line-height:1.35}.stuck__answer{align-items:center;gap:calc(var(--spacing) * 3);color:var(--color-muted);text-transform:uppercase;letter-spacing:.1em;flex-shrink:0;font-size:.78rem;font-weight:500;display:inline-flex}.stuck__arrow{transition:transform .32s cubic-bezier(.16,1,.3,1)}.stuck__row>a:hover,.stuck__row>a:focus-visible{color:var(--color-primary-text);padding-inline:1rem}.stuck__row>a:hover .stuck__answer,.stuck__row>a:focus-visible .stuck__answer{color:var(--color-primary-text)}.stuck__row>a:hover .stuck__arrow,.stuck__row>a:focus-visible .stuck__arrow{transform:translate(6px)}.stuck__closer{justify-content:space-between;align-items:center;gap:calc(var(--spacing) * 6);flex-wrap:wrap;margin-top:clamp(2.5rem,6vw,4.5rem);display:flex}.stuck__closer p{max-width:34ch;color:var(--color-muted);margin:0;font-size:.98rem}.stuck__cta,.receipts__cta,.sentence__cta{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);background-color:var(--color-primary);color:#fff;text-transform:uppercase;letter-spacing:.09em;padding:1rem 2rem;font-size:.85rem;transition:background-color .2s,transform .2s cubic-bezier(.16,1,.3,1);display:inline-block}.stuck__cta:hover,.receipts__cta:hover,.sentence__cta:hover{background-color:var(--color-primary-dark);color:#fff;transform:translateY(-2px)}.receipts{padding-block:clamp(3.5rem,8vw,7rem) 0}.receipts__head{padding-inline:calc(var(--spacing) * 6);margin-inline:auto;max-width:68rem;margin-bottom:clamp(3rem,8vw,6rem)}.receipts h1{letter-spacing:-.03em;color:var(--color-body);text-wrap:balance;max-width:20ch;font-size:clamp(2.2rem,6vw,4.2rem);font-weight:300;line-height:1.05}.receipts__standfirst{margin-top:calc(var(--spacing) * 6);max-width:48ch;color:var(--color-muted);text-wrap:pretty}.receipt{align-items:center;column-gap:calc(var(--spacing) * 12);row-gap:calc(var(--spacing) * 8);padding-inline:calc(var(--spacing) * 6);border-top:1px solid var(--color-border);grid-template-columns:1fr;max-width:76rem;margin-inline:auto;padding-block:clamp(2.5rem,6vw,4.5rem);display:grid}@media (min-width:900px){.receipt{grid-template-columns:5fr 7fr}.receipt--flip .receipt__media{order:2}}.receipt__media{background-color:var(--color-dark);border:1px solid var(--color-border);aspect-ratio:3/2;justify-content:center;align-items:center;padding:clamp(1rem,3vw,2.25rem);display:flex;overflow:hidden}.receipt__media--photo{padding:0}.receipt__media--photo img{object-fit:cover;width:100%;height:100%}.receipt__media--mark img{object-fit:contain;width:auto;max-width:min(100%,15rem);height:auto;max-height:100%}.receipt__project{text-transform:uppercase;letter-spacing:.11em;color:var(--color-secondary);font-size:.78rem;font-weight:600}.receipt__did{margin-top:calc(var(--spacing) * 3);font-family:var(--font-sans);color:var(--color-body);max-width:44ch;font-size:1.05rem}.receipt__quote{margin-top:calc(var(--spacing) * 7);padding-left:calc(var(--spacing) * 6);border-left:1px solid var(--color-primary);max-width:50ch}.receipt__quote p{font-family:var(--font-serif);color:var(--color-body);text-wrap:pretty;margin:0;font-size:clamp(1.15rem,2.2vw,1.55rem);line-height:1.55}.receipt__who{margin-top:calc(var(--spacing) * 5);align-items:baseline;column-gap:calc(var(--spacing) * 3);font-family:var(--font-sans);color:var(--color-muted);flex-wrap:wrap;font-size:.85rem;display:flex}.receipt__who strong{color:var(--color-body);font-weight:500}.also{padding-inline:calc(var(--spacing) * 6);border-top:1px solid var(--color-border);max-width:76rem;margin-inline:auto;padding-block:clamp(2.5rem,6vw,4.5rem)}.also__title{text-transform:uppercase;letter-spacing:.11em;color:var(--color-secondary);font-size:.78rem;font-weight:600}.also__grid{margin-top:calc(var(--spacing) * 8);column-gap:calc(var(--spacing) * 10);row-gap:calc(var(--spacing) * 9);grid-template-columns:repeat(auto-fit,minmax(17rem,1fr));display:grid}.also__item,.also__item blockquote{margin:0}.also__item blockquote p{font-family:var(--font-serif);color:var(--color-body);text-wrap:pretty;margin:0;font-size:1.02rem;line-height:1.6}.also__item figcaption{margin-top:calc(var(--spacing) * 4);color:var(--color-muted);flex-direction:column;font-size:.82rem;display:flex}.also__item figcaption strong{color:var(--color-body);font-weight:500}.receipts__closer{justify-content:space-between;align-items:center;gap:calc(var(--spacing) * 6);padding-inline:calc(var(--spacing) * 6);border-top:1px solid var(--color-border);flex-wrap:wrap;max-width:76rem;margin-inline:auto;padding-block:clamp(3rem,7vw,5.5rem);display:flex}.receipts__closer p{max-width:30ch;font-family:var(--font-serif);color:var(--color-body);margin:0;font-size:clamp(1.1rem,2.2vw,1.5rem)}.sentence{flex-direction:column;min-height:calc(100svh - 7.25rem);padding:clamp(3rem,9vh,7rem) 1.5rem clamp(2rem,5vh,3rem);display:flex}.sentence__inner{flex-direction:column;flex:1;justify-content:center;width:100%;max-width:54rem;margin-inline:auto;display:flex}.sentence__lead{letter-spacing:-.035em;color:var(--color-body);text-wrap:balance;font-size:clamp(2.5rem,7.2vw,5.5rem);font-weight:300;line-height:1.03}.sentence__body{margin-top:calc(var(--spacing) * 8);max-width:50ch;color:var(--color-muted);text-wrap:pretty;font-size:clamp(1.05rem,2.1vw,1.3rem);line-height:1.65}.sentence__verbs{margin-top:calc(var(--spacing) * 10);column-gap:calc(var(--spacing) * 8);row-gap:calc(var(--spacing) * 3);padding:calc(var(--spacing) * 0);flex-wrap:wrap;list-style:none;display:flex}.sentence__verbs a{text-transform:uppercase;letter-spacing:.12em;color:var(--color-secondary);border-bottom:1px solid #85bfbf59;padding-bottom:3px;font-size:.82rem;font-weight:500}@supports (color:color-mix(in lab, red, red)){.sentence__verbs a{border-bottom:1px solid color-mix(in oklch, var(--color-secondary) 35%, transparent)}}.sentence__verbs a{transition:color .2s,border-color .2s}.sentence__verbs a:hover{color:var(--color-primary-text);border-bottom-color:var(--color-primary)}.sentence__act{align-items:center;column-gap:calc(var(--spacing) * 8);row-gap:calc(var(--spacing) * 4);flex-wrap:wrap;margin-top:clamp(3rem,7vh,5rem);display:flex}.sentence__fineprint{max-width:34ch;color:var(--color-muted);margin:0;font-size:.9rem}.sentence__whois{margin-inline:auto;margin-top:calc(var(--spacing) * 16);width:100%;max-width:54rem;font-family:var(--font-sans);color:var(--color-muted);font-size:.8rem;line-height:1.7}.optindex{padding-inline:calc(var(--spacing) * 6);max-width:60rem;margin-inline:auto;padding-block:clamp(3rem,8vw,6rem)}.optindex h1{letter-spacing:-.025em;color:var(--color-body);font-size:clamp(2rem,5vw,3.2rem);font-weight:300}.optindex__intro{margin-top:calc(var(--spacing) * 5);max-width:58ch;color:var(--color-muted)}.optindex__list{margin-top:calc(var(--spacing) * 12);padding:calc(var(--spacing) * 0);border-top:1px solid var(--color-border);list-style:none}.optindex__list li{border-bottom:1px solid var(--color-border)}.optindex__list a{padding-block:1.75rem;display:block}.optindex__list h2{color:var(--color-body);font-size:clamp(1.2rem,2.6vw,1.7rem);font-weight:400;transition:color .2s}.optindex__list a:hover h2{color:var(--color-primary-text)}.optindex__list p{margin-top:calc(var(--spacing) * 2);max-width:62ch;color:var(--color-muted);font-size:.95rem}}@layer utilities{.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.top-0{top:calc(var(--spacing) * 0)}.top-16{top:calc(var(--spacing) * 16)}.right-0{right:calc(var(--spacing) * 0)}.right-5{right:calc(var(--spacing) * 5)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-5{bottom:calc(var(--spacing) * 5)}.left-0{left:calc(var(--spacing) * 0)}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.my-6{margin-block:calc(var(--spacing) * 6)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mt-auto{margin-top:auto}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.mb-10{margin-bottom:calc(var(--spacing) * 10)}.mb-12{margin-bottom:calc(var(--spacing) * 12)}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-16{height:calc(var(--spacing) * 16)}.h-20{height:calc(var(--spacing) * 20)}.h-24{height:calc(var(--spacing) * 24)}.h-48{height:calc(var(--spacing) * 48)}.h-full{height:100%}.min-h-\[400px\]{min-height:400px}.min-h-screen{min-height:100vh}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-48{width:calc(var(--spacing) * 48)}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-none{max-width:none}.flex-shrink-0{flex-shrink:0}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.resize{resize:both}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-12{gap:calc(var(--spacing) * 12)}.gap-16{gap:calc(var(--spacing) * 16)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-border{border-color:var(--color-border)}.border-primary{border-color:var(--color-primary)}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.bg-black\/50{background-color:color-mix(in oklab, var(--color-black) 50%, transparent)}}.bg-black\/60{background-color:#0009}@supports (color:color-mix(in lab, red, red)){.bg-black\/60{background-color:color-mix(in oklab, var(--color-black) 60%, transparent)}}.bg-dark{background-color:var(--color-dark)}.bg-grey{background-color:var(--color-grey)}.bg-primary{background-color:var(--color-primary)}.bg-cover{background-size:cover}.bg-center{background-position:50%}.bg-top{background-position:top}.object-cover{object-fit:cover}.p-2{padding:calc(var(--spacing) * 2)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-8{padding:calc(var(--spacing) * 8)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-24{padding-block:calc(var(--spacing) * 24)}.py-28{padding-block:calc(var(--spacing) * 28)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pb-12{padding-bottom:calc(var(--spacing) * 12)}.pl-2{padding-left:calc(var(--spacing) * 2)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-serif{font-family:var(--font-serif)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.text-8xl{font-size:var(--text-8xl);line-height:var(--tw-leading,var(--text-8xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-light{--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.text-body{color:var(--color-body)}.text-light{color:var(--color-light)}.text-muted{color:var(--color-muted)}.text-primary{color:var(--color-primary)}.text-secondary{color:var(--color-secondary)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.italic{font-style:italic}.opacity-40{opacity:.4}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media (hover:hover){.hover\:border-primary:hover{border-color:var(--color-primary)}.hover\:bg-primary:hover{background-color:var(--color-primary)}.hover\:text-primary:hover{color:var(--color-primary)}.hover\:underline:hover{text-decoration-line:underline}}@media (min-width:40rem){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:48rem){.md\:flex{display:flex}.md\:hidden{display:none}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:text-7xl{font-size:var(--text-7xl);line-height:var(--tw-leading,var(--text-7xl--line-height))}.md\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}}@media (min-width:64rem){.lg\:w-1\/2{width:50%}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:p-16{padding:calc(var(--spacing) * 16)}.lg\:text-8xl{font-size:var(--text-8xl);line-height:var(--tw-leading,var(--text-8xl--line-height))}}}[x-cloak]{display:none!important}@media (prefers-reduced-motion:no-preference){.stuck__row,.receipt,.sentence__inner>*{animation:.64s cubic-bezier(.16,1,.3,1) backwards option-rise}.stuck__row{animation-delay:calc(90ms + var(--row) * 55ms)}.receipt{animation-delay:.12s}.sentence__inner>:first-child{animation-delay:60ms}.sentence__inner>:nth-child(2){animation-delay:.15s}.sentence__inner>:nth-child(3){animation-delay:.24s}.sentence__inner>:nth-child(4){animation-delay:.33s}@keyframes option-rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}}@media print,(forced-colors:active){.stuck__row,.receipt,.sentence__inner>*{opacity:1!important;animation:none!important;transform:none!important}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0} \ No newline at end of file diff --git a/themes/capro-tw/layouts/options/list.html b/themes/capro-tw/layouts/options/list.html new file mode 100644 index 00000000..64409f30 --- /dev/null +++ b/themes/capro-tw/layouts/options/list.html @@ -0,0 +1,19 @@ +{{ define "head" }}{{ end }} + +{{ define "main" }} +
+

{{ .Title }}

+
{{ .Content }}
+ + +
+{{ end }} diff --git a/themes/capro-tw/layouts/options/single.html b/themes/capro-tw/layouts/options/single.html new file mode 100644 index 00000000..fab55480 --- /dev/null +++ b/themes/capro-tw/layouts/options/single.html @@ -0,0 +1,6 @@ +{{ define "head" }}{{ end }} + +{{ define "main" }} + {{ partial "options/bar.html" . }} + {{ partial (printf "options/%s.html" .Params.variant) . }} +{{ end }} diff --git a/themes/capro-tw/layouts/partials/options/bar.html b/themes/capro-tw/layouts/partials/options/bar.html new file mode 100644 index 00000000..3766994c --- /dev/null +++ b/themes/capro-tw/layouts/partials/options/bar.html @@ -0,0 +1,14 @@ +{{ $cur := . }} + diff --git a/themes/capro-tw/layouts/partials/options/receipts.html b/themes/capro-tw/layouts/partials/options/receipts.html new file mode 100644 index 00000000..51567554 --- /dev/null +++ b/themes/capro-tw/layouts/partials/options/receipts.html @@ -0,0 +1,47 @@ +
+
+

{{ .Params.lead }}

+

{{ .Params.standfirst | markdownify }}

+
+ + {{ range $i, $case := .Params.cases }} +
+
+ {{ with site.GetPage $case.portfolio }} + {{ with (.Resources.ByType "image") }} + {{ $img := cond (eq $case.kind "photo") ((index . 0).Fill "1200x800 webp q82") ((index . 0).Fit "600x600 webp q90") }} + {{ $case.alt }} + {{ end }} + {{ end }} +
+
+

{{ $case.project }}

+

{{ $case.did }}

+
{{ $case.quote | markdownify }}
+

{{ $case.who }}{{ $case.role }}

+
+
+ {{ end }} + + {{ with .Params.also }} +
+

{{ $.Params.alsoTitle }}

+
+ {{ range . }} +
+
{{ .quote | markdownify }}
+
{{ .who }}{{ .role }}
+
+ {{ end }} +
+
+ {{ end }} + + {{ with .Params.closer }} + + {{ end }} +
diff --git a/themes/capro-tw/layouts/partials/options/sentence.html b/themes/capro-tw/layouts/partials/options/sentence.html new file mode 100644 index 00000000..8c865c39 --- /dev/null +++ b/themes/capro-tw/layouts/partials/options/sentence.html @@ -0,0 +1,21 @@ +
+
+

{{ .Params.lead | markdownify }}

+

{{ .Params.body | markdownify }}

+ +
    + {{ range .Params.verbs }} +
  • {{ .word }}
  • + {{ end }} +
+ + {{ with .Params.closer }} +
+ {{ .label }} +

{{ .text | markdownify }}

+
+ {{ end }} +
+ +

{{ .Params.whois | markdownify }}

+
diff --git a/themes/capro-tw/layouts/partials/options/stuck.html b/themes/capro-tw/layouts/partials/options/stuck.html new file mode 100644 index 00000000..062ec532 --- /dev/null +++ b/themes/capro-tw/layouts/partials/options/stuck.html @@ -0,0 +1,31 @@ +
+
+
+

{{ .Params.lead }}

+

{{ .Params.standfirst | markdownify }}

+
+ +
    + {{ range $i, $item := .Params.items }} +
  1. + + {{ $item.say }} + + {{ $item.answer | safeHTML }} + + + +
  2. + {{ end }} +
+ + {{ with .Params.closer }} + + {{ end }} +
+