:root{--navy: #0b2a4a;--accent: #1e88e5;--bg: #f4f6f9;--card: #ffffff;--line: #e2e8f0;--text: #1a2533}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,Segoe UI,Roboto,system-ui,sans-serif;background:var(--bg);color:var(--text)}.topbar{background:var(--navy);color:#fff;padding:14px 16px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:10}.topbar a{color:#cfe3f7;text-decoration:none;margin-left:14px;font-size:14px}.brand{font-weight:700;letter-spacing:.3px}.offline{background:#b54708;font-size:12px;padding:4px 16px;color:#fff;text-align:center}.wrap{max-width:720px;margin:0 auto;padding:16px}.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px;margin-bottom:14px}.card h3{margin:0 0 12px;color:var(--navy);font-size:15px}label{display:block;font-size:12px;color:#5b6b7f;margin:10px 0 4px}input,select,textarea{width:100%;padding:11px;border:1px solid var(--line);border-radius:8px;font-size:15px;background:#fff}textarea{min-height:70px;resize:vertical}.row{display:flex;gap:10px}.row>*{flex:1}button{background:var(--accent);color:#fff;border:0;padding:12px 16px;border-radius:9px;font-size:15px;font-weight:600;cursor:pointer}button.secondary{background:#eef2f7;color:var(--navy)}button.ghost{background:transparent;color:var(--accent);padding:6px 8px}button:disabled{opacity:.5}.timer{font-size:30px;font-weight:700;color:var(--navy);font-variant-numeric:tabular-nums}.lineitem{display:grid;grid-template-columns:1fr 56px 84px 40px;gap:6px;align-items:center;margin-bottom:6px}.totals{text-align:right;line-height:1.9}.totals .grand{font-weight:700;font-size:18px;color:var(--navy)}.stars span{font-size:32px;cursor:pointer;color:#cbd5e1}.stars span.on{color:#f5a623}canvas.sig{width:100%;height:170px;border:1px dashed var(--accent);border-radius:8px;touch-action:none;background:#fff}.metric{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.metric .m{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px}.metric .m b{font-size:24px;color:var(--navy);display:block}.joblist a{display:block;padding:12px;border-bottom:1px solid var(--line);text-decoration:none;color:var(--text)}.tag{font-size:11px;padding:2px 8px;border-radius:999px;background:#eef2f7;color:var(--navy)}.tag.open{background:#fef3c7;color:#92400e}.tag.closed{background:#d1fae5;color:#065f46}.photos img{width:84px;height:84px;object-fit:cover;border-radius:8px;margin:4px}.toast{position:fixed;bottom:20px;left:50%;transform:translate(-50%);background:var(--navy);color:#fff;padding:12px 18px;border-radius:10px;z-index:50;font-size:14px}.login-bg{min-height:100vh;background:var(--navy);display:flex;align-items:center;justify-content:center;padding:20px}.login-card{background:var(--card);border-radius:16px;padding:28px 24px;width:100%;max-width:360px;box-shadow:0 12px 40px #00000059}.login-brand{font-size:22px;font-weight:800;color:var(--navy)}.login-sub{font-size:13px;color:#5b6b7f;margin-bottom:18px}.login-err{background:#fde8e8;color:#b42318;font-size:13px;padding:9px 12px;border-radius:8px;margin-top:12px}.userbox{display:flex;align-items:center;gap:12px;font-size:13px}.userbox button{background:#ffffff24;padding:7px 12px;font-size:13px}
