:root{--ac:#5514b4;--ac2:#3d0d85;--bg:#f5f4f8;--card:#fff;--tx:#1d1a24;--mu:#6b6777;--bd:#e3e0ea;--ok:#0f7b4b;--okbg:#e2f5ec;--bad:#c62a3d;--badbg:#fde8eb;--warn:#9a6200;--warnbg:#fff3d6;--info:#1f5fa8;--infobg:#e6effa}
*{box-sizing:border-box}
body{margin:0;font:14px/1.45 system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;color:var(--tx);background:var(--bg)}
a{color:var(--ac)}
h1{font-size:22px;margin:0 0 14px}h2{font-size:16px;margin:0 0 12px}h3{font-size:14px;margin:16px 0 8px}
.muted{color:var(--mu)}.small{font-size:12px}.block{display:block}.mono{font-family:ui-monospace,Consolas,monospace}.nowrap{white-space:nowrap}.right{text-align:right}.mt{margin-top:22px}.num{text-align:right}
.shell{display:flex;min-height:100vh}
.side{width:230px;background:#1c1033;color:#ddd5ee;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;flex-shrink:0}
.brand{display:flex;gap:10px;align-items:center;padding:18px 16px}
.brand b{display:block;color:#fff;font-size:16px}.brand small{color:#a99cc4;font-size:12px}
.logo{width:34px;height:34px;border-radius:9px;background:var(--ac);color:#fff;display:grid;place-items:center;font-weight:800;font-size:18px}
.side nav{flex:1;overflow:auto;padding:4px 8px}
.side nav a{display:flex;justify-content:space-between;align-items:center;padding:8px 10px;border-radius:7px;color:#ddd5ee;text-decoration:none;margin-bottom:2px}
.side nav a:hover{background:#2c1a4d}.side nav a.on{background:var(--ac);color:#fff}
.navh{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:#8d80a8;padding:14px 10px 6px}
.badge{background:#ff5a6e;color:#fff;border-radius:10px;font-size:11px;padding:1px 7px;font-weight:700}
.me{border-top:1px solid #2f2149;padding:12px 16px;display:flex;justify-content:space-between;align-items:center;gap:8px}
.me a{color:#ddd5ee;text-decoration:none}.me b{display:block;color:#fff;font-size:13px}.me small{color:#a99cc4;font-size:12px}.me .out{font-size:12px;color:#c3b6dc}
.main{flex:1;padding:24px 28px;min-width:0}
.menu{display:none}
.titlebar{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}.titlebar h1{margin:0}
.panel{background:var(--card);border:1px solid var(--bd);border-radius:12px;padding:18px;margin-bottom:16px}
.narrow{max-width:520px}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin-bottom:16px}
.card{background:var(--card);border:1px solid var(--bd);border-radius:12px;padding:14px 16px;text-decoration:none;color:var(--tx)}
.card small{color:var(--mu)}.card b{display:block;font-size:28px;margin:2px 0}.card span{color:var(--mu);font-size:12px}
.card.hot{border-color:#f3b3bc;background:#fff7f8}.card.hot b{color:var(--bad)}
.grid2{display:grid;grid-template-columns:3fr 2fr;gap:16px}.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.salegrid{display:grid;grid-template-columns:minmax(0,3fr) minmax(320px,2fr);gap:16px;align-items:start}
.tblwrap{overflow-x:auto;background:var(--card);border:1px solid var(--bd);border-radius:12px}
.tbl{width:100%;border-collapse:collapse}
.tbl th{text-align:left;font-size:12px;color:var(--mu);font-weight:600;padding:9px 10px;border-bottom:1px solid var(--bd);background:#faf9fc;white-space:nowrap}
.tbl td{padding:9px 10px;border-bottom:1px solid #efedf3;vertical-align:top}
.tbl tr:last-child td{border-bottom:0}.tbl.hover tbody tr{cursor:pointer}.tbl.hover tbody tr:hover{background:#f8f5fd}
.tbl td.reason{max-width:340px;font-size:13px}
.panel .tbl th{background:transparent}
.pill{display:inline-block;padding:2px 8px;border-radius:20px;font-size:12px;font-weight:600;white-space:nowrap;vertical-align:middle}
.st-pending{background:var(--warnbg);color:var(--warn)}.st-ok{background:var(--okbg);color:var(--ok)}.st-bad{background:var(--badbg);color:var(--bad)}
.st-live{background:#dff3ff;color:#0b5c8a}.st-muted{background:#eeedf1;color:#5d5968}.st-other{background:#ece4fa;color:var(--ac2)}
.btn{display:inline-block;border:1px solid var(--bd);background:#fff;color:var(--tx);padding:8px 14px;border-radius:8px;font:inherit;font-weight:600;cursor:pointer;text-decoration:none;white-space:nowrap}
.btn:hover{border-color:#c6bfd5}.btn.primary{background:var(--ac);border-color:var(--ac);color:#fff}.btn.primary:hover{background:var(--ac2)}
.btn.ok{background:var(--ok);border-color:var(--ok);color:#fff}.btn.bad{background:#fff;border-color:#f0b6be;color:var(--bad)}.btn.bad:hover{background:var(--badbg)}
.btn.sm{padding:5px 10px;font-size:13px}
input,select,textarea{font:inherit;padding:8px 10px;border:1px solid #d3cfdc;border-radius:8px;background:#fff;color:var(--tx);width:100%}
input:focus,select:focus,textarea:focus{outline:2px solid #c9b3f0;border-color:var(--ac)}
input:disabled,select:disabled,textarea:disabled{background:#f6f5f9;color:#3b3745}
input[type=checkbox]{width:auto}input[type=file]{padding:6px}
label{display:block;font-weight:600;font-size:13px}label>input,label>select,label>textarea{margin-top:4px;font-weight:400}
label.inl{display:inline-flex;gap:6px;align-items:center;font-weight:500}label.inl input{margin:0;width:auto}
.stack{display:flex;flex-direction:column;gap:12px}
.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.row input{width:auto;flex:1;min-width:160px}.row.between{justify-content:space-between}
.inline{display:inline}
.formgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px 16px}.formgrid .wide{grid-column:span 1}
fieldset.addr{grid-column:1/-1;border:1px solid var(--bd);border-radius:10px;padding:10px 14px 14px;margin:0}
fieldset.addr legend{font-weight:700;font-size:13px;padding:0 6px;color:var(--ac2)}
.addrgrid{display:grid;grid-template-columns:repeat(6,1fr);gap:10px 12px}
.addrgrid .ap-address1,.addrgrid .ap-address2,.addrgrid .ap-address3{grid-column:span 2}
.addrgrid .ap-town{grid-column:span 4}.addrgrid .ap-postcode{grid-column:span 2}
@media (max-width:760px){.addrgrid{grid-template-columns:1fr}.addrgrid label{grid-column:auto!important}}
.actions{display:flex;justify-content:flex-end;align-items:center;gap:16px;margin-top:16px}
.filters{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:12px}
.filters input[name=q]{max-width:320px}.filters select{width:auto}.filters input[type=date]{width:auto}
.seg{display:inline-flex;border:1px solid var(--bd);border-radius:8px;overflow:hidden;background:#fff}
.seg a{padding:7px 12px;text-decoration:none;color:var(--tx);font-size:13px;border-right:1px solid var(--bd)}.seg a:last-child{border:0}.seg a.on{background:var(--ac);color:#fff}
.flash{padding:10px 14px;border-radius:9px;margin-bottom:12px;border:1px solid}
.flash.ok{background:var(--okbg);border-color:#b5e2cc;color:#0b5a37}.flash.err{background:var(--badbg);border-color:#f3bcc4;color:#931d2c}
.flash.warn{background:var(--warnbg);border-color:#f0d590;color:#6e4600}.flash.info{background:var(--infobg);border-color:#bcd3ef;color:#17467c}
.warnc{color:var(--warn);font-weight:500;display:block;margin-top:4px}
.task{border:1px solid var(--bd);border-left:4px solid var(--bad);border-radius:8px;padding:10px 12px;margin-bottom:10px}
.task.fixed{border-left-color:#8a5cd6}.task.closed{border-left-color:#c9c5d1;opacity:.75}
.task p{margin:6px 0}.fixnote{background:#f7f4fc;padding:8px;border-radius:6px}
.task form{margin-top:8px}
details summary{list-style:none;display:inline-block}details summary::-webkit-details-marker{display:none}details[open] summary{margin-bottom:10px}
.timeline{list-style:none;padding:0;margin:14px 0 0}.timeline li{border-left:2px solid var(--bd);padding:2px 0 12px 12px;white-space:normal}
.timeline li.note{border-left-color:var(--ac)}.timeline li.system div{color:#4a4655;font-size:13px}
.pager{display:flex;gap:4px;margin-top:12px}.pager a,.pager b,.pager span{padding:5px 10px;border-radius:6px;border:1px solid var(--bd);background:#fff;text-decoration:none}.pager b{background:var(--ac);color:#fff;border-color:var(--ac)}
.authbg{background:linear-gradient(135deg,#1c1033,#5514b4);min-height:100vh;display:grid;place-items:center;padding:16px}
.authbox{background:#fff;border-radius:14px;padding:28px;width:100%;max-width:400px;box-shadow:0 20px 60px rgba(0,0,0,.25)}
.brand.big{padding:0 0 18px}.brand.big b{color:var(--tx)}.brand.big small{color:var(--mu)}
@media (max-width:1000px){.grid2,.salegrid,.grid3{grid-template-columns:1fr}}
@media (max-width:760px){
  .side{position:fixed;left:-240px;z-index:10;transition:left .2s}.side.open{left:0}
  .menu{display:inline-block;margin-bottom:12px;border:1px solid var(--bd);background:#fff;border-radius:8px;padding:6px 12px;font:inherit}
  .main{padding:16px}.formgrid{grid-template-columns:1fr}
}
