/* Portfolio reading hierarchy. Embedded original projects keep their own styles. */
:root{--paper:#f4f3ef;--canvas:#e9e8e3;--ink:#20252b;--muted:#575d65;--line:#cfcec8;--orange:#c45c2b;--night:#202a36}
body{font-size:1rem}
h1,h2,h3{font-weight:700;text-wrap:balance}
p{text-wrap:pretty}
.eyebrow{font-size:.6875rem;font-weight:700;letter-spacing:.12em}
.header{height:96px;border-bottom:0}
.identity{font-size:1rem;font-weight:700}
.identity-role{font-size:.75rem;font-weight:450}
.header nav{font-size:.875rem;font-weight:600}
.header .contact-link{border-color:#bdbebc;background:#eae9e4}
.hero.wrap{width:100%;max-width:none;padding:64px max(56px,calc((100% - 1240px)/2)) 0;background:var(--night);color:#fff}
.hero .eyebrow{color:#e4c7b6}
.hero-location{font-size:.75rem;color:#bfc6cf}
.hero h1{font-size:clamp(5rem,9.4vw,9rem);line-height:1.02;letter-spacing:-.065em;font-weight:450;margin-top:36px}
.hero h1>span:not(.hero-period){color:#fff;font-weight:700}
.hero-period{background:#ed9a68;bottom:17px}
.hero-bottom{margin-top:32px}
.hero-bottom p{font-size:1.125rem;line-height:1.6;color:#cad0d8;max-width:580px}
.round-link{font-size:.875rem;font-weight:600}
.round-link span{border-color:#75808c;background:#ffffff0c;width:50px;height:50px}
.round-link:hover span{background:#fff;color:var(--night)}
.hero-index{border-color:#52606d;color:#bac3ce;font-size:.625rem;margin-top:54px;padding:22px 0 26px}
.hero-index span:last-child{color:#fff}
.work-section{padding-block:88px 96px}
.section-heading{margin-bottom:40px}
.section-heading h2{font-size:clamp(2.5rem,4.2vw,3.6rem);font-weight:700;letter-spacing:-.05em}
.section-heading>p{font-size:1rem;line-height:1.65;max-width:360px}
.project-grid{gap:32px}
.project-card{border:0;border-radius:18px;background:#fff;box-shadow:none;}
.violet{--accent:#6550a6;--tint:#ebe6f4;--wash:#d3c7e8}
.blue{--accent:#235c97;--tint:#e6eef8;--wash:#c4d8eb}
.green{--accent:#22715b;--tint:#e6f0e9;--wash:#c6dfd2}
.project-card .project-copy{padding:32px}
.project-01 .project-copy{background:#efebf5}
.project-copy .eyebrow{font-size:.625rem;font-weight:700;color:#535961;line-height:1.5}
.project-copy h3,.project-01 .project-copy h3,.project-04 .project-copy h3{font-size:clamp(1.875rem,2.7vw,2.75rem);font-weight:700;line-height:1.08;letter-spacing:-.045em;margin-top:22px}
.project-copy p{font-size:1rem;line-height:1.65;color:var(--muted);margin-top:14px}
.project-copy .project-thesis{font-size:1.0625rem;font-weight:600;line-height:1.45;color:var(--accent);margin-top:16px}
.project-role{border-top:1px solid #20252b24;padding-top:16px;margin-top:24px;font-size:.8125rem;font-weight:600;line-height:1.5;color:var(--ink)}
.project-role>span{display:block;font-size:.625rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin-bottom:5px}
.case-link{font-size:.875rem;font-weight:700;margin-top:24px}
.circle-arrow{border-color:#abb1b7;width:40px;height:40px}
.project-01 .project-copy .case-link{margin-top:24px}
.project-04 .project-link{background:#263442}
.project-04 .project-copy .project-thesis{color:#a6c8ff}
.project-04 .project-copy p,.project-04 .project-copy .eyebrow{color:#c7d1dd}
.project-04 .project-role{color:#fff;border-color:#ffffff35}
.project-04 .project-role>span{color:#c7d1dd}
.demo-pill{font-size:.6875rem;font-weight:600;box-shadow:0 2px 8px #20252b15}
.disclosure{font-size:.8125rem;margin-top:26px}
.approach-section{background:var(--night);color:#fff;padding-block:88px 96px}
.approach-section .eyebrow{color:#edb18d}
.approach-grid{gap:48px;margin-top:56px}
.approach-grid article{border-top:1px solid #66717d;padding-top:24px}
.approach-grid article>span{font-size:.875rem;font-weight:700;color:#edb18d;margin-bottom:24px}
.approach-grid h3{font-size:1.625rem;font-weight:650;max-width:280px}
.approach-grid p{font-size:1rem;color:#c6ced8;max-width:340px}
.craft-section{padding-block:88px}
.craft-list{margin-top:40px}
.craft-list>a{padding-block:28px;border-color:#bdbfbd}
.craft-list h3{font-size:1.5rem;font-weight:650}
.craft-list p{font-size:.9375rem}
.craft-no{font-size:.75rem;font-weight:700;color:var(--orange)}
.craft-tag{font-size:.6875rem;font-weight:600;background:#e7e7e0;border-color:#c8cac3;color:#535b61}
.about-section{padding-block:24px 88px;gap:80px}
.about-symbol{background:#dcdedc;border-radius:18px}
.about-symbol>span{color:#b7bdbd}
.about-copy h2{font-size:clamp(2.25rem,3.8vw,3rem);font-weight:700}
.about-copy p{font-size:1rem;line-height:1.75}
.text-link{font-size:.875rem;font-weight:600}
.contact-section{padding-block:72px 88px;border-color:#bfc1bd}
.contact-section h2{font-weight:650}
.contact-section>a{font-size:.9375rem;font-weight:600}
.footer p,.footer>span{font-size:.75rem}
/* Real company identities with an explicit career or project relationship. */
.brand-logo{display:block;object-fit:contain;object-position:left center;width:140px;height:36px;filter:brightness(0);opacity:.88;flex-shrink:0}
.brand-kaspersky{width:146px;height:34px}
.brand-mackenzie{width:132px;height:38px}
.brand-orla{width:83px;height:34px}
.brand-oakberry{width:152px;height:28px}
.brand-sulamerica{width:138px;height:36px}
.brand-sanity{width:120px;height:36px}
.companies-section{padding-block:36px 0}
.companies-heading{display:flex;align-items:baseline;justify-content:space-between;gap:20px;margin-bottom:24px}
.companies-heading .eyebrow{letter-spacing:.1em}
.companies-heading p{font-size:.8125rem;color:var(--muted)}
.company-strip{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));border-block:1px solid var(--line);padding-block:24px;gap:24px}
.company-credit{display:flex;flex-direction:column;justify-content:space-between;align-items:flex-start;gap:16px;min-height:84px;padding-block:3px}
.company-credit .brand-logo{max-width:100%;height:38px}
.company-credit>span{font-size:.6875rem;line-height:1.5;font-weight:500;color:var(--muted);max-width:160px}
.company-credit:hover .brand-logo{opacity:1}
.company-credit:hover>span{color:var(--blue)}
.project-brand{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:24px;padding-bottom:22px;border-bottom:1px solid #20252b24}
.project-brand>span{font-size:.6875rem;font-weight:600;line-height:1.5;color:var(--muted);text-align:right;max-width:100px}
.project-copy .eyebrow{font-size:.5625rem;letter-spacing:.06em}
.project-04 .project-brand{border-color:#ffffff30}
.project-04 .project-brand .brand-logo{filter:brightness(0) invert(1);opacity:1}
.project-04 .project-brand>span{color:#c7d1dd}
.case-hero>.project-brand{max-width:none;margin:0 0 30px;padding-bottom:24px}
.case-hero>.project-brand .brand-logo{height:38px;width:auto;max-width:210px}
.case-hero>.project-brand>span{font-size:.8125rem;max-width:none}
.craft-list>a>.brand-logo{width:112px;height:32px;object-position:left center;margin-right:8px}
.craft-list>a>.brand-orla{object-fit:contain;object-position:left center;padding-right:40px}
/* Case reading: context, ownership, decisions, artifact, outcome. */
.case-hero{padding-block:32px 56px}
.back-link{font-size:.875rem;font-weight:600;margin-bottom:32px}
.case-hero>.eyebrow{color:var(--accent);font-size:.6875rem}
.case-page.ink .case-hero>.eyebrow{color:#38599c}
.case-hero h1{font-size:clamp(3rem,6.2vw,5rem);font-weight:700;line-height:1.04;letter-spacing:-.055em;max-width:950px;margin-top:26px}
.case-summary{font-size:1.25rem;max-width:760px;margin-top:24px;color:#4e5761}
.case-stats{max-width:none;background:var(--tint);border-top:3px solid var(--accent);border-radius:0 0 12px 12px;padding:28px 32px;margin-top:36px;gap:32px}
.case-stats>div+div{border-left:1px solid #20252b30;padding-left:32px}
.case-stats strong{font-size:2.5rem;font-weight:700;color:var(--accent);line-height:1.1}
.case-stats span{font-size:.875rem;color:#525b64}
.case-page.ink .case-stats{background:#e1e8f2;border-color:#395caa}
.case-page.ink .case-stats strong{color:#395caa}
.case-nav{background:#f4f3eff5;border-color:#bbbebc}
.case-nav button{font-size:.875rem;font-weight:600;color:#424d58;min-height:58px}
.case-context{padding-block:64px;gap:64px;align-items:start}
.case-context h2{font-size:2.375rem;font-weight:700;line-height:1.15}
.case-context p,.case-context aside p{font-size:1rem;line-height:1.75}
.case-context>div{padding-block:22px}
.case-context aside{border:0;border-left:3px solid #bb673d;background:#eae0d5;border-radius:0 12px 12px 0;padding:28px 30px}
.case-context aside .eyebrow{color:#7e4228}
.case-context h3{font-size:1.5rem;font-weight:700;line-height:1.25;margin-block:16px}
.decisions{border-top:1px solid #bfc1bc;padding-block:56px 72px}
.decisions>h2{font-size:clamp(2.125rem,3.6vw,3rem);font-weight:700}
.decisions>div{gap:40px;margin-top:36px}
.decisions article{border-top:2px solid #69727b;padding-top:20px}
.decisions article>span{display:block;font-size:1.75rem;font-weight:450;letter-spacing:-.05em;color:var(--accent)}
.case-page.ink .decisions article>span{color:#38599c}
.decisions h3{font-size:1.375rem;font-weight:700;line-height:1.25;margin-block:16px}
.decisions p{font-size:1rem;line-height:1.7}
.case-demo-section{padding-block:64px 72px;border-top:1px solid #20252b1a}
.case-demo-section .section-heading{margin-bottom:28px}
.case-demo-section .section-heading>p{max-width:440px}
.artifact-badge{font-size:.6875rem;font-weight:600}
.artifact-provenance p{font-size:.875rem;line-height:1.65}
.demo-shell{border-color:#20252b30;box-shadow:0 16px 48px -24px #20252b50}
.demo-chrome>span,.open-original,.artifact-mobile,.expand-demo{font-size:.75rem;font-weight:600}
.demo-footnote{font-size:.75rem}
.case-outcome.wrap{width:100%;max-width:none;padding:64px max(56px,calc((100% - 1240px)/2)) 72px;background:var(--night);color:#fff}
.case-outcome .eyebrow{color:#edb18d}
.case-outcome h2{font-size:clamp(2rem,3.6vw,3rem);font-weight:700;margin-block:18px 24px}
.case-outcome p{max-width:780px;font-size:1.25rem;line-height:1.7;color:#d1d7de}
.next-case{border:0;padding-block:40px 72px}
.next-case h2{font-weight:700;font-size:clamp(1.875rem,3.4vw,2.75rem)}
.film-page h1{font-weight:700}
@media(max-width:1100px){.hero.wrap,.case-outcome.wrap{padding-inline:36px}.project-card .project-copy{padding:28px}.about-section{gap:48px}.case-context{gap:36px}.decisions>div{gap:28px}.approach-grid{gap:32px}}
@media(max-width:800px){.hero.wrap{padding-top:48px}.hero h1{font-size:clamp(4.5rem,10.8vw,6rem)}.hero-location{max-width:180px;line-height:1.5;text-align:right}.hero-bottom p{font-size:1rem}.section-heading>p{font-size:.9375rem;max-width:280px}.project-copy h3,.project-01 .project-copy h3,.project-04 .project-copy h3{font-size:2rem}.project-copy .eyebrow{font-size:.625rem}.project-copy .project-thesis{font-size:1rem}.project-copy p{font-size:.9375rem}.project-02 .project-link,.project-03 .project-link{grid-template-columns:1fr 1.15fr}.project-card .project-copy{padding:24px}.approach-grid{gap:24px}.approach-grid h3{font-size:1.375rem}.approach-grid p{font-size:.9375rem}.about-copy p{font-size:1rem}.case-context{grid-template-columns:1fr 1fr;gap:28px}.case-context h2{font-size:2rem}.case-context aside{padding:24px}.decisions>div{grid-template-columns:1fr;gap:28px}.decisions article{display:grid;grid-template-columns:48px 1fr;gap:0 20px}.decisions article>span{grid-row:1/3;font-size:2rem}.decisions h3{margin-top:0;max-width:none}.decisions p{max-width:65ch}.case-nav>div{gap:28px}.artifact-provenance p{font-size:.875rem}.case-stats{padding:24px;gap:24px}.case-stats>div+div{padding-left:24px}}
@media(max-width:560px){.header{height:80px}.identity{font-size:.875rem}.identity-role{font-size:.6875rem}.header nav{font-size:.8125rem;gap:18px}.hero.wrap{padding:36px 20px 0}.hero .eyebrow{font-size:.625rem}.hero h1{font-size:clamp(2.875rem,14vw,4.5rem);margin-top:28px;letter-spacing:-.06em}.hero-period{bottom:8px;right:-13px;width:6px;height:6px}.hero-bottom{gap:24px;margin-top:26px}.hero-bottom p{font-size:1rem;max-width:340px}.hero-index{margin-top:32px;font-size:.5625rem;padding-block:20px}.round-link{font-size:.875rem}.round-link span{width:44px;height:44px}.work-section{padding-block:52px 56px}.section-heading{gap:18px;margin-bottom:28px}.section-heading h2{font-size:2.25rem}.section-heading>p{max-width:340px;font-size:.9375rem}.eyebrow{font-size:.625rem}.project-grid{gap:24px}.project-card{border-radius:14px}.project-card .project-copy{padding:24px}.project-copy h3,.project-01 .project-copy h3,.project-04 .project-copy h3{font-size:2rem;margin-top:18px}.project-copy p{font-size:1rem}.project-copy .project-thesis{font-size:1rem}.project-copy .eyebrow{font-size:.625rem}.project-role{font-size:.8125rem}.case-link{margin-top:20px}.demo-pill{font-size:.625rem}.disclosure{font-size:.75rem;text-align:left}.approach-section{padding-block:56px}.approach-grid{gap:28px;margin-top:32px}.approach-grid article{grid-template-columns:32px 1fr;gap:0 16px;padding-top:24px}.approach-grid article>span{font-size:.875rem;margin:2px 0}.approach-grid h3{font-size:1.5rem}.approach-grid p{font-size:1rem}.craft-section{padding-block:56px}.craft-list{margin-top:28px}.craft-list>a{padding-block:24px}.craft-list h3{font-size:1.25rem}.craft-list p{font-size:.875rem}.craft-no{font-size:.6875rem}.about-section{gap:32px;padding-block:8px 56px}.about-copy h2{font-size:2.25rem}.about-copy p{font-size:1rem}.contact-section{padding-block:48px 56px}.contact-section h2{font-size:2.75rem}.footer p,.footer>span{font-size:.6875rem}.case-hero{padding-block:24px 36px}.case-hero>.eyebrow{font-size:.625rem;gap:10px}.back-link{font-size:.8125rem;margin-bottom:24px}.case-hero h1{font-size:clamp(2.375rem,10.3vw,3rem);line-height:1.08}.case-summary{font-size:1.0625rem;line-height:1.65}.case-stats{margin-top:28px;padding:20px 16px;gap:12px}.case-stats>div+div{padding-left:12px}.case-stats strong{font-size:1.75rem}.case-stats span{font-size:.75rem;line-height:1.5;max-width:none}.case-nav button{font-size:.75rem;min-height:52px}.case-nav>div{gap:24px}.case-context{grid-template-columns:1fr;gap:24px;padding-block:36px}.case-context>div{padding-block:0}.case-context h2{font-size:2rem}.case-context h3{font-size:1.375rem}.case-context p,.case-context aside p{font-size:1rem}.case-context aside{padding:24px;border-top:0}.decisions{padding-block:36px 48px}.decisions>h2{font-size:2.125rem}.decisions>div{margin-top:28px}.decisions article{grid-template-columns:32px 1fr;gap:0 14px}.decisions article>span{font-size:1.625rem;margin-top:0}.decisions h3{font-size:1.375rem}.decisions p{font-size:1rem}.case-demo-section{padding-block:40px 48px}.case-demo-section .section-heading h2{font-size:2rem}.case-demo-section .section-heading p{font-size:.9375rem}.artifact-provenance p{font-size:.8125rem}.demo-chrome>span{font-size:.6875rem}.open-original,.artifact-mobile,.expand-demo{font-size:.6875rem;min-height:44px}.artifact-actions{gap:16px}.demo-footnote{font-size:.6875rem}.case-outcome.wrap{padding:44px 20px 48px}.case-outcome h2{font-size:2rem}.case-outcome p{font-size:1.0625rem}.next-case{padding-block:32px 48px}.next-case h2{font-size:1.875rem;max-width:none}}
@media(max-width:560px){.case-stats{grid-template-columns:.85fr 1.15fr 1fr;gap:10px}.case-stats>div+div{padding-left:10px}.case-stats strong{font-size:clamp(1.25rem,6vw,1.75rem);white-space:nowrap}}
@media(max-width:1100px){.company-strip{grid-template-columns:repeat(3,minmax(0,1fr));gap:28px 36px}.company-credit{min-height:78px}.project-brand{gap:12px}.project-brand .brand-logo{max-width:50%}}
@media(max-width:560px){.companies-section{padding-top:28px}.companies-heading{display:block;margin-bottom:20px}.companies-heading p{font-size:.8125rem;margin-top:8px}.company-strip{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 20px;padding-block:24px}.company-credit{gap:10px;min-height:76px}.company-credit .brand-logo{max-width:100%;height:32px}.company-credit>span{font-size:.6875rem;max-width:150px}.project-brand{margin-bottom:20px;padding-bottom:18px;gap:16px}.project-brand .brand-logo{max-width:52%;height:30px}.project-brand>span{font-size:.625rem;max-width:85px}.case-hero>.project-brand{margin-bottom:24px;padding-bottom:20px}.case-hero>.project-brand .brand-logo{max-width:155px;height:30px}.case-hero>.project-brand>span{font-size:.6875rem;max-width:95px}.craft-list>a{position:relative;padding-left:0;gap:16px}.craft-list>a>.brand-logo{width:80px;height:25px;margin-right:0}.craft-list>a>.brand-orla{padding-right:22px}.craft-list>a>div{width:calc(100% - 116px)}.craft-list h3{font-size:1.125rem}.craft-list p{font-size:.8125rem}}
@media print{.hero.wrap,.case-outcome.wrap{padding-inline:0}.case-context,.decisions,.case-outcome.wrap{padding-block:20pt}.project-card,.hero,.case-outcome{-webkit-print-color-adjust:exact;print-color-adjust:exact}}
