<?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: EIO • Emmanuel Imolorhe</title>
    <description>The latest articles on DEV Community by EIO • Emmanuel Imolorhe (@eioluseyi).</description>
    <link>https://dev.to/eioluseyi</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F645749%2Fec8a7f1e-0c41-4d6f-adbd-2394e363dd0d.jpeg</url>
      <title>DEV Community: EIO • Emmanuel Imolorhe</title>
      <link>https://dev.to/eioluseyi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/eioluseyi"/>
    <language>en</language>
    <item>
      <title>CSS is Emotional: A Conversation with Eric Meyer</title>
      <dc:creator>EIO • Emmanuel Imolorhe</dc:creator>
      <pubDate>Fri, 25 Apr 2025 14:00:00 +0000</pubDate>
      <link>https://dev.to/eioluseyi/css-is-emotional-a-conversation-with-eric-meyer-507o</link>
      <guid>https://dev.to/eioluseyi/css-is-emotional-a-conversation-with-eric-meyer-507o</guid>
      <description>&lt;p&gt;In the ever-evolving world of web development, few voices carry the weight of experience and wisdom that Eric Meyer's does. As one of the pioneers who helped shape CSS into what it is today, his journey through the history of the web is of utmost importance into not just the technical aspects of our craft, but also the human elements that fortify it.&lt;/p&gt;

&lt;p&gt;I recently had the privilege of sitting down with Eric for a conversation about CSS, its history, and the numerous ways in which our humanity influences the technology we create.&lt;/p&gt;

&lt;p&gt;While his original career plan might have been to pursue graduate studies in English, the web came along and changed everything.&lt;/p&gt;

&lt;h2&gt;
  
  
  CSS: A Language of Its Own
&lt;/h2&gt;

&lt;p&gt;Eric sees a connection between his love of history and language and his work with CSS.&lt;br&gt;
&lt;em&gt;"I still do languages, still try to figure out the grammar of them as it were,"&lt;/em&gt; he notes.&lt;/p&gt;

&lt;p&gt;This linguistic approach to CSS has informed Eric's extensive work teaching and documenting the language, most notably in his comprehensive reference book &lt;strong&gt;"CSS: The Definitive Guide,"&lt;/strong&gt; now in its fifth edition (co-authored with Estelle Weyl). At nearly 1,200 pages, it's a testament to Eric's dedication to helping others understand CSS deeply, not just use it superficially.&lt;br&gt;
&lt;em&gt;"I didn't write this because I just wanted to have a huge pile of paper or a huge PDF or whatever with my name on it. I wrote this because I want people to be able to use CSS and I want them to understand how to use CSS,"&lt;/em&gt; he says.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Human-Centered Web
&lt;/h2&gt;

&lt;p&gt;Throughout our conversation, Eric repeatedly emphasized how the web's fundamental design prioritizes human needs and accessibility.&lt;br&gt;
&lt;em&gt;"The web is a fundamentally human-first medium, a fundamentally human-first technology,"&lt;/em&gt; Eric states with conviction. &lt;em&gt;"There are too many technologies in the world today that are not."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This human-centered approach extends to CSS specifications themselves. When I asked about the major driving forces behind decisions in the CSS spec, Eric explained that it comes down to what capabilities can be given to authors, designers, and developers, but to also consider privacy, security, and accessibility.&lt;br&gt;
&lt;em&gt;"CSS, like JavaScript, like DOM, like HTML for that matter goes through security, privacy, accessibility reviews. Is it going to leak private information? Is it going to potentially compromise user's security? Or does it create an attack surface for people to try to gain unauthorized access to machines?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;He gave a fascinating example of how visited link styling was completely changed in 2009-2010 for privacy reasons. Before that change, websites could determine whether you had visited certain sites based on the styling of links. Now, browsers deliberately "lie" in the DOM about visited link colors to prevent this privacy breach.&lt;br&gt;
&lt;em&gt;"If I say a:visited purple, which is the standard behavior of a link that I have not visited as blue and a link that I have visited as purple. If you ask through the DOM in JavaScript what the color of a visited link is, it will tell you blue or whatever the unvisited link color is on a given site. So as not to leak that information."&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Rebecca Purple: When Humanity and Technology Meets
&lt;/h2&gt;

