/* ATAD Service Reports — phone app. ATAD Apps design system (Sep 2026). Colour tokens live in tokens.css. */
*{box-sizing:border-box}
[hidden]{display:none !important}
html,body{background:var(--bg)}
body{margin:0;font-family:var(--sans);color:var(--text);font-size:14px;line-height:1.45;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}
a{color:inherit}
.mono{font-family:var(--mono);font-weight:500}
.boot{padding:40px;text-align:center;color:var(--muted)}
.screen{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;max-width:520px;margin:0 auto;background:var(--bg)}
.content{flex-grow:1;padding:12px 16px 28px;display:flex;flex-direction:column;gap:12px}
.screen.has-tabs .content{padding-bottom:104px}
.screen.has-footer .content{padding-bottom:28px}

/* ---- brand bar, greeting ---- */
.brandbar{display:flex;align-items:center;gap:10px;padding:18px 16px 6px}
.brandbar .ring{flex:none}
.brandbar .bb-txt{flex-grow:1;display:flex;flex-direction:column;line-height:1.3}
.brandbar .bb-name{font-size:15px;font-weight:700}
.brandbar .bb-sub{font-size:12px;color:var(--faint)}
.avatar{width:40px;height:40px;border-radius:20px;border:1px solid var(--line);background:var(--panel);color:var(--text);font:700 14px var(--sans);display:flex;align-items:center;justify-content:center;cursor:pointer;text-decoration:none;flex:none}
.avatar.sm{width:32px;height:32px;border-radius:16px;font-size:12px;border:0;background:var(--panel2);color:var(--muted);cursor:default}
.avatar.sm.lead{background:var(--accent-soft);color:var(--accent)}
.hello{padding:12px 16px 0;display:flex;flex-direction:column;gap:4px}
h1,.h1{margin:0;font-size:28px;line-height:34px;font-weight:700;letter-spacing:-.01em}
.hello .sub{font-size:14px;color:var(--muted)}

/* ---- section headings ---- */
.sec-h{display:flex;align-items:center;gap:8px;margin-top:8px}
.sec-h .t,.sec{font-size:17px;line-height:24px;font-weight:700;flex-grow:1;color:var(--text)}
.sec-h .aside{font-size:12px;color:var(--faint)}
.sec-h a.aside{font-size:13px;font-weight:600;color:var(--accent);text-decoration:none}
.count{font-size:12px;font-weight:500;color:var(--faint)}
.sec-row{display:flex;justify-content:space-between;align-items:center;gap:10px}

/* ---- chips / badges ---- */
.badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:6px;font-size:12px;line-height:16px;font-weight:600;white-space:nowrap;background:var(--panel2);border:1px solid var(--line);color:var(--muted)}
.badge.red{background:var(--red-soft);border-color:transparent;color:var(--red)}
.badge.amber{background:var(--amber-soft);border-color:transparent;color:var(--amber)}
.badge.green{background:var(--green-soft);border-color:transparent;color:var(--green)}
.badge.accent{background:var(--accent-soft);border-color:transparent;color:var(--accent)}
.badge.num{font-family:var(--mono);font-weight:500}
.badge.lg{padding:4px 10px}
.badges{display:flex;flex-wrap:wrap;gap:6px}

/* ---- cards and list rows ---- */
.card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:14px;display:flex;flex-direction:column;gap:10px}
.list{background:var(--panel);border:1px solid var(--line);border-radius:14px;display:flex;flex-direction:column;overflow:hidden}
.item{padding:12px 14px;display:flex;flex-direction:column;gap:6px;text-decoration:none;color:var(--text);border-bottom:1px solid var(--line)}
.item:last-child{border-bottom:0}
a.item:active,a.card:active{background:var(--panel2)}
a.card{text-decoration:none;color:var(--text)}
.item-top{display:flex;align-items:center;gap:8px}
.item-top .sp{flex-grow:1}
.ref{font-family:var(--mono);font-size:13px;font-weight:500}
.when{font-size:12px;color:var(--faint);white-space:nowrap}
.item-title{font-size:14px;font-weight:600}
.item-sub{font-size:13px;color:var(--muted)}
.item-row{flex-direction:row;align-items:center;gap:10px}
.item-row .grow{flex-grow:1;display:flex;flex-direction:column;gap:2px;min-width:0}
.link{font-size:13px;font-weight:600;color:var(--accent);text-decoration:none;white-space:nowrap}
.mini-steps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;width:120px;flex:none}
.mini-steps span,.steps span{height:4px;border-radius:2px;background:var(--line)}
.mini-steps span.on,.steps span.on{background:var(--accent)}
.progress{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted)}
.empty{font-size:13px;color:var(--muted);padding:4px 2px}
.list .empty{padding:14px}
.row-note{font-size:13px;color:var(--muted)}

