:root{
  --green:#3a7d5c; --green-dark:#2c5f46; --green-light:#e7f3ec;
  --orange:#e08a3c; --orange-light:#fdf1e2;
  --red:#d24d4d; --red-light:#fbe9e9;
  --bg:#f6f5f1; --card:#fff; --text:#22271f; --text-dim:#6b6f66; --border:#e7e5df;
  --radius:14px; --bar-h:48px;
  --safe-top: env(safe-area-inset-top,0px); --safe-bottom: env(safe-area-inset-bottom,0px);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
html,body{margin:0;padding:0;background:var(--bg);color:var(--text);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;}
a{color:var(--green-dark);}
img{max-width:100%;display:block;}

/* ---------- site bar (shared by every page) ---------- */
.sitebar{position:sticky;top:0;z-index:40;background:#fff;border-bottom:1px solid var(--border);
  padding-top:var(--safe-top);}
.sitebar .in{max-width:980px;margin:0 auto;height:var(--bar-h);display:flex;align-items:center;gap:6px;padding:0 12px;}
.sitebar .brand{font-weight:800;color:var(--green-dark);text-decoration:none;font-size:17px;margin-right:6px;white-space:nowrap;}
.sitebar nav{display:flex;gap:2px;flex:1;}
.sitebar nav a{padding:8px 11px;border-radius:10px;text-decoration:none;color:var(--text-dim);font-weight:600;font-size:14.5px;}
.sitebar nav a.on{background:var(--green-light);color:var(--green-dark);}
.sitebar .right{display:flex;align-items:center;gap:8px;}
.avatar{width:30px;height:30px;border-radius:50%;background:var(--green-light);object-fit:cover;flex:none;
  display:inline-flex;align-items:center;justify-content:center;font-weight:700;color:var(--green-dark);font-size:13px;overflow:hidden;}
.avatar.lg{width:72px;height:72px;font-size:28px;}
.avatar.sm{width:22px;height:22px;font-size:11px;}

/* ---------- layout ---------- */
.wrap{max-width:980px;margin:0 auto;padding:16px 14px calc(40px + var(--safe-bottom));}
.narrow{max-width:640px;}
h1{font-size:24px;margin:6px 0 4px;} h2{font-size:18px;margin:22px 0 8px;}
.dim{color:var(--text-dim);} .small{font-size:13px;}
.row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.spacer{flex:1;}

/* ---------- buttons & fields ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:none;border-radius:11px;padding:10px 16px;
  font-size:15px;font-weight:700;cursor:pointer;background:var(--green);color:#fff;text-decoration:none;font-family:inherit;}
.btn:active{background:var(--green-dark);}
.btn[disabled]{opacity:.55;cursor:default;}
.btn.outline{background:#fff;color:var(--green-dark);border:1.5px solid var(--green);}
.btn.ghost{background:var(--green-light);color:var(--green-dark);}
.btn.danger{background:#fff;color:var(--red);border:1.5px solid var(--red);}
.btn.sm{padding:6px 11px;font-size:13px;border-radius:9px;}
.btn.block{display:flex;width:100%;}
.field{margin-bottom:12px;}
.field label{display:block;font-size:13px;font-weight:700;color:var(--text-dim);margin-bottom:5px;}
input[type=text],input[type=number],textarea,select{width:100%;border:1.5px solid var(--border);border-radius:10px;
  padding:10px 12px;font-size:15px;background:#fff;font-family:inherit;color:var(--text);}
textarea{resize:vertical;min-height:70px;}
input:focus,textarea:focus,select:focus{outline:none;border-color:var(--green);}
.err{color:var(--red);font-size:13.5px;margin:6px 0;min-height:1em;}

/* ---------- cards / feed ---------- */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px;}
.rcard{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;display:flex;flex-direction:column;
  text-decoration:none;color:inherit;box-shadow:0 1px 2px rgba(0,0,0,.04);}
