/* Harmonie · shared styles for login, client area and admin */
:root{
  --bege:#F4EFE6; --paper:#FBF8F3; --areia:#E4D8C4; --line:#E4D8C4; --field:#CFC3AE;
  --salvia:#8FA38C; --verde:#5F7762; --verde-escuro:#3F5243; --verde-claro:#EEF2EC;
  --carvao:#2E2E2E; --texto:#2E2E2E; --muted:#555555; --ok-bg:#E3EAE1; --ok:#2E3E31;
  --warn-bg:#F4E8CC; --warn:#5A4416; --bad-bg:#F3E3DA; --bad:#5A2D20; --danger:#8A3B2E;
  --serif:'Cormorant Garamond', Georgia, serif; --sans:'DM Sans', system-ui, sans-serif;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bege);color:var(--texto);font-family:var(--sans);line-height:1.55}
a{color:var(--verde-escuro)} a:hover{color:var(--carvao)}
h1,h2,h3{margin:0}
.serif{font-family:var(--serif);font-weight:500}
.muted{color:var(--muted)}
.small{font-size:13px}
.wrap{max-width:1200px;margin:0 auto;padding:0 24px}
main.wrap{padding-top:44px;padding-bottom:96px;display:flex;flex-direction:column;gap:28px}

/* top bar */
.top{background:var(--bege);border-bottom:1px solid var(--line)}
.top.dark{background:var(--carvao);color:var(--bege);border:0}
.top nav{max-width:1200px;margin:0 auto;padding:16px 24px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:14px}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:inherit}
.brand b{font-family:var(--serif);font-weight:500;font-size:28px;line-height:1}
.brand small{display:block;font-size:10px;letter-spacing:.28em;text-transform:uppercase;color:#4A5D4D;margin-top:4px}
.top.dark .brand small{color:var(--salvia)}
.navlinks{display:flex;flex-wrap:wrap;align-items:center;gap:18px;font-size:15px}
.navlinks a{text-decoration:none}
.top.dark .navlinks a{color:var(--bege)}
.tag{font-size:11px;letter-spacing:.2em;text-transform:uppercase;background:#4A4A4A;color:var(--bege);padding:4px 10px;border-radius:999px}

/* layout */
.cols{display:flex;flex-wrap:wrap;gap:24px;align-items:flex-start}
.cols > .main{flex:999 1 560px;min-width:0;display:flex;flex-direction:column;gap:24px}
.cols > .side{flex:1 1 320px;min-width:0;display:flex;flex-direction:column;gap:24px}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}
.row{display:flex;flex-wrap:wrap;gap:12px;align-items:center}
.between{justify-content:space-between}
.stack{display:flex;flex-direction:column;gap:12px}

/* cards */
.card{background:var(--paper);border:1px solid var(--line);border-radius:24px;padding:28px;display:flex;flex-direction:column;gap:16px}
.card.green{background:var(--verde);color:#fff;border:0}
.card.green .muted,.card.green .label{color:var(--verde-claro)}
.card.sand{background:var(--areia);border:0}
.card.soft{background:var(--bege)}
.card h2{font-size:20px;font-weight:600}
.card h2.serif{font-size:34px;font-weight:500;line-height:1.1}
.label{font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:#4A5D4D;font-weight:600;margin:0}
.stat{background:var(--paper);border:1px solid var(--line);border-radius:18px;padding:18px}
.stat .v{font-family:var(--serif);font-size:38px;line-height:1.05;margin-top:4px}
.stat.green{background:var(--verde);color:#fff;border:0}
.stat.green .muted{color:var(--verde-claro)}

/* buttons */
.btn{font:inherit;font-weight:600;font-size:15px;border:0;border-radius:999px;padding:12px 22px;min-height:44px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;text-decoration:none;background:var(--verde);color:#fff}
.btn:hover{color:#fff;filter:brightness(.96)}
.btn.dark{background:var(--carvao)}
.btn.light{background:var(--bege);color:var(--carvao)} .btn.light:hover{color:var(--carvao)}
.btn.ghost{background:transparent;color:var(--verde-escuro);border:1px solid var(--verde);font-weight:500}
.btn.ghost:hover{color:var(--carvao)}
.card.green .btn.ghost{color:#fff;border-color:var(--bege)}
.btn.small{font-size:13px;padding:8px 14px;min-height:36px}
.btn.danger{background:transparent;color:var(--danger);border:1px solid var(--danger);font-weight:500}
.btn[disabled]{opacity:.55;cursor:wait}
.linkbtn{background:none;border:0;padding:0;font:inherit;color:var(--verde-escuro);text-decoration:underline;cursor:pointer}

/* forms */
.field{display:flex;flex-direction:column;gap:6px;font-size:14px;font-weight:500}
.field input,.field select,.field textarea,input.in,select.in,textarea.in{font:inherit;font-weight:400;font-size:15px;padding:11px 12px;border:1px solid var(--field);border-radius:12px;background:#fff;min-height:44px;width:100%}
.field textarea{min-height:80px;resize:vertical}
input.in.sm,select.in.sm{font-size:14px;padding:6px 8px;min-height:36px;border-radius:9px;width:auto}
.check{display:flex;gap:10px;align-items:flex-start;font-size:14px;font-weight:400}
.check input{margin-top:3px}
.full{grid-column:1/-1}
fieldset{border:0;margin:0;padding:0}
legend{font-size:14px;font-weight:600;padding:0;margin-bottom:10px}
.pills{display:flex;flex-wrap:wrap;gap:8px}
.pill{position:relative}
.pill input{position:absolute;opacity:0;width:1px;height:1px}
.pill span{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;padding:0 16px;border:1px solid var(--field);border-radius:999px;background:#fff;cursor:pointer;font-size:15px}
.pill input:checked + span{background:var(--verde);border-color:var(--verde);color:#fff}
.pill input:focus-visible + span{outline:2px solid var(--carvao);outline-offset:2px}

/* tables */
.tblwrap{overflow-x:auto}
table.tbl{width:100%;border-collapse:collapse;font-size:14px}
.tbl th{text-align:left;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.08em;padding:10px 8px;font-weight:600;white-space:nowrap}
.tbl td{padding:11px 8px;border-top:1px solid var(--line);vertical-align:middle}
.tbl th:first-child,.tbl td:first-child{padding-left:0}
.tbl .sub{font-size:12px;color:var(--muted)}

/* badges & notices */
.badge{display:inline-block;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap;background:var(--ok-bg);color:var(--ok)}
.badge.warn{background:var(--warn-bg);color:var(--warn)}
.badge.bad{background:var(--bad-bg);color:var(--bad)}
.badge.grey{background:#ECE8E1;color:#4A4A4A}
.notice{padding:16px 18px;border-radius:16px;background:var(--paper);border:1px solid var(--line);font-size:15px}
.notice.ok{background:var(--ok-bg);border-color:transparent;color:var(--ok)}
.notice.warn{background:var(--warn-bg);border-color:transparent;color:var(--warn)}
.notice.bad{background:var(--bad-bg);border-color:transparent;color:var(--bad)}
.err{color:var(--danger);font-size:14px;min-height:0}

/* misc */
.avatar{width:64px;height:64px;flex:none;border-radius:50%;background:#C9D3C6;color:#2E3E31;display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-size:26px;object-fit:cover}
.avatar.lg{width:96px;height:96px;font-size:38px}
dl.kv{margin:0;display:grid;grid-template-columns:minmax(110px,auto) minmax(0,1fr);gap:8px 16px;font-size:14px}
dl.kv dt{color:var(--muted)} dl.kv dd{margin:0}
details > summary{cursor:pointer;list-style:none} details > summary::-webkit-details-marker{display:none}
.hidden{display:none !important}
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);max-width:min(92vw,480px);background:var(--carvao);color:var(--bege);padding:14px 20px;border-radius:14px;font-size:14px;box-shadow:0 8px 24px rgba(0,0,0,.18);z-index:9999;text-align:center}
.toast.bad{background:var(--danger);color:#fff}
.loading{padding:60px 0;text-align:center;color:var(--muted)}
.stars{color:var(--verde)}
@media (max-width:640px){ .card{padding:22px} main.wrap{padding-top:28px} }
