// page-case-study.jsx — single case study, data-driven from WORK_DETAILS + PROJECTS by ?slug= const CSCSS = ` .page .cs-hero{ padding:48px 56px 80px; position:relative; } .page .cs-hero .meta{ display:grid; grid-template-columns:repeat(4,1fr); gap:24px; padding:48px 0 0; border-top:1px solid var(--rule); margin-top:48px; } .page .cs-hero .meta .l{ font-family:'JetBrains Mono',monospace; font-size:11px; letter-spacing:.16em; text-transform:uppercase; color:var(--ink-soft); margin-bottom:8px; } .page .cs-hero .meta .v{ font-family:'Instrument Serif',serif; font-style:italic; font-size:24px; } .page .cs-shot{ padding:0 56px 80px; position:relative; } .page .cs-shot .frame{ border-radius:8px; overflow:hidden; box-shadow:0 40px 90px -50px rgba(0,0,0,.5); } .page .cs-shot img{ width:100%; display:block; } .page .cs-body{ padding:80px 56px; display:grid; grid-template-columns:1fr 2fr; gap:80px; position:relative; } .page .cs-body + .cs-body{ padding-top:0; } .page .cs-body h2{ font-family:'Instrument Serif',serif; font-style:italic; font-size:48px; line-height:1; margin:0; } .page .cs-body p{ font-size:18px; line-height:1.6; margin:0 0 18px; } .page .cs-body p:last-child{ margin-bottom:0; } .page .cs-body p strong{ color:var(--terra); font-weight:500; } .page .cs-band{ background:var(--paper); padding:120px 56px; position:relative; } .page .cs-band h3{ font-family:'Instrument Serif',serif; font-style:italic; font-size:60px; line-height:1; margin:14px 0 48px; max-width:800px; } .page .cs-band h3 em{ color:var(--terra); } .page .cs-band .grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:24px; } .page .cs-band .pic{ aspect-ratio:4/3; border-radius:6px; overflow:hidden; background:var(--bg); } .page .cs-band .pic img{ width:100%; height:100%; object-fit:cover; } .page .cs-band .stat .n{ font-family:'Instrument Serif',serif; font-style:italic; font-size:96px; color:var(--terra); line-height:1; } .page .cs-band .stat .l{ font-family:'JetBrains Mono',monospace; font-size:12px; letter-spacing:.12em; text-transform:uppercase; color:var(--ink-soft); margin-top:8px; } .page .cs-quote{ padding:120px 56px; text-align:center; max-width:1000px; margin:0 auto; position:relative; } .page .cs-quote q{ font-family:'Instrument Serif',serif; font-style:italic; font-size:56px; line-height:1.08; quotes:none; letter-spacing:-.02em; } .page .cs-quote .who{ margin-top:32px; font-family:'JetBrains Mono',monospace; font-size:12px; letter-spacing:.16em; text-transform:uppercase; color:var(--ink-soft); } .page .cs-nav{ padding:80px 56px; display:grid; grid-template-columns:1fr 1fr; gap:24px; border-top:1px solid var(--rule); } .page .cs-nav a{ display:flex; flex-direction:column; gap:6px; padding:32px; border-radius:8px; background:var(--paper); text-decoration:none; color:inherit; transition:transform .25s; } .page .cs-nav a:hover{ transform:translateY(-3px); } .page .cs-nav a.next{ text-align:right; } .page .cs-nav .l{ font-family:'JetBrains Mono',monospace; font-size:11px; letter-spacing:.16em; text-transform:uppercase; color:var(--ink-soft); } .page .cs-nav .t{ font-family:'Instrument Serif',serif; font-style:italic; font-size:30px; } /* ---- SCREEN GALLERY ---- */ .page .cs-screens{ display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:20px; } .page .cs-screen-frame{ border-radius:10px; overflow:hidden; position:relative; box-shadow:0 16px 40px -20px rgba(0,0,0,.35); background:var(--bg); transition: transform .3s, box-shadow .3s; } .page .cs-screen-frame:hover{ transform:translateY(-6px) rotate(.3deg); box-shadow:0 28px 56px -24px rgba(0,0,0,.45); } .page .cs-screen-frame .browser-bar{ height:28px; background:#e8e4d8; display:flex; align-items:center; padding:0 10px; gap:5px; border-bottom:1px solid rgba(0,0,0,.08); } .page .cs-screen-frame .browser-bar .dot{ width:8px; height:8px; border-radius:50%; } .page .cs-screen-frame .browser-bar .dot.r{ background:#ec6a5e; } .page .cs-screen-frame .browser-bar .dot.y{ background:#f4bf4f; } .page .cs-screen-frame .browser-bar .dot.g{ background:#61c554; } .page .cs-screen-frame .browser-bar .url{ flex:1; margin-left:8px; height:14px; background:rgba(0,0,0,.1); border-radius:999px; font-family:'JetBrains Mono',monospace; font-size:9px; display:flex; align-items:center; padding:0 8px; color:rgba(0,0,0,.4); } .page .cs-screen-frame .screen-img{ width:100%; display:block; } .page .cs-screen-frame .screen-placeholder{ aspect-ratio:4/3; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:10px; background:var(--paper); font-family:'Caveat',cursive; font-size:20px; color:var(--ink-soft); padding:20px; text-align:center; } .page .cs-screen-frame .screen-placeholder svg{ opacity:.3; } .page .cs-screen-frame .screen-label{ position:absolute; bottom:0; left:0; right:0; padding:8px 12px; background:linear-gradient(to top, rgba(0,0,0,.5) 0%, transparent 100%); font-family:'JetBrains Mono',monospace; font-size:10px; letter-spacing:.1em; text-transform:uppercase; color:rgba(255,255,255,.8); } /* tape on first frame */ .page .cs-screen-frame:first-child::before{ content:''; position:absolute; top:-10px; left:35%; width:80px; height:24px; background:color-mix(in srgb, var(--rose) 65%, transparent); transform:rotate(-2deg); z-index:5; border-left:1px dashed rgba(0,0,0,.12); border-right:1px dashed rgba(0,0,0,.12); } .page .cs-screen-frame:nth-child(2)::before{ content:''; position:absolute; top:-10px; right:30%; width:70px; height:24px; background:color-mix(in srgb, var(--olive) 55%, transparent); transform:rotate(3deg); z-index:5; border-left:1px dashed rgba(0,0,0,.12); border-right:1px dashed rgba(0,0,0,.12); } /* ---- PAPER TEAR DIVIDER ---- */ .page .cs-tear{ height:48px; width:100%; margin:-1px 0; position:relative; overflow:hidden; } .page .cs-tear svg{ width:100%; height:100%; display:block; } @media (max-width:900px){ .page .cs-hero{ padding:32px 24px 56px; } .page .cs-hero .meta{ grid-template-columns:1fr 1fr; gap:20px; } .page .cs-shot{ padding:0 24px 56px; } .page .cs-body{ grid-template-columns:1fr; gap:24px; padding:56px 24px; } .page .cs-band{ padding:72px 24px; } .page .cs-band h3{ font-size:clamp(38px,11vw,60px); } .page .cs-band .grid{ grid-template-columns:1fr; } .page .cs-screens{ grid-template-columns:1fr; } .page .cs-quote{ padding:72px 24px; } .page .cs-quote q{ font-size:32px; } .page .cs-nav{ grid-template-columns:1fr; padding:56px 24px; } .page .cs-nav a.next{ text-align:left; } } `; // Screen labels per project slot const SCREEN_LABELS = { beautygrass: ['Homepage', 'Product page', 'Mobile view'], paynewestwood: ['Homepage', 'Contact/CTA', 'Industries'], sixtychapel: ['Homepage', 'Gallery', 'Contact form'], urbanworld: ['Homepage', 'Call to submit', 'Responsive'], urbanatlantic: ['Homepage', 'Projects', 'Impact metrics'], dispersive: ['Homepage', 'Architecture', 'Testimonials'], digitalspark: ['Portfolio hero', 'Gallery', 'Inquiry form'], teachplaylearn: ['Homepage', 'Services', 'How it works'], wearesantamonica: ['Homelessness', 'Services', 'Community'], greenandred: ['Vineyards', 'Wine shop', 'Club'], leolawellness: ['Homepage', 'Coaching', 'Courses'], oldsuffolkpunch:['Venue hero', 'Events/hire', 'Reservations'], 'creative-breed':['Work index', 'Case study', 'About'], ember: ['Collection', 'Product detail', 'Mobile cart'], edupreneurs: ['Homepage', 'Members area', 'Pricing'], powerofyou: ['Homepage', 'Booking flow', 'Process'], lacausa: ['Lookbook', 'Shop grid', 'Product'], parkcounty: ['Homepage', 'Itinerary', 'Events'], }; // Palette per project for placeholder screens const SCREEN_COLORS = { beautygrass: ['#f0ede5','#d4c9b8','#8a9a7a'], paynewestwood: ['#2a4a4a','#d9a8a8','#f5f2f0'], sixtychapel: ['#f5f0e8','#c9a876','#5a5a5a'], urbanworld: ['#1a3a4a','#4a9bb8','#f5f0e8'], urbanatlantic: ['#1a3a5a','#c8a882','#f5f0e8'], dispersive: ['#0a1a3a','#22dd88','#f0f0f0'], digitalspark: ['#f5f5f5','#2d5a4a','#1a1a1a'], teachplaylearn: ['#d4c5b8','#4a8fc8','#f4a95a'], wearesantamonica: ['#0052a3','#00a3e0','#f5f0e8'], greenandred: ['#4a3728','#8b7355','#f5f0e0'], leolawellness: ['#d4c5b8','#7ec8b8','#f5f0e8'], oldsuffolkpunch:['#4a3a2a','#8b6f47','#f5f0e8'], 'creative-breed':['#1a1a1a','#e8e5de','#c4bfb0'], ember: ['#f5ede0','#d4956a','#3a2820'], edupreneurs: ['#2d4a3e','#e8d5a0','#f7f3ea'], powerofyou: ['#4a7c7e','#d9a574','#f5f2ec'], lacausa: ['#e8e4dc','#c8a882','#2a2a2a'], parkcounty: ['#2d4a2d','#8fb87a','#f0ede0'], }; const SCREENSHOT_IMAGES = { beautygrass: [ 'img/beautygrass-skincare-ritual-hero-section.jpg', 'img/beautygrass-collagen-face-mist-product-page.jpg', 'img/beautygrass-vibrantboost-face-mist-ingredients-breakdown.jpg', ], paynewestwood: [ 'img/paynewestwood-marketing-strategy-homepage-hero.jpg', 'img/paynewestwood-contact-connect-consultation.jpg', 'img/paynewestwood-industry-expertise-services.jpg', ], sixtychapel: [ 'img/sixtychapel-wedding-venue-website-hero.jpg', 'img/sixtychapel-events-gallery-showcase.jpg', 'img/sixtychapel-contact-booking-form.jpg', ], urbanworld: [ 'img/urbanworld-architecture-festival-homepage.jpg', 'img/urbanworld-call-for-submissions-laptop-display.jpg', 'img/urbanworld-responsive-design-tablet-mobile.jpg', ], urbanatlantic: [ 'img/urbanatlantic-real-estate-development-homepage.jpg', ], dispersive: [ 'img/dispersive-networks-ultra-secure-homepage.jpg', 'img/dispersive-networks-responsive-design-tablet.jpg', 'img/dispersive-networks-virtual-networking-solution.jpg', ], digitalspark: [ 'img/digitalspark-weddings-photography-homepage.jpg', 'img/digitalspark-weddings-responsive-mobile-tablet.jpg', ], teachplaylearn: [ 'img/teachplaylearn-educational-platform-homepage.jpg', 'img/teachplaylearn-about-us-story-page.jpg', 'img/teachplaylearn-kindies-product-page.jpg', ], wearesantamonica: [ 'img/wearesantamonica-addressing-homelessness-initiative.jpg', 'img/wearesantamonica-programs-services-resources.jpg', 'img/wearesantamonica-community-stories-impact.jpg', ], greenandred: [ 'img/greenandred-vineyard-wine-homepage.jpg', 'img/greenandred-winery-featured-wines.jpg', 'img/greenandred-wine-tasting-room.jpg', ], leolawellness: [ 'img/leolawellness-coaching-homepage-hero.jpg', 'img/leolawellness-responsive-mobile-tablet.jpg', 'img/leolawellness-wellness-services-overview.jpg', ], oldsuffolkpunch: [ 'img/oldsuffolkpunch-pub-restaurant-homepage.jpg', 'img/oldsuffolkpunch-responsive-menu-booking.jpg', 'img/oldsuffolkpunch-venue-events-details.jpg', ], 'creative-breed': [ 'img/creative-breed-empathy-storytelling-blog.jpg', 'img/creative-breed-documentary-portfolio-showcase.jpg', 'img/creative-breed-campaign-documentary-hero.jpg', ], ember: [ 'img/ember-and-beam-coconut-wax-candle-collection.jpg', 'img/ember-and-beam-scented-candle-product-page.jpg', 'img/ember-and-beam-home-fragrance-lifestyle.jpg', ], edupreneurs: [ 'img/edupreneurs-entrepreneur-network-homepage.jpg', 'img/edupreneurs-course-creator-community.jpg', 'img/edupreneurs-membership-platform-interface.jpg', ], powerofyou: [ 'img/powerofyou-life-coaching-hero.jpg', 'img/powerofyou-booking-clarity-call.jpg', 'img/powerofyou-process-framework.jpg', ], lacausa: [ 'img/lacausa-sustainable-apparel-lookbook.jpg', 'img/lacausa-organic-fashion-collection-grid.jpg', 'img/lacausa-sustainable-clothing-product-page.jpg', ], parkcounty: [ 'img/exploreparkcounty-tourism-homepage-hero.jpg', 'img/exploreparkcounty-park-location-map.jpg', 'img/exploreparkcounty-fishing-activities-guide.jpg', ], }; function BrowserFrame({ label, projId, slot }) { const labels = SCREEN_LABELS[projId] || ['Screen 1','Screen 2','Screen 3']; const colors = SCREEN_COLORS[projId] || ['#f0ede5','#d4c9b8','#8a9a7a']; const [bg, accent, dark] = colors; const slotLabel = labels[slot] || `View ${slot+1}`; const proj = PROJECTS.find(p => p.id === projId); const urlSlug = proj ? proj.name.toLowerCase().replace(/[^a-z0-9]/g,'-').replace(/-+/g,'-') : projId; const screenshotSrc = SCREENSHOT_IMAGES[projId]?.[slot]; // Don't render empty frames — hide slots with no screenshot if (!screenshotSrc) return null; return (
That case study isn't here. Browse the full archive instead.
← All work{d.lede}
↑ Replace these with real screenshots by updating the img src on each .cs-screen-frame
{d.quote.q}
A 30-minute intro call, no pitch deck. We'll figure out if we're a fit and what it'll take.
Get in touch ↗