&lt;p&gt;Perhaps no moment better illustrates the intersection of humanity and technology in CSS than the story behind Rebecca Purple (color value #663399), which was named in memory of Eric's daughter Rebecca, who passed away from brain cancer in 2014 at the age of six.&lt;br&gt;
&lt;em&gt;"My middle daughter, Rebecca, in 2013, when she was just a few months into being five, was discovered to have aggressive brain cancer. We fought really hard to get her treatment. I mean, we got her treatment and she had another nine months of really good life, but she died in 2014 on her sixth birthday."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;After her passing, the web community rallied to honor her memory by proposing a color be named after her in CSS. The proposal moved through the W3C process with remarkable speed, and within two weeks it was officially added to the specification.&lt;br&gt;
&lt;em&gt;"What it taught me was that community can influence technologies,"&lt;/em&gt; Eric reflects. &lt;em&gt;"Like coming together and saying, 'We want to memorialize this person, and here's how we want to do it'"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The color continues to hold significance in the CSS world, when CSS got a new logo in fall 2024, the community overwhelmingly chose Rebecca Purple as the logo color.&lt;br&gt;
&lt;em&gt;"In the way that this is a part of the history of the web, if being remembered means you're not truly gone, &lt;strong&gt;she will outlive me&lt;/strong&gt;, which is what any parent wants for their child anyway. This is the only way that she can do that, unfortunately, that I know of, but I'll take it."&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Bringing Our Humanity to Our Work
&lt;/h2&gt;

&lt;p&gt;When I asked how we can bring more of our humanity into technical spaces, Eric emphasized the importance of approaching our work with the same genuine qualities that made Rebecca special. These qualities include joy, curiosity, creativity, and assertiveness.&lt;br&gt;
&lt;em&gt;"&lt;strong&gt;Bring yourself to what you do.&lt;/strong&gt; If you're joyful and curious, bring that to what you do and what you create. If you're reserved and analytical, bring that to what you do. There's more than enough room in this world for all kinds of approaches to things."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;He encourages us to maintain a childlike perspective on whether something will help or harm, to focus on being constructive, and to consider how our work affects communities, and not just individuals.&lt;br&gt;
&lt;em&gt;"We live in a society, right? Whatever society that is. I live in a society that's different from yours, but in almost all, I think probably in every fundamentally important way, they're the same."&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Looking to the Future
&lt;/h2&gt;

&lt;p&gt;As we look toward the future of CSS, Eric believes we'll continue to see advancements that balance pragmatism with emotional intelligence, we will consider not just what's technically possible, but how it affects real people.&lt;br&gt;
He points to exciting developments like anchor positioning, which is starting to land in browsers and will make previously complex layouts simple to achieve. But he emphasizes that these technical advancements will always be evaluated through the lens of human impact.&lt;br&gt;
&lt;em&gt;"The human-centric property of all these technologies, the human-first design principle continues to be a way that all these technologies are evaluated. And I hope that that will never change."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;For Eric, this human-centered approach is what makes the web unique and valuable:&lt;br&gt;
&lt;em&gt;"You can still get the first webpage ever written and have it rendered in your browser and it works. And it doesn't even look that different... The links work. And I can take one of the very first web browsers and display my website in it... I can read the text. I can follow the hyperlinks. I can go to Wikipedia in this browser and I can read Wikipedia. I can't see any images because it's literally a text mode browser. It doesn't have image capability, but I can read the content using a browser that came out in 1991."&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Moving Forward
&lt;/h2&gt;

&lt;p&gt;At the close of our conversation, Eric talked about his family and how they've moved forward. "We move forward..." he says simply.&lt;/p&gt;

&lt;p&gt;He reflected on grief and healing with wisdom gained through experience: &lt;em&gt;"Someone told me when my mother died, about how you don't get over it, but you get used to it, which I think is very true. You don't get over it in the sense of being able to put it away and then like that's done. It's never done, but you get used to it."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;His message for those experiencing grief is powerful: &lt;em&gt;"For anyone who's listening to this, who maybe has their own fresh grief of some variety... If you're wondering how you can ever live with this, it's that you get used to it. But, I would also say &lt;strong&gt;you're never required to get over it&lt;/strong&gt;... Nobody else gets to decide for you when you've moved to different stages of grief. And for a deep enough grief, it never really leaves you."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;My conversation with Eric Meyer reminded me that behind every line of code, every CSS property, and every web specification are people. People who have histories, joys, sorrows, and humanity. As we build the web of tomorrow, may we remember to bring not just our technical skills, but our full selves to the work. May we truly create technologies that serve and mirror our shared humanity.&lt;/p&gt;

&lt;p&gt;CSS itself shares this humanity. It's flexible, and  adaptable. It can sometimes be frustrating but ultimately forgiving. It allows one to creatively express themselves, and still maintain structure. CSS embraces the messiness that is inherent in human design but also strives for consistency.&lt;/p&gt;

&lt;p&gt;As we continue to evolve the web, let's remember that our code doesn't just render pixels on screens, it also creates ways for humans to connect with themselves. CSS enables expression, and influences our experiences. Our technical choices carry lots of emotional weight. Why? Because at its root is a web that is about people connecting with other people. And that connection is an exceptional human element intertwined through every specification and standard. All these remind us that indeed, CSS is Emotional.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;&lt;strong&gt;Wow! What a journey it's been!&lt;/strong&gt; It has been an incredible honor to speak with Eric Meyer for this grand finale. As someone whose work has shaped the very foundation of how we think about and use CSS, his candid insights are truly invaluable. You can follow him on &lt;a href="https://meyerweb.com/" rel="noopener noreferrer"&gt;his website&lt;/a&gt; or &lt;a href="https://front-end.social/@meyerweb" rel="noopener noreferrer"&gt;Mastodon&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Interested in the video version of this interview? &lt;a href="https://www.youtube.com/watch?v=faXL1AhjRkY&amp;amp;list=PLQwNtXv8ZvTH82unxoN-vm1R_YrW4avje" rel="noopener noreferrer"&gt;Check it out here!&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;If you're just joining us or want to relive the magic, dive into &lt;a href="https://dev.to/eioluseyi/css-is-emotional-a-series-about-code-feelings-and-the-space-between-lhf"&gt;the complete collection&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;And one more time, here's the &lt;a href="https://codepen.io/eioluseyi/full/YPPXdmq" rel="noopener noreferrer"&gt;CodePen&lt;/a&gt; used to design the banner 😊&lt;/p&gt;




&lt;h3&gt;
  
  
  About the Author
&lt;/h3&gt;

&lt;p&gt;Emmanuel Imolorhe (EIO) is a Frontend Engineer passionate about CSS.&lt;br&gt;
Check out my CSS videos on &lt;a href="https://youtube.com/@eioluseyi" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Connect with me
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://twitter.com/eioluseyi" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; • &lt;a href="https://bsky.app/profile/eioluseyi.bsky.social" rel="noopener noreferrer"&gt;Bluesky&lt;/a&gt; • &lt;a href="https://mastodon.social/@eioluseyi" rel="noopener noreferrer"&gt;Mastodon&lt;/a&gt; • &lt;a href="https://linkedin.com/in/eioluseyi" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; • &lt;a href="https://eioluseyi.github.io" rel="noopener noreferrer"&gt;Website&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Did this post help you? Have thoughts to share? Let's continue the conversation in the comments below!&lt;/em&gt;&lt;/p&gt;



</description>
      <category>webdev</category>
      <category>programming</category>
      <category>css</category>
      <category>emotion</category>
    </item>
    <item>
      <title>CSS is Emotional: Technical Debt - The Emotional Baggage of CSS</title>
      <dc:creator>EIO • Emmanuel Imolorhe</dc:creator>
      <pubDate>Tue, 08 Apr 2025 00:10:12 +0000</pubDate>
      <link>https://dev.to/eioluseyi/css-is-emotional-technical-debt-the-emotional-baggage-of-css-29dl</link>
      <guid>https://dev.to/eioluseyi/css-is-emotional-technical-debt-the-emotional-baggage-of-css-29dl</guid>
      <description>&lt;p&gt;In the beginning, there was hope. A blank stylesheet, pristine and full of possibility. The developer's fingers hovered over the keyboard, mind alight with visions of clean architecture, semantic class names, and a system that would scale gracefully into the future.&lt;/p&gt;

&lt;p&gt;But the world of web development is not governed by hope alone.&lt;/p&gt;

&lt;p&gt;It starts innocently enough. A deadline approaches. The clock ticks louder than good intentions. The developer types:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="c"&gt;/* Quick fix - TODO: Refactor later */&lt;/span&gt;
&lt;span class="nc"&gt;.header-nav-item&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;margin-right&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;-12px&lt;/span&gt; &lt;span class="cp"&gt;!important&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* Fixes alignment issue in Chrome */&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And in this moment—this small compromise between perfection and pragmatism—technical debt is born.&lt;/p&gt;

&lt;h2&gt;
  
  
  Later never comes
&lt;/h2&gt;

&lt;p&gt;The comment remains, a fossil embedded in the codebase, evidence of a promise unfulfilled. One day becomes one week becomes one year. The temporary solution crystallises into permanent architecture.&lt;/p&gt;

&lt;p&gt;This is the nature of CSS technical debt. Not a sudden bankruptcy but a slow accumulation of small compromises. A negative margin here. An important flag there. Specificity battles waged and lost in the quiet hours before launch. Each decision alone seems innocent enough, each hack justified by circumstance, until one day the developer opens the stylesheet and can no longer recognise what they've created.&lt;/p&gt;

&lt;p&gt;The stylesheet grows, layer upon layer, a sedimentary record of changing requirements, shifting designs, and rotating team members. If one were to excavate, they might find strata that tell the story of the project's evolution:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="c"&gt;/* Layer 1: The Foundation (2022) */&lt;/span&gt;
&lt;span class="nc"&gt;.button&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;blue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;white&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10px&lt;/span&gt; &lt;span class="m"&gt;15px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c"&gt;/* Layer 2: The Marketing Pivot (2023) */&lt;/span&gt;
&lt;span class="nc"&gt;.marketing&lt;/span&gt; &lt;span class="nc"&gt;.button&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#0057B8&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;12px&lt;/span&gt; &lt;span class="m"&gt;18px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c"&gt;/* Layer 3: The Homepage Redesign (2023) */&lt;/span&gt;
&lt;span class="nc"&gt;.homepage&lt;/span&gt; &lt;span class="nc"&gt;.button&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#0057B8&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;14px&lt;/span&gt; &lt;span class="m"&gt;20px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c"&gt;/* Layer 4: Mobile Adaptation (2024) */&lt;/span&gt;
&lt;span class="k"&gt;@media&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;max-width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;768px&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nc"&gt;.button&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;16px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c"&gt;/* Layer 5: The Rebranding (2025) */&lt;/span&gt;
&lt;span class="nc"&gt;.button&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#3A5CCC&lt;/span&gt; &lt;span class="cp"&gt;!important&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* Temporary until we update all instances */&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And the developer did not set out to create this complexity. They meant to build something beautiful. Something maintainable. But the road to specificity hell is paved with &lt;code&gt;!important&lt;/code&gt; declarations.&lt;/p&gt;

&lt;h2&gt;
  
  
  And with debt came dread
&lt;/h2&gt;

&lt;p&gt;The emotional burden of this debt weighs heavy. When asked to make a "simple color change," the developer's heart races. There are too many places to look, too many potential side effects. The task that should take minutes stretches into hours. When a new team member asks why things are structured this way, shame colors the explanation. "Historical reasons," they say, the universal euphemism for "mistakes were made, but we've been too busy to fix them."&lt;/p&gt;

&lt;p&gt;In code reviews, defensiveness becomes the default posture. Everyone knows another hack is being added to the pile, but the alternative—addressing the underlying architecture—feels impossible under current constraints. The veteran developers carry a mental map of landmines in the codebase: which sections can be touched safely and which might trigger a cascade of unintended consequences.&lt;/p&gt;

&lt;p&gt;This is technical debt not as a financial concept but as emotional baggage. The anxiety before each deployment. The resignation of adding another special case. The frustration of inheritance. These feelings are as real as the code that spawned them.&lt;/p&gt;

&lt;h2&gt;
  
  
  But there is another way
&lt;/h2&gt;

&lt;p&gt;It begins with acknowledgment. The developers gather around a screen, looking not at what they hoped to build but at what they've actually created:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="c"&gt;/* Audit Results - April 2025 */&lt;/span&gt;
&lt;span class="c"&gt;/* 12,458 lines of CSS */&lt;/span&gt;
&lt;span class="c"&gt;/* 3,842 lines (31%) never used */&lt;/span&gt;
&lt;span class="c"&gt;/* 347 !important declarations */&lt;/span&gt;
&lt;span class="c"&gt;/* 128 unique color values for what should be 5 brand colors */&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Numbers become impossible to ignore. Statistics tell a story clearer than any justification. In this moment of clarity, the team makes a decision: they will not erase the past, but they will chart a different future.&lt;/p&gt;

&lt;h2&gt;
  
  
  In the smallest change, there is potential
&lt;/h2&gt;

&lt;p&gt;The journey of a thousand miles begins with a single variable:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nd"&gt;:root&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--color-primary&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#3A5CCC&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One color defined in one place. A small act of reconciliation between what is and what could be. They don't try to fix everything at once—that path leads only to frustration and abandoned branches. Instead, they establish a simple rule: when touching a file, leave it better than you found it.&lt;/p&gt;

&lt;p&gt;A color hardcoded in hex becomes a variable reference. A pixel value transforms into a relative unit. A specific selector becomes more general. None of these changes alone fixes the architecture, but together they begin to tilt the balance from accumulation toward reduction.&lt;/p&gt;

&lt;p&gt;Systems emerge from these small acts of improvement:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nd"&gt;:root&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--color-primary&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#3A5CCC&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--color-text-light&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;white&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--spacing-base&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;8px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--radius-base&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="c"&gt;/* Semantic variables build on primitive ones */&lt;/span&gt;
  &lt;span class="py"&gt;--color-action&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--color-primary&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="py"&gt;--spacing-component&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;calc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--spacing-base&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;*&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.button&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--color-action&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--color-text-light&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--spacing-base&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--spacing-component&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--radius-base&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Documentation becomes not just technical but emotional context, explaining not just what was done but why:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="c"&gt;/**
 * Product Card Component
 * 
 * History: Originally created for the catalog page in 2022,
 * then adapted for the homepage in 2023. The unusual margin
 * on mobile accommodates the filtering sidebar.
 * 
 * Note: Sale badges use absolute positioning to maintain
 * consistent card heights regardless of badge presence.
 */&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The past is honored even as it's gradually replaced:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="c"&gt;/**
 * Legacy Button Styles
 * @deprecated - Use .button component instead
 * 
 * These styles remain for backwards compatibility
 * but will be removed in version 2.0.
 */&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  And with clarity, comes confidence
&lt;/h2&gt;

&lt;p&gt;As the technical debt diminishes, so too does its emotional weight. The developer who once felt anxiety at the thought of changing a color now feels confidence. "It's one line," they explain to the new designer. "Just update the variable." &lt;/p&gt;

&lt;p&gt;Code reviews transform from defensive postures to collaborative improvements. "I see what you're trying to do here," a senior developer comments. "What if we extracted this pattern so others can use it too?" The conversation shifts from "why did you do this?" to "how can we do this better?"&lt;/p&gt;

&lt;p&gt;When new requirements arrive—as they always do—the team no longer feels compelled to add another hack to the pile. The foundation they've built is flexible enough to accommodate change without compromise. A new color theme doesn't require a search-and-replace across the codebase but a simple adjustment to a set of variables. A new component doesn't start from scratch but builds on established patterns.&lt;/p&gt;

&lt;p&gt;This is the emotional liberation of paying down CSS technical debt: &lt;strong&gt;&lt;em&gt;the shift from fear to confidence, from shame to pride, from resignation to possibility.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Out of imperfection mastery will arise
&lt;/h2&gt;

&lt;p&gt;The stylesheet will never be perfect. Technical debt, like its financial counterpart, cannot be eliminated entirely—only managed. New deadlines will come. Compromises will still be made. But now these decisions are conscious, their consequences understood. The temporary hack includes not just a TODO comment but a ticket in the backlog, a commitment to address the root cause.&lt;/p&gt;

&lt;p&gt;In the end, the relationship between developer and stylesheet transforms. What was once a source of dread becomes a source of craftsmanship. What was once accumulated baggage becomes curated architecture.&lt;/p&gt;

&lt;p&gt;And in this transformation lies a truth that extends beyond code: how we manage our technical debt reflects how we manage ourselves. The shortcuts we take. The promises we make to our future selves. The balance we strike between immediate needs and long-term health. These are not just technical decisions but human ones.&lt;/p&gt;

&lt;p&gt;CSS, in all its cascading complexity, mirrors our own tangled histories and aspirations. As we bring order to our stylesheets—one variable, one refactor, one improvement at a time—we practice the art of emotional and technical reconciliation.&lt;/p&gt;

&lt;p&gt;Line by line, we lighten the load.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;What emotional baggage does your CSS carry? What small acts of improvement have you found most effective in reducing technical debt?&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Share your stories in the comments below, and join us next time for a surprise🫣 - &lt;strong&gt;The grand finale of our "CSS is Emotional" series&lt;/strong&gt; 🎉&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;Here's the &lt;a href="https://codepen.io/eioluseyi/full/KwKLKGO" rel="noopener noreferrer"&gt;CodePen&lt;/a&gt; used to design the banner 😊&lt;/p&gt;




&lt;h3&gt;
  
  
  About the Author
&lt;/h3&gt;

&lt;p&gt;Emmanuel Imolorhe (EIO) is a Frontend Engineer passionate about CSS.&lt;br&gt;
Check out my CSS videos on &lt;a href="https://youtube.com/@eioluseyi" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Connect with me
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://twitter.com/eioluseyi" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; • &lt;a href="https://bsky.app/profile/eioluseyi.bsky.social" rel="noopener noreferrer"&gt;Bluesky&lt;/a&gt; • &lt;a href="https://mastodon.social/@eioluseyi" rel="noopener noreferrer"&gt;Mastodon&lt;/a&gt; • &lt;a href="https://linkedin.com/in/eioluseyi" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; • &lt;a href="https://eioluseyi.github.io" rel="noopener noreferrer"&gt;Website&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Did this post help you? Have thoughts to share? Let's continue the conversation in the comments below!&lt;/em&gt;&lt;/p&gt;



</description>
      <category>webdev</category>
      <category>programming</category>
      <category>css</category>
      <category>emotion</category>
    </item>
    <item>
      <title>CSS is Emotional: Debugging CSS - A Journey of Self-Discovery</title>
      <dc:creator>EIO • Emmanuel Imolorhe</dc:creator>
      <pubDate>Wed, 19 Mar 2025 08:19:11 +0000</pubDate>
      <link>https://dev.to/eioluseyi/css-is-emotional-debugging-css-a-journey-of-self-discovery-59he</link>
      <guid>https://dev.to/eioluseyi/css-is-emotional-debugging-css-a-journey-of-self-discovery-59he</guid>
      <description>&lt;p&gt;We've all been there. It's 2 AM. You're staring at a layout that's inexplicably broken. The element that should be centered is stubbornly hugging the left side of the screen. The text that should be visible is hiding behind a rogue div. The spacing that worked perfectly in your development environment has somehow collapsed in production.&lt;/p&gt;

&lt;p&gt;Welcome to debugging CSS — a frustrating process that, surprisingly, can make you not just a better developer but a more insightful person. It's never just about fixing code. It's about uncovering the forgotten decisions, the hasty compromises, the well-intentioned hacks that seemed like good ideas at the time. Sound familiar? It's a lot like life, isn't it?&lt;/p&gt;

&lt;h2&gt;
  
  
  Confronting Reality: The First Step to Better CSS
&lt;/h2&gt;

&lt;p&gt;There's this moment in every CSS debugging session that feels eerily similar to personal revelation. You're staring at your code, knowing something's off. Something is wrong, and you created it, but you are not quite ready to admit what it might be:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.hero-section&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;justify-content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;align-items&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;90vh&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;absolute&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* Wait, why did I do this? */&lt;/span&gt;
  &lt;span class="nl"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And suddenly you see it. That &lt;code&gt;position: absolute&lt;/code&gt; that made sense three weeks ago is now causing unexpected effects throughout your layout. You remember writing it—you were trying to solve a different problem, working against a tight deadline, and this quick fix made everything work.&lt;/p&gt;

&lt;p&gt;We all do it in CSS, just like we do in life. We make decisions to solve immediate problems without fully understanding the long-term implications. And then, weeks or months later, we're left wondering why things aren't working out as expected.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Inspector: Looking Beneath the Surface
&lt;/h2&gt;

&lt;p&gt;You know what's been my saving grace in CSS development? The browser inspector. It's like having a friend who's brutally honest but in the most helpful way possible.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Hey, that &lt;code&gt;div&lt;/code&gt; you think has &lt;code&gt;margin-top: 20px&lt;/code&gt;? It actually doesn't. It's inheriting a different value from that parent element you forgot about."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"That &lt;code&gt;z-index&lt;/code&gt; you set? It's not working because you never established a stacking context."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"That &lt;code&gt;color&lt;/code&gt; you specified? It's being overridden by a more specific selector."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The inspector doesn't care about your intentions or your feelings. It just shows you reality—the actual computed styles being applied to your elements. And that's a gift, isn't it? Having something that cuts through our assumptions and shows us what's really happening.&lt;/p&gt;

&lt;p&gt;When was the last time you had a friend who could do that for you in real life? Someone who could say, &lt;em&gt;"Hey, I know you think you're expressing gratitude, but your body language is actually communicating resentment"&lt;/em&gt;? Those people are rare and valuable, just like good debugging tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  Eureka!
&lt;/h2&gt;

&lt;p&gt;Remember that feeling when you finally fix a stubborn CSS bug? That rush of relief and understanding? There was this project where I spent hours trying to figure out why an element was not resizing based on the content. I tried everything—adjusting the width to &lt;code&gt;max-content&lt;/code&gt;, &lt;code&gt;fit-content&lt;/code&gt;, &lt;code&gt;100%&lt;/code&gt;. I almost had to recreate the element from scratch.&lt;/p&gt;

&lt;p&gt;And then it hit me. Moments before, I had made the element a container (&lt;code&gt;container-type: size&lt;/code&gt;) and after I did some reading, I learnt that:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_containment/Using_CSS_containment#size_containment:~:text=If%20you%20set%20contain%3A%20size%20on%20an%20element%2C%20you%20need%20to%20specify%20the%20size%20of%20the%20element%20using%20contain%2Dintrinsic%2Dsize%2C%20or%20the%20longhand%20properties%20contain%2Dintrinsic%2Dwidth%20and%20contain%2Dintrinsic%2Dheight%2C%20in%20that%20order.%20If%20no%20size%20is%20set%2C%20the%20element%20risks%20being%20zero%2Dsized%20in%20most%20cases." rel="noopener noreferrer"&gt;If you set contain: size on an element, you need to specify the size of the element using contain-intrinsic-size, or the longhand properties contain-intrinsic-width and contain-intrinsic-height, in that order. If no size is set, the element risks being zero-sized in most cases.&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So, I took that off—luckily I had no use for the containment anymore.&lt;/p&gt;

&lt;p&gt;I still remember the feeling. Not just relief that the bug was fixed, but a deeper understanding of how browsers calculate layout. I levelled up as a developer in that moment.&lt;/p&gt;

&lt;p&gt;Those breakthroughs in CSS debugging—they're not just about fixing the immediate problem. They reshape how you think about layout, about browser rendering, about the cascade itself. They make you write different CSS going forward.&lt;/p&gt;

&lt;p&gt;Isn't that a lot like those moments of personal breakthrough? When you suddenly understand why you keep ending up in the same relationship patterns, or why certain work environments drain your energy? Those insights change you. They make you approach situations differently.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Methodical Approach
&lt;/h2&gt;

&lt;p&gt;I've learned that random CSS tweaking rarely solves complex issues. The approach that works is methodical and patient:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Observe what's actually happening&lt;/li&gt;
&lt;li&gt;Form a hypothesis about the cause&lt;/li&gt;
&lt;li&gt;Make one change at a time&lt;/li&gt;
&lt;li&gt;Observe the results&lt;/li&gt;
&lt;li&gt;Refine your understanding&lt;/li&gt;
&lt;li&gt;Repeat&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It's slow at first, but it builds a mental model that speeds up all your future debugging. You start to recognise patterns. "Ah, this looks like a collapsing margin issue." "This is probably a stacking context problem."&lt;/p&gt;

&lt;p&gt;And I've found this approach works just as well for understanding myself. When I'm feeling off but can't quite pinpoint why, random life tweaks rarely help. What works is patient observation, forming hypotheses, making targeted changes, and noting the results.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Importance of Rest
&lt;/h2&gt;

&lt;p&gt;Can I tell you about one of my worst CSS debugging experiences? I was working on &lt;a href="https://codepen.io/eioluseyi/pen/QwLzdvY" rel="noopener noreferrer"&gt;this complex scroll driven animation project&lt;/a&gt;, and something was off. My custom properties were not transitioning—they were jumping from the initial state to the final. I spent two hours making increasingly desperate changes, growing more frustrated with each attempt. You know that rabbit hole—you keep digging, convinced you're just inches away from success, the scent of victory always teasing at the tip of your nose, yet never quite within reach.&lt;/p&gt;

&lt;p&gt;Finally, I took a break. Went for a walk. Had something to munch on. When I came back and looked at the code with fresh eyes, I spotted the issue immediately—a typo in the &lt;code&gt;@property {...}&lt;/code&gt; block. I kept spelling &lt;code&gt;initial-value&lt;/code&gt; as &lt;code&gt;inital-value&lt;/code&gt;. Two hours of frustration, solved in two seconds once I had the clarity that comes with rest.&lt;/p&gt;

&lt;p&gt;We push through in CSS debugging, just like we push through in life. We think persistence alone will solve the problem. But sometimes the best debugging happens when we step away, when we give our minds space to process, when we return with fresh perspective.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Community Connection
&lt;/h2&gt;

&lt;p&gt;I've watched it happen countless times in forums and Discord channels. Someone posts a CSS problem they've been battling for hours. Their frustration is palpable through the screen. They've tried everything they can think of.&lt;/p&gt;

&lt;p&gt;And then, something magical happens. In the process of explaining their issue to strangers on the internet, they suddenly solve their own problem. "Wait, never mind. I just realised my container is set to overflow: hidden."&lt;/p&gt;

&lt;p&gt;I can't tell you how many times I've helped developers who reply me later saying, "You know what's funny? Just writing out my question forced me to think through the problem again, and I actually figured it out before you even responded."&lt;/p&gt;

&lt;p&gt;There's something powerful about articulating your CSS struggles that forces you to clarify your thinking. Sometimes all you need is to pretend you're explaining it to someone else.&lt;/p&gt;

&lt;p&gt;I've spent time answering developers' questions on CSS, and I've noticed that the most valuable thing isn't always the specific solution I provide. It's helping people develop the mental framework to approach CSS problems methodically. Teaching them to ask the right questions, to isolate variables, to think in terms of the box model and the cascade.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;That's actually how we got here. This series—CSS is Emotional—was born from these interactions. I aim to offer a fresh perspective on familiar problems, hoping to deepen understanding of the concepts.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Those moments when someone says "Ohhhh, I get it now!"—that's when I know they've levelled up as a developer. They haven't just fixed a bug; they've gained insight that will help them solve dozens of future problems.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Evolution of Approach
&lt;/h2&gt;

&lt;p&gt;The longer I work with CSS, the more I notice how my approach has evolved. I used to write styles reactively, solving problems as they appeared. Now I think more about systems—consistent spacing rules, type scales, color tokens. I build frameworks that prevent bugs rather than just fixing them when they occur.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="c"&gt;/* Before: One-off solutions */&lt;/span&gt;
&lt;span class="nc"&gt;.special-heading&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;24px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;margin-bottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;15px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#333&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c"&gt;/* After: Systematic approaches */&lt;/span&gt;
&lt;span class="nd"&gt;:root&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--heading-large&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--space-md&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--color-text-primary&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#333&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.heading-large&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--heading-large&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;margin-bottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--space-md&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--color-text-primary&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This shift from reactive to proactive thinking? It's changed how I approach life challenges too. Instead of just dealing with stress when it becomes overwhelming, I'm learning to build systems to manage energy and attention.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Ongoing Journey
&lt;/h2&gt;

&lt;p&gt;Here's the thing about CSS debugging—it never really ends. Browsers update. Design trends change. New layout techniques emerge. What worked perfectly last year might cause subtle issues today.&lt;/p&gt;

&lt;p&gt;But that's what makes it interesting, right? The fact that there's always more to learn, more to discover, more to understand. Every debugging session is an opportunity to deepen your knowledge, to refine your mental model, to become a bit more fluent in the language of layout and design.&lt;/p&gt;

&lt;p&gt;And maybe that's the biggest parallel between CSS debugging and self-discovery. They're both ongoing journeys without a final destination. There's no point where you've "solved" CSS once and for all, just as there's no point where you've completely figured yourself out.&lt;/p&gt;

&lt;p&gt;But every bug you fix, every insight you gain, every pattern you recognise—they all contribute to a richer understanding. They all make you a bit more capable of handling whatever comes next.&lt;/p&gt;

&lt;p&gt;So the next time you're deep in a CSS debugging session, feeling frustrated and stuck, remember that you're not just fixing code. You're engaging in a practice that's teaching you patience, systematic thinking, and the value of perspective. You're building skills that extend far beyond the stylesheet.&lt;/p&gt;

&lt;p&gt;And that's something worth celebrating, even at 2 AM with a broken layout.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Got a wild debugging story?&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Share your craziest moments in the comments—I’d love to hear them!&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Next week in our "CSS is Emotional" series: "Technical Debt: The Emotional Baggage of CSS" — where we'll explore how our past stylesheet decisions, like our past life choices, can accumulate in ways that either weigh us down or teach us valuable lessons.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;Here's the &lt;a href="https://codepen.io/eioluseyi/full/wBvmzKa" rel="noopener noreferrer"&gt;CodePen&lt;/a&gt; used to design the banner 😊&lt;/p&gt;




&lt;h3&gt;
  
  
  About the Author
&lt;/h3&gt;

&lt;p&gt;Emmanuel Imolorhe (EIO) is a Frontend Engineer passionate about CSS.&lt;br&gt;
Check out my CSS videos on &lt;a href="https://youtube.com/@eioluseyi" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Connect with me
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://twitter.com/eioluseyi" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; • &lt;a href="https://bsky.app/profile/eioluseyi.bsky.social" rel="noopener noreferrer"&gt;Bluesky&lt;/a&gt; • &lt;a href="https://mastodon.social/@eioluseyi" rel="noopener noreferrer"&gt;Mastodon&lt;/a&gt; • &lt;a href="https://linkedin.com/in/eioluseyi" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; • &lt;a href="https://eioluseyi.github.io" rel="noopener noreferrer"&gt;Website&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Did this post help you? Have thoughts to share? Let's continue the conversation in the comments below!&lt;/em&gt;&lt;/p&gt;



</description>
      <category>webdev</category>
      <category>css</category>
      <category>emotion</category>
      <category>programming</category>
    </item>
    <item>
      <title>CSS is Emotional: CSS Custom Properties - The Art of Self-Expression</title>
      <dc:creator>EIO • Emmanuel Imolorhe</dc:creator>
      <pubDate>Tue, 04 Mar 2025 15:30:00 +0000</pubDate>
      <link>https://dev.to/eioluseyi/css-is-emotional-css-custom-properties-the-art-of-self-expression-3nb5</link>
      <guid>https://dev.to/eioluseyi/css-is-emotional-css-custom-properties-the-art-of-self-expression-3nb5</guid>
      <description>&lt;p&gt;After almost a decade in frontend development, I've discovered that the concept of &lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_cascading_variables/Using_CSS_custom_properties" rel="noopener noreferrer"&gt;CSS custom properties&lt;/a&gt; is more than just technical variables—it's a profound means of emotional and design expression. Here are the key lessons I've learned about turning code into a deeply personal medium of communication.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lesson 1: Naming is Power
&lt;/h2&gt;

&lt;p&gt;Working across multiple design systems, I've watched our naming conventions evolve from being purely functional to deeply expressive:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nd"&gt;:root&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--color-blue-500&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#0056b3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--color-red-500&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#dc3545&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--spacing-4&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;16px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--spacing-6&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;24px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nd"&gt;:root&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--color-primary&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#0056b3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--color-danger&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#dc3545&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--spacing-lg&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;16px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--spacing-xl&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;24px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The values haven't changed, but the intent has been made explicit. When a developer reaches for &lt;code&gt;--color-danger&lt;/code&gt; instead of &lt;code&gt;--color-red-500&lt;/code&gt;, they're making an emotional choice, not just a visual one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lesson 2: The Cascade of Emotion
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_cascade/Cascade" rel="noopener noreferrer"&gt;CSS cascade&lt;/a&gt; improves our understanding of emotional complexity:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nd"&gt;:root&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--base-spacing&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;16px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.container&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--base-spacing&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.alert&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--base-spacing&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;24px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--base-spacing&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"container"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Default container with 16px padding&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"alert"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Alert with 24px padding&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Just as emotions inherit and transform through different contexts, custom properties can be redefined at different levels of &lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_cascade/Specificity" rel="noopener noreferrer"&gt;specificity&lt;/a&gt;. The same property can mean something subtly different depending on its context—exactly how our emotional responses shift based on environment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lesson 3: Computed Values Create Relationships
&lt;/h2&gt;

&lt;p&gt;I learned that custom properties aren't just static values—they can be dynamically calculated:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nd"&gt;:root&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--base-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;16px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--scale-ratio&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.25&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--h1-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;calc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--base-size&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;*&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--scale-ratio&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;*&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--scale-ratio&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="py"&gt;--h2-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;calc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--base-size&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;*&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--scale-ratio&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This mirrors how our emotions are rarely isolated—they're interconnected, scaling and transforming based on underlying core experiences. Each value is a relationship, not just a number.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lesson 4: Dynamic Updates Reveal Adaptability
&lt;/h2&gt;

&lt;p&gt;The true power of custom properties emerges in their ability to change dynamically:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nd"&gt;:root&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--interaction-sensitivity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;@media&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prefers-reduced-motion&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;reduce&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nd"&gt;:root&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="py"&gt;--interaction-sensitivity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.button&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;transition&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;transform&lt;/span&gt; &lt;span class="n"&gt;calc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0.3s&lt;/span&gt; &lt;span class="err"&gt;*&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--interaction-sensitivity&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.button&lt;/span&gt;&lt;span class="nd"&gt;:hover&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;calc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1.05&lt;/span&gt; &lt;span class="err"&gt;*&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--interaction-sensitivity&lt;/span&gt;&lt;span class="p"&gt;)));&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Interfaces can now adapt their emotional tone in real-time, responding to user context just as humans adjust their emotional expression to different situations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lesson 5: @property - Defining Emotional Boundaries
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/@property" rel="noopener noreferrer"&gt;&lt;code&gt;@property&lt;/code&gt;&lt;/a&gt; rule allows us to define not just values, but the very nature of our emotional variables:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="k"&gt;@property&lt;/span&gt; &lt;span class="n"&gt;--spring-bounce&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;syntax&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;'&amp;lt;number&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;initial-value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;inherits&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;false&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.animation&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--spring-bounce&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;animation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;bounce&lt;/span&gt; &lt;span class="n"&gt;calc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0.5s&lt;/span&gt; &lt;span class="err"&gt;*&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--spring-bounce&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="n"&gt;ease-in-out&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By constraining properties, we're creating emotional guardrails—defining how our design can and cannot express itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lesson 6: Contextual Emotional Scoping
&lt;/h2&gt;

