/* ============================================================================
   DTM Property Maintenance — shared app styling (Tracker + Portal)
   Silver & black system, consistent with the public website.
============================================================================ */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

:root {
  --bg:#0C0D0F; --bg-2:#121316; --surface:#16181B; --surface-2:#1D2024;
  --panel:#08090A; --text-hi:#F1F2F3; --text:#C7CACE; --muted:#888E95;
  --line:#26292D; --line-2:#34383E; --steel:#9AA0A8; --silver:#D7DBE0;
  --silver-soft:#1E2125;
  --silver-grad:linear-gradient(135deg,#8b9097 0%,#e9ecef 45%,#b9bec4 70%,#f4f6f8 100%);
  --ok:#46C172; --warn:#E0A33B; --info:#5AA9E6; --danger:#E06B5E; --wa:#25D366;
  --font:'Archivo',system-ui,-apple-system,sans-serif;
  --mono:'Space Mono',ui-monospace,monospace;
}

body {
  font-family:var(--font); background:var(--bg); color:var(--text);
  line-height:1.55; -webkit-font-smoothing:antialiased; min-height:100vh;
}
a { color:inherit; text-decoration:none; }
:focus-visible { outline:3px solid var(--silver); outline-offset:2px; border-radius:4px; }
img { display:block; max-width:100%; }

/* ---- layout ---------------------------------------------------------- */
.app-header {
  position:sticky; top:0; z-index:50; background:var(--panel);
  border-bottom:1px solid var(--line); display:flex; align-items:center;
  justify-content:space-between; gap:1rem; padding:0.7rem clamp(1rem,4vw,2rem);
}
.app-header .brand { display:flex; align-items:center; gap:0.7rem; }
.app-header .brand img { height:34px; }
.app-header .brand b { color:var(--text-hi); font-weight:800; letter-spacing:-0.01em; font-size:1.02rem; }
.app-header .brand span { font-family:var(--mono); font-size:0.62rem; letter-spacing:0.12em; color:var(--steel); text-transform:uppercase; }
.app-header .who { display:flex; align-items:center; gap:0.9rem; font-size:0.85rem; color:var(--muted); }
.wrap { width:100%; max-width:1080px; margin-inline:auto; padding:clamp(1.25rem,4vw,2.25rem); }

.eyebrow { font-family:var(--mono); font-size:0.68rem; font-weight:700; letter-spacing:0.16em; text-transform:uppercase; color:var(--silver); }
h1.page { font-size:clamp(1.5rem,4vw,2rem); font-weight:800; color:var(--text-hi); letter-spacing:-0.02em; margin:0.4rem 0 0.3rem; }
.sub { color:var(--muted); font-size:0.95rem; margin-bottom:1.5rem; }
.muted { color:var(--muted); }
.row { display:flex; gap:0.75rem; align-items:center; flex-wrap:wrap; }
.spread { display:flex; justify-content:space-between; align-items:center; gap:1rem; flex-wrap:wrap; }

/* ---- cards / panels -------------------------------------------------- */
.card { background:var(--surface); border:1px solid var(--line); border-radius:12px; padding:1.4rem; }
.card + .card { margin-top:1rem; }
.card-h { display:flex; justify-content:space-between; align-items:center; gap:1rem; margin-bottom:1rem; flex-wrap:wrap; }
.card-h h2 { font-size:1.1rem; color:var(--text-hi); font-weight:700; }

/* ---- buttons --------------------------------------------------------- */
.btn { display:inline-flex; align-items:center; justify-content:center; gap:0.5rem;
  font-family:var(--font); font-weight:700; font-size:0.92rem; padding:0.65rem 1.15rem;
  border-radius:8px; border:1.5px solid transparent; cursor:pointer;
  transition:transform .12s, filter .18s, background .18s, border-color .18s, color .18s; }
.btn:hover { transform:translateY(-1px); }
.btn:disabled { opacity:0.55; cursor:not-allowed; transform:none; }
.btn svg { width:17px; height:17px; }
.btn-silver { background:var(--silver-grad); color:#0c0d0f; }
.btn-silver:hover { filter:brightness(1.08); }
.btn-dark { background:var(--surface-2); color:var(--text-hi); border-color:var(--line-2); }
.btn-dark:hover { border-color:var(--silver); }
.btn-ghost { background:transparent; color:var(--text-hi); border-color:var(--line-2); }
.btn-ghost:hover { border-color:var(--silver); background:var(--surface-2); }
.btn-danger { background:transparent; color:var(--danger); border-color:rgba(224,107,94,0.4); }
.btn-danger:hover { background:rgba(224,107,94,0.1); border-color:var(--danger); }
.btn-sm { padding:0.4rem 0.75rem; font-size:0.82rem; }
.btn-wa { background:var(--wa); color:#07321b; }

/* ---- forms ----------------------------------------------------------- */
label { display:block; font-size:0.8rem; font-weight:600; color:var(--text-hi); margin-bottom:0.35rem; }
input, textarea, select {
  width:100%; padding:0.7rem 0.85rem; border:1.5px solid var(--line-2); background:var(--bg);
  font-family:var(--font); font-size:0.95rem; color:var(--text-hi); border-radius:8px; outline:none;
  transition:border-color .18s, background .18s; appearance:none; }
input::placeholder, textarea::placeholder { color:#5e646b; }
input:focus, textarea:focus, select:focus { border-color:var(--silver); background:var(--surface-2); }
textarea { resize:vertical; min-height:90px; }
select { background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239AA0A8' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right .75rem center; background-size:15px; padding-right:2.3rem; }
select option { background:var(--surface); }
.field { margin-bottom:1rem; }
.grid-2 { display:grid; grid-template-columns:1fr 1fr; gap:1rem; }
@media (max-width:560px){ .grid-2 { grid-template-columns:1fr; } }

/* ---- status pills ---------------------------------------------------- */
.pill { display:inline-flex; align-items:center; gap:0.4rem; font-family:var(--mono);
  font-size:0.7rem; font-weight:700; padding:0.25rem 0.6rem; border-radius:100px;
  border:1px solid var(--line-2); white-space:nowrap; }
.pill .dot { width:7px; height:7px; border-radius:50%; background:currentColor; }
.st-new       { color:var(--steel);  background:var(--silver-soft); }
.st-quoted    { color:var(--info);   background:rgba(90,169,230,0.12); }
.st-approved  { color:var(--silver); background:var(--silver-soft); }
.st-booked    { color:var(--warn);   background:rgba(224,163,59,0.12); }
.st-progress  { color:var(--warn);   background:rgba(224,163,59,0.12); }
.st-completed { color:var(--ok);     background:rgba(70,193,114,0.14); }

/* ---- tables / lists -------------------------------------------------- */
.list { display:flex; flex-direction:column; }
.list-row { display:grid; align-items:center; gap:1rem; padding:0.85rem 0.25rem;
  border-bottom:1px solid var(--line); }
.list-row:last-child { border-bottom:none; }
.list-row .ref { font-family:var(--mono); font-weight:700; color:var(--silver); font-size:0.82rem; }
.list-row .ttl { color:var(--text-hi); font-weight:600; }
.list-row .meta { color:var(--muted); font-size:0.82rem; }
.clickable { cursor:pointer; border-radius:8px; transition:background .15s; }
.clickable:hover { background:var(--surface-2); }

.empty { text-align:center; color:var(--muted); padding:2.25rem 1rem; border:1px dashed var(--line-2); border-radius:10px; background:var(--surface); }

/* ---- login gate ------------------------------------------------------ */
.gate { min-height:100vh; display:grid; place-items:center; padding:1.5rem; }
.gate-card { width:100%; max-width:420px; background:var(--surface); border:1px solid var(--line-2); border-radius:14px; padding:2.25rem; text-align:center; }
.gate-card img { height:54px; margin:0 auto 1.25rem; }
.gate-card h1 { font-size:1.4rem; color:var(--text-hi); font-weight:800; margin-bottom:0.4rem; }
.gate-card p { color:var(--muted); font-size:0.92rem; margin-bottom:1.5rem; }
.gate-card .field { text-align:left; }
.note { font-size:0.82rem; color:var(--muted); margin-top:1rem; }
.msg { margin-top:1rem; padding:0.75rem; border-radius:8px; font-size:0.88rem; display:none; }
.msg.show { display:block; }
.msg.ok { background:rgba(70,193,114,0.12); color:var(--ok); border:1px solid rgba(70,193,114,0.3); }
.msg.err { background:rgba(224,107,94,0.1); color:var(--danger); border:1px solid rgba(224,107,94,0.3); }

/* ---- modal ----------------------------------------------------------- */
.modal-bg { position:fixed; inset:0; background:rgba(0,0,0,0.6); backdrop-filter:blur(2px); display:none; place-items:center; z-index:100; padding:1.25rem; }
.modal-bg.show { display:grid; }
.modal { width:100%; max-width:560px; max-height:90vh; overflow:auto; background:var(--surface); border:1px solid var(--line-2); border-radius:14px; padding:1.75rem; }
.modal h3 { font-size:1.2rem; color:var(--text-hi); font-weight:800; margin-bottom:1.25rem; }
.modal-actions { display:flex; gap:0.75rem; justify-content:flex-end; margin-top:1.5rem; flex-wrap:wrap; }

.spin { display:inline-block; width:16px; height:16px; border:2px solid rgba(255,255,255,0.3); border-top-color:#fff; border-radius:50%; animation:spin .7s linear infinite; }
@keyframes spin { to { transform:rotate(360deg); } }
.center-load { text-align:center; color:var(--muted); padding:3rem 1rem; }

.toggle { display:inline-flex; align-items:center; gap:0.6rem; cursor:pointer; }
.toggle input { display:none; }
.toggle .track { width:42px; height:24px; border-radius:100px; background:var(--line-2); position:relative; transition:background .18s; flex-shrink:0; }
.toggle .track::after { content:''; position:absolute; top:3px; left:3px; width:18px; height:18px; border-radius:50%; background:var(--steel); transition:transform .18s, background .18s; }
.toggle input:checked + .track { background:rgba(70,193,114,0.4); }
.toggle input:checked + .track::after { transform:translateX(18px); background:var(--ok); }