/* legacy list rows (still used in a few places) */
.row{display:flex;justify-content:space-between;align-items:center;gap:10px;text-decoration:none;color:inherit}
.row-title{font-size:15px;font-weight:700}
.row-sub{font-size:13px;color:var(--muted)}
.row-meta{font-size:12px;color:var(--faint);white-space:nowrap}

/* ---- step screens ---- */
.topbar{display:flex;align-items:center;gap:6px;padding:14px 12px 4px;position:sticky;top:0;z-index:20;background:var(--bg)}
.back{width:44px;height:44px;display:flex;align-items:center;justify-content:center;border:0;background:transparent;color:var(--text);cursor:pointer;border-radius:10px;flex:none;text-decoration:none}
.back:active{background:var(--panel2)}
.tb-ref{font-family:var(--mono);font-size:15px;font-weight:500}
.tb-stack{flex-grow:1;display:flex;flex-direction:column;line-height:1.3;min-width:0}
.tb-stack .over{font-size:12px;color:var(--faint)}
.tb-stack .title{font-size:17px;line-height:24px;font-weight:700}
.tb-sp{flex-grow:1}
.saved{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--green);padding-right:6px;white-space:nowrap}
.saved.dirty{color:var(--amber)}
.stephead{padding:6px 16px 0;display:flex;flex-direction:column;gap:8px}
.steps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
.step-names{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;font-size:12px;font-weight:600;color:var(--faint)}
.step-names .on{color:var(--accent)}
.step-names .done{color:var(--muted)}
.stephead h1{margin-top:6px}

