/* Zimbabwe Maids Centre — CRM. Brand: green + orange (confirm hex against logo). */
:root{
  --green:#1b7a4b; --green-dark:#145c39; --green-light:#e8f3ed;
  --orange:#e8791f; --orange-dark:#c46112; --orange-light:#fdf0e4;
  --ink:#1a2028; --muted:#6b7684; --line:#e3e7eb; --bg:#f6f8f9; --card:#fff;
  --red:#c62828; --red-light:#fdecec; --amber:#b26a00;
  --radius:10px; --shadow:0 1px 3px rgba(16,24,32,.06),0 1px 2px rgba(16,24,32,.04);
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);
  font:15px/1.55 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}
a{color:var(--green);text-decoration:none}
a:hover{text-decoration:underline}
h1,h2,h3{margin:0 0 .5rem;line-height:1.25}
h1{font-size:1.5rem;font-weight:650}
h2{font-size:1.15rem;font-weight:620}
h3{font-size:1rem;font-weight:600}

/* layout */
.shell{display:flex;min-height:100vh}
.side{width:220px;flex:0 0 220px;background:var(--green-dark);color:#fff;padding:1rem 0;position:sticky;top:0;height:100vh;overflow-y:auto}
.side .brand{display:flex;align-items:center;gap:.5rem;padding:0 1rem 1rem;font-weight:700;font-size:1.05rem;border-bottom:1px solid rgba(255,255,255,.12);margin-bottom:.75rem}
.side .brand span{color:var(--orange)}
.side nav a{display:flex;justify-content:space-between;align-items:center;gap:.5rem;padding:.6rem 1rem;color:rgba(255,255,255,.82);font-size:.92rem;border-left:3px solid transparent}
.side nav a:hover{background:rgba(255,255,255,.07);color:#fff;text-decoration:none}
.side nav a.on{background:rgba(255,255,255,.1);color:#fff;border-left-color:var(--orange);font-weight:600}
.side .pill{background:var(--orange);color:#fff;border-radius:20px;padding:1px 7px;font-size:.72rem;font-weight:700}
.main{flex:1;min-width:0;display:flex;flex-direction:column}
.top{background:var(--card);border-bottom:1px solid var(--line);padding:.75rem 1.5rem;display:flex;justify-content:space-between;align-items:center;gap:1rem}
.top .who{font-size:.85rem;color:var(--muted)}
.wrap{padding:1.5rem;max-width:1500px;width:100%}

/* cards + stats */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:1.25rem}
.card>.hd{padding:.85rem 1.1rem;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap}
.card>.bd{padding:1.1rem}
.card>.bd.tight{padding:0}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(165px,1fr));gap:1rem;margin-bottom:1.25rem}
.stat{background:var(--card);border:1px solid var(--line);border-left:4px solid var(--green);border-radius:var(--radius);padding:1rem;box-shadow:var(--shadow)}
.stat.o{border-left-color:var(--orange)}
.stat.r{border-left-color:var(--red)}
.stat .n{font-size:1.75rem;font-weight:700;line-height:1.1}
.stat .l{font-size:.8rem;color:var(--muted);margin-top:.15rem}

/* tables */
table{width:100%;border-collapse:collapse;font-size:.9rem}
th{text-align:left;padding:.6rem .8rem;background:#fafbfc;border-bottom:1px solid var(--line);
  font-size:.74rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:650;white-space:nowrap}
td{padding:.65rem .8rem;border-bottom:1px solid var(--line);vertical-align:middle}
tbody tr:hover{background:#fafbfc}
tbody tr:last-child td{border-bottom:none}
.tw{overflow-x:auto}

/* forms */
label{display:block;font-size:.82rem;font-weight:600;margin-bottom:.28rem;color:#39424e}
/* Match every text-like input, including <input> with no type attribute
   (which defaults to text but is NOT matched by input[type=text]). */
input:not([type=checkbox]):not([type=radio]):not([type=submit]):not([type=button]):not([type=file]):not([type=hidden]),
select,textarea{
  width:100%;padding:.5rem .65rem;border:1px solid var(--line);border-radius:7px;font:inherit;
  font-size:.9rem;background:#fff;color:var(--ink);appearance:none;-webkit-appearance:none}
select{
  padding-right:2rem;cursor:pointer;
  background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath fill='%236b7684' d='M1 1.5 6 6.5l5-5'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right .65rem center;background-size:11px}
input[type=date],input[type=datetime-local],input[type=time]{-webkit-appearance:none;min-height:38px}
input::placeholder,textarea::placeholder{color:#9aa4b0}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--green);box-shadow:0 0 0 3px var(--green-light)}
input:disabled,select:disabled,textarea:disabled,input[readonly]{background:#f4f6f7;color:var(--muted);cursor:not-allowed}
input:invalid:not(:placeholder-shown){border-color:#e0a0a0}
textarea{min-height:80px;resize:vertical}

/* Checkboxes and radios keep their native box, just branded and sized. */
input[type=checkbox],input[type=radio]{
  width:16px;height:16px;margin:0;accent-color:var(--green);cursor:pointer;vertical-align:middle}
label:has(input[type=checkbox]){display:flex;align-items:center;gap:.45rem;cursor:pointer}
.grid{display:grid;gap:.9rem}
.g2{grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}
.g3{grid-template-columns:repeat(auto-fit,minmax(175px,1fr))}
.g4{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}
.fld{margin-bottom:.15rem}
.hint{font-size:.78rem;color:var(--muted);margin-top:.2rem}

/* buttons */
.btn{display:inline-flex;align-items:center;gap:.4rem;padding:.5rem .9rem;border-radius:7px;border:1px solid transparent;
  font:inherit;font-size:.88rem;font-weight:600;cursor:pointer;background:var(--green);color:#fff;white-space:nowrap}
.btn:hover{background:var(--green-dark);text-decoration:none;color:#fff}
.btn.o{background:var(--orange)}.btn.o:hover{background:#c86512}
.btn.g{background:#fff;color:var(--ink);border-color:var(--line)}
.btn.g:hover{background:#f4f6f7;color:var(--ink)}
.btn.d{background:var(--red)}.btn.d:hover{background:#a01f1f}
.btn.sm{padding:.32rem .6rem;font-size:.8rem}
.btn:disabled{opacity:.5;cursor:not-allowed}
.bar{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}

/* badges */
.b{display:inline-block;padding:.16rem .5rem;border-radius:20px;font-size:.73rem;font-weight:650;white-space:nowrap}
.b-green{background:var(--green-light);color:var(--green-dark)}
.b-orange{background:var(--orange-light);color:#a35410}
.b-grey{background:#eef1f3;color:var(--muted)}
.b-red{background:var(--red-light);color:var(--red)}
.b-blue{background:#e7f0fb;color:#17548c}

/* alerts */
.alert{padding:.7rem .9rem;border-radius:7px;margin-bottom:1rem;font-size:.88rem;border:1px solid}
.alert.ok{background:var(--green-light);border-color:#b9dcc8;color:var(--green-dark)}
.alert.warn{background:var(--orange-light);border-color:#f3d0a8;color:#8a4a0d}
.alert.err{background:var(--red-light);border-color:#f3c9c9;color:var(--red)}

/* misc */
.muted{color:var(--muted)}
.sm{font-size:.85rem}
.xs{font-size:.78rem}
.right{text-align:right}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85em}
.empty{padding:2.5rem 1rem;text-align:center;color:var(--muted)}
.crumb{font-size:.85rem;color:var(--muted);margin-bottom:.4rem}
.row{display:flex;gap:1.25rem;align-items:flex-start;flex-wrap:wrap}
.col{flex:1;min-width:290px}
.dl{display:grid;grid-template-columns:auto 1fr;gap:.4rem .9rem;font-size:.9rem}
.dl dt{color:var(--muted);font-weight:600}
.dl dd{margin:0}

/* chat */
.thread{max-height:60vh;overflow-y:auto;padding:1rem;background:#f0f2f4;display:flex;flex-direction:column;gap:.5rem}
.msg{max-width:75%;padding:.5rem .75rem;border-radius:10px;font-size:.89rem;white-space:pre-wrap;word-break:break-word}
.msg.in{background:#fff;align-self:flex-start;border-bottom-left-radius:2px}
.msg.out{background:#dcf8c6;align-self:flex-end;border-bottom-right-radius:2px}
.msg .meta{font-size:.7rem;color:var(--muted);margin-top:.25rem}

/* public portal */
.pub{max-width:640px;margin:0 auto;padding:2rem 1.25rem}
.pub-top{background:var(--green-dark);color:#fff;padding:1rem 1.25rem}
.pub-top .brand{max-width:640px;margin:0 auto;font-weight:700;font-size:1.1rem}
.pub-top .brand span{color:var(--orange)}
.tagline{color:rgba(255,255,255,.75);font-size:.82rem;font-weight:400}

/* login */
.login{max-width:380px;margin:8vh auto;padding:0 1rem}
.login .card{padding:1.75rem}
.login h1{text-align:center;margin-bottom:.25rem}
.login .sub{text-align:center;color:var(--muted);font-size:.87rem;margin-bottom:1.5rem}

@media(max-width:860px){
  .shell{flex-direction:column}
  .side{width:100%;flex:none;height:auto;position:static}
  .side nav{display:flex;flex-wrap:wrap}
  .side nav a{border-left:none;border-bottom:3px solid transparent;padding:.5rem .75rem}
  .side nav a.on{border-left:none;border-bottom-color:var(--orange)}
  .wrap{padding:1rem}
}
