/* Sam's article — Organize a Kitchen You Actually Cook In
 * Format variation: HotTakes runs BEFORE the Affiliate card (the verdicts set up the one purchase).
 * Crumbs, Hero, Lede, WhatYouNeed (the audit), Zones (4), HotTakes, Affiliate, Signoff.
 * Affiliate: /go/sam-kitchen-organizers, rel=sponsored nofollow, disclosure directly below.
 * Exactly one affiliate anchor on the page, in the Affiliate card only.
 */

const SamSays = ({ children }) => (
  <div className="sa-step-says">
    <span className="who">- Sam</span>
    <p>{children}</p>
  </div>
);

const heroImage = "cover.jpg";
const imgZone = "sam-fig-zone.jpg";
const imgDrawer = "sam-fig-drawer.jpg";

const Crumbs = () => (
  <nav className="sa-crumbs" aria-label="Breadcrumb">
    <div className="l">
      <a href="/">Home</a>
      <span>/</span>
      <a href="/en/contributors/sam/">Sam</a>
      <span>/</span>
      <span>Organize</span>
      <span>/</span>
      <span style={{ color: "#EFE5CF" }}>A kitchen you actually cook in</span>
    </div>
    <div className="r">
      <span>Issue 08 | Summer '26</span>
      <span className="by">written by Sam</span>
    </div>
  </nav>
);

const STATS = [
  { stat: "8", note: "things most people reach for every single time they cook" },
  { stat: "1", note: "empty bay you leave in every drawer — the maintenance budget" },
  { stat: "$0", note: "what the method costs before you buy a single divider" }
];

const Hero = () => (
  <section className="sa-hero">
    <div className="img" style={{ backgroundImage: `url('${heroImage}')` }} />
    <div className="sa-hero-wrap">
      <div>
        <div className="sa-hero-kicker">
          <span>Sam</span>
          <span className="dot">*</span>
          <span>Kitchen + Organize</span>
          <span className="dot">*</span>
          <span className="sig">written by Sam</span>
        </div>
        <h1>
          Your kitchen isn't disorganized. It's organized for <em>a kitchen you don't have.</em>
        </h1>
        <p className="standfirst">
          the organizing industry sells you containers. a container does not know what you cook.
        </p>
      </div>
      <div className="sa-hero-side">
        {STATS.map((s) => (
          <div className="row" key={s.stat} style={{ gap: 18, alignItems: "baseline" }}>
            <span style={{ textTransform: "none", letterSpacing: "0.03em", lineHeight: 1.45, maxWidth: "26ch" }}>{s.note}</span>
            <span className="v" style={{ flexShrink: 0, whiteSpace: "nowrap" }}>{s.stat}</span>
          </div>
        ))}
        <div className="row">
          <span>Updated</span>
          <span className="v">Aug '26</span>
        </div>
      </div>
    </div>
    <div className="sa-hero-scribble" style={{ top: "16%", bottom: "auto", right: "5%" }}>
      the salt goes <u>next to the stove.</u>
      <svg viewBox="0 0 60 30" fill="none">
        <path d="M2 22 C 12 8, 28 4, 56 12" stroke="currentColor" strokeWidth="2" strokeLinecap="round" />
        <path d="M48 6 L 56 12 L 50 20" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" fill="none" />
      </svg>
    </div>
  </section>
);

const Lede = () => (
  <section className="sa-lede">
    <div className="sa-lede-wrap">
      <aside className="sa-lede-side">
        <div className="marker">Four zones</div>
        <ul>
          <li>The audit</li>
          <li>Beside the stove</li>
          <li>Sink to stove</li>
          <li>How often, not what</li>
          <li>One verb per drawer</li>
          <li>Worth it / not worth it</li>
        </ul>
      </aside>

      <div className="sa-lede-body">
        <p className="dropcap">
          i once spent a saturday putting every baking item in one cabinet. flour, sugar, the good vanilla, three tins, a sifter i have used once, and an attachment for a stand mixer i do not own. it looked incredible. i took a photo of it.
        </p>
        <p>
          then i cooked dinner, which is a thing i do most nights, and discovered that the salt was now in the baking cabinet, on the other side of the room, behind a sifter.
        </p>
        <div className="sa-pullquote">
          <p>
            you don't shop in your kitchen. you cook in it — mostly the same eight things, mostly in the same forty minutes, mostly standing in the same square metre of floor.
          </p>
        </div>
        <p>
          so here's the alternative. four zones, sorted by how often you reach for something rather than by what shelf it belongs to philosophically. it takes an afternoon, it costs almost nothing, and the only thing you might buy is at the end.
        </p>
      </div>

      <aside className="sa-margin">
        <span className="lab">Sam's note</span>
        <h4>Categories photograph well</h4>
        <p>
          that's why we sort by them. it's also how a shop is laid out — and you are not shopping in there.
        </p>
      </aside>
    </div>
  </section>
);

