*{box-sizing:border-box}html,body{background:var(--bg);color:var(--ink);font-family:var(--font);-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;margin:0;padding:0;font-size:15px;line-height:1.45}body{min-height:100vh;padding-bottom:env(safe-area-inset-bottom)}a{color:var(--an-teal-dark)}button,input,select,textarea{font:inherit;color:var(--ink)}h1,h2,h3{letter-spacing:-.01em;margin:0;font-weight:650;line-height:1.25}.prewrap{white-space:pre-wrap}.hdr{z-index:20;background:var(--an-navy);color:#fff;padding:calc(10px + env(safe-area-inset-top))16px 0;border-bottom:1px solid #ffffff14;position:sticky;top:0}.hdr-row{align-items:center;gap:12px;max-width:960px;margin:0 auto;padding-bottom:10px;display:flex}.brand{cursor:pointer;flex:1;align-items:center;gap:12px;min-width:0;display:flex}.brand-logo{background:#fff;border-radius:6px;flex:none;height:34px;padding:4px 8px}.brand-logo img{width:auto;height:100%;display:block}.brand-name{letter-spacing:.01em;white-space:nowrap;font-size:15px;font-weight:650}.brand-sub{color:#ffffff9e;align-items:center;gap:5px;margin-top:1px;font-size:11px;display:flex}.brand-sub img{background:#fff;border-radius:3px;width:14px;height:14px;padding:1px}.brand-sub b{color:var(--an-gold);font-weight:600}.hdr-actions{align-items:center;gap:8px;display:flex}.pill{white-space:nowrap;border:1px solid #0000;border-radius:999px;align-items:center;gap:6px;padding:3px 10px;font-size:12px;font-weight:600;display:inline-flex}.pill-dot{background:currentColor;border-radius:50%;width:7px;height:7px}.pill-online{color:#7fd9c4;border-color:#7fd9c459}.pill-offline{color:#f1d48a;border-color:#f1d48a66}.pill-syncing{color:#dce3ea;border-color:#ffffff40}.pill-error{color:#ffb1a8;border-color:#ffb1a873}.iconbtn{color:#ffffffd9;cursor:pointer;background:0 0;border:1px solid #ffffff38;border-radius:6px;padding:5px 11px;font-size:13px}.iconbtn:hover{background:#ffffff14}.tabs{gap:22px;max-width:960px;margin:0 auto;display:flex}.tab{color:#ffffffa8;cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;padding:8px 0 9px;font-size:13.5px;font-weight:600}.tab:hover{color:#fff}.tab.active{color:#fff;border-bottom-color:var(--an-gold)}.page{max-width:960px;margin:0 auto;padding:16px 16px 48px}.section-title{color:var(--ink-mute);text-transform:uppercase;letter-spacing:.08em;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin:22px 2px 8px;font-size:11.5px;font-weight:700;display:flex}.section-title .muted{text-transform:none;letter-spacing:0;font-weight:500}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:10px;padding:14px 16px}.card.tap{cursor:pointer;transition:border-color .12s,box-shadow .12s}.card.tap:hover{border-color:var(--line-strong);box-shadow:0 2px 8px #1018280f}.card.tap:active{background:var(--surface-2)}.row{align-items:center;gap:8px;display:flex}.row.between{justify-content:space-between}.row.wrap{flex-wrap:wrap}.grow{flex:1;min-width:0}.label{color:var(--ink-mute);text-transform:uppercase;letter-spacing:.06em;margin-bottom:4px;font-size:11.5px;font-weight:600}.value{color:var(--ink);word-break:break-word;font-size:15px}.muted{color:var(--ink-mute);font-size:13px}.mono{font-family:var(--mono);font-size:13px}.big{color:var(--an-navy);letter-spacing:-.01em;font-variant-numeric:tabular-nums;font-size:17px;font-weight:650}.field{margin-bottom:14px}.field input,.field select,.field textarea{border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:#fff;width:100%;min-height:40px;padding:9px 11px;font-size:15px;transition:border-color .12s,box-shadow .12s}.field textarea{resize:vertical;min-height:96px;line-height:1.5}.field input:focus,.field select:focus,.field textarea:focus,td input:focus{border-color:var(--an-teal);outline:none;box-shadow:0 0 0 3px #1f8a8a26}.field input:disabled,.field textarea:disabled,.field select:disabled{background:var(--surface-2);color:var(--ink-soft)}.grid2{grid-template-columns:1fr 1fr;gap:12px 16px;display:grid}@media (width<=520px){.grid2{grid-template-columns:1fr}}.chip{white-space:nowrap;border:1px solid var(--line-strong);color:var(--ink-soft);background:#fff;border-radius:999px;align-items:center;gap:6px;padding:2px 9px;font-size:12px;font-weight:600;display:inline-flex}.chip:before{content:"";background:currentColor;border-radius:50%;width:6px;height:6px}.chip-new{color:var(--cm-blue);border-color:#bbd6e8}.chip-in_progress{color:var(--warn);border-color:#edd3a4}.chip-completed{color:var(--an-navy);border-color:#c6d0db}.chip-submitted{color:var(--ok);border-color:#b6dcc6}.chip-submit_failed{color:var(--bad);border-color:#f2b8b2}.chip-pri-emergency{color:#fff;background:var(--bad);border-color:var(--bad)}.chip-pri-emergency:before{background:#fff}.chip-pri-high{color:var(--bad);border-color:#f2b8b2}.chip-pri-normal{color:var(--ink-mute)}.chip-pri-low{color:var(--ink-mute);border-style:dashed}.chip-pending{color:var(--warn);background:var(--warn-soft);border-color:#edd3a4}.btn{border-radius:var(--radius-sm);cursor:pointer;border:1px solid #0000;justify-content:center;align-items:center;gap:8px;min-height:40px;padding:0 16px;font-size:14.5px;font-weight:600;text-decoration:none;transition:background .12s,border-color .12s;display:inline-flex}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--an-teal);color:#fff}.btn-primary:hover:not(:disabled){background:var(--an-teal-dark)}.btn-navy{background:var(--an-navy);color:#fff}.btn-slate{color:#1a2530;background:#d3d9df;border-color:#bfc7cf}.btn-slate:hover:not(:disabled){background:#c4cbd3}.btn-navy:hover:not(:disabled){background:var(--an-navy-deep)}.btn-gold{background:var(--an-gold);color:var(--an-navy-deep)}.btn-gold:hover:not(:disabled){background:#b8963b}.btn-danger{background:var(--bad);color:#fff}.btn-ghost{color:var(--ink);border-color:var(--line-strong);background:#fff}.btn-ghost:hover:not(:disabled){background:var(--surface-2)}.btn-link{color:var(--ink-soft);background:0 0;min-height:34px;font-weight:500}.btn-link:hover{color:var(--ink)}.btn-sm{min-height:32px;padding:0 11px;font-size:13px}.btn-block{width:100%}.btn-row{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.entry{border-top:1px solid var(--line);align-items:flex-start;gap:10px;padding:10px 0;display:flex}.entry:first-child{border-top:0;padding-top:2px}.entry-main{flex:1;min-width:0}.entry-meta{color:var(--ink-mute);margin-top:2px;font-size:12.5px}.history{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface-2);max-height:280px;overflow-y:auto}.history-item{border-top:1px solid var(--line);padding:10px 12px}.history-item:first-child{border-top:0}.history-head{align-items:baseline;gap:8px;margin-bottom:3px;display:flex}.history-date{color:var(--an-navy);font-variant-numeric:tabular-nums;font-weight:650}.history-who{color:var(--an-teal-dark);font-weight:650}.history-src{color:var(--ink-mute);text-transform:uppercase;letter-spacing:.06em;margin-left:auto;font-size:11px}.history-text{color:var(--ink-soft);font-size:14px;line-height:1.5}.photo-grid{grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:8px;display:grid}.photo{border-radius:var(--radius-sm);background:var(--surface-2);aspect-ratio:1;border:1px solid var(--line);position:relative;overflow:hidden}.photo img{object-fit:cover;width:100%;height:100%;display:block}.photo .cap{color:#fff;white-space:nowrap;text-overflow:ellipsis;background:#0a1b2eb8;padding:3px 6px;font-size:11px;position:absolute;bottom:0;left:0;right:0;overflow:hidden}.photo .up{position:absolute;top:4px;right:4px}.notice{border-radius:var(--radius-sm);border:1px solid #0000;margin-bottom:10px;padding:10px 12px;font-size:14px}.notice-info{background:var(--an-teal-soft);color:#145454;border-color:#c9e4e4}.notice-warn{background:var(--warn-soft);color:#6f4700;border-color:#f0dcb2}.notice-bad{background:var(--bad-soft);color:#7a1a12;border-color:#f4c7c1}.notice-ok{background:var(--ok-soft);color:#11563a;border-color:#bfe1cd}.empty{text-align:center;color:var(--ink-mute);padding:40px 12px}.modal-bg{z-index:50;background:#0a1b2e8c;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal{width:100%;max-width:420px;box-shadow:var(--shadow-lg);background:#fff;border-radius:10px;padding:20px}.modal h2{color:var(--ink);margin-bottom:6px;font-size:17px}.auth-wrap{color:#1a1f24;background:radial-gradient(1200px 700px at 50% 40%,#08142026,#040a128c),#0a1420 url(/assets/login-bg.jpg) 50%/cover no-repeat fixed;place-items:center;min-height:100vh;padding:32px 16px;display:grid}.auth-socket{background:linear-gradient(160deg,#f4f7f8 0%,#c9d0d6 18%,#8e979e 42%,#d5dbe0 58%,#9aa3aa 100%);border-radius:22px;width:min(440px,100%);padding:14px;position:relative;box-shadow:0 30px 70px #00000073,inset 0 2px #ffffffb3,inset 0 -3px 6px #00000059,0 0 0 1px #ffffff59}.auth-socket:before{content:"";pointer-events:none;border:1px solid #ffffff59;border-radius:16px;position:absolute;inset:7px;box-shadow:0 0 0 1px #00000040}.auth-card{background:repeating-linear-gradient(90deg,#ffffff0a 0 1px,#0000 1px 3px),linear-gradient(#f7f8f9 0%,#e7ebed 40%,#dfe4e7 100%);border-radius:14px;padding:28px 28px 18px;position:relative;box-shadow:inset 0 1px #ffffffe6,inset 0 -8px 16px #0000000f}@media (width<=420px){.auth-card{padding:22px 18px 16px}}.auth-brand{justify-content:center;margin-bottom:14px;display:flex}.auth-brand img.cm{width:min(230px,74%);display:block}.auth-title{text-align:center;letter-spacing:-.4px;color:#1a1f24;margin:4px 0 2px;font-size:28px;font-weight:700}.auth-tag{text-align:center;color:#5c6770;margin:0 0 20px;font-size:13px}.auth-card .label{letter-spacing:.8px;text-transform:uppercase;color:#3d4650;margin:12px 2px 6px;font-size:11px;font-weight:600}.auth-card .field{margin:0}.auth-card .field input,.auth-card .field select,.auth-card .field textarea{color:#1a1f24;background:linear-gradient(#fff,#f4f6f7);border:1px solid #b7c0c7;border-radius:8px;min-height:44px;padding:0 14px;font-size:14px;font-weight:500;box-shadow:inset 0 1px 2px #00000014,0 1px #fff}.auth-card .field input::placeholder{color:#9aa3ab;font-weight:400}.auth-card .field input:focus,.auth-card .field select:focus,.auth-card .field textarea:focus{border-color:#0aa8b8;box-shadow:0 0 0 3px #0aa8b838,inset 0 1px 2px #00000014}.auth-card .btn-primary{color:#f3eee3;letter-spacing:.2px;background:linear-gradient(#3a4652 0%,#2a343e 55%,#1f2831 100%);border:0;border-radius:10px;min-height:48px;margin-top:18px;font-size:16px;font-weight:700;transition:transform .12s,filter .12s;box-shadow:0 0 0 1px #0a101699,0 8px 18px #0f192359,inset 0 1px #ffffff1f}.auth-card .btn-primary:hover:not(:disabled){filter:brightness(1.12);background:linear-gradient(#3a4652 0%,#2a343e 55%,#1f2831 100%)}.auth-card .btn-primary:active:not(:disabled){transform:translateY(1px)}.auth-card .btn-ghost{color:#1a1f24;background:#ffffffb3;border-color:#b7c0c7}.auth-card .btn-link{color:#3d4650}.auth-card .muted{color:#6b757e;font-size:12px}.pw-wrap{position:relative}.pw-wrap input{padding-right:64px}.pw-toggle{color:#3d4650;font:600 12px var(--font);letter-spacing:.6px;text-transform:uppercase;cursor:pointer;background:0 0;border:0;border-radius:6px;padding:6px 8px;position:absolute;top:50%;right:8px;transform:translateY(-50%)}.pw-toggle:hover{color:#077f8c;background:#0aa8b81f}.auth-footer{text-align:center;color:#6b757e;margin:10px 0 2px;font-size:11px}.auth-footer b{color:#c9a227;font-weight:700}.enroll-title{color:var(--ink);font-size:16px;font-weight:650}.enroll-steps{color:var(--ink-soft);margin:0 0 14px;padding-left:20px;font-size:14px}.enroll-steps li{margin:3px 0}.qr-frame{justify-content:center;margin:4px 0 12px;display:flex}.qr{border:1px solid var(--line);width:208px;height:208px;box-shadow:var(--shadow);background:#fff;border-radius:8px;padding:10px}.qr svg{display:block;width:100%!important;height:100%!important}.manual-key{color:var(--ink-soft);margin-top:10px;font-size:13.5px}.manual-key summary{cursor:pointer;color:var(--an-teal-dark);text-align:center;font-weight:600;list-style:none}.manual-key summary::-webkit-details-marker{display:none}.secret{font-family:var(--mono);letter-spacing:1.5px;word-break:break-word;background:var(--surface-2);border:1px solid var(--line);text-align:center;border-radius:6px;margin-top:8px;padding:10px;font-size:15px}.code-input{text-align:center;font-family:var(--mono);letter-spacing:10px;font-variant-numeric:tabular-nums;font-size:24px!important}table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:13.5px}th{text-align:left;color:var(--ink-mute);text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid var(--line-strong);background:var(--surface-2);padding:8px;font-size:11px;font-weight:700}td{border-bottom:1px solid var(--line);vertical-align:middle;padding:9px 8px}tr:last-child td{border-bottom:0}td input{border:1px solid var(--line);background:#fff;border-radius:5px;width:100%;padding:6px 8px}.table-wrap{-webkit-overflow-scrolling:touch;overflow-x:auto}.kpi{grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;display:grid}.kpi .card{margin:0}.kpi .big{font-size:24px}@media print{.hdr,.tabs,.btn,.btn-row,.notice,.section-title .muted,input[type=checkbox]{display:none!important}body,.page{background:#fff;padding:0}.card{box-shadow:none;border:0}td input{border:0!important;padding:0!important}}.grid-part{grid-template-columns:1fr 110px;align-items:end;gap:12px;display:grid}@media (width<=480px){.grid-part{grid-template-columns:1fr 90px}}.suggest{z-index:30;border:1px solid var(--line-strong);border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);background:#fff;max-height:320px;margin-top:4px;position:absolute;top:100%;left:0;right:0;overflow-y:auto}.suggest-item{text-align:left;border:0;border-top:1px solid var(--line);cursor:pointer;background:#fff;width:100%;padding:9px 12px;display:block}.suggest-item:first-child{border-top:0}.suggest-item:hover,.suggest-item:focus{background:var(--an-teal-soft);outline:none}.suggest-name{color:var(--ink);font-size:14px;font-weight:600;display:block}.suggest-meta{color:var(--ink-mute);font-size:12px;font-family:var(--mono);margin-top:1px;display:block}.entry-qty{min-width:58px;color:var(--an-navy);font-variant-numeric:tabular-nums;flex:none;padding-top:1px;font-weight:650}.grid3{grid-template-columns:repeat(3,1fr);gap:12px;display:grid}.grid4{grid-template-columns:repeat(4,1fr);gap:12px;display:grid}@media (width<=560px){.grid3{grid-template-columns:1fr}.grid4{grid-template-columns:1fr 1fr}}.time-row{gap:6px;display:flex}.time-row input{font-variant-numeric:tabular-nums;flex:1;min-width:0}.ampm{border:1px solid var(--line-strong);border-radius:var(--radius-sm);flex:none;display:flex;overflow:hidden}.ampm button{color:var(--ink-mute);cursor:pointer;background:#fff;border:0;min-height:40px;padding:0 10px;font-size:12.5px;font-weight:650}.ampm button+button{border-left:1px solid var(--line-strong)}.ampm button.on{background:var(--an-navy);color:#fff}.board-wrap{-webkit-overflow-scrolling:touch;overflow-x:auto}.board{border-collapse:separate;border-spacing:0;min-width:760px}.board th,.board td{border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.board th{text-align:center;color:var(--ink-soft);background:var(--surface-2);padding:7px 6px;font-size:12px;position:sticky;top:0}.board th.board-today{background:var(--an-teal-soft);color:var(--an-teal-dark)}.board .board-date{color:var(--ink-mute);font-size:11px;font-weight:500}.board-tech{z-index:1;min-width:130px;max-width:150px;color:var(--an-navy);vertical-align:top;background:#fff;padding:8px 10px;font-size:13px;font-weight:600;position:sticky;left:0}th.board-tech{z-index:2;background:var(--surface-2)}.board-count{color:var(--ink-mute);margin-top:2px;font-size:11px;font-weight:500}.board-cell{vertical-align:top;min-width:108px;padding:4px}.stop{border-left:3px solid var(--an-teal);background:var(--surface-2);border-radius:6px;margin-bottom:4px;padding:5px 7px;font-size:12px}.stop:last-child{margin-bottom:0}.stop-time{color:var(--an-navy);font-variant-numeric:tabular-nums;align-items:center;gap:5px;font-weight:700;display:flex}.stop-pri{background:var(--bad);border-radius:50%;width:6px;height:6px;display:inline-block}.stop-cust{color:var(--ink);margin-top:1px;line-height:1.25}.stop-city{color:var(--ink-mute);font-size:11px}.stop-completed{border-left-color:var(--ink-mute);opacity:.8}.stop-submitted{border-left-color:var(--ok);opacity:.7}.stop-in_progress{border-left-color:var(--warn)}.stop-submit_failed{border-left-color:var(--bad)}.toast{left:50%;bottom:calc(20px + env(safe-area-inset-bottom));z-index:60;background:var(--an-navy);color:#fff;box-shadow:var(--shadow-lg);pointer-events:none;border-radius:999px;padding:9px 18px;font-size:13.5px;font-weight:600;animation:.16s toast-in;position:fixed;transform:translate(-50%)}@keyframes toast-in{0%{opacity:0;transform:translate(-50%)translateY(6px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.readings-eq{border-top:1px solid var(--line);padding:10px 0}.readings-eq:first-of-type{border-top:0}.readings-eq-head{justify-content:space-between;align-items:center;margin-bottom:6px;display:flex}.readings-eq-name{color:var(--an-navy);font-weight:650}.readings-grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px;display:grid}.reading{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-sm);padding:7px 9px}.reading-name{color:var(--ink-mute);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;text-overflow:ellipsis;font-size:11px;overflow:hidden}.reading-val{color:var(--an-navy);font-variant-numeric:tabular-nums;font-size:18px;font-weight:700}.reading-unit{color:var(--ink-mute);margin-left:3px;font-size:12px;font-weight:500}.readings-attached{border:1px solid var(--line);border-radius:0 0 var(--radius)var(--radius);background:var(--surface-2);border-top:0;margin-top:-6px;padding:8px 12px 10px}.readings-attached-head{color:var(--ink-mute);text-transform:uppercase;letter-spacing:.06em;justify-content:space-between;align-items:center;font-size:11.5px;font-weight:700;display:flex}.readings-attached-text{white-space:pre-wrap;word-break:break-word;font-family:var(--font);color:var(--ink-soft);margin:6px 0 0;font-size:13px;line-height:1.5}.visits{flex-direction:column;gap:8px;margin-top:2px;display:flex}.visit{border:1px solid var(--line);border-left:3px solid var(--an-gold,#c9a227);background:var(--surface);border-radius:8px;padding:8px 10px}.visit-head{align-items:baseline;gap:8px;margin-bottom:3px;font-size:12.5px;display:flex}.visit-date{color:var(--ink);font-weight:700}.visit-who{color:var(--an-navy,#0f2a44);font-weight:600}.visit-src{color:var(--ink-mute);text-transform:uppercase;letter-spacing:.05em;margin-left:auto;font-size:11px}.visit-text{font-size:14px}