:root{--g:#0f8a3c;--g2:#0b6e30;--gl:#e6f4ea;--ink:#16211b;--mut:#5d6b63;--bd:#e4e9e6;--bg:#f4f6f5;--card:#fff;--r:14px}
*{box-sizing:border-box}body{margin:0;font-family:Inter,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;color:var(--ink);background:var(--bg)}
a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}
.top{background:#fff;border-bottom:1px solid var(--bd);position:sticky;top:0;z-index:20}
.top .in{max-width:1920px;margin:auto;display:flex;align-items:center;gap:28px;padding:12px 20px}
.brand{display:flex;align-items:center;gap:10px;padding-right:18px;border-right:1px solid var(--bd)}
.brand b{font-size:24px;letter-spacing:-.5px;display:block;line-height:1}.brand small{color:var(--g);font-size:10px;font-weight:600;letter-spacing:.5px;text-transform:uppercase}
.nav{display:flex;gap:22px;font-size:14px;color:var(--mut)}.nav a.on{color:var(--g);font-weight:600;border-bottom:2px solid var(--g);padding-bottom:4px}
.search{margin-left:auto;display:flex;align-items:center;gap:8px;background:var(--bg);border:1px solid var(--bd);border-radius:10px;padding:8px 12px;min-width:260px}
.search input{border:0;background:none;outline:none;width:100%;font-size:14px}
.btn{display:inline-flex;align-items:center;gap:8px;justify-content:center;border:0;border-radius:9px;padding:10px 16px;font-weight:600;font-size:14px;cursor:pointer;background:var(--g);color:#fff}
.btn:hover{background:var(--g2)}.btn.ghost{background:#fff;color:var(--ink);border:1px solid var(--bd)}.btn.red{background:#c53030}.btn.sm{padding:6px 10px;font-size:13px}
.wrap{max-width:1920px;margin:20px auto;padding:0 20px}
.head{display:flex;gap:20px;align-items:flex-start;flex-wrap:wrap;margin-bottom:18px}
.head h1{font-size:34px;margin:4px 0 6px;letter-spacing:-.6px}.head p{margin:0;color:var(--mut);font-size:15px}
.stats{margin-left:auto;display:flex;gap:12px}
.stat{background:#fff;border:1px solid var(--bd);border-radius:12px;padding:12px 16px;min-width:116px;font-size:12px;color:var(--mut)}
.stat b{display:block;font-size:22px;color:var(--ink);margin-top:4px}.stat.hi{background:#bfe5c9;border-color:#a8dab6}
.bar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:18px}
.chip{background:#eef1ef;border:1px solid var(--bd);border-radius:9px;padding:8px 14px;font-size:14px;cursor:pointer}
.chip.on{background:var(--g);color:#fff;border-color:var(--g)}.bar .btn{margin-left:auto}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:18px}
.card{background:var(--card);border:1px solid var(--bd);border-radius:var(--r);padding:10px;box-shadow:0 2px 10px rgba(0,0,0,.04);display:flex;flex-direction:column}
.ph{position:relative;border-radius:10px;overflow:hidden;aspect-ratio:5/3;background:#e9efe9;cursor:pointer}
.ph img{width:100%;height:100%;object-fit:cover;display:block}
.badge{position:absolute;top:8px;right:8px;background:rgba(214,240,221,.95);color:#174d2a;border-radius:8px;padding:4px 8px;font-size:11px;font-weight:600;display:flex;gap:5px;align-items:center;line-height:1.15}
.badge i{width:16px;height:16px;border-radius:50%;background:var(--g);color:#fff;display:grid;place-items:center;font-style:normal;font-size:10px}
.card h3{font-size:16px;margin:12px 2px 6px}.meta{font-size:13px;color:var(--mut);margin:3px 2px;display:flex;gap:6px;align-items:center}
.price{color:var(--g);font-weight:800;font-size:18px;margin:8px 2px 10px}
.card .btn{width:100%;margin-top:auto}.acts{display:flex;gap:8px;margin-top:8px}.acts .btn{flex:1}
.empty{text-align:center;padding:60px 20px;color:var(--mut);background:#fff;border:1px dashed var(--bd);border-radius:var(--r)}
.foot{text-align:center;color:var(--mut);font-size:13px;padding:30px 0}
/* admin */
.shell{max-width:1920px;margin:20px auto;padding:0 20px;display:grid;grid-template-columns:230px 1fr;gap:20px}
.side{background:#fff;border:1px solid var(--bd);border-radius:var(--r);padding:20px 14px;height:max-content;position:sticky;top:90px}
.side h6{margin:0 8px 14px;color:var(--mut);font-size:12px;letter-spacing:1px}
.side a{display:flex;gap:10px;padding:9px 10px;border-radius:9px;font-size:14px;margin-bottom:3px}.side a.on{background:var(--g);color:#fff}.side a:hover:not(.on){background:var(--bg)}
.panel{background:#fff;border:1px solid var(--bd);border-radius:var(--r);padding:24px}
.form{display:grid;grid-template-columns:1fr 1fr;gap:14px}.form .full{grid-column:1/-1}
.form label{font-size:13px;font-weight:600;display:flex;flex-direction:column;gap:6px}
.form input,.form select,.form textarea{border:1px solid var(--bd);border-radius:9px;padding:10px;font-weight:400;background:#fff}
.form .chk{flex-direction:row;align-items:center}
.thumbs{display:flex;gap:8px;flex-wrap:wrap}.thumbs label{flex-direction:column;font-weight:400;font-size:12px}.thumbs img{width:90px;height:64px;object-fit:cover;border-radius:7px}
.flash{background:var(--gl);border:1px solid #b8e0c4;color:#164d29;padding:10px 14px;border-radius:10px;margin-bottom:14px}.flash.err{background:#fdecec;border-color:#f3c1c1;color:#7a1f1f}
.login{max-width:380px;margin:80px auto}
/* modal */
.modal{position:fixed;inset:0;background:rgba(10,20,14,.6);display:none;align-items:center;justify-content:center;padding:20px;z-index:50}
.modal.open{display:flex}.box{background:#fff;border-radius:16px;max-width:760px;width:100%;max-height:90vh;overflow:auto;padding:18px}
.gal{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px;margin-bottom:12px}.gal img{width:100%;border-radius:8px;aspect-ratio:4/3;object-fit:cover}
.gal img:first-child{grid-column:1/-1;aspect-ratio:16/9}
@media(max-width:900px){.nav{display:none}.search{min-width:0;flex:1}.stats{margin-left:0;width:100%}.stat{flex:1;min-width:0}.shell{grid-template-columns:1fr}.side{position:static}.form{grid-template-columns:1fr}.head h1{font-size:26px}}
@media(max-width:560px){.brand{border:0;padding:0}.brand small{display:none}.top .in{gap:12px}}