const WhatYouNeed = () => (
  <section className="sa-need">
    <div className="sa-need-wrap">
      <div>
        <div className="sa-need-head">00 / Before you buy a single container</div>
        <h2>
          Stand where you stand <em>when you cook</em>
        </h2>
        <p className="body">
          don't tidy anything. don't move anything. the whole audit is four notes on a piece of paper, made from exactly the spot your feet already go.
        </p>
        <p className="body">
          the point is to find out what your kitchen is actually for, which is usually about eight objects and one square metre of floor — not what a cabinet layout says it's for.
        </p>

        <div className="sa-need-dont">
          <span className="lab">Do not buy</span>
          <ul>
            <li>
              Anything. Yet.
              <span className="why">containers bought before the audit organize the kitchen you imagined. buy the container to fit the decision, never the decision to fit the container.</span>
            </li>
          </ul>
        </div>
      </div>

      <ul className="sa-need-list">
        <li>
          <span className="item">
            what you reach for every single time
            <span className="why">for most people: salt, a fat, a board, a knife, one pan, one spoon. that list gets the prime real estate.</span>
          </span>
          <span className="qty">01</span>
        </li>
        <li>
          <span className="item">
            what's on the counter that you haven't used this week
            <span className="why">that's the list that's currently stealing the real estate.</span>
          </span>
          <span className="qty">02</span>
        </li>
        <li>
          <span className="item">
            what you moved today to reach something else
            <span className="why">anything you move to reach another thing is in the wrong place. permanently. by definition.</span>
          </span>
          <span className="qty">03</span>
        </li>
        <li>
          <span className="item">
            what's in the kitchen that isn't cooking
            <span className="why">vases, batteries, the drawer. we'll come back to the drawer.</span>
          </span>
          <span className="qty">04</span>
        </li>
      </ul>
    </div>
  </section>
);

const ZONES = [
  {
    n: "01",
    phase: "Zone one | beside the heat",
    title: "The two feet beside the stove. Kept empty.",
    flip: false,
    body: (
      <>
        <p>
          the counter immediately next to the burners is the most valuable surface in the house, and almost everybody has a knife block, a fruit bowl and a stack of mail sitting on it.
        </p>
        <p>
          clear it. permanently. that's landing space — for the hot pan, the plate, the thing you just took out of the oven with both hands full. when it's occupied you end up putting hot cookware somewhere it shouldn't go, which is how counters get scorched and how people get burned.
        </p>
        <p>
          the only things allowed within arm's reach of the heat: salt, a cooking fat, and the two or three tools you use <em>at</em> the heat. everything else is a passenger.
        </p>
      </>
    ),
    warn: { lab: "This is a safety zone, not a style zone", text: "landing space is where the hot pan goes. a counter with nowhere to put a hot pan produces improvisation, and improvisation with a hot pan is how people get hurt." },
    fig: { img: imgZone, tag: "Fig 01 | Landing space", cap: "empty on purpose. this is the bit of counter that catches everything coming off the heat." },
    says: "the salt goes next to the stove. that's most of the article."
  },
  {
    n: "02",
    phase: "Zone two | the run",
    title: "The run between the sink and the stove.",
    wide: true,
    body: (
      <>
        <p>
          the work triangle is a lovely idea from an era of enormous kitchens. in a real one, prep happens on whatever counter sits between where you wash things and where you cook them. that's the run. protect it.
        </p>
        <p>
          on it: a board, a knife within reach, a bowl for scraps. off it: the toaster, the kettle, the coffee setup, the appliance you use on sundays. those go to the far end, together, because they're a separate job that doesn't need to happen mid-prep.
        </p>
        <p>
          if there's no counter at all between the sink and the stove — plenty of kitchens don't have one — then a board that sits over the sink is the single best thing you can buy for that room, and it costs about the same as lunch.
        </p>
      </>
    ),
    tip: { lab: "no counter? no problem", text: "a board that sits across the sink turns the sink into the prep run. cheapest useful thing in a small kitchen." }
  },
  {
    n: "03",
    phase: "Zone three | the method",
    title: "Sort by how often. Not by what it is.",
    wide: true,
    body: (
      <>
        <p>
          this is the actual method, and it's the part that survives contact with a wednesday.
        </p>
        <p>
          <strong>daily</strong> lives between hip and shoulder height, reachable with one hand, no bending and no stretch. that band is small. it should hold the eight things.
        </p>
        <p>
          <strong>weekly</strong> lives directly above and below that band. bending is allowed. a step stool is not.
        </p>
        <p>
          <strong>a few times a year</strong> goes to the top shelf, the back of the deep corner, or — and i mean this — out of the kitchen entirely. the roasting pan you use twice a year doesn't need to live in the room where you cook every day. put it in a closet. the kitchen is not a museum of your ambitions.
        </p>
      </>
    ),
    tip: { lab: "the test", text: "cook something normal and count how many times you bend, stretch or move an object to get another object. more than twice means one of the eight things is in the wrong band." }
  },
  {
    n: "04",
    phase: "Zone four | drawers",
    title: "One verb per drawer, and leave a bay empty.",
    flip: true,
    body: (
      <>
        <p>
          drawers fail because they hold nouns from four different jobs. give each one a verb instead.
        </p>
        <p>
          <strong>cook</strong> — the tools you use standing at the stove, in the drawer next to the stove. it holds fewer things than you think; six good tools beat sixteen mediocre ones and you'll notice inside a week. <strong>eat</strong> — cutlery and serving spoons, near the table or near the dishwasher, whichever you unload from. <strong>fix</strong> — yes, the drawer. everybody has one, it's fine, i'm not going to pretend otherwise. what's not fine is a drawer with no dividers, because then it's a bin and you stop being able to find the tape you know is in there.
        </p>
        <p>
          and then the rule almost nobody follows: leave one bay empty in every drawer. a system with no slack fails the first time you bring something new home, because there's nowhere for it to go except the counter. the empty bay isn't wasted space. it's the maintenance budget.
        </p>
      </>
    ),
    fig: { img: imgDrawer, tag: "Fig 02 | One verb", cap: "dividers stop things migrating — and one bay stays empty, on purpose, forever." },
    says: "a drawer with no dividers isn't a drawer. it's a bin with a handle."
  }
];

