<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Willow Lopez</title>
    <description>The latest articles on DEV Community by Willow Lopez (@oxygen56).</description>
    <link>https://dev.to/oxygen56</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4073702%2F9d7993f9-4751-496d-bd6a-bb535756047d.jpg</url>
      <title>DEV Community: Willow Lopez</title>
      <link>https://dev.to/oxygen56</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/oxygen56"/>
    <language>en</language>
    <item>
      <title>The Home Ratio: A Pure-CSS Serving Ritual</title>
      <dc:creator>Willow Lopez</dc:creator>
      <pubDate>Wed, 12 Aug 2026 00:03:03 +0000</pubDate>
      <link>https://dev.to/oxygen56/the-home-ratio-a-pure-css-serving-ritual-5268</link>
      <guid>https://dev.to/oxygen56/the-home-ratio-a-pure-css-serving-ritual-5268</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for &lt;a href="https://dev.to/challenges/frontend-2026-07-29"&gt;Frontend Challenge - Comfort Food Edition, CSS Art&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Inspiration
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The Home Ratio&lt;/strong&gt; is an interactive CSS artwork about 番茄炒蛋—tomato and egg—and the small differences that let one familiar dish hold several remembered rooms.&lt;/p&gt;

&lt;p&gt;Choose one of three balances: a bright 60:40 window, a shared 50:50 table, or a soft 40:60 morning. The same CSS-drawn kitchen recomposes itself—ingredients, sauce, wall light, window weather, clock, table textile, and handwritten note move as one scene.&lt;/p&gt;

&lt;p&gt;Then use a second native control to serve the table. The lid lifts, steam rises, and another rice bowl slides into view. The final image is not just a dish; it is a place kept for someone.&lt;/p&gt;

&lt;p&gt;There is no “authentic” winning ratio. The interaction is the point: a shared dish can hold several equally valid memories.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkjce7o2w3xnzaa7gwcnh.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkjce7o2w3xnzaa7gwcnh.gif" alt="A short silent tour of three remembered rooms and the CSS-drawn table reveal" width="640" height="461"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://oxygen56.github.io/dev-frontend-comfort-food/css-art/" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;oxygen56.github.io&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;&lt;a href="https://oxygen56.github.io/dev-frontend-comfort-food/css-art/" rel="noopener noreferrer"&gt;Open the live CSS Art experience&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Oxygen56/dev-frontend-comfort-food/tree/main/docs/css-art" rel="noopener noreferrer"&gt;Read the source&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Journey
&lt;/h2&gt;

&lt;h3&gt;
  
  
  How I drew it
&lt;/h3&gt;

&lt;p&gt;The artwork uses only HTML and CSS:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;radio inputs drive three whole-room compositions;&lt;/li&gt;
&lt;li&gt;a checkbox drives the lid, steam, and second-place-setting reveal;&lt;/li&gt;
&lt;li&gt;gradients make the sauce, ceramic, changing window light, weather, wall glow, rice, textile, and wood grain;&lt;/li&gt;
&lt;li&gt;borders, border radii, transforms, and pseudo-elements draw every ingredient;&lt;/li&gt;
&lt;li&gt;CSS custom properties let one composition rebalance tomato and egg and retune the room without duplicating the artwork.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There is no JavaScript, SVG, canvas, image, icon library, external font, or runtime dependency.&lt;/p&gt;

&lt;h3&gt;
  
  
  Accessibility and resilience
&lt;/h3&gt;

&lt;p&gt;The controls are native form elements with visible labels and high-contrast focus rings. The complete piece works with touch, mouse, Tab, arrow keys, and Space. It reflows without horizontal scrolling at 320 px, and &lt;code&gt;prefers-reduced-motion&lt;/code&gt; reduces every animation and transition to an effectively static state.&lt;/p&gt;

&lt;p&gt;The repository includes automated browser checks for keyboard operation, 320 px reflow, slow connections, reduced motion, external requests, console errors, and WCAG A/AA issues with axe-core. The final judge simulation passed across Chromium, Firefox, and WebKit.&lt;/p&gt;

&lt;h3&gt;
  
  
  AI assistance and rights
&lt;/h3&gt;

&lt;p&gt;OpenAI Codex was used as the primary implementation assistant for research synthesis, interaction prototyping, HTML/CSS development, test authoring, and technical-writing support. The author directed the concept and acceptance criteria. Final review covered the source, behavior, accessibility evidence, third-party-rights status, and public claims.&lt;/p&gt;

&lt;p&gt;All artwork and copy are original to this entry. The screenshots and silent demo are direct recordings of that original browser-rendered work. No AI-generated media or third-party visual, font, text, brand mark, API, or dataset is included.&lt;/p&gt;

