body.admin{background:var(--c-primary-wash);min-height:100vh}
.admin-bar{background:#fff;border-bottom:1px solid var(--c-line)}
.admin-row{display:flex;flex-wrap:wrap;align-items:center;gap:1rem 2rem;width:min(1100px,100% - 2rem);margin:0 auto;padding-block:.75rem}
.admin-brand{font:600 1.15rem var(--f-display);text-decoration:none}
.admin-row nav{display:flex;gap:1.25rem;flex:1;flex-wrap:wrap}.admin-row nav a{font-weight:600;text-decoration:none}.admin-row nav a:hover{color:var(--c-primary)}
.admin-main{width:min(1100px,100% - 2rem);margin:2rem auto 4rem}
.h3{font:600 1.25rem var(--f-display);margin-bottom:.75rem}
.login{max-width:420px;margin:8vh auto;background:#fff;padding:2rem;border-radius:8px;border:1px solid var(--c-line)}
.stack{display:grid;gap:1rem;margin-top:1rem}
label{display:grid;gap:.35rem;font-weight:600;font-size:.95rem}
label.inline{display:flex;align-items:center;gap:.5rem;font-weight:400}
input:not([type=checkbox]):not([type=color]):not([type=file]),select,textarea{min-height:44px;padding:.55rem .8rem;border:1px solid var(--c-line);border-radius:4px;font:inherit;background:#fff;width:100%}
input[type=file]{font-weight:400}
.alert{padding:.8rem 1rem;border-radius:4px;margin:1rem 0;font-weight:600}
.alert-ok{background:#e3f6ea;color:#14532d}.alert-error{background:#fdecea;color:#7f1d1d}
.counts{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:1rem;margin:1.5rem 0}
.counts div{background:#fff;border:1px solid var(--c-line);border-radius:6px;padding:1.1rem}
.counts strong{display:block;font:600 2.2rem/1 var(--f-display);color:var(--c-primary)}
.panel{background:#fff;border:1px solid var(--c-line);border-radius:6px;padding:1.4rem;margin-top:1.25rem}
.log li{padding:.35rem 0;border-bottom:1px solid var(--c-line)}
.settings{display:grid;gap:1.5rem;margin-top:1.25rem}
fieldset{display:grid;gap:1rem;background:#fff;border:1px solid var(--c-line);border-radius:6px;padding:1.4rem}
legend{font:600 1.15rem var(--f-display);padding-inline:.4rem}
.colors{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:1rem}
.pick{display:flex;gap:.5rem}.pick input[type=color]{width:52px;height:44px;padding:2px;border:1px solid var(--c-line);border-radius:4px;background:#fff}
.swatches{display:flex;flex-wrap:wrap;gap:.4rem}
.sw{padding:.5rem .7rem;border-radius:4px;border:1px solid rgba(0,0,0,.12);font-size:.75rem;font-weight:600;color:#000;background:#eee}
.preview{display:flex;align-items:center;gap:1rem}