const Zone = ({ data }) => (
  <article
    className={`sa-step ${data.flip ? "flip" : ""}`}
    style={data.wide ? { gridTemplateColumns: "1fr", maxWidth: 880 } : undefined}
  >
    <div className="sa-step-text">
      <div className="sa-step-meta">
        <span className="sa-step-num">{data.n}</span>
        <span className="sa-step-phase">{data.phase}</span>
      </div>
      <h3>{data.title}</h3>
      <div className="sa-step-body">{data.body}</div>
      {data.tip && (
        <div className="sa-step-tip">
          <span className="lab">{data.tip.lab}</span>
          <p>{data.tip.text}</p>
        </div>
      )}
      {data.warn && (
        <div className="sa-step-warn">
          <span className="lab">{data.warn.lab}</span>
          <p>{data.warn.text}</p>
        </div>
      )}
    </div>
    {data.fig && (
      <figure className="sa-step-fig">
        <div className="frame">
          <span className="tag">{data.fig.tag}</span>
          <img src={data.fig.img} alt="" loading="lazy" />
        </div>
        <figcaption>{data.fig.cap}</figcaption>
        {data.says && <SamSays>{data.says}</SamSays>}
      </figure>
    )}
  </article>
);

const Zones = () => (
  <section className="sa-steps">
    <div className="sa-steps-wrap">
      <header className="sa-steps-head">
        <h2>
          Four zones, <em>one afternoon</em>
        </h2>
        <span className="count">04 ZONES | HEAT, RUN, FREQUENCY, DRAWERS</span>
      </header>
      {ZONES.map((z) => (
        <Zone key={z.n} data={z} />
      ))}
    </div>
  </section>
);

const HotTakes = () => (
  <section className="sa-hottakes">
    <div className="sa-hottakes-wrap">
      <header className="sa-hottakes-head">
        <span className="lab">Sam's verdicts</span>
        <h2>
          Worth it, <em>and not.</em>
        </h2>
      </header>
      <div className="sa-hottakes-list">
        <div className="sa-take">
          <div className="num">i.</div>
          <h3>Worth it: adjustable drawer dividers</h3>
          <p>
            the cheapest thing on this list and the only one that stops the whole system sliding back inside a fortnight.
          </p>
        </div>
        <div className="sa-take">
          <div className="num">ii.</div>
          <h3>Worth it: a turntable in a deep corner cabinet</h3>
          <p>
            deep corners are where food goes to expire quietly. a turntable turns a cave into a shelf.
          </p>
        </div>
        <div className="sa-take">
          <div className="num">iii.</div>
          <h3>Worth it: one hook, in the right place</h3>
          <p>
            right place is wherever you already put that thing down. not wherever the wall looked empty.
          </p>
        </div>
        <div className="sa-take">
          <div className="num">iv.</div>
          <h3>Not worth it: decanting things you don't cook from</h3>
          <p>
            flour and sugar, genuinely useful — you scoop from them. pasta in a jar you have to funnel back out of is a photograph, not a system.
          </p>
        </div>
        <div className="sa-take">
          <div className="num">v.</div>
          <h3>Not worth it: over-the-door racks that stop the door closing</h3>
          <p>
            you will hear it every day for a year.
          </p>
        </div>
      </div>
    </div>
  </section>
);