&lt;p&gt;Different contexts call for different emotional expressions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nd"&gt;:root&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--focus-intensity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--interaction-feedback&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.2s&lt;/span&gt; &lt;span class="n"&gt;ease-out&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.alert-critical&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--focus-intensity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--interaction-feedback&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.1s&lt;/span&gt; &lt;span class="n"&gt;ease-in-out&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.alert-success&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--focus-intensity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--interaction-feedback&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.3s&lt;/span&gt; &lt;span class="n"&gt;ease&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The same element can feel urgent or calm depending on its context—just like our own emotional responses adapt to different situations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lesson 7: The Maintenance Reality
&lt;/h2&gt;

&lt;p&gt;The emotional clarity of custom properties pays dividends during maintenance. Consider these two pull request examples:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;/* Before: What does this change actually mean? */
&lt;span class="gd"&gt;- background-color: #f8f9fa;
&lt;/span&gt;&lt;span class="gi"&gt;+ background-color: #ffffff;
&lt;/span&gt;&lt;span class="err"&gt;
&lt;/span&gt;/* After: The emotional intent is clear */
&lt;span class="gd"&gt;- background-color: var(--surface-secondary);
&lt;/span&gt;&lt;span class="gi"&gt;+ background-color: var(--surface-primary);
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The second example communicates not just a color change but a shift from secondary importance to primary importance—critical context for code reviews. Each variable name now tells a story about importance, hierarchy, and feeling.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion: Code as a Canvas of Self-Expression
&lt;/h2&gt;

