<?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>Forem: Pawar Shivam</title>
    <description>The latest articles on Forem by Pawar Shivam (@pawar-shivam7).</description>
    <link>https://forem.com/pawar-shivam7</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%2F3170398%2F0beab32d-73b4-4382-bd4e-8fba8d269023.png</url>
      <title>Forem: Pawar Shivam</title>
      <link>https://forem.com/pawar-shivam7</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/pawar-shivam7"/>
    <language>en</language>
    <item>
      <title>🌍 Earth Replies to Your Future — What If the Planet Answered Back?</title>
      <dc:creator>Pawar Shivam</dc:creator>
      <pubDate>Sat, 18 Apr 2026 10:02:08 +0000</pubDate>
      <link>https://forem.com/pawar-shivam7/earth-replies-to-your-future-what-if-the-planet-answered-back-1o8l</link>
      <guid>https://forem.com/pawar-shivam7/earth-replies-to-your-future-what-if-the-planet-answered-back-1o8l</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for &lt;a href="https://dev.to/challenges/weekend-2026-04-16"&gt;Weekend Challenge: Earth Day Edition&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🌌 What I Built
&lt;/h2&gt;

&lt;p&gt;Most climate apps show numbers.&lt;/p&gt;

&lt;p&gt;This one talks back.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Earth Replies to Your Future&lt;/strong&gt; is an immersive, cinematic web experience where users send a message to Earth… and Earth replies.&lt;/p&gt;

&lt;p&gt;Not with data — but with emotion.&lt;/p&gt;

&lt;p&gt;The goal was simple:&lt;br&gt;
👉 turn awareness into &lt;strong&gt;feeling&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Instead of dashboards and statistics, this project creates a &lt;strong&gt;personal conversation&lt;/strong&gt; between the user and the planet.&lt;/p&gt;

&lt;p&gt;After receiving Earth’s response, users make a choice — and the experience transforms into a &lt;strong&gt;visual future&lt;/strong&gt; based on that decision.&lt;/p&gt;




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

