/* DAG HQ — light theme, brand palette from dubaiastronomy.com */
:root {
  --navy:#1a3d6c; --navy-deep:#0a1a31; --ink:#0f1f3a;
  --teal:#2f9685; --teal-light:#4ec1b0; --coral:#ec4057; --coral-deep:#c8243a;
  --amber:#d98a1f; --green:#2f9685;
  --bg:#f4f4f1; --card:#ffffff; --cream:#ecebe7;
  --line:#e3e2dc; --line-soft:#eeede8;
  --text:#1b2536; --text-mid:#5a6577; --text-dim:#8a93a2;
  --radius:14px; --radius-sm:9px;
  --shadow:0 1px 3px rgba(16,29,56,.06), 0 4px 16px rgba(16,29,56,.05);
  --shadow-lg:0 8px 40px rgba(16,29,56,.16);
  --font:'Segoe UI',system-ui,-apple-system,sans-serif;
}
* { box-sizing:border-box; margin:0; padding:0; }
body { font-family:var(--font); background:var(--bg); color:var(--text); -webkit-font-smoothing:antialiased; }
#app { min-height:100vh; }
h1,h2,h3 { color:var(--navy-deep); }
a { color:var(--navy); }
button { font-family:inherit; cursor:pointer; }
input,select,textarea { font-family:inherit; }

/* ── Buttons ── */
.btn { display:inline-flex; align-items:center; justify-content:center; gap:8px;
  border:1px solid transparent; border-radius:var(--radius-sm); padding:10px 16px;
  font-size:.9rem; font-weight:600; transition:.15s; background:var(--cream); color:var(--ink); }