&lt;p&gt;CSS custom properties are not just technical tools, but threads that connect design to human experience; a deeply personal medium through which we express our design philosophy, our understanding of user experience, and our belief in how interfaces should feel.&lt;/p&gt;

&lt;p&gt;When we name a variable &lt;code&gt;--color-calm&lt;/code&gt; instead of &lt;code&gt;--color-sky-300&lt;/code&gt;, we're not just being poetic. We are preserving a design intention, expressing a belief that interfaces should feel welcoming, intuitive, and human.&lt;/p&gt;

&lt;p&gt;Just as a painter uses brush strokes and color choices to communicate emotion, we can use property names, calculations, and dynamic updates to express our understanding of what makes interfaces meaningful.&lt;/p&gt;

&lt;p&gt;Custom properties aren't just variables—they're set to be the vocabulary of your design language, telling stories of interaction, empathy, and human-centered design.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;How have you seen your own expression evolve as CSS has developed?&lt;/em&gt;&lt;br&gt;
&lt;strong&gt;Share your journey in the comments below.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Join us next time on our CSS is Emotional series: *&lt;/em&gt;"Debugging CSS: A Journey of Self-Discovery"***&lt;/p&gt;




&lt;p&gt;Here's the &lt;a href="https://codepen.io/eioluseyi/full/gbOmjPX" rel="noopener noreferrer"&gt;CodePen&lt;/a&gt; used to design the banner 😊&lt;/p&gt;




&lt;h3&gt;
  
  
  About the Author
&lt;/h3&gt;

&lt;p&gt;Emmanuel Imolorhe (EIO) is a Frontend Engineer passionate about CSS.&lt;br&gt;
Check out my CSS videos on &lt;a href="https://youtube.com/@eioluseyi" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Connect with me
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://twitter.com/eioluseyi" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; • &lt;a href="https://bsky.app/profile/eioluseyi.bsky.social" rel="noopener noreferrer"&gt;Bluesky&lt;/a&gt; • &lt;a href="https://mastodon.social/@eioluseyi" rel="noopener noreferrer"&gt;Mastodon&lt;/a&gt; • &lt;a href="https://linkedin.com/in/eioluseyi" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; • &lt;a href="https://eioluseyi.github.io" rel="noopener noreferrer"&gt;Website&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Did this post help you? Have thoughts to share? Let's continue the conversation in the comments below!&lt;/em&gt;&lt;/p&gt;



</description>
      <category>webdev</category>
      <category>programming</category>
      <category>emotion</category>
      <category>css</category>
    </item>
    <item>
      <title>CSS is Emotional: The Hidden Emotions of CSS Animations</title>
      <dc:creator>EIO • Emmanuel Imolorhe</dc:creator>
      <pubDate>Tue, 11 Feb 2025 00:55:59 +0000</pubDate>
      <link>https://dev.to/eioluseyi/css-is-emotional-the-hidden-emotions-of-css-animations-1n8l</link>
      <guid>https://dev.to/eioluseyi/css-is-emotional-the-hidden-emotions-of-css-animations-1n8l</guid>
      <description>&lt;p&gt;Remember the last time you watched a sunset? Not the quick glance through your window, but really watched it. The sky doesn't simply switch from day to night—it transitions through countless subtle states. Each moment feels different: the golden hour stretches slowly and gently, but the final dip of the sun seems to happen in an instant. Time isn't constant; it breathes with our attention and emotions.&lt;/p&gt;

&lt;p&gt;We are creatures of motion, but more importantly, we are creatures of time. Our hearts beat in steady rhythms, our breath rises and falls like waves, our days pulse with the cadence of routine and surprise. Even as you read these words, your eyes are performing their own choreographed dance across the screen. Motion isn't just movement—it's the language of life itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://en.wikipedia.org/wiki/Time_dilation" rel="noopener noreferrer"&gt;Time Dilation&lt;/a&gt; (Hello Einstein 👋)
&lt;/h2&gt;

&lt;p&gt;Think about how differently time moves through our emotions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Anticipation makes seconds feel like hours&lt;/li&gt;
&lt;li&gt;Joy compresses hours into moments&lt;/li&gt;
&lt;li&gt;Anxiety stretches minutes into eternities&lt;/li&gt;
&lt;li&gt;Nostalgia collapses years into fleeting memories&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Our animations can speak this same language:&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/eioluseyi/embed/jEOONav?height=600&amp;amp;default-tab=css,result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Each timing function tells a story about how we perceive time's passage. The weighted pause at the end of an &lt;code&gt;ease-out&lt;/code&gt; mirrors how we savor good news and the swift beginning captures the rush of diving into cold water.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Mathematics of Emotion
&lt;/h2&gt;

&lt;p&gt;Behind every smooth animation lies a fascinating intersection of emotion and mathematics. The &lt;strong&gt;&lt;code&gt;cubic-bezier()&lt;/code&gt;&lt;/strong&gt; curve—one of our most powerful tools for crafting timing—uses four points to control animation flow—acceleration, peak, and settling. While the &lt;strong&gt;&lt;code&gt;linear()&lt;/code&gt;&lt;/strong&gt; timing function offers precise easing for complex effects like bounces and springs that were previously difficult in CSS:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.emotional-transition&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;transition-property&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;opacity&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;translate&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;transition-timing-function&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;cubic-bezier&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0.68&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;-0.6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0.32&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;1.6&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; 
                &lt;span class="n"&gt;linear&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0.25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0.75&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When we choose a timing function, we're not just deciding how something moves—we're deciding how it feels. A harsh, linear animation can feel mechanical and cold. An ease-in-out can feel natural and comforting. A cubic-bezier curve or a linear function can capture the unique emotional signature of a movement, like the bounce of excitement or the flutter of nervousness.&lt;/p&gt;

&lt;p&gt;Thankfully, tools like &lt;a href="https://easingwizard.com" rel="noopener noreferrer"&gt;Easing Wizard&lt;/a&gt; help visualize and fine-tune these functions.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Scrolls of Time
&lt;/h2&gt;

&lt;p&gt;Modern scroll-driven animations give us a new dimension of progressive control. Time becomes space, and space becomes time:&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/eioluseyi/embed/XJWWJmz?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Here, the user becomes time's navigator. Scroll up, and time rewinds. Scroll down, and time advances. It's not just code, it's a reflection of memory and anticipation—how we can move freely through our emotional landscapes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Time's Accessibility Matrix
&lt;/h2&gt;

