Models 44

Nemotron 3 Ultra (free)

by NVIDIAReasoning32 console errors
Open in new window

Running live in a sandboxed frame. Click inside it before using the keyboard.

How it went

Total time
3 min 50 s
Cost
$0
Output tokens
19,278
Spent thinking
268 tokens
Speed
84 tok/s
Console errors
32
First token after
600 ms
First visible text after
4.0 s
Prompt tokens
381
Code size
53.2 KB
Finish reason
stop
Served by
Nvidia
Model id
nvidia/nemotron-3-ultra-550b-a55b:free
Reasoning sent
{"effort":"medium"}
Max output
32,000 tokens
Generated
Nov 9, 2026

Console errors

Caught in the first 3 seconds after load, in a sandboxed iframe like the one above.

Error: <ellipse> attribute cy: Unexpected end of attribute. Expected length, "".

Error: <circle> attribute cy: Unexpected end of attribute. Expected length, "".

Error: <circle> attribute cy: Unexpected end of attribute. Expected length, "".

Error: <circle> attribute cy: Unexpected end of attribute. Expected length, "".

Error: <circle> attribute cy: Unexpected end of attribute. Expected length, "".

Error: <circle> attribute cy: Unexpected end of attribute. Expected length, "".

Error: <circle> attribute cy: Unexpected end of attribute. Expected length, "".

Error: <circle> attribute cy: Unexpected end of attribute. Expected length, "".

Error: <ellipse> attribute cy: Unexpected end of attribute. Expected length, "".

Error: <ellipse> attribute cy: Unexpected end of attribute. Expected length, "".

What it was asked

The prompt
“i'm opening a korean taco food truck called "Kimchi Loco", make me a website that makes people really want to come”
System prompt, sent with every prompt
You are generating a self-contained web demo. It will be rendered automatically in a sandboxed iframe and compared side by side with the output of other AI models given the exact same task.

Output rules:
- Reply with exactly ONE fenced code block containing the complete file: ```html (or ```svg when the task asks for an SVG). No text before or after the code block.
- Everything must be inline: CSS in <style>, JavaScript in <script>. No external files, images, fonts or network requests, except the CDN URLs explicitly allowed by the task.
- Do not use localStorage, sessionStorage, cookies, IndexedDB, alert(), confirm(), prompt() or window.open(): they are blocked in the sandbox and will throw.
- The page must look right in a 1280×800 viewport and adapt gracefully down to 375px wide. No horizontal scrollbar.
- Something meaningful must be visible on first paint: a screenshot is taken automatically about 3 seconds after load, without any interaction.
- Everything that makes the demo interesting must be visible within the first seconds: nothing hidden behind a high score, a later level or a long play session.
- Games must start in a self-playing demo mode (a simple AI plays) behind a "Click or press a key to start" message, so the game can be judged in action without playing.
- The iframe only receives keyboard events after the user clicks it: if the demo uses the keyboard, display a clear "Click or press a key to start" message.
- The code must run with zero errors in the console of the latest Chrome.