const Affiliate = () => (
  <section
    style={{
      background: "var(--sa-bg-soft)",
      borderTop: "1px solid var(--sa-rule)",
      borderBottom: "1px solid var(--sa-rule)",
      padding: "56px 24px"
    }}
  >
    <div
      style={{
        maxWidth: 780,
        margin: "0 auto",
        background: "var(--sa-bg-card)",
        border: "1px solid var(--sa-rule)",
        borderLeft: "3px solid var(--sa-marker)",
        borderRadius: 4,
        padding: "32px 34px"
      }}
    >
      <span
        style={{
          fontFamily: "'JetBrains Mono', monospace",
          fontSize: 10,
          letterSpacing: "0.3em",
          textTransform: "uppercase",
          color: "var(--sa-marker)"
        }}
      >
        The one purchase, after the audit
      </span>
      <p
        style={{
          fontFamily: "'Playfair Display', serif",
          fontSize: 23,
          lineHeight: 1.35,
          color: "var(--sa-cream)",
          margin: "14px 0 18px"
        }}
      >
        measure the inside of the drawer first, then buy adjustable dividers that spring-fit the width — the sprung ones stop things migrating, which is the entire difference between an organized drawer and a drawer that was organized once.
      </p>
      <a
        href="/go/sam-kitchen-organizers"
        rel="sponsored nofollow"
        style={{
          display: "inline-block",
          background: "var(--sa-marker)",
          color: "#100E0B",
          fontFamily: "'DM Sans', sans-serif",
          fontWeight: 700,
          fontSize: 14,
          letterSpacing: "0.02em",
          textDecoration: "none",
          padding: "12px 26px",
          borderRadius: 999
        }}
      >
        kitchen cabinet organizers and drawer dividers →
      </a>
      <p
        style={{
          fontFamily: "'DM Sans', sans-serif",
          fontSize: 12,
          lineHeight: 1.5,
          color: "var(--sa-mute)",
          margin: "18px 0 0"
        }}
      >
        some links on this page are affiliate links — if you buy through one, we earn a commission at no extra cost to you.
      </p>
    </div>
  </section>
);

const Signoff = () => (
  <section className="sa-signoff">
    <div className="sa-signoff-wrap">
      <div>
        <h2>
          Not a kitchen that photographs well. <em>A kitchen that cooks on a Wednesday.</em>
        </h2>
        <p>
          the goal is being able to make something ordinary without opening four doors. the salt goes next to the stove. that's the article, honestly.
        </p>
        <div className="sig">— sam</div>
        <div className="ctas" style={{ marginTop: 28 }}>
          <a href="/en/contributors/sam/" className="btn primary">
            More from Sam
          </a>
          <a href="/contact/" className="btn ghost">
            Ask Sam a question
          </a>
        </div>
      </div>
      <div className="sa-readnext">
        <span className="lab">Read next</span>
        <a href="/en/contributors/sam/gallery-wall-laser-level/">
          <span>Hang a gallery wall straight the first time</span>
          <span className="m">SAM</span>
        </a>
        <a href="/en/contributors/sam/floating-shelves-look-hard-theyre-not/">
          <span>Floating shelves look hard. They're not.</span>
          <span className="m">SAM</span>
        </a>
        <a href="/en/contributors/sam/how-to-refinish-a-thrifted-chair/">
          <span>How to refinish a thrifted chair</span>
          <span className="m">SAM</span>
        </a>
        <a href="/en/contributors/sam/">
          <span>All of Sam's guides</span>
          <span className="m">PROFILE</span>
        </a>
      </div>
    </div>
  </section>
);

const Article = () => (
  <div className="sa">
    <Crumbs />
    <Hero />
    <Lede />
    <WhatYouNeed />
    <Zones />
    <HotTakes />
    <Affiliate />
    <Signoff />
  </div>
);

ReactDOM.createRoot(document.getElementById("root")).render(<Article />);
