:root{--g:#25090f;--g2:#3a1422;--brass:#d2b67e;--bg:#f3f1ea;--card:#fff;--line:#dedad0;--txt:#1d2622;--mut:#66726b;--red:#a4402f}
*{box-sizing:border-box}
body{margin:0;font:15px/1.5 system-ui,-apple-system,"Segoe UI",sans-serif;background:var(--bg);color:var(--txt);display:flex;min-height:100vh}
a{color:inherit}
code{background:#ebe8de;padding:1px 6px;border-radius:3px;font-size:.92em}
h1{font-size:1.7rem;margin:0 0 .4rem}
h2{font-size:1.1rem;margin:0 0 .8rem}
.lead{color:var(--mut);margin:0 0 1.4rem;max-width:70ch}
.side{width:250px;flex:none;background:var(--g);color:#e9e4d6;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}
.side-brand{padding:1.4rem 1.3rem;font:500 1.35rem Georgia,serif;border-bottom:1px solid rgba(255,255,255,.1)}
.side-brand small{display:block;font:400 .75rem system-ui;color:#9fb0a6;margin-top:.2rem}
.side nav{padding:.8rem .6rem;flex:1}
.side nav a{display:flex;justify-content:space-between;align-items:center;padding:.6rem .8rem;border-radius:5px;text-decoration:none;color:#c9d2ca}
.side nav a:hover{background:var(--g2)}
.side nav a.on{background:var(--g2);color:#fff;box-shadow:inset 3px 0 var(--brass)}
.badge{background:var(--brass);color:#1a1208;border-radius:10px;font-size:.75rem;padding:0 7px;font-weight:600}
.side-foot{padding:1rem 1.3rem;border-top:1px solid rgba(255,255,255,.1);display:flex;flex-direction:column;gap:.5rem;font-size:.9rem}
.side-foot a{color:#c9d2ca}
.linkbtn{background:none;border:0;color:#c9d2ca;padding:0;font:inherit;text-align:left;text-decoration:underline;cursor:pointer}
.main{flex:1;padding:2rem clamp(1rem,3vw,2.5rem) 5rem;min-width:0;max-width:1100px}
.msg{padding:.8rem 1rem;border-radius:5px;margin-bottom:1.2rem;background:#e3efe4;border:1px solid #bcd6bf}
.msg.err{background:#f6e1dc;border-color:#e2b3a9}
.card{background:var(--card);border:1px solid var(--line);border-radius:6px;padding:1.2rem 1.3rem;margin-bottom:1.1rem}
.card.dim,.item.dim,.tbl tr.dim{opacity:.62}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:1rem;margin:1.2rem 0}
.stat{background:var(--card);border:1px solid var(--line);border-radius:6px;padding:1rem 1.2rem;text-decoration:none;display:flex;flex-direction:column}
.stat b{font:500 2.2rem Georgia,serif;line-height:1.1}
.stat small{color:var(--mut)}
.plain{margin:0;padding-left:1.2rem;color:var(--mut)}
label{display:flex;flex-direction:column;gap:.25rem;font-size:.85rem;color:var(--mut);min-width:0}
input,select,textarea{font:inherit;color:var(--txt);padding:.5rem .6rem;border:1px solid #cfcabd;border-radius:4px;background:#fff;width:100%}
input[type=file]{padding:.35rem;font-size:.85rem}
input:focus,select:focus,textarea:focus{outline:2px solid var(--brass);outline-offset:-1px}
.chk{flex-direction:row;align-items:center;gap:.5rem;color:var(--txt);font-size:.92rem}
.chk input{width:auto}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:.9rem 1.1rem;align-items:end}
.full{grid-column:1/-1}
.r{text-align:right;justify-self:end}
.nowrap{white-space:nowrap;display:flex;gap:.35rem;flex-wrap:wrap;justify-content:flex-end}
.b{display:inline-block;font:500 .92rem system-ui;padding:.55rem 1rem;border:1px solid #c5bfae;border-radius:4px;background:#f7f5ee;color:var(--txt);cursor:pointer;text-decoration:none}
.b:hover{background:#ece8db}
.b.sm{padding:.3rem .65rem;font-size:.82rem}
.b.pri{background:var(--g);color:#fff;border-color:var(--g)}
.b.pri:hover{background:var(--g2)}
.b.danger{color:var(--red);border-color:#e0bcb4;background:#fff}
.b.danger:hover{background:#f9ebe8}
.hidden-submit{position:absolute;left:-9999px;width:1px;height:1px;opacity:0;border:0;padding:0}
.tbl{width:100%;border-collapse:collapse}
.tbl th{text-align:left;font-size:.8rem;color:var(--mut);font-weight:500;padding:.4rem .6rem;border-bottom:1px solid var(--line)}
.tbl td{padding:.7rem .6rem;border-bottom:1px solid #eeebe2;vertical-align:top}
.tbl th.r{text-align:right}
.tbl small{color:var(--mut)}
.row-add{display:flex;gap:.7rem;align-items:center;margin-top:1rem}
.row-add input,.row-add select{max-width:340px}
.card.row-add{margin-top:0}
.cat-head{display:grid;grid-template-columns:1fr 1.4fr auto;gap:.9rem;align-items:end;margin-bottom:1rem;padding-bottom:1rem;border-bottom:2px solid var(--line)}
.item{border:1px solid #e8e4d9;border-radius:5px;padding:.8rem;margin-bottom:.7rem;background:#fcfbf7}
.item-main{display:flex;gap:.8rem;margin-bottom:.6rem}
.item-main label{flex:1}
.item-main .w-price{flex:0 0 110px}.item-main .w-tags{flex:0 0 220px}
.item-foot{display:flex;gap:1.2rem;align-items:center;flex-wrap:wrap}
.grow{flex:1}
.savebar{position:sticky;bottom:0;background:linear-gradient(transparent,var(--bg) 40%);padding:1.2rem 0 .8rem;display:flex;gap:.7rem;justify-content:flex-end}
.savebar.top{position:static;background:none;justify-content:flex-start;padding:0 0 1rem}
.imgf{display:flex;gap:1rem;align-items:flex-end}
.imgf-in{flex:1;display:grid;grid-template-columns:1fr 1fr;gap:.9rem}
.thumb{width:92px;height:68px;object-fit:cover;border-radius:4px;border:1px solid var(--line);background:#eee}
.cellset{border:1px solid var(--line);border-radius:6px;padding:.4rem 1rem 1rem;margin:0}
.cellset legend{font-weight:600;padding:0 .4rem}
.offnote{display:none;font-weight:400;color:var(--mut)}
.cellset.off{opacity:.5;background:#f4f2ea}.cellset.off .offnote{display:inline}
.gal-admin{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:1rem}
.gal-item{background:var(--card);border:1px solid var(--line);border-radius:6px;padding:.8rem;display:flex;flex-direction:column;gap:.6rem}
.gal-item img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:4px;background:#e8e4d9}
.crumb{margin:0 0 .6rem}.hint{color:var(--mut);font-size:.88rem}.empty{color:var(--mut)}
/* Login */
body.login{display:grid;place-items:center;background:var(--g)}
.login-box{background:#fff;padding:2rem;border-radius:8px;width:min(380px,92vw);display:flex;flex-direction:column;gap:1rem}
.login-box h1{font-family:Georgia,serif}
@media (max-width:860px){
  body{flex-direction:column}
  .side{position:static;width:100%;height:auto}
  .side nav{display:flex;flex-wrap:wrap;gap:.2rem}
  .side-foot{flex-direction:row;gap:1.2rem}
  .form-grid,.imgf-in,.cat-head{grid-template-columns:1fr}
  .item-main{flex-direction:column}.item-main .w-price,.item-main .w-tags{flex:auto}
  .imgf{flex-direction:column;align-items:stretch}
  .tbl,.tbl tbody,.tbl tr,.tbl td{display:block;width:100%}.tbl thead{display:none}
  .nowrap{justify-content:flex-start}.r{justify-self:start;text-align:left}
}