&lt;p&gt;Not everyone experiences time the same way. Some need it slower, others prefer it still:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="k"&gt;@media&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prefers-reduced-motion&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;reduce&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nc"&gt;.moment&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nl"&gt;transition&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;none&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="nc"&gt;.story-beat&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nl"&gt;animation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;none&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;opacity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This isn't just accessibility—it's emotional intelligence. It's recognizing that sometimes the best animation is no animation at all.&lt;/p&gt;

&lt;h2&gt;
  
  
  100% {...}
&lt;/h2&gt;

&lt;p&gt;Time in animation, like in life, is never just about the duration. It's about the quality of moments, the weight of transitions, the rhythm of change. When we craft animations, we're really crafting sequential experiences—little time machines that transform static interfaces into living, breathing stories. Every animation we write is an opportunity to spark that childlike wonder, to create moments of delight, to make the web feel more alive, more human, more emotionally resonant.&lt;/p&gt;

&lt;p&gt;The next time you write an animation, think about its chronological signature. How does it handle the journey from then to now to next? How does it reflect the way time feels in moments of joy, anticipation, or reflection? Because in the end, the best animations don't just move through time—they shape our experience of it.&lt;/p&gt;

&lt;p&gt;Share your thoughts about time and motion in the comments below, and join us next time for "CSS Custom Properties: The Art of Self-Expression."&lt;/p&gt;




&lt;p&gt;Here's the &lt;a href="https://codepen.io/eioluseyi/full/raNNNqy" rel="noopener noreferrer"&gt;CodePen&lt;/a&gt; used to design the banner 😊&lt;/p&gt;




&lt;h3&gt;
  
  
  About the Author
&lt;/h3&gt;

&lt;p&gt;Emmanuel Imolorhe (EIO) is a Frontend Engineer passionate about CSS.&lt;br&gt;
Check out my CSS videos on &lt;a href="https://youtube.com/@eioluseyi" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Connect with me
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://twitter.com/eioluseyi" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; • &lt;a href="https://bsky.app/profile/eioluseyi.bsky.social" rel="noopener noreferrer"&gt;Bluesky&lt;/a&gt; • &lt;a href="https://mastodon.social/@eioluseyi" rel="noopener noreferrer"&gt;Mastodon&lt;/a&gt; • &lt;a href="https://linkedin.com/in/eioluseyi" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; • &lt;a href="https://eioluseyi.github.io" rel="noopener noreferrer"&gt;Website&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Did this post help you? Have thoughts to share? Let's continue the conversation in the comments below!&lt;/em&gt;&lt;/p&gt;



</description>
      <category>webdev</category>
      <category>programming</category>
      <category>css</category>
      <category>emotion</category>
    </item>
    <item>
      <title>CSS is Emotional: Media Queries - Adapting to Change</title>
      <dc:creator>EIO • Emmanuel Imolorhe</dc:creator>
      <pubDate>Sun, 19 Jan 2025 23:32:03 +0000</pubDate>
      <link>https://dev.to/eioluseyi/css-is-emotional-media-queries-adapting-to-change-3a7k</link>
      <guid>https://dev.to/eioluseyi/css-is-emotional-media-queries-adapting-to-change-3a7k</guid>
      <description>&lt;p&gt;You know that moment when you're browsing a website on your laptop, and then you pick up your phone to show it to a friend? You see how the page transforms. Elements shift into new positions, the navigation bar becomes humble, images respect themselves. That's the magic of media queries – little question-based rules that help websites adapt to their environment, just like we do.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A &lt;strong&gt;Query&lt;/strong&gt; is a question.&lt;br&gt;
While &lt;strong&gt;Media&lt;/strong&gt; is the means of expression, the environment through which we experience something.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Put them together and what do you get? A way to ask questions about the environment where your creation lives. "How much space do you have?", "What kind of screen are you on?", "How do you prefer to experience motion?", etc.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;These aren't just technical questions – they're basically what we ask ourselves every day as we go through life.&lt;/p&gt;


&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Different Screens, Different Needs
&lt;/h2&gt;

&lt;p&gt;Every css developer knows the ritual: write some code, resize the browser, watch for breaks, adjust. Rinse and repeat. We do this because we know our users will view our sites in countless different contexts:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Toggle the CSS tab to trigger a resize on the page&lt;/em&gt;&lt;br&gt;
&lt;iframe height="600" src="https://codepen.io/eioluseyi/embed/NPKBQPj?height=600&amp;amp;default-tab=css,result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Look familiar? If you're a developer, you've probably written this a hundred times. If you're not, think of it like this: we're telling our website, "Hey, when things get tight, stack everything vertically and give it some breathing room."&lt;/p&gt;

&lt;p&gt;It's surprisingly human, isn't it? When our own space gets cramped – maybe we're moving to a smaller apartment or dealing with a reduced budget – we do the same thing. We reorganize. We prioritize. We make things work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Breaking Points Are Actually Turning Points
&lt;/h2&gt;

&lt;p&gt;In our code, we call them breakpoints. But honestly? That kind of seems a bit negative to me. These aren't points where things break – they're points where things evolve.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="k"&gt;@media&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;min-width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1024px&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="c"&gt;/* There is room for more: 1024px and above */&lt;/span&gt;
  &lt;span class="nc"&gt;.document&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;grid&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* Re-Strategize */&lt;/span&gt;
    &lt;span class="py"&gt;grid-template-columns&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;repeat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="n"&gt;fr&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c"&gt;/* Spread out and explore */&lt;/span&gt;
    &lt;span class="py"&gt;gap&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* Allow some breathing room */&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For the non-developers reading this: we're creating a layout that expands into three columns when there's enough space. But it's not just about columns and spaces. It's about recognizing opportunities for growth.&lt;/p&gt;

&lt;p&gt;Think about those moments in life when everything shifts – maybe you're starting a new job, moving cities, or ending a relationship. These aren't breaking points. They're growing points. Sometimes, for your mental health, you need to stack things vertically (like our mobile layout) to stay stable. Other times, you can spread out and explore (like our desktop grid).&lt;/p&gt;

&lt;h2&gt;
  
  
  The Art of Progressive Enhancement
&lt;/h2&gt;

&lt;p&gt;Here's a concept I love so much – progressive enhancement.&lt;br&gt;
In code, it looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="c"&gt;/* Start with your core styles */&lt;/span&gt;
&lt;span class="nc"&gt;.experience&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c"&gt;/* Add enhancements when possible */&lt;/span&gt;
&lt;span class="k"&gt;@media&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prefers-reduced-motion&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;no-preference&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nc"&gt;.experience&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;transition&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;all&lt;/span&gt; &lt;span class="m"&gt;0.3s&lt;/span&gt; &lt;span class="n"&gt;ease&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We start with the essentials and layer on enhancements when conditions allow. But we also respect when users need less motion, less complexity, less stuff. It's not about degrading – it's about being thoughtfully adaptive.&lt;/p&gt;

&lt;p&gt;It's like a friend, full of energy and excitement at a party, ready to celebrate with you. But when the mood shifts, they’re right there with you in the quiet moments, offering comfort and understanding. The key is &lt;strong&gt;maintaining that core&lt;/strong&gt; while being flexible about the rest.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Code We Live By
&lt;/h2&gt;

&lt;p&gt;As css developers, we spend time crafting media queries - debugging responsive layouts, fine-tuning breakpoints, ensuring our sites work seamlessly across devices. But next time you're wrestling with a particularly stubborn viewport issue, just pause for a moment.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="k"&gt;@media&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;max-width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;768px&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nc"&gt;.navigation&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;translateX&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;-100%&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;fixed&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Look at that code. Really look at it. You're not just handling a smaller viewport – you're encoding adaptation into your work. Each media query is a small promise: &lt;em&gt;"When things change, I'll be ready."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;While media queries might seem like just another technical tool, they encode a profound wisdom about adaptation. They remind us that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Different contexts require different approaches&lt;/li&gt;
&lt;li&gt;Change is not just inevitable but normal&lt;/li&gt;
&lt;li&gt;Flexibility is strength&lt;/li&gt;
&lt;li&gt;Adaptation doesn't mean losing your core purpose—it means finding new ways to express it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Just like us, our code bends but doesn't break. It transforms while keeping its essence. And even if media queries might seem difficult to write, remember that they're just CSS versions of the adaptations we make every day.&lt;/p&gt;

&lt;p&gt;So keep writing those queries, keep crafting that resilience. After all, the best code, like the best people, knows how to adapt.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Next week in "CSS is Emotional," we're diving into "The Hidden Emotions of CSS Animations" – where we'll explore how &lt;code&gt;@keyframes&lt;/code&gt; mirror the rhythms of life. See you then!&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Share your thoughts and experiences with adaptation—both in CSS and in life—in the comments below.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;Yes! The &lt;a href="https://codepen.io/eioluseyi/full/VYZBozv" rel="noopener noreferrer"&gt;CodePen&lt;/a&gt; used to design the banner 😊&lt;/p&gt;




&lt;h3&gt;
  
  
  About the Author
&lt;/h3&gt;

&lt;p&gt;Emmanuel Imolorhe (EIO) is a Frontend Engineer passionate about CSS.&lt;br&gt;
Check out my CSS videos on &lt;a href="https://youtube.com/@eioluseyi" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Connect with me
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://twitter.com/eioluseyi" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; • &lt;a href="https://bsky.app/profile/eioluseyi.bsky.social" rel="noopener noreferrer"&gt;Bluesky&lt;/a&gt; • &lt;a href="https://mastodon.social/@eioluseyi" rel="noopener noreferrer"&gt;Mastodon&lt;/a&gt; • &lt;a href="https://linkedin.com/in/eioluseyi" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; • &lt;a href="https://eioluseyi.github.io" rel="noopener noreferrer"&gt;Website&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Did this post help you? Have thoughts to share? Let's continue the conversation in the comments below!&lt;/em&gt;&lt;/p&gt;



</description>
      <category>webdev</category>
      <category>css</category>
      <category>emotion</category>
      <category>frontend</category>
    </item>
    <item>
      <title>CSS is Emotional: z-index and the Hierarchy of Needs</title>
      <dc:creator>EIO • Emmanuel Imolorhe</dc:creator>
      <pubDate>Tue, 07 Jan 2025 01:28:16 +0000</pubDate>
      <link>https://dev.to/eioluseyi/z-index-and-the-hierarchy-of-needs-1n</link>
      <guid>https://dev.to/eioluseyi/z-index-and-the-hierarchy-of-needs-1n</guid>
      <description>&lt;p&gt;In the physical world, we all want to be seen. To be acknowledged. To matter. Some days we want to stand at the forefront, commanding attention. Other times, we prefer to recede into the background, letting others take center stage. This interplay of visibility and prominence isn't just a human experience—it's perfectly mirrored in one of CSS's most misunderstood properties: &lt;strong&gt;z-index&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  z-index: 6 | Understanding &lt;code&gt;z-index&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Imagine shuffling papers on a desk. Even though the desk is flat, papers stack in layers—some on top, others below. That's exactly what z-index does on websites. If you're familiar with tools like &lt;a href="https://canva.com" rel="noopener noreferrer"&gt;Canva&lt;/a&gt;, &lt;a href="https://www.microsoft.com/en-us/microsoft-365/powerpoint" rel="noopener noreferrer"&gt;PowerPoint&lt;/a&gt;, &lt;a href="https://www.adobe.com/ng/products/photoshop/free-trial-download.html" rel="noopener noreferrer"&gt;Photoshop&lt;/a&gt;, or &lt;a href="https://figma.com" rel="noopener noreferrer"&gt;Figma&lt;/a&gt;, you know this feature as &lt;em&gt;"Send to Back"&lt;/em&gt; or more accurately, "Arrange" or "Position".&lt;/p&gt;

&lt;p&gt;Your screen shows things in width and height, but when elements need to overlap (like a popup appearing over a page), z-index determines what goes on top. Higher numbers rise to the front, lower numbers settle to the back.&lt;/p&gt;

&lt;p&gt;You experience this every day: when your phone's notification slides down over everything else, the menu that pops out from the side, or when clicking a photo makes it pop up larger while darkening what's behind it. All of these effects rely on z-index to determine what should appear closest to you, even though everything is technically displayed on your flat screen.&lt;/p&gt;

