@font-face{font-family:"Inter";font-weight:100 900;font-display:swap;src:url(/app/fonts/inter-latin-wght-normal.woff2) format("woff2")}
@font-face{font-family:"Plex Arabic";font-weight:400 500;font-display:swap;src:url(/app/fonts/ibm-plex-sans-arabic-arabic-400-normal.woff2) format("woff2")}
@font-face{font-family:"Plex Arabic";font-weight:600 700;font-display:swap;src:url(/app/fonts/ibm-plex-sans-arabic-arabic-600-normal.woff2) format("woff2")}
:root{
  --bg:#f4f6f9;--card:#fff;--text:#0f172a;--muted:#64748b;--faint:#94a3b8;--line:#e8edf3;--soft:#f1f5f9;
  --brand:#05588f;--brand-2:#0a74bf;--brand-soft:#e8f2fb;--yellow:#fad605;
  --ok:#15803d;--ok-bg:#e6f6ec;--warn:#a16207;--warn-bg:#fef6d8;--bad:#dc2626;--bad-bg:#fdeceb;--violet:#6d4fe0;--violet-bg:#eeeafd;
  --shadow:0 1px 2px rgba(15,23,42,.04),0 8px 24px rgba(15,23,42,.06);
  --font:"Inter","Plex Arabic",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
}
@media (prefers-color-scheme:dark){:root{
  --bg:#0a0f16;--card:#121a25;--text:#f1f5f9;--muted:#94a3b8;--faint:#64748b;--line:#1f2b3a;--soft:#182231;
  --brand:#5eb0ee;--brand-2:#7cc0f4;--brand-soft:#132a40;
  --ok:#4ade80;--ok-bg:#10301e;--warn:#facc15;--warn-bg:#352c0b;--bad:#f87171;--bad-bg:#3a1a1a;--violet:#a78bfa;--violet-bg:#241d45;
  --shadow:0 1px 2px rgba(0,0,0,.4),0 8px 24px rgba(0,0,0,.3);
}}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--text);font:400 15px/1.5 var(--font);-webkit-font-smoothing:antialiased;letter-spacing:-.011em}
a{color:var(--brand)}
button,input,textarea,select{font:inherit;color:inherit;letter-spacing:inherit}
.ic{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none;vertical-align:-3px}
button{cursor:pointer;border:0;background:var(--card);border-radius:12px;padding:0 16px;min-height:40px;font-weight:600;box-shadow:var(--shadow);transition:transform .12s,background .15s}
button:active{transform:scale(.97)}
button.primary{background:var(--brand);color:#fff;box-shadow:0 8px 20px color-mix(in srgb,var(--brand) 32%,transparent)}
@media (prefers-color-scheme:dark){button.primary{color:#06121f}}
button.ghost{background:transparent;box-shadow:none;color:var(--brand)}
button.ghost:hover{background:var(--brand-soft)}
button.danger{color:var(--bad)}
input,textarea,select{width:100%;background:var(--card);border:1.5px solid var(--line);border-radius:12px;padding:10px 13px;min-height:44px;outline:none;transition:border-color .15s,box-shadow .15s}
input:focus,textarea:focus,select:focus{border-color:var(--brand);box-shadow:0 0 0 4px color-mix(in srgb,var(--brand) 16%,transparent)}
textarea{min-height:84px;resize:vertical}
label{display:block;font-size:13px;font-weight:600;color:var(--muted);margin:14px 2px 6px}

.bar{display:flex;align-items:center;gap:12px;padding:12px 28px;position:sticky;top:0;z-index:5;flex-wrap:wrap;background:color-mix(in srgb,var(--bg) 82%,transparent);backdrop-filter:blur(18px) saturate(1.5)}
.bar h1{display:none}
.bar .sp{flex:1}
.logo{display:block;height:40px;width:auto}
@media (prefers-color-scheme:dark){.logo{background:#fff;border-radius:9px;padding:3px 9px}}
.tabs{display:flex;background:var(--soft);border-radius:12px;padding:4px;margin-inline-start:14px}
.tab{border:0;background:transparent;box-shadow:none;color:var(--muted);min-height:34px;border-radius:9px;padding:0 16px}
.tab.on{background:var(--card);color:var(--text);box-shadow:0 1px 3px rgba(15,23,42,.1)}
.avatar{width:32px;height:32px;border-radius:50%;background:var(--brand);color:#fff;display:inline-grid;place-items:center;font-weight:650;font-size:13px;flex:none}
@media (prefers-color-scheme:dark){.avatar{color:#06121f}}
.avatar.none{background:var(--bad-bg);color:var(--bad)}

.head{display:flex;align-items:baseline;gap:14px;padding:10px 28px 0}
.head h2{margin:0;font-size:28px;font-weight:750;letter-spacing:-.03em}
.head span{color:var(--muted)}
.board{display:grid;grid-template-columns:repeat(6,minmax(240px,1fr));gap:14px;padding:20px 28px 40px;overflow-x:auto;align-items:start}
.col{background:color-mix(in srgb,var(--soft) 70%,transparent);border-radius:22px;padding:12px}
.col h3{display:flex;align-items:center;justify-content:space-between;margin:2px 6px 12px;font-size:14px;font-weight:650}
.col h3 span:first-child{display:inline-flex;align-items:center;gap:8px}
.col h3 span:first-child::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--dot,var(--faint))}
.col h3 span:last-child{min-width:24px;text-align:center;background:var(--card);border-radius:99px;font-size:12.5px;padding:1px 8px;color:var(--muted);box-shadow:var(--shadow)}
.col[data-c=assigned]{--dot:var(--brand)}.col[data-c=en_route]{--dot:var(--brand-2)}.col[data-c=arrived]{--dot:var(--violet)}.col[data-c=in_progress]{--dot:#f0b400}.col[data-c=done]{--dot:var(--ok)}
.empty{color:var(--faint);font-size:13.5px;padding:18px 6px;text-align:center}

.job{display:block;width:100%;text-align:start;padding:14px;margin:0 0 10px;border-radius:18px;font-weight:400;min-height:0}
.job:hover{transform:translateY(-2px);box-shadow:0 2px 4px rgba(15,23,42,.05),0 14px 30px rgba(15,23,42,.1)}
.job .top{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-size:12.5px;color:var(--muted);font-weight:600}
.job h4{margin:0 0 2px;font-size:15.5px;line-height:1.3;font-weight:650;letter-spacing:-.015em}
.job .meta{color:var(--muted);font-size:13.5px}
.job .foot{display:flex;align-items:center;gap:8px;margin-top:12px;font-size:13px;font-weight:600}
.job .foot.none{color:var(--bad)}
.chip{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:650;padding:3px 9px;border-radius:99px;background:var(--bad-bg);color:var(--bad)}
.chip.ok{background:var(--ok-bg);color:var(--ok)}

.wrap{max-width:800px;margin:0 auto;padding:12px 28px 40px}
.row{display:flex;gap:8px;align-items:center}.row.sp{justify-content:space-between}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}
.err{color:var(--bad);min-height:20px;font-size:13.5px;margin-top:6px}
.muted{color:var(--muted);font-size:13.5px}
.modalbg{position:fixed;inset:0;background:rgba(10,15,22,.5);backdrop-filter:blur(6px);display:flex;align-items:flex-start;justify-content:center;padding:32px 12px;overflow:auto;z-index:20}
.modal{background:var(--card);border-radius:26px;width:100%;max-width:680px;padding:26px;box-shadow:0 30px 80px rgba(0,0,0,.3)}
.modal h2{margin:0 0 6px;font-size:24px;font-weight:750;letter-spacing:-.025em}
.modal h3{font-size:15px;font-weight:700;margin:24px 2px 10px}
.photos{display:flex;flex-wrap:wrap;gap:8px}.photos img{width:120px;height:92px;object-fit:cover;border-radius:14px}
.tl{font-size:13.5px;color:var(--muted);margin:0;list-style:none;padding:0;padding-inline-start:16px;border-inline-start:2px solid var(--line)}.tl li{padding:4px 0}
.toast{position:fixed;bottom:22px;inset-inline:0;margin:auto;width:max-content;max-width:90vw;background:var(--text);color:var(--bg);padding:12px 18px;border-radius:14px;font-weight:600;z-index:30;box-shadow:0 12px 32px rgba(0,0,0,.25)}
table{width:100%;border-collapse:collapse;background:var(--card);border-radius:20px;overflow:hidden;box-shadow:var(--shadow);margin-top:14px}
td,th{padding:14px 16px;border-bottom:1px solid var(--line);text-align:start}tr:last-child td{border:0}

.login{max-width:400px;margin:10vh auto;padding:0 20px;text-align:center}
.login .logo{height:54px;margin:0 auto}
.login h1{font-size:30px;font-weight:750;letter-spacing:-.03em;margin:30px 0 4px}
.login form{text-align:start;margin-top:22px}
.login input{box-shadow:var(--shadow);border-color:transparent}
.login .primary{width:100%;min-height:50px;border-radius:14px}
@media (max-width:700px){.bar{padding:10px 14px}.head{padding:8px 14px 0}.board{padding:16px 14px}.grid{grid-template-columns:1fr}.wrap{padding:12px 14px}}

/* billing */
.btnlink{display:inline-flex;align-items:center;min-height:40px;padding:0 16px;border-radius:12px;background:var(--card);box-shadow:var(--shadow);font-weight:600;text-decoration:none;color:var(--text)}
.tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:18px 0}
.tile{background:var(--card);border-radius:20px;padding:16px 18px;box-shadow:var(--shadow)}
.tile span{display:block;color:var(--muted);font-size:13.5px;font-weight:500}.tile b{display:block;font-size:28px;font-weight:750;letter-spacing:-.03em;margin-top:2px}.tile small{font-size:14px;font-weight:600;color:var(--muted)}
.seg{display:inline-flex;background:var(--soft);border-radius:12px;padding:4px;margin:0 0 6px}
.seg button{box-shadow:none;background:transparent;color:var(--muted);min-height:34px;border-radius:9px;padding:0 16px}
.seg button.on{background:var(--card);color:var(--text);box-shadow:0 1px 3px rgba(15,23,42,.1)}
table.bt th{font-size:12.5px;color:var(--muted);font-weight:600;background:transparent}
table.bt th.n,table.bt td.n{text-align:end;white-space:nowrap;font-variant-numeric:tabular-nums}
tr.click{cursor:pointer}tr.click:hover td{background:var(--soft)}
.chip.unbilled{background:var(--warn-bg);color:var(--warn)}.chip.invoiced{background:var(--brand-soft);color:var(--brand)}.chip.paid{background:var(--ok-bg);color:var(--ok)}
.ihead,.irow{display:grid;grid-template-columns:1fr 84px 112px 34px;gap:8px;align-items:center;margin-bottom:8px}
.ihead span{font-size:12.5px;font-weight:600;color:var(--muted);padding:0 4px}
.totals{margin:14px 0 0 auto;width:300px;max-width:100%}.totals div{display:flex;justify-content:space-between;padding:5px 10px;font-variant-numeric:tabular-nums}
.totals .g{font-size:18px;font-weight:700;background:var(--soft);border-radius:12px;margin-top:6px;padding:10px}
@media (max-width:700px){.tiles{grid-template-columns:1fr}.ihead,.irow{grid-template-columns:1fr 64px 84px 30px}}
