Back to CSS Testimonials & Reviews Retro Food Review Pure CSS
Share
HTML
<section class="tm-ret" aria-label="Diner reviews">
  <header class="tm-ret-stripe">
    <div class="tm-ret-stripe-title">DINER'S DIGEST — VERIFIED REVIEWS</div>
    <div class="tm-ret-stripe-sub">EST. 1971 &middot; 4,820 VERIFIED DINERS</div>
  </header>

  <div class="tm-ret-layout">

    <article class="tm-ret-cell tm-ret-big">
      <span class="tm-ret-deco-circle" aria-hidden="true"></span>
      <div class="tm-ret-dish-stamp">&#9733; Review of the Month</div>
      <div class="tm-ret-fork-row" aria-label="5 out of 5 forks">
        <span class="tm-ret-fork" aria-hidden="true">&#9733;</span>
        <span class="tm-ret-fork" aria-hidden="true">&#9733;</span>
        <span class="tm-ret-fork" aria-hidden="true">&#9733;</span>
        <span class="tm-ret-fork" aria-hidden="true">&#9733;</span>
        <span class="tm-ret-fork" aria-hidden="true">&#9733;</span>
      </div>
      <blockquote class="tm-ret-big-pull">The truffle risotto alone is worth the trip from another city.</blockquote>
      <p class="tm-ret-body-text">I've dined at three Michelin-starred restaurants this year and this kitchen competes with every one of them. The <em>risotto</em> has a depth of flavor that only comes from someone who has cooked it a thousand times and still cares. The service is unhurried. The lighting is exactly right. Come here for a birthday, an anniversary, or an ordinary Tuesday that deserves to feel extraordinary.</p>
      <figcaption class="tm-ret-chef-tag">
        <span class="tm-ret-chef-icon" aria-hidden="true">GH</span>
        <span><cite class="tm-ret-chef-name">Gideon Harlow</cite><span class="tm-ret-chef-role">Food critic &middot; The Table Magazine</span></span>
      </figcaption>
    </article>

    <div class="tm-ret-cell tm-ret-tall">
      <span class="tm-ret-vert-label" aria-hidden="true">Guest Reviews</span>
      <div class="tm-ret-score-box">
        <div class="tm-ret-score-num">9.4</div>
        <div class="tm-ret-score-lbl">/ 10 &middot; 4,820 diners</div>
      </div>
      <article>
        <div class="tm-ret-fork-row" aria-label="5 out of 5 forks">
          <span class="tm-ret-fork">&#9733;</span><span class="tm-ret-fork">&#9733;</span><span class="tm-ret-fork">&#9733;</span><span class="tm-ret-fork">&#9733;</span><span class="tm-ret-fork">&#9733;</span>
        </div>
        <blockquote class="tm-ret-sm-quote">"The pasta is handmade. You can taste it."</blockquote>
        <figcaption class="tm-ret-chef-tag">
          <span class="tm-ret-chef-icon tm-ret-icon-olive" aria-hidden="true">ML</span>
          <span><cite class="tm-ret-chef-name">Mira Laszlo</cite><span class="tm-ret-chef-role">Regular diner</span></span>
        </figcaption>
      </article>
      <article>
        <div class="tm-ret-fork-row" aria-label="4 out of 5 forks">
          <span class="tm-ret-fork">&#9733;</span><span class="tm-ret-fork">&#9733;</span><span class="tm-ret-fork">&#9733;</span><span class="tm-ret-fork">&#9733;</span><span class="tm-ret-fork tm-ret-fork-empty">&#9733;</span>
        </div>
        <blockquote class="tm-ret-sm-quote">"Best wood-fired bread in the neighbourhood. Period."</blockquote>
        <figcaption class="tm-ret-chef-tag">
          <span class="tm-ret-chef-icon tm-ret-icon-mustard" aria-hidden="true">PO</span>
          <span><cite class="tm-ret-chef-name">Pablo Ortega</cite><span class="tm-ret-chef-role">Weekend regular</span></span>
        </figcaption>
      </article>
    </div>

    <article class="tm-ret-cell tm-ret-bot">
      <div class="tm-ret-fork-row" aria-label="5 out of 5 forks">
        <span class="tm-ret-fork">&#9733;</span><span class="tm-ret-fork">&#9733;</span><span class="tm-ret-fork">&#9733;</span><span class="tm-ret-fork">&#9733;</span><span class="tm-ret-fork">&#9733;</span>
      </div>
      <blockquote class="tm-ret-sm-quote">"I don't usually write reviews. I am writing this one."</blockquote>
      <p class="tm-ret-body-text">Three courses, two hours, zero regrets. The panna cotta changed my mind about panna cotta.</p>
      <figcaption class="tm-ret-chef-tag">
        <span class="tm-ret-chef-icon" aria-hidden="true">SA</span>
        <span><cite class="tm-ret-chef-name">Sofía Arenas</cite><span class="tm-ret-chef-role">First-time visitor</span></span>
      </figcaption>
    </article>

  </div>