&lt;h2&gt;
  
  
  z-index: 5 | The Struggle for Significance
&lt;/h2&gt;

&lt;p&gt;When we set a z-index value, what we're really saying is: "This element matters. It needs to be seen." It's a declaration of importance, a way of saying, "Pay attention to this." Sound familiar? It's like Maslow's hierarchy of needs, where after securing our basic physiological and safety needs, we seek esteem and self-actualization—the need to be recognized, to achieve our potential, to rise above.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.whatsapp-notification&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;z-index&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;999&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="c"&gt;/* Please, notice me. This is important. */&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But here's where it gets interesting: just like in life, prominence in CSS isn't simply about shouting the loudest or climbing the highest. A z-index of &lt;strong&gt;99999&lt;/strong&gt; doesn't guarantee visibility, just as being the loudest person in the room doesn't guarantee being heard. Context matters. Stacking contexts, just like the two transparent boxes in the banner above, are like social circles or organizational hierarchies—complex systems where your relative position depends on more than just your individual assertions.&lt;/p&gt;

&lt;h2&gt;
  
  
  z-index: 4 | The Hidden Complexity of Visibility
&lt;/h2&gt;

&lt;p&gt;Have you ever felt invisible despite your best efforts to be seen? That's the &lt;code&gt;position: static&lt;/code&gt; of human interaction. No matter what z-index value you give it, a statically positioned element refuses to leave its place in the document flow. And &lt;code&gt;static&lt;/code&gt; is the default position value for all elements in CSS, serving as a humbling reminder that, sometimes, before we can stand out, we may need to step outside our comfort zone:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.dreaming-of-standing-out&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;z-index&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;999&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* Big dreams */&lt;/span&gt;

  &lt;span class="c"&gt;/* This won't work... */&lt;/span&gt;
  &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;static&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="c"&gt;/* ...because you can't find progress in your comfort zone. */&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.actually-standing-out&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;z-index&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* Simple steps in the right direction */&lt;/span&gt;

  &lt;span class="c"&gt;/* This will work */&lt;/span&gt;
  &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;relative&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* Positioned for greatness */&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  z-index: 3 | The Paradox of Stacking Contexts
&lt;/h2&gt;

&lt;p&gt;Perhaps the most profound lesson z-index teaches us is about perspective and relative truth. What appears "on top" from one vantage point might be completely hidden from another. Each stacking context is like a separate social sphere or cultural context—with its own rules, hierarchies, and definitions of prominence. Again, see the boxes in the banner above.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.box-1&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;relative&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;z-index&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.box-1&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nc"&gt;.orange-sheet-with-circle&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;absolute&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;z-index&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;999999&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* Still won't show above .box-2 */&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.box-2&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;relative&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;z-index&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* Appears above .child despite lower value */&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This code reveals a truth about both CSS and life: our perceived importance often depends more on our context than our individual efforts. A modest z-index in the right stacking context can place an element above another with a much higher value—just as quiet wisdom in the right moment can speak louder than grand gestures.&lt;/p&gt;

&lt;h2&gt;
  
  
  z-index: 2 | Finding Balance in the Stack
&lt;/h2&gt;

&lt;p&gt;Just as we learn to balance our need for recognition with our role in the community, working with z-index teaches us about the delicate balance between standing out and fitting in. Here are some patterns I've learned to &lt;del&gt;code&lt;/del&gt; &lt;strong&gt;live&lt;/strong&gt; by:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Start Small&lt;/strong&gt;: Don't jump to z-index: 9999. Begin with small, intentional numbers. In life and CSS, sustainable prominence comes from measured steps, not dramatic leaps. Of course, there are exceptions—this is simply a "best practice."&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Consider Context&lt;/strong&gt;: Before increasing z-index, check if the stacking context is what needs adjustment. Sometimes, our visibility issues stem from the systems we're operating within, not our individual elevation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Document Your Intentions&lt;/strong&gt;: When you do need high z-index values, leave comments explaining why. Future you (and your team) will appreciate understanding the emotional and technical context of these decisions:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="c"&gt;/* z-index: 100 - Critical user notifications
   z-index: 50  - Modal overlays
   z-index: 10  - Navigation elements
   z-index: 1   - Standard interactive elements */&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  z-index: 1 | The Liberation of Letting Go
&lt;/h2&gt;

&lt;p&gt;Perhaps the most liberating realization about z-index is that not everything needs to fight for the highest position. Some elements serve their purpose best at their default stacking level. In life, too, there's peace in accepting that we don't always need to be the most visible, the most prominent, the highest-stacked element in every context.&lt;/p&gt;

&lt;h2&gt;
  
  
  z-index: 0 | Kairos and Purpose
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;z-index&lt;/strong&gt; isn't just a CSS property—it's a mirror reflecting our very human need to be seen, to matter, to rise above. But like all tools that deal with hierarchy and visibility, it teaches us that true prominence isn't about having the highest number. It's about finding the right position, in the right context, at the right time.&lt;/p&gt;

&lt;p&gt;The next time you find yourself reaching for z-index: 9999, pause. Ask yourself: What am I really trying to elevate here? Is this about technical layering, or is there something deeper—a need for recognition, for importance, for visibility—that I'm trying to express through code?&lt;/p&gt;

&lt;p&gt;Because in the end, the most elegant CSS, like the most fulfilling life, isn't about rising above everything else. It's about finding your proper place in the stack, contributing to the harmony of the whole, and knowing when to step forward—and when to let others shine.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Next week, we'll explore how media queries teach us about adapting to change. Until then, I'd love to hear your thoughts: When was the last time you used z-index? What emotions were driving that decision? Share your stories in the comments below.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;Here's the &lt;a href="https://codepen.io/eioluseyi/full/bNbaqoN" rel="noopener noreferrer"&gt;CodePen&lt;/a&gt; used to design the banner 😊&lt;/p&gt;




&lt;h3&gt;
  
  
  About the Author
&lt;/h3&gt;

&lt;p&gt;Emmanuel Imolorhe (EIO) is a Frontend Engineer passionate about CSS.&lt;br&gt;
Check out my CSS videos on &lt;a href="https://youtube.com/@eioluseyi" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Connect with me
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://twitter.com/eioluseyi" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; • &lt;a href="https://bsky.app/profile/eioluseyi.bsky.social" rel="noopener noreferrer"&gt;Bluesky&lt;/a&gt; • &lt;a href="https://mastodon.social/@eioluseyi" rel="noopener noreferrer"&gt;Mastodon&lt;/a&gt; • &lt;a href="https://linkedin.com/in/eioluseyi" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; • &lt;a href="https://eioluseyi.github.io" rel="noopener noreferrer"&gt;Website&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Did this post help you? Have thoughts to share? Let's continue the conversation in the comments below!&lt;/em&gt;&lt;/p&gt;



</description>
      <category>webdev</category>
      <category>css</category>
      <category>emotion</category>
      <category>frontend</category>
    </item>
    <item>
      <title>CSS is Emotional: The Psychology of Specificity</title>
      <dc:creator>EIO • Emmanuel Imolorhe</dc:creator>
      <pubDate>Tue, 31 Dec 2024 03:09:05 +0000</pubDate>
      <link>https://dev.to/eioluseyi/css-is-emotional-the-psychology-of-specificity-3447</link>
      <guid>https://dev.to/eioluseyi/css-is-emotional-the-psychology-of-specificity-3447</guid>
      <description>&lt;p&gt;In the ever-cascading world of CSS, few concepts trigger as much emotional response as specificity. It's that invisible force that determines which styles win out when multiple declarations compete for the same element. But beyond the calculations of IDs, classes, and elements lies a deeper truth: specificity is a mirror of how we handle conflicts, set boundaries, and navigate relationships in our daily lives.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Weight of Words
&lt;/h2&gt;

&lt;p&gt;Consider this common CSS scenario:&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/eioluseyi/embed/gbYGmyL?height=600&amp;amp;default-tab=css,result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;The ID selector wins, not because it came last, but because it carries more weight. How familiar does this feel? Like when someone uses your full name instead of your nickname, or when a parent's "I mean it" carries more authority than their casual requests. Specificity in CSS, like emphasis in human communication, is about the power we give to different forms of expression.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Struggle for Identity
&lt;/h2&gt;

&lt;p&gt;Think about how you introduce yourself at different events:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;At a family gathering: "I'm Aunty Tope's son"&lt;/li&gt;
&lt;li&gt;At work: "I'm the Frontend lead on the web team"&lt;/li&gt;
&lt;li&gt;At a high school reunion: "I'm the guy who always topped the class."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Yeah, there's a little room for some show off here and there...&lt;/em&gt;😎&lt;/p&gt;

&lt;p&gt;Like CSS selectors stacking up (&lt;strong&gt;article p .highlight&lt;/strong&gt;), we layer our identities based on context. Each additional descriptor makes us more specific, more unique, but also potentially more rigid in how others can relate to us.&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/eioluseyi/embed/emOGvqb?height=600&amp;amp;default-tab=css,result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;An element might be both a paragraph and highlighted content, but which identity takes precedence? The more specific selector wins, just as certain aspects of our identity become more prominent in different contexts.&lt;/p&gt;

&lt;h2&gt;
  
  
  The &lt;code&gt;!important&lt;/code&gt; Declaration: Nuclear Powers
&lt;/h2&gt;

&lt;p&gt;When my mom shouts my full name — &lt;strong&gt;Emmanuel, Oluwaseyi, Imolorhe!!!&lt;/strong&gt; — I just know I'm in trouble. It's like the sound of an alarm, my brain starts screaming, "May Day! May Day!!". Similarly, &lt;code&gt;!important&lt;/code&gt; in CSS is the nuclear option—an override that trumps everything else. Like raising your voice in an argument or pulling rank, it's a powerful tool, but one that should be used sparingly and with caution:&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/eioluseyi/embed/qEWPmOE?height=600&amp;amp;default-tab=css,result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;It is like sending an email in all caps or ending a message with multiple exclamation points. It's not just a technical override—it's an emotional one. It says, &lt;em&gt;"I don't care what anyone else thinks, this is how it MUST be."&lt;/em&gt; Like all powerful tools, it's not inherently bad, but &lt;strong&gt;its overuse often signals deeper architectural or communication problems&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Finding Balance
&lt;/h2&gt;

&lt;p&gt;The real art of CSS specificity, like emotional intelligence, lies not in knowing how to win every conflict, but in creating systems that minimize conflicts in the first place. It's about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Writing selectors that are only as specific as they need to be&lt;/li&gt;
&lt;li&gt;Creating clear hierarchies that reflect natural relationships&lt;/li&gt;
&lt;li&gt;Understanding when to enforce rules strictly and when to allow flexibility&lt;/li&gt;
&lt;li&gt;Recognizing that sometimes the most powerful approach is the simplest one&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The most elegant CSS solutions often come from understanding the natural hierarchy of our elements. This mirrors how our most successful relationships work—not through force or control, but through understanding and respecting natural boundaries and connections.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Art of Flexible Specificity
&lt;/h2&gt;

&lt;p&gt;Here are some lessons that apply equally to CSS specificity and emotional intelligence:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Clarity beats force: A well-structured system rarely needs heavy-handed specificity&lt;/li&gt;
&lt;li&gt;Context matters: What works in one situation might cause problems in another&lt;/li&gt;
&lt;li&gt;Future-proof your choices: Consider how today's decisions will affect tomorrow's flexibility&lt;/li&gt;
&lt;li&gt;Respect the cascade: Most times letting things naturally flow is better than forcing control&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The Path Forward
&lt;/h2&gt;

&lt;p&gt;Specificity in CSS teaches us that power isn't just about strength—it's about precision, context, and understanding. When we write our styles, we're not just coding; we're creating relationships, setting boundaries, and defining hierarchies. By understanding the psychology behind specificity, we can write better CSS and, perhaps, navigate our human relationships with more grace and wisdom.&lt;/p&gt;




