:root{--paper:#f3f8ee;--card:#fcfdf8;--ink:#22332a;--ink-soft:#5c6f62;--line:#e1ebd9;--line-strong:#cddcc1;--berry:#1e7a5e;--berry-ink:#1e7a5e;--saffron:#6e9e8a;--fresh:#3e9e63;--amber:#8ca37f;--rust:#db5b44;--fresh-bg:#def0e0;--amber-bg:#e8eee0;--rust-bg:#fbe1d9;--shadow:18px 22px 44px -30px #1e3c2c80;--blob1:#fbe6dc;--blob2:#ddefe4;--blob3:#fbefd9;--st-mint:#dcf0e1;--st-mint-ink:#2e7a54;--st-coral:#fce2da;--st-coral-ink:#c6543c;--st-sky:#e1ecf6;--st-sky-ink:#3e6e92;--serif:"Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua", Georgia, serif;--sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif}@media (prefers-color-scheme:dark){:root{--paper:#131e18;--card:#1e2a23;--ink:#eaf2e7;--ink-soft:#a6b7ab;--line:#2c3a31;--line-strong:#3b4c41;--berry:#54c79a;--berry-ink:#54c79a;--saffron:#93c6b0;--fresh:#72cb80;--amber:#a6be97;--rust:#f0876c;--fresh-bg:#1f302a;--amber-bg:#28322a;--rust-bg:#3a2621;--shadow:18px 22px 48px -30px #000000bf;--blob1:#241b18;--blob2:#152720;--blob3:#231d14;--st-mint:#243329;--st-mint-ink:#8ad1a0;--st-coral:#37241f;--st-coral-ink:#f0977c;--st-sky:#1f2c36;--st-sky-ink:#8fb6d6}}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;background:radial-gradient(760px 460px at 8% -6%, var(--blob1), transparent 62%), radial-gradient(820px 520px at 102% 2%, var(--blob2), transparent 58%), radial-gradient(680px 520px at 50% 118%, var(--blob3), transparent 60%), var(--paper);background-attachment:fixed;line-height:1.55}input,button,select,textarea{font-family:inherit}a{color:inherit}h1,h2,h3{font-family:var(--serif);text-wrap:balance;margin:0;font-weight:600}.eyebrow{font-family:var(--sans);text-transform:uppercase;letter-spacing:.18em;color:var(--berry-ink);font-size:11px;font-weight:700}.muted{color:var(--ink-soft)}.inner{max-width:1080px;margin:0 auto;padding:0 20px 90px}header.top{justify-content:space-between;align-items:center;gap:16px;max-width:1080px;margin:0 auto;padding:22px 20px;display:flex}.brand{align-items:center;gap:13px;text-decoration:none;display:flex}.mark{background:var(--berry);width:42px;height:42px;box-shadow:0 6px 16px -8px var(--berry);border-radius:12px;flex:none;place-items:center;display:grid}.brand b{font-family:var(--serif);font-size:20px;font-weight:600;line-height:1.1;display:block}.brand small{color:var(--ink-soft);font-size:12px}nav.top-nav{align-items:center;gap:22px;display:flex}nav.top-nav a{color:var(--ink-soft);font-size:14px;font-weight:600;text-decoration:none;transition:color .15s}nav.top-nav a:hover{color:var(--ink)}nav.top-nav a.active{color:var(--berry-ink)}.avatar-btn{cursor:pointer;color:#fff;background:var(--berry);border:none;border-radius:50%;place-items:center;width:34px;height:34px;font-size:14px;font-weight:700;display:grid}@media (width<=640px){nav.top-nav a.navlink{display:none}}.cook-btn{background:var(--berry);color:#fff;cursor:pointer;box-shadow:0 12px 24px -12px var(--berry);border:none;border-radius:999px;align-items:center;gap:9px;padding:12px 22px;font-size:14px;font-weight:600;transition:transform .18s cubic-bezier(.34,1.56,.64,1),box-shadow .18s,opacity .15s;display:inline-flex}.cook-btn:hover{box-shadow:0 18px 30px -12px var(--berry);transform:translateY(-3px)scale(1.03)}.cook-btn:active{transform:translateY(-1px)scale(.99)}.cook-btn:disabled{opacity:.55;cursor:default;box-shadow:none;transform:none}.cook-btn svg{width:16px;height:16px}.ghost{color:var(--ink-soft);border:1.5px solid var(--line-strong);cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:8px;padding:11px 18px;font-size:14px;font-weight:600;text-decoration:none;transition:transform .18s cubic-bezier(.34,1.56,.64,1),border-color .18s,color .18s;display:inline-flex}.ghost:hover{border-color:var(--berry);color:var(--berry-ink);transform:translateY(-3px)scale(1.03)}.ghost svg{width:15px;height:15px}.link-btn{color:var(--berry-ink);cursor:pointer;background:0 0;border:none;padding:0;font-size:14px;font-weight:600}.danger{color:var(--rust);border-color:color-mix(in srgb, var(--rust) 40%, transparent)}.danger:hover{border-color:var(--rust);color:var(--rust)}.stamp{letter-spacing:.01em;font-variant-numeric:tabular-nums;border:1px solid #0000;border-radius:999px;align-items:center;gap:7px;padding:5px 11px;font-size:12px;font-weight:700;display:inline-flex}.stamp svg{width:13px;height:13px}.s-fresh{color:var(--fresh);background:var(--fresh-bg);border-color:color-mix(in srgb, var(--fresh) 26%, transparent)}.s-amber{color:var(--amber);background:var(--amber-bg);border-color:color-mix(in srgb, var(--amber) 26%, transparent)}.s-rust{color:var(--rust);background:var(--rust-bg);border-color:color-mix(in srgb, var(--rust) 30%, transparent)}.s-new{color:var(--st-sky-ink);background:var(--st-sky);border-color:color-mix(in srgb, var(--st-sky-ink) 24%, transparent)}.tags{flex-wrap:wrap;gap:7px;display:flex}.tag{letter-spacing:.01em;border-radius:999px;padding:4px 11px;font-size:11px;font-weight:700}.tag:nth-child(3n+1){background:var(--st-mint);color:var(--st-mint-ink)}.tag:nth-child(3n+2){background:var(--st-coral);color:var(--st-coral-ink)}.tag:nth-child(3n+3){background:var(--st-sky);color:var(--st-sky-ink)}.hero{margin-top:6px}.hero-head{justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:20px;display:flex}.hero-head h1{letter-spacing:-.01em;font-size:clamp(28px,5vw,44px);line-height:1.05}.hero-head h1 em{color:var(--berry-ink);font-style:italic}.hero-head p{color:var(--ink-soft);max-width:52ch;margin:10px 0 0;font-size:15px}.season{color:var(--ink-soft);text-align:right;border-left:2px solid var(--line-strong);flex:none;padding-left:14px;font-size:12px}.season b{font-family:var(--serif);color:var(--ink);font-size:15px;font-weight:600;display:block}@media (width<=640px){.season{display:none}}.redis{grid-template-columns:1.35fr 1fr;gap:18px;display:grid}@media (width<=860px){.redis{grid-template-columns:1fr}}.feature{background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow);color:inherit;border-radius:20px;flex-direction:column;text-decoration:none;display:flex;overflow:hidden}.feature .photo{height:230px;position:relative}.stack{flex-direction:column;gap:14px;display:flex}.mini{background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow);color:inherit;border-radius:16px;grid-template-columns:96px 1fr;text-decoration:none;transition:transform .16s;display:grid;overflow:hidden}.mini:hover{transform:translateY(-3px)}.mini .photo{height:100%;min-height:96px}.pad{padding:18px 20px 20px}.feature .pad{padding:22px 24px 24px}.mini .pad{padding:13px 16px}.kicker{flex-wrap:wrap;align-items:center;gap:9px;margin-bottom:9px;display:flex}.recipe-title{font-family:var(--serif);letter-spacing:-.005em;font-weight:600}.feature .recipe-title{font-size:25px;line-height:1.12}.mini .recipe-title{font-size:16px;line-height:1.15}.meta{color:var(--ink-soft);flex-wrap:wrap;align-items:center;gap:8px;margin-top:6px;font-size:13px;display:flex}.dot{background:var(--line-strong);border-radius:50%;width:3px;height:3px}.note{font-family:var(--serif);color:var(--ink-soft);border-left:2px solid var(--saffron);margin-top:14px;padding-left:13px;font-size:14px;font-style:italic}.feature-actions{flex-wrap:wrap;gap:10px;margin-top:18px;display:flex}.sec{margin-top:60px}.sec-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:20px;padding-bottom:14px;display:flex}.sec-head h2{-webkit-text-decoration:underline wavy;text-decoration:underline wavy;-webkit-text-decoration-color:color-mix(in srgb, var(--saffron) 85%, transparent);text-decoration-color:color-mix(in srgb, var(--saffron) 85%, transparent);text-underline-offset:7px;font-size:24px;text-decoration-thickness:2px}.filters{flex-wrap:wrap;gap:8px;display:flex}.chip{color:var(--ink-soft);border:1px solid var(--line-strong);cursor:pointer;background:0 0;border-radius:999px;padding:6px 13px;font-size:12.5px;font-weight:600;transition:transform .15s}.chip:hover{transform:translateY(-2px)}.chip.on{background:var(--berry);color:#fff;border-color:var(--berry)}.grid{grid-template-columns:repeat(3,1fr);gap:20px;display:grid}@media (width<=860px){.grid{grid-template-columns:repeat(2,1fr)}}@media (width<=520px){.grid{grid-template-columns:1fr}}.card{background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow);cursor:pointer;color:inherit;border-radius:20px;text-decoration:none;transition:transform .2s cubic-bezier(.34,1.4,.64,1),box-shadow .2s;display:block;overflow:hidden}.card:hover{transform:translateY(-7px)rotate(-.7deg);box-shadow:22px 28px 50px -30px #1e3c2c99}.card .photo{height:150px;position:relative}.card .pad{padding:15px 17px 18px}.card .recipe-title{font-size:18px;line-height:1.15}.heart{cursor:pointer;background:#ffffffdb;border:none;border-radius:50%;place-items:center;width:30px;height:30px;transition:transform .25s cubic-bezier(.34,1.7,.64,1);display:grid;position:absolute;top:11px;right:11px}.card:hover .heart{transform:rotate(-10deg)scale(1.12)}.heart svg{width:16px;height:16px}.photo{position:relative}.photo>img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.photo>svg{width:100%;height:100%;display:block;position:absolute;inset:0}.detail{background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:22px;overflow:hidden}.detail .hero-photo{aspect-ratio:2;background:#dfe6d6;width:100%;position:relative}.detail .hero-photo img,.detail .hero-photo svg{object-fit:cover;width:100%;height:100%;display:block;position:absolute;inset:0}.photo-tag{color:#fff;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#121c168c;border-radius:999px;align-items:center;gap:7px;padding:6px 11px;font-size:12px;font-weight:600;display:flex;position:absolute;bottom:14px;left:16px}.photo-tag svg{width:13px;height:13px}.detail-body{padding:26px 30px 30px}@media (width<=600px){.detail-body{padding:22px}}.d-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.d-head h3{font-size:28px;line-height:1.12}.d-sub{color:var(--ink-soft);flex-wrap:wrap;align-items:center;gap:8px;margin-top:7px;font-size:14px;display:flex}.d-actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.stats{border-top:1px solid var(--line);border-bottom:1px solid var(--line);flex-wrap:wrap;gap:30px;margin:22px 0;padding:16px 0;display:flex}.stat b{font-family:var(--serif);font-variant-numeric:tabular-nums;font-size:20px;font-weight:600;display:block}.stat span{text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft);font-size:11px;font-weight:700}.cols{grid-template-columns:.82fr 1.18fr;gap:36px;display:grid}@media (width<=640px){.cols{grid-template-columns:1fr;gap:26px}}.cols h4{font-family:var(--sans);text-transform:uppercase;letter-spacing:.1em;color:var(--berry-ink);margin:0 0 13px;font-size:11px;font-weight:700}.cols h4 .optional{font-family:var(--sans);text-transform:none;letter-spacing:0;color:var(--ink-soft);background:color-mix(in srgb, var(--line) 55%, transparent);vertical-align:middle;border-radius:999px;margin-left:8px;padding:2px 8px;font-size:10.5px;font-weight:700}.ingredients{flex-direction:column;gap:9px;margin:0;padding:0;list-style:none;display:flex}.ingredients li{border-bottom:1px dotted var(--line-strong);justify-content:space-between;gap:12px;padding-bottom:8px;font-size:14px;display:flex}.ingredients li em{color:var(--ink-soft);font-variant-numeric:tabular-nums;white-space:nowrap;font-style:normal}.loose{font-family:var(--serif);color:var(--ink-soft);white-space:pre-wrap;margin:0;font-size:15px;line-height:1.6}.history{border-top:1px solid var(--line);margin-top:26px;padding-top:20px}.history h4{font-family:var(--sans);text-transform:uppercase;letter-spacing:.1em;color:var(--ink-soft);margin:0;font-size:11px;font-weight:700}.timeline{flex-wrap:wrap;gap:9px;margin-top:13px;display:flex}.tl{color:var(--ink-soft);background:var(--paper);border:1px solid var(--line);font-variant-numeric:tabular-nums;border-radius:999px;align-items:center;gap:8px;padding:6px 12px;font-size:12.5px;display:inline-flex}.tl b{color:var(--ink);font-weight:600}.tl.first{border-color:color-mix(in srgb, var(--fresh) 40%, transparent);background:var(--fresh-bg)}.panel{background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:22px;padding:30px}@media (width<=600px){.panel{padding:22px}}.form-grid{grid-template-columns:1fr 1fr;align-items:start;gap:24px;display:grid}@media (width<=720px){.form-grid{grid-template-columns:1fr}}.field{margin-bottom:16px}.field label{letter-spacing:.03em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:7px;font-size:12px;font-weight:700;display:block}.field label .hint{text-transform:none;letter-spacing:0;color:var(--st-mint-ink);background:var(--st-mint);border-radius:999px;margin-left:6px;padding:2px 8px;font-size:10.5px;font-weight:600}.inp{background:var(--paper);border:1px solid var(--line-strong);width:100%;color:var(--ink);border-radius:10px;padding:11px 13px;font-size:14px}.inp:focus{border-color:var(--berry);box-shadow:0 0 0 3px color-mix(in srgb, var(--berry) 18%, transparent);outline:none}textarea.inp{resize:vertical;min-height:90px;line-height:1.5}.row2{grid-template-columns:1fr 1fr;gap:12px;display:grid}.dropzone{border:2px dashed var(--line-strong);text-align:center;min-height:240px;color:var(--ink-soft);background:radial-gradient(circle at 30% 30%, color-mix(in srgb, var(--saffron) 12%, transparent), transparent 60%), var(--paper);cursor:pointer;border-radius:16px;flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:20px;display:flex;position:relative;overflow:hidden}.dropzone svg{width:40px;height:40px;color:var(--saffron)}.dropzone b{font-family:var(--serif);color:var(--ink);font-size:17px;font-weight:600}.dropzone span{max-width:26ch;font-size:12.5px}.dropzone img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.dropzone .change{color:#fff;background:#121c1699;border-radius:999px;padding:6px 12px;font-size:12px;font-weight:600;position:absolute;bottom:12px}.auth-wrap{justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.auth-card{background:var(--card);border:1px solid var(--line);width:100%;max-width:400px;box-shadow:var(--shadow);border-radius:22px;padding:34px 30px}.auth-brand{align-items:center;gap:12px;margin-bottom:22px;display:flex}.auth-card h1{margin-bottom:4px;font-size:24px}.auth-card .sub{color:var(--ink-soft);margin-bottom:22px;font-size:14px}.auth-card .cook-btn{justify-content:center;width:100%;margin-top:6px}.auth-alt{text-align:center;color:var(--ink-soft);margin-top:18px;font-size:14px}.err{background:var(--rust-bg);color:var(--rust);border:1px solid color-mix(in srgb, var(--rust) 30%, transparent);border-radius:10px;margin-bottom:16px;padding:10px 13px;font-size:13.5px;font-weight:600}.back{color:var(--ink-soft);align-items:center;gap:6px;margin-bottom:18px;font-size:14px;font-weight:600;text-decoration:none;display:inline-flex}.back:hover{color:var(--ink)}.empty{text-align:center;color:var(--ink-soft);padding:60px 20px}.empty b{font-family:var(--serif);color:var(--ink);margin-bottom:8px;font-size:20px;display:block}.spinner{border:3px solid var(--line);border-top-color:var(--berry);border-radius:50%;width:34px;height:34px;animation:.8s linear infinite spin}.center{place-items:center;min-height:60vh;display:grid}@keyframes spin{to{transform:rotate(360deg)}}.toast{background:var(--ink);color:var(--paper);box-shadow:var(--shadow);z-index:50;border-radius:999px;padding:12px 20px;font-size:14px;font-weight:600;animation:.25s pop;position:fixed;bottom:26px;left:50%;transform:translate(-50%)}@keyframes pop{0%{opacity:0;transform:translate(-50%,8px)}}.rise{opacity:0;animation:.6s cubic-bezier(.2,.7,.2,1) forwards rise;transform:translateY(14px)}.d1{animation-delay:40ms}.d2{animation-delay:.12s}.d3{animation-delay:.2s}.d4{animation-delay:.28s}@keyframes rise{to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.rise{opacity:1;animation:none;transform:none}.card,.cook-btn,.ghost,.mini,.chip,.heart{transition:none}}a:focus-visible,button:focus-visible,.chip:focus-visible,.inp:focus-visible{outline:2px solid var(--berry);outline-offset:2px}