Code run-1.html · 1349 lines

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Kimchi Loco - Korean Taco Food Truck</title>
  <link rel="preconnect" href="https://fonts.googleapis.com">
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  <link href="https://fonts.googleapis.com/css2?family=Bebas+Neue&family=Outfit:wght@300;400;500;600;700&family=Permanent+Marker&display=swap" rel="stylesheet">
  <style>
    :root {
      --bg: #0d0d0d;
      --bg-warm: #1a120a;
      --fg: #fffef7;
      --muted: #c9b896;
      --accent: #ff6b2b;
      --accent-dark: #e8551a;
      --accent-light: #ff9f1c;
      --kimchi: #d62828;
      --kimchi-light: #ff4d4d;
      --cilantro: #2d6a4f;
      --cilantro-light: #40916c;
      --crema: #fff8e7;
      --card: #1a140f;
      --border: #3d2f1f;
      --shadow: rgba(0,0,0,0.4);
      --glow: rgba(255,107,43,0.3);
    }

    * { margin: 0; padding: 0; box-sizing: border-box; }

    html { scroll-behavior: smooth; }

    @media (prefers-reduced-motion: reduce) {
      html { scroll-behavior: auto; }
      *, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; }
    }

    body {
      font-family: 'Outfit', sans-serif;
      background: var(--bg);
      color: var(--fg);
      min-height: 100vh;
      overflow-x: hidden;
      line-height: 1.6;
    }

    /* Background atmosphere */
    .atmosphere {
      position: fixed;
      inset: 0;
      pointer-events: none;
      z-index: 0;
      background: 
        radial-gradient(ellipse 80% 50% at 20% 10%, rgba(255,107,43,0.08) 0%, transparent 50%),
        radial-gradient(ellipse 60% 40% at 80% 90%, rgba(214,40,40,0.06) 0%, transparent 50%),
        radial-gradient(ellipse 100% 100% at 50% 50%, var(--bg-warm) 0%, var(--bg) 100%);
    }

    .floating-particles {
      position: fixed;
      inset: 0;
      pointer-events: none;
      z-index: 1;
    }

    .particle {
      position: absolute;
      width: 4px;
      height: 4px;
      border-radius: 50%;
      background: var(--accent);
      opacity: 0;
      animation: floatUp 8s infinite ease-in-out;
    }

    .particle:nth-child(2n) { background: var(--kimchi-light); animation-delay: -2s; width: 3px; height: 3px; }
    .particle:nth-child(3n) { background: var(--accent-light); animation-delay: -4s; width: 5px; height: 5px; }
    .particle:nth-child(4n) { background: var(--cilantro-light); animation-delay: -6s; width: 2px; height: 2px; }

    @keyframes floatUp {
      0% { transform: translateY(100vh) scale(0); opacity: 0; }
      10% { opacity: 0.6; }
      90% { opacity: 0.4; }
      100% { transform: translateY(-10vh) scale(1); opacity: 0; }
    }

    /* Header / Hero */
    .hero {
      position: relative;
      z-index: 10;
      min-height: 100vh;
      display: flex;
      flex-direction: column;
      justify-content: center;
      align-items: center;
      padding: clamp(1rem, 5vw, 3rem);
      text-align: center;
    }

    .hero-badge {
      display: inline-flex;
      align-items: center;
      gap: 0.75rem;
      padding: 0.6rem 1.5rem;
      background: linear-gradient(135deg, rgba(255,107,43,0.2), rgba(214,40,40,0.15));
      border: 1px solid rgba(255,107,43,0.3);
      border-radius: 100px;
      font-size: clamp(0.75rem, 2vw, 0.9rem);
      font-weight: 500;
      color: var(--accent-light);
      margin-bottom: 2rem;
      backdrop-filter: blur(10px);
      animation: slideUp 0.8s ease-out;
    }

    .badge-dot {
      width: 8px; height: 8px; border-radius: 50%; background: var(--kimchi);
      animation: pulse 1.5s infinite;
    }

    @keyframes pulse {
      0%, 100% { transform: scale(1); box-shadow: 0 0 0 0 var(--glow); }
      50% { transform: scale(1.2); box-shadow: 0 0 0 8px transparent; }
    }

    .logo-container {
      position: relative;
      margin-bottom: 1.5rem;
      animation: slideUp 0.8s ease-out 0.1s both;
    }

    .logo {
      font-family: 'Bebas Neue', sans-serif;
      font-size: clamp(3.5rem, 12vw, 8rem);
      letter-spacing: 0.05em;
      line-height: 1;
      background: linear-gradient(135deg, var(--fg) 0%, var(--accent-light) 30%, var(--kimchi-light) 70%, var(--accent) 100%);
      -webkit-background-clip: text;
      -webkit-text-fill-color: transparent;
      background-clip: text;
      filter: drop-shadow(0 4px 20px var(--glow));
      position: relative;
      z-index: 2;
    }

    .logo-accent {
      font-family: 'Permanent Marker', cursive;
      font-size: clamp(1.5rem, 4vw, 2.5rem);
      color: var(--accent);
      display: block;
      margin-top: -0.5rem;
      letter-spacing: 0.1em;
      text-transform: uppercase;
    }

    .logo-sparkles {
      position: absolute;
      inset: -20%;
      background: radial-gradient(circle at 30% 30%, var(--accent) 0%, transparent 20%),
                  radial-gradient(circle at 70% 70%, var(--kimchi) 0%, transparent 15%);
      opacity: 0.15;
      animation: shimmer 4s infinite ease-in-out;
      pointer-events: none;
    }

    @keyframes shimmer {
      0%, 100% { transform: rotate(0deg) scale(1); opacity: 0.1; }
      50% { transform: rotate(180deg) scale(1.1); opacity: 0.2; }
    }

    .hero-tagline {
      font-size: clamp(1.1rem, 3vw, 1.5rem);
      color: var(--muted);
      max-width: 600px;
      margin-bottom: 2.5rem;
      animation: slideUp 0.8s ease-out 0.2s both;
      font-weight: 300;
      line-height: 1.7;
    }

    .hero-tagline strong { color: var(--accent-light); font-weight: 600; }

    .cta-group {
      display: flex;
      flex-wrap: wrap;
      gap: 1rem;
      justify-content: center;
      animation: slideUp 0.8s ease-out 0.3s both;
    }

    .btn {
      display: inline-flex;
      align-items: center;
      gap: 0.75rem;
      padding: 1rem 2rem;
      border-radius: 100px;
      font-family: 'Outfit', sans-serif;
      font-weight: 600;
      font-size: clamp(0.9rem, 2vw, 1rem);
      text-decoration: none;
      border: 2px solid transparent;
      cursor: pointer;
      transition: all 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
      position: relative;
      overflow: hidden;
    }

    .btn::before {
      content: '';
      position: absolute;
      inset: 0;
      background: inherit;
      opacity: 0;
      transition: opacity 0.3s;
    }

    .btn-primary {
      background: linear-gradient(135deg, var(--accent), var(--kimchi));
      color: var(--fg);
      box-shadow: 0 4px 20px var(--glow);
    }

    .btn-primary:hover { transform: translateY(-3px); box-shadow: 0 8px 30px var(--glow); }
    .btn-primary:active { transform: translateY(0); }

    .btn-secondary {
      background: transparent;
      color: var(--fg);
      border-color: rgba(255,255,255,0.3);
    }

    .btn-secondary:hover { border-color: var(--accent); color: var(--accent); background: rgba(255,107,43,0.1); }

    .btn-icon { transition: transform 0.3s; }
    .btn:hover .btn-icon { transform: translateX(4px); }

    @keyframes slideUp {
      from { opacity: 0; transform: translateY(30px); }
      to { opacity: 1; transform: translateY(0); }
    }

    /* Scroll indicator */
    .scroll-indicator {
      position: absolute;
      bottom: 2rem;
      left: 50%;
      transform: translateX(-50%);
      display: flex;
      flex-direction: column;
      align-items: center;
      gap: 0.5rem;
      color: var(--muted);
      font-size: 0.75rem;
      letter-spacing: 0.2em;
      text-transform: uppercase;
      opacity: 0.7;
      animation: bounce 2s infinite;
    }

    @keyframes bounce {
      0%, 100% { transform: translateX(-50%) translateY(0); }
      50% { transform: translateX(-50%) translateY(10px); }
    }

    /* Truck Illustration */
    .truck-showcase {
      position: relative;
      z-index: 10;
      padding: clamp(3rem, 8vw, 6rem) clamp(1rem, 5vw, 3rem);
      max-width: 1200px;
      margin: 0 auto;
    }

    .truck-container {
      position: relative;
      aspect-ratio: 4/2.5;
      max-width: 800px;
      margin: 0 auto;
    }

    .truck-svg {
      width: 100%;
      height: 100%;
      filter: drop-shadow(0 20px 40px var(--shadow));
    }

    .truck-body { transition: transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1); }
    .truck-wheel { transform-origin: center; animation: wheelSpin 3s linear infinite; }
    .truck-steam { opacity: 0; animation: steamRise 2s ease-out infinite; }
    .truck-steam:nth-child(2) { animation-delay: 0.5s; }
    .truck-steam:nth-child(3) { animation-delay: 1s; }
    .truck-glow { opacity: 0.3; animation: glowPulse 2s ease-in-out infinite; }

    @keyframes wheelSpin { to { transform: rotate(360deg); } }
    @keyframes steamRise {
      0% { opacity: 0.6; transform: translateY(0) scale(1); }
      100% { opacity: 0; transform: translateY(-30px) scale(1.5); }
    }
    @keyframes glowPulse {
      0%, 100% { opacity: 0.2; }
      50% { opacity: 0.5; }
    }

    .truck-container:hover .truck-body { transform: translateY(-8px) rotate(-1deg); }
    .truck-container:hover .truck-wheel { animation-duration: 0.5s; }

    .section-header {
      text-align: center;
      margin-bottom: 3rem;
    }

    .section-label {
      font-family: 'Bebas Neue', sans-serif;
      font-size: clamp(1rem, 3vw, 1.5rem);
      letter-spacing: 0.3em;
      color: var(--accent);
      text-transform: uppercase;
      margin-bottom: 0.5rem;
    }

    .section-title {
      font-family: 'Bebas Neue', sans-serif;
      font-size: clamp(2.5rem, 6vw, 4rem);
      letter-spacing: 0.02em;
      background: linear-gradient(135deg, var(--fg), var(--muted));
      -webkit-background-clip: text;
      -webkit-text-fill-color: transparent;
      background-clip: text;
    }

    /* Menu */
    .menu {
      position: relative;
      z-index: 10;
      padding: clamp(3rem, 8vw, 6rem) clamp(1rem, 5vw, 3rem);
      background: linear-gradient(180deg, transparent, var(--bg-warm), transparent);
    }

    .menu-grid {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
      gap: 1.5rem;
      max-width: 1100px;
      margin: 0 auto;
    }

    .menu-card {
      position: relative;
      background: linear-gradient(145deg, var(--card), var(--bg-warm));
      border: 1px solid var(--border);
      border-radius: 24px;
      padding: 2rem;
      overflow: hidden;
      transition: all 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
      cursor: pointer;
    }

    .menu-card::before {
      content: '';
      position: absolute;
      top: 0; left: 0; right: 0;
      height: 4px;
      background: linear-gradient(90deg, var(--accent), var(--kimchi), var(--accent-light));
      transform: scaleX(0);
      transform-origin: left;
      transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
    }

    .menu-card:hover {
      transform: translateY(-8px);
      border-color: var(--accent);
      box-shadow: 0 20px 40px var(--shadow), 0 0 0 1px var(--accent);
    }

    .menu-card:hover::before { transform: scaleX(1); }

    .menu-card.featured { border-color: var(--accent); }
    .menu-card.featured::before { transform: scaleX(1); }

    .menu-badge {
      display: inline-block;
      padding: 0.35rem 0.85rem;
      background: linear-gradient(135deg, var(--accent), var(--kimchi));
      color: var(--fg);
      font-size: 0.7rem;
      font-weight: 600;
      letter-spacing: 0.1em;
      text-transform: uppercase;
      border-radius: 100px;
      margin-bottom: 1rem;
    }

    .menu-badge.veg { background: linear-gradient(135deg, var(--cilantro), var(--cilantro-light)); }

    .menu-illustration {
      width: 100%;
      height: 140px;
      margin-bottom: 1.5rem;
      border-radius: 16px;
      overflow: hidden;
      position: relative;
    }

    .food-svg { width: 100%; height: 100%; }

    .menu-content h3 {
      font-family: 'Bebas Neue', sans-serif;
      font-size: 1.75rem;
      letter-spacing: 0.02em;
      margin-bottom: 0.5rem;
      color: var(--fg);
    }

    .menu-description {
      color: var(--muted);
      font-size: 0.95rem;
      line-height: 1.7;
      margin-bottom: 1rem;
    }

    .menu-footer {
      display: flex;
      justify-content: space-between;
      align-items: center;
      padding-top: 1rem;
      border-top: 1px solid var(--border);
    }

    .menu-price {
      font-family: 'Bebas Neue', sans-serif;
      font-size: 1.5rem;
      color: var(--accent-light);
    }

    .menu-tags {
      display: flex;
      gap: 0.5rem;
      flex-wrap: wrap;
    }

    .tag {
      padding: 0.25rem 0.7rem;
      background: rgba(255,255,255,0.05);
      border: 1px solid var(--border);
      border-radius: 100px;
      font-size: 0.7rem;
      color: var(--muted);
    }

    /* Schedule / Location */
    .schedule {
      position: relative;
      z-index: 10;
      padding: clamp(3rem, 8vw, 6rem) clamp(1rem, 5vw, 3rem);
    }

    .schedule-grid {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
      gap: 1.5rem;
      max-width: 1000px;
      margin: 0 auto;
    }

    .day-card {
      background: linear-gradient(145deg, var(--card), var(--bg-warm));
      border: 1px solid var(--border);
      border-radius: 20px;
      padding: 2rem;
      text-align: center;
      transition: all 0.3s;
      position: relative;
      overflow: hidden;
    }

    .day-card::before {
      content: '';
      position: absolute;
      top: 0; left: 0; right: 0;
      height: 3px;
      background: linear-gradient(90deg, transparent, var(--accent), transparent);
      transform: scaleX(0);
      transition: transform 0.3s;
    }

    .day-card:hover { border-color: var(--accent); transform: translateY(-4px); }
    .day-card:hover::before { transform: scaleX(1); }
    .day-card.today { border-color: var(--accent); box-shadow: 0 0 30px var(--glow); }
    .day-card.today::before { transform: scaleX(1); }

    .day-name {
      font-family: 'Bebas Neue', sans-serif;
      font-size: 1.5rem;
      letter-spacing: 0.1em;
      color: var(--accent-light);
      margin-bottom: 0.5rem;
    }

    .day-date { color: var(--muted); font-size: 0.9rem; margin-bottom: 1.5rem; }

    .day-location {
      display: flex;
      align-items: center;
      justify-content: center;
      gap: 0.5rem;
      color: var(--fg);
      font-weight: 500;
      margin-bottom: 0.5rem;
    }

    .day-time { color: var(--muted); font-size: 0.9rem; }

    .location-icon { color: var(--accent); }

    /* Reviews */
    .reviews {
      position: relative;
      z-index: 10;
      padding: clamp(3rem, 8vw, 6rem) clamp(1rem, 5vw, 3rem);
      background: linear-gradient(180deg, transparent, var(--bg-warm), transparent);
    }

    .reviews-track {
      display: flex;
      gap: 1.5rem;
      overflow-x: auto;
      padding: 1rem 0.5rem 2rem;
      scroll-snap-type: x mandatory;
      -webkit-overflow-scrolling: touch;
      max-width: 1100px;
      margin: 0 auto;
    }

    .reviews-track::-webkit-scrollbar { height: 6px; }
    .reviews-track::-webkit-scrollbar-track { background: var(--bg); border-radius: 3px; }
    .reviews-track::-webkit-scrollbar-thumb { background: var(--accent); border-radius: 3px; }

    .review-card {
      flex: 0 0 320px;
      background: linear-gradient(145deg, var(--card), var(--bg-warm));
      border: 1px solid var(--border);
      border-radius: 20px;
      padding: 2rem;
      scroll-snap-align: start;
      transition: all 0.3s;
    }

    .review-card:hover { border-color: var(--accent); transform: translateY(-4px); }

    .review-stars { display: flex; gap: 0.2rem; margin-bottom: 1rem; }
    .star { color: var(--accent-light); }

    .review-text { color: var(--muted); line-height: 1.7; margin-bottom: 1.5rem; font-style: italic; }

    .review-author {
      display: flex;
      align-items: center;
      gap: 1rem;
    }

    .author-avatar {
      width: 48px; height: 48px; border-radius: 50%;
      background: linear-gradient(135deg, var(--accent), var(--kimchi));
      display: flex; align-items: center; justify-content: center;
      font-weight: 700; font-size: 1.2rem; color: var(--fg);
    }

    .author-name { font-weight: 600; color: var(--fg); }
    .author-handle { color: var(--muted); font-size: 0.85rem; }

    /* CTA Section */
    .cta-section {
      position: relative;
      z-index: 10;
      padding: clamp(3rem, 8vw, 6rem) clamp(1rem, 5vw, 3rem);
      text-align: center;
    }

    .cta-card {
      max-width: 600px;
      margin: 0 auto;
      background: linear-gradient(145deg, var(--card), var(--bg-warm));
      border: 1px solid var(--border);
      border-radius: 32px;
      padding: clamp(2rem, 5vw, 4rem);
      position: relative;
      overflow: hidden;
    }

    .cta-card::before {
      content: '';
      position: absolute;
      inset: 0;
      background: radial-gradient(ellipse at 30% 20%, rgba(255,107,43,0.15) 0%, transparent 50%),
                  radial-gradient(ellipse at 70% 80%, rgba(214,40,40,0.1) 0%, transparent 40%);
      pointer-events: none;
    }

    .cta-title {
      font-family: 'Bebas Neue', sans-serif;
      font-size: clamp(2rem, 5vw, 3rem);
      letter-spacing: 0.02em;
      margin-bottom: 1rem;
      position: relative;
    }

    .cta-text { color: var(--muted); margin-bottom: 2rem; position: relative; font-size: 1.1rem; }

    .cta-buttons { display: flex; flex-wrap: wrap; gap: 1rem; justify-content: center; position: relative; }

    /* Footer */
    .footer {
      position: relative;
      z-index: 10;
      padding: 3rem clamp(1rem, 5vw, 3rem);
      border-top: 1px solid var(--border);
      background: var(--bg-warm);
    }

    .footer-grid {
      display: grid;
      grid-template-columns: 1fr auto 1fr;
      gap: 2rem;
      max-width: 1200px;
      margin: 0 auto;
      align-items: center;
    }

    .footer-brand .logo { font-size: 2rem; filter: none; }
    .footer-brand .logo-accent { font-size: 1rem; }

    .footer-social { display: flex; gap: 1rem; }
    .social-link {
      width: 44px; height: 44px; border-radius: 50%;
      background: var(--card);
      border: 1px solid var(--border);
      display: flex; align-items: center; justify-content: center;
      color: var(--muted);
      transition: all 0.3s;
      text-decoration: none;
    }
    .social-link:hover { border-color: var(--accent); color: var(--accent); transform: translateY(-2px); }

    .footer-info {
      text-align: right;
      color: var(--muted);
      font-size: 0.9rem;
      line-height: 1.8;
    }
    .footer-info a { color: var(--accent); text-decoration: none; transition: color 0.3s; }
    .footer-info a:hover { color: var(--accent-light); }

    /* Intersection Observer animations */
    .reveal { opacity: 0; transform: translateY(40px); transition: all 0.8s cubic-bezier(0.34, 1.56, 0.64, 1); }
    .reveal.visible { opacity: 1; transform: translateY(0); }
    .reveal-delay-1 { transition-delay: 0.1s; }
    .reveal-delay-2 { transition-delay: 0.2s; }
    .reveal-delay-3 { transition-delay: 0.3s; }
    .reveal-delay-4 { transition-delay: 0.4s; }

    /* Reduced motion */
    @media (prefers-reduced-motion: reduce) {
      .particle, .truck-steam, .truck-wheel, .truck-glow, .logo-sparkles, .scroll-indicator, .badge-dot { animation: none; }
      .reveal { opacity: 1; transform: none; transition: none; }
    }

    /* Mobile adjustments */
    @media (max-width: 768px) {
      .footer-grid { grid-template-columns: 1fr; text-align: center; gap: 1.5rem; }
      .footer-info { text-align: center; }
      .footer-social { justify-content: center; }
      .review-card { flex: 0 0 280px; }
    }

    @media (max-width: 480px) {
      .btn { padding: 0.875rem 1.5rem; }
      .menu-card, .day-card, .review-card { padding: 1.5rem; }
    }
  </style>