&lt;p&gt;Next week, we'll explore how z-index reflects our fundamental needs for visibility, prominence, and attention in both our digital and personal lives. Until then, take a moment to consider: &lt;em&gt;How do you handle specificity in your code, and what might it reveal about how you handle authority and identity in your life?&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Share your thoughts and experiences with specificity—both in CSS and in life—in the comments below.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;Here's the &lt;a href="https://codepen.io/eioluseyi/full/zxOdqMK" rel="noopener noreferrer"&gt;CodePen&lt;/a&gt; used to design the banner 😊&lt;/p&gt;




&lt;h3&gt;
  
  
  About the Author
&lt;/h3&gt;

&lt;p&gt;Emmanuel Imolorhe (EIO) is a Frontend Engineer passionate about CSS.&lt;br&gt;
Check out my CSS videos on &lt;a href="https://youtube.com/@eioluseyi" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Connect with me
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://twitter.com/eioluseyi" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; • &lt;a href="https://bsky.app/profile/eioluseyi.bsky.social" rel="noopener noreferrer"&gt;Bluesky&lt;/a&gt; • &lt;a href="https://mastodon.social/@eioluseyi" rel="noopener noreferrer"&gt;Mastodon&lt;/a&gt; • &lt;a href="https://linkedin.com/in/eioluseyi" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; • &lt;a href="https://eioluseyi.github.io" rel="noopener noreferrer"&gt;Website&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Did this post help you? Have thoughts to share? Let's continue the conversation in the comments below!&lt;/em&gt;&lt;/p&gt;



</description>
      <category>webdev</category>
      <category>css</category>
      <category>emotion</category>
      <category>frontend</category>
    </item>
    <item>
      <title>CSS is Emotional: Flexbox &amp; Grid - A Love Story About Compromise</title>
      <dc:creator>EIO • Emmanuel Imolorhe</dc:creator>
      <pubDate>Tue, 17 Dec 2024 15:05:37 +0000</pubDate>
      <link>https://dev.to/eioluseyi/css-is-emotional-flexbox-grid-a-love-story-about-compromise-4d9o</link>
      <guid>https://dev.to/eioluseyi/css-is-emotional-flexbox-grid-a-love-story-about-compromise-4d9o</guid>
      <description>&lt;p&gt;Every great relationship is about balance. About finding space for each other. About knowing when to hold tight and when to give way. In the world of CSS, we see a complex negotiation of connection, where parents—Grid and Flexbox—teach their children the most profound lesson of all: &lt;strong&gt;how to truly care for one another.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Different Paths, Same Love
&lt;/h2&gt;

&lt;p&gt;Grid is the parent of structured love. Precise. Predictable. Every moment carefully planned, every interaction meticulously organized:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.grid-parent&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;grid&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  &lt;span class="c"&gt;/* There is a place for everyone */&lt;/span&gt;
    &lt;span class="py"&gt;grid-template-columns&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;repeat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="n"&gt;fr&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;  &lt;span class="c"&gt;/* Perfectly organized */&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Flexbox arrives differently—a parent of fluid love. Responsive. Adaptive. Always ready to reshape their approach:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.flex-parent&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* Everyone finds their place */&lt;/span&gt;
    &lt;span class="nl"&gt;flex-wrap&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;wrap&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* Ready to bend over backwards */&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Adaptive Love
&lt;/h2&gt;

&lt;p&gt;The children of Flexbox learn the most nuanced lesson—&lt;strong&gt;Truly listen and create space for each other's unique needs:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.ambitious-sibling&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;flex-grow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  &lt;span class="c"&gt;/* "I need more space!" */&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.supportive-sibling&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;flex-grow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  &lt;span class="c"&gt;/* Expanding to meet another's need */&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.reserved-sibling&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;flex-grow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  &lt;span class="c"&gt;/* "I'm content with what I have" */&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Imagine a moment:&lt;/strong&gt; One sibling struggles. The others don't compete—they adjust. They redistribute their emotional bandwidth, making room for vulnerability.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Compromise
&lt;/h2&gt;

&lt;p&gt;Grid's children learn structure. Flexbox's children learn fluidity.&lt;br&gt;
But the magic happens in between—where love becomes a dynamic, breathing entity.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Flexbox whispers:&lt;/strong&gt; &lt;em&gt;"Let's figure this out together."&lt;/em&gt;&lt;br&gt;
&lt;strong&gt;Grid responds:&lt;/strong&gt; &lt;em&gt;"I've already planned everything for you."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&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.amazonaws.com%2Fuploads%2Farticles%2Fygqob8uxxusvdqezxhrl.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.amazonaws.com%2Fuploads%2Farticles%2Fygqob8uxxusvdqezxhrl.gif" title="Kevin Powell - Isn't that amazing?" alt="CSS is Emotional - Kevin Powell: Isn't that amazing (GIF)" width="500" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Beyond Code
&lt;/h2&gt;

&lt;p&gt;This is more than just a technical choice. It’s not about which method is better—it’s about designing spaces where each element feels at home.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Flexbox teaches adaptability.&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Grid offers security.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Your Love Algorithm
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;How do you balance structure and spontaneity?&lt;/li&gt;
&lt;li&gt;Where in your code (and life) are you too rigid?&lt;/li&gt;
&lt;li&gt;When does structure serve you best?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  CI/CD - Compromise Intelligently / Coexist Dynamically
&lt;/h2&gt;

&lt;p&gt;True love isn't about perfect alignment. It's about continuous adjustment, about creating a space where everyone can grow.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;What layout of life are you currently navigating? Share your story of compromise and connection.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;Next week: "The Psychology of Specificity"&lt;/p&gt;




&lt;p&gt;Here's the &lt;a href="https://codepen.io/eioluseyi/full/azopXLY" rel="noopener noreferrer"&gt;CodePen&lt;/a&gt; used to design the banner 😊&lt;/p&gt;




&lt;h3&gt;
  
  
  About the Author
&lt;/h3&gt;

&lt;p&gt;Emmanuel Imolorhe (EIO) is a Frontend Engineer passionate about CSS.&lt;br&gt;
Check out my CSS videos on &lt;a href="https://youtube.com/@eioluseyi" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Connect with me
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://twitter.com/eioluseyi" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; • &lt;a href="https://bsky.app/profile/eioluseyi.bsky.social" rel="noopener noreferrer"&gt;Bluesky&lt;/a&gt; • &lt;a href="https://linkedin.com/in/eioluseyi" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; • &lt;a href="https://eioluseyi.github.io" rel="noopener noreferrer"&gt;Website&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Did this post help you? Have thoughts to share? Let's continue the conversation in the comments below!&lt;/em&gt;&lt;/p&gt;



</description>
      <category>webdev</category>
      <category>css</category>
      <category>frontend</category>
      <category>emotion</category>
    </item>
    <item>
      <title>CSS is Emotional: Inheritance - The Family Drama of CSS</title>
      <dc:creator>EIO • Emmanuel Imolorhe</dc:creator>
      <pubDate>Sun, 08 Dec 2024 19:27:35 +0000</pubDate>
      <link>https://dev.to/eioluseyi/css-is-emotional-inheritance-the-family-drama-of-css-2jkn</link>
      <guid>https://dev.to/eioluseyi/css-is-emotional-inheritance-the-family-drama-of-css-2jkn</guid>
      <description>&lt;p&gt;In the grand narrative of our stylesheets, inheritance is where things get complicated. It's where CSS starts to feel less like a technical specification and more like a family reunion—complete with unresolved tensions, unexpected behaviors, and the profound ways our past shapes our present.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Roots of Inheritance
&lt;/h2&gt;

&lt;p&gt;Just like in a family, in CSS, every element inherits certain characteristics from its parent. Some traits are passed down deliberately, some accidentally, and some we spend years trying to override. Sound familiar?&lt;/p&gt;

&lt;p&gt;Consider a simple example:&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/eioluseyi/embed/LEPNgLp?height=600&amp;amp;default-tab=css,result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;This isn't just code. This is a lineage. The &lt;code&gt;body&lt;/code&gt; is like a primogenitor of the bloodline, setting the foundational tone for everything that comes after. Every child element begins its life carrying those initial traits—the default font, the base color, the underlying mood of the entire document.&lt;/p&gt;

&lt;h2&gt;
  
  
  Overriding the Family Legacy
&lt;/h2&gt;

&lt;p&gt;But here's where it gets interesting: in both families and CSS, inheritance doesn't mean imprisonment. Just as we can choose our path different from our parents, CSS elements can declare their own identity:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.content&lt;/span&gt; &lt;span class="nt"&gt;h2&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;font-family&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;"Times New Roman"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;serif&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="c"&gt;/* Breaking free from the inherited font */&lt;/span&gt;

  &lt;span class="err"&gt;span&lt;/span&gt; &lt;span class="err"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;white&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="c"&gt;/* The typographic equivalent of
       dying your hair a wild color */&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="err"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It's an act of declaration. Of individuality. Of saying, "I respect where I came from, but I'm not bound by it."&lt;/p&gt;

&lt;h2&gt;
  
  
  The Unintended Inheritances
&lt;/h2&gt;

&lt;p&gt;Not all inherited traits are welcome. Sometimes, we inherit CSS properties we didn't ask for—just like those family quirks we never requested. A nested &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; might suddenly find itself with margins or paddings it never wanted, a digital echo of those family dynamics where you unexpectedly find yourself carrying forward someone else's emotional baggage.&lt;/p&gt;

&lt;p&gt;Modern CSS gives us powerful tools to manage this — 3 values we can use to control inheritance: &lt;code&gt;initial&lt;/code&gt;, &lt;code&gt;inherit&lt;/code&gt; and &lt;code&gt;unset&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;initial&lt;/code&gt; is disowning the family legacy completely — "I'm starting fresh, no family history here."&lt;/p&gt;

&lt;p&gt;&lt;code&gt;inherit&lt;/code&gt; is fully embracing your roots — "I am exactly like my parents, proud and unchanged."&lt;/p&gt;

&lt;p&gt;&lt;code&gt;unset&lt;/code&gt; is the nuanced family member who says, "I'll keep what works from our family story, but I'm free to redefine the rest." It respects the inheritance where it makes sense, but isn't afraid to break the pattern when needed.&lt;/p&gt;

&lt;p&gt;It's like family therapy, but for your stylesheet.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.going-rogue&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;all&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;initial&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="c"&gt;/* Complete reset! */&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.embrace-roots&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;inherit&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="c"&gt;/* Proudly continue the family legacy. */&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.all-about-balance&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;all&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;unset&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="c"&gt;/* Mindfully balance inheritance and individuality. */&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  A Profound Metaphor
&lt;/h2&gt;

&lt;p&gt;Inheritance in CSS is more than a technical mechanism. It's a reflection of how traits, memories, and experiences flow through systems—be they familial, cultural, or digital.&lt;/p&gt;

&lt;p&gt;Some traits we cherish and preserve. Some we modify. Some we reject entirely. But they all start somewhere, passed down through unseen connections, shaping what comes next.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;C&lt;/strong&gt;ascading&lt;br&gt;
&lt;strong&gt;S&lt;/strong&gt;tyle&lt;br&gt;
&lt;strong&gt;S&lt;/strong&gt;heet&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Yup! You are welcome&lt;/em&gt; 😌&lt;/p&gt;
&lt;/blockquote&gt;


&lt;/blockquote&gt;

&lt;p&gt;In CSS, as in life, we are never truly starting from scratch. We are always building upon something that came before. Inheritance is the silent storyteller of our stylesheets, the foundational thread that connects elements like generations through the cascade, giving CSS its dynamic, interconnected nature.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reflection Questions
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;What "inherited traits" do you carry in your code?&lt;/li&gt;
&lt;li&gt;How deliberately are you choosing which styles (and which emotional legacies) you pass forward?&lt;/li&gt;
&lt;li&gt;When was the last time you consciously "overrode" an inherited pattern—in your stylesheet or in your life?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'm eager to hear from you - share your answers in the comments.&lt;/p&gt;




&lt;p&gt;Next week: "Flexbox &amp;amp; Grid: A Love Story About Compromise" &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Share your inheritance stories—both CSS and personal—in the comments below.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;As usual, here's the &lt;a href="https://codepen.io/eioluseyi/full/JoPXwOe" rel="noopener noreferrer"&gt;CodePen&lt;/a&gt; used to design the banner 😊&lt;/p&gt;




