:root{color:#172e29;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;background:#f3f6f4;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-weight:400;line-height:1.5}*{box-sizing:border-box}body{min-width:320px;margin:0}button{font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}button:disabled{opacity:.6;cursor:wait}button:focus-visible{outline-offset:4px;outline:3px solid #55ac8b}h1,h2,p{margin:0}svg{flex-shrink:0}button{transition:background .15s}::selection{background:#c2e7d5}.patrol-title{letter-spacing:-.8px;margin:22px 0 16px;font-size:30px}.patrol-home{background:#fff;border:1px solid #dce6de;border-radius:20px;margin-top:20px;padding:20px;box-shadow:0 8px 28px #163d3206}.patrol-summary{color:#456952;justify-content:space-between;align-items:center;display:flex}.patrol-state{color:#52755e;background:#eef5ee;border-radius:20px;align-items:center;gap:7px;padding:7px 10px;font-size:11px;font-weight:700;display:inline-flex}.patrol-state i{background:currentColor;border-radius:50%;width:6px;height:6px}.patrol-state.running{color:#167854;background:#e5f5ee}.patrol-home h2{letter-spacing:-.5px;margin:18px 0 8px;font-size:21px;line-height:1.2}.patrol-caption{color:#728177;font-size:12px;line-height:1.6}.patrol-meter{justify-content:space-between;align-items:baseline;margin:24px 0 9px;display:flex}.patrol-meter>strong{letter-spacing:-1px;color:#214e3c;font-size:34px}.patrol-meter small{margin-left:3px;font-size:16px}.patrol-meter>span{color:#748077;font-size:11px}.patrol-meter b{color:#324f3e}.patrol-home progress{appearance:none;background:#eaf0e9;border:0;border-radius:10px;width:100%;height:10px;display:block;overflow:hidden}.patrol-home progress::-webkit-progress-bar{background:#eaf0e9}.patrol-home progress::-webkit-progress-value{background:#478260;transition:width .4s}.patrol-home progress::-moz-progress-bar{background:#478260}.patrol-action{justify-content:center;width:100%;min-height:48px;margin-top:20px}.patrol-list-heading{justify-content:space-between;align-items:center;margin-top:26px;display:flex}.patrol-list-heading h3{font-size:13px}.patrol-list-heading>span{color:#7e897e;font-size:11px}.patrol-points{margin:12px 0 0;padding:0;list-style:none}.patrol-points li{border-top:1px solid #edf1eb;gap:11px;padding:15px 0;display:flex}.patrol-point-status{color:#8b9487;background:#f1f2ee;border-radius:50%;flex:0 0 30px;place-items:center;height:30px;display:grid}.done .patrol-point-status{color:#328052;background:#e6f3e8}.patrol-points li>div{min-width:0}.patrol-points strong{overflow-wrap:anywhere;font-size:13px}.patrol-points p{color:#6d7f70;margin:4px 0;font-size:12px}.patrol-points small{color:#869083;margin-top:5px;font-size:10px;display:block}.patrol-points .done small{color:#478260}.patrol-points blockquote{white-space:pre-wrap;overflow-wrap:anywhere;background:#f5f8f2;border-left:2px solid #8aaf94;border-radius:0 7px 7px 0;margin:10px 0 0;padding:10px 12px;font-size:12px;line-height:1.6}.patrol-error{color:#a14532;background:#fff1ed;border-radius:10px;margin-top:14px;padding:13px;font-size:13px;line-height:1.5}.patrol-error button{width:100%;margin-top:10px}.patrol-dialog{color:#213f31;border:1px solid #dce6de;border-radius:20px;width:min(440px,100vw - 24px);max-height:calc(100dvh - 32px);margin:auto;padding:22px;overflow-y:auto;box-shadow:0 24px 90px #142e3260}.patrol-dialog::backdrop{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#0c292ac2}.patrol-dialog header{justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:20px;display:flex}.patrol-dialog h2{font-size:21px;line-height:1.3}.dialog-close{color:#637763;background:#f0f4ed;border:0;border-radius:50%;flex-shrink:0;place-items:center;padding:7px;display:grid}.patrol-dialog .camera-scanner{border-radius:12px;overflow:hidden}.patrol-camera-tip{color:#6c7b6f;margin-top:14px;font-size:12px;line-height:1.6}.identified-point{color:#306746;background:#e9f5ea;border:1px solid #c9e4ce;border-radius:12px;align-items:center;gap:13px;margin-bottom:20px;padding:17px;display:flex}.identified-point strong{overflow-wrap:anywhere;font-size:17px}.identified-point p{margin-top:6px;font-size:12px}.patrol-dialog label{margin-bottom:10px;font-size:13px;font-weight:700;display:block}.patrol-dialog label span{color:#83917f;font-weight:400}.patrol-dialog textarea{resize:vertical;width:100%;min-height:110px;font:inherit;border:1px solid #d3dece;border-radius:10px;padding:13px;font-size:14px;line-height:1.5}.patrol-dialog textarea:focus{outline-offset:2px;outline:2px solid #688f5f}.patrol-dialog form>small{color:#7c8874;margin-top:7px;font-size:10px;display:block}.patrol-dialog .eyebrow{font-size:9px}.home .profile{margin-top:0}.home .logout{margin-top:22px}.patrol-finish-button{color:#325640;border-color:#b9cbbb;margin-top:10px}.patrol-closing-count{color:#346146;background:#edf6ed;border:1px solid #cfe1d0;border-radius:14px;align-items:center;gap:15px;padding:18px;display:flex}.patrol-closing-count>div{flex-direction:column;gap:3px;display:flex}.patrol-closing-count strong{letter-spacing:-1px;font-size:30px}.patrol-closing-count span{font-size:12px}.patrol-closing-count>b{margin-left:auto;font-size:19px}.patrol-close-caption{color:#6c7b6f;margin:12px 0 22px;font-size:12px;line-height:1.6}.patrol-close-caption.with-pending{color:#8d6b2d;background:#fcf7e9;border-radius:8px;padding:12px}.patrol-finished{color:#425e3f;background:#f0f6ed;border:1px solid #dbe8d5;border-radius:12px;margin-top:20px;padding:15px;font-size:12px;line-height:1.6}.patrol-finished>strong{display:block}.patrol-finished>span{text-transform:uppercase;letter-spacing:1px;margin-top:12px;font-size:10px;font-weight:700;display:block}.patrol-closing-summary{white-space:pre-wrap;overflow-wrap:anywhere;margin:5px 0 0}.app-shell{background:#fafbf9;flex-direction:column;max-width:480px;min-height:100dvh;margin:0 auto;display:flex}.app-header{padding:calc(22px + env(safe-area-inset-top)) 24px 19px;border-bottom:1px solid #e5ebe6;justify-content:space-between;align-items:center;display:flex}.brand{letter-spacing:1px;align-items:center;gap:10px;font-size:25px;font-weight:800;line-height:1.1;display:flex}.brand-mark{color:#fff;background:#173e32;border-radius:12px;place-items:center;width:43px;height:45px;display:grid}.brand-subtitle{letter-spacing:1.2px;color:#62766c;margin-top:6px;font-size:8px;font-weight:600;display:block}.app-label{letter-spacing:1.1px;color:#76847c;font-size:9px;font-weight:700}.login,.home{flex:1;padding:24px}.installation{color:#456452;background:#eef4ee;border:1px solid #dce7df;border-radius:7px;align-items:center;gap:6px;padding:6px 9px;font-size:12px;font-weight:600;display:inline-flex}.intro{margin:22px 0}.eyebrow{letter-spacing:1.8px;color:#668071;margin-bottom:8px;font-size:10px;font-weight:700;display:block}h1{letter-spacing:-1.4px;font-size:38px;font-weight:750;line-height:1.13}.intro p{color:#708077;margin-top:13px;font-size:13px;line-height:1.65}.scanner-card{background:#fff;border:1px solid #dce4de;border-radius:18px;overflow:hidden;box-shadow:0 8px 24px #172e2906}.scanner-card.warning{border-color:#d7b652}.scanner-card.danger{border-color:#e0a1a0}.camera-placeholder{background:radial-gradient(#eaf1e9 0,#f5f7f2 75%);flex-direction:column;justify-content:center;align-items:center;gap:9px;min-height:268px;padding:22px;display:flex}.qr-symbol{color:#4c765d;place-items:center;width:106px;height:91px;margin-bottom:5px;display:grid}.camera-placeholder strong{font-size:16px}.camera-placeholder p{color:#758175;font-size:12px}.primary,.secondary{border-radius:10px;justify-content:center;align-items:center;gap:9px;min-height:48px;padding:12px 20px;font-size:14px;font-weight:650;display:flex}.primary{color:#fff;background:#214b3c;border:1px solid #214b3c;width:100%;margin-top:10px}.primary:hover{background:#163b2c}.secondary{color:#31543f;background:#fff;border:1px solid #dbe3dd}.scanner-footer{color:#7c877e;justify-content:center;align-items:center;gap:8px;min-height:46px;padding:14px 12px;font-size:11px;display:flex}.live-dot{background:#a9b6ac;border-radius:50%;flex-shrink:0;width:6px;height:6px}.live-dot.on{background:#4c9d6c;box-shadow:0 0 0 3px #e7f4eb}.scan-tip{color:#829087;text-align:left;justify-content:center;align-items:center;gap:9px;margin:24px 0 0;font-size:11px;display:flex}.app-footer{color:#8d9b91;letter-spacing:.7px;padding:22px 12px calc(20px + env(safe-area-inset-bottom));text-align:center;font-size:9px}.app-footer span{margin:0 7px}.camera-scanner{color:#fff;background:#14261f;height:286px;position:relative;overflow:hidden}.camera-scanner video{object-fit:cover;width:100%;height:100%}.camera-guide{pointer-events:none;border:2px solid #cbebc9;border-radius:14px;width:66%;height:60%;position:absolute;top:19%;left:17%;box-shadow:0 0 0 130px #051e2440}.camera-badge{background:#142b25b0;border:1px solid #ffffff25;border-radius:6px;align-items:center;gap:5px;padding:5px 8px;font-size:9px;display:flex;position:absolute;top:12px;left:12px}.camera-badge span{background:#9ae3a7;border-radius:50%;width:5px;height:5px}.camera-caption{text-align:center;background:#12231ecd;padding:13px 10px;font-size:11px;position:absolute;bottom:0;left:0;right:0}.camera-overlay{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:15px;padding:28px;font-size:13px;display:flex;position:absolute;inset:0}.camera-retry{color:#fff;background:#274437;border:1px solid #92b4a3;border-radius:8px;min-height:44px;padding:9px 16px}.alert{border:1px solid;border-radius:12px;align-items:flex-start;gap:11px;margin-top:16px;padding:15px 13px;font-size:12px;line-height:1.5;display:flex}.alert strong{margin-bottom:4px;font-size:13px;display:block}.alert.warning{color:#765616;background:#fff8df;border-color:#ecda9b}.alert.danger{color:#9a3339;background:#fff0ef;border-color:#f0c9c9}.retry{width:100%;margin-top:12px}.loading{color:#6c8274;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:20px;min-height:400px;font-size:13px;display:flex}.spinner{border:2px solid #bed3c4;border-top-color:#27503c;border-radius:50%;width:24px;height:24px;animation:.8s linear infinite spin;display:inline-block}.spinner.small{width:13px;height:13px}.welcome{padding:28px 0}.welcome-icon{color:#367746;background:#e5f2e4;border-radius:22px;place-items:center;width:66px;height:66px;margin-bottom:22px;display:grid}.welcome h1{overflow-wrap:anywhere;font-size:31px}.welcome p{color:#748278;margin-top:15px;font-size:14px}.profile{background:#fff;border:1px solid #dce6df;border-radius:14px;justify-content:space-between;align-items:center;gap:12px;padding:17px 15px;display:flex}.profile strong,.profile span:not(.status){display:block}.profile strong{font-size:14px}.profile div>span:last-child{color:#7e8a81;margin-top:3px;font-size:12px}.profile .eyebrow{margin:0 0 5px}.status{color:#448249;white-space:nowrap;background:#edf6ea;border-radius:20px;align-items:center;gap:5px;padding:5px 8px;font-size:10px;display:flex}.status i{background:currentColor;border-radius:50%;width:5px;height:5px}.home-placeholder{color:#5b7f61;background:#eff4ee;border:1px dashed #cfdcce;border-radius:15px;margin:20px 0;padding:26px 20px}.home-placeholder h2{color:#284532;margin:13px 0 8px;font-size:18px}.home-placeholder p{color:#78877b;font-size:13px}.home-placeholder>span{background:#e0eadd;border-radius:5px;margin-top:16px;padding:4px 8px;font-size:10px;display:inline-block}.logout{width:100%;margin-top:24px}@keyframes spin{to{transform:rotate(360deg)}}@media (width>=600px){.app-shell{border-inline:1px solid #e1e9e1;box-shadow:0 0 70px #1636200a}}@media (width<=360px){.app-header,.login,.home{padding-inline:18px}h1{font-size:34px}.intro{margin:17px 0}.camera-scanner{height:250px}.camera-placeholder{min-height:243px}.wide-only{display:none}}@media (prefers-reduced-motion:reduce){.spinner{animation:none}}.scanning .intro{margin:16px 0}.scanning .intro .eyebrow{display:none}.scanning .intro h1{letter-spacing:-.8px;font-size:27px}.scanning .intro h1 br{display:none}.scanning .intro h1 br:after{content:" "}.scanning .intro p{margin-top:8px;font-size:12px}.scanning .camera-scanner{height:clamp(210px,32dvh,270px)}.scanning .scan-tip{margin-top:18px}
