:root{--pri:#922A99;--pri2:#B04BB7;--mag:#E8315B;--dark:#3F4044;--grey:#6D6E71;--bg:#f4f3f6;--card:#fff;--tx:#14202b;--mut:#5b6b7a;--bd:#d3dce5;--ok:#1b8a4b;--bad:#c62828;--warn:#fff4e5;--r:12px}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html{-webkit-text-size-adjust:100%;scroll-padding-top:72px;scroll-padding-bottom:110px}
body{margin:0;font:16px/1.4 system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;color:var(--tx);background:var(--bg);padding-bottom:90px}
body.noscroll{overflow:hidden}
.bar{position:sticky;top:0;z-index:20;background:#fff;color:var(--dark);border-bottom:3px solid transparent;border-image:linear-gradient(90deg,var(--pri),var(--mag)) 1;display:flex;align-items:center;gap:6px;padding:8px 10px;padding-top:max(8px,env(safe-area-inset-top));min-height:52px}
.bar-b{width:36px;height:36px;border:0;background:transparent;color:var(--pri);font-size:30px;line-height:1;display:inline-block}
.bar-t{flex:1;font-weight:700;font-size:17px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bar-p{font-size:13px;white-space:nowrap}
.upd{position:sticky;top:52px;z-index:19;width:100%;border:0;background:#ffb300;color:#000;font-weight:700;padding:10px}
.screen{max-width:760px;margin:0 auto;padding:12px}
.card{background:var(--card);border:1px solid var(--bd);border-radius:var(--r);padding:12px;margin:0 0 12px}
.card.sum{background:#f6eef7;border-color:#e2cbe5}
.card.warnbox{background:var(--warn);border-color:#f0c37a}.card.warnbox ul{margin:6px 0 6px 18px;padding:0;font-size:14px}
.card.okbox{background:#e8f6ee;border-color:#a8d9bb}
h3.gh{margin:0 0 8px;font-size:15px;color:var(--pri);text-transform:uppercase;letter-spacing:.3px}
.field{margin:0 0 14px}
.fl{display:block;font-weight:600;font-size:14.5px;margin-bottom:5px}.req{color:var(--bad)}.unit{font-weight:400;color:var(--mut)}
.hint{font-size:12.5px;color:var(--mut);margin-top:4px}.center{text-align:center}
.in{width:100%;font:inherit;padding:11px 12px;border:1.5px solid var(--bd);border-radius:10px;background:#fff;color:var(--tx);min-height:46px}
.in:focus{outline:none;border-color:var(--pri2);box-shadow:0 0 0 3px rgba(43,108,176,.18)}
textarea.in{resize:vertical}
.row{display:flex;gap:8px;align-items:center}.row.wrap{flex-wrap:wrap}.row .in{flex:1;min-width:0}
.unit-s{color:var(--mut);white-space:nowrap}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{border:1.5px solid var(--bd);background:#fff;color:var(--tx);border-radius:22px;padding:9px 14px;font:inherit;font-size:15px;min-height:42px}
.chip.on{background:var(--pri);border-color:var(--pri);color:#fff;font-weight:600}
.btn{font:inherit;font-weight:600;border:1.5px solid var(--pri);background:#fff;color:var(--pri);border-radius:10px;padding:10px 14px;min-height:46px;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:6px}
.btn.sm{min-height:38px;padding:6px 10px;font-size:14px}
.btn.primary{background:var(--pri);color:#fff}.btn.danger{border-color:var(--bad);color:var(--bad)}.btn.big{min-height:54px;font-size:17px}
.btn.block{width:100%}.btn:disabled{opacity:.5}
.chk{display:flex;gap:8px;align-items:center;margin:8px 0}.chk input{width:22px;height:22px}
.tabs{display:flex;gap:6px;overflow-x:auto;margin:0 0 10px;padding-bottom:4px}
.tab{flex:none;border:1.5px solid var(--bd);background:#fff;border-radius:10px;padding:9px 12px;font:inherit;font-size:14.5px;white-space:nowrap}
.tab.on{background:var(--pri);color:#fff;border-color:var(--pri);font-weight:700}.tab.add{border-style:dashed;color:var(--pri)}.tab.bad:not(.on){border-color:var(--bad);color:var(--bad)}
.cards{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:0 0 12px}
.scard{display:flex;flex-direction:column;gap:3px;text-align:left;background:#fff;border:1.5px solid var(--bd);border-radius:var(--r);padding:12px;font:inherit;min-height:104px}
.scard.warn{border-color:#f0a030}.scard.go{background:linear-gradient(135deg,var(--pri),var(--mag));color:#fff;border-color:var(--pri)}
.sc-i{font-size:24px}.sc-t{font-weight:700}.sc-s{font-size:12.5px;color:var(--mut)}.scard.go .sc-s{color:#f6e4f7}
.bar2{height:7px;background:#e3eaf1;border-radius:6px;overflow:hidden;margin-top:auto}.bar2 i{display:block;height:100%;background:var(--ok)}.bar2.big{height:12px;margin:8px 0}
.pcard{display:block;background:#fff;border:1.5px solid var(--bd);border-radius:var(--r);padding:12px;margin:0 0 10px;color:inherit;text-decoration:none}
.pc-h{display:flex;justify-content:space-between;gap:8px}.pc-pct{font-weight:700;color:var(--pri)}
.empty{padding:24px;text-align:center;color:var(--mut)}
.doc{padding:10px 0;border-top:1px solid #edf1f5}.doc:first-of-type{border-top:0}.doc-t{font-weight:600;margin-bottom:6px;font-size:14.5px}
.fab{position:fixed;right:16px;bottom:calc(18px + env(safe-area-inset-bottom));width:64px;height:64px;border-radius:50%;border:0;background:linear-gradient(135deg,var(--pri),var(--mag));color:#fff;font-size:28px;box-shadow:0 4px 14px rgba(0,0,0,.35);z-index:15}
.toast{position:fixed;left:50%;bottom:100px;transform:translate(-50%,20px);background:#222;color:#fff;padding:10px 16px;border-radius:22px;opacity:0;pointer-events:none;transition:.2s;z-index:100;max-width:90%;text-align:center}.toast.on{opacity:1;transform:translate(-50%,0)}
.modal-back{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:90;display:flex;align-items:flex-end;justify-content:center}
.modal{background:#fff;width:100%;max-width:560px;max-height:92vh;border-radius:16px 16px 0 0;display:flex;flex-direction:column}
@media(min-width:600px){.modal-back{align-items:center}.modal{border-radius:16px}}
.modal-h{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;border-bottom:1px solid var(--bd)}.modal-h .x{border:0;background:none;font-size:20px;width:40px;height:40px}
.modal-b{padding:14px;overflow:auto}.modal-f{display:flex;gap:8px;padding:10px 14px calc(10px + env(safe-area-inset-bottom));border-top:1px solid var(--bd)}.modal-f .btn{flex:1}
.sens-val{font-size:56px;font-weight:700;text-align:center;color:var(--pri);margin:8px 0}
/* camera */
.cam{position:fixed;inset:0;background:#000;z-index:70;color:#fff}
.cam video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.cam-msg{position:absolute;left:16px;right:16px;top:45%;text-align:center;font-size:15px;color:#ffd}
.cam-flash{position:absolute;inset:0;background:#fff;opacity:0;pointer-events:none}.cam-flash.on{opacity:.8}
.cam-top{position:absolute;top:0;left:0;right:0;padding:max(8px,env(safe-area-inset-top)) 8px 8px;background:linear-gradient(#000a,#0000);display:grid;grid-template-columns:44px 1fr;gap:6px;align-items:center}
.cam-top .cam-row{grid-column:1/3}
.cam-chips{display:flex;gap:6px;overflow-x:auto;padding:2px}
.cam .chip{background:#0007;color:#fff;border-color:#fff6;white-space:nowrap;padding:7px 12px;min-height:38px;font-size:14px}.cam .chip.on{background:var(--pri);border-color:var(--pri)}
.cam-mid{position:absolute;left:0;right:0;bottom:150px;padding:0 8px}.cam-mid .cam-chips{background:#0006;border-radius:12px;padding:6px}
.cam-row{display:flex;gap:8px;align-items:center}.cam-item{background:#0007;color:#fff;border:1px solid #fff6;border-radius:8px;padding:6px;min-height:38px;max-width:50%}
.cam-grp{background:#0007;border-radius:14px;padding:6px 10px;font-weight:700}.cam-grp.bad{background:#b71c1c}
.cam-btn{width:44px;height:44px;border-radius:50%;border:0;background:#0008;color:#fff;font-size:20px}.cam-btn.on{background:#fdd835;color:#000}.cam-btn.ok{width:auto;border-radius:22px;padding:0 16px;background:#1b8a4b;font-weight:700;font-size:16px}
.cam-bot{position:absolute;left:0;right:0;bottom:0;padding:12px 14px calc(14px + env(safe-area-inset-bottom));display:flex;align-items:center;justify-content:space-between;background:linear-gradient(#0000,#000b)}
.cam-side{display:flex;gap:10px;align-items:center;min-width:120px}.cam-side:last-child{justify-content:flex-end}
.shutter{width:76px;height:76px;border-radius:50%;border:5px solid #fff;background:#ffffff55;padding:0}.shutter:active{background:#fff}
.cam-done{position:relative;width:48px;height:48px}.cam-last{width:48px;height:48px;object-fit:cover;border-radius:8px;border:2px solid #fff}.cam-cnt.wait{background:#fdd835;color:#000}.cam-cnt{position:absolute;right:-6px;top:-6px;background:#e65100;border-radius:12px;min-width:22px;text-align:center;font-size:13px;font-weight:700;padding:1px 5px}
/* photos */
.pgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}@media(min-width:560px){.pgrid{grid-template-columns:repeat(4,1fr)}}
.pcell{position:relative;aspect-ratio:1;border:0;padding:0;background:#dde4ea;border-radius:8px;overflow:hidden}.pcell img{width:100%;height:100%;object-fit:cover}
.pcell.abn{outline:3px solid var(--bad)}
.pc-n{position:absolute;left:4px;top:4px;background:#000a;color:#fff;border-radius:10px;padding:0 6px;font-size:12px}.pc-a{position:absolute;right:4px;top:4px;background:#1b8a4b;color:#fff;border-radius:10px;padding:0 6px;font-size:12px}.pc-b{position:absolute;right:4px;bottom:22px;font-size:16px}
.pc-t{position:absolute;left:0;right:0;bottom:0;background:#000b;color:#fff;font-size:11px;padding:2px 4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:left}
.viewer{position:fixed;inset:0;background:#111;z-index:65;display:flex;flex-direction:column;color:#fff}
.v-top{padding:max(6px,env(safe-area-inset-top)) 8px 4px}.v-stage{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;background:#000}.v-img{max-width:100%;max-height:100%;object-fit:contain}
.v-info{background:#fff;color:var(--tx);padding:10px 12px calc(10px + env(safe-area-inset-bottom));max-height:46vh;overflow:auto;display:flex;flex-direction:column;gap:8px}
.v-info .row{justify-content:space-between}
/* annotate */
.an{position:fixed;inset:0;background:#202327;z-index:80;display:flex;flex-direction:column;color:#fff}
.an-top{display:flex;align-items:center;gap:8px;padding:max(8px,env(safe-area-inset-top)) 8px 8px}.an-top b{flex:1}
.an-stage{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:4px;overflow:hidden}.an-cv{max-width:100%;max-height:100%;background:#fff;touch-action:none}
.an-bar{padding:8px 8px calc(8px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:8px;background:#2c3036}.an-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.an-row .sp{flex:1}
.tool{min-width:44px;height:44px;border-radius:10px;border:1.5px solid #666;background:#3a3f46;color:#fff;font-size:18px}.tool.on{background:var(--pri);border-color:var(--pri)}
.sw{width:36px;height:36px;border-radius:50%;border:3px solid #888}.sw.on{border-color:#fff;box-shadow:0 0 0 2px #e65100}
.pv{position:fixed;inset:0;background:#fff;z-index:75;display:flex;flex-direction:column}.pv-top{display:flex;gap:10px;align-items:center;padding:max(6px,env(safe-area-inset-top)) 8px 6px;background:var(--pri);color:#fff}.pv-fr{flex:1;border:0;width:100%;background:#e9edf1}
.res{padding:10px 0;border-top:1px solid #edf1f5}.res:first-of-type{border-top:0}.res-n{font-weight:600;word-break:break-all;margin-bottom:6px}
/* ---- v2 ---- */
.bar-logo{height:30px;display:block}
.btn.accent{background:var(--mag);border-color:var(--mag);color:#fff}
.shot{border:1.5px solid var(--bd);border-radius:10px;padding:10px;margin:0 0 10px;background:#fff}
.shot.req{border-left:4px solid var(--pri)}
.shot-h{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:4px}
.shot-n{background:var(--pri);color:#fff;border-radius:10px;padding:0 8px;font-size:13px;font-weight:700}
.tag{font-size:12px;border:1px solid var(--pri);color:var(--pri);border-radius:10px;padding:1px 8px}.tag.warn{border-color:var(--mag);background:var(--mag);color:#fff}
.shot-th{display:flex;gap:6px;overflow-x:auto;margin:6px 0 8px}
.th{position:relative;flex:none;width:88px;height:88px;border:0;padding:0;border-radius:8px;overflow:hidden;background:#ddd}.th img{width:100%;height:100%;object-fit:cover}.th.abn{outline:3px solid var(--bad)}
.th-a{position:absolute;right:3px;top:3px;background:var(--pri);color:#fff;border-radius:8px;padding:0 5px;font-size:12px}
.sub-h{font-weight:700;margin:12px 0 6px;color:var(--dark);border-bottom:1px solid var(--bd);padding-bottom:3px}
.issue{border:1px solid var(--bd);border-radius:10px;padding:10px;margin:0 0 10px}.issue .sp,.row .sp{flex:1}
details.card summary{cursor:pointer;padding:4px 0}
.cam-title{color:#fff;font-weight:700;align-self:center}
.an-tabs{gap:6px}.an-tab{flex:1;border:0;border-radius:8px;padding:8px;background:#3a3f46;color:#ddd;font-weight:600}.an-tab.on{background:var(--pri);color:#fff}
.an-tools{overflow-x:auto;flex-wrap:nowrap}.an-tools .tool{flex:none;padding:0 10px}
.an-stage{position:relative}
.an-float{position:absolute;left:8px;right:8px;bottom:8px;display:flex;gap:8px;align-items:center;justify-content:flex-end;pointer-events:none}
.an-float>*{pointer-events:auto}.an-hint{flex:1;color:#fff;font-size:13px;text-shadow:0 1px 2px #000}
.tool:disabled{opacity:.35}.lang-sw{display:flex;border:1.5px solid var(--pri);border-radius:8px;overflow:hidden}.lang-sw button{border:0;background:#fff;color:var(--pri);font-weight:700;padding:6px 10px;font-size:13px}.lang-sw button.on{background:var(--pri);color:#fff}