/* ---- form controls ---- */
.lbl{display:block;font-size:13px;font-weight:600;color:var(--muted);margin:2px 0 -4px}
.lbl .opt{font-weight:400;color:var(--faint)}
.field{display:flex;flex-direction:column;gap:6px}
.field>.lbl{margin:0}
.inp{width:100%;height:44px;border:1px solid var(--line);border-radius:8px;padding:0 12px;font:inherit;font-size:14px;color:var(--text);background:var(--panel2);outline:none;transition:border-color .12s,box-shadow .12s}
.inp::placeholder{color:var(--faint)}
.inp:focus,.ap-field.ap-open{border-color:var(--accent)!important;box-shadow:0 0 0 3px var(--accent-soft)!important}
.inp:disabled{color:var(--muted);opacity:1;background:var(--bg)}
.inp.mono,.inp[data-mono]{font-family:var(--mono);font-size:13px}
.ta{height:auto;min-height:72px;padding:10px 12px;line-height:20px;resize:vertical}
select.inp{appearance:none;-webkit-appearance:none;padding-right:34px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23838DA1' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center}
.inp.bad{border-color:var(--red)}
.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.grid3{display:grid;grid-template-columns:1.2fr .8fr .9fr;gap:8px}
.hint{font-size:12px;color:var(--faint)}
.hint.center{text-align:center}
.hint b{color:var(--muted);font-weight:600}
.unit-inp{position:relative}
.unit-inp .inp{padding-right:40px;font-family:var(--mono);font-weight:500}
.unit-inp .u{position:absolute;right:12px;top:50%;transform:translateY(-50%);font-size:12px;color:var(--faint);pointer-events:none}

/* segmented control (trade, good/bad, photo tag) */
.seg{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:4px;padding:3px;border-radius:10px;background:var(--panel2);border:1px solid var(--line)}
.seg-btn{height:38px;border:0;border-radius:8px;background:transparent;color:var(--muted);font:600 13px var(--sans);cursor:pointer;padding:0 6px;white-space:nowrap}
.seg-btn.on{background:var(--accent-soft);color:var(--accent);font-weight:700}
.seg.trade{grid-auto-columns:auto}
.reading-row{display:flex;align-items:center;gap:10px}
.reading-row .name{flex-grow:1;font-size:14px;font-weight:600}
.gb{display:grid;grid-template-columns:repeat(2,76px);gap:4px;padding:3px;border-radius:10px;background:var(--panel2);border:1px solid var(--line)}
.gb-btn{height:38px;border:0;border-radius:8px;background:transparent;color:var(--muted);font:600 13px var(--sans);cursor:pointer}
.gb-btn.good.on{background:var(--green-soft);color:var(--green);font-weight:700}
.gb-btn.bad.on{background:var(--red-soft);color:var(--red);font-weight:700}

/* choice chips (type of job, job status) */
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{height:34px;padding:0 12px;border-radius:8px;border:1px solid var(--line);background:transparent;font:600 13px var(--sans);color:var(--text);cursor:pointer}
.chip.on{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}

/* ---- buttons ---- */
.btn{height:50px;border:0;border-radius:10px;background:var(--accent);color:var(--accent-ink);font:700 15px var(--sans);cursor:pointer;flex-grow:1;display:inline-flex;align-items:center;justify-content:center;gap:8px;text-decoration:none;padding:0 16px}
.btn:disabled{opacity:.55}
.btn:active{filter:brightness(.94)}
.btn.block{width:100%;height:52px;flex:none}
.btn-sec{height:50px;border:1px solid var(--line);border-radius:10px;background:var(--panel2);color:var(--text);font:600 14px var(--sans);cursor:pointer;padding:0 16px;display:inline-flex;align-items:center;justify-content:center;gap:6px;text-decoration:none}
.btn-sec.danger{color:var(--red);font-weight:700}
.btn2{height:44px;border:1px dashed var(--line);border-radius:10px;background:transparent;color:var(--accent);font:600 13px var(--sans);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px}
.btn2.solid{border-style:solid}
.btn2.sm{height:32px;padding:0 12px;border-style:solid}
.btn2-danger,.btn3-danger{height:44px;border:1px solid var(--line);border-radius:10px;background:var(--panel);color:var(--red);font:700 13px var(--sans);cursor:pointer;padding:0 14px}
.icon-btn{border:0;background:transparent;font:600 13px var(--sans);color:var(--accent);cursor:pointer;padding:4px}
.icon-sq{width:44px;height:44px;border-radius:10px;border:1px solid var(--line);background:var(--panel);color:var(--muted);display:flex;align-items:center;justify-content:center;cursor:pointer;flex:none}
.footer-bar{position:sticky;bottom:0;z-index:20;background:var(--panel);border-top:1px solid var(--line);padding:12px 16px calc(14px + env(safe-area-inset-bottom,0px));display:flex;gap:10px;max-width:520px;margin:0 auto;width:100%}
.footer-bar .btn-sec{width:120px;flex:none}

/* ---- bottom tab bar ---- */
.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:30;background:var(--panel);border-top:1px solid var(--line);padding:8px 24px calc(12px + env(safe-area-inset-bottom,0px))}
.tabbar-in{max-width:520px;margin:0 auto;display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
.tab{position:relative;display:flex;flex-direction:column;align-items:center;gap:4px;color:var(--muted);text-decoration:none;font-size:12px;font-weight:600;padding:4px 0}
.tab.on{color:var(--accent)}
.tab .dot{position:absolute;top:-2px;left:56%;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--accent);color:var(--accent-ink);font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center}

