{"id":310,"date":"2026-07-08T05:57:29","date_gmt":"2026-07-08T05:57:29","guid":{"rendered":"https:\/\/cafemadhuram.us.cc\/?page_id=310"},"modified":"2026-07-08T06:00:59","modified_gmt":"2026-07-08T06:00:59","slug":"bluorng","status":"publish","type":"page","link":"https:\/\/cafemadhuram.us.cc\/?page_id=310","title":{"rendered":"Bluorng"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"310\" class=\"elementor elementor-310\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0dfb7c9 e-con e-atomic-element e-flexbox-base e-c82e800 \" data-id=\"0dfb7c9\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"0dfb7c9\">\n    \t\t<div class=\"elementor-element elementor-element-276d253 elementor-widget elementor-widget-html\" data-id=\"276d253\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<!-- ============================================================\n     GREYFRAME \u2014 Digital Product Studio\n     Single-file production build. Original design & copy.\n     Palette: grey\/white \"blueprint\" system. See <style> for tokens.\n============================================================ -->\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, viewport-fit=cover\">\n\n<!-- ================= SEO: Title & Meta ================= -->\n<title>Greyframe \u2014 Digital Product Studio | Design &amp; Engineering<\/title>\n<meta name=\"description\" content=\"Greyframe is a digital product studio that designs, engineers, and ships web platforms, apps, and brand systems for ambitious teams. Strategy through launch, under one roof.\">\n<meta name=\"keywords\" content=\"product studio, UI UX design, web development agency, brand systems, digital design studio, product engineering\">\n<meta name=\"author\" content=\"Greyframe Studio\">\n<meta name=\"robots\" content=\"index, follow\">\n<link rel=\"canonical\" href=\"https:\/\/www.example-greyframe.com\/\">\n\n<!-- ================= Open Graph ================= -->\n<meta property=\"og:type\" content=\"website\">\n<meta property=\"og:site_name\" content=\"Greyframe\">\n<meta property=\"og:title\" content=\"Greyframe \u2014 Digital Product Studio\">\n<meta property=\"og:description\" content=\"We design, engineer, and ship digital products \u2014 from first sketch to production launch.\">\n<meta property=\"og:url\" content=\"https:\/\/www.example-greyframe.com\/\">\n<meta property=\"og:image\" content=\"https:\/\/www.example-greyframe.com\/og-image.jpg\">\n<meta property=\"og:locale\" content=\"en_US\">\n\n<!-- ================= Twitter Card ================= -->\n<meta name=\"twitter:card\" content=\"summary_large_image\">\n<meta name=\"twitter:title\" content=\"Greyframe \u2014 Digital Product Studio\">\n<meta name=\"twitter:description\" content=\"We design, engineer, and ship digital products \u2014 from first sketch to production launch.\">\n<meta name=\"twitter:image\" content=\"https:\/\/www.example-greyframe.com\/og-image.jpg\">\n\n<!-- ================= Favicon (inline SVG, no external asset) ================= -->\n<link rel=\"icon\" href=\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 32 32'%3E%3Crect width='32' height='32' rx='6' fill='%23222'\/%3E%3Cpath d='M8 22V10h9M8 16h7' stroke='%23fff' stroke-width='2.4' fill='none'\/%3E%3C\/svg%3E\">\n\n<!-- ================= Structured Data: LocalBusiness \/ ProfessionalService ================= -->\n<script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"ProfessionalService\",\n  \"name\": \"Greyframe\",\n  \"image\": \"https:\/\/www.example-greyframe.com\/og-image.jpg\",\n  \"url\": \"https:\/\/www.example-greyframe.com\/\",\n  \"telephone\": \"+1-555-010-2040\",\n  \"priceRange\": \"$$$\",\n  \"address\": {\n    \"@type\": \"PostalAddress\",\n    \"streetAddress\": \"140 Grid Street, Suite 4B\",\n    \"addressLocality\": \"Portland\",\n    \"addressRegion\": \"OR\",\n    \"postalCode\": \"97205\",\n    \"addressCountry\": \"US\"\n  },\n  \"sameAs\": [\n    \"https:\/\/www.linkedin.com\/company\/greyframe\",\n    \"https:\/\/twitter.com\/greyframe\",\n    \"https:\/\/www.instagram.com\/greyframe\",\n    \"https:\/\/dribbble.com\/greyframe\"\n  ],\n  \"description\": \"Greyframe is a digital product studio offering UX\/UI design, web and app engineering, and brand systems for growth-stage companies.\",\n  \"areaServed\": \"Worldwide\",\n  \"founder\": {\n    \"@type\": \"Person\",\n    \"name\": \"Mara Solberg\"\n  }\n}\n<\/script>\n\n<!-- ================= Fonts (CDN \u2014 necessary for typography system) ================= -->\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Space+Grotesk:wght@400;500;600;700&family=Inter:wght@400;500;600&family=JetBrains+Mono:wght@400;500&display=swap\" rel=\"stylesheet\">\n\n<style>\n\/* ================================================================\n   TOKENS \u2014 Grey \/ White \"Blueprint\" design system\n================================================================ *\/\n:root{\n  \/* Light theme (default) *\/\n  --c-bg:#F6F6F7;\n  --c-surface:#FFFFFF;\n  --c-surface-2:#EFEFF1;\n  --c-line:#E1E1E4;\n  --c-line-strong:#CBCBD0;\n  --c-ink:#17171A;\n  --c-ink-soft:#57575E;\n  --c-ink-faint:#8B8B92;\n  --c-accent:#232326;\n  --c-accent-contrast:#FFFFFF;\n  --c-focus:#3B82F6;\n\n  --shadow-sm: 0 1px 2px rgba(20,20,22,.05), 0 1px 1px rgba(20,20,22,.04);\n  --shadow-md: 0 8px 24px rgba(20,20,22,.08);\n  --shadow-lg: 0 20px 48px rgba(20,20,22,.12);\n\n  --font-display:'Space Grotesk', 'Segoe UI', sans-serif;\n  --font-body:'Inter', 'Segoe UI', sans-serif;\n  --font-mono:'JetBrains Mono', monospace;\n\n  --radius-sm: 8px;\n  --radius-md: 14px;\n  --radius-lg: 24px;\n\n  --space-1: .5rem;\n  --space-2: 1rem;\n  --space-3: 1.5rem;\n  --space-4: 2.5rem;\n  --space-5: 4rem;\n  --space-6: 6rem;\n\n  --container: 1200px;\n  --nav-h: 76px;\n  --ease: cubic-bezier(.22,.61,.36,1);\n}\n\n[data-theme=\"dark\"]{\n  --c-bg:#0F0F11;\n  --c-surface:#17171A;\n  --c-surface-2:#1D1D21;\n  --c-line:#2A2A2F;\n  --c-line-strong:#38383E;\n  --c-ink:#F2F2F3;\n  --c-ink-soft:#B7B7BD;\n  --c-ink-faint:#7C7C84;\n  --c-accent:#F2F2F3;\n  --c-accent-contrast:#111113;\n  --shadow-sm: 0 1px 2px rgba(0,0,0,.35);\n  --shadow-md: 0 8px 24px rgba(0,0,0,.45);\n  --shadow-lg: 0 24px 60px rgba(0,0,0,.55);\n}\n\n\/* ================================================================\n   RESET\n================================================================ *\/\n*,*::before,*::after{ box-sizing:border-box; margin:0; padding:0; }\nhtml{\n  scroll-behavior:smooth;\n  -webkit-text-size-adjust:100%;\n}\n@media (prefers-reduced-motion: reduce){\n  html{ scroll-behavior:auto; }\n  *,*::before,*::after{\n    animation-duration:.01ms !important;\n    animation-iteration-count:1 !important;\n    transition-duration:.01ms !important;\n    scroll-behavior:auto !important;\n  }\n}\nbody{\n  font-family:var(--font-body);\n  background:var(--c-bg);\n  color:var(--c-ink);\n  line-height:1.6;\n  -webkit-font-smoothing:antialiased;\n  overflow-x:hidden;\n  transition:background .35s var(--ease), color .35s var(--ease);\n}\nimg{ max-width:100%; display:block; }\na{ color:inherit; text-decoration:none; }\nul{ list-style:none; }\nbutton{ font:inherit; cursor:pointer; background:none; border:none; color:inherit; }\ninput, textarea, select{ font:inherit; color:inherit; }\n\n\/* Visible focus states for accessibility *\/\na:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible, summary:focus-visible{\n  outline: 2px solid var(--c-focus);\n  outline-offset: 3px;\n  border-radius: 4px;\n}\n\n.skip-link{\n  position:absolute; left:-999px; top:auto;\n  background:var(--c-accent); color:var(--c-accent-contrast);\n  padding:.8rem 1.2rem; z-index:999; border-radius:0 0 8px 0;\n}\n.skip-link:focus{ left:0; top:0; }\n\n\/* ================================================================\n   LAYOUT HELPERS\n================================================================ *\/\n.container{\n  width:100%;\n  max-width:var(--container);\n  margin-inline:auto;\n  padding-inline:clamp(1.25rem, 4vw, 2.5rem);\n}\n.section{ padding-block: var(--space-6); position:relative; }\n.section--tight{ padding-block: var(--space-5); }\n.section-head{\n  max-width:640px;\n  margin-bottom: var(--space-4);\n}\n.eyebrow{\n  display:inline-flex; align-items:center; gap:.5rem;\n  font-family:var(--font-mono);\n  font-size:.75rem;\n  letter-spacing:.12em;\n  text-transform:uppercase;\n  color:var(--c-ink-faint);\n  margin-bottom:1rem;\n}\n.eyebrow::before{\n  content:\"\";\n  width:8px; height:8px;\n  border:1.5px solid var(--c-ink-faint);\n  transform:rotate(45deg);\n  flex-shrink:0;\n}\nh1,h2,h3,h4{\n  font-family:var(--font-display);\n  font-weight:600;\n  line-height:1.12;\n  letter-spacing:-.01em;\n  color:var(--c-ink);\n}\nh1{ font-size:clamp(2.4rem, 6vw, 4.6rem); font-weight:700; }\nh2{ font-size:clamp(1.9rem, 4.2vw, 3rem); }\nh3{ font-size:clamp(1.2rem, 2.2vw, 1.5rem); }\nh4{ font-size:1.05rem; }\np{ color:var(--c-ink-soft); }\n.lead{ font-size:clamp(1.05rem,1.6vw,1.25rem); color:var(--c-ink-soft); max-width:56ch; }\n\n.btn{\n  display:inline-flex; align-items:center; justify-content:center; gap:.6rem;\n  padding:.9rem 1.6rem;\n  border-radius:100px;\n  font-weight:600; font-size:.95rem;\n  transition: transform .3s var(--ease), box-shadow .3s var(--ease), background .3s var(--ease), color .3s var(--ease);\n  white-space:nowrap;\n  border:1px solid transparent;\n}\n.btn--primary{\n  background:var(--c-accent); color:var(--c-accent-contrast);\n  box-shadow: var(--shadow-sm);\n}\n.btn--primary:hover{ transform:translateY(-2px); box-shadow:var(--shadow-md); }\n.btn--ghost{\n  background:transparent; color:var(--c-ink); border-color:var(--c-line-strong);\n}\n.btn--ghost:hover{ border-color:var(--c-ink); background:var(--c-surface-2); }\n.btn svg{ width:16px; height:16px; transition:transform .3s var(--ease); }\n.btn:hover svg{ transform:translateX(3px); }\n\n.card{\n  background:var(--c-surface);\n  border:1px solid var(--c-line);\n  border-radius:var(--radius-md);\n  transition: transform .35s var(--ease), box-shadow .35s var(--ease), border-color .35s var(--ease);\n}\n.card:hover{ transform:translateY(-4px); box-shadow:var(--shadow-md); border-color:var(--c-line-strong); }\n\n.grid-lines-bg{\n  background-image:\n    linear-gradient(var(--c-line) 1px, transparent 1px),\n    linear-gradient(90deg, var(--c-line) 1px, transparent 1px);\n  background-size: 48px 48px;\n  background-position: center top;\n}\n\n\/* Corner-bracket \"blueprint\" motif \u2014 the site's signature element *\/\n.crosshair{\n  position:relative;\n}\n.crosshair::before, .crosshair::after{\n  content:\"\";\n  position:absolute; width:14px; height:14px;\n  border-top:1.5px solid var(--c-line-strong);\n  border-left:1.5px solid var(--c-line-strong);\n  top:-1px; left:-1px;\n}\n.crosshair::after{\n  top:auto; left:auto; bottom:-1px; right:-1px;\n  border-top:none; border-left:none;\n  border-bottom:1.5px solid var(--c-line-strong);\n  border-right:1.5px solid var(--c-line-strong);\n}\n.coord-label{\n  font-family:var(--font-mono);\n  font-size:.7rem;\n  letter-spacing:.05em;\n  color:var(--c-ink-faint);\n}\n\n\/* Scroll-reveal utility *\/\n.reveal{\n  opacity:0; transform:translateY(24px);\n  transition: opacity .7s var(--ease), transform .7s var(--ease);\n}\n.reveal.is-visible{ opacity:1; transform:none; }\n.reveal-stagger > *{ transition-delay: calc(var(--i, 0) * 80ms); }\n\n.visually-hidden{\n  position:absolute !important; width:1px; height:1px; overflow:hidden;\n  clip:rect(0 0 0 0); white-space:nowrap; border:0; padding:0; margin:-1px;\n}\n\n\/* ================================================================\n   NAVIGATION\n================================================================ *\/\n.nav{\n  position:fixed; inset-inline:0; top:0; z-index:500;\n  height:var(--nav-h);\n  display:flex; align-items:center;\n  background:color-mix(in srgb, var(--c-bg) 78%, transparent);\n  backdrop-filter:blur(14px) saturate(140%);\n  -webkit-backdrop-filter:blur(14px) saturate(140%);\n  border-bottom:1px solid transparent;\n  transition:border-color .35s var(--ease), background .35s var(--ease);\n}\n.nav.is-scrolled{ border-bottom-color:var(--c-line); }\n.nav__inner{\n  width:100%; max-width:var(--container); margin-inline:auto;\n  padding-inline:clamp(1.25rem, 4vw, 2.5rem);\n  display:flex; align-items:center; justify-content:space-between; gap:1rem;\n}\n.brand{\n  display:flex; align-items:center; gap:.6rem;\n  font-family:var(--font-display); font-weight:700; font-size:1.15rem;\n  letter-spacing:-.01em;\n}\n.brand__mark{\n  width:30px; height:30px; border-radius:8px;\n  background:var(--c-accent); color:var(--c-accent-contrast);\n  display:flex; align-items:center; justify-content:center;\n  font-family:var(--font-mono); font-size:.8rem; font-weight:500;\n  flex-shrink:0;\n}\n.nav__links{\n  display:flex; align-items:center; gap:2rem;\n}\n.nav__links a{\n  font-size:.92rem; font-weight:500; color:var(--c-ink-soft);\n  position:relative; padding-block:.4rem;\n  transition:color .25s var(--ease);\n}\n.nav__links a::after{\n  content:\"\"; position:absolute; left:0; right:100%; bottom:0; height:1.5px;\n  background:var(--c-ink); transition:right .3s var(--ease);\n}\n.nav__links a:hover, .nav__links a.is-active{ color:var(--c-ink); }\n.nav__links a:hover::after, .nav__links a.is-active::after{ right:0; }\n\n.nav__actions{ display:flex; align-items:center; gap:.75rem; }\n\n.theme-toggle{\n  width:40px; height:40px; border-radius:50%;\n  display:flex; align-items:center; justify-content:center;\n  border:1px solid var(--c-line-strong);\n  transition:background .25s var(--ease), transform .25s var(--ease);\n}\n.theme-toggle:hover{ background:var(--c-surface-2); transform:rotate(20deg); }\n.theme-toggle svg{ width:18px; height:18px; }\n.theme-toggle .icon-moon{ display:none; }\n[data-theme=\"dark\"] .theme-toggle .icon-sun{ display:none; }\n[data-theme=\"dark\"] .theme-toggle .icon-moon{ display:block; }\n\n.hamburger{\n  display:none;\n  width:40px; height:40px;\n  border:1px solid var(--c-line-strong); border-radius:8px;\n  align-items:center; justify-content:center;\n  flex-direction:column; gap:4px;\n}\n.hamburger span{\n  width:18px; height:1.5px; background:var(--c-ink); display:block;\n  transition:transform .3s var(--ease), opacity .3s var(--ease);\n}\n.hamburger[aria-expanded=\"true\"] span:nth-child(1){ transform:translateY(5.5px) rotate(45deg); }\n.hamburger[aria-expanded=\"true\"] span:nth-child(2){ opacity:0; }\n.hamburger[aria-expanded=\"true\"] span:nth-child(3){ transform:translateY(-5.5px) rotate(-45deg); }\n\n.mobile-menu{\n  position:fixed; inset:var(--nav-h) 0 0 0; z-index:490;\n  background:var(--c-bg);\n  padding:2rem clamp(1.25rem,4vw,2.5rem);\n  display:flex; flex-direction:column; gap:.25rem;\n  transform:translateY(-8px); opacity:0; visibility:hidden;\n  transition:opacity .3s var(--ease), transform .3s var(--ease), visibility 0s .3s;\n}\n.mobile-menu.is-open{\n  transform:translateY(0); opacity:1; visibility:visible;\n  transition:opacity .3s var(--ease), transform .3s var(--ease);\n}\n.mobile-menu a{\n  padding:1rem 0; font-family:var(--font-display); font-size:1.5rem; font-weight:600;\n  border-bottom:1px solid var(--c-line);\n}\n.mobile-menu .btn{ margin-top:1.5rem; align-self:flex-start; }\n\n\/* ================================================================\n   HERO\n================================================================ *\/\n.hero{\n  padding-top:calc(var(--nav-h) + 4.5rem);\n  padding-bottom:5rem;\n  position:relative;\n  overflow:hidden;\n}\n.hero__grid{\n  position:absolute; inset:0;\n  background-image:\n    linear-gradient(var(--c-line) 1px, transparent 1px),\n    linear-gradient(90deg, var(--c-line) 1px, transparent 1px);\n  background-size: 64px 64px;\n  mask-image: radial-gradient(ellipse 80% 60% at 50% 20%, black 40%, transparent 90%);\n  -webkit-mask-image: radial-gradient(ellipse 80% 60% at 50% 20%, black 40%, transparent 90%);\n  pointer-events:none;\n}\n.hero__inner{ position:relative; z-index:2; }\n.hero__top{\n  display:flex; justify-content:space-between; align-items:flex-start;\n  gap:2rem; margin-bottom:2.5rem;\n}\n.hero__coords{ display:none; }\n@media(min-width:860px){ .hero__coords{ display:block; text-align:right; } }\n\n.hero h1{ max-width:16ch; }\n.hero h1 .accent-underline{\n  position:relative; display:inline-block;\n}\n.hero h1 .accent-underline svg{\n  position:absolute; left:0; bottom:-.08em; width:100%; height:.3em;\n  overflow:visible;\n}\n.hero h1 .accent-underline path{\n  stroke:var(--c-ink); stroke-width:3; fill:none;\n  stroke-dasharray: 340; stroke-dashoffset:340;\n  animation: draw-line 1.2s var(--ease) .5s forwards;\n}\n@keyframes draw-line{ to{ stroke-dashoffset:0; } }\n\n.hero__row{\n  display:grid; grid-template-columns: 1.3fr .7fr; gap:3rem;\n  align-items:end;\n  margin-top:2rem;\n}\n@media(max-width:860px){ .hero__row{ grid-template-columns:1fr; gap:2rem; } }\n\n.hero__actions{ display:flex; gap:1rem; flex-wrap:wrap; margin-top:2rem; }\n\n.hero__stats{\n  display:grid; grid-template-columns:repeat(3,1fr);\n  border-top:1px solid var(--c-line);\n  margin-top:4rem; padding-top:2rem;\n}\n.hero__stats div{ padding-inline:1.5rem; border-left:1px solid var(--c-line); }\n.hero__stats div:first-child{ border-left:none; padding-left:0; }\n.stat-num{\n  font-family:var(--font-display); font-size:clamp(1.8rem,4vw,2.6rem); font-weight:700;\n  display:flex; align-items:baseline; gap:.15rem;\n}\n.stat-label{ font-size:.85rem; color:var(--c-ink-faint); margin-top:.35rem; }\n\n\/* ================================================================\n   MARQUEE (client strip)\n================================================================ *\/\n.marquee{\n  border-block:1px solid var(--c-line);\n  overflow:hidden;\n  padding-block:1.75rem;\n  background:var(--c-surface);\n}\n.marquee__track{\n  display:flex; gap:4rem; width:max-content;\n  animation: scroll-x 32s linear infinite;\n}\n@keyframes scroll-x{ from{ transform:translateX(0); } to{ transform:translateX(-50%); } }\n.marquee__track span{\n  font-family:var(--font-mono); font-size:1rem; color:var(--c-ink-faint);\n  letter-spacing:.04em; white-space:nowrap;\n}\n.marquee:hover .marquee__track{ animation-play-state:paused; }\n\n\/* ================================================================\n   ABOUT\n================================================================ *\/\n.about__wrap{\n  display:grid; grid-template-columns: 1fr 1fr; gap:4rem; align-items:center;\n}\n@media(max-width:900px){ .about__wrap{ grid-template-columns:1fr; gap:2.5rem; } }\n.about__panel{\n  aspect-ratio:4\/3.2; border-radius:var(--radius-lg);\n  background:\n    repeating-linear-gradient(135deg, var(--c-surface-2) 0 2px, transparent 2px 14px),\n    var(--c-surface);\n  border:1px solid var(--c-line);\n  position:relative; overflow:hidden;\n}\n.about__panel .coord-label{ position:absolute; top:1.25rem; left:1.25rem; }\n.about__panel .coord-label + .coord-label{ top:auto; bottom:1.25rem; right:1.25rem; left:auto; }\n.about__panel-figure{\n  position:absolute; inset:0; display:flex; align-items:center; justify-content:center;\n}\n.about__panel-figure svg{ width:58%; height:58%; opacity:.9; }\n.about__list{ margin-top:2rem; display:flex; flex-direction:column; gap:1.1rem; }\n.about__list li{\n  display:flex; gap:.9rem; align-items:flex-start; color:var(--c-ink-soft); font-size:.98rem;\n}\n.about__list svg{ width:20px; height:20px; flex-shrink:0; margin-top:.15rem; color:var(--c-ink); }\n\n\/* ================================================================\n   SERVICES\n================================================================ *\/\n.services__grid{\n  display:grid; grid-template-columns:repeat(3,1fr); gap:1.5rem;\n}\n@media(max-width:940px){ .services__grid{ grid-template-columns:repeat(2,1fr); } }\n@media(max-width:640px){ .services__grid{ grid-template-columns:1fr; } }\n.service-card{ padding:2rem; display:flex; flex-direction:column; gap:1.2rem; }\n.service-card__icon{\n  width:52px; height:52px; border-radius:12px;\n  display:flex; align-items:center; justify-content:center;\n  background:var(--c-surface-2); border:1px solid var(--c-line);\n  transition:background .3s var(--ease), transform .3s var(--ease);\n}\n.service-card:hover .service-card__icon{ background:var(--c-accent); color:var(--c-accent-contrast); transform:scale(1.06); }\n.service-card__icon svg{ width:24px; height:24px; }\n.service-card__num{ font-family:var(--font-mono); font-size:.75rem; color:var(--c-ink-faint); }\n.service-card__tags{ display:flex; flex-wrap:wrap; gap:.5rem; margin-top:.4rem; }\n.tag{\n  font-family:var(--font-mono); font-size:.7rem; padding:.3rem .6rem;\n  border:1px solid var(--c-line); border-radius:100px; color:var(--c-ink-faint);\n}\n\n\/* ================================================================\n   PORTFOLIO\n================================================================ *\/\n.filter-bar{ display:flex; flex-wrap:wrap; gap:.6rem; margin-bottom:2.5rem; }\n.filter-btn{\n  padding:.6rem 1.2rem; border:1px solid var(--c-line-strong); border-radius:100px;\n  font-size:.85rem; font-weight:500; color:var(--c-ink-soft);\n  transition:all .25s var(--ease);\n}\n.filter-btn:hover{ border-color:var(--c-ink); color:var(--c-ink); }\n.filter-btn[aria-pressed=\"true\"]{ background:var(--c-accent); color:var(--c-accent-contrast); border-color:var(--c-accent); }\n\n.portfolio__grid{\n  display:grid; grid-template-columns:repeat(2,1fr); gap:1.5rem;\n}\n@media(max-width:760px){ .portfolio__grid{ grid-template-columns:1fr; } }\n.project-card{ overflow:hidden; }\n.project-card.is-hidden{ display:none; }\n.project-card__media{\n  aspect-ratio:16\/10.5; position:relative; overflow:hidden;\n  background:linear-gradient(150deg, var(--c-surface-2), var(--c-bg));\n  border-bottom:1px solid var(--c-line);\n}\n.project-card__media svg{\n  position:absolute; inset:0; width:100%; height:100%;\n  transition:transform .6s var(--ease);\n}\n.project-card:hover .project-card__media svg{ transform:scale(1.06); }\n.project-card__body{ padding:1.5rem; display:flex; justify-content:space-between; gap:1rem; align-items:flex-start; }\n.project-card__meta{ font-family:var(--font-mono); font-size:.72rem; color:var(--c-ink-faint); margin-bottom:.4rem; letter-spacing:.04em; text-transform:uppercase; }\n.project-card__arrow{\n  width:38px; height:38px; border-radius:50%; border:1px solid var(--c-line-strong);\n  display:flex; align-items:center; justify-content:center; flex-shrink:0;\n  transition:background .3s var(--ease), transform .3s var(--ease);\n}\n.project-card:hover .project-card__arrow{ background:var(--c-accent); color:var(--c-accent-contrast); transform:rotate(45deg); }\n.project-card__arrow svg{ width:16px; height:16px; }\n\n\/* ================================================================\n   PROCESS\n================================================================ *\/\n.process__list{ display:flex; flex-direction:column; }\n.process__item{\n  display:grid; grid-template-columns:100px 1fr; gap:2rem;\n  padding-block:2.4rem; border-top:1px solid var(--c-line);\n}\n.process__item:last-child{ border-bottom:1px solid var(--c-line); }\n@media(max-width:640px){ .process__item{ grid-template-columns:56px 1fr; gap:1.2rem; } }\n.process__index{ font-family:var(--font-mono); font-size:1.4rem; color:var(--c-ink-faint); }\n.process__content h3{ margin-bottom:.6rem; }\n.process__content p{ max-width:60ch; }\n.process__phase{\n  font-family:var(--font-mono); font-size:.7rem; text-transform:uppercase; letter-spacing:.08em;\n  color:var(--c-ink-faint); margin-top:.9rem; display:block;\n}\n\n\/* ================================================================\n   TESTIMONIALS\n================================================================ *\/\n.testimonial-track{\n  display:grid; grid-template-columns:repeat(3,1fr); gap:1.5rem;\n}\n@media(max-width:940px){ .testimonial-track{ grid-template-columns:1fr 1fr; } }\n@media(max-width:640px){ .testimonial-track{ grid-template-columns:1fr; } }\n.testimonial-card{ padding:2rem; display:flex; flex-direction:column; gap:1.5rem; }\n.testimonial-card svg.quote-mark{ width:28px; height:28px; color:var(--c-line-strong); }\n.testimonial-card p{ color:var(--c-ink); font-size:1.02rem; }\n.testimonial-person{ display:flex; align-items:center; gap:.8rem; margin-top:auto; }\n.avatar{\n  width:44px; height:44px; border-radius:50%;\n  background:var(--c-surface-2); border:1px solid var(--c-line);\n  display:flex; align-items:center; justify-content:center;\n  font-family:var(--font-display); font-weight:600; font-size:.85rem;\n}\n.testimonial-person span{ display:block; font-size:.85rem; color:var(--c-ink-faint); }\n.testimonial-person strong{ font-size:.92rem; }\n\n\/* ================================================================\n   TEAM\n================================================================ *\/\n.team__grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:1.5rem; }\n@media(max-width:940px){ .team__grid{ grid-template-columns:repeat(2,1fr); } }\n@media(max-width:520px){ .team__grid{ grid-template-columns:1fr; } }\n.team-card{ overflow:hidden; }\n.team-card__photo{\n  aspect-ratio:1\/1.05; background:var(--c-surface-2);\n  display:flex; align-items:center; justify-content:center;\n  border-bottom:1px solid var(--c-line);\n  position:relative;\n}\n.team-card__photo svg{ width:46%; color:var(--c-line-strong); }\n.team-card__body{ padding:1.25rem; }\n.team-card__body span{ display:block; font-size:.82rem; color:var(--c-ink-faint); margin-top:.2rem; }\n.team-card__social{ display:flex; gap:.5rem; margin-top:.9rem; }\n.team-card__social a{\n  width:30px; height:30px; border-radius:50%; border:1px solid var(--c-line);\n  display:flex; align-items:center; justify-content:center;\n  transition:background .25s var(--ease), color .25s var(--ease);\n}\n.team-card__social a:hover{ background:var(--c-accent); color:var(--c-accent-contrast); }\n.team-card__social svg{ width:14px; height:14px; }\n\n\/* ================================================================\n   TECHNOLOGIES\n================================================================ *\/\n.tech__grid{ display:grid; grid-template-columns:repeat(6,1fr); gap:1px; background:var(--c-line); border:1px solid var(--c-line); border-radius:var(--radius-md); overflow:hidden; }\n@media(max-width:760px){ .tech__grid{ grid-template-columns:repeat(3,1fr); } }\n.tech-cell{\n  background:var(--c-surface); aspect-ratio:1.3\/1;\n  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:.6rem;\n  transition:background .25s var(--ease);\n  padding:1rem;\n}\n.tech-cell:hover{ background:var(--c-surface-2); }\n.tech-cell svg{ width:30px; height:30px; color:var(--c-ink-soft); }\n.tech-cell span{ font-size:.75rem; font-family:var(--font-mono); color:var(--c-ink-faint); text-align:center; }\n\n\/* ================================================================\n   FAQ\n================================================================ *\/\n.faq__list{ max-width:820px; }\n.faq-item{ border-top:1px solid var(--c-line); }\n.faq-item:last-child{ border-bottom:1px solid var(--c-line); }\n.faq-item summary{\n  list-style:none; display:flex; align-items:center; justify-content:space-between;\n  padding:1.6rem 0; cursor:pointer; font-family:var(--font-display); font-weight:600; font-size:1.05rem;\n  gap:1rem;\n}\n.faq-item summary::-webkit-details-marker{ display:none; }\n.faq-item .faq-icon{\n  width:28px; height:28px; border-radius:50%; border:1px solid var(--c-line-strong);\n  display:flex; align-items:center; justify-content:center; flex-shrink:0;\n  position:relative;\n}\n.faq-item .faq-icon::before, .faq-item .faq-icon::after{\n  content:\"\"; position:absolute; background:var(--c-ink);\n  transition:transform .3s var(--ease);\n}\n.faq-item .faq-icon::before{ width:10px; height:1.4px; }\n.faq-item .faq-icon::after{ width:1.4px; height:10px; }\n.faq-item[open] .faq-icon::after{ transform:rotate(90deg) scaleY(0); }\n.faq-item .faq-body{ padding-bottom:1.6rem; max-width:64ch; }\n.faq-item .faq-body p{ color:var(--c-ink-soft); }\n\n\/* ================================================================\n   BLOG\n================================================================ *\/\n.blog__grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:1.5rem; }\n@media(max-width:900px){ .blog__grid{ grid-template-columns:1fr; } }\n.blog-card{ overflow:hidden; display:flex; flex-direction:column; }\n.blog-card__media{ aspect-ratio:16\/10; background:var(--c-surface-2); border-bottom:1px solid var(--c-line); position:relative; overflow:hidden; }\n.blog-card__media svg{ position:absolute; inset:0; width:100%; height:100%; }\n.blog-card__body{ padding:1.5rem; display:flex; flex-direction:column; gap:.7rem; flex:1; }\n.blog-card__meta{ font-family:var(--font-mono); font-size:.72rem; color:var(--c-ink-faint); text-transform:uppercase; letter-spacing:.05em; }\n.blog-card__body h3{ font-size:1.1rem; }\n.blog-card__link{ margin-top:auto; font-size:.88rem; font-weight:600; display:inline-flex; align-items:center; gap:.4rem; }\n.blog-card__link svg{ width:14px; height:14px; transition:transform .3s var(--ease); }\n.blog-card:hover .blog-card__link svg{ transform:translateX(4px); }\n\n\/* ================================================================\n   CTA BAND\n================================================================ *\/\n.cta-band{\n  border-radius:var(--radius-lg);\n  background:var(--c-accent); color:var(--c-accent-contrast);\n  padding:clamp(2.5rem,6vw,4.5rem);\n  display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:2rem;\n  position:relative; overflow:hidden;\n}\n.cta-band::before{\n  content:\"\"; position:absolute; inset:0;\n  background-image:linear-gradient(rgba(255,255,255,.06) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.06) 1px, transparent 1px);\n  background-size:36px 36px;\n}\n.cta-band > *{ position:relative; z-index:1; }\n.cta-band h2{ color:var(--c-accent-contrast); max-width:16ch; }\n.cta-band p{ color:color-mix(in srgb, var(--c-accent-contrast) 70%, transparent); max-width:38ch; margin-top:.75rem; }\n.cta-band .btn--primary{ background:var(--c-accent-contrast); color:var(--c-accent); }\n.cta-band .btn--primary:hover{ transform:translateY(-2px) scale(1.02); }\n\n\/* ================================================================\n   CONTACT\n================================================================ *\/\n.contact__wrap{ display:grid; grid-template-columns:1fr 1fr; gap:3rem; }\n@media(max-width:900px){ .contact__wrap{ grid-template-columns:1fr; } }\n.contact-info__item{ display:flex; gap:1rem; padding-block:1.4rem; border-top:1px solid var(--c-line); }\n.contact-info__item:last-child{ border-bottom:1px solid var(--c-line); }\n.contact-info__item svg{ width:22px; height:22px; flex-shrink:0; margin-top:.15rem; }\n.contact-info__item strong{ display:block; font-size:.95rem; margin-bottom:.15rem; }\n.contact-info__item span, .contact-info__item a{ font-size:.9rem; color:var(--c-ink-soft); }\n\n.form-field{ margin-bottom:1.3rem; }\n.form-field label{ display:block; font-size:.85rem; font-weight:600; margin-bottom:.5rem; }\n.form-field input, .form-field textarea{\n  width:100%; padding:.9rem 1rem; border-radius:10px;\n  border:1px solid var(--c-line-strong); background:var(--c-surface); color:var(--c-ink);\n  transition:border-color .25s var(--ease), box-shadow .25s var(--ease);\n}\n.form-field input:focus, .form-field textarea:focus{\n  border-color:var(--c-ink); box-shadow:0 0 0 3px color-mix(in srgb, var(--c-ink) 10%, transparent); outline:none;\n}\n.form-field textarea{ min-height:130px; resize:vertical; }\n.form-field .error-msg{ display:none; color:#C0392B; font-size:.8rem; margin-top:.4rem; font-weight:500; }\n.form-field.has-error input, .form-field.has-error textarea{ border-color:#C0392B; }\n.form-field.has-error .error-msg{ display:block; }\n.form-status{\n  margin-top:1rem; padding:.9rem 1rem; border-radius:10px; font-size:.88rem; display:none;\n}\n.form-status.is-success{ display:block; background:#E7F5EC; color:#1E7A3E; }\n[data-theme=\"dark\"] .form-status.is-success{ background:#123021; color:#66D897; }\n\n\/* ================================================================\n   MAP PLACEHOLDER\n================================================================ *\/\n.map-block{\n  border-radius:var(--radius-lg); border:1px solid var(--c-line);\n  aspect-ratio:16\/6; position:relative; overflow:hidden;\n  background:\n    repeating-linear-gradient(0deg, var(--c-surface-2) 0 1px, transparent 1px 40px),\n    repeating-linear-gradient(90deg, var(--c-surface-2) 0 1px, transparent 1px 40px),\n    var(--c-surface);\n}\n.map-block .pin{\n  position:absolute; top:50%; left:50%; transform:translate(-50%,-100%);\n  display:flex; flex-direction:column; align-items:center;\n}\n.map-block .pin svg{ width:34px; height:34px; color:var(--c-ink); filter:drop-shadow(0 4px 8px rgba(0,0,0,.15)); }\n.map-block .pin-pulse{\n  width:12px; height:12px; border-radius:50%; background:var(--c-ink); opacity:.25;\n  animation:pulse 2.4s ease-out infinite; margin-top:-6px;\n}\n@keyframes pulse{ 0%{ transform:scale(.6); opacity:.5;} 100%{ transform:scale(3.2); opacity:0; } }\n.map-block__label{\n  position:absolute; bottom:1.25rem; left:1.25rem;\n  background:var(--c-surface); border:1px solid var(--c-line); border-radius:10px;\n  padding:.7rem 1rem; font-size:.85rem; box-shadow:var(--shadow-sm);\n}\n\n\/* ================================================================\n   FOOTER\n================================================================ *\/\n.footer{ border-top:1px solid var(--c-line); background:var(--c-surface); padding-top:var(--space-5); }\n.footer__top{ display:grid; grid-template-columns:1.4fr repeat(3,1fr); gap:3rem; padding-bottom:3rem; }\n@media(max-width:820px){ .footer__top{ grid-template-columns:1fr 1fr; } }\n@media(max-width:520px){ .footer__top{ grid-template-columns:1fr; } }\n.footer__brand p{ margin-top:1rem; max-width:32ch; font-size:.92rem; }\n.footer__social{ display:flex; gap:.6rem; margin-top:1.5rem; }\n.footer__social a{\n  width:38px; height:38px; border-radius:50%; border:1px solid var(--c-line);\n  display:flex; align-items:center; justify-content:center;\n  transition:background .25s var(--ease), color .25s var(--ease), transform .25s var(--ease);\n}\n.footer__social a:hover{ background:var(--c-accent); color:var(--c-accent-contrast); transform:translateY(-3px); }\n.footer__social svg{ width:16px; height:16px; }\n.footer h4{ font-size:.85rem; text-transform:uppercase; letter-spacing:.06em; margin-bottom:1.1rem; color:var(--c-ink-faint); }\n.footer__col ul{ display:flex; flex-direction:column; gap:.75rem; }\n.footer__col a{ font-size:.92rem; color:var(--c-ink-soft); transition:color .25s var(--ease); }\n.footer__col a:hover{ color:var(--c-ink); }\n.footer__bottom{\n  border-top:1px solid var(--c-line); padding-block:1.6rem;\n  display:flex; flex-wrap:wrap; justify-content:space-between; gap:1rem;\n  font-size:.82rem; color:var(--c-ink-faint);\n}\n.footer__bottom a{ color:var(--c-ink-faint); }\n.footer__bottom a:hover{ color:var(--c-ink); }\n\n\/* ================================================================\n   BACK TO TOP\n================================================================ *\/\n.back-to-top{\n  position:fixed; right:1.5rem; bottom:1.5rem; z-index:400;\n  width:48px; height:48px; border-radius:50%;\n  background:var(--c-accent); color:var(--c-accent-contrast);\n  display:flex; align-items:center; justify-content:center;\n  box-shadow:var(--shadow-md);\n  opacity:0; visibility:hidden; transform:translateY(12px);\n  transition:opacity .3s var(--ease), transform .3s var(--ease), visibility .3s;\n}\n.back-to-top.is-visible{ opacity:1; visibility:visible; transform:none; }\n.back-to-top svg{ width:18px; height:18px; }\n.back-to-top:hover{ transform:translateY(-3px); }\n\n\/* Responsive nav switch *\/\n@media(max-width:860px){\n  .nav__links{ display:none; }\n  .hamburger{ display:flex; }\n}\n<\/style>\n<\/head>\n<body>\n<a class=\"skip-link\" href=\"#main\">Skip to main content<\/a>\n\n<!-- ============================================================\n     NAVIGATION\n============================================================ -->\n<header class=\"nav\" id=\"siteNav\">\n  <div class=\"nav__inner\">\n    <a href=\"#top\" class=\"brand\" aria-label=\"Greyframe home\">\n      <span class=\"brand__mark\" aria-hidden=\"true\">GF<\/span>\n      Greyframe\n    <\/a>\n\n    <nav class=\"nav__links\" aria-label=\"Primary\">\n      <a href=\"#about\">About<\/a>\n      <a href=\"#services\">Services<\/a>\n      <a href=\"#work\">Work<\/a>\n      <a href=\"#process\">Process<\/a>\n      <a href=\"#team\">Team<\/a>\n      <a href=\"#faq\">FAQ<\/a>\n      <a href=\"#contact\">Contact<\/a>\n    <\/nav>\n\n    <div class=\"nav__actions\">\n      <button class=\"theme-toggle\" id=\"themeToggle\" type=\"button\" aria-label=\"Toggle dark mode\">\n        <svg class=\"icon-sun\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"4.5\"\/><path d=\"M12 2v3M12 19v3M4.2 4.2l2.1 2.1M17.7 17.7l2.1 2.1M2 12h3M19 12h3M4.2 19.8l2.1-2.1M17.7 6.3l2.1-2.1\"\/><\/svg>\n        <svg class=\"icon-moon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" aria-hidden=\"true\"><path d=\"M20 14.5A8.5 8.5 0 1 1 9.5 4a6.8 6.8 0 0 0 10.5 10.5Z\"\/><\/svg>\n      <\/button>\n      <a href=\"#contact\" class=\"btn btn--primary\" style=\"display:none;\" id=\"navCta\">\n        Start a project\n        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M5 12h14M13 6l6 6-6 6\"\/><\/svg>\n      <\/a>\n      <button class=\"hamburger\" id=\"hamburgerBtn\" type=\"button\" aria-label=\"Open menu\" aria-expanded=\"false\" aria-controls=\"mobileMenu\">\n        <span><\/span><span><\/span><span><\/span>\n      <\/button>\n    <\/div>\n  <\/div>\n<\/header>\n\n<!-- Mobile menu -->\n<nav class=\"mobile-menu\" id=\"mobileMenu\" aria-label=\"Mobile\" aria-hidden=\"true\">\n  <a href=\"#about\">About<\/a>\n  <a href=\"#services\">Services<\/a>\n  <a href=\"#work\">Work<\/a>\n  <a href=\"#process\">Process<\/a>\n  <a href=\"#team\">Team<\/a>\n  <a href=\"#faq\">FAQ<\/a>\n  <a href=\"#contact\">Contact<\/a>\n  <a href=\"#contact\" class=\"btn btn--primary\">Start a project<\/a>\n<\/nav>\n\n<main id=\"main\">\n<div id=\"top\"><\/div>\n\n<!-- ============================================================\n     HERO\n============================================================ -->\n<section class=\"hero\" aria-labelledby=\"hero-heading\">\n  <div class=\"hero__grid\" aria-hidden=\"true\"><\/div>\n  <div class=\"container hero__inner\">\n\n    <div class=\"hero__top reveal is-visible\">\n      <span class=\"eyebrow\">Digital product studio \u2014 est. 2016<\/span>\n      <div class=\"hero__coords\">\n        <span class=\"coord-label\">FIG. 01 \/ HERO<br>GRID 64px \/ N<\/span>\n      <\/div>\n    <\/div>\n\n    <h1 id=\"hero-heading\">\n      We design and build\n      <span class=\"accent-underline\">products\n        <svg viewBox=\"0 0 220 20\" preserveAspectRatio=\"none\" aria-hidden=\"true\"><path d=\"M2 14 C 60 4, 160 4, 218 14\"\/><\/svg>\n      <\/span>\n      people trust.\n    <\/h1>\n\n    <div class=\"hero__row\">\n      <p class=\"lead\">\n        Greyframe partners with founders and product teams to turn early ideas into\n        precise, well-engineered digital experiences \u2014 from the first wireframe\n        to the metrics dashboard that tells you it worked.\n      <\/p>\n      <div class=\"hero__actions\">\n        <a href=\"#contact\" class=\"btn btn--primary\">\n          Start a project\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M5 12h14M13 6l6 6-6 6\"\/><\/svg>\n        <\/a>\n        <a href=\"#work\" class=\"btn btn--ghost\">View our work<\/a>\n      <\/div>\n    <\/div>\n\n    <div class=\"hero__stats reveal\" data-i=\"1\">\n      <div>\n        <div class=\"stat-num\"><span class=\"counter\" data-target=\"120\">0<\/span><span>+<\/span><\/div>\n        <div class=\"stat-label\">Products shipped<\/div>\n      <\/div>\n      <div>\n        <div class=\"stat-num\"><span class=\"counter\" data-target=\"98\">0<\/span><span>%<\/span><\/div>\n        <div class=\"stat-label\">Client retention<\/div>\n      <\/div>\n      <div>\n        <div class=\"stat-num\"><span class=\"counter\" data-target=\"9\">0<\/span><span>yrs<\/span><\/div>\n        <div class=\"stat-label\">In practice<\/div>\n      <\/div>\n    <\/div>\n\n  <\/div>\n<\/section>\n\n<!-- ============================================================\n     CLIENT MARQUEE\n============================================================ -->\n<section class=\"marquee\" aria-label=\"Clients we've worked with\">\n  <div class=\"marquee__track\" aria-hidden=\"true\">\n    <span>NORTHWIND<\/span><span>CASTLE &amp; CO.<\/span><span>ORBITAL<\/span><span>FERNBANK<\/span><span>HALCYON<\/span><span>MERIDIAN<\/span><span>PLINTH<\/span><span>ARGUS LABS<\/span>\n    <span>NORTHWIND<\/span><span>CASTLE &amp; CO.<\/span><span>ORBITAL<\/span><span>FERNBANK<\/span><span>HALCYON<\/span><span>MERIDIAN<\/span><span>PLINTH<\/span><span>ARGUS LABS<\/span>\n  <\/div>\n<\/section>\n\n<!-- ============================================================\n     ABOUT\n============================================================ -->\n<section class=\"section\" id=\"about\" aria-labelledby=\"about-heading\">\n  <div class=\"container\">\n    <div class=\"about__wrap\">\n      <div class=\"about__panel crosshair reveal\">\n        <span class=\"coord-label\">STUDIO \/ PDX<\/span>\n        <span class=\"coord-label\">EST. 2016<\/span>\n        <div class=\"about__panel-figure\">\n          <svg viewBox=\"0 0 200 200\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.2\" aria-hidden=\"true\">\n            <circle cx=\"100\" cy=\"100\" r=\"80\" stroke-dasharray=\"4 6\"\/>\n            <circle cx=\"100\" cy=\"100\" r=\"55\"\/>\n            <path d=\"M100 20v160M20 100h160\"\/>\n            <rect x=\"70\" y=\"70\" width=\"60\" height=\"60\" transform=\"rotate(45 100 100)\"\/>\n          <\/svg>\n        <\/div>\n      <\/div>\n\n      <div>\n        <div class=\"section-head reveal\" data-i=\"1\">\n          <span class=\"eyebrow\">About the studio<\/span>\n          <h2 id=\"about-heading\">A small studio built for focused work.<\/h2>\n        <\/div>\n        <p class=\"lead reveal\" data-i=\"2\">\n          We're a team of twenty-two designers, engineers, and strategists who care\n          about the details most teams don't have time for. No account managers,\n          no hand-offs between agencies \u2014 the people who plan your product are\n          the people who build it.\n        <\/p>\n        <ul class=\"about__list reveal\" data-i=\"3\">\n          <li>\n            <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M20 6L9 17l-5-5\"\/><\/svg>\n            One senior team from kickoff to launch, no rotating staff\n          <\/li>\n          <li>\n            <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M20 6L9 17l-5-5\"\/><\/svg>\n            Design and engineering sit in the same room, every sprint\n          <\/li>\n          <li>\n            <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M20 6L9 17l-5-5\"\/><\/svg>\n            Fixed-scope phases with clear, weekly deliverables\n          <\/li>\n        <\/ul>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- ============================================================\n     SERVICES\n============================================================ -->\n<section class=\"section section--tight\" id=\"services\" aria-labelledby=\"services-heading\">\n  <div class=\"container\">\n    <div class=\"section-head reveal\">\n      <span class=\"eyebrow\">What we do<\/span>\n      <h2 id=\"services-heading\">Four disciplines, one team.<\/h2>\n      <p class=\"lead\" style=\"margin-top:1rem;\">Every engagement draws on the same core capabilities, scaled to the size of the problem.<\/p>\n    <\/div>\n\n    <div class=\"services__grid reveal-stagger\">\n      <article class=\"card service-card reveal\" data-i=\"1\">\n        <div class=\"service-card__num\">01<\/div>\n        <div class=\"service-card__icon\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"><path d=\"M3 12l9-9 9 9M5 10v10h14V10\"\/><\/svg>\n        <\/div>\n        <h3>Product strategy<\/h3>\n        <p>We define what to build before anyone opens Figma \u2014 audience, positioning, and success metrics locked in.<\/p>\n        <div class=\"service-card__tags\">\n          <span class=\"tag\">Discovery<\/span><span class=\"tag\">Roadmapping<\/span>\n        <\/div>\n      <\/article>\n\n      <article class=\"card service-card reveal\" data-i=\"2\">\n        <div class=\"service-card__num\">02<\/div>\n        <div class=\"service-card__icon\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"><path d=\"M4 4h16v12H4zM8 20h8M12 16v4\"\/><\/svg>\n        <\/div>\n        <h3>UX &amp; UI design<\/h3>\n        <p>Interfaces built on real information architecture \u2014 wireframes, prototypes, and a system that scales.<\/p>\n        <div class=\"service-card__tags\">\n          <span class=\"tag\">Wireframes<\/span><span class=\"tag\">Design systems<\/span>\n        <\/div>\n      <\/article>\n\n      <article class=\"card service-card reveal\" data-i=\"3\">\n        <div class=\"service-card__num\">03<\/div>\n        <div class=\"service-card__icon\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"><path d=\"M8 9l-5 3 5 3M16 9l5 3-5 3M13 5l-2 14\"\/><\/svg>\n        <\/div>\n        <h3>Engineering<\/h3>\n        <p>Production web and mobile builds \u2014 performant, accessible, and handed over with clean documentation.<\/p>\n        <div class=\"service-card__tags\">\n          <span class=\"tag\">Web apps<\/span><span class=\"tag\">APIs<\/span>\n        <\/div>\n      <\/article>\n\n      <article class=\"card service-card reveal\" data-i=\"4\">\n        <div class=\"service-card__num\">04<\/div>\n        <div class=\"service-card__icon\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"><circle cx=\"12\" cy=\"12\" r=\"9\"\/><path d=\"M12 3v18M3 12h18\"\/><\/svg>\n        <\/div>\n        <h3>Brand systems<\/h3>\n        <p>Identity, voice, and visual language \u2014 built to hold up across product, marketing, and pitch decks.<\/p>\n        <div class=\"service-card__tags\">\n          <span class=\"tag\">Identity<\/span><span class=\"tag\">Guidelines<\/span>\n        <\/div>\n      <\/article>\n\n      <article class=\"card service-card reveal\" data-i=\"5\">\n        <div class=\"service-card__num\">05<\/div>\n        <div class=\"service-card__icon\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"><path d=\"M3 3v18h18M7 15l4-5 3 3 5-7\"\/><\/svg>\n        <\/div>\n        <h3>Growth &amp; analytics<\/h3>\n        <p>Instrumentation and experimentation frameworks so you know what's working within days, not quarters.<\/p>\n        <div class=\"service-card__tags\">\n          <span class=\"tag\">A\/B testing<\/span><span class=\"tag\">Dashboards<\/span>\n        <\/div>\n      <\/article>\n\n      <article class=\"card service-card reveal\" data-i=\"6\">\n        <div class=\"service-card__num\">06<\/div>\n        <div class=\"service-card__icon\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"><path d=\"M12 2l3 7h7l-5.5 4.5L18.5 21 12 16.5 5.5 21l2-7.5L2 9h7z\"\/><\/svg>\n        <\/div>\n        <h3>Ongoing partnership<\/h3>\n        <p>Retainer support after launch \u2014 a standing team for iteration, maintenance, and new features.<\/p>\n        <div class=\"service-card__tags\">\n          <span class=\"tag\">Retainers<\/span><span class=\"tag\">Support<\/span>\n        <\/div>\n      <\/article>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- ============================================================\n     PORTFOLIO\n============================================================ -->\n<section class=\"section\" id=\"work\" aria-labelledby=\"work-heading\">\n  <div class=\"container\">\n    <div class=\"section-head reveal\">\n      <span class=\"eyebrow\">Selected work<\/span>\n      <h2 id=\"work-heading\">Recent projects.<\/h2>\n    <\/div>\n\n    <div class=\"filter-bar\" role=\"group\" aria-label=\"Filter projects by category\">\n      <button class=\"filter-btn\" type=\"button\" data-filter=\"all\" aria-pressed=\"true\">All<\/button>\n      <button class=\"filter-btn\" type=\"button\" data-filter=\"product\" aria-pressed=\"false\">Product<\/button>\n      <button class=\"filter-btn\" type=\"button\" data-filter=\"brand\" aria-pressed=\"false\">Brand<\/button>\n      <button class=\"filter-btn\" type=\"button\" data-filter=\"web\" aria-pressed=\"false\">Web<\/button>\n    <\/div>\n\n    <div class=\"portfolio__grid\" id=\"portfolioGrid\">\n\n      <article class=\"card project-card reveal\" data-category=\"product\">\n        <div class=\"project-card__media\">\n          <svg viewBox=\"0 0 400 250\" preserveAspectRatio=\"xMidYMid slice\" aria-hidden=\"true\"><rect width=\"400\" height=\"250\" fill=\"var(--c-surface-2)\"\/><g stroke=\"var(--c-line-strong)\" stroke-width=\"1\"><line x1=\"0\" y1=\"62\" x2=\"400\" y2=\"62\"\/><line x1=\"0\" y1=\"125\" x2=\"400\" y2=\"125\"\/><line x1=\"0\" y1=\"188\" x2=\"400\" y2=\"188\"\/><\/g><circle cx=\"320\" cy=\"60\" r=\"46\" fill=\"none\" stroke=\"var(--c-ink-faint)\" stroke-width=\"1.5\"\/><rect x=\"40\" y=\"140\" width=\"140\" height=\"70\" fill=\"none\" stroke=\"var(--c-ink-faint)\" stroke-width=\"1.5\"\/><\/svg>\n        <\/div>\n        <div class=\"project-card__body\">\n          <div>\n            <div class=\"project-card__meta\">Fintech \u00b7 Product design<\/div>\n            <h3>Northwind ledger<\/h3>\n          <\/div>\n          <span class=\"project-card__arrow\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M7 17L17 7M7 7h10v10\"\/><\/svg><\/span>\n        <\/div>\n      <\/article>\n\n      <article class=\"card project-card reveal\" data-category=\"brand\">\n        <div class=\"project-card__media\">\n          <svg viewBox=\"0 0 400 250\" preserveAspectRatio=\"xMidYMid slice\" aria-hidden=\"true\"><rect width=\"400\" height=\"250\" fill=\"var(--c-surface-2)\"\/><polygon points=\"200,40 340,210 60,210\" fill=\"none\" stroke=\"var(--c-ink-faint)\" stroke-width=\"1.5\"\/><circle cx=\"200\" cy=\"140\" r=\"30\" fill=\"none\" stroke=\"var(--c-ink-faint)\" stroke-width=\"1.5\"\/><\/svg>\n        <\/div>\n        <div class=\"project-card__body\">\n          <div>\n            <div class=\"project-card__meta\">Hospitality \u00b7 Brand identity<\/div>\n            <h3>Castle &amp; Co. rebrand<\/h3>\n          <\/div>\n          <span class=\"project-card__arrow\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M7 17L17 7M7 7h10v10\"\/><\/svg><\/span>\n        <\/div>\n      <\/article>\n\n      <article class=\"card project-card reveal\" data-category=\"web\">\n        <div class=\"project-card__media\">\n          <svg viewBox=\"0 0 400 250\" preserveAspectRatio=\"xMidYMid slice\" aria-hidden=\"true\"><rect width=\"400\" height=\"250\" fill=\"var(--c-surface-2)\"\/><g stroke=\"var(--c-ink-faint)\" stroke-width=\"1.5\" fill=\"none\"><rect x=\"30\" y=\"40\" width=\"150\" height=\"90\"\/><rect x=\"200\" y=\"40\" width=\"170\" height=\"40\"\/><rect x=\"200\" y=\"96\" width=\"170\" height=\"34\"\/><rect x=\"30\" y=\"150\" width=\"340\" height=\"60\"\/><\/g><\/svg>\n        <\/div>\n        <div class=\"project-card__body\">\n          <div>\n            <div class=\"project-card__meta\">Media \u00b7 Web platform<\/div>\n            <h3>Orbital publishing<\/h3>\n          <\/div>\n          <span class=\"project-card__arrow\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M7 17L17 7M7 7h10v10\"\/><\/svg><\/span>\n        <\/div>\n      <\/article>\n\n      <article class=\"card project-card reveal\" data-category=\"product\">\n        <div class=\"project-card__media\">\n          <svg viewBox=\"0 0 400 250\" preserveAspectRatio=\"xMidYMid slice\" aria-hidden=\"true\"><rect width=\"400\" height=\"250\" fill=\"var(--c-surface-2)\"\/><path d=\"M40 200 L120 90 L200 160 L280 60 L360 130\" fill=\"none\" stroke=\"var(--c-ink-faint)\" stroke-width=\"2\"\/><circle cx=\"280\" cy=\"60\" r=\"5\" fill=\"var(--c-ink-faint)\"\/><\/svg>\n        <\/div>\n        <div class=\"project-card__body\">\n          <div>\n            <div class=\"project-card__meta\">Healthtech \u00b7 Dashboard<\/div>\n            <h3>Fernbank clinical suite<\/h3>\n          <\/div>\n          <span class=\"project-card__arrow\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M7 17L17 7M7 7h10v10\"\/><\/svg><\/span>\n        <\/div>\n      <\/article>\n\n      <article class=\"card project-card reveal\" data-category=\"brand\">\n        <div class=\"project-card__media\">\n          <svg viewBox=\"0 0 400 250\" preserveAspectRatio=\"xMidYMid slice\" aria-hidden=\"true\"><rect width=\"400\" height=\"250\" fill=\"var(--c-surface-2)\"\/><g fill=\"none\" stroke=\"var(--c-ink-faint)\" stroke-width=\"1.5\"><rect x=\"70\" y=\"55\" width=\"80\" height=\"80\"\/><rect x=\"160\" y=\"55\" width=\"80\" height=\"80\"\/><rect x=\"250\" y=\"55\" width=\"80\" height=\"80\"\/><\/g><\/svg>\n        <\/div>\n        <div class=\"project-card__body\">\n          <div>\n            <div class=\"project-card__meta\">Consumer goods \u00b7 Packaging<\/div>\n            <h3>Halcyon identity system<\/h3>\n          <\/div>\n          <span class=\"project-card__arrow\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M7 17L17 7M7 7h10v10\"\/><\/svg><\/span>\n        <\/div>\n      <\/article>\n\n      <article class=\"card project-card reveal\" data-category=\"web\">\n        <div class=\"project-card__media\">\n          <svg viewBox=\"0 0 400 250\" preserveAspectRatio=\"xMidYMid slice\" aria-hidden=\"true\"><rect width=\"400\" height=\"250\" fill=\"var(--c-surface-2)\"\/><g fill=\"none\" stroke=\"var(--c-ink-faint)\" stroke-width=\"1.5\"><circle cx=\"130\" cy=\"125\" r=\"60\"\/><circle cx=\"260\" cy=\"125\" r=\"60\"\/><\/g><\/svg>\n        <\/div>\n        <div class=\"project-card__body\">\n          <div>\n            <div class=\"project-card__meta\">SaaS \u00b7 Marketing site<\/div>\n            <h3>Meridian analytics<\/h3>\n          <\/div>\n          <span class=\"project-card__arrow\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M7 17L17 7M7 7h10v10\"\/><\/svg><\/span>\n        <\/div>\n      <\/article>\n\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- ============================================================\n     PROCESS\n============================================================ -->\n<section class=\"section section--tight\" id=\"process\" aria-labelledby=\"process-heading\">\n  <div class=\"container\">\n    <div class=\"section-head reveal\">\n      <span class=\"eyebrow\">How we work<\/span>\n      <h2 id=\"process-heading\">A process built around fixed checkpoints.<\/h2>\n    <\/div>\n\n    <div class=\"process__list\">\n      <div class=\"process__item reveal\">\n        <div class=\"process__index\">01<\/div>\n        <div class=\"process__content\">\n          <h3>Discover<\/h3>\n          <p>We interview stakeholders and users, audit what exists, and define the problem in writing before any design begins.<\/p>\n          <span class=\"process__phase\">Week 1\u20132 \u00b7 Research &amp; scoping<\/span>\n        <\/div>\n      <\/div>\n      <div class=\"process__item reveal\">\n        <div class=\"process__index\">02<\/div>\n        <div class=\"process__content\">\n          <h3>Define<\/h3>\n          <p>Findings become a scoped brief: information architecture, success metrics, and a fixed set of deliverables.<\/p>\n          <span class=\"process__phase\">Week 2\u20133 \u00b7 Strategy<\/span>\n        <\/div>\n      <\/div>\n      <div class=\"process__item reveal\">\n        <div class=\"process__index\">03<\/div>\n        <div class=\"process__content\">\n          <h3>Design<\/h3>\n          <p>Wireframes move to high-fidelity screens and a component system, reviewed with you at the end of every week.<\/p>\n          <span class=\"process__phase\">Week 3\u20137 \u00b7 UX &amp; UI<\/span>\n        <\/div>\n      <\/div>\n      <div class=\"process__item reveal\">\n        <div class=\"process__index\">04<\/div>\n        <div class=\"process__content\">\n          <h3>Build<\/h3>\n          <p>Engineers work from the approved design system, with staging environments you can test throughout.<\/p>\n          <span class=\"process__phase\">Week 6\u201312 \u00b7 Engineering<\/span>\n        <\/div>\n      <\/div>\n      <div class=\"process__item reveal\">\n        <div class=\"process__index\">05<\/div>\n        <div class=\"process__content\">\n          <h3>Launch &amp; support<\/h3>\n          <p>We handle deployment, monitor the first weeks in production, and hand over full documentation.<\/p>\n          <span class=\"process__phase\">Week 12+ \u00b7 Launch<\/span>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- ============================================================\n     TESTIMONIALS\n============================================================ -->\n<section class=\"section\" aria-labelledby=\"testimonials-heading\">\n  <div class=\"container\">\n    <div class=\"section-head reveal\">\n      <span class=\"eyebrow\">Client feedback<\/span>\n      <h2 id=\"testimonials-heading\">What partners say.<\/h2>\n    <\/div>\n\n    <div class=\"testimonial-track reveal-stagger\">\n      <blockquote class=\"card testimonial-card reveal\" data-i=\"1\">\n        <svg class=\"quote-mark\" viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\"><path d=\"M7 7h4v4c0 3-2 5-5 5v-2c1.5 0 2.5-1 2.5-2.5H7V7zm8 0h4v4c0 3-2 5-5 5v-2c1.5 0 2.5-1 2.5-2.5h-1.5V7z\"\/><\/svg>\n        <p>Greyframe rebuilt our onboarding flow in six weeks and our activation rate hasn't dipped since. They write documentation like they expect to be gone tomorrow \u2014 which made the handoff painless.<\/p>\n        <footer class=\"testimonial-person\">\n          <div class=\"avatar\" aria-hidden=\"true\">JL<\/div>\n          <div><strong>Jordan Lee<\/strong><span>VP Product, Northwind<\/span><\/div>\n        <\/footer>\n      <\/blockquote>\n\n      <blockquote class=\"card testimonial-card reveal\" data-i=\"2\">\n        <svg class=\"quote-mark\" viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\"><path d=\"M7 7h4v4c0 3-2 5-5 5v-2c1.5 0 2.5-1 2.5-2.5H7V7zm8 0h4v4c0 3-2 5-5 5v-2c1.5 0 2.5-1 2.5-2.5h-1.5V7z\"\/><\/svg>\n        <p>We came in with a rough idea and left with a working platform and a brand we still use unchanged three years later. Rare to find a team that's equally strong at both.<\/p>\n        <footer class=\"testimonial-person\">\n          <div class=\"avatar\" aria-hidden=\"true\">AM<\/div>\n          <div><strong>Amara Osei<\/strong><span>Founder, Halcyon<\/span><\/div>\n        <\/footer>\n      <\/blockquote>\n\n      <blockquote class=\"card testimonial-card reveal\" data-i=\"3\">\n        <svg class=\"quote-mark\" viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\"><path d=\"M7 7h4v4c0 3-2 5-5 5v-2c1.5 0 2.5-1 2.5-2.5H7V7zm8 0h4v4c0 3-2 5-5 5v-2c1.5 0 2.5-1 2.5-2.5h-1.5V7z\"\/><\/svg>\n        <p>The weekly checkpoints kept everyone honest about scope. Nothing shipped that we hadn't already reviewed, and nothing surprised us at launch.<\/p>\n        <footer class=\"testimonial-person\">\n          <div class=\"avatar\" aria-hidden=\"true\">RK<\/div>\n          <div><strong>Ravi Kapoor<\/strong><span>CTO, Fernbank Health<\/span><\/div>\n        <\/footer>\n      <\/blockquote>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- ============================================================\n     TEAM\n============================================================ -->\n<section class=\"section section--tight\" id=\"team\" aria-labelledby=\"team-heading\">\n  <div class=\"container\">\n    <div class=\"section-head reveal\">\n      <span class=\"eyebrow\">The people<\/span>\n      <h2 id=\"team-heading\">A small, senior team.<\/h2>\n    <\/div>\n\n    <div class=\"team__grid reveal-stagger\">\n      <article class=\"card team-card reveal\" data-i=\"1\">\n        <div class=\"team-card__photo\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.2\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"8\" r=\"4\"\/><path d=\"M4 20c0-4.4 3.6-7 8-7s8 2.6 8 7\"\/><\/svg><\/div>\n        <div class=\"team-card__body\">\n          <h4>Mara Solberg<\/h4>\n          <span>Founder &amp; Creative Director<\/span>\n          <div class=\"team-card__social\">\n            <a href=\"#\" aria-label=\"Mara Solberg on LinkedIn\"><svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M6.94 8.5H4.06V19h2.88V8.5zM5.5 4a1.68 1.68 0 100 3.36A1.68 1.68 0 005.5 4zM19.94 19h-2.87v-5.3c0-1.26-.02-2.88-1.76-2.88-1.76 0-2.03 1.37-2.03 2.79V19h-2.87V8.5h2.75v1.43h.04c.38-.72 1.32-1.48 2.72-1.48 2.9 0 3.44 1.9 3.44 4.38V19z\"\/><\/svg><\/a>\n          <\/div>\n        <\/div>\n      <\/article>\n\n      <article class=\"card team-card reveal\" data-i=\"2\">\n        <div class=\"team-card__photo\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.2\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"8\" r=\"4\"\/><path d=\"M4 20c0-4.4 3.6-7 8-7s8 2.6 8 7\"\/><\/svg><\/div>\n        <div class=\"team-card__body\">\n          <h4>Theo Nakamura<\/h4>\n          <span>Head of Engineering<\/span>\n          <div class=\"team-card__social\">\n            <a href=\"#\" aria-label=\"Theo Nakamura on LinkedIn\"><svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M6.94 8.5H4.06V19h2.88V8.5zM5.5 4a1.68 1.68 0 100 3.36A1.68 1.68 0 005.5 4zM19.94 19h-2.87v-5.3c0-1.26-.02-2.88-1.76-2.88-1.76 0-2.03 1.37-2.03 2.79V19h-2.87V8.5h2.75v1.43h.04c.38-.72 1.32-1.48 2.72-1.48 2.9 0 3.44 1.9 3.44 4.38V19z\"\/><\/svg><\/a>\n          <\/div>\n        <\/div>\n      <\/article>\n\n      <article class=\"card team-card reveal\" data-i=\"3\">\n        <div class=\"team-card__photo\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.2\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"8\" r=\"4\"\/><path d=\"M4 20c0-4.4 3.6-7 8-7s8 2.6 8 7\"\/><\/svg><\/div>\n        <div class=\"team-card__body\">\n          <h4>Priya Chandran<\/h4>\n          <span>Principal Product Designer<\/span>\n          <div class=\"team-card__social\">\n            <a href=\"#\" aria-label=\"Priya Chandran on LinkedIn\"><svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M6.94 8.5H4.06V19h2.88V8.5zM5.5 4a1.68 1.68 0 100 3.36A1.68 1.68 0 005.5 4zM19.94 19h-2.87v-5.3c0-1.26-.02-2.88-1.76-2.88-1.76 0-2.03 1.37-2.03 2.79V19h-2.87V8.5h2.75v1.43h.04c.38-.72 1.32-1.48 2.72-1.48 2.9 0 3.44 1.9 3.44 4.38V19z\"\/><\/svg><\/a>\n          <\/div>\n        <\/div>\n      <\/article>\n\n      <article class=\"card team-card reveal\" data-i=\"4\">\n        <div class=\"team-card__photo\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.2\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"8\" r=\"4\"\/><path d=\"M4 20c0-4.4 3.6-7 8-7s8 2.6 8 7\"\/><\/svg><\/div>\n        <div class=\"team-card__body\">\n          <h4>Owen Baptiste<\/h4>\n          <span>Director of Strategy<\/span>\n          <div class=\"team-card__social\">\n            <a href=\"#\" aria-label=\"Owen Baptiste on LinkedIn\"><svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M6.94 8.5H4.06V19h2.88V8.5zM5.5 4a1.68 1.68 0 100 3.36A1.68 1.68 0 005.5 4zM19.94 19h-2.87v-5.3c0-1.26-.02-2.88-1.76-2.88-1.76 0-2.03 1.37-2.03 2.79V19h-2.87V8.5h2.75v1.43h.04c.38-.72 1.32-1.48 2.72-1.48 2.9 0 3.44 1.9 3.44 4.38V19z\"\/><\/svg><\/a>\n          <\/div>\n        <\/div>\n      <\/article>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- ============================================================\n     TECHNOLOGIES\n============================================================ -->\n<section class=\"section section--tight\" aria-labelledby=\"tech-heading\">\n  <div class=\"container\">\n    <div class=\"section-head reveal\">\n      <span class=\"eyebrow\">Toolkit<\/span>\n      <h2 id=\"tech-heading\">Technologies we build with.<\/h2>\n    <\/div>\n\n    <div class=\"tech__grid reveal\">\n      <div class=\"tech-cell\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><polygon points=\"12,2 22,8 22,16 12,22 2,16 2,8\"\/><\/svg><span>React<\/span><\/div>\n      <div class=\"tech-cell\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"3\"\/><path d=\"M8 12h8M12 8v8\"\/><\/svg><span>Node.js<\/span><\/div>\n      <div class=\"tech-cell\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><circle cx=\"12\" cy=\"12\" r=\"9\"\/><path d=\"M8 12h8\"\/><\/svg><span>TypeScript<\/span><\/div>\n      <div class=\"tech-cell\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><path d=\"M4 19V5l16 7-16 7z\"\/><\/svg><span>Next.js<\/span><\/div>\n      <div class=\"tech-cell\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><ellipse cx=\"12\" cy=\"6\" rx=\"8\" ry=\"3\"\/><path d=\"M4 6v6c0 1.7 3.6 3 8 3s8-1.3 8-3V6M4 12v6c0 1.7 3.6 3 8 3s8-1.3 8-3v-6\"\/><\/svg><span>PostgreSQL<\/span><\/div>\n      <div class=\"tech-cell\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><rect x=\"4\" y=\"4\" width=\"7\" height=\"7\"\/><rect x=\"13\" y=\"4\" width=\"7\" height=\"7\"\/><rect x=\"4\" y=\"13\" width=\"7\" height=\"7\"\/><rect x=\"13\" y=\"13\" width=\"7\" height=\"7\"\/><\/svg><span>Figma<\/span><\/div>\n      <div class=\"tech-cell\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><path d=\"M12 2l9 5v10l-9 5-9-5V7z\"\/><\/svg><span>AWS<\/span><\/div>\n      <div class=\"tech-cell\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><circle cx=\"12\" cy=\"12\" r=\"4\"\/><path d=\"M12 2v4M12 18v4M2 12h4M18 12h4\"\/><\/svg><span>GraphQL<\/span><\/div>\n      <div class=\"tech-cell\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><path d=\"M4 4h16v16H4z\"\/><path d=\"M9 9l6 6M15 9l-6 6\"\/><\/svg><span>Docker<\/span><\/div>\n      <div class=\"tech-cell\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><path d=\"M3 17l6-6 4 4 8-8\"\/><\/svg><span>Vercel<\/span><\/div>\n      <div class=\"tech-cell\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><rect x=\"3\" y=\"6\" width=\"18\" height=\"12\" rx=\"2\"\/><path d=\"M3 10h18\"\/><\/svg><span>Stripe<\/span><\/div>\n      <div class=\"tech-cell\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><path d=\"M12 3v18M3 12h18\" \/><circle cx=\"12\" cy=\"12\" r=\"9\"\/><\/svg><span>Tailwind<\/span><\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- ============================================================\n     FAQ\n============================================================ -->\n<section class=\"section\" id=\"faq\" aria-labelledby=\"faq-heading\">\n  <div class=\"container\">\n    <div class=\"section-head reveal\">\n      <span class=\"eyebrow\">Questions<\/span>\n      <h2 id=\"faq-heading\">Frequently asked.<\/h2>\n    <\/div>\n\n    <div class=\"faq__list reveal\">\n      <details class=\"faq-item\" name=\"faq\">\n        <summary>What size of company do you typically work with?<span class=\"faq-icon\" aria-hidden=\"true\"><\/span><\/summary>\n        <div class=\"faq-body\"><p>Mostly seed-to-Series-C startups and growth-stage teams inside larger companies \u2014 organizations that need senior product thinking but don't have a full in-house team yet.<\/p><\/div>\n      <\/details>\n      <details class=\"faq-item\" name=\"faq\">\n        <summary>How long does a typical project take?<span class=\"faq-icon\" aria-hidden=\"true\"><\/span><\/summary>\n        <div class=\"faq-body\"><p>Brand and design-only engagements usually run 4\u20138 weeks. Full product builds \u2014 strategy through launch \u2014 typically take 10\u201316 weeks depending on scope.<\/p><\/div>\n      <\/details>\n      <details class=\"faq-item\" name=\"faq\">\n        <summary>Do you work with early-stage startups without funding?<span class=\"faq-icon\" aria-hidden=\"true\"><\/span><\/summary>\n        <div class=\"faq-body\"><p>Yes, selectively. We take on a small number of pre-seed projects each year, usually in exchange for a mix of reduced fees and advisory equity.<\/p><\/div>\n      <\/details>\n      <details class=\"faq-item\" name=\"faq\">\n        <summary>Can you work with our existing in-house team?<span class=\"faq-icon\" aria-hidden=\"true\"><\/span><\/summary>\n        <div class=\"faq-body\"><p>Regularly. We can embed with your engineers, hand off a design system for your team to build from, or run as a fully independent delivery team \u2014 whatever fits your setup.<\/p><\/div>\n      <\/details>\n      <details class=\"faq-item\" name=\"faq\">\n        <summary>What does pricing look like?<span class=\"faq-icon\" aria-hidden=\"true\"><\/span><\/summary>\n        <div class=\"faq-body\"><p>Fixed-scope projects are priced per phase after discovery. Ongoing work runs as a monthly retainer with a dedicated block of hours. We'll send a detailed proposal after our first call.<\/p><\/div>\n      <\/details>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- ============================================================\n     BLOG PREVIEW\n============================================================ -->\n<section class=\"section section--tight\" aria-labelledby=\"blog-heading\">\n  <div class=\"container\">\n    <div class=\"section-head reveal\">\n      <span class=\"eyebrow\">Notes<\/span>\n      <h2 id=\"blog-heading\">From the studio journal.<\/h2>\n    <\/div>\n\n    <div class=\"blog__grid reveal-stagger\">\n      <article class=\"card blog-card reveal\" data-i=\"1\">\n        <div class=\"blog-card__media\"><svg viewBox=\"0 0 400 250\" preserveAspectRatio=\"xMidYMid slice\" aria-hidden=\"true\"><rect width=\"400\" height=\"250\" fill=\"var(--c-surface-2)\"\/><path d=\"M0 180 L100 120 L200 160 L300 90 L400 130\" stroke=\"var(--c-ink-faint)\" stroke-width=\"2\" fill=\"none\"\/><\/svg><\/div>\n        <div class=\"blog-card__body\">\n          <span class=\"blog-card__meta\">Design \u00b7 6 min read<\/span>\n          <h3>Why most onboarding flows lose users in the first screen<\/h3>\n          <a href=\"#\" class=\"blog-card__link\">Read the piece <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M5 12h14M13 6l6 6-6 6\"\/><\/svg><\/a>\n        <\/div>\n      <\/article>\n\n      <article class=\"card blog-card reveal\" data-i=\"2\">\n        <div class=\"blog-card__media\"><svg viewBox=\"0 0 400 250\" preserveAspectRatio=\"xMidYMid slice\" aria-hidden=\"true\"><rect width=\"400\" height=\"250\" fill=\"var(--c-surface-2)\"\/><circle cx=\"200\" cy=\"125\" r=\"70\" fill=\"none\" stroke=\"var(--c-ink-faint)\" stroke-width=\"2\"\/><\/svg><\/div>\n        <div class=\"blog-card__body\">\n          <span class=\"blog-card__meta\">Engineering \u00b7 8 min read<\/span>\n          <h3>A pragmatic case for boring technology in early-stage products<\/h3>\n          <a href=\"#\" class=\"blog-card__link\">Read the piece <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M5 12h14M13 6l6 6-6 6\"\/><\/svg><\/a>\n        <\/div>\n      <\/article>\n\n      <article class=\"card blog-card reveal\" data-i=\"3\">\n        <div class=\"blog-card__media\"><svg viewBox=\"0 0 400 250\" preserveAspectRatio=\"xMidYMid slice\" aria-hidden=\"true\"><rect width=\"400\" height=\"250\" fill=\"var(--c-surface-2)\"\/><rect x=\"120\" y=\"65\" width=\"160\" height=\"120\" fill=\"none\" stroke=\"var(--c-ink-faint)\" stroke-width=\"2\"\/><\/svg><\/div>\n        <div class=\"blog-card__body\">\n          <span class=\"blog-card__meta\">Strategy \u00b7 5 min read<\/span>\n          <h3>How we scope a fixed-price product engagement<\/h3>\n          <a href=\"#\" class=\"blog-card__link\">Read the piece <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M5 12h14M13 6l6 6-6 6\"\/><\/svg><\/a>\n        <\/div>\n      <\/article>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- ============================================================\n     CTA BAND\n============================================================ -->\n<section class=\"section section--tight\">\n  <div class=\"container\">\n    <div class=\"cta-band reveal\">\n      <div>\n        <h2>Have a product to build?<\/h2>\n        <p>Tell us where it stands today. We'll reply within one business day with next steps.<\/p>\n      <\/div>\n      <a href=\"#contact\" class=\"btn btn--primary\">\n        Book an intro call\n        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M5 12h14M13 6l6 6-6 6\"\/><\/svg>\n      <\/a>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- ============================================================\n     CONTACT\n============================================================ -->\n<section class=\"section\" id=\"contact\" aria-labelledby=\"contact-heading\">\n  <div class=\"container\">\n    <div class=\"section-head reveal\">\n      <span class=\"eyebrow\">Get in touch<\/span>\n      <h2 id=\"contact-heading\">Start a conversation.<\/h2>\n    <\/div>\n\n    <div class=\"contact__wrap\">\n      <div class=\"reveal\" data-i=\"1\">\n        <p class=\"lead\">Share a few details about your project and we'll set up a call with the right people on our team \u2014 usually within a day.<\/p>\n\n        <div class=\"contact-info__item\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\" aria-hidden=\"true\"><path d=\"M4 4h16v16H4z\"\/><path d=\"M4 6l8 7 8-7\"\/><\/svg>\n          <div><strong>Email<\/strong><a href=\"mailto:hello@greyframe.studio\">hello@greyframe.studio<\/a><\/div>\n        <\/div>\n        <div class=\"contact-info__item\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\" aria-hidden=\"true\"><path d=\"M22 16.9v3a2 2 0 01-2.2 2 19.8 19.8 0 01-8.6-3 19.5 19.5 0 01-6-6 19.8 19.8 0 01-3-8.7A2 2 0 014.1 2h3a2 2 0 012 1.7c.1.9.3 1.8.6 2.7a2 2 0 01-.4 2.1L8 9.9a16 16 0 006 6l1.4-1.4a2 2 0 012.1-.4c.9.3 1.8.5 2.7.6a2 2 0 011.8 2.2z\"\/><\/svg>\n          <div><strong>Phone<\/strong><span>+1 (555) 010-2040<\/span><\/div>\n        <\/div>\n        <div class=\"contact-info__item\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\" aria-hidden=\"true\"><path d=\"M12 22s8-6.5 8-12a8 8 0 10-16 0c0 5.5 8 12 8 12z\"\/><circle cx=\"12\" cy=\"10\" r=\"3\"\/><\/svg>\n          <div><strong>Studio<\/strong><span>140 Grid Street, Suite 4B, Portland, OR<\/span><\/div>\n        <\/div>\n      <\/div>\n\n      <form class=\"reveal\" data-i=\"2\" id=\"contactForm\" novalidate>\n        <div class=\"form-field\">\n          <label for=\"fullName\">Full name<\/label>\n          <input type=\"text\" id=\"fullName\" name=\"fullName\" autocomplete=\"name\" required aria-required=\"true\" aria-describedby=\"fullNameError\">\n          <p class=\"error-msg\" id=\"fullNameError\">Please enter your name.<\/p>\n        <\/div>\n        <div class=\"form-field\">\n          <label for=\"email\">Email address<\/label>\n          <input type=\"email\" id=\"email\" name=\"email\" autocomplete=\"email\" required aria-required=\"true\" aria-describedby=\"emailError\">\n          <p class=\"error-msg\" id=\"emailError\">Please enter a valid email address.<\/p>\n        <\/div>\n        <div class=\"form-field\">\n          <label for=\"message\">Project details<\/label>\n          <textarea id=\"message\" name=\"message\" required aria-required=\"true\" aria-describedby=\"messageError\"><\/textarea>\n          <p class=\"error-msg\" id=\"messageError\">Please tell us a little about your project.<\/p>\n        <\/div>\n        <button type=\"submit\" class=\"btn btn--primary\" style=\"width:100%;\">\n          Send message\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M5 12h14M13 6l6 6-6 6\"\/><\/svg>\n        <\/button>\n        <div class=\"form-status\" id=\"formStatus\" role=\"status\" aria-live=\"polite\">Thanks \u2014 your message is in. We'll reply within one business day.<\/div>\n      <\/form>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- ============================================================\n     MAP PLACEHOLDER\n============================================================ -->\n<section class=\"section section--tight\" aria-labelledby=\"map-heading\">\n  <div class=\"container\">\n    <h2 class=\"visually-hidden\" id=\"map-heading\">Studio location<\/h2>\n    <div class=\"map-block reveal\" role=\"img\" aria-label=\"Map showing Greyframe studio location in Portland, Oregon\">\n      <div class=\"pin\">\n        <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\"><path d=\"M12 22s8-6.5 8-12a8 8 0 10-16 0c0 5.5 8 12 8 12z\"\/><\/svg>\n        <div class=\"pin-pulse\"><\/div>\n      <\/div>\n      <div class=\"map-block__label\"><strong>Greyframe Studio<\/strong><br>140 Grid Street, Portland, OR<\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<\/main>\n\n<!-- ============================================================\n     FOOTER\n============================================================ -->\n<footer class=\"footer\">\n  <div class=\"container\">\n    <div class=\"footer__top\">\n      <div class=\"footer__brand\">\n        <a href=\"#top\" class=\"brand\" aria-label=\"Greyframe home\">\n          <span class=\"brand__mark\" aria-hidden=\"true\">GF<\/span>\n          Greyframe\n        <\/a>\n        <p>A digital product studio designing and engineering software for growth-stage teams.<\/p>\n        <div class=\"footer__social\">\n          <a href=\"#\" aria-label=\"Greyframe on LinkedIn\"><svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M6.94 8.5H4.06V19h2.88V8.5zM5.5 4a1.68 1.68 0 100 3.36A1.68 1.68 0 005.5 4zM19.94 19h-2.87v-5.3c0-1.26-.02-2.88-1.76-2.88-1.76 0-2.03 1.37-2.03 2.79V19h-2.87V8.5h2.75v1.43h.04c.38-.72 1.32-1.48 2.72-1.48 2.9 0 3.44 1.9 3.44 4.38V19z\"\/><\/svg><\/a>\n          <a href=\"#\" aria-label=\"Greyframe on Twitter\/X\"><svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M18.2 3h3l-6.6 7.6L22.5 21h-6.1l-4.8-6.3L5.9 21H2.9l7.1-8.1L1.9 3H8l4.3 5.7L18.2 3z\"\/><\/svg><\/a>\n          <a href=\"#\" aria-label=\"Greyframe on Dribbble\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\"><circle cx=\"12\" cy=\"12\" r=\"9\"\/><path d=\"M4 9c4 1.3 12 1 16.5-1M3.5 15c5-1.3 12-.5 16 3M8 3c3 4 4 12 3.5 18\"\/><\/svg><\/a>\n          <a href=\"#\" aria-label=\"Greyframe on Instagram\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\"><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"5\"\/><circle cx=\"12\" cy=\"12\" r=\"4\"\/><circle cx=\"17.5\" cy=\"6.5\" r=\"1\"\/><\/svg><\/a>\n        <\/div>\n      <\/div>\n\n      <div class=\"footer__col\">\n        <h4>Studio<\/h4>\n        <ul>\n          <li><a href=\"#about\">About<\/a><\/li>\n          <li><a href=\"#work\">Work<\/a><\/li>\n          <li><a href=\"#team\">Team<\/a><\/li>\n          <li><a href=\"#faq\">FAQ<\/a><\/li>\n        <\/ul>\n      <\/div>\n      <div class=\"footer__col\">\n        <h4>Services<\/h4>\n        <ul>\n          <li><a href=\"#services\">Product strategy<\/a><\/li>\n          <li><a href=\"#services\">UX &amp; UI design<\/a><\/li>\n          <li><a href=\"#services\">Engineering<\/a><\/li>\n          <li><a href=\"#services\">Brand systems<\/a><\/li>\n        <\/ul>\n      <\/div>\n      <div class=\"footer__col\">\n        <h4>Contact<\/h4>\n        <ul>\n          <li><a href=\"mailto:hello@greyframe.studio\">hello@greyframe.studio<\/a><\/li>\n          <li><a href=\"tel:+15550102040\">+1 (555) 010-2040<\/a><\/li>\n          <li><a href=\"#contact\">Book a call<\/a><\/li>\n        <\/ul>\n      <\/div>\n    <\/div>\n\n    <div class=\"footer__bottom\">\n      <span>\u00a9 2026 Greyframe Studio. All rights reserved.<\/span>\n      <span>\n        <a href=\"#\">Privacy policy<\/a> &nbsp;\u00b7&nbsp; <a href=\"#\">Terms of service<\/a>\n      <\/span>\n    <\/div>\n  <\/div>\n<\/footer>\n\n<!-- Back to top -->\n<button class=\"back-to-top\" id=\"backToTop\" type=\"button\" aria-label=\"Back to top\">\n  <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M12 19V5M5 12l7-7 7 7\"\/><\/svg>\n<\/button>\n\n<script>\n\/* ================================================================\n   GREYFRAME \u2014 main script\n   All interactivity for the single-file build lives here.\n================================================================ *\/\n(function(){\n  \"use strict\";\n\n  \/* ---------- Theme toggle (light\/dark, persisted) ---------- *\/\n  const root = document.documentElement;\n  const themeToggle = document.getElementById('themeToggle');\n  const storedTheme = safeGet('gf-theme');\n  const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;\n  if (storedTheme === 'dark' || (!storedTheme && prefersDark)) {\n    root.setAttribute('data-theme', 'dark');\n  }\n  themeToggle.addEventListener('click', function(){\n    const isDark = root.getAttribute('data-theme') === 'dark';\n    root.setAttribute('data-theme', isDark ? 'light' : 'dark');\n    safeSet('gf-theme', isDark ? 'light' : 'dark');\n  });\n  function safeGet(k){ try{ return localStorage.getItem(k); }catch(e){ return null; } }\n  function safeSet(k,v){ try{ localStorage.setItem(k,v); }catch(e){} }\n\n  \/* ---------- Sticky nav shadow + scroll-spy active link ---------- *\/\n  const nav = document.getElementById('siteNav');\n  const navLinks = Array.from(document.querySelectorAll('.nav__links a'));\n  const navCta = document.getElementById('navCta');\n  const sections = navLinks\n    .map(a => document.querySelector(a.getAttribute('href')))\n    .filter(Boolean);\n\n  function onScroll(){\n    nav.classList.toggle('is-scrolled', window.scrollY > 12);\n    navCta.style.display = window.scrollY > 220 ? 'inline-flex' : 'none';\n\n    \/\/ back to top visibility\n    backToTop.classList.toggle('is-visible', window.scrollY > 600);\n\n    \/\/ scroll-spy\n    let currentId = '';\n    const scrollPos = window.scrollY + 140;\n    sections.forEach(sec => {\n      if (sec.offsetTop <= scrollPos) currentId = sec.id;\n    });\n    navLinks.forEach(a => a.classList.toggle('is-active', a.getAttribute('href') === '#' + currentId));\n  }\n  window.addEventListener('scroll', onScroll, { passive: true });\n  onScroll();\n\n  \/* ---------- Mobile hamburger menu ---------- *\/\n  const hamburgerBtn = document.getElementById('hamburgerBtn');\n  const mobileMenu = document.getElementById('mobileMenu');\n  hamburgerBtn.addEventListener('click', function(){\n    const open = hamburgerBtn.getAttribute('aria-expanded') === 'true';\n    hamburgerBtn.setAttribute('aria-expanded', String(!open));\n    hamburgerBtn.setAttribute('aria-label', open ? 'Open menu' : 'Close menu');\n    mobileMenu.classList.toggle('is-open', !open);\n    mobileMenu.setAttribute('aria-hidden', String(open));\n    document.body.style.overflow = open ? '' : 'hidden';\n  });\n  mobileMenu.querySelectorAll('a').forEach(a => a.addEventListener('click', function(){\n    hamburgerBtn.setAttribute('aria-expanded', 'false');\n    mobileMenu.classList.remove('is-open');\n    document.body.style.overflow = '';\n  }));\n\n  \/* ---------- Scroll-triggered reveal animations ---------- *\/\n  const revealEls = document.querySelectorAll('.reveal');\n  if ('IntersectionObserver' in window) {\n    const io = new IntersectionObserver(function(entries){\n      entries.forEach(entry => {\n        if (entry.isIntersecting) {\n          entry.target.classList.add('is-visible');\n          io.unobserve(entry.target);\n        }\n      });\n    }, { threshold: 0.15, rootMargin: '0px 0px -40px 0px' });\n    revealEls.forEach((el, i) => { el.style.setProperty('--i', el.dataset.i || 0); io.observe(el); });\n  } else {\n    revealEls.forEach(el => el.classList.add('is-visible'));\n  }\n\n  \/* ---------- Animated counters ---------- *\/\n  const counters = document.querySelectorAll('.counter');\n  function animateCounter(el){\n    const target = parseInt(el.dataset.target, 10) || 0;\n    const duration = 1400;\n    const start = performance.now();\n    function tick(now){\n      const progress = Math.min((now - start) \/ duration, 1);\n      const eased = 1 - Math.pow(1 - progress, 3);\n      el.textContent = Math.round(eased * target);\n      if (progress < 1) requestAnimationFrame(tick);\n    }\n    requestAnimationFrame(tick);\n  }\n  if ('IntersectionObserver' in window && counters.length) {\n    const counterIO = new IntersectionObserver(function(entries){\n      entries.forEach(entry => {\n        if (entry.isIntersecting) {\n          animateCounter(entry.target);\n          counterIO.unobserve(entry.target);\n        }\n      });\n    }, { threshold: 0.6 });\n    counters.forEach(c => counterIO.observe(c));\n  } else {\n    counters.forEach(animateCounter);\n  }\n\n  \/* ---------- Portfolio filtering ---------- *\/\n  const filterBtns = document.querySelectorAll('.filter-btn');\n  const projectCards = document.querySelectorAll('.project-card');\n  filterBtns.forEach(btn => {\n    btn.addEventListener('click', function(){\n      filterBtns.forEach(b => b.setAttribute('aria-pressed', 'false'));\n      btn.setAttribute('aria-pressed', 'true');\n      const filter = btn.dataset.filter;\n      projectCards.forEach(card => {\n        const match = filter === 'all' || card.dataset.category === filter;\n        card.classList.toggle('is-hidden', !match);\n      });\n    });\n  });\n\n  \/* ---------- Contact form validation ---------- *\/\n  const form = document.getElementById('contactForm');\n  const formStatus = document.getElementById('formStatus');\n  form.addEventListener('submit', function(e){\n    e.preventDefault();\n    let valid = true;\n\n    const nameField = document.getElementById('fullName');\n    const emailField = document.getElementById('email');\n    const messageField = document.getElementById('message');\n\n    valid = validateField(nameField, nameField.value.trim().length > 1) && valid;\n    valid = validateField(emailField, \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(emailField.value.trim())) && valid;\n    valid = validateField(messageField, messageField.value.trim().length > 9) && valid;\n\n    if (valid) {\n      formStatus.classList.add('is-success');\n      form.reset();\n      setTimeout(() => formStatus.classList.remove('is-success'), 6000);\n    } else {\n      formStatus.classList.remove('is-success');\n    }\n  });\n  function validateField(field, isValid){\n    const wrap = field.closest('.form-field');\n    wrap.classList.toggle('has-error', !isValid);\n    field.setAttribute('aria-invalid', String(!isValid));\n    return isValid;\n  }\n  \/\/ Clear error state as the user types\n  form.querySelectorAll('input, textarea').forEach(el => {\n    el.addEventListener('input', function(){\n      el.closest('.form-field').classList.remove('has-error');\n    });\n  });\n\n  \/* ---------- Back to top ---------- *\/\n  const backToTop = document.getElementById('backToTop');\n  backToTop.addEventListener('click', function(){\n    window.scrollTo({ top: 0, behavior: 'smooth' });\n  });\n\n  \/* ---------- Smooth-scroll for in-page anchors (fallback for older browsers) ---------- *\/\n  document.querySelectorAll('a[href^=\"#\"]').forEach(a => {\n    a.addEventListener('click', function(e){\n      const id = a.getAttribute('href');\n      if (id.length > 1) {\n        const target = document.querySelector(id);\n        if (target) {\n          e.preventDefault();\n          const y = target.getBoundingClientRect().top + window.scrollY - (document.getElementById('siteNav').offsetHeight - 8);\n          window.scrollTo({ top: y, behavior: 'smooth' });\n        }\n      }\n    });\n  });\n\n})();\n<\/script>\n<\/body>\n<\/html>\t\t\t\t<\/div>\n\t\t\n<\/div>\n\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>GF Greyframe About Services Work Process Team FAQ Contact Start a project About Services Work Process Team FAQ Contact Start [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"disabled","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-310","page","type-page","status-publish","hentry"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"GF Greyframe About Services Work Process Team FAQ Contact Start a project About Services Work Process Team FAQ Contact Start a project Digital product studio \u2014 est. 2016 FIG. 01 \/ HEROGRID 64px \/ N We design and build products people trust. Greyframe partners with founders and product teams to turn early ideas into precise,\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/cafemadhuram.us.cc\/?page_id=310\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Cafe Madhuram - Taste that feels like home\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Bluorng - Cafe Madhuram\" \/>\n\t\t<meta property=\"og:description\" content=\"GF Greyframe About Services Work Process Team FAQ Contact Start a project About Services Work Process Team FAQ Contact Start a project Digital product studio \u2014 est. 2016 FIG. 01 \/ HEROGRID 64px \/ N We design and build products people trust. Greyframe partners with founders and product teams to turn early ideas into precise,\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/cafemadhuram.us.cc\/?page_id=310\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/cafemadhuram.us.cc\/wp-content\/uploads\/2026\/06\/LOGO.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/cafemadhuram.us.cc\/wp-content\/uploads\/2026\/06\/LOGO.png\" \/>\n\t\t<meta property=\"og:image:width\" content=\"2000\" \/>\n\t\t<meta property=\"og:image:height\" content=\"2000\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-07-08T05:57:29+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-07-08T06:00:59+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Bluorng - Cafe Madhuram\" \/>\n\t\t<meta name=\"twitter:description\" content=\"GF Greyframe About Services Work Process Team FAQ Contact Start a project About Services Work Process Team FAQ Contact Start a project Digital product studio \u2014 est. 2016 FIG. 01 \/ HEROGRID 64px \/ N We design and build products people trust. Greyframe partners with founders and product teams to turn early ideas into precise,\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/cafemadhuram.us.cc\/wp-content\/uploads\/2026\/06\/LOGO.png\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/cafemadhuram.us.cc\\\/?page_id=310#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/cafemadhuram.us.cc#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/cafemadhuram.us.cc\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/cafemadhuram.us.cc\\\/?page_id=310#listItem\",\"name\":\"Bluorng\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/cafemadhuram.us.cc\\\/?page_id=310#listItem\",\"position\":2,\"name\":\"Bluorng\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/cafemadhuram.us.cc#listItem\",\"name\":\"Home\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/cafemadhuram.us.cc\\\/#organization\",\"name\":\"Cafe Madhuram\",\"description\":\"Taste that feels like home\",\"url\":\"https:\\\/\\\/cafemadhuram.us.cc\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/cafemadhuram.us.cc\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/LOGO.png\",\"@id\":\"https:\\\/\\\/cafemadhuram.us.cc\\\/?page_id=310\\\/#organizationLogo\",\"width\":2000,\"height\":2000},\"image\":{\"@id\":\"https:\\\/\\\/cafemadhuram.us.cc\\\/?page_id=310\\\/#organizationLogo\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/cafemadhuram.us.cc\\\/?page_id=310#webpage\",\"url\":\"https:\\\/\\\/cafemadhuram.us.cc\\\/?page_id=310\",\"name\":\"Bluorng - Cafe Madhuram\",\"description\":\"GF Greyframe About Services Work Process Team FAQ Contact Start a project About Services Work Process Team FAQ Contact Start a project Digital product studio \\u2014 est. 2016 FIG. 01 \\\/ HEROGRID 64px \\\/ N We design and build products people trust. Greyframe partners with founders and product teams to turn early ideas into precise,\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/cafemadhuram.us.cc\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/cafemadhuram.us.cc\\\/?page_id=310#breadcrumblist\"},\"datePublished\":\"2026-07-08T05:57:29+00:00\",\"dateModified\":\"2026-07-08T06:00:59+00:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/cafemadhuram.us.cc\\\/#website\",\"url\":\"https:\\\/\\\/cafemadhuram.us.cc\\\/\",\"name\":\"Cafe Madhuram\",\"description\":\"Taste that feels like home\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/cafemadhuram.us.cc\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Bluorng - Cafe Madhuram","description":"GF Greyframe About Services Work Process Team FAQ Contact Start a project About Services Work Process Team FAQ Contact Start a project Digital product studio \u2014 est. 2016 FIG. 01 \/ HEROGRID 64px \/ N We design and build products people trust. Greyframe partners with founders and product teams to turn early ideas into precise,","canonical_url":"https:\/\/cafemadhuram.us.cc\/?page_id=310","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BreadcrumbList","@id":"https:\/\/cafemadhuram.us.cc\/?page_id=310#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/cafemadhuram.us.cc#listItem","position":1,"name":"Home","item":"https:\/\/cafemadhuram.us.cc","nextItem":{"@type":"ListItem","@id":"https:\/\/cafemadhuram.us.cc\/?page_id=310#listItem","name":"Bluorng"}},{"@type":"ListItem","@id":"https:\/\/cafemadhuram.us.cc\/?page_id=310#listItem","position":2,"name":"Bluorng","previousItem":{"@type":"ListItem","@id":"https:\/\/cafemadhuram.us.cc#listItem","name":"Home"}}]},{"@type":"Organization","@id":"https:\/\/cafemadhuram.us.cc\/#organization","name":"Cafe Madhuram","description":"Taste that feels like home","url":"https:\/\/cafemadhuram.us.cc\/","logo":{"@type":"ImageObject","url":"https:\/\/cafemadhuram.us.cc\/wp-content\/uploads\/2026\/06\/LOGO.png","@id":"https:\/\/cafemadhuram.us.cc\/?page_id=310\/#organizationLogo","width":2000,"height":2000},"image":{"@id":"https:\/\/cafemadhuram.us.cc\/?page_id=310\/#organizationLogo"}},{"@type":"WebPage","@id":"https:\/\/cafemadhuram.us.cc\/?page_id=310#webpage","url":"https:\/\/cafemadhuram.us.cc\/?page_id=310","name":"Bluorng - Cafe Madhuram","description":"GF Greyframe About Services Work Process Team FAQ Contact Start a project About Services Work Process Team FAQ Contact Start a project Digital product studio \u2014 est. 2016 FIG. 01 \/ HEROGRID 64px \/ N We design and build products people trust. Greyframe partners with founders and product teams to turn early ideas into precise,","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/cafemadhuram.us.cc\/#website"},"breadcrumb":{"@id":"https:\/\/cafemadhuram.us.cc\/?page_id=310#breadcrumblist"},"datePublished":"2026-07-08T05:57:29+00:00","dateModified":"2026-07-08T06:00:59+00:00"},{"@type":"WebSite","@id":"https:\/\/cafemadhuram.us.cc\/#website","url":"https:\/\/cafemadhuram.us.cc\/","name":"Cafe Madhuram","description":"Taste that feels like home","inLanguage":"en-US","publisher":{"@id":"https:\/\/cafemadhuram.us.cc\/#organization"}}]},"og:locale":"en_US","og:site_name":"Cafe Madhuram - Taste that feels like home","og:type":"article","og:title":"Bluorng - Cafe Madhuram","og:description":"GF Greyframe About Services Work Process Team FAQ Contact Start a project About Services Work Process Team FAQ Contact Start a project Digital product studio \u2014 est. 2016 FIG. 01 \/ HEROGRID 64px \/ N We design and build products people trust. Greyframe partners with founders and product teams to turn early ideas into precise,","og:url":"https:\/\/cafemadhuram.us.cc\/?page_id=310","og:image":"https:\/\/cafemadhuram.us.cc\/wp-content\/uploads\/2026\/06\/LOGO.png","og:image:secure_url":"https:\/\/cafemadhuram.us.cc\/wp-content\/uploads\/2026\/06\/LOGO.png","og:image:width":2000,"og:image:height":2000,"article:published_time":"2026-07-08T05:57:29+00:00","article:modified_time":"2026-07-08T06:00:59+00:00","twitter:card":"summary_large_image","twitter:title":"Bluorng - Cafe Madhuram","twitter:description":"GF Greyframe About Services Work Process Team FAQ Contact Start a project About Services Work Process Team FAQ Contact Start a project Digital product studio \u2014 est. 2016 FIG. 01 \/ HEROGRID 64px \/ N We design and build products people trust. Greyframe partners with founders and product teams to turn early ideas into precise,","twitter:image":"https:\/\/cafemadhuram.us.cc\/wp-content\/uploads\/2026\/06\/LOGO.png"},"aioseo_meta_data":{"post_id":"310","title":null,"description":null,"keywords":null,"keyphrases":null,"focus_keyword":null,"additional_keywords":null,"truseo_locale":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_custom_url":null,"og_image_custom_fields":null,"og_image_url":null,"og_image_width":null,"og_image_height":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_image_url":null,"twitter_title":null,"twitter_description":null,"schema_type":"default","schema_type_options":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"limit_modified_date":false,"ai":null,"breadcrumb_settings":null,"seo_analyzer_scan_date":null,"created":"2026-08-18 05:51:40","updated":"2026-08-18 05:51:40"},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/cafemadhuram.us.cc\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tBluorng\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/cafemadhuram.us.cc"},{"label":"Bluorng","link":"https:\/\/cafemadhuram.us.cc\/?page_id=310"}],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Bluorng - Cafe Madhuram<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cafemadhuram.us.cc\/?page_id=310\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Bluorng - Cafe Madhuram\" \/>\n<meta property=\"og:description\" content=\"GF Greyframe About Services Work Process Team FAQ Contact Start a project About Services Work Process Team FAQ Contact Start [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cafemadhuram.us.cc\/?page_id=310\" \/>\n<meta property=\"og:site_name\" content=\"Cafe Madhuram\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-08T06:00:59+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/cafemadhuram.us.cc\\\/?page_id=310\",\"url\":\"https:\\\/\\\/cafemadhuram.us.cc\\\/?page_id=310\",\"name\":\"Bluorng - Cafe Madhuram\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/cafemadhuram.us.cc\\\/#website\"},\"datePublished\":\"2026-07-08T05:57:29+00:00\",\"dateModified\":\"2026-07-08T06:00:59+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/cafemadhuram.us.cc\\\/?page_id=310#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/cafemadhuram.us.cc\\\/?page_id=310\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/cafemadhuram.us.cc\\\/?page_id=310#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/cafemadhuram.us.cc\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Bluorng\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/cafemadhuram.us.cc\\\/#website\",\"url\":\"https:\\\/\\\/cafemadhuram.us.cc\\\/\",\"name\":\"Cafe Madhuram\",\"description\":\"Taste that feels like home\",\"publisher\":{\"@id\":\"https:\\\/\\\/cafemadhuram.us.cc\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/cafemadhuram.us.cc\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/cafemadhuram.us.cc\\\/#organization\",\"name\":\"Cafe Madhuram\",\"url\":\"https:\\\/\\\/cafemadhuram.us.cc\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/cafemadhuram.us.cc\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/cafemadhuram.us.cc\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/LOGO.png\",\"contentUrl\":\"https:\\\/\\\/cafemadhuram.us.cc\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/LOGO.png\",\"width\":2000,\"height\":2000,\"caption\":\"Cafe Madhuram\"},\"image\":{\"@id\":\"https:\\\/\\\/cafemadhuram.us.cc\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Bluorng - Cafe Madhuram","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/cafemadhuram.us.cc\/?page_id=310","og_locale":"en_US","og_type":"article","og_title":"Bluorng - Cafe Madhuram","og_description":"GF Greyframe About Services Work Process Team FAQ Contact Start a project About Services Work Process Team FAQ Contact Start [&hellip;]","og_url":"https:\/\/cafemadhuram.us.cc\/?page_id=310","og_site_name":"Cafe Madhuram","article_modified_time":"2026-07-08T06:00:59+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/cafemadhuram.us.cc\/?page_id=310","url":"https:\/\/cafemadhuram.us.cc\/?page_id=310","name":"Bluorng - Cafe Madhuram","isPartOf":{"@id":"https:\/\/cafemadhuram.us.cc\/#website"},"datePublished":"2026-07-08T05:57:29+00:00","dateModified":"2026-07-08T06:00:59+00:00","breadcrumb":{"@id":"https:\/\/cafemadhuram.us.cc\/?page_id=310#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cafemadhuram.us.cc\/?page_id=310"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/cafemadhuram.us.cc\/?page_id=310#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cafemadhuram.us.cc\/"},{"@type":"ListItem","position":2,"name":"Bluorng"}]},{"@type":"WebSite","@id":"https:\/\/cafemadhuram.us.cc\/#website","url":"https:\/\/cafemadhuram.us.cc\/","name":"Cafe Madhuram","description":"Taste that feels like home","publisher":{"@id":"https:\/\/cafemadhuram.us.cc\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cafemadhuram.us.cc\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/cafemadhuram.us.cc\/#organization","name":"Cafe Madhuram","url":"https:\/\/cafemadhuram.us.cc\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cafemadhuram.us.cc\/#\/schema\/logo\/image\/","url":"https:\/\/cafemadhuram.us.cc\/wp-content\/uploads\/2026\/06\/LOGO.png","contentUrl":"https:\/\/cafemadhuram.us.cc\/wp-content\/uploads\/2026\/06\/LOGO.png","width":2000,"height":2000,"caption":"Cafe Madhuram"},"image":{"@id":"https:\/\/cafemadhuram.us.cc\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/cafemadhuram.us.cc\/index.php?rest_route=\/wp\/v2\/pages\/310","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cafemadhuram.us.cc\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/cafemadhuram.us.cc\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/cafemadhuram.us.cc\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cafemadhuram.us.cc\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=310"}],"version-history":[{"count":11,"href":"https:\/\/cafemadhuram.us.cc\/index.php?rest_route=\/wp\/v2\/pages\/310\/revisions"}],"predecessor-version":[{"id":362,"href":"https:\/\/cafemadhuram.us.cc\/index.php?rest_route=\/wp\/v2\/pages\/310\/revisions\/362"}],"wp:attachment":[{"href":"https:\/\/cafemadhuram.us.cc\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=310"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}