&lt;h3&gt;
  
  
  About the Author
&lt;/h3&gt;

&lt;p&gt;Emmanuel Imolorhe (EIO) is a Frontend Engineer passionate about CSS.&lt;br&gt;
Check out my CSS videos on &lt;a href="https://youtube.com/@eioluseyi" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Connect with me
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://twitter.com/eioluseyi" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; • &lt;a href="https://bsky.app/profile/eioluseyi.bsky.social" rel="noopener noreferrer"&gt;Bluesky&lt;/a&gt; • &lt;a href="https://mastodon.social/@eioluseyi" rel="noopener noreferrer"&gt;Mastodon&lt;/a&gt; • &lt;a href="https://linkedin.com/in/eioluseyi" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; • &lt;a href="https://eioluseyi.github.io" rel="noopener noreferrer"&gt;Website&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Did this post help you? Have thoughts to share? Let's continue the conversation in the comments below!&lt;/em&gt;&lt;/p&gt;



</description>
      <category>webdev</category>
      <category>css</category>
      <category>frontend</category>
      <category>emotion</category>
    </item>
    <item>
      <title>CSS is Emotional: The Box Model of Personal Space</title>
      <dc:creator>EIO • Emmanuel Imolorhe</dc:creator>
      <pubDate>Sun, 01 Dec 2024 16:00:00 +0000</pubDate>
      <link>https://dev.to/eioluseyi/css-is-emotional-the-box-model-of-personal-space-4d77</link>
      <guid>https://dev.to/eioluseyi/css-is-emotional-the-box-model-of-personal-space-4d77</guid>
      <description>&lt;p&gt;We are living, breathing websites – each of us a complex layout system constantly negotiating space. Our boundaries flex like responsive design, expanding and contracting with every human interaction. Some of us stretch to &lt;code&gt;max-width: 100%&lt;/code&gt;, eager to connect. Others contract to &lt;code&gt;display: none&lt;/code&gt;, retreating from the world's overwhelming complexity.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Algorithm of Human Connection
&lt;/h2&gt;

&lt;p&gt;Every interaction is a silent calculation, an intricate CSS algorithm playing out in real-time. We are constantly rendering and re-rendering our personal boundaries, adjusting our emotional layouts with each social encounter.&lt;/p&gt;

&lt;h2&gt;
  
  
  Margins: The Invisible Force Fields
&lt;/h2&gt;

&lt;p&gt;Have you ever felt that inexplicable discomfort when someone stands just a little too close? That's margins in action – the invisible buffer zones that determine exactly how close is too close. &lt;/p&gt;

&lt;p&gt;Think about the last time you stood in an elevator. That unspoken distance between strangers? Pure margin implementation. Nobody taught you to leave exactly one foot and six inches between bodies, yet everyone instinctively knows the rule. And this is not a covid thing. It's a human &lt;code&gt;margin: auto&lt;/code&gt; – naturally centered, perfectly distant.&lt;/p&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.amazonaws.com%2Fuploads%2Farticles%2Fisyl0phlytb1p8bpvy1y.png" 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.amazonaws.com%2Fuploads%2Farticles%2Fisyl0phlytb1p8bpvy1y.png" alt="In the elevator - Naturally centered, perfectly distant" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In web design, margins prevent elements from colliding. In human interaction, they prevent emotional bruising. They are the diplomatic zones, the neutral territories where self-preservation negotiates with social connection.&lt;/p&gt;

&lt;h2&gt;
  
  
  Borders: Defining Emotional Territory
&lt;/h2&gt;

&lt;p&gt;Borders are declarations. Clean, explicit lines that define territory. They're the unspoken rules of queuing, the subtle head shake that prevents unwanted conversations, the polite "no" that maintains personal integrity.&lt;/p&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.amazonaws.com%2Fuploads%2Farticles%2Ftge6j0es7tdk0q4do81f.png" 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.amazonaws.com%2Fuploads%2Farticles%2Ftge6j0es7tdk0q4do81f.png" alt="Emotional Territory" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Padding: The Comfort Zone
&lt;/h2&gt;

&lt;p&gt;Padding enters as the soft armor of self – the gentle cushion between vulnerability and the world's sharp interactions. It's how you use small talk to ease into difficult conversations. Too little padding, and every interaction feels like raw exposure. Too much, and you become an insulated element, disconnected from the larger layout of human experience.&lt;/p&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.amazonaws.com%2Fuploads%2Farticles%2Fj0rh2hk9uk6ruibtyjrs.png" 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.amazonaws.com%2Fuploads%2Farticles%2Fj0rh2hk9uk6ruibtyjrs.png" alt="The Comfort Zone" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Imagine padding as the layer of politeness in a tough conversation, the buffer of humor when tensions rise, the gentle "how are you" before diving into serious topics.&lt;/p&gt;

&lt;h2&gt;
  
  
  Compassionate Coding
&lt;/h2&gt;

&lt;p&gt;Understanding our personal layout is an act of self-compassion. We are not static websites, but dynamic, responsive systems constantly adapting to new inputs, new contexts, new connections.&lt;/p&gt;

&lt;p&gt;Each interaction is a moment of recompilation, a chance to adjust our emotional stylesheet, to refine our boundaries with greater understanding and grace. Just as a skilled developer knows that the most elegant code is not about perfection, but about adaptability and empathy, so too are our most meaningful human connections built on the same principles of flexible, thoughtful design.&lt;/p&gt;

&lt;p&gt;So, the next time you're writing CSS, remember: you're not just defining a layout. &lt;strong&gt;You're mapping emotional territory, one pixel at a time.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Next week: Inheritance – The Family Drama of CSS&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;Here's the &lt;a href="https://codepen.io/eioluseyi/full/jENPmaE" rel="noopener noreferrer"&gt;CodePen&lt;/a&gt; used to design the banner 😊&lt;/p&gt;




&lt;h3&gt;
  
  
  About the Author
&lt;/h3&gt;

&lt;p&gt;Emmanuel Imolorhe (EIO) is a Frontend Engineer passionate about CSS.&lt;br&gt;
Check out my CSS videos on &lt;a href="https://youtube.com/@eioluseyi" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Connect with me
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://twitter.com/eioluseyi" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; • &lt;a href="https://bsky.app/profile/eioluseyi.bsky.social" rel="noopener noreferrer"&gt;Bluesky&lt;/a&gt; • &lt;a href="https://linkedin.com/in/eioluseyi" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; • &lt;a href="https://eioluseyi.github.io" rel="noopener noreferrer"&gt;Website&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Did this post help you? Have thoughts to share? Let's continue the conversation in the comments below!&lt;/em&gt;&lt;/p&gt;



</description>
      <category>css</category>
      <category>webdev</category>
      <category>frontend</category>
      <category>emotion</category>
    </item>
    <item>
      <title>CSS is Emotional: A Series About Code, Feelings, and the Space Between</title>
      <dc:creator>EIO • Emmanuel Imolorhe</dc:creator>
      <pubDate>Sun, 24 Nov 2024 20:41:20 +0000</pubDate>
      <link>https://dev.to/eioluseyi/css-is-emotional-a-series-about-code-feelings-and-the-space-between-lhf</link>
      <guid>https://dev.to/eioluseyi/css-is-emotional-a-series-about-code-feelings-and-the-space-between-lhf</guid>
      <description>&lt;p&gt;We tend to think of CSS as a purely technical tool — a means to an end, a way to make websites look pretty. But after years of writing css, debugging layouts, and battling with specificity, I've come to a different conclusion:&lt;br&gt;
&lt;strong&gt;CSS is deeply, inherently emotional&lt;/strong&gt; ✨&lt;/p&gt;

&lt;p&gt;I'm not talking about the frustration of centering a div (though we'll get to that) or the &lt;a href="https://emotion.sh/docs/introduction" rel="noopener noreferrer"&gt;css-in-js library&lt;/a&gt; everyone knows 🙃&lt;br&gt;
I'm talking about how CSS, at its core, reflects fundamental human experiences. Every property, every declaration, every cascade mirrors something deeply personal about how we interact with the world and each other.&lt;/p&gt;

&lt;h4&gt;
  
  
  Think about it 🤔
&lt;/h4&gt;

&lt;p&gt;What is the box model if not a metaphor for personal space? What is inheritance if not a reflection of family dynamics? What are media queries if not lessons in adaptation and resilience?&lt;/p&gt;

&lt;p&gt;Over the next &lt;strong&gt;10&lt;/strong&gt; weeks, we'll explore these parallels in detail. We'll dive into how &lt;strong&gt;flexbox&lt;/strong&gt; teaches us about compromise, how &lt;strong&gt;z-index&lt;/strong&gt; reflects our desire for attention, and how &lt;strong&gt;debugging CSS&lt;/strong&gt; can be an unexpected journey of self-discovery 💫&lt;/p&gt;

&lt;p&gt;This series isn't just about becoming a better CSS developer (though you will 😎). It's about understanding how our technical tools reflect our human experiences, and how acknowledging this connection can make us both better developers and more empathetic humans.&lt;/p&gt;

&lt;h4&gt;
  
  
  Here's what's coming up:
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;The Box Model of Personal Space&lt;/li&gt;
&lt;li&gt;Inheritance: The Family Drama of CSS&lt;/li&gt;
&lt;li&gt;Flexbox &amp;amp; Grid: A Love Story About Compromise&lt;/li&gt;
&lt;li&gt;The Psychology of Specificity&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;z-index&lt;/strong&gt; and the Hierarchy of Needs&lt;/li&gt;
&lt;li&gt;Media Queries: Adapting to Change&lt;/li&gt;
&lt;li&gt;The Hidden Emotions of CSS Animations&lt;/li&gt;
&lt;li&gt;CSS Custom Properties: The Art of Self-Expression&lt;/li&gt;
&lt;li&gt;Debugging CSS: A Journey of Self-Discovery&lt;/li&gt;
&lt;li&gt;Technical Debt: The Emotional Baggage of CSS&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Each week, we'll explore one of these topics in depth, drawing parallels between technical concepts and emotional experiences. We'll share stories, examine code, and maybe even learn something about ourselves in the process 🥹&lt;/p&gt;

&lt;p&gt;Whether you're a seasoned developer or just starting your journey with CSS, I invite you to join me in this exploration of the more human side of our stylesheets. Because at the end of the day, CSS isn't just about making things look good — it's about understanding the invisible boxes, relationships, and feelings that shape our digital and emotional worlds 💫&lt;/p&gt;

&lt;p&gt;Welcome to &lt;strong&gt;"CSS is Emotional"&lt;/strong&gt; — New posts every Sunday.&lt;br&gt;
Subscribe to follow along.&lt;br&gt;
I'd love to hear which topic you're most excited about! Drop a comment and let me know 😊&lt;/p&gt;

&lt;p&gt;See you next week for our first deep dive — the emotional world of &lt;strong&gt;The Box Model&lt;/strong&gt; 🎉&lt;/p&gt;




&lt;p&gt;Here's the &lt;a href="https://codepen.io/eioluseyi/full/jENNqOV" rel="noopener noreferrer"&gt;CodePen&lt;/a&gt; used to design the banner 😊&lt;/p&gt;




&lt;h4&gt;
  
  
  About the Author
&lt;/h4&gt;

&lt;p&gt;Emmanuel Imolorhe (EIO) is a Frontend Engineer passionate about CSS.&lt;br&gt;
Check out my CSS videos on &lt;a href="https://youtube.com/@eioluseyi" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  Connect with me
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://twitter.com/eioluseyi" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; • &lt;a href="https://bsky.app/profile/eioluseyi.bsky.social" rel="noopener noreferrer"&gt;Bluesky&lt;/a&gt; • &lt;a href="https://linkedin.com/in/eioluseyi" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; • &lt;a href="https://eioluseyi.github.io" rel="noopener noreferrer"&gt;Website&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Did this post help you? Have thoughts to share? Let's continue the conversation in the comments below!&lt;/em&gt;&lt;/p&gt;



</description>
      <category>css</category>
      <category>webdev</category>
      <category>frontend</category>
      <category>emotion</category>
    </item>
  </channel>
</rss>