&lt;p&gt;👉 Live Experience: &lt;strong&gt;[&lt;a href="https://earth-day-dev-weekend-challenge.vercel.app/" rel="noopener noreferrer"&gt;https://earth-day-dev-weekend-challenge.vercel.app/&lt;/a&gt;]&lt;/strong&gt;&lt;br&gt;
👉 GitHub Repo: &lt;strong&gt;[&lt;a href="https://github.com/pawarshivamd/earth-day-dev-weekend-challenge" rel="noopener noreferrer"&gt;https://github.com/pawarshivamd/earth-day-dev-weekend-challenge&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What to expect:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;🌍 AI-generated poetic responses (typed in real-time)&lt;/li&gt;
&lt;li&gt;🎧 Earth speaking using voice synthesis&lt;/li&gt;
&lt;li&gt;🌫️ Bad future → red tones, shake, smoke&lt;/li&gt;
&lt;li&gt;🌿 Good future → glow, particles, calm atmosphere&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;(Tip: Use sound for full experience)&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  💻 Code
&lt;/h2&gt;

&lt;p&gt;The full source code is available here:&lt;br&gt;
👉 &lt;strong&gt;[Add GitHub Repo Link]&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚙️ How I Built It
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🧠 AI Layer (Core Experience)
&lt;/h3&gt;

&lt;p&gt;I used &lt;strong&gt;Google Gemini API (&lt;code&gt;gemini-1.5-flash&lt;/code&gt;)&lt;/strong&gt; as the emotional brain of the project.&lt;/p&gt;

&lt;p&gt;Instead of basic prompts, I designed structured instructions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Assign a role → &lt;em&gt;“You are Earth…”&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Control tone → poetic, reflective, human-like&lt;/li&gt;
&lt;li&gt;Limit length → short, meaningful responses&lt;/li&gt;
&lt;li&gt;Avoid robotic language&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This ensures:&lt;br&gt;
👉 every response feels alive&lt;br&gt;
👉 every interaction is unique&lt;/p&gt;




&lt;h3&gt;
  
  
  🎨 Frontend Experience
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;React + Vite&lt;/strong&gt; → fast and modular UI&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tailwind CSS&lt;/strong&gt; → glassmorphism + responsive design&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Framer Motion&lt;/strong&gt; → cinematic transitions between scenes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of pages, I built &lt;strong&gt;scene-based flow&lt;/strong&gt; to make the app feel like an interactive film.&lt;/p&gt;




&lt;h3&gt;
  
  
  🎧 Immersion Layer
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SpeechSynthesis API&lt;/strong&gt; → Earth literally speaks&lt;/li&gt;
&lt;li&gt;Ambient background audio → triggered after user interaction&lt;/li&gt;
&lt;li&gt;Subtle particles + gradients → depth and atmosphere&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  ⚡ Performance &amp;amp; UX Decisions
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Used &lt;strong&gt;Page Visibility API&lt;/strong&gt; to pause heavy video/audio when tab inactive&lt;/li&gt;
&lt;li&gt;Avoided heavy video-first approach → used optimized visuals + motion&lt;/li&gt;
&lt;li&gt;Built a &lt;strong&gt;“Dice Roll” suggestion system&lt;/strong&gt; for users who don’t know what to write&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧩 Key Challenges
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Making AI feel human
&lt;/h3&gt;

&lt;p&gt;Early outputs felt robotic.&lt;/p&gt;

&lt;p&gt;✅ Solved using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;strict prompt engineering&lt;/li&gt;
&lt;li&gt;role-based storytelling&lt;/li&gt;
&lt;li&gt;tone constraints&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  2. Balancing design vs performance
&lt;/h3&gt;

&lt;p&gt;Heavy video backgrounds caused lag.&lt;/p&gt;

&lt;p&gt;✅ Solution:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;lightweight visuals&lt;/li&gt;
&lt;li&gt;motion-based immersion instead of raw media&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  3. Creating emotion without data
&lt;/h3&gt;

&lt;p&gt;No charts. No dashboards.&lt;/p&gt;

&lt;p&gt;Focus was on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;pacing&lt;/li&gt;
&lt;li&gt;storytelling&lt;/li&gt;
&lt;li&gt;user decisions&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🏆 Prize Categories
&lt;/h2&gt;

&lt;p&gt;✅ &lt;strong&gt;Best Use of Google Gemini&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Gemini powers the entire experience:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;generates emotional responses&lt;/li&gt;
&lt;li&gt;adapts to user input&lt;/li&gt;
&lt;li&gt;creates a different journey every time&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  💭 Why This Matters
&lt;/h2&gt;

&lt;p&gt;We don’t lack information about climate change.&lt;/p&gt;

&lt;p&gt;We lack connection.&lt;/p&gt;

&lt;p&gt;This project is an attempt to make people pause —&lt;br&gt;
not to analyze…&lt;/p&gt;

&lt;p&gt;…but to feel.&lt;/p&gt;




&lt;h2&gt;
  
  
  🕊️ Final Thought
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“The future was never written. It was always yours to choose.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;🌍 If Earth could reply to you… what would you say?&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Stop Building Multiple Components — Use Class-Based Variants Instead</title>
      <dc:creator>Pawar Shivam</dc:creator>
      <pubDate>Sat, 11 Apr 2026 17:58:28 +0000</pubDate>
      <link>https://forem.com/pawar-shivam7/stop-building-multiple-components-use-class-based-variants-instead-59nk</link>
      <guid>https://forem.com/pawar-shivam7/stop-building-multiple-components-use-class-based-variants-instead-59nk</guid>
      <description>&lt;p&gt;Learn how to build one reusable timeline component and control multiple UI variations using only CSS classes.&lt;/p&gt;

&lt;h2&gt;
  
  
  =&amp;gt; We Keep Rebuilding the Same Component 😐
&lt;/h2&gt;

&lt;p&gt;Timeline for roles&lt;br&gt;
Timeline for progress&lt;br&gt;
Timeline for steps&lt;/p&gt;

&lt;p&gt;👉 Every time → new component&lt;/p&gt;


&lt;h2&gt;
  
  
  =&amp;gt; The Real Problem
&lt;/h2&gt;

&lt;p&gt;It’s NOT UI complexity&lt;/p&gt;

&lt;p&gt;👉 It’s how we think about components&lt;/p&gt;


&lt;h2&gt;
  
  
  =&amp;gt; Common Developer Mistakes
&lt;/h2&gt;

&lt;p&gt;• duplicate HTML for similar layouts&lt;br&gt;
• add unnecessary JS for switching UI&lt;br&gt;
• create multiple CSS files&lt;/p&gt;

&lt;p&gt;👉 More code, more bugs&lt;/p&gt;


&lt;h2&gt;
  
  
  =&amp;gt; Real Example (From My Project)
&lt;/h2&gt;

&lt;p&gt;I built two timeline versions:&lt;/p&gt;

&lt;p&gt;👉 Version 1 (Roles)&lt;br&gt;
&lt;iframe height="600" src="https://codepen.io/shivam-pawar-07/embed/ZYpMgEX?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;👉 Version 2 (Progress)&lt;br&gt;
&lt;iframe height="600" src="https://codepen.io/shivam-pawar-07/embed/bNwxXdp?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  =&amp;gt; They Look Different… But 👀
&lt;/h2&gt;

&lt;p&gt;👉 Same structure&lt;br&gt;
👉 Same HTML&lt;br&gt;
👉 Same logic&lt;/p&gt;


&lt;h2&gt;
  
  
  =&amp;gt; The Fix: One Reusable Component 🔥
&lt;/h2&gt;


&lt;h2&gt;
  
  
  =&amp;gt; 1. Single HTML Structure
&lt;/h2&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;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"container-timeline"&lt;/span&gt;&lt;span class="nt"&gt;&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;"timeline"&lt;/span&gt;&lt;span class="nt"&gt;&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;"timeline-row active"&lt;/span&gt;&lt;span class="nt"&gt;&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;"dot"&lt;/span&gt;&lt;span class="nt"&gt;&amp;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;"hline"&lt;/span&gt;&lt;span class="nt"&gt;&amp;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;"num"&lt;/span&gt;&lt;span class="nt"&gt;&amp;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;"card-sec"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Content&lt;span class="nt"&gt;&amp;lt;/div&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&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;👉 No duplication&lt;br&gt;
👉 Clean structure&lt;/p&gt;


&lt;h2&gt;
  
  
  =&amp;gt; 2. Layout with Pure CSS
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.timeline-row&lt;/span&gt;&lt;span class="nd"&gt;:nth-child&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;odd&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="nc"&gt;.card-sec&lt;/span&gt; &lt;span class="p"&gt;{&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;60%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.timeline-row&lt;/span&gt;&lt;span class="nd"&gt;:nth-child&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;even&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="nc"&gt;.card-sec&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;right&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;60%&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;👉 No JS needed&lt;br&gt;
👉 Fully responsive logic&lt;/p&gt;


&lt;h2&gt;
  
  
  =&amp;gt; 3. Auto Numbering (Zero JS 😎)
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.timeline&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;counter-reset&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;step&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.timeline-row&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;counter-increment&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;step&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.num&lt;/span&gt;&lt;span class="nd"&gt;::before&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;counter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;step&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;decimal-leading-zero&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;👉 No props&lt;br&gt;
👉 No manual numbering&lt;/p&gt;


&lt;h2&gt;
  
  
  =&amp;gt; 4. Variant Switch (The Real Power)
&lt;/h2&gt;

&lt;p&gt;Just change ONE class:&lt;br&gt;
&lt;/p&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;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"container-timeline"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;vs&lt;br&gt;
&lt;/p&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;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"container-timeline container-timeline-progress"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;👉 That’s it 😳&lt;/p&gt;




&lt;h2&gt;
  
  
  =&amp;gt; What Changes Automatically?
&lt;/h2&gt;

&lt;p&gt;With &lt;code&gt;.container-timeline-progress&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;• progress line activates&lt;br&gt;
• colors change (active/pending)&lt;br&gt;
• completion state appears&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;.container-timeline-progress&lt;/span&gt; &lt;span class="nc"&gt;.timeline&lt;/span&gt;&lt;span class="nd"&gt;::before&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;linear-gradient&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;h2&gt;
  
  
  =&amp;gt; Hidden Dev Insight 🧠
&lt;/h2&gt;

&lt;p&gt;Most UI differences are:&lt;/p&gt;

&lt;p&gt;👉 styling differences&lt;br&gt;
👉 state differences&lt;/p&gt;

&lt;p&gt;NOT structure&lt;/p&gt;


&lt;h2&gt;
  
  
  =&amp;gt; So What Should Handle It?
&lt;/h2&gt;

&lt;p&gt;👉 CSS (not JS)&lt;/p&gt;


&lt;h2&gt;
  
  
  =&amp;gt; Real UI Architecture Rule
&lt;/h2&gt;

&lt;p&gt;Design 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="nc"&gt;.timeline&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;              &lt;span class="c"&gt;/* base */&lt;/span&gt;
&lt;span class="nc"&gt;.container-timeline-progress&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;  &lt;span class="c"&gt;/* modifier */&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;👉 Base = structure&lt;br&gt;
👉 Modifier = variation&lt;/p&gt;




&lt;h2&gt;
  
  
  =&amp;gt; Why This Matters
&lt;/h2&gt;

&lt;p&gt;• reusable components&lt;br&gt;
• less code&lt;br&gt;
• easier maintenance&lt;br&gt;
• scalable design system&lt;/p&gt;




&lt;h2&gt;
  
  
  =&amp;gt; Final Thought
&lt;/h2&gt;

&lt;p&gt;Stop building new components for small changes…&lt;/p&gt;

&lt;p&gt;👉 Start designing flexible ones 🚀&lt;/p&gt;




&lt;h2&gt;
  
  
  =&amp;gt; What Do You Think?
&lt;/h2&gt;

&lt;p&gt;Do you create new components for variations — or reuse with classes?&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>frontend</category>
      <category>css</category>
      <category>webcomponents</category>
    </item>
    <item>
      <title>Tried Ordering Coffee… Got Rejected by an AI Teapot 🤖☕❌</title>
      <dc:creator>Pawar Shivam</dc:creator>
      <pubDate>Tue, 07 Apr 2026 18:41:18 +0000</pubDate>
      <link>https://forem.com/pawar-shivam7/tried-ordering-coffee-got-rejected-by-an-ai-teapot-540b</link>
      <guid>https://forem.com/pawar-shivam7/tried-ordering-coffee-got-rejected-by-an-ai-teapot-540b</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/aprilfools-2026"&gt;DEV April Fools Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  ☕ What I Built
&lt;/h2&gt;

&lt;p&gt;I built &lt;strong&gt;Coffee Refuser 9000&lt;/strong&gt; — a strictly compliant implementation of the infamous HTTP &lt;code&gt;418 I'm a teapot&lt;/code&gt; error.&lt;/p&gt;

&lt;p&gt;In a world obsessed with caffeine, this application takes a bold stand. It is a teapot… and it refuses to brew coffee.&lt;/p&gt;

&lt;p&gt;No matter what you request — Latte, Espresso, or Cappuccino — the app responds with a uniquely crafted, sarcastic, and dramatic refusal message. Powered by AI, every rejection feels personal, poetic, and slightly offensive (in a fun way 😄).&lt;/p&gt;

&lt;p&gt;It only accepts &lt;strong&gt;Tea&lt;/strong&gt; — the one true beverage this teapot respects.&lt;/p&gt;




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

&lt;p&gt;Check out the live (and very stubborn) teapot:&lt;br&gt;
👉 &lt;a href="https://ais-dev-bemem4suenaft6h3m2v2sn-323154044951.asia-southeast1.run.app/" rel="noopener noreferrer"&gt;https://ais-dev-bemem4suenaft6h3m2v2sn-323154044951.asia-southeast1.run.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Try ordering coffee… I dare you 😄&lt;/p&gt;




&lt;h2&gt;
  
  
  💻 Code
&lt;/h2&gt;

&lt;p&gt;Explore the source code here:&lt;br&gt;
👉 &lt;a href="https://github.com/pawarshivamd/april-fools-coffee" rel="noopener noreferrer"&gt;https://github.com/pawarshivamd/april-fools-coffee&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The repository contains the core logic, UI, and the AI-powered sarcasm engine behind the teapot.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚙️ How I Built It
&lt;/h2&gt;

&lt;p&gt;This project focuses on &lt;strong&gt;“useless but polished” engineering&lt;/strong&gt; — because over-engineering a joke makes it better 😄&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;React + Vite&lt;/strong&gt; → Lightning-fast UI for instant rejection&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google Gemini AI&lt;/strong&gt; → Powers the &lt;em&gt;Sarcasm Engine&lt;/em&gt; that generates dynamic refusal messages&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tailwind CSS&lt;/strong&gt; → Clean “artisanal teapot” aesthetic&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Framer Motion&lt;/strong&gt; → Teapot wiggles + dramatic shake effects&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lucide React&lt;/strong&gt; → Icons for beverages I refuse to make&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🏆 Prize Category
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🥇 Best Google AI Usage
&lt;/h3&gt;

&lt;p&gt;Using a state-of-the-art LLM just to say &lt;em&gt;“No”&lt;/em&gt; in creative ways…&lt;br&gt;
This is peak 2026 engineering.&lt;/p&gt;

&lt;h3&gt;
  
  
  🫖 Best Ode to Larry Masinter
&lt;/h3&gt;

&lt;p&gt;A faithful (and slightly aggressive) tribute to RFC 2324.&lt;br&gt;
This teapot takes its job very seriously.&lt;/p&gt;




&lt;h2&gt;
  
  
  😄 Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Not every project needs to be useful.&lt;br&gt;
Some just need to make people smile… or argue with a teapot ☕❌&lt;/p&gt;

&lt;p&gt;Give it a try — but don’t expect coffee.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>418challenge</category>
      <category>showdev</category>
    </item>
    <item>
      <title>From ENIAC to AI: A Woman's Journey Through 80 Years of Code</title>
      <dc:creator>Pawar Shivam</dc:creator>
      <pubDate>Sat, 04 Apr 2026 18:29:01 +0000</pubDate>
      <link>https://forem.com/pawar-shivam7/from-eniac-to-ai-a-womans-journey-through-80-years-of-code-175i</link>
      <guid>https://forem.com/pawar-shivam7/from-eniac-to-ai-a-womans-journey-through-80-years-of-code-175i</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/wecoded-2026"&gt;2026 WeCoded Challenge&lt;/a&gt;: Frontend Art&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Show us your Art
&lt;/h2&gt;

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

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

&lt;p&gt;This artwork was inspired by the incredible women who built the foundation &lt;br&gt;
of computing — from the 1940s pioneers who programmed ENIAC with punch cards, &lt;br&gt;
to today's developers writing AI-powered code with holographic interfaces.&lt;/p&gt;

&lt;p&gt;The piece is split into two worlds:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Left side (sepia, 1940s):&lt;/strong&gt; A female developer standing beside the ENIAC 
machine, holding punch cards — representing trailblazers like Grace Hopper 
and the "human computers" of that era.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Right side (cyberpunk, 2026):&lt;/strong&gt; A modern developer with a holographic 
badge, AR glasses, floating code snippets, and a glass keyboard — 
representing where we are today and where we are going.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The glowing split line in the center with the ♀ symbol represents the &lt;br&gt;
continuous thread of women in tech across all eras. The message is simple: &lt;br&gt;
&lt;strong&gt;we were always here, and we are not going anywhere.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  My Code
&lt;/h2&gt;

&lt;p&gt;Built with pure &lt;strong&gt;HTML + CSS&lt;/strong&gt; — no frameworks, no libraries.&lt;/p&gt;

&lt;p&gt;Key techniques used:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CSS animations (&lt;code&gt;@keyframes&lt;/code&gt;) for glowing dials, floating code, scan lines&lt;/li&gt;
&lt;li&gt;CSS Grid and absolute positioning for the split-screen layout&lt;/li&gt;
&lt;li&gt;Inline SVG for the holographic syntax tree&lt;/li&gt;
&lt;li&gt;CSS custom properties for theming&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>wecoded</category>
      <category>devchallenge</category>
      <category>frontend</category>
      <category>css</category>
    </item>
    <item>
      <title>What Happens When Two IDs Clash? (And Why Your CSS Still Breaks)</title>
      <dc:creator>Pawar Shivam</dc:creator>
      <pubDate>Sat, 04 Apr 2026 16:58:33 +0000</pubDate>
      <link>https://forem.com/pawar-shivam7/what-happens-when-two-ids-clash-and-why-your-css-still-breaks-2j6</link>
      <guid>https://forem.com/pawar-shivam7/what-happens-when-two-ids-clash-and-why-your-css-still-breaks-2j6</guid>
      <description>&lt;h2&gt;
  
  
  =&amp;gt; Two Same IDs? Big Problem 🚨
&lt;/h2&gt;

&lt;p&gt;You write:&lt;br&gt;
&lt;/p&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;div&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"box"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;First&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;id=&lt;/span&gt;&lt;span class="s"&gt;"box"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Second&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;👉 This is INVALID HTML&lt;/p&gt;

&lt;p&gt;IDs must be unique.&lt;/p&gt;




&lt;h2&gt;
  
  
  =&amp;gt; But What Actually Happens?
&lt;/h2&gt;

&lt;p&gt;Browser doesn’t crash 😄&lt;/p&gt;

&lt;p&gt;👉 It still renders both&lt;br&gt;
👉 But behavior becomes unpredictable&lt;/p&gt;


&lt;h2&gt;
  
  
  =&amp;gt; CSS with Same ID
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nf"&gt;#box&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;red&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;👉 BOTH elements become red&lt;/p&gt;

&lt;p&gt;Even though it’s wrong ❌&lt;/p&gt;


&lt;h2&gt;
  
  
  =&amp;gt; JavaScript Problem (Hidden Bug)
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;box&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;👉 Only returns FIRST element&lt;/p&gt;

&lt;p&gt;Second one ignored ❌&lt;/p&gt;


&lt;h2&gt;
  
  
  =&amp;gt; Now Let’s Make It Complex 🔥
&lt;/h2&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;div&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"box"&lt;/span&gt; &lt;span class="na"&gt;style=&lt;/span&gt;&lt;span class="s"&gt;"color: green;"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;First&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;id=&lt;/span&gt;&lt;span class="s"&gt;"box"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Second&lt;span class="nt"&gt;&amp;lt;/div&amp;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="nf"&gt;#box&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;red&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;👉 First = &lt;strong&gt;green&lt;/strong&gt; (inline wins)&lt;br&gt;
👉 Second = &lt;strong&gt;red&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  =&amp;gt; Add &lt;code&gt;!important&lt;/code&gt;
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nf"&gt;#box&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;red&lt;/span&gt; &lt;span class="cp"&gt;!important&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;👉 Now BOTH become red&lt;/p&gt;

&lt;p&gt;Even inline gets overridden 😳&lt;/p&gt;


&lt;h2&gt;
  
  
  =&amp;gt; What If Same ID in Multiple CSS Files?
&lt;/h2&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;link&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"a.css"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"b.css"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;a.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="nf"&gt;#box&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;blue&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;b.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="nf"&gt;#box&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;red&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;👉 Result: &lt;strong&gt;red&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;👉 Last loaded file wins&lt;/p&gt;




&lt;h2&gt;
  
  
  =&amp;gt; Same Specificity Inside Same File
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nf"&gt;#box&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;blue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nf"&gt;#box&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;red&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;👉 Bottom rule wins&lt;/p&gt;




&lt;h2&gt;
  
  
  =&amp;gt; Why This Is Dangerous
&lt;/h2&gt;

&lt;p&gt;• Unpredictable behavior&lt;br&gt;
• JS bugs&lt;br&gt;
• Hard debugging&lt;br&gt;
• Breaks accessibility&lt;/p&gt;


&lt;h2&gt;
  
  
  =&amp;gt; Real Dev Rule
&lt;/h2&gt;

&lt;p&gt;👉 ID = UNIQUE&lt;/p&gt;

&lt;p&gt;Always.&lt;/p&gt;


&lt;h2&gt;
  
  
  =&amp;gt; Better Approach
&lt;/h2&gt;

&lt;p&gt;Use classes:&lt;br&gt;
&lt;/p&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;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"box"&lt;/span&gt;&lt;span class="nt"&gt;&amp;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;"box"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;👉 Safe + scalable&lt;/p&gt;




&lt;h2&gt;
  
  
  =&amp;gt; Pro Insight
&lt;/h2&gt;

&lt;p&gt;Specificity is NOT the only factor&lt;/p&gt;

&lt;p&gt;Final winner depends on:&lt;/p&gt;

&lt;p&gt;👉 Specificity&lt;br&gt;
👉 Source order&lt;br&gt;
👉 Inline styles&lt;br&gt;
👉 &lt;code&gt;!important&lt;/code&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  =&amp;gt; Final Thought
&lt;/h2&gt;

&lt;p&gt;Browser tries to fix your mistakes…&lt;/p&gt;

&lt;p&gt;👉 But your code becomes harder to control&lt;/p&gt;




&lt;h2&gt;
  
  
  =&amp;gt; What Do You Think?
&lt;/h2&gt;

&lt;p&gt;Have you ever debugged a bug caused by duplicate IDs?&lt;/p&gt;

</description>
      <category>html</category>
      <category>webdev</category>
      <category>css</category>
      <category>frontend</category>
    </item>
    <item>
      <title>Why pointer-events: none Can Break Your UI (Silently)</title>
      <dc:creator>Pawar Shivam</dc:creator>
      <pubDate>Tue, 31 Mar 2026 16:54:18 +0000</pubDate>
      <link>https://forem.com/pawar-shivam7/why-pointer-events-none-can-break-your-ui-silently-3ame</link>
      <guid>https://forem.com/pawar-shivam7/why-pointer-events-none-can-break-your-ui-silently-3ame</guid>
      <description>&lt;h2&gt;
  
  
  =&amp;gt; Why Click Events Suddenly Stop Working
&lt;/h2&gt;

&lt;p&gt;You write 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="nc"&gt;.overlay&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;pointer-events&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And suddenly:&lt;/p&gt;

&lt;p&gt;👉 buttons don’t click&lt;br&gt;
👉 links don’t work&lt;br&gt;
👉 UI feels broken&lt;/p&gt;


&lt;h2&gt;
  
  
  =&amp;gt; What &lt;code&gt;pointer-events: none&lt;/code&gt; Actually Does
&lt;/h2&gt;

&lt;p&gt;It tells the browser:&lt;/p&gt;

&lt;p&gt;👉 ignore all mouse interactions&lt;/p&gt;

&lt;p&gt;So:&lt;/p&gt;

&lt;p&gt;👉 clicks pass through the element&lt;/p&gt;


&lt;h2&gt;
  
  
  =&amp;gt; Real Problem Scenario
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.card&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="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.overlay&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="py"&gt;inset&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;pointer-events&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Now:&lt;/p&gt;

&lt;p&gt;👉 overlay is visible&lt;br&gt;
👉 but not clickable&lt;/p&gt;


&lt;h2&gt;
  
  
  =&amp;gt; Where It Gets Dangerous
&lt;/h2&gt;

&lt;p&gt;Sometimes parent has:&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;.container&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;pointer-events&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;👉 All child elements also stop receiving clicks&lt;/p&gt;




&lt;h2&gt;
  
  
  =&amp;gt; Why This Causes Bugs
&lt;/h2&gt;

&lt;p&gt;UI looks perfectly fine…&lt;/p&gt;

&lt;p&gt;👉 but interactions fail&lt;/p&gt;

&lt;p&gt;This is one of the hardest bugs to detect.&lt;/p&gt;




&lt;h2&gt;
  
  
  =&amp;gt; When It’s Useful
&lt;/h2&gt;

&lt;p&gt;Use it for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;decorative overlays&lt;/li&gt;
&lt;li&gt;animation layers&lt;/li&gt;
&lt;li&gt;visual effects&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  =&amp;gt; Fixing the Issue
&lt;/h2&gt;

&lt;p&gt;Enable interaction again:&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;.button&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;pointer-events&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;auto&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;Or remove it if not needed.&lt;/p&gt;




&lt;h2&gt;
  
  
  =&amp;gt; What Developers Often Miss
&lt;/h2&gt;

&lt;p&gt;This property doesn’t change UI visually.&lt;/p&gt;

&lt;p&gt;👉 only behavior changes&lt;/p&gt;




&lt;h2&gt;
  
  
  =&amp;gt; Real UI Tip
&lt;/h2&gt;

&lt;p&gt;If clicks are not working:&lt;/p&gt;

&lt;p&gt;👉 inspect &lt;code&gt;pointer-events&lt;/code&gt; first&lt;/p&gt;




&lt;h2&gt;
  
  
  =&amp;gt; Bonus Trick
&lt;/h2&gt;

&lt;p&gt;Clickable overlay pattern:&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;.overlay&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;pointer-events&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;.overlay&lt;/span&gt; &lt;span class="nt"&gt;button&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;pointer-events&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;auto&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;h2&gt;
  
  
  =&amp;gt; What Do You Think?
&lt;/h2&gt;

&lt;p&gt;Have you ever faced a UI bug where clicks stopped working for no reason?&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>css</category>
      <category>html</category>
      <category>programming</category>
    </item>
    <item>
      <title>Using address tags for Local SEO</title>
      <dc:creator>Pawar Shivam</dc:creator>
      <pubDate>Mon, 30 Mar 2026 17:02:14 +0000</pubDate>
      <link>https://forem.com/pawar-shivam7/using-address-tags-for-local-seo-34gi</link>
      <guid>https://forem.com/pawar-shivam7/using-address-tags-for-local-seo-34gi</guid>
      <description>&lt;h2&gt;
  
  
  =&amp;gt; What Most Developers Do
&lt;/h2&gt;

&lt;p&gt;They write contact info like this:&lt;br&gt;
&lt;/p&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;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"contact"&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;ABC Company&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Ahmedabad, India&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;+91 99999 99999&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;👉 Looks fine visually&lt;br&gt;
👉 But search engines don’t fully understand it&lt;/p&gt;


&lt;h2&gt;
  
  
  =&amp;gt; The Semantic Way
&lt;/h2&gt;

&lt;p&gt;HTML already provides a tag for this:&lt;br&gt;
&lt;/p&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;address&amp;gt;&lt;/span&gt;
  ABC Company&lt;span class="nt"&gt;&amp;lt;br&amp;gt;&lt;/span&gt;
  Ahmedabad, India&lt;span class="nt"&gt;&amp;lt;br&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"tel:+919999999999"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;+91 99999 99999&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/address&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  =&amp;gt; Why &lt;code&gt;&amp;lt;address&amp;gt;&lt;/code&gt; Matters
&lt;/h2&gt;

&lt;p&gt;It tells browsers and search engines:&lt;/p&gt;

&lt;p&gt;👉 this is contact information&lt;br&gt;
👉 this is business/location data&lt;/p&gt;




&lt;h2&gt;
  
  
  =&amp;gt; SEO Advantage
&lt;/h2&gt;

&lt;p&gt;Search engines can better:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;identify business details&lt;/li&gt;
&lt;li&gt;connect location data&lt;/li&gt;
&lt;li&gt;improve local search visibility&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  =&amp;gt; Accessibility Benefit
&lt;/h2&gt;

&lt;p&gt;Screen readers understand:&lt;/p&gt;

&lt;p&gt;👉 this section contains contact info&lt;/p&gt;

&lt;p&gt;Better experience for users.&lt;/p&gt;




&lt;h2&gt;
  
  
  =&amp;gt; What Developers Often Miss
&lt;/h2&gt;

&lt;p&gt;They focus on design:&lt;/p&gt;

&lt;p&gt;👉 but ignore meaning&lt;/p&gt;




&lt;h2&gt;
  
  
  =&amp;gt; Important Rule
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;address&amp;gt;&lt;/code&gt; is NOT for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;random text&lt;/li&gt;
&lt;li&gt;blog author bio&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It should be used for:&lt;/p&gt;

&lt;p&gt;👉 contact info of person or organization&lt;/p&gt;




&lt;h2&gt;
  
  
  =&amp;gt; Combine With Other SEO Techniques
&lt;/h2&gt;

&lt;p&gt;For best results, use with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;proper headings&lt;/li&gt;
&lt;li&gt;structured data (JSON-LD)&lt;/li&gt;
&lt;li&gt;Google Business Profile&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  =&amp;gt; Real UI Tip
&lt;/h2&gt;

&lt;p&gt;Place &lt;code&gt;&amp;lt;address&amp;gt;&lt;/code&gt; in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;footer&lt;/li&gt;
&lt;li&gt;contact page&lt;/li&gt;
&lt;li&gt;business info section&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  =&amp;gt; What Do You Think?
&lt;/h2&gt;

&lt;p&gt;Have you ever used &lt;code&gt;&amp;lt;address&amp;gt;&lt;/code&gt; for SEO in your projects?&lt;/p&gt;

</description>
      <category>seo</category>
      <category>html</category>
      <category>frontend</category>
      <category>webdev</category>
    </item>
    <item>
      <title>I Built a Clamp() Generator — No More Media Queries for Typography</title>
      <dc:creator>Pawar Shivam</dc:creator>
      <pubDate>Sun, 29 Mar 2026 10:52:48 +0000</pubDate>
      <link>https://forem.com/pawar-shivam7/i-built-a-clamp-generator-no-more-media-queries-for-typography-n4</link>
      <guid>https://forem.com/pawar-shivam7/i-built-a-clamp-generator-no-more-media-queries-for-typography-n4</guid>
      <description>&lt;h2&gt;
  
  
  =&amp;gt; The Hidden Problem With &lt;code&gt;rem&lt;/code&gt; Units
&lt;/h2&gt;

&lt;p&gt;Most developers assume:&lt;/p&gt;

&lt;p&gt;👉 &lt;code&gt;1rem = 16px&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;But that’s not always true.&lt;/p&gt;




&lt;h2&gt;
  
  
  =&amp;gt; When Things Break
&lt;/h2&gt;

&lt;p&gt;You use a template or UI kit…&lt;/p&gt;

&lt;p&gt;And suddenly:&lt;/p&gt;

&lt;p&gt;👉 spacing looks off&lt;br&gt;
👉 typography feels inconsistent&lt;br&gt;
👉 layout breaks&lt;/p&gt;

&lt;p&gt;Why?&lt;/p&gt;

&lt;p&gt;Because:&lt;/p&gt;

&lt;p&gt;👉 root font size is different&lt;/p&gt;


&lt;h2&gt;
  
  
  =&amp;gt; The Real Issue
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;html&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;14px&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;Now:&lt;/p&gt;

&lt;p&gt;👉 &lt;code&gt;1rem = 14px&lt;/code&gt; (not 16px)&lt;/p&gt;

&lt;p&gt;Every &lt;code&gt;rem&lt;/code&gt; value changes.&lt;/p&gt;


&lt;h2&gt;
  
  
  =&amp;gt; Why This Is Dangerous
&lt;/h2&gt;

&lt;p&gt;If your project depends on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;rem&lt;/code&gt; for spacing&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;rem&lt;/code&gt; for typography&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then changing root font size:&lt;/p&gt;

&lt;p&gt;👉 affects entire layout&lt;/p&gt;


&lt;h2&gt;
  
  
  =&amp;gt; Real Scenario
&lt;/h2&gt;

&lt;p&gt;You finish full UI…&lt;/p&gt;

&lt;p&gt;Then you change:&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="nt"&gt;html&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;18px&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;Now:&lt;/p&gt;

&lt;p&gt;👉 margins increase&lt;br&gt;
👉 padding changes&lt;br&gt;
👉 layout breaks&lt;/p&gt;


&lt;h2&gt;
  
  
  =&amp;gt; What Developers Often Miss
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;rem&lt;/code&gt; is not fixed.&lt;/p&gt;

&lt;p&gt;👉 it’s dynamic&lt;br&gt;
👉 depends on root font size&lt;/p&gt;


&lt;h2&gt;
  
  
  =&amp;gt; How My Clamp Generator Solves This
&lt;/h2&gt;

&lt;p&gt;In my tool:&lt;/p&gt;

&lt;p&gt;👉 you can define root font size&lt;br&gt;
👉 generate values based on your setup&lt;/p&gt;

&lt;p&gt;Example:&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="nt"&gt;font-size&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;clamp&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="err"&gt;1&lt;/span&gt;&lt;span class="nt"&gt;rem&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;-1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="err"&gt;57&lt;/span&gt;&lt;span class="nt"&gt;rem&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="err"&gt;7&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="err"&gt;14&lt;/span&gt;&lt;span class="nt"&gt;vw&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;3&lt;/span&gt;&lt;span class="nt"&gt;rem&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;👉 works correctly with your root size&lt;/p&gt;




&lt;h2&gt;
  
  
  =&amp;gt; Why I Added Root Font Option
&lt;/h2&gt;

&lt;p&gt;Because:&lt;/p&gt;

&lt;p&gt;👉 every project is different&lt;br&gt;
👉 templates override defaults&lt;br&gt;
👉 teams use custom scaling&lt;/p&gt;


&lt;h2&gt;
  
  
  =&amp;gt; Best Practice
&lt;/h2&gt;

&lt;p&gt;Before using &lt;code&gt;rem&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;👉 check root font size&lt;/p&gt;


&lt;h2&gt;
  
  
  =&amp;gt; Pro Tip
&lt;/h2&gt;

&lt;p&gt;Keep this consistent:&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="nt"&gt;html&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;16px&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;Or define your system clearly.&lt;/p&gt;




&lt;h2&gt;
  
  
  =&amp;gt; Real Developer Advice
&lt;/h2&gt;

&lt;p&gt;Never assume defaults.&lt;/p&gt;

&lt;p&gt;👉 always verify foundation values&lt;/p&gt;

&lt;h2&gt;
  
  
  =&amp;gt; Built This Tool
&lt;/h2&gt;

&lt;p&gt;If you're working with responsive typography:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://clamp-generator-ten.vercel.app/" rel="noopener noreferrer"&gt;https://clamp-generator-ten.vercel.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Save time. Avoid media queries. Use clamp.&lt;/p&gt;




&lt;h2&gt;
  
  
  =&amp;gt; What Do You Think?
&lt;/h2&gt;

&lt;p&gt;Have you ever faced layout issues because of changing root font size?&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>frontend</category>
      <category>nextjs</category>
    </item>
    <item>
      <title>Why contain in CSS Can Fix Your Performance Bottlenecks</title>
      <dc:creator>Pawar Shivam</dc:creator>
      <pubDate>Sat, 28 Mar 2026 09:39:45 +0000</pubDate>
      <link>https://forem.com/pawar-shivam7/why-contain-in-css-can-fix-your-performance-bottlenecks-cp4</link>
      <guid>https://forem.com/pawar-shivam7/why-contain-in-css-can-fix-your-performance-bottlenecks-cp4</guid>
      <description>&lt;h2&gt;
  
  
  =&amp;gt; What If Components Didn’t Affect Each Other?
&lt;/h2&gt;

&lt;p&gt;Normally in CSS:&lt;/p&gt;

&lt;p&gt;👉 one element can affect the whole layout&lt;br&gt;
👉 browser recalculates everything&lt;/p&gt;

&lt;p&gt;This slows down rendering.&lt;/p&gt;


&lt;h2&gt;
  
  
  =&amp;gt; The Hidden CSS Optimization
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.card&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;contain&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;layout&lt;/span&gt; &lt;span class="n"&gt;paint&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;Now the browser treats it like:&lt;/p&gt;

&lt;p&gt;👉 an isolated component&lt;br&gt;
👉 no outside impact&lt;/p&gt;


&lt;h2&gt;
  
  
  =&amp;gt; What &lt;code&gt;contain&lt;/code&gt; Actually Does
&lt;/h2&gt;

&lt;p&gt;It limits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;layout calculations&lt;/li&gt;
&lt;li&gt;paint rendering&lt;/li&gt;
&lt;li&gt;size reflows&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  =&amp;gt; Different Types of Containment
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.box&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;contain&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;layout&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;contain&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;paint&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;contain&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;contain&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;style&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;Or all together:&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&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;contain&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;strict&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;h2&gt;
  
  
  =&amp;gt; Why This Improves Performance
&lt;/h2&gt;

&lt;p&gt;Without &lt;code&gt;contain&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;👉 changes trigger global recalculation&lt;/p&gt;

&lt;p&gt;With &lt;code&gt;contain&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;👉 only local area updates&lt;/p&gt;




&lt;h2&gt;
  
  
  =&amp;gt; Real Use Case
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.card&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;contain&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;content&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;Perfect for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;cards&lt;/li&gt;
&lt;li&gt;widgets&lt;/li&gt;
&lt;li&gt;dashboards&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  =&amp;gt; What Developers Often Miss
&lt;/h2&gt;

&lt;p&gt;Modern performance is not just:&lt;/p&gt;

&lt;p&gt;👉 lazy loading&lt;br&gt;
👉 image optimization&lt;/p&gt;

&lt;p&gt;It’s also:&lt;/p&gt;

&lt;p&gt;👉 rendering isolation&lt;/p&gt;




&lt;h2&gt;
  
  
  =&amp;gt; Warning
&lt;/h2&gt;

&lt;p&gt;If used incorrectly:&lt;/p&gt;

&lt;p&gt;👉 layout can break&lt;br&gt;
👉 size calculations may fail&lt;/p&gt;




&lt;h2&gt;
  
  
  =&amp;gt; Real UI Tip
&lt;/h2&gt;

&lt;p&gt;Use &lt;code&gt;contain&lt;/code&gt; when:&lt;/p&gt;

&lt;p&gt;👉 component is independent&lt;br&gt;
👉 layout doesn’t depend on outside&lt;/p&gt;




&lt;h2&gt;
  
  
  =&amp;gt; What Do You Think?
&lt;/h2&gt;

&lt;p&gt;Would you use CSS &lt;code&gt;contain&lt;/code&gt; instead of optimizing everything manually?&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>frontend</category>
      <category>html</category>
      <category>css</category>
    </item>
    <item>
      <title>Why content-visibility: auto Can Make Your Site Instantly Faster</title>
      <dc:creator>Pawar Shivam</dc:creator>
      <pubDate>Fri, 27 Mar 2026 18:43:30 +0000</pubDate>
      <link>https://forem.com/pawar-shivam7/why-content-visibility-auto-can-make-your-site-instantly-faster-53n</link>
      <guid>https://forem.com/pawar-shivam7/why-content-visibility-auto-can-make-your-site-instantly-faster-53n</guid>
      <description>&lt;h2&gt;
  
  
  =&amp;gt; What If Browser Didn’t Render Everything?
&lt;/h2&gt;

&lt;p&gt;Normally, the browser renders:&lt;/p&gt;

&lt;p&gt;👉 entire page&lt;br&gt;
👉 even off-screen content&lt;/p&gt;

&lt;p&gt;This wastes performance.&lt;/p&gt;




&lt;h2&gt;
  
  
  =&amp;gt; The Hidden Performance Hack
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.section&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;content-visibility&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;auto&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;Now the browser:&lt;/p&gt;

&lt;p&gt;👉 skips rendering off-screen content&lt;br&gt;
👉 renders only when needed&lt;/p&gt;




&lt;h2&gt;
  
  
  =&amp;gt; Why This Is Powerful
&lt;/h2&gt;

&lt;p&gt;For long pages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;blogs&lt;/li&gt;
&lt;li&gt;dashboards&lt;/li&gt;
&lt;li&gt;feeds&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This can:&lt;/p&gt;

&lt;p&gt;👉 improve load time&lt;br&gt;
👉 reduce memory usage&lt;br&gt;
👉 boost performance&lt;/p&gt;




&lt;h2&gt;
  
  
  =&amp;gt; Real Example
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.card&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;content-visibility&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;contain-intrinsic-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;300px&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;h2&gt;
  
  
  =&amp;gt; Why &lt;code&gt;contain-intrinsic-size&lt;/code&gt; Matters
&lt;/h2&gt;

&lt;p&gt;Without it:&lt;/p&gt;

&lt;p&gt;👉 layout shift can happen&lt;/p&gt;

&lt;p&gt;This gives a placeholder size until content loads.&lt;/p&gt;




&lt;h2&gt;
  
  
  =&amp;gt; What Developers Often Miss
&lt;/h2&gt;

&lt;p&gt;Optimization is not always JavaScript.&lt;/p&gt;

&lt;p&gt;Sometimes CSS can do it better.&lt;/p&gt;




&lt;h2&gt;
  
  
  =&amp;gt; When to Use It
&lt;/h2&gt;

&lt;p&gt;Use for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;long scrolling pages&lt;/li&gt;
&lt;li&gt;repeated components&lt;/li&gt;
&lt;li&gt;off-screen sections&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  =&amp;gt; When NOT to Use
&lt;/h2&gt;

&lt;p&gt;Avoid on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;above-the-fold content&lt;/li&gt;
&lt;li&gt;critical UI elements&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  =&amp;gt; Real UI Tip
&lt;/h2&gt;

&lt;p&gt;If your page feels heavy:&lt;/p&gt;

&lt;p&gt;👉 try skipping rendering instead of optimizing everything&lt;/p&gt;




&lt;h2&gt;
  
  
  =&amp;gt; What Do You Think?
&lt;/h2&gt;

&lt;p&gt;Would you use &lt;code&gt;content-visibility&lt;/code&gt; in your next project for performance?&lt;/p&gt;

</description>
      <category>frontend</category>
      <category>webdev</category>
      <category>html</category>
      <category>css</category>
    </item>
    <item>
      <title>The CSS :has() Selector — The Parent Selector We Waited Years For</title>
      <dc:creator>Pawar Shivam</dc:creator>
      <pubDate>Thu, 26 Mar 2026 13:07:00 +0000</pubDate>
      <link>https://forem.com/pawar-shivam7/the-css-has-selector-the-parent-selector-we-waited-years-for-3ikp</link>
      <guid>https://forem.com/pawar-shivam7/the-css-has-selector-the-parent-selector-we-waited-years-for-3ikp</guid>
      <description>&lt;h2&gt;
  
  
  =&amp;gt; Why Targeting Parent Was Always Hard
&lt;/h2&gt;

&lt;p&gt;Before this, CSS could only go &lt;strong&gt;downward&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;.parent&lt;/span&gt; &lt;span class="nc"&gt;.child&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;red&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;But you couldn’t do:&lt;/p&gt;

&lt;p&gt;👉 style parent based on child&lt;/p&gt;




&lt;h2&gt;
  
  
  =&amp;gt; The Game-Changer: &lt;code&gt;:has()&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Now you can:&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;.card&lt;/span&gt;&lt;span class="nd"&gt;:has&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;img&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;border&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="nb"&gt;solid&lt;/span&gt; &lt;span class="no"&gt;green&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;👉 If &lt;code&gt;.card&lt;/code&gt; contains an image → style it&lt;/p&gt;




&lt;h2&gt;
  
  
  =&amp;gt; Real Power Example
&lt;/h2&gt;

&lt;p&gt;Form validation:&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;.form-group&lt;/span&gt;&lt;span class="nd"&gt;:has&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;input&lt;/span&gt;&lt;span class="nd"&gt;:invalid&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;border&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="nb"&gt;solid&lt;/span&gt; &lt;span class="no"&gt;red&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;👉 No JavaScript needed&lt;/p&gt;




&lt;h2&gt;
  
  
  =&amp;gt; Interactive UI Without JS
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.button&lt;/span&gt;&lt;span class="nd"&gt;:has&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nd"&gt;:hover&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;black&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;Or:&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;.menu&lt;/span&gt;&lt;span class="nd"&gt;:has&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;.active&lt;/span&gt;&lt;span class="o"&gt;)&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="nb"&gt;block&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;h2&gt;
  
  
  =&amp;gt; Why This Is Big
&lt;/h2&gt;

&lt;p&gt;You can now:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;reduce JavaScript&lt;/li&gt;
&lt;li&gt;write cleaner CSS&lt;/li&gt;
&lt;li&gt;build smarter UI logic&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  =&amp;gt; What Developers Often Miss
&lt;/h2&gt;

&lt;p&gt;This is not just a selector.&lt;/p&gt;

&lt;p&gt;👉 It’s conditional logic in CSS&lt;/p&gt;




&lt;h2&gt;
  
  
  =&amp;gt; Performance Note
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;:has()&lt;/code&gt; can be expensive if overused.&lt;/p&gt;

&lt;p&gt;Avoid:&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="o"&gt;*&lt;/span&gt;&lt;span class="nd"&gt;:has&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;.child&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;👉 Too broad = slow&lt;/p&gt;




&lt;h2&gt;
  
  
  =&amp;gt; Browser Support
&lt;/h2&gt;

&lt;p&gt;Now supported in modern browsers.&lt;/p&gt;

&lt;p&gt;But always test before production.&lt;/p&gt;




&lt;h2&gt;
  
  
  =&amp;gt; Real UI Tip
&lt;/h2&gt;

&lt;p&gt;Use &lt;code&gt;:has()&lt;/code&gt; for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;form states&lt;/li&gt;
&lt;li&gt;conditional styling&lt;/li&gt;
&lt;li&gt;parent-based layouts&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  =&amp;gt; What Do You Think?
&lt;/h2&gt;

&lt;p&gt;Will &lt;code&gt;:has()&lt;/code&gt; reduce the need for JavaScript in UI logic?&lt;/p&gt;

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

</description>
      <category>html</category>
      <category>css</category>
      <category>webdev</category>
      <category>frontend</category>
    </item>
    <item>
      <title>text-box-trim — The CSS Property Most Developers Don’t Know Yet</title>
      <dc:creator>Pawar Shivam</dc:creator>
      <pubDate>Wed, 25 Mar 2026 12:54:00 +0000</pubDate>
      <link>https://forem.com/pawar-shivam7/text-box-trim-the-css-property-most-developers-dont-know-yet-56d1</link>
      <guid>https://forem.com/pawar-shivam7/text-box-trim-the-css-property-most-developers-dont-know-yet-56d1</guid>
      <description>&lt;h2&gt;
  
  
  =&amp;gt; Why Text Never Looks Perfectly Centered
&lt;/h2&gt;

&lt;p&gt;You center text using:&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;.container&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;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;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="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But still…&lt;/p&gt;

&lt;p&gt;👉 text looks slightly off&lt;br&gt;
👉 not visually centered&lt;/p&gt;


&lt;h2&gt;
  
  
  =&amp;gt; The Hidden Problem
&lt;/h2&gt;

&lt;p&gt;Fonts have built-in spacing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;extra space above (ascenders)&lt;/li&gt;
&lt;li&gt;extra space below (descenders)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So even when centered…&lt;/p&gt;

&lt;p&gt;👉 it doesn’t look centered&lt;/p&gt;


&lt;h2&gt;
  
  
  =&amp;gt; The Modern CSS Solution
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.text&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;text-box-trim&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;trim-both&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;text-box-edge&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;cap&lt;/span&gt; &lt;span class="n"&gt;alphabetic&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;h2&gt;
  
  
  =&amp;gt; What This Actually Does
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;removes extra space above and below text&lt;/li&gt;
&lt;li&gt;aligns text based on font metrics&lt;/li&gt;
&lt;li&gt;creates pixel-perfect typography&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  =&amp;gt; Why This Is Powerful
&lt;/h2&gt;

&lt;p&gt;Now you can:&lt;/p&gt;

&lt;p&gt;👉 truly center text&lt;br&gt;
👉 align text inside buttons&lt;br&gt;
👉 fix UI inconsistencies&lt;/p&gt;


&lt;h2&gt;
  
  
  =&amp;gt; Real UI Example
&lt;/h2&gt;

&lt;p&gt;Buttons often look off:&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;.button&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;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;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="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Even then…&lt;/p&gt;

&lt;p&gt;👉 text feels slightly higher or lower&lt;/p&gt;

&lt;p&gt;With trim:&lt;/p&gt;

&lt;p&gt;👉 perfectly balanced&lt;/p&gt;




&lt;h2&gt;
  
  
  =&amp;gt; Browser Support Warning
&lt;/h2&gt;

&lt;p&gt;This is an &lt;strong&gt;experimental feature&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Not supported everywhere yet.&lt;/p&gt;




&lt;h2&gt;
  
  
  =&amp;gt; Safe Approach
&lt;/h2&gt;

&lt;p&gt;Use fallback:&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;.text&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;line-height&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;Then enhance with:&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;.text&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;text-box-trim&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;trim-both&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;h2&gt;
  
  
  =&amp;gt; What Developers Often Miss
&lt;/h2&gt;

&lt;p&gt;The issue is not alignment.&lt;/p&gt;

&lt;p&gt;It’s font metrics.&lt;/p&gt;




&lt;h2&gt;
  
  
  =&amp;gt; Real UI Tip
&lt;/h2&gt;

&lt;p&gt;If your design looks “almost perfect” but not quite:&lt;/p&gt;

&lt;p&gt;👉 it’s probably text spacing&lt;/p&gt;




&lt;h2&gt;
  
  
  =&amp;gt; What Do You Think?
&lt;/h2&gt;

&lt;p&gt;Do you think &lt;code&gt;text-box-trim&lt;/code&gt; will become a standard for modern UI design?&lt;br&gt;
&lt;iframe height="600" src="https://codepen.io/shivam-pawar-07/embed/gbwXWQx?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

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