.btn:hover { filter:brightness(.97); }
.btn-primary { background:var(--navy); color:#fff; }
.btn-teal { background:var(--teal); color:#fff; }
.btn-ghost { background:transparent; border-color:var(--line); color:var(--text-mid); }
.btn-ghost:hover { background:var(--cream); }
.btn-danger { background:var(--coral); color:#fff; }
.btn-sm { padding:6px 11px; font-size:.82rem; }
.btn-full { width:100%; }
.btn-icon { background:transparent; border:none; padding:6px; color:var(--text-mid); border-radius:8px; line-height:0; }
.btn-icon:hover { background:var(--cream); color:var(--navy); }
.btn svg { flex-shrink:0; }
.btn-icon svg { width:15px; height:15px; }

/* ── Forms ── */
.field { margin-bottom:14px; }
.field label { display:block; font-size:.8rem; font-weight:600; color:var(--text-mid); margin-bottom:5px; }
.field input, .field select, .field textarea {
  width:100%; padding:10px 12px; border:1px solid var(--line); border-radius:var(--radius-sm);
  font-size:.92rem; background:#fff; color:var(--text); }
.field input:focus, .field select:focus, .field textarea:focus { outline:none; border-color:var(--teal); box-shadow:0 0 0 3px rgba(47,150,133,.12); }
.field textarea { resize:vertical; min-height:70px; }
.grid-2 { display:grid; grid-template-columns:1fr 1fr; gap:0 14px; }
@media (max-width:520px){ .grid-2 { grid-template-columns:1fr; } }

/* ── Cards ── */
.card { background:var(--card); border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow); }
.pad { padding:18px; }

/* ── Login ── */
.login { min-height:100vh; display:flex; align-items:center; justify-content:center; padding:20px;
  background:linear-gradient(150deg,#0a1a31 0%,#1a3d6c 60%,#2f9685 160%); }
.login-card { width:100%; max-width:380px; background:#fff; border-radius:18px; padding:34px 28px; box-shadow:var(--shadow-lg); }
.brandmark { text-align:center; margin-bottom:22px; }
.brandmark .logo { width:74px; height:auto; margin:0 auto 12px; display:block; }
.brandmark h1 { font-size:1.35rem; letter-spacing:.02em; }
.brandmark p { color:var(--text-dim); font-size:.82rem; margin-top:3px; }

/* ── App chrome ── */
.topbar { position:sticky; top:0; z-index:30; display:flex; align-items:center; gap:12px;
  background:#fff; border-bottom:1px solid var(--line); padding:11px 18px; }
.topbar .logo { width:34px; height:auto; }
.topbar .wm { font-weight:700; color:var(--navy-deep); letter-spacing:.02em; font-size:1.02rem; }
.topbar .wm span { color:var(--teal); }
.topbar .spacer { flex:1; }
.usermenu { display:flex; align-items:center; gap:9px; cursor:pointer; padding:5px 8px; border-radius:9px; }
.usermenu:hover { background:var(--cream); }
.avatar { width:32px; height:32px; border-radius:50%; background:var(--navy); color:#fff; display:flex; align-items:center; justify-content:center; font-weight:700; font-size:.85rem; }

.layout { display:flex; min-height:calc(100vh - 53px); }
.sidebar { width:210px; flex-shrink:0; border-right:1px solid var(--line); background:#fff; padding:14px 10px; }
.nav-item { display:flex; align-items:center; gap:11px; padding:10px 12px; border-radius:10px;
  color:var(--text-mid); font-weight:600; font-size:.9rem; cursor:pointer; margin-bottom:2px; }
.nav-item:hover { background:var(--cream); color:var(--ink); }
.nav-item.active { background:var(--navy); color:#fff; }
.nav-item.active svg { color:#fff; }
.nav-item svg { width:19px; height:19px; color:var(--text-dim); flex-shrink:0; }
.nav-sep { font-size:.68rem; text-transform:uppercase; letter-spacing:.08em; color:var(--text-dim); padding:14px 12px 6px; }
.main { flex:1; padding:22px 26px; max-width:1100px; }
@media (max-width:760px){
  .layout { display:block; }
  .sidebar { display:flex; width:auto; overflow-x:auto; border-right:none; border-bottom:1px solid var(--line);
    position:sticky; top:53px; z-index:20; padding:8px; gap:4px; }
  .nav-sep { display:none; }
  .nav-item { white-space:nowrap; margin:0; padding:8px 12px; }
  .nav-item span.lbl { font-size:.82rem; }
  .main { padding:16px 14px; }
}

.page-head { display:flex; align-items:center; gap:12px; margin-bottom:20px; }
.page-head h2 { font-size:1.4rem; }
.page-head .spacer { flex:1; }
.subtabs { display:flex; gap:6px; flex-wrap:wrap; margin-bottom:18px; }
.subtab { padding:7px 13px; border-radius:20px; font-size:.83rem; font-weight:600; color:var(--text-mid);
  background:var(--cream); cursor:pointer; border:1px solid transparent; }
.subtab.active { background:var(--navy); color:#fff; }

/* ── Stat cards ── */
.stat-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(158px,1fr)); gap:14px; }
.stat { background:var(--card); border:1px solid var(--line); border-radius:var(--radius); padding:16px; box-shadow:var(--shadow); }
.stat .ic { width:38px; height:38px; border-radius:10px; display:flex; align-items:center; justify-content:center; margin-bottom:11px; }
.stat .ic svg { width:20px; height:20px; }
.stat .val { font-size:1.7rem; font-weight:800; color:var(--navy-deep); line-height:1; }
.stat .lbl { font-size:.82rem; color:var(--text-mid); margin-top:5px; }
.ic-navy { background:rgba(26,61,108,.1); color:var(--navy); }
.ic-teal { background:rgba(47,150,133,.13); color:var(--teal); }
.ic-coral { background:rgba(236,64,87,.12); color:var(--coral); }
.ic-amber { background:rgba(217,138,31,.14); color:var(--amber); }
.section-title { font-size:.72rem; text-transform:uppercase; letter-spacing:.09em; color:var(--text-dim); font-weight:700; margin:26px 0 12px; }

/* ── Tables ── */
.tbl-wrap { overflow-x:auto; border:1px solid var(--line); border-radius:var(--radius); background:#fff; box-shadow:var(--shadow); }
table.tbl { width:100%; border-collapse:collapse; font-size:.87rem; }
table.tbl th { text-align:left; background:var(--cream); color:var(--text-mid); font-weight:600; font-size:.76rem;
  text-transform:uppercase; letter-spacing:.04em; padding:11px 13px; white-space:nowrap; }
table.tbl td { padding:11px 13px; border-top:1px solid var(--line-soft); vertical-align:top; }
table.tbl tr:hover td { background:#fafaf8; }
.row-click { cursor:pointer; }
.badge { display:inline-block; padding:2px 9px; border-radius:20px; font-size:.72rem; font-weight:700; }
.badge-green { background:rgba(47,150,133,.15); color:#1f6b5e; }
.badge-amber { background:rgba(217,138,31,.16); color:#9a6212; }
.badge-red { background:rgba(236,64,87,.14); color:var(--coral-deep); }
.badge-gray { background:var(--cream); color:var(--text-mid); }
.badge-navy { background:rgba(26,61,108,.12); color:var(--navy); }

.empty { text-align:center; padding:44px 20px; color:var(--text-dim); }
.empty svg { width:40px; height:40px; opacity:.4; margin-bottom:12px; }

/* ── Sheet / modal ── */
.overlay { position:fixed; inset:0; background:rgba(10,26,49,.45); display:flex; align-items:flex-end; justify-content:center; z-index:60; }
@media (min-width:640px){ .overlay { align-items:center; } }
.sheet { background:#fff; width:100%; max-width:560px; max-height:92vh; overflow-y:auto; border-radius:18px 18px 0 0; padding:24px; }
@media (min-width:640px){ .sheet { border-radius:16px; } }
.sheet h3 { margin-bottom:16px; font-size:1.15rem; }
.sheet-row { display:flex; gap:10px; margin-top:8px; }
.sheet-row .btn { flex:1; }

.line-item { display:grid; grid-template-columns:1fr 64px 90px 90px 30px; gap:8px; align-items:center; margin-bottom:8px; }
.line-item input { padding:8px; font-size:.85rem; }
.line-head { font-size:.72rem; color:var(--text-dim); font-weight:600; }
@media (max-width:520px){ .line-item { grid-template-columns:1fr 1fr; } .line-head { display:none; } }

/* ── Toast ── */
#toast-wrap { position:fixed; bottom:20px; left:50%; transform:translateX(-50%); z-index:90; display:flex; flex-direction:column; gap:8px; }
.toast { background:var(--navy-deep); color:#fff; padding:11px 18px; border-radius:10px; font-size:.87rem; box-shadow:var(--shadow-lg); animation:slidein .2s; }
.toast.err { background:var(--coral-deep); }
.toast.ok { background:var(--teal); }
@keyframes slidein { from{opacity:0; transform:translateY(10px);} }

.loading { text-align:center; padding:50px; color:var(--text-dim); }
.spin { width:26px; height:26px; border:3px solid var(--line); border-top-color:var(--teal); border-radius:50%; animation:spin .7s linear infinite; margin:0 auto 12px; }
@keyframes spin { to{ transform:rotate(360deg); } }
.muted { color:var(--text-dim); font-size:.82rem; }
.pw-hint { font-size:.78rem; color:var(--text-dim); margin-top:6px; }

/* ── Printable finance document ── */
@media print {
  .topbar, .sidebar, .no-print { display:none !important; }
  .main { padding:0; max-width:none; }
  body { background:#fff; }
}
.doc-print { background:#fff; padding:30px; max-width:760px; margin:0 auto; }
.doc-print .doc-head { display:flex; justify-content:space-between; align-items:flex-start; border-bottom:3px solid var(--navy); padding-bottom:18px; margin-bottom:24px; }
.doc-print h1 { font-size:1.6rem; letter-spacing:.04em; }
.doc-print .doc-meta { text-align:right; font-size:.85rem; color:var(--text-mid); }
.doc-print table { width:100%; border-collapse:collapse; margin:20px 0; }
.doc-print th { background:var(--cream); text-align:left; padding:9px 11px; font-size:.8rem; }
.doc-print td { padding:9px 11px; border-bottom:1px solid var(--line); font-size:.88rem; }
.doc-print .totals { margin-left:auto; width:260px; font-size:.9rem; }
.doc-print .totals div { display:flex; justify-content:space-between; padding:5px 0; }
.doc-print .totals .grand { border-top:2px solid var(--navy); font-weight:800; font-size:1.05rem; padding-top:8px; color:var(--navy-deep); }