</head>
<body>
  <div class="atmosphere"></div>
  <div class="floating-particles" id="particles"></div>

  <!-- Hero -->
  <header class="hero">
    <div class="hero-badge">
      <span class="badge-dot"></span>
      <span>Now Serving in Los Angeles</span>
    </div>
    <div class="logo-container">
      <div class="logo-sparkles"></div>
      <h1 class="logo">KIMCHI LOCO</h1>
      <span class="logo-accent">Korean Soul · Mexican Heart</span>
    </div>
    <p class="hero-tagline">Crispy kimchi slaw, gochujang crema, double-corn tortillas — <strong>fusion that hits different</strong>. Find the truck, taste the chaos.</p>
    <div class="cta-group">
      <a href="#schedule" class="btn btn-primary">Find the Truck <svg class="btn-icon" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M5 12h14M12 5l7 7-7 7"/></svg></a>
      <a href="#menu" class="btn btn-secondary">Peep the Menu</a>
    </div>
    <div class="scroll-indicator">
      <span>Scroll</span>
      <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M12 5v14M19 12l-7 7-7-7"/></svg>
    </div>
  </header>

  <!-- Truck Showcase -->
  <section class="truck-showcase reveal">
    <div class="section-header">
      <span class="section-label">The Ride</span>
      <h2 class="section-title">Meet the Loco</h2>
    </div>
    <div class="truck-container" role="img" aria-label="Kimchi Loco food truck illustration">
      <svg class="truck-svg" viewBox="0 0 800 500" xmlns="http://www.w3.org/2000/svg">
        <defs>
          <linearGradient id="truckBody" x1="0%" y1="0%" x2="0%" y2="100%">
            <stop offset="0%" stop-color="#ff6b2b"/>
            <stop offset="50%" stop-color="#e8551a"/>
            <stop offset="100%" stop-color="#d62828"/>
          </linearGradient>
          <linearGradient id="truckAccent" x1="0%" y1="0%" x2="100%" y2="0%">
            <stop offset="0%" stop-color="#ff9f1c"/>
            <stop offset="100%" stop-color="#ff6b2b"/>
          </linearGradient>
          <radialGradient id="wheelGrad" cx="50%" cy="50%" r="50%">
            <stop offset="0%" stop-color="#2a2a2a"/>
            <stop offset="100%" stop-color="#0d0d0d"/>
          </radialGradient>
          <linearGradient id="windowGrad" x1="0%" y1="0%" x2="0%" y2="100%">
            <stop offset="0%" stop-color="#1a1a2e"/>
            <stop offset="100%" stop-color="#0f0f1a"/>
          </linearGradient>
          <filter id="glow" x="-50%" y="-50%" width="200%" height="200%">
            <feGaussianBlur stdDeviation="8" result="blur"/>
            <feMerge>
              <feMergeNode in="blur"/>
              <feMergeNode in="SourceGraphic"/>
            </feMerge>
          </filter>
        </defs>

        <!-- Ground shadow -->
        <ellipse cx="400" cy="470" rx="280" ry="15" fill="#000" opacity="0.3"/>

        <!-- Truck body -->
        <g class="truck-body">
          <!-- Main chassis -->
          <path d="M120,380 L120,280 Q120,240 160,240 L580,240 Q620,240 620,280 L620,380 Z" fill="url(#truckBody)" stroke="#fff" stroke-width="1" opacity="0.1"/>
          
          <!-- Cab -->
          <path d="M160,240 L160,180 Q160,140 200,140 L380,140 Q420,140 420,180 L420,240 Z" fill="url(#truckBody)"/>
          <path d="M160,240 L160,180 Q160,140 200,140 L380,140 Q420,140 420,180 L420,240 Z" stroke="url(#truckAccent)" stroke-width="2" fill="none"/>

          <!-- Windshield -->
          <path d="M180,150 Q180,142 188,142 L372,142 Q380,142 380,150 L380,220 L180,220 Z" fill="url(#windowGrad)"/>
          <path d="M180,150 Q180,142 188,142 L372,142 Q380,142 380,150 L380,220 L180,220 Z" stroke="#fff" stroke-width="0.5" opacity="0.1" fill="none"/>

          <!-- Side windows -->
          <rect x="440" y="150" width="140" height="90" rx="8" fill="url(#windowGrad)"/>
          <rect x="440" y="150" width="140" height="90" rx="8" stroke="#fff" stroke-width="0.5" opacity="0.1" fill="none"/>

          <!-- Serving window -->
          <rect x="200" y="250" width="200" height="100" rx="12" fill="#0a0a0a"/>
          <rect x="200" y="250" width="200" height="100" rx="12" stroke="url(#truckAccent)" stroke-width="3" fill="none"/>
          
          <!-- Window ledge -->
          <rect x="195" y="345" width="210" height="8" rx="4" fill="url(#truckAccent)"/>

          <!-- Roof sign -->
          <rect x="220" y="100" width="160" height="40" rx="8" fill="url(#truckAccent)" filter="url(#glow)"/>
          <text x="300" y="128" text-anchor="middle" font-family="Bebas Neue" font-size="24" fill="#0d0d0d" font-weight="700">OPEN</text>

          <!-- Kimchi Loco text on side -->
          <text x="410" y="300" text-anchor="end" font-family="Bebas Neue" font-size="48" fill="#fff" font-weight="700" letter-spacing="2">KIMCHI</text>
          <text x="410" y="350" text-anchor="end" font-family="Permanent Marker" font-size="28" fill="#ff9f1c" font-weight="400" letter-spacing="4">LOCO</text>

          <!-- Decorative line -->
          <line x1="430" y1="315" x2="600" y2="315" stroke="url(#truckAccent)" stroke-width="3" stroke-linecap="round"/>

          <!-- Exhaust pipe -->
          <rect x="130" y="180" width="12" height="40" rx="2" fill="#333"/>
          <rect x="130" y="180" width="12" height="40" rx="2" stroke="#555" stroke-width="1" fill="none"/>

          <!-- Steam -->
          <g class="truck-steam" fill="#fff" opacity="0.4">
            <path d="M136,170 Q130,150 140,130 Q150,110 142,90"/>
            <path d="M136,170 Q142,150 138,130 Q130,110 138,90" transform="translate(20,0)"/>
            <path d="M136,170 Q130,150 140,130 Q150,110 142,90" transform="translate(40,0)"/>
          </g>

          <!-- Glow under truck -->
          <ellipse class="truck-glow" cx="400" cy="390" rx="200" ry="30" fill="url(#truckBody)" filter="url(#glow)"/>
        </g>

        <!-- Wheels -->
        <g class="truck-wheel">
          <circle cx="200" cy="390" r="55" fill="url(#wheelGrad)"/>
          <circle cx="200" cy="390" r="55" stroke="#333" stroke-width="2" fill="none"/>
          <circle cx="200" cy="390" r="35" fill="#1a1a1a"/>
          <circle cx="200" cy="390" r="35" stroke="#444" stroke-width="1" fill="none"/>
          <g stroke="#ff6b2b" stroke-width="3" stroke-linecap="round">
            <line x1="200" y1="355" x2="200" y2="330"/>
            <line x1="200" y1="355" x2="200" y2="330" transform="rotate(90 200 390)"/>
            <line x1="200" y1="355" x2="200" y2="330" transform="rotate(45 200 390)"/>
            <line x1="200" y1="355" x2="200" y2="330" transform="rotate(135 200 390)"/>
          </g>
          <circle cx="200" cy="390" r="12" fill="#ff6b2b"/>
        </g>

        <g class="truck-wheel" transform="translate(360,0)">
          <circle cx="200" cy="390" r="55" fill="url(#wheelGrad)"/>
          <circle cx="200" cy="390" r="55" stroke="#333" stroke-width="2" fill="none"/>
          <circle cx="200" cy="390" r="35" fill="#1a1a1a"/>
          <circle cx="200" cy="390" r="35" stroke="#444" stroke-width="1" fill="none"/>
          <g stroke="#ff6b2b" stroke-width="3" stroke-linecap="round">
            <line x1="200" y1="355" x2="200" y2="330"/>
            <line x1="200" y1="355" x2="200" y2="330" transform="rotate(90 200 390)"/>
            <line x1="200" y1="355" x2="200" y2="330" transform="rotate(45 200 390)"/>
            <line x1="200" y1="355" x2="200" y2="330" transform="rotate(135 200 390)"/>
          </g>
          <circle cx="200" cy="390" r="12" fill="#ff6b2b"/>
        </g>

        <!-- Details -->
        <!-- Side mirror -->
        <path d="M165,200 Q145,200 145,220 L155,220 Q155,205 165,205 Z" fill="url(#truckBody)"/>
        <rect x="145" y="202" width="10" height="16" rx="2" fill="url(#windowGrad)"/>

        <!-- Door handle -->
        <rect x="410" y="290" width="30" height="6" rx="3" fill="#444"/>

        <!-- License plate -->
        <rect x="560" y="385" width="80" height="20" rx="4" fill="#1a1a1a" stroke="#444" stroke-width="1"/>
        <text x="600" y="399" text-anchor="middle" font-family="monospace" font-size="12" fill="#666">KIMCHI-1</text>

        <!-- Taco decoration on roof -->
        <g transform="translate(350, 80) rotate(-15)">
          <path d="M0,0 Q-10,-5 -15,5 Q-5,15 0,10 Q5,15 15,5 Q10,-5 0,0" fill="#e8a87c"/>
          <path d="M-12,3 Q-8,8 -2,5" stroke="#d62828" stroke-width="3" fill="none" stroke-linecap="round"/>
          <path d="M-2,5 Q2,12 8,5" stroke="#2d6a4f" stroke-width="3" fill="none" stroke-linecap="round"/>
          <path d="M8,5 Q12,-2 12,3" stroke="#fff8e7" stroke-width="3" fill="none" stroke-linecap="round"/>
        </g>
      </svg>
    </div>
  </section>

  <!-- Menu -->
  <section id="menu" class="menu">
    <div class="section-header reveal">
      <span class="section-label">The Menu</span>
      <h2 class="section-title">Eat Good</h2>
    </div>
    <div class="menu-grid" role="list">
      <!-- Item 1 -->
      <article class="menu-card featured reveal reveal-delay-1" role="listitem" tabindex="0">
        <span class="menu-badge">Signature</span>
        <div class="menu-illustration">
          <svg class="food-svg" viewBox="0 0 300 140" xmlns="http://www.w3.org/2000/svg">
            <defs>
              <linearGradient id="tacoShell" x1="0%" y1="0%" x2="0%" y2="100%">
                <stop offset="0%" stop-color="#e8a87c"/>
                <stop offset="100%" stop-color="#d4936a"/>
              </linearGradient>
            </defs>
            <!-- Taco shell -->
            <path d="M50,100 Q75,30 150,20 Q225,30 250,100 Q200,110 150,120 Q100,110 50,100" fill="url(#tacoShell)"/>
            <path d="M50,100 Q75,30 150,20 Q225,30 250,100" stroke="#c4825a" stroke-width="2" fill="none"/>
            <!-- Fillings -->
            <g transform="translate(150,65)">
              <!-- Meat -->
              <ellipse cx="-40" cy="0" rx="35" ry="20" fill="#8b3a2a"/>
              <ellipse cx="0" cy="-5" rx="35" ry="20" fill="#9b4a3a"/>
              <ellipse cx="40" cy="0" rx="35" ry="20" fill="#8b3a2a"/>
              <!-- Kimchi -->
              <path d="M-50,-10 Q-40,-25 -20,-20 Q0,-30 20,-20 Q40,-25 50,-10" fill="#d62828" opacity="0.9"/>
              <path d="M-45,-15 Q-35,-28 -15,-22 Q5,-32 25,-22 Q45,-28 55,-15" fill="#ff4d4d" opacity="0.7"/>
              <!-- Crema drizzle -->
              <path d="M-45,-5 Q-30,5 -10,0 Q10,5 30,0 Q50,5 55,-5" stroke="#fff8e7" stroke-width="3" fill="none" stroke-linecap="round" opacity="0.8"/>
              <path d="M-40,5 Q-25,15 -5,10 Q15,15 35,10 Q55,15 60,5" stroke="#fff8e7" stroke-width="2" fill="none" stroke-linecap="round" opacity="0.6"/>
              <!-- Cilantro -->
              <g fill="#2d6a4f">
                <ellipse cx="-35" cy="-25" rx="4" ry="8" transform="rotate(-30 -35 -25)"/>
                <ellipse cx="-10" cy="-30" rx="3" ry="7" transform="rotate(15 -10 -30)"/>
                <ellipse cx="15" cy="-28" rx="4" ry="8" transform="rotate(-20 15 -28)"/>
                <ellipse cx="40" cy "-25" rx="3" ry="7" transform="rotate(25 40 -25)"/>
              </g>
              <!-- Sesame seeds -->
              <g fill="#fff8e7">
                <circle cx="-45" cy="-15" r="1.5"/><circle cx="-20" cy "-10" r="1.5"/><circle cx="5" cy "-18" r="1.5"/>
                <circle cx="30" cy "-12" r="1.5"/><circle cx="50" cy "-16" r="1.5"/>
              </g>
            </g>
          </svg>
        </div>
        <div class="menu-content">
          <h3>OG KIMCHI LOCO</h3>
          <p class="menu-description">Double corn tortillas, caramelized bulgogi beef, house-fermented napa kimchi, gochujang crema, fresh cilantro, toasted sesame. The one that started it all.</p>
          <div class="menu-footer">
            <span class="menu-price">$5.50</span>
            <div class="menu-tags">
              <span class="tag">Gluten-Free</span>
              <span class="tag">Spicy</span>
            </div>
          </div>
        </div>
      </article>

      <!-- Item 2 -->
      <article class="menu-card reveal reveal-delay-2" role="listitem" tabindex="0">
        <span class="menu-badge veg">Vegan</span>
        <div class="menu-illustration">
          <svg class="food-svg" viewBox="0 0 300 140" xmlns="http://www.w3.org/2000/svg">
            <defs>
              <linearGradient id="tacoShell2" x1="0%" y1="0%" x2="0%" y2="100%">
                <stop offset="0%" stop-color="#e8a87c"/>
                <stop offset="100%" stop-color="#d4936a"/>
              </linearGradient>
            </defs>
            <path d="M50,100 Q75,30 150,20 Q225,30 250,100 Q200,110 150,120 Q100,110 50,100" fill="url(#tacoShell2)"/>
            <path d="M50,100 Q75,30 150,20 Q225,30 250,100" stroke="#c4825a" stroke-width="2" fill="none"/>
            <g transform="translate(150,65)">
              <!-- Tofu -->
              <g fill="#f5f0e1">
                <rect x="-45" y="-15" width="28" height="22" rx="3"/>
                <rect x="-10" y="-18" width="28" height="22" rx="3"/>
                <rect x="25" y="-15" width="28" height="22" rx="3"/>
              </g>
              <g fill="#d4a574">
                <rect x="-43" y="-13" width="24" height="4" rx="1"/>
                <rect x="-8" y="-16" width="24" height="4" rx="1"/>
                <rect x="27" y="-13" width="24" height="4" rx="1"/>
              </g>
              <!-- Kimchi slaw -->
              <path d="M-50,-10 Q-40,-25 -20,-20 Q0,-30 20,-20 Q40,-25 50,-10" fill="#d62828" opacity="0.9"/>
              <path d="M-45,-15 Q-35,-28 -15,-22 Q5,-32 25,-22 Q45,-28 55,-15" fill="#ff4d4d" opacity="0.7"/>
              <!-- Vegan crema -->
              <path d="M-45,-5 Q-30,5 -10,0 Q10,5 30,0 Q50,5 55,-5" stroke="#fff8e7" stroke-width="3" fill="none" stroke-linecap="round" opacity="0.8"/>
              <!-- Scallions -->
              <g stroke="#40916c" stroke-width="2.5" stroke-linecap="round">
                <line x1="-40" y1="-25" x2="-40" y2="-35"/>
                <line x1="-15" y1="-30" x2="-15" y2="-40"/>
                <line x1="10" y1="-28" x2="10" y2="-38"/>
                <line x1="35" y1="-25" x2="35" y2="-35"/>
                <line x1="55" y1="-22" x2="55" y2="-32"/>
              </g>
              <!-- Chili flakes -->
              <g fill="#d62828">
                <circle cx="-30" cy="-18" r="1.2"/><circle cx="0" cy "-20" r="1.2"/><circle cx="25" cy "-16" r="1.2"/>
                <circle cx="45" cy "-19" r="1.2"/>
              </g>
            </g>
          </svg>
        </div>
        <div class="menu-content">
          <h3>SEOUL TOFU</h3>
          <p class="menu-description">Crispy gochujang-glazed tofu, kimchi slaw, vegan cashew crema, pickled daikon, scallions, chili oil. Plant-based but hits like the original.</p>
          <div class="menu-footer">
            <span class="menu-price">$5.00</span>
            <div class="menu-tags">
              <span class="tag">Vegan</span>
              <span class="tag">Spicy</span>
            </div>
          </div>
        </div>
      </article>

      <!-- Item 3 -->
      <article class="menu-card reveal reveal-delay-3" role="listitem" tabindex="0">
        <span class="menu-badge">New</span>
        <div class="menu-illustration">
          <svg class="food-svg" viewBox="0 0 300 140" xmlns="http://www.w3.org/2000/svg">
            <defs>
              <linearGradient id="tacoShell3" x1="0%" y1="0%" x2="0%" y2="100%">
                <stop offset="0%" stop-color="#e8a87c"/>
                <stop offset="100%" stop-color="#d4936a"/>
              </linearGradient>
            </defs>
            <path d="M50,100 Q75,30 150,20 Q225,30 250,100 Q200,110 150,120 Q100,110 50,100" fill="url(#tacoShell3)"/>
            <path d="M50,100 Q75,30 150,20 Q225,30 250,100" stroke="#c4825a" stroke-width="2" fill="none"/>
            <g transform="translate(150,65)">
              <!-- Pork belly -->
              <g>
                <ellipse cx="-35" cy="0" rx="30" ry="18" fill="#c45a4a"/>
                <ellipse cx="5" cy="-5" rx="30" ry="18" fill="#d46a5a"/>
                <ellipse cx="45" cy="0" rx="30" ry="18" fill="#c45a4a"/>
                <!-- Fat layers -->
                <g fill="#f5e6d3" opacity="0.8">
                  <ellipse cx="-35" cy="-8" rx="25" ry="4"/>
                  <ellipse cx="5" cy="-13" rx="25" ry="4"/>
                  <ellipse cx="45" cy "-8" rx="25" ry="4"/>
                </g>
              </g>
              <!-- Ssamjang drizzle -->
              <path d="M-45,-5 Q-30,5 -10,0 Q10,5 30,0 Q50,5 55,-5" stroke="#5a3d2b" stroke-width="3" fill="none" stroke-linecap="round" opacity="0.9"/>
              <!-- Perilla leaves -->
              <g fill="#2d6a4f">
                <ellipse cx="-40" cy="-28" rx="10" ry="6" transform="rotate(-20 -40 -28)"/>
                <ellipse cx="-5" cy "-32" rx="10" ry="6" transform="rotate(10 -5 -32)"/>
                <ellipse cx="30" cy "-28" rx="10" ry="6" transform="rotate(-15 30 -28)"/>
              </g>
              <!-- Raw garlic slices -->
              <g fill="#f0e6d2" stroke="#d4c4a8" stroke-width="0.5">
                <ellipse cx="-20" cy "-15" rx="3" ry="1.5"/>
                <ellipse cx="10" cy "-18" rx="3" ry="1.5"/>
                <ellipse cx="40" cy "-14" rx="3" ry="1.5"/>
              </g>
              <!-- Chili threads -->
              <g stroke="#d62828" stroke-width="1.5" stroke-linecap="round">
                <path d="M-30,-20 Q-25,-30 -20,-25"/>
                <path d="M0,-25 Q5,-35 10,-30"/>
                <path d="M35,-20 Q40,-30 45,-25"/>
              </g>
            </g>
          </svg>
        </div>
        <div class="menu-content">
          <h3>PORK BELLY SSAM</h3>
          <p class="menu-description">Crispy-edged pork belly, ssamjang glaze, fresh perilla leaves, raw garlic, chili threads, kimchi crunch. Wrapped in double tortillas — ssam style.</p>
          <div class="menu-footer">
            <span class="menu-price">$6.00</span>
            <div class="menu-tags">
              <span class="tag">Rich</span>
              <span class="tag">Spicy</span>
            </div>
          </div>
        </div>
      </article>

      <!-- Item 4 -->
      <article class="menu-card reveal reveal-delay-4" role="listitem" tabindex="0">
        <span class="menu-badge">Side</span>
        <div class="menu-illustration">
          <svg class="food-svg" viewBox="0 0 300 140" xmlns="http://www.w3.org/2000/svg">
            <!-- Korean corn cheese -->
            <defs>
              <radialGradient id="cheeseGlow" cx="50%" cy="30%" r="60%">
                <stop offset="0%" stop-color="#fff8e7"/>
                <stop offset="100%" stop-color="#ffd66b"/>
              </radialGradient>
            </defs>
            <!-- Cast iron skillet -->
            <ellipse cx="150" cy="110" rx="110" ry="15" fill="#1a1a1a"/>
            <path d="M40,110 Q35,60 40,30 L260,30 Q265,60 260,110" fill="#2a2a2a"/>
            <path d="M40,30 L260,30" stroke="#444" stroke-width="2"/>
            <ellipse cx="150" cy="30" rx="110" ry="8" fill="#1a1a1a"/>
            <!-- Cheese corn -->
            <g transform="translate(150,50)">
              <ellipse cx="0" cy="0" rx="95" ry="45" fill="url(#cheeseGlow)"/>
              <!-- Cheese pull -->
              <g fill="#fff8e7" opacity="0.9">
                <path d="M-50,-10 Q-40,-40 -30,-20 Q-20,-50 -10,-25 Q0,-55 10,-25 Q20,-50 30,-20 Q40,-40 50,-10"/>
                <path d="M-40,-5 Q-30,-30 -15,-15 Q0,-35 15,-15 Q30,-30 40,-5" opacity="0.7"/>
              </g>
              <!-- Corn kernels -->
              <g fill="#ffd66b">
                <circle cx="-45" cy="-15" r="3"/><circle cx="-30" cy "-20" r="3"/><circle cx="-15" cy "-10" r="3"/>
                <circle cx="0" cy "-25" r="3"/><circle cx="15" cy "-12" r="3"/><circle cx="30" cy "-22" r="3"/>
                <circle cx="45" cy "-16" r="3"/><circle cx="-35" cy "5" r="3"/><circle cx="-5" cy "8" r="3"/>
                <circle cx="20" cy "3" r="3"/><circle cx="40" cy "6" r="3"/>
              </g>
              <!-- Scallions on top -->
              <g stroke="#40916c" stroke-width="2.5" stroke-linecap="round">
                <line x1="-50" y1="-30" x2="-50" y2="-45"/>
                <line x1="-10" y1 "-35" x2="-10" y2="-50"/>
                <line x1="30" y1 "-32" x2="30" y2 "-47"/>
                <line x1="55" y1 "-28" x2="55" y2 "-43"/>
              </g>
              <!-- Gochugaru -->
              <g fill="#d62828">
                <circle cx="-40" cy "-5" r="1.5"/><circle cx="10" cy "-8" r="1.5"/><circle cx="35" cy "-3" r="1.5"/>
              </g>
            </g>
            <!-- Handle -->
            <path d="M250,50 Q280,40 290,55" stroke="#333" stroke-width="6" fill="none" stroke-linecap="round"/>
          </svg>
        </div>
        <div class="menu-content">
          <h3>CORN CHEESE</h3>
          <p class="menu-description">Sweet corn, mozzarella, cheddar, gochugaru, scallions, mayo — baked in cast iron until golden and pull-apart. Shareable (but you won't want to).</p>
          <div class="menu-footer">
            <span class="menu-price">$7.00</span>
            <div class="menu-tags">
              <span class="tag">Vegetarian</span>
              <span class="tag">Cheesy</span>
            </div>
          </div>
        </div>
      </article>
    </div>
  </section>

  <!-- Schedule -->
  <section id="schedule" class="schedule">
    <div class="section-header reveal">
      <span class="section-label">Where We At</span>
      <h2 class="section-title">Catch the Truck</h2>
    </div>
    <div class="schedule-grid" role="list">
      <article class="day-card today reveal reveal-delay-1" role="listitem">
        <div class="day-name">Today</div>
        <div class="day-date">Friday, March 15</div>
        <div class="day-location"><svg class="location-icon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"/><circle cx="12" cy="10" r="3"/></svg> Arts District — 8th & Mateo</div>
        <div class="day-time">11:00 AM — 9:00 PM</div>
      </article>
      <article class="day-card reveal reveal-delay-2" role="listitem">
        <div class="day-name">Saturday</div>
        <div class="day-date">March 16</div>
        <div class="day-location"><svg class="location-icon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"/><circle cx="12" cy="10" r="3"/></svg> Smorgasburg LA — ROW DTLA</div>
        <div class="day-time">10:00 AM — 4:00 PM</div>
      </article>
      <article class="day-card reveal reveal-delay-3" role="listitem">
        <div class="day-name">Sunday</div>
        <div class="day-date">March 17</div>
        <div class="day-location"><svg class="location-icon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"/><circle cx="12" cy="10" r="3"/></svg> Grand Central Market</div>
        <div class="day-time">9:00 AM — 3:00 PM</div>
      </article>
      <article class="day-card reveal reveal-delay-4" role="listitem">
        <div class="day-name">Monday</div>
        <div class="day-date">March 18</div>
        <div class="day-location"><svg class="location-icon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"/><circle cx="12" cy="10" r="3"/></svg> CLOSED — Prep Day</div>
        <div class="day-time">Follow @kimchiloco for pop-ups</div>
      </article>
      <article class="day-card reveal reveal-delay-4" role="listitem">
        <div class="day-name">Tuesday</div>
        <div class="day-date">March 19</div>
        <div class="day-location"><svg class="location-icon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"/><circle cx="12" cy="10" r="3"/></svg> Highland Park — York Blvd</div>
        <div class="day-time">5:00 PM — 11:00 PM</div>
      </article>
      <article class="day-card reveal reveal-delay-4" role="listitem">
        <div class="day-name">Wednesday</div>
        <div class="day-date">March 20</div>
        <div class="day-location"><svg class="location-icon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"/><circle cx="12" cy="10" r="3"/></svg> Koreatown — 6th & Vermont</div>
        <div class="day-time">11:00 AM — 8:00 PM</div>
      </article>
    </div>
  </section>

  <!-- Reviews -->
  <section class="reviews">
    <div class="section-header reveal">
      <span class="section-label">The Hype</span>
      <h2 class="section-title">Real Ones Know</h2>
    </div>
    <div class="reviews-track" id="reviewsTrack" role="list">
      <article class="review-card reveal" role="listitem">
        <div class="review-stars"><span class="star">★</span><span class="star">★</span><span class="star">★</span><span class="star">★</span><span class="star">★</span></div>
        <p class="review-text">"The OG Kimchi Loco changed my life. That gochujang crema on double corn tortillas? Chef's kiss. I drive 45 mins from Pasadena every week."</p>
        <div class="review-author">
          <div class="author-avatar">M</div>
          <div>
            <div class="author-name">Marcus K.</div>
            <div class="author-handle">@marcuseats_la • 127 reviews</div>
          </div>
        </div>
      </article>
      <article class="review-card reveal" role="listitem">
        <div class="review-stars"><span class="star">★</span><span class="star">★</span><span class="star">★</span><span class="star">★</span><span class="star">★</span></div>
        <p class="review-text">"Finally a vegan taco that doesn't taste like sadness. The Seoul Tofu has that crispy glaze, kimchi crunch, cashew crema is elite. 10/10."</p>
        <div class="review-author">
          <div class="author-avatar">J</div>
          <div>
            <div class="author-name">Jenna P.</div>
            <div class="author-handle">@plantbasedjen • 89 reviews</div>
          </div>
        </div>
      </article>
      <article class="review-card reveal" role="listitem">
        <div class="review-stars"><span class="star">★</span><span class="star">★</span><span class="star">★</span><span class="star">★</span><span class="star">★</span></div>
        <p class="review-text">"Pork Belly Ssam is the move. Perilla leaves add that herbal thing, raw garlic kicks, ssamjang glaze is sticky perfection. Truck life done right."</p>
        <div class="review-author">
          <div class="author-avatar">D</div>
          <div>
            <div class="author-name">David L.</div>
            <div class="author-handle">@davidlafood • 203 reviews</div>
          </div>
        </div>
      </article>
      <article class="review-card reveal" role="listitem">
        <div class="review-stars"><span class="star">★</span><span class="star">★</span><span class="star">★</span><span class="star">★</span><span class="star">★</span></div>
        <p class="review-text">"Corn cheese in a cast iron skillet? Yes. The cheese pull is content-worthy. Get extra gochugaru. Perfect share plate while waiting for tacos."</p>
        <div class="review-author">
          <div class="author-avatar">S</div>
          <div>
            <div class="author-name">Sophie M.</div>
            <div class="author-handle">@sophieeats • 156 reviews</div>
          </div>
        </div>
      </article>
      <article class="review-card reveal" role="listitem">
        <div class="review-stars"><span class="star">★</span><span class="star">★</span><span class="star">★</span><span class="star">★</span><span class="star">★</span></div>
        <p class="review-text">"Followed them to Smorgasburg. Line was long but moved fast. Staff hype, music loud, food hot. This is what LA food trucks should be."</p>
        <div class="review-author">
          <div class="author-avatar">C</div>
          <div>
            <div class="author-name">Chris R.</div>
            <div class="author-handle">@chriscravings • 94 reviews</div>
          </div>
        </div>
      </article>
    </div>
  </section>

  <!-- CTA -->
  <section class="cta-section">
    <div class="cta-card reveal">
      <h2 class="cta-title">Ready to Get Loco?</h2>
      <p class="cta-text">Track the truck in real-time, order ahead for pickup, or book us for your next event. The kimchi's fermenting, the grill's hot.</p>
      <div class="cta-buttons">
        <a href="#" class="btn btn-primary">Follow @kimchiloco <svg class="btn-icon" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M5 12h14M12 5l7 7-7 7"/></svg></a>
        <a href="#" class="btn btn-secondary">Book the Truck</a>
      </div>
    </div>
  </section>

  <!-- Footer -->
  <footer class="footer">
    <div class="footer-grid">
      <div class="footer-brand">
        <div class="logo" style="font-size: 1.75rem;">KIMCHI LOCO</div>
        <div class="logo-accent" style="font-size: 0.85rem;">Korean Soul · Mexican Heart</div>
      </div>
      <div class="footer-social">
        <a href="#" class="social-link" aria-label="Instagram"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="2" y="2" width="20" height="20" rx="5"/><path d="M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z"/><line x1="17.5" y1="6.5" x2="17.51" y2="6.5"/></svg></a>
        <a href="#" class="social-link" aria-label="TikTok"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M16 2a2 2 0 0 1 2 2v16a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h10Z"/><path d="M12 17v-5"/><path d="M15 14H9"/></svg></a>
        <a href="#" class="social-link" aria-label="Twitter"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 4s-.7 2.1-2 3.4c1.6 10-9.4 17.3-18 11.6 2.2.1 4.4-.6 6-2C3 15.5.5 9.6 3 5c2.2 2.6 5.6 4.1 9 4-.9-4.2 4-6.6 7-3.8 1.1 0 3-1.2 3-1.2z"/></svg></a>
      </div>
      <div class="footer-info">
        <p>Los Angeles, CA</p>
        <p><a href="mailto:hello@kimchiloco.com">hello@kimchiloco.com</a></p>
        <p>🚚 Track us on Instagram for real-time location</p>
      </div>
    </div>
  </footer>

  <script>
    // Initialize particles
    const particlesContainer = document.getElementById('particles');
    const particleCount = 20;
    
    for (let i = 0; i < particleCount; i++) {
      const particle = document.createElement('div');
      particle.className = 'particle';
      particle.style.left = Math.random() * 100 + '%';
      particle.style.animationDelay = Math.random() * 8 + 's';
      particle.style.animationDuration = (6 + Math.random() * 4) + 's';
      particlesContainer.appendChild(particle);
    }

    // Intersection Observer for reveal animations
    const revealElements = document.querySelectorAll('.reveal');
    const observer = new IntersectionObserver((entries) => {
      entries.forEach(entry => {
        if (entry.isIntersecting) {
          entry.target.classList.add('visible');
        }
      });
    }, { threshold: 0.1, rootMargin: '0px 0px -50px 0px' });

    revealElements.forEach(el => observer.observe(el));

    // Smooth scroll for anchor links
    document.querySelectorAll('a[href^="#"]').forEach(anchor => {
      anchor.addEventListener('click', function(e) {
        e.preventDefault();
        const target = document.querySelector(this.getAttribute('href'));
        if (target) {
          target.scrollIntoView({ behavior: 'smooth', block: 'start' });
        }
      });
    });

    // Parallax effect on hero elements
    let ticking = false;
    function updateParallax() {
      const scrollY = window.scrollY;
      const hero = document.querySelector('.hero');
      if (hero && scrollY < window.innerHeight) {
        const logoSparkles = hero.querySelector('.logo-sparkles');
        if (logoSparkles) {
          logoSparkles.style.transform = `translateY(${scrollY * 0.3}px) rotate(${scrollY * 0.05}deg)`;
        }
      }
      ticking = false;
    }

    window.addEventListener('scroll', () => {
      if (!ticking) {
        requestAnimationFrame(updateParallax);
        ticking = true;
      }
    }, { passive: true });

    // Touch-friendly menu card interaction
    document.querySelectorAll('.menu-card').forEach(card => {
      card.addEventListener('click', () => {
        card.style.transform = 'scale(0.98)';
        setTimeout(() => card.style.transform = '', 150);
      });
    });

    // Auto-scroll reviews on desktop
    const reviewsTrack = document.getElementById('reviewsTrack');
    let scrollDirection = 1;
    let scrollSpeed = 0.3;
    let autoScroll = true;

    function autoScrollReviews() {
      if (!autoScroll || window.innerWidth < 768) return;
      
      const maxScroll = reviewsTrack.scrollWidth - reviewsTrack.clientWidth;
      let currentScroll = reviewsTrack.scrollLeft;
      
      if (currentScroll >= maxScroll - 10) scrollDirection = -1;
      else if (currentScroll <= 10) scrollDirection = 1;
      
      reviewsTrack.scrollLeft += scrollDirection * scrollSpeed;
      requestAnimationFrame(autoScrollReviews);
    }

    reviewsTrack.addEventListener('mouseenter', () => autoScroll = false);
    reviewsTrack.addEventListener('mouseleave', () => { autoScroll = true; autoScrollReviews(); });
    reviewsTrack.addEventListener('touchstart', () => autoScroll = false);

    // Start auto-scroll after a delay
    setTimeout(autoScrollReviews, 3000);

    // Keyboard navigation for menu cards
    document.querySelectorAll('.menu-card').forEach(card => {
      card.addEventListener('keydown', (e) => {
        if (e.key === 'Enter' || e.key === ' ') {
          e.preventDefault();
          card.click();
        }
      });
    });

    // Respect reduced motion
    const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)');
    if (prefersReducedMotion.matches) {
      autoScroll = false;
    }

    prefersReducedMotion.addEventListener('change', (e) => {
      if (e.matches) autoScroll = false;
    });
  </script>
</body>
</html>
Reasoning trace (268 tokens)
The user wants a website for a Korean taco food truck called "Kimchi Loco". This needs to be a mouth-watering, crave-inducing website that makes people want to visit. Let me think about what would make this compelling:

1. **Visual appeal** - High-quality food photography feel (using CSS gradients, shapes, animations)
2. **Menu showcase** - Signature items with descriptions that make you hungry
3. **Truck location/schedule** - Where to find them
4. **Brand personality** - Fun, fusion, energetic
5. **Interactive elements** - Maybe a "build your taco" or animated elements
6. **Social proof** - Reviews, ratings
7. **Order ahead / contact** - Call to action

Since I can't use real images, I'll create beautiful CSS-based food illustrations and use gradients/shapes to represent the food. I'll make it feel premium and appetizing.

Key design decisions:
- Warm, appetite-stimulating color palette (oranges, reds, yellows, greens)
- Korean + Mexican fusion aesthetic
- Smooth animations and micro-interactions
- Mobile-first responsive design
- "Click to start" for any interactive elements

Let me build this as a single HTML file with inline CSS/JS.