</description>
      <category>css</category>
      <category>frontendchallenge</category>
      <category>devchallenge</category>
    </item>
    <item>
      <title>The Home Ratio: Tune a Bowl, Keep a Memory Card</title>
      <dc:creator>Willow Lopez</dc:creator>
      <pubDate>Tue, 11 Aug 2026 23:57:25 +0000</pubDate>
      <link>https://dev.to/oxygen56/the-home-ratio-a-landing-page-tuned-by-memory-1af9</link>
      <guid>https://dev.to/oxygen56/the-home-ratio-a-landing-page-tuned-by-memory-1af9</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for &lt;a href="https://dev.to/challenges/frontend-2026-07-29"&gt;Frontend Challenge - Comfort Food Edition, Perfect Landing&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The Home Ratio&lt;/strong&gt; is a landing-page experience for a simple idea: recipes record steps, but ratios can leave room for people.&lt;/p&gt;

&lt;p&gt;The page begins with one culturally specific dish—番茄炒蛋, tomato and egg—without declaring one definitive version. Its centerpiece is a three-step ritual:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;tune a keyboard-native ratio between soft egg and bright tomato;&lt;/li&gt;
&lt;li&gt;place the bowl in a weeknight glow, rain-window quiet, or an unhurried Sunday;&lt;/li&gt;
&lt;li&gt;optionally keep one private word for a person, place, or season.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The page seals those choices into an original memory card and a copyable sentence. The page does not store or send the optional word: there is no account, network request, cookie, browser storage, or analytics endpoint. It reaches the device clipboard only when the visitor explicitly chooses Copy.&lt;/p&gt;

&lt;p&gt;The result is not a recipe calculator. It is a small interaction that gives an unwritten preference a shape worth keeping.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F83k6ctqpsms3nr6msksx.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F83k6ctqpsms3nr6msksx.gif" alt="A short silent tour from native ratio dial to private browser-made memory card" width="640" height="461"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://oxygen56.github.io/dev-frontend-comfort-food/perfect-landing/" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;oxygen56.github.io&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;&lt;a href="https://oxygen56.github.io/dev-frontend-comfort-food/perfect-landing/" rel="noopener noreferrer"&gt;Open the live Perfect Landing experience&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Oxygen56/dev-frontend-comfort-food/tree/main/docs/perfect-landing" rel="noopener noreferrer"&gt;Read the source&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Journey
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The interaction model
&lt;/h3&gt;

&lt;p&gt;I used a real HTML range input rather than a simulated drag surface. That decision gives the centerpiece keyboard, touch, and assistive-technology behavior by default. Arrow keys change the ratio in five-point steps, while a polite live region announces the new balance. A synchronized mini-bowl keeps the visual response in the same viewport as the control.&lt;/p&gt;

&lt;p&gt;The three moment choices are native radio inputs, and the optional word is handled as text—not HTML. Submitting moves focus to the completed card; copying produces the same visible sentence. JavaScript only enables the enhanced experience after initialization succeeds. If JavaScript is disabled or the application file fails to load, the interactive maker is replaced by three complete ratio portraits plus the full moment guide.&lt;/p&gt;

&lt;h3&gt;
  
  
  Design system
&lt;/h3&gt;

&lt;p&gt;The visual language comes from the dish itself: tomato red, egg yellow, enamel blue-green, warm paper, and dark brown ink. Every hero ingredient is a browser-native shape built from gradients, borders, radii, and transforms. System fonts keep the experience fast and free of external rights or availability risk.&lt;/p&gt;

&lt;p&gt;The page was designed and tested for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;complete keyboard access and highly visible focus;&lt;/li&gt;
&lt;li&gt;320 px reflow without horizontal scrolling;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;prefers-reduced-motion&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;complete no-JavaScript and failed-script paths;&lt;/li&gt;
&lt;li&gt;local-only personalization with no storage or external requests;&lt;/li&gt;
&lt;li&gt;WCAG A/AA automated checks;&lt;/li&gt;
&lt;li&gt;zero external runtime requests;&lt;/li&gt;
&lt;li&gt;final verification in Chromium, Firefox, and WebKit, including a slow-connection path.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  AI assistance and rights
&lt;/h3&gt;

&lt;p&gt;OpenAI Codex was used as the primary implementation assistant for research synthesis, interaction prototyping, HTML/CSS/JavaScript development, test authoring, and technical-writing support. The author directed the concept and acceptance criteria. Final review covered the source, behavior, accessibility evidence, third-party-rights status, and public claims.&lt;/p&gt;

&lt;p&gt;All artwork and copy are original to this entry. The screenshots and silent demo are direct recordings of that original browser-rendered work. No AI-generated media or third-party visual, font, text, brand mark, API, or dataset is included.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>frontendchallenge</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