/* ---- notices ---- */
.notice{font-size:13px;color:var(--amber);background:var(--amber-soft);border-radius:10px;padding:10px 12px;line-height:1.45}
.notice b{font-weight:700}
.notice.red{color:var(--red);background:var(--red-soft)}
.err{background:var(--red-soft);color:var(--red);border-radius:10px;padding:10px 12px;font-size:13px}
.err ul{margin:6px 0 0 18px;padding:0}
.warn-txt{color:var(--amber);font-weight:600}

/* ---- client combo ---- */
.combo{position:relative}
.combo-list{position:absolute;left:0;right:0;top:calc(100% + 4px);background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);z-index:30;max-height:300px;overflow-y:auto;padding:4px}
.combo-opt{padding:8px 10px;border-radius:8px;font-size:14px;cursor:pointer;color:var(--text)}
.combo-opt:first-child,.combo-opt:active,.combo-opt:hover{background:var(--accent-soft)}
.combo-opt.add:hover,.combo-opt.add:active{background:var(--panel2)}
.combo-opt mark{background:none;color:var(--accent);font-weight:700}
.combo-opt.add{color:var(--accent);font-weight:600;font-size:13px;border-top:1px solid var(--line);border-radius:0 0 8px 8px;background:transparent;padding:10px}
.combo-empty{padding:10px;font-size:13px;color:var(--faint)}
.cc-sub{font-size:12px;color:var(--faint)}
.cc-name{font-size:14px;font-weight:600}
.combo-chip{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:44px;padding:6px 6px 6px 12px;border:1px solid var(--line);border-radius:8px;background:var(--panel2)}
.so-tag{font-family:var(--mono);font-size:12px;color:var(--faint)}

/* ---- repeating rows ---- */
.row-card{border:1px solid var(--line);border-radius:10px;padding:10px;display:flex;flex-direction:column;gap:8px;margin-bottom:8px;background:var(--panel2)}
.row-card .inp{background:var(--panel)}
.row-card-h{display:flex;justify-content:space-between;align-items:center;font-size:12px;font-weight:600;color:var(--faint)}
.row-x{width:32px;height:32px;border:0;border-radius:8px;background:transparent;color:var(--faint);font-size:14px;cursor:pointer}
.row-x:active{background:var(--red-soft);color:var(--red)}
.check-row{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--muted)}
.check-row input{width:18px;height:18px;accent-color:var(--accent)}

