:root{--navy:#0b1a33;--navy2:#132849;--navy3:#1c3763;--blue:#4f7cff;--blue2:#7fa3ff;--text:#e8eefc;--muted:#9fb0d0;--ok:#3ecf8e;--err:#ff6b6b}
*{box-sizing:border-box}html,body{margin:0;background:var(--navy);color:var(--text);font:16px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
a{color:var(--blue2)}main{max-width:760px;margin:0 auto;padding:16px 16px 48px}
.top{position:sticky;top:0;display:flex;justify-content:space-between;align-items:center;padding:12px 16px;padding-top:max(12px,env(safe-area-inset-top));background:var(--navy2);border-bottom:2px solid var(--blue);z-index:2}
.brand{display:flex;gap:8px;align-items:center;color:var(--text);text-decoration:none;font-weight:700}.brand span{color:var(--blue2);font-weight:400}
h1{font-size:1.5rem;margin:.6em 0 .3em}h2{font-size:1.1rem;color:var(--blue2);margin:1.4em 0 .5em}
.card{background:var(--navy2);border:1px solid var(--navy3);border-radius:14px;padding:16px;margin:16px 0}.narrow{max-width:420px;margin:32px auto}
label{display:block;margin:10px 0;color:var(--muted);font-size:.9rem}label.check{display:flex;gap:8px;align-items:center;color:var(--text)}
input:not([type=checkbox]),textarea,select{display:block;width:100%;margin-top:4px;padding:12px;font-size:16px;border-radius:10px;border:1px solid var(--navy3);background:var(--navy);color:var(--text)}
input:focus,textarea:focus,select:focus{outline:2px solid var(--blue);border-color:transparent}
.btn{display:inline-block;background:var(--blue);color:#fff;border:0;border-radius:10px;padding:12px 18px;font-size:1rem;font-weight:600;text-decoration:none;cursor:pointer;min-height:44px}
.btn.small{padding:8px 12px;min-height:0;font-size:.9rem}.link{background:none;border:0;color:var(--blue2);cursor:pointer;font-size:.95rem}
.list{list-style:none;padding:0;margin:0}.list li{border-bottom:1px solid var(--navy3)}.list li>a,.list li>div{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:center;padding:14px 4px;color:var(--text);text-decoration:none}
.list strong{flex:1 1 100%}.muted{color:var(--muted);font-size:.9rem}
.pill{display:inline-block;padding:2px 10px;border-radius:99px;background:var(--navy3);font-size:.8rem;text-transform:capitalize}.pill.signed_off,.pill.complete{background:#164e3a;color:var(--ok)}.pill.requested{background:#2a3f7a}
.timeline{list-style:none;padding:0;border-left:2px solid var(--blue);margin:20px 0 20px 8px}.ev{position:relative;padding:0 0 18px 18px}.ev:before{content:"";position:absolute;left:-7px;top:6px;width:12px;height:12px;border-radius:50%;background:var(--blue)}
.ev.signoff:before{background:var(--ok)}.ev .meta{font-size:.85rem;color:var(--muted)}.ev .meta b{color:var(--text)}.ev .body{white-space:pre-wrap;margin:6px 0}
.photo{max-width:100%;border-radius:10px;margin-top:6px}.hash{font-family:ui-monospace,monospace;font-size:.75rem}
.flash{background:var(--navy3);border-left:4px solid var(--blue);padding:10px 14px;border-radius:8px;margin:10px 0}.error{background:#3a1620;border-left:4px solid var(--err);padding:10px 14px;border-radius:8px}
.qr{background:#fff;padding:12px;border-radius:10px;width:220px}.qr svg{width:196px;height:196px;display:block}code.wrap{word-break:break-all}
.wording{background:var(--navy);padding:12px;border-radius:10px;border:1px dashed var(--blue)}
details summary{cursor:pointer;font-weight:600;color:var(--blue2)}details form{border-top:1px solid var(--navy3);padding-top:8px;margin-top:12px}
footer{text-align:center;color:var(--muted);font-size:.85rem;padding:24px 16px calc(24px + env(safe-area-inset-bottom))}
.search{display:flex;gap:8px;margin:8px 0}.search input{margin:0}form.inline{display:flex;gap:6px;flex:1 1 100%;margin-top:6px}form.inline input{margin:0;padding:8px}
fieldset.newsite{border:1px dashed var(--navy3);border-radius:10px;margin:10px 0}legend{color:var(--muted);font-size:.85rem}.amount{font-size:1.3rem;color:var(--blue2)}
table.lines{width:100%;border-collapse:collapse;font-size:.9rem}table.lines th,table.lines td{padding:8px 4px;border-bottom:1px solid var(--navy3);text-align:left;vertical-align:top}
table.lines td:nth-child(n+2),table.lines th:nth-child(n+2){text-align:right;white-space:nowrap}table.lines tfoot th,table.lines tfoot td{border:0}
.search select{margin:0}
.edit-job{border-color:var(--blue)}.edit-job summary{font-size:1rem;padding:4px 0}