.rcard .cover{aspect-ratio:4/3;background:var(--green-light);object-fit:cover;width:100%;}
.rcard .nocover{aspect-ratio:4/3;background:linear-gradient(135deg,var(--green-light),var(--orange-light));display:flex;align-items:center;justify-content:center;font-size:44px;}
.rcard .body{padding:11px 12px 12px;display:flex;flex-direction:column;gap:6px;flex:1;}
.rcard .t{font-weight:800;font-size:16px;line-height:1.25;}
.rcard .by{display:flex;align-items:center;gap:7px;font-size:13px;color:var(--text-dim);}
.rcard .meta{display:flex;gap:12px;font-size:12.5px;color:var(--text-dim);margin-top:auto;align-items:center;}
.heart{background:none;border:none;cursor:pointer;font-size:15px;padding:0;color:var(--text-dim);font-family:inherit;}
.heart.on{color:var(--red);}
.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:14px;margin-bottom:12px;}
.banner{background:var(--green-light);border:1px solid #cfe5d8;border-radius:var(--radius);padding:14px;margin-bottom:14px;}
.chips{display:flex;flex-wrap:wrap;gap:6px;}
.chip{background:var(--green-light);color:var(--green-dark);border-radius:999px;padding:4px 10px;font-size:12.5px;font-weight:600;}
.empty{text-align:center;color:var(--text-dim);padding:36px 10px;}
.empty .big{font-size:42px;}

/* ---------- recipe page ---------- */
.hero{width:100%;max-height:460px;object-fit:cover;border-radius:var(--radius);background:var(--green-light);}
.ing{list-style:none;margin:0;padding:0;}
.ing li{padding:9px 2px;border-bottom:1px solid var(--border);display:flex;gap:10px;}
.ing .m{min-width:84px;color:var(--text-dim);font-weight:600;}
.steps{counter-reset:s;list-style:none;margin:0;padding:0;}
.steps li{counter-increment:s;display:flex;gap:12px;padding:10px 0;}
.steps li::before{content:counter(s);flex:none;width:26px;height:26px;border-radius:50%;background:var(--green);color:#fff;font-weight:700;
  display:flex;align-items:center;justify-content:center;font-size:13px;margin-top:1px;}
.comment{display:flex;gap:10px;padding:12px 0;border-bottom:1px solid var(--border);}
.comment .cp{width:100%;max-width:340px;border-radius:12px;margin-top:8px;}
.comment .who{font-weight:700;font-size:14px;} .comment .who a{text-decoration:none;}
.linkbtn{background:none;border:none;color:var(--text-dim);cursor:pointer;font-size:12.5px;padding:0;text-decoration:underline;font-family:inherit;}

/* ---------- form rows (share page) ---------- */
.lrow{display:flex;gap:8px;margin-bottom:8px;align-items:flex-start;}
.lrow input.m{flex:0 0 34%;} .lrow .x{flex:none;border:none;background:var(--red-light);color:var(--red);width:38px;height:42px;border-radius:10px;font-size:18px;cursor:pointer;}
.preview{max-height:260px;border-radius:12px;margin-top:8px;object-fit:cover;}

/* ---------- modal & toast ---------- */
.overlay{position:fixed;inset:0;background:rgba(20,24,18,.5);z-index:100;display:flex;align-items:flex-end;justify-content:center;}
.sheet{background:#fff;width:100%;max-width:480px;border-radius:20px 20px 0 0;padding:20px 18px calc(22px + var(--safe-bottom));max-height:92vh;overflow:auto;}
@media(min-width:600px){.overlay{align-items:center;} .sheet{border-radius:20px;}}
.toast{position:fixed;left:50%;bottom:calc(24px + var(--safe-bottom));transform:translateX(-50%) translateY(20px);background:#22271f;color:#fff;
  padding:11px 16px;border-radius:12px;font-size:14px;opacity:0;pointer-events:none;transition:.25s;z-index:200;max-width:90vw;text-align:center;}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0);}
.spin{display:inline-block;width:18px;height:18px;border:2.5px solid #cfe5d8;border-top-color:var(--green);border-radius:50%;animation:sp .8s linear infinite;}
@keyframes sp{to{transform:rotate(360deg)}}