</section>
CSS
/* Retro Food Review — graph-paper background contained inside the
   wrapper (NOT body-level like the original mock). Terracotta /
   olive / mustard palette evokes 1970s editorial food magazines.
   Hover tints each cell to a slightly warmer cream. */
.tm-ret {
  --tm-ret-bg:         #f0e6c8;
  --tm-ret-terracotta: #c4522a;
  --tm-ret-olive:      #5c6b2e;
  --tm-ret-mustard:    #d4a017;
  --tm-ret-cream:      #faf4e1;
  --tm-ret-dark:       #1e1a12;
  --tm-ret-rust:       #a83820;
  --tm-ret-sage:       #7a8c5a;
  position: relative;
  padding: clamp(28px, 4vw, 48px);
  background: var(--tm-ret-bg);
  background-image:
    repeating-linear-gradient(0deg, transparent, transparent 39px, rgba(0,0,0,0.04) 39px, rgba(0,0,0,0.04) 40px),
    repeating-linear-gradient(90deg, transparent, transparent 39px, rgba(0,0,0,0.04) 39px, rgba(0,0,0,0.04) 40px);
  font-family: 'Karla', system-ui, sans-serif;
  color: var(--tm-ret-dark);
  min-height: 500px;
}
.tm-ret-stripe {
  background: var(--tm-ret-terracotta);
  color: var(--tm-ret-cream);
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 10px 18px;
  margin-bottom: 30px;
  border: 2px solid var(--tm-ret-dark);
}
.tm-ret-stripe-title {
  font-family: 'Abril Fatface', Georgia, serif;
  font-size: 1.05rem;
  letter-spacing: 0.05em;
}
.tm-ret-stripe-sub {
  font-family: 'Courier Prime', 'Courier New', monospace;
  font-size: 11px;
  letter-spacing: 0.1em;
  opacity: 0.85;
}
.tm-ret-layout {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  grid-template-rows: auto auto;
  gap: 0;
  border: 2px solid var(--tm-ret-dark);
}
.tm-ret-cell {
  border: 1px solid var(--tm-ret-dark);
  padding: 26px 22px;
  position: relative;
  background: var(--tm-ret-cream);
  transition: background 0.2s;
}
.tm-ret-cell:hover { background: var(--tm-ret-bg); }
.tm-ret-big {
  grid-column: 1 / 3;
  grid-row: 1 / 2;
  border-right: 2px solid var(--tm-ret-dark);
}
.tm-ret-tall {
  grid-column: 3 / 4;
  grid-row: 1 / 3;
  border-left: none;
  display: flex;
  flex-direction: column;
  gap: 22px;
}
.tm-ret-deco-circle {
  position: absolute;
  width: 90px;
  height: 90px;
  border-radius: 50%;
  border: 1px dashed var(--tm-ret-terracotta);
  opacity: 0.2;
  top: -20px;
  right: -20px;
  pointer-events: none;
}
.tm-ret-dish-stamp {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: var(--tm-ret-olive);
  color: var(--tm-ret-cream);
  font-family: 'Courier Prime', 'Courier New', monospace;
  font-size: 10px;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  padding: 4px 10px;
  margin-bottom: 14px;
}
.tm-ret-big-pull {
  font-family: 'Abril Fatface', Georgia, serif;
  font-size: clamp(1.4rem, 3vw, 1.85rem);
  line-height: 1.15;
  color: var(--tm-ret-dark);
  margin: 0 0 18px;
  position: relative;
}
.tm-ret-big-pull::before {
  content: '"';
  font-size: 4.5rem;
  color: var(--tm-ret-terracotta);
  opacity: 0.15;
  position: absolute;
  top: -20px;
  left: -10px;
  line-height: 1;
  pointer-events: none;
}
.tm-ret-fork-row {
  display: flex;
  gap: 6px;
  margin-bottom: 12px;
  align-items: center;
}
.tm-ret-fork {
  font-size: 14px;
  color: var(--tm-ret-terracotta);
}
.tm-ret-fork-empty { color: #ccc; }
.tm-ret-body-text {
  font-size: 0.85rem;
  line-height: 1.7;
  color: #3a3020;
  font-style: italic;
  margin: 0 0 18px;
}
.tm-ret-body-text em {
  font-style: normal;
  color: var(--tm-ret-terracotta);
  font-weight: 700;
}
.tm-ret-chef-tag {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: auto;
}
.tm-ret-chef-icon {
  width: 40px;
  height: 40px;
  background: var(--tm-ret-terracotta);
  color: var(--tm-ret-cream);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: 'Abril Fatface', Georgia, serif;
  font-size: 14px;
  flex-shrink: 0;
}
.tm-ret-icon-olive   { background: var(--tm-ret-olive); }
.tm-ret-icon-mustard { background: var(--tm-ret-mustard); color: var(--tm-ret-dark); }
.tm-ret-chef-name {
  font-weight: 700;
  font-size: 13px;
  font-style: normal;
  color: var(--tm-ret-dark);
  line-height: 1.3;
  display: block;
}
.tm-ret-chef-role {
  font-family: 'Courier Prime', 'Courier New', monospace;
  font-size: 10px;
  color: var(--tm-ret-sage);
  letter-spacing: 0.08em;
}
.tm-ret-sm-quote {
  font-family: 'Abril Fatface', Georgia, serif;
  font-size: 1.05rem;
  line-height: 1.3;
  color: var(--tm-ret-dark);
  margin: 0 0 14px;
  position: relative;
}
.tm-ret-sm-quote::after {
  content: '';
  display: block;
  width: 30px;
  height: 2px;
  background: var(--tm-ret-mustard);
  margin-top: 10px;
}
.tm-ret-vert-label {
  writing-mode: vertical-rl;
  text-orientation: mixed;
  transform: rotate(180deg);
  font-family: 'Courier Prime', 'Courier New', monospace;
  font-size: 9px;
  letter-spacing: 0.25em;
  text-transform: uppercase;
  color: var(--tm-ret-terracotta);
  opacity: 0.5;
  position: absolute;
  right: 10px;
  top: 50%;
}
.tm-ret-score-box {
  background: var(--tm-ret-mustard);
  border: 2px solid var(--tm-ret-dark);
  padding: 12px 14px;
  text-align: center;
}
.tm-ret-score-num {
  font-family: 'Abril Fatface', Georgia, serif;
  font-size: 2.4rem;
  color: var(--tm-ret-dark);
  line-height: 1;
}
.tm-ret-score-lbl {
  font-family: 'Courier Prime', 'Courier New', monospace;
  font-size: 9px;
  letter-spacing: 0.15em;
  color: var(--tm-ret-rust);
  text-transform: uppercase;
  margin-top: 2px;
}
.tm-ret-bot {
  background: var(--tm-ret-olive);
  border-top: 2px solid var(--tm-ret-dark);
}
.tm-ret-bot:hover { background: #6c7b3e; }
.tm-ret-bot .tm-ret-sm-quote { color: var(--tm-ret-cream); }
.tm-ret-bot .tm-ret-sm-quote::after { background: var(--tm-ret-mustard); }
.tm-ret-bot .tm-ret-body-text { color: rgba(250,244,225,0.75); }
.tm-ret-bot .tm-ret-chef-icon { background: var(--tm-ret-cream); color: var(--tm-ret-olive); }
.tm-ret-bot .tm-ret-chef-name { color: var(--tm-ret-cream); }
.tm-ret-bot .tm-ret-chef-role { color: var(--tm-ret-sage); }
.tm-ret-bot .tm-ret-fork { color: var(--tm-ret-mustard); }
.tm-ret-bot .tm-ret-fork-empty { color: rgba(255,255,255,0.2); }
@media (max-width: 720px) {
  .tm-ret-layout { grid-template-columns: 1fr; }
  .tm-ret-big, .tm-ret-tall, .tm-ret-bot { grid-column: 1; grid-row: auto; }
  .tm-ret-big { border-right: 1px solid var(--tm-ret-dark); }
}