:root { --bg: #f3ecdf; --bg-strong: #e6d8bd; --panel: rgba(255, 251, 244, 0.9); --panel-border: rgba(74, 52, 24, 0.14); --ink: #2f2417; --muted: #6c5a43; --accent: #9b4d20; --accent-strong: #7a3912; --accent-soft: #ecd4b6; --success: #2f7a42; --shadow: 0 24px 60px rgba(56, 38, 16, 0.12); --radius: 22px; } * { box-sizing: border-box; } body { margin: 0; min-height: 100vh; color: var(--ink); background: radial-gradient(circle at top left, rgba(193, 121, 52, 0.18), transparent 28%), radial-gradient(circle at top right, rgba(80, 128, 91, 0.18), transparent 24%), linear-gradient(180deg, #f8f3e8 0%, var(--bg) 46%, #ece0c9 100%); font-family: "Trebuchet MS", "Segoe UI Variable Text", "Segoe UI", sans-serif; } code, textarea, input, button { font: inherit; } .app-shell { width: min(1180px, calc(100vw - 32px)); margin: 0 auto; padding: 36px 0 48px; } .hero { padding: 24px 4px 28px; } .eyebrow { margin: 0 0 10px; color: var(--accent); font-size: 0.82rem; font-weight: 800; letter-spacing: 0.18em; text-transform: uppercase; } .hero h1 { margin: 0; max-width: 840px; font-family: "Iowan Old Style", "Palatino Linotype", serif; font-size: clamp(2rem, 4.8vw, 3.8rem); line-height: 1; } .hero-copy { max-width: 760px; margin: 16px 0 0; color: var(--muted); font-size: 1.03rem; line-height: 1.6; } .workspace { display: grid; grid-template-columns: minmax(300px, 380px) minmax(0, 1fr); gap: 22px; } .panel { backdrop-filter: blur(12px); background: var(--panel); border: 1px solid var(--panel-border); border-radius: var(--radius); box-shadow: var(--shadow); } .input-panel, .output-panel { padding: 22px; } .panel-head h2 { margin: 0; font-family: "Iowan Old Style", "Palatino Linotype", serif; font-size: 1.7rem; } .panel-head p { margin: 8px 0 0; color: var(--muted); } .quick-add { display: grid; grid-template-columns: minmax(0, 1fr) 88px 96px; gap: 10px; margin-top: 18px; } input, textarea { width: 100%; border: 1px solid rgba(72, 48, 19, 0.14); border-radius: 16px; background: rgba(255, 255, 255, 0.85); color: var(--ink); padding: 14px 16px; outline: none; transition: border-color 160ms ease, box-shadow 160ms ease, transform 160ms ease; } textarea { min-height: 260px; margin-top: 14px; resize: vertical; line-height: 1.5; } input:focus, textarea:focus { border-color: rgba(155, 77, 32, 0.5); box-shadow: 0 0 0 4px rgba(155, 77, 32, 0.12); } button { border: 0; border-radius: 16px; padding: 13px 16px; cursor: pointer; color: var(--ink); background: rgba(92, 70, 33, 0.08); transition: transform 160ms ease, background 160ms ease, opacity 160ms ease; } button:hover { transform: translateY(-1px); background: rgba(92, 70, 33, 0.14); } button.primary { color: #fff7ef; background: linear-gradient(135deg, var(--accent), var(--accent-strong)); } .actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 14px; } .inventory-preview { margin-top: 18px; padding-top: 18px; border-top: 1px solid rgba(72, 48, 19, 0.1); } .mini-title { font-size: 0.8rem; font-weight: 800; letter-spacing: 0.12em; text-transform: uppercase; color: var(--muted); } .chips { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; } .chip { display: inline-flex; align-items: center; gap: 8px; padding: 8px 12px; border-radius: 999px; background: var(--accent-soft); color: var(--ink); font-size: 0.92rem; } .results { display: grid; gap: 14px; margin-top: 20px; } .result-card { display: grid; grid-template-columns: 72px minmax(0, 1fr); gap: 16px; padding: 16px; border-radius: 18px; background: linear-gradient(180deg, rgba(255, 250, 241, 0.92), rgba(247, 239, 225, 0.92)); border: 1px solid rgba(72, 48, 19, 0.1); } .result-card img, .result-fallback { width: 72px; height: 72px; border-radius: 18px; object-fit: cover; background: linear-gradient(135deg, #d6b58a, #a36b31); } .result-fallback { display: grid; place-items: center; color: #fff7ef; font-weight: 800; font-size: 1.2rem; } .result-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; } .result-name { margin: 0; font-size: 1.1rem; } .result-name a { color: inherit; text-decoration: none; } .result-name a:hover { text-decoration: underline; } .recipe-badge { padding: 8px 10px; border-radius: 999px; background: rgba(47, 122, 66, 0.12); color: var(--success); font-size: 0.84rem; font-weight: 700; white-space: nowrap; } .meta { margin: 8px 0 0; color: var(--muted); font-size: 0.95rem; } .ingredients { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; } .ingredient-pill { padding: 7px 10px; border-radius: 999px; background: rgba(90, 62, 25, 0.08); font-size: 0.9rem; } .empty-state { padding: 28px 20px; border-radius: 18px; text-align: center; color: var(--muted); background: rgba(250, 246, 237, 0.72); border: 1px dashed rgba(72, 48, 19, 0.18); } @media (max-width: 920px) { .workspace { grid-template-columns: 1fr; } } @media (max-width: 640px) { .app-shell { width: min(100vw - 18px, 1180px); padding-top: 20px; } .input-panel, .output-panel { padding: 16px; } .quick-add { grid-template-columns: 1fr; } .result-card { grid-template-columns: 1fr; } }