/* ---- photos ---- */
.photo-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.photo-thumb,.photo-add{height:72px;border-radius:10px;display:flex;align-items:center;justify-content:center;cursor:pointer;position:relative;overflow:hidden}
.photo-thumb{background:var(--panel2);border:1px solid var(--line);padding:0;font:inherit;color:var(--faint)}
.photo-thumb img{width:100%;height:100%;object-fit:cover}
.photo-add{border:2px dashed var(--accent);color:var(--accent);background:var(--accent-soft)}
.tag{position:absolute;left:4px;bottom:4px;padding:1px 6px;border-radius:6px;font-size:11px;font-weight:600;background:var(--panel)}
.tag.before{color:var(--amber);background:var(--amber-soft)}
.tag.after{color:var(--green);background:var(--green-soft)}
.photo-big{width:100%;max-height:45vh;object-fit:contain;border-radius:10px;background:#000}

/* ---- team, signatures ---- */
.staff-row{display:flex;align-items:center;gap:10px;font-size:14px;min-height:40px}
.staff-row .nm{flex-grow:1;min-width:0}
.staff-row .nm b{font-weight:600}
.staff-row .code{font-family:var(--mono);font-size:12px;color:var(--faint)}
.staff-row .x{border:0;background:transparent;color:var(--faint);font-size:14px;cursor:pointer;width:32px;height:32px;border-radius:8px}
.lead{display:inline-flex;padding:2px 8px;border-radius:6px;background:var(--accent-soft);color:var(--accent);font-size:12px;font-weight:600}
.sig-h{display:flex;align-items:center;margin-top:2px}
.sig-h .lbl{flex-grow:1;margin:0}
.sigpad{width:100%;height:110px;border:2px dashed var(--accent);border-radius:10px;background:#FFFFFF;touch-action:none;display:block}
.sig-wrap{position:relative}
.sig-wrap .ph{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:13px;color:#666D7C;pointer-events:none}
.sig-saved{height:110px;border:1px solid var(--line);border-radius:10px;background:#fff;display:flex;align-items:center;justify-content:center;overflow:hidden;font-size:13px;color:#171A21}
.sig-saved img{max-width:100%;max-height:100%;object-fit:contain}
.hist-row{font-size:13px;color:var(--muted);padding:3px 0}
.card.confirm{border-color:var(--red);background:var(--red-soft);color:var(--red)}
.confirm-txt{flex:1;font-size:13px;align-self:center}

/* ---- pick lists (staff picker) ---- */
.picklist{max-height:180px;overflow-y:auto;border:1px solid var(--line);border-radius:10px;background:var(--panel2)}
.picklist.tall{max-height:52vh}
.pick-row{display:flex;align-items:center;gap:10px;padding:10px 12px;font-size:14px;border-bottom:1px solid var(--line);cursor:pointer}
.pick-row:last-child{border-bottom:0}
.pick-row input{width:18px;height:18px;accent-color:var(--accent)}
.pick-empty{padding:10px 12px;font-size:13px;color:var(--faint)}

/* ---- reviewer ---- */
.facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.fact{display:flex;flex-direction:column;gap:2px;min-width:0}
.fact .k{font-size:12px;color:var(--faint)}
.fact .v{font-size:14px;font-weight:600}
.fact .v.mono{font-weight:500}
.unit-h{display:flex;align-items:center;gap:8px}
.unit-h .t{font-size:15px;font-weight:700;flex-grow:1}
.para{font-size:14px;line-height:20px}
.para b{font-weight:700;margin-right:4px}
.rd{padding:3px 8px;border-radius:6px;background:var(--panel2);border:1px solid var(--line);font-family:var(--mono);font-size:12px;color:var(--muted)}
.rd.good{background:var(--green-soft);color:var(--green);border-color:transparent;font-family:var(--sans);font-weight:600}
.rd.bad{background:var(--red-soft);color:var(--red);border-color:transparent;font-family:var(--sans);font-weight:600}

/* ---- me ---- */
.card.me-card{flex-direction:row;align-items:center;gap:12px}
.me-card .avatar{width:52px;height:52px;border-radius:26px;font-size:18px;cursor:default}

.grid2 .ap-field .ap-rel{display:none}

/* ---- sheets / modals ---- */
.modal-backdrop{position:fixed;inset:0;background:var(--scrim);display:flex;align-items:flex-end;justify-content:center;z-index:50}
.modal{background:var(--panel);color:var(--text);border-radius:18px 18px 0 0;padding:18px 16px calc(20px + env(safe-area-inset-bottom,0px));width:100%;max-width:520px;max-height:88vh;overflow-y:auto;display:flex;flex-direction:column;gap:10px}
.modal form{display:flex;flex-direction:column;gap:10px}
.modal .sec{margin-bottom:2px}
.modal-actions{display:flex;gap:10px;margin-top:6px;align-items:center}
.modal-actions .btn,.modal-actions .btn-sec{height:48px}

/* ---- toast ---- */
.toast{position:fixed;left:50%;bottom:calc(96px + env(safe-area-inset-bottom,0px));transform:translate(-50%,20px);background:var(--text);color:var(--bg);font-size:13px;font-weight:600;padding:10px 16px;border-radius:10px;opacity:0;pointer-events:none;transition:all .2s;z-index:100;max-width:88vw;text-align:center}
.toast.show{opacity:1;transform:translate(-50%,0)}
.toast.bad{background:var(--red);color:#fff}

/* ---- login ---- */
.login-screen{justify-content:center;padding:40px 24px;gap:6px}
.login-screen .ring{margin-bottom:14px}
.login-screen .sub{color:var(--muted);font-size:14px;margin:0 0 18px}
.login-screen form{display:flex;flex-direction:column;gap:12px}
.login-screen .btn{margin-top:6px}

