:root{--paper:#f8fafc;--ink:#242d38;--muted:#606c79;--line:#d6e0ea;--accent:#3e607f;--serif:Georgia,'Times New Roman',serif;--sans:Arial,Helvetica,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:30px}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.6 var(--sans);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button{font:inherit}a,button{touch-action:manipulation}a:focus-visible,button:focus-visible{outline:3px solid var(--accent);outline-offset:6px}img{display:block;max-width:100%;height:auto}h1,h2,h3,p,figure{margin:0}h1,h2,h3{line-height:1.1;font-weight:400}em{font-family:var(--serif);font-weight:400;color:var(--accent)}.wrap{width:min(1320px,calc(100% - 96px));margin-inline:auto}.header{min-height:112px;display:flex;align-items:center;gap:40px;border-bottom:1px solid var(--line)}.wordmark{font-size:27px;line-height:1.2;letter-spacing:-1.1px;font-weight:600}.wordmark span{display:block;font-size:11px;font-weight:400;letter-spacing:1.5px;text-transform:uppercase;margin-top:8px}.header nav{display:flex;gap:30px;margin-left:auto;font-size:14px}.header nav a{border-bottom:1px solid transparent;padding:10px 0}.header nav a:hover{border-color:var(--accent)}.talk{display:flex;align-items:center;gap:25px;border-bottom:1px solid var(--ink);padding:10px 0;font-size:14px}.talk span{font-size:23px}.hero{padding-top:42px;padding-bottom:45px}.eyebrow{font-size:11px;letter-spacing:1.7px;text-transform:uppercase;color:var(--muted);margin-bottom:25px}.hero-layout{display:grid;grid-template-columns:1.35fr 1fr;gap:70px;align-items:end}.hero h1{font-size:clamp(43px,4.5vw,69px);letter-spacing:-2.9px;line-height:1.06}.hero-copy{max-width:430px;padding-bottom:4px}.hero-copy>p{font-size:16px;color:var(--muted);line-height:1.7}.hero-actions{display:flex;flex-wrap:wrap;align-items:center;gap:28px;margin-top:25px}.button{background:var(--ink);color:var(--paper);padding:13px 20px;display:inline-flex;justify-content:center;gap:25px;font-size:13px;border:1px solid var(--ink);transition:background .18s}.button:hover{background:var(--accent)}.text-link{font-size:13px;border-bottom:1px solid var(--line);padding-bottom:3px}.section-heading{display:flex;justify-content:space-between;gap:24px;align-items:baseline;border-top:1px solid var(--line);padding-top:25px;margin-bottom:28px}.section-heading h2{font-size:29px;letter-spacing:-.8px}.section-heading>p{font-size:13px;color:var(--muted)}.small-number{font:12px var(--sans);letter-spacing:0;color:var(--muted);vertical-align:middle}.filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:26px}.filters[hidden]{display:none}.filters button{border:1px solid transparent;background:transparent;color:var(--muted);padding:6px 13px;cursor:pointer;font-size:12px}.filters button[aria-pressed=true]{border-color:var(--ink);color:var(--ink)}.filters button:hover{background:#eaf1f8}.project-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:38px 28px;align-items:start}.project-card[hidden]{display:none}.card-image{display:block;aspect-ratio:3/2;overflow:hidden;background:transparent}.card-image img{display:block;width:100%;height:100%;object-fit:cover;object-position:center;transition:opacity .2s}.project-card a:hover .card-image img{opacity:.9}.card-caption{display:flex;justify-content:space-between;gap:20px;padding:16px 0 0}.card-caption h3{font-size:20px;letter-spacing:-.4px}.card-caption p{font-size:11px;color:var(--muted);margin-top:6px;text-transform:uppercase;letter-spacing:1.3px}.project-arrow{font-size:25px;line-height:1}.work{padding-bottom:100px}.about{border-top:1px solid var(--line);padding:72px 0 90px;display:grid;grid-template-columns:1fr 1fr;gap:90px}.about h2{font-size:clamp(32px,3.3vw,49px);letter-spacing:-1.7px;line-height:1.14}.badge{display:inline-block;font-size:12px;border-bottom:1px solid var(--line);padding:5px 0;margin-top:35px}.about-copy p{color:var(--muted);margin-bottom:20px;max-width:560px}.about-copy p:first-child{color:var(--ink);font-size:19px;line-height:1.7}.facts{margin-top:32px;display:flex;flex-wrap:wrap;gap:25px;border-top:1px solid var(--line);padding-top:20px}.facts dt,.project-details dt{font-size:10px;text-transform:uppercase;letter-spacing:1.2px;color:var(--muted);margin-bottom:7px}.facts dd{font-size:13px;margin:0}.services{padding-bottom:90px}.services-grid{display:grid;grid-template-columns:1fr 1fr;column-gap:60px}.service{display:grid;grid-template-columns:30px 1fr;gap:12px 15px;border-bottom:1px solid var(--line);padding:28px 0}.service-no{font-size:11px;color:var(--muted);padding-top:2px}.service h3{font-size:22px;letter-spacing:-.4px}.service p{grid-column:2;color:var(--muted);font-size:14px;max-width:460px}.contact{background:#e5eef7;padding:70px 0 76px}.contact h2{font-size:clamp(42px,5.6vw,80px);line-height:1.04;letter-spacing:-2.5px}.contact .eyebrow{margin-bottom:20px}.contact h2+p{margin-top:25px;color:var(--muted);max-width:490px}.email{display:block;width:fit-content;font-size:clamp(16px,2.5vw,29px);margin-top:29px;border-bottom:1px solid var(--ink);padding-bottom:7px;overflow-wrap:anywhere}.email span{margin-left:15px}.contact-upwork{display:block;width:fit-content;font-size:12px;margin-top:22px;border-bottom:1px solid var(--line)}.footer{display:flex;gap:30px;align-items:center;justify-content:space-between;padding-block:28px;font-size:11px;color:var(--muted)}.footer a:hover{text-decoration:underline}.skip{position:fixed;top:10px;left:10px;transform:translateY(-200%);z-index:10;background:var(--ink);color:white;padding:10px}.skip:focus{transform:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.project-page{padding-top:30px}.back{font-size:12px;color:var(--muted);display:inline-block}.project-intro{padding:42px 0}.project-intro h1{font-size:clamp(40px,6vw,85px);letter-spacing:-2px}.project-intro .eyebrow span{margin-left:20px}.project-details{display:grid;grid-template-columns:1fr 1fr;gap:80px;margin-top:28px}.project-details>p{font-size:19px;color:var(--muted);max-width:590px}.project-details dl{margin:0;display:grid;grid-template-columns:1fr 1fr;gap:25px}.project-details dd{margin:0;font-size:14px}.gallery figure{margin-bottom:42px}.gallery img{width:100%;height:auto}.gallery-zoom{display:block;cursor:zoom-in;background:transparent}.gallery figcaption{font-size:11px;color:var(--muted);margin-top:10px}.project-navigation{border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:30px;padding-block:30px}.project-navigation a{font-size:23px}.project-navigation a:last-child{text-align:right}.project-navigation span{display:block;font-size:10px;text-transform:uppercase;letter-spacing:1px;margin-bottom:10px;color:var(--muted)}.project-cta{border-top:1px solid var(--line);display:flex;gap:30px;align-items:center;justify-content:space-between;padding:45px 0;font-size:23px}dialog{border:0;background:var(--paper);padding:50px 20px 20px;width:min(96vw,1600px);max-height:94vh}dialog::backdrop{background:rgba(21,32,45,.88)}dialog img{max-height:80vh;max-width:100%;width:auto;margin:auto;object-fit:contain}.close-dialog{position:absolute;right:20px;top:10px;background:transparent;border:0;padding:7px;cursor:pointer}body:has(dialog[open]){overflow:hidden}@media(min-width:1500px){.hero{padding-top:50px}.hero h1{font-size:69px}}@media(max-width:1000px){.wrap{width:calc(100% - 48px)}.header{gap:25px;min-height:100px}.header nav{gap:18px}.hero-layout{gap:35px}.hero h1{font-size:48px}.about{gap:45px}.section-heading>p{max-width:230px}.services-grid{column-gap:35px}.project-details{gap:40px}}@media(max-width:700px){.wrap{width:calc(100% - 36px)}.header{flex-wrap:wrap;gap:14px;justify-content:space-between;padding:22px 0 15px;min-height:0}.wordmark{font-size:23px}.wordmark span{font-size:9px;letter-spacing:1px}.header nav{order:3;width:100%;margin:0;justify-content:space-between;gap:15px;font-size:12px}.talk{font-size:12px;gap:13px}.hero{padding-top:29px;padding-bottom:32px}.hero .eyebrow{font-size:9px;letter-spacing:1.2px;margin-bottom:18px}.hero-layout{display:block}.hero h1{font-size:clamp(39px,8.2vw,56px);letter-spacing:-1.8px}.hero-copy{margin-top:20px;max-width:none}.hero-copy>p{font-size:14px;line-height:1.65}.hero-actions{gap:23px;margin-top:20px}.section-heading{display:block;padding-top:20px;margin-bottom:20px}.section-heading h2{font-size:26px}.section-heading>p{max-width:none;margin-top:8px;font-size:12px}.filters{gap:0;margin-bottom:18px}.filters button{padding:6px 10px;font-size:11px}.project-grid{grid-template-columns:1fr;gap:30px}.card-caption h3{font-size:19px}.work{padding-bottom:58px}.about{grid-template-columns:1fr;padding:42px 0 55px;gap:28px}.about h2{font-size:35px}.badge{margin-top:22px}.about-copy p:first-child{font-size:17px}.about-copy p{font-size:14px}.facts{gap:22px}.services{padding-bottom:55px}.services-grid{grid-template-columns:1fr}.service{padding:22px 0}.service h3{font-size:20px}.contact{padding:43px 0 48px}.contact h2{font-size:47px;letter-spacing:-1.8px}.contact h2+p{font-size:14px}.footer{flex-wrap:wrap;gap:13px 20px;justify-content:flex-start;padding-block:24px}.footer p:nth-child(2){width:100%;order:4}.project-intro{padding:28px 0}.project-intro h1{font-size:43px}.project-details{grid-template-columns:1fr;gap:25px}.project-details>p{font-size:17px}.project-details dl{gap:20px}.gallery figure{margin-bottom:25px}.project-navigation a{font-size:18px;max-width:48%}.project-navigation span{font-size:9px}.project-cta{font-size:20px;flex-wrap:wrap;padding:28px 0}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important;animation:none!important}}



.email-tools{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-top:16px}.copy-email{font:inherit;font-size:12px;color:var(--ink);border:1px solid var(--line);background:transparent;padding:8px 12px;cursor:pointer}.copy-email:hover{background:#d6e5f3}.copy-status{font-size:12px;color:var(--muted)}

.testimonials{padding-bottom:90px}.review-editorial{display:grid;grid-template-columns:1fr 2fr;gap:70px;padding:54px 0 45px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.review-intro .eyebrow{font-size:10px;margin-bottom:23px}.review-intro h2{font-size:clamp(31px,3.1vw,45px);letter-spacing:-1.4px;line-height:1.13}.review-source{display:inline-block;margin-top:32px;padding-bottom:4px;border-bottom:1px solid var(--line);font-size:11px;color:var(--muted)}.review-source:hover{color:var(--accent)}.review-stage{min-width:0;display:flex;flex-direction:column;justify-content:space-between}.review-quotes{min-height:270px}.review-slide{margin:0}.review-slide[hidden]{display:none}.review-slide blockquote{margin:0 0 30px;font:clamp(25px,2.6vw,37px)/1.38 var(--serif);letter-spacing:-.55px;color:var(--ink);max-width:34ch;text-wrap:pretty}.review-slide figcaption{border-left:2px solid var(--accent);padding-left:16px}.review-author{display:block;font-size:13px;font-weight:600;line-height:1.5}.review-project{display:block;font-size:11px;line-height:1.6;color:var(--muted);margin-top:3px;max-width:48ch}.review-controls{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-top:35px}.review-controls[hidden]{display:none}.review-counter{font-size:12px;font-variant-numeric:tabular-nums;letter-spacing:1px}.review-counter span{color:var(--muted);margin-left:6px}.review-arrows{display:flex;gap:9px}.review-arrows button{width:44px;height:44px;padding:0;display:grid;place-items:center;border:1px solid var(--line);background:transparent;color:var(--ink);font-size:23px;cursor:pointer;transition:background .15s,color .15s}.review-arrows button:hover{background:var(--ink);color:var(--paper)}.review-stage:not([data-enhanced]) .review-slide+.review-slide{margin-top:36px;padding-top:30px;border-top:1px solid var(--line)}@media(max-width:1000px){.review-editorial{gap:40px;grid-template-columns:1fr 1.8fr}.review-quotes{min-height:300px}}@media(max-width:700px){.testimonials{padding-bottom:55px}.review-editorial{grid-template-columns:1fr;gap:32px;padding:34px 0}.review-intro{position:relative}.review-intro .eyebrow{font-size:9px;margin-bottom:13px}.review-intro h2{font-size:34px}.review-source{margin-top:17px}.review-slide blockquote{font-size:27px;line-height:1.4;letter-spacing:-.3px;margin-bottom:26px;max-width:100%}.review-quotes{min-height:340px}.review-controls{margin-top:24px}}@media(prefers-reduced-motion:reduce){.review-arrows button{transition:none}}

/* Motion is optional; no content depends on an animation completing. */
@media (prefers-reduced-motion: no-preference) {
  .button,.copy-email,.filters button,.header nav a,.talk,.text-link,.review-source,.contact-upwork{transition:background-color .22s ease,color .22s ease,border-color .22s ease,transform .22s ease}
  .card-image img{transition:transform .6s cubic-bezier(.22,1,.36,1),opacity .25s ease}
  .project-arrow{display:inline-block;transition:transform .3s cubic-bezier(.22,1,.36,1)}
  .project-card a:focus-visible .card-image img{transform:scale(1.08)}
  .project-card a:focus-visible .project-arrow{transform:translate(2px,-2px)}
}
@media (hover:hover) and (prefers-reduced-motion:no-preference) {
  .project-card a:hover .card-image img{transform:scale(1.08);opacity:1}
  .project-card a:hover .project-arrow{transform:translate(3px,-3px)}
  .button:hover,.copy-email:hover{transform:translateY(-2px)}
  .button:active,.copy-email:active{transform:translateY(0)}
  .talk:hover,.text-link:hover,.review-source:hover,.contact-upwork:hover{color:var(--accent);border-color:var(--accent)}
  .review-arrows button:hover{transform:translateY(-1px)}
}
@media (prefers-reduced-motion:reduce) {
  html{scroll-behavior:auto}
  .card-image img,.project-arrow,.button,.copy-email,.review-arrows button{transform:none!important;transition:none!important;animation:none!important}
}

/* Shared editorial type system — all pages, no content or layout changes. */
:root {
  --type-brand: clamp(1.5rem, 1.35rem + .4vw, 1.75rem);
  --type-display: clamp(2.125rem, 1.65rem + 2.25vw, 3.625rem);
  --type-editorial: clamp(1.875rem, 1.55rem + 1.2vw, 2.625rem);
  --type-section: clamp(1.625rem, 1.4rem + 1vw, 2.125rem);
  --type-card: clamp(1.1875rem, 1.12rem + .24vw, 1.375rem);
  --type-quote: clamp(1.4375rem, 1.18rem + 1vw, 2rem);
  --type-lead: clamp(1.0625rem, 1rem + .2vw, 1.1875rem);
  --type-body: clamp(.9375rem, .91rem + .13vw, 1rem);
  --type-small: .875rem;
  --type-label: .75rem;
  --rhythm-1: .5rem;
  --rhythm-2: .75rem;
  --rhythm-3: 1rem;
  --rhythm-4: 1.5rem;
  --rhythm-5: 2rem;
  --section-rhythm: clamp(3.5rem, 2.5rem + 3vw, 5.5rem);
}
body {
  font-size: var(--type-body);
  line-height: 1.7;
  font-weight: 400;
  letter-spacing: 0;
  font-kerning: normal;
}
h1,h2,h3 { text-wrap: balance; overflow-wrap: break-word; }
p,blockquote,figcaption,dd { text-wrap: pretty; }
.hero h1,.project-intro h1,.contact h2 {
  font-size: var(--type-display);
  font-weight: 400;
  line-height: 1.1;
  letter-spacing: -.035em;
}
.hero h1 { max-width: 21ch; }
.project-intro h1 { max-width: 24ch; }
.contact h2 { max-width: 22ch; }
.section-heading h2 {
  font-size: var(--type-section);
  font-weight: 400;
  line-height: 1.18;
  letter-spacing: -.025em;
}
.about h2,.review-intro h2 {
  font-size: var(--type-editorial);
  font-weight: 400;
  line-height: 1.16;
  letter-spacing: -.028em;
  max-width: 24ch;
}
.card-caption h3,.service h3 {
  font-size: var(--type-card);
  font-weight: 500;
  line-height: 1.3;
  letter-spacing: -.015em;
}
.wordmark {
  font-size: var(--type-brand);
  font-weight: 600;
  line-height: 1.15;
  letter-spacing: -.035em;
}
.wordmark span {
  font-size: .6875rem;
  line-height: 1.5;
  font-weight: 400;
  letter-spacing: .1em;
  margin-top: var(--rhythm-1);
}
.header nav,.talk {
  font-size: var(--type-small);
  font-weight: 400;
  line-height: 1.45;
  letter-spacing: .01em;
}
.button,.text-link,.copy-email,.back {
  font-size: var(--type-small);
  font-weight: 400;
  line-height: 1.45;
  letter-spacing: .01em;
}
.eyebrow,.hero .eyebrow,.review-intro .eyebrow,.contact .eyebrow {
  font-size: var(--type-label);
  font-weight: 500;
  line-height: 1.5;
  letter-spacing: .1em;
  margin-bottom: var(--rhythm-4);
}
.hero-copy { max-width: 45ch; padding-bottom: 0; }
.hero-copy>p,.about-copy p,.service p,.contact h2+p {
  font-size: var(--type-body);
  font-weight: 400;
  line-height: 1.75;
  letter-spacing: 0;
}
.about-copy p { max-width: 62ch; margin-bottom: var(--rhythm-4); }
.about-copy p:first-child,.project-details>p {
  font-size: var(--type-lead);
  font-weight: 400;
  line-height: 1.65;
  letter-spacing: 0;
  max-width: 55ch;
}
.about-copy p:last-of-type { margin-bottom: 0; }
.section-heading>p {
  font-size: var(--type-small);
  line-height: 1.6;
  letter-spacing: 0;
  max-width: 42ch;
}
.section-heading {
  padding-top: var(--rhythm-4);
  margin-bottom: var(--rhythm-5);
  row-gap: var(--rhythm-2);
}
.small-number {
  font-family: var(--sans);
  font-size: var(--type-label);
  font-weight: 400;
  line-height: 1.5;
  letter-spacing: .04em;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.hero { padding-block: clamp(2rem, 1.5rem + 1.5vw, 3rem); }
.hero-actions { margin-top: var(--rhythm-4); gap: var(--rhythm-4); }
.filters { margin-bottom: var(--rhythm-4); }
.filters button {
  font-size: var(--type-small);
  font-weight: 400;
  line-height: 1.5;
  letter-spacing: 0;
  padding-block: .4375rem;
}
.card-caption { padding-top: var(--rhythm-3); align-items: flex-start; gap: var(--rhythm-3); }
.card-caption>div { min-width: 0; }
.card-caption p {
  font-size: var(--type-label);
  font-weight: 400;
  line-height: 1.5;
  letter-spacing: .09em;
  margin-top: var(--rhythm-1);
}
.work,.services,.testimonials { padding-bottom: var(--section-rhythm); }
.about { padding-block: var(--section-rhythm); }
.badge {
  font-size: var(--type-small);
  line-height: 1.5;
  letter-spacing: 0;
  margin-top: var(--rhythm-5);
}
.facts { margin-top: var(--rhythm-5); padding-top: var(--rhythm-4); row-gap: var(--rhythm-4); }
.facts dt,.project-details dt {
  font-size: var(--type-label);
  font-weight: 400;
  line-height: 1.5;
  letter-spacing: .09em;
  margin-bottom: var(--rhythm-1);
}
.facts dd,.project-details dd {
  font-size: var(--type-small);
  line-height: 1.65;
  letter-spacing: 0;
  margin: 0;
}
.service { padding-block: var(--rhythm-4); row-gap: var(--rhythm-2); }
.service-no {
  font-size: var(--type-label);
  line-height: 1.6;
  letter-spacing: .03em;
  font-variant-numeric: tabular-nums;
}
.service p { max-width: 54ch; }
.review-intro .eyebrow { margin-bottom: var(--rhythm-4); }
.review-source {
  font-size: var(--type-small);
  line-height: 1.5;
  letter-spacing: 0;
  margin-top: var(--rhythm-5);
}
.review-slide blockquote {
  font-family: var(--serif);
  font-size: var(--type-quote);
  font-weight: 400;
  line-height: 1.45;
  letter-spacing: -.012em;
  max-width: 38ch;
  margin: 0 0 var(--rhythm-5);
}
.review-author {
  font-size: var(--type-small);
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: .005em;
}
.review-project {
  font-size: var(--type-small);
  line-height: 1.6;
  letter-spacing: 0;
  margin-top: .25rem;
  max-width: 44ch;
}
.review-counter { font-size: var(--type-label); line-height: 1.5; letter-spacing: .06em; }
.review-controls { margin-top: var(--rhythm-5); }
.review-quotes { min-height: 19rem; }
.contact { padding-block: var(--section-rhythm); }
.contact h2+p { max-width: 53ch; margin-top: var(--rhythm-4); }
.email {
  font-size: clamp(1.125rem, .95rem + .8vw, 1.625rem);
  font-weight: 400;
  line-height: 1.45;
  letter-spacing: -.015em;
  margin-top: var(--rhythm-5);
}
.contact-upwork,.copy-status {
  font-size: var(--type-small);
  line-height: 1.6;
  letter-spacing: 0;
}
.contact-upwork { margin-top: var(--rhythm-4); }
.email-tools { margin-top: var(--rhythm-3); }
.footer {
  font-size: var(--type-label);
  line-height: 1.65;
  letter-spacing: 0;
  padding-block: var(--rhythm-4);
}
.project-page { padding-top: var(--rhythm-5); }
.project-intro { padding-block: clamp(2rem, 1.5rem + 1.5vw, 3rem); }
.project-intro .eyebrow { margin-bottom: var(--rhythm-3); }
.project-details { margin-top: var(--rhythm-5); }
.gallery figcaption {
  font-size: var(--type-label);
  line-height: 1.65;
  letter-spacing: 0;
  margin-top: var(--rhythm-2);
  max-width: 90ch;
}
.project-navigation { padding-block: var(--rhythm-5); }
.project-navigation a {
  font-size: var(--type-card);
  line-height: 1.3;
  font-weight: 400;
  letter-spacing: -.015em;
  overflow-wrap: break-word;
  text-wrap: balance;
  max-width: 46%;
}
.project-navigation span {
  font-size: var(--type-label);
  font-weight: 400;
  line-height: 1.5;
  letter-spacing: .08em;
  margin-bottom: var(--rhythm-2);
}
.project-cta { padding-block: var(--rhythm-5); font-size: var(--type-card); line-height: 1.4; letter-spacing: -.015em; }
.project-cta .button { letter-spacing: .01em; }
.close-dialog { font-size: var(--type-small); line-height: 1.5; }
@media (max-width:1000px) {
  .hero-copy { max-width: 44ch; }
  .section-heading>p { max-width: 32ch; }
  .project-details { column-gap: var(--rhythm-5); }
  .review-quotes { min-height: 22rem; }
}
@media (max-width:700px) {
  .header nav { gap: var(--rhythm-2); }
  .hero-copy { margin-top: var(--rhythm-4); max-width: 55ch; }
  .hero-actions { margin-top: var(--rhythm-4); row-gap: var(--rhythm-3); }
  .section-heading { padding-top: var(--rhythm-4); margin-bottom: var(--rhythm-4); }
  .section-heading>p { max-width: 48ch; margin-top: var(--rhythm-2); }
  .filters { margin-bottom: var(--rhythm-4); row-gap: .25rem; }
  .about { row-gap: var(--rhythm-5); }
  .badge { margin-top: var(--rhythm-4); }
  .facts { margin-top: var(--rhythm-4); }
  .review-editorial { row-gap: var(--rhythm-5); padding-block: var(--rhythm-5); }
  .review-intro .eyebrow { margin-bottom: var(--rhythm-3); }
  .review-source { margin-top: var(--rhythm-4); }
  .review-slide blockquote { max-width: 38ch; margin-bottom: var(--rhythm-4); }
  .review-quotes { min-height: clamp(16.5rem, 33rem - 42vw, 22rem); }
  .review-controls { margin-top: var(--rhythm-4); }
  .project-details { row-gap: var(--rhythm-4); margin-top: var(--rhythm-4); }
  .project-details dl { column-gap: var(--rhythm-4); }
  .project-navigation { padding-block: var(--rhythm-4); }
  .project-cta { padding-block: var(--rhythm-4); row-gap: var(--rhythm-4); }
}

/* Design Services: a precise, understated editorial grid. */
.services { --services-gutter: clamp(2rem, 4vw, 4rem); }
.services .section-heading {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  column-gap: var(--services-gutter);
  row-gap: var(--rhythm-2);
  align-items: start;
  padding-top: var(--rhythm-4);
  margin-bottom: var(--rhythm-2);
}
.services .section-heading h2 {
  font-size: var(--type-section);
  font-weight: 400;
  line-height: 1.18;
  letter-spacing: -.03em;
  max-width: 22ch;
}
.services .section-heading>p {
  padding-left: 2.5rem;
  margin: 0;
  max-width: 48ch;
  font-size: var(--type-small);
  font-weight: 400;
  line-height: 1.65;
  letter-spacing: 0;
  text-align: left;
  text-wrap: pretty;
}
.services .services-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  column-gap: var(--services-gutter);
  row-gap: 0;
}
.services .service {
  grid-template-columns: 1.5rem minmax(0, 1fr);
  grid-template-rows: max-content 1fr;
  column-gap: 1rem;
  row-gap: .75rem;
  align-items: start;
  align-content: start;
  padding: 1.5rem 0;
  margin: 0;
  border-bottom: 1px solid var(--line);
}
.services .service-no {
  grid-column: 1;
  grid-row: 1;
  align-self: baseline;
  padding: 0;
  font-size: var(--type-label);
  font-weight: 400;
  line-height: 1.5;
  letter-spacing: .03em;
  font-variant-numeric: tabular-nums;
}
.services .service h3 {
  grid-column: 2;
  grid-row: 1;
  align-self: baseline;
  margin: 0;
  font-size: var(--type-card);
  font-weight: 500;
  line-height: 1.3;
  letter-spacing: -.02em;
  text-align: left;
  text-wrap: balance;
}
.services .service p {
  grid-column: 2;
  grid-row: 2;
  align-self: start;
  max-width: 54ch;
  margin: 0;
  font-size: var(--type-body);
  font-weight: 400;
  line-height: 1.65;
  letter-spacing: 0;
  text-align: left;
  text-wrap: pretty;
}
@supports (grid-template-rows: subgrid) {
  .services .service {
    grid-row: span 2;
    grid-template-rows: subgrid;
  }
}
@media (max-width:700px) {
  .services .section-heading {
    grid-template-columns: minmax(0, 1fr);
    row-gap: .75rem;
    margin-bottom: .5rem;
  }
  .services .section-heading>p { padding-left: 0; max-width: 54ch; }
  .services .services-grid { grid-template-columns: minmax(0, 1fr); }
  .services .service { padding-block: 1.25rem; row-gap: .625rem; }
}

/* Local, self-contained brand book viewer. Artwork retains its original ratio. */
.brandbook { margin: 0 0 var(--section-rhythm); }
.brandbook .book-heading { display:flex; justify-content:space-between; align-items:baseline; gap:1rem; margin-bottom:1.25rem; }
.brandbook .book-heading h2 { font-size:var(--type-card); font-weight:500; letter-spacing:-.025em; margin:0; }
.brandbook .book-heading p,.brandbook .book-notes { font-size:var(--type-small); color:var(--muted); }
.brandbook .book-heading p { margin:0; }
.brandbook .book-stage { perspective:2200px; touch-action:pan-y pinch-zoom; width:100%; max-width:1100px; margin-inline:auto; }
.brandbook .book-sheet { position:relative; transform-style:preserve-3d; backface-visibility:hidden; }
.brandbook .book-image { display:block; width:100%; height:auto; user-select:none; -webkit-user-drag:none; }
.brandbook .book-shade { pointer-events:none; position:absolute; inset:0; box-shadow:inset 1px 0 0 #242d3812; }
.brandbook .book-controls { display:flex; align-items:center; justify-content:space-between; gap:1rem; padding:1.25rem 0; border-bottom:1px solid var(--line); }
.brandbook .book-controls[hidden] { display:none; }
.brandbook .book-paging { display:flex; align-items:center; gap:1rem; }
.brandbook button,.brandbook select { font:inherit; font-size:var(--type-small); color:var(--ink); background:transparent; border:1px solid var(--line); border-radius:0; }
.brandbook button { cursor:pointer; min-height:44px; padding:.65rem 1rem; }
.brandbook button:hover:not(:disabled) { border-color:var(--accent); color:var(--accent); }
.brandbook button:disabled { opacity:.35; cursor:default; }
.brandbook select { padding:.65rem .4rem; margin-left:.3rem; min-height:44px; }
.brandbook .book-select-label { font-size:0; }
.brandbook .book-select-label select,.brandbook .book-select-label span { font-size:var(--type-small); }
.brandbook .book-notes { display:flex; justify-content:space-between; gap:1rem; margin-top:1rem; }
.brandbook .book-notes p { margin:0; }
.brandbook .book-notes a { white-space:nowrap; }
.brandbook .book-dialog { width:calc(100vw - 2rem); max-width:1800px; max-height:calc(100dvh - 2rem); padding:1.25rem; background:var(--paper); color:var(--ink); border:1px solid var(--line); }
.brandbook .book-dialog::backdrop { background:#19232fba; }
.brandbook .book-dialog p { font-size:var(--type-small); color:var(--muted); margin:.75rem 0; }
.brandbook .book-close { display:block; margin-left:auto; }
.brandbook .book-zoom-scroll { overflow:auto; max-height:calc(100dvh - 10rem); }
.brandbook .book-zoom-scroll img { display:block; width:var(--book-page-width,1754px); max-width:none; max-height:none; height:auto; margin:0; object-fit:initial; }
.brandbook :is(button,select,.book-stage,a):focus-visible { outline:2px solid var(--accent); outline-offset:5px; }
@media(max-width:700px) {
 .brandbook .book-heading,.brandbook .book-notes { flex-direction:column; gap:.5rem; }
 .brandbook .book-controls { flex-wrap:wrap; gap:.75rem; padding-block:1rem; }
 .brandbook .book-paging { gap:.5rem; }
 .brandbook .book-enlarge { margin-left:auto; }
 .brandbook .book-dialog { padding:.75rem; }
}
@media(prefers-reduced-motion:reduce) { .brandbook .book-sheet { transform:none!important; filter:none!important; } }

/* Soft paper folding, locally bundled StPageFlip; no iframe or remote service. */
.brandbook .book-stage { perspective:none; position:relative; }
.brandbook .book-sheet[hidden] { display:none; }
.brandbook .book-flip { min-width:0!important; min-height:0!important; margin-inline:auto; }
.brandbook .book-leaf { background:var(--paper); overflow:hidden; }
.brandbook .book-leaf img { width:100%; height:100%; max-width:none; object-fit:contain; user-select:none; -webkit-user-drag:none; }
.brandbook .book-flip .stf__parent { min-width:0!important; }
.brandbook .has-page-flip { cursor:grab; }
.brandbook .has-page-flip:active { cursor:grabbing; }
@media(prefers-reduced-motion:reduce) { .brandbook .has-page-flip { cursor:default; } }

/* Read as a spread on wider screens; retain single pages below 880px viewer width. */
.brandbook .book-stage { max-width:1320px; }
.brandbook .book-range { font-size:var(--type-small); color:var(--muted); font-variant-numeric:tabular-nums; }
@media(max-width:700px) { .brandbook .book-range { display:none; } }

/* Selected work: consistent responsive three-column composition. */
.project-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:1000px){.project-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.project-grid{grid-template-columns:1fr}}

/* Fixed, keyboard-accessible return link on every page. */
.back-to-top{position:fixed;right:24px;bottom:26px;z-index:20;width:48px;height:48px;display:grid;place-items:center;border:1px solid var(--accent);background:var(--paper);color:var(--accent);border-radius:50%;transition:background .2s,color .2s,transform .2s}
.back-to-top:hover{background:var(--accent);color:var(--paper);transform:translateY(-3px)}
.footer{padding-right:54px}
.hero-concept{display:grid;grid-template-columns:1.05fr 1fr;gap:50px;align-items:center;padding-block:48px 54px}
.hero-concept-copy{padding-block:18px;min-width:0}
.hero-concept .eyebrow{margin-bottom:23px}
.hero-concept h1{font-size:clamp(38px,4.2vw,62px);line-height:1.08;letter-spacing:-.045em;text-wrap:balance}
.concept-intro{max-width:45ch;color:var(--muted);font-size:16px;line-height:1.7;margin-top:25px}
.hero-concept-art{position:relative;padding:0 0 50px;min-width:0}
.concept-main{display:block;width:88%;margin-left:auto;overflow:hidden}
.concept-main img{width:100%;aspect-ratio:3/2;object-fit:cover}
.concept-detail{display:block;position:absolute;left:0;bottom:44px;width:44%;border:6px solid var(--paper)}
.concept-detail img{width:100%;aspect-ratio:3/2;object-fit:cover}
.hero-concept-art>p{margin-top:18px;text-align:right;font-size:10px;line-height:1.5;color:var(--muted);letter-spacing:.06em}
.contact-concept{background:#263e55;color:#f8fafc;padding-block:62px}
.contact-concept-grid{display:grid;grid-template-columns:1.05fr 1fr;gap:50px;align-items:end}
.contact-concept .eyebrow{color:#b9cede;margin-bottom:20px}
.contact-concept h2{font-size:clamp(36px,4vw,59px);line-height:1.12;letter-spacing:-.035em}
.contact-concept h2 em{color:#c5dced}
.contact-concept-copy>p{color:#d2deea;max-width:38ch;font-size:15px;line-height:1.7}
.contact-concept .email{font-size:clamp(16px,2vw,25px);border-color:#9cb6cc;margin-top:24px}
.contact-concept .contact-upwork,.contact-concept .copy-email{color:#d2deea;border-color:#6d879d}
.contact-concept .copy-status{color:#d2deea}
@media(max-width:1000px){.hero-concept,.contact-concept-grid{gap:28px}.hero-concept h1{font-size:44px}.concept-intro{font-size:15px}}
@media(max-width:700px){.hero-concept{grid-template-columns:1fr;gap:26px;padding-block:30px}.hero-concept-copy{padding:0}.hero-concept h1{font-size:clamp(35px,9vw,48px)}.concept-intro{margin-top:20px}.hero-concept-art{max-width:540px;width:100%;padding-bottom:35px}.concept-detail{bottom:30px}.hero-concept-art>p{font-size:9px}.contact-concept-grid{grid-template-columns:1fr;gap:28px}.contact-concept{padding-block:42px}.contact-concept h2{font-size:39px}.contact-concept .email{font-size:19px}.back-to-top{right:14px;bottom:16px;width:44px;height:44px}}
@media(prefers-reduced-motion:reduce){.back-to-top{transition:none}.back-to-top:hover{transform:none}}

/* Keep work categories available while browsing the project grid. */
.filters{position:sticky;top:0;z-index:10;background:var(--paper);padding:14px 0;margin-bottom:26px;border-bottom:1px solid var(--line);scroll-margin-top:0}
.filters button{white-space:nowrap;flex-shrink:0}
.work-pagination{display:flex;flex-direction:column;align-items:center;gap:16px;margin-top:40px}
.work-progress{font-size:12px;line-height:1.6;color:var(--muted)}
.work-progress:empty,.show-more[hidden]{display:none}
.show-more{cursor:pointer;min-width:180px;min-height:48px}
@media(max-width:700px){.filters{flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-x:contain;padding-block:12px;gap:3px}.filters button{padding-inline:10px;min-height:40px}.work-pagination{margin-top:28px}}

/* One consistent line-icon family; restrained blue accents, no card containers. */
.services .service{grid-template-columns:36px minmax(0,1fr);column-gap:20px;padding-block:26px}
.services .service-icon{grid-column:1;grid-row:1;width:32px;height:32px;color:var(--accent);align-self:start;margin-top:1px;overflow:visible}
.services .service-no{grid-column:1;grid-row:2;align-self:start;justify-self:center;margin-top:2px;font-size:10px;letter-spacing:.06em;color:var(--muted)}
.services .service h3{align-self:center}
@media(max-width:700px){.services .service{grid-template-columns:30px minmax(0,1fr);column-gap:16px;padding-block:22px}.services .service-icon{width:28px;height:28px}.services .service-no{font-size:9px}}

.hero-slider{min-width:0;width:100%}
.hero-slide[hidden],.hero-slider-controls[hidden]{display:none}
.hero-slide a{display:block}
.hero-slide img{width:100%;aspect-ratio:3/2;object-fit:cover}
.hero-slide figcaption{display:flex;justify-content:space-between;gap:16px;margin-top:13px;font-size:11px;line-height:1.5;color:var(--muted)}
.hero-slide figcaption span:first-child{color:var(--ink)}
.hero-slider-controls{display:flex;align-items:center;gap:18px;border-top:1px solid var(--line);padding-top:12px;margin-top:14px}
.hero-slider-arrows{display:flex;gap:8px}
.hero-slider-controls button{border:1px solid var(--line);background:transparent;color:var(--ink);cursor:pointer;min-width:40px;min-height:40px;padding:6px 12px;font-size:18px}
.hero-slider-controls button:hover{border-color:var(--accent);color:var(--accent)}
.hero-slider-controls .hero-slider-pause{margin-left:auto;font-size:11px;min-width:66px;border-color:transparent}
.hero-slider-controls button:disabled{cursor:default;opacity:.65}
.hero-slider-count{font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums}
@media(max-width:700px){.hero-slider{margin-bottom:5px}.hero-slide figcaption{gap:12px;font-size:10px}.hero-slider-controls{gap:12px}}

/* Compact dot navigation, without project captions or numeric counter. */
.hero-slider-controls{border-top:0;margin-top:9px;padding-top:0;gap:12px}
.hero-slider-dots{display:flex;align-items:center;gap:0}
.hero-slider-controls .hero-slider-dot{display:grid;place-items:center;width:34px;min-width:34px;height:40px;padding:0;border:0;background:transparent}
.hero-slider-dot span{display:block;width:7px;height:7px;border-radius:50%;border:1px solid var(--accent);background:transparent}
.hero-slider-dot[aria-pressed=true] span{background:var(--accent)}
.hero-slider-dot:hover span{background:var(--accent)}
@media(max-width:700px){.hero-slider-controls .hero-slider-dot{width:32px;min-width:32px;height:44px}}

.hero-slides{display:grid;isolation:isolate}
.hero-slide{grid-area:1/1;min-width:0}
.hero-slide-ghost{z-index:1;pointer-events:none}

/* Stable viewer layout prevents page-turn transforms becoming scroll anchors. */
.brandbook,.brandbook .book-stage,.brandbook .book-flip{overflow-anchor:none}
.hero-slide[data-project="BULKS"] a{overflow:hidden}
.hero-slide[data-project="BULKS"] img{transform:scale(1.12);transform-origin:50% 61%}

/* Subtle movement-only mouse glow; the native cursor and all hit targets stay intact. */
.cursor-glow{position:fixed;left:0;top:0;width:140px;height:140px;border-radius:50%;pointer-events:none;z-index:30;opacity:0;background:radial-gradient(ellipse at 35% 42%,rgba(110,178,235,.18),transparent 65%),radial-gradient(ellipse at 65% 58%,rgba(173,151,222,.15),transparent 65%);transition:opacity .25s ease;will-change:transform;contain:strict}
@media(prefers-reduced-motion:reduce),(hover:none),(pointer:coarse){.cursor-glow{display:none!important}}

/* Diffuse edges and a cool palette that responds smoothly to page position. */
.cursor-glow{width:180px;height:180px;filter:blur(20px);contain:layout style;background:radial-gradient(ellipse at 35% 42%,hsla(var(--glow-hue,215),72%,73%,.22) 0%,hsla(var(--glow-hue,215),72%,73%,.09) 28%,transparent 68%),radial-gradient(ellipse at 65% 58%,hsla(var(--glow-hue-alt,249),65%,76%,.18) 0%,hsla(var(--glow-hue-alt,249),65%,76%,.06) 30%,transparent 70%)}

/* A 45% smaller glow and a short, fading movement trail. */
.cursor-glow{width:99px;height:99px;filter:blur(11px)}
.cursor-trail{z-index:29;filter:blur(9px);transition:opacity .35s ease}
/* Keep services and reviews connected, with navigation close to each quote. */
.review-editorial{border-top:0;padding-top:0}
.review-stage{justify-content:flex-start;align-self:start}
.review-quotes{min-height:0}
.review-controls{margin-top:24px}
@media(max-width:700px){.review-controls{margin-top:20px}}

.hero-slider-controls{justify-content:center}
.hero-slider-dots{justify-content:center}

/* A thin continuous comet tail replaces the circular cursor glow. */
.cursor-comet{position:fixed;inset:0;width:100vw;height:100vh;pointer-events:none;z-index:30}
@media(prefers-reduced-motion:reduce),(hover:none),(pointer:coarse){.cursor-comet{display:none!important}}

/* Restore the diffuse, section-colored glow from before the trail experiment. */
.cursor-glow{width:180px;height:180px;filter:blur(20px)}
