:root{--bg:#F6F7F5;--paper:#fff;--ink:#1D2430;--ink2:#4B5563;--muted:#7A838F;--line:#D9DDD6;--line2:#E9ECE8;--accent:#1F5F8B;--accent-ink:#164A6E;--accent-soft:#E8F0F6;--ok:#2F7D4F;--ok-soft:#E3F1E7;--warn:#B7791F;--warn-soft:#F8EEDD;--crit:#B23A3A;--crit-soft:#F7E3E3;--lt:#7A1F6B;--lt-soft:#F1E1EE;--danger:#B23A3A}
@media (prefers-color-scheme:dark){:root{--bg:#141A21;--paper:#1C242D;--ink:#E8ECEF;--ink2:#BEC6CF;--muted:#8B96A3;--line:#334050;--line2:#283442;--accent:#6FB0DC;--accent-ink:#9CCBEA;--accent-soft:#1F2F3D;--ok:#5FBF86;--ok-soft:#1F3A2A;--warn:#E0A648;--warn-soft:#3D3120;--crit:#E07070;--crit-soft:#3F2323;--lt:#D08AC4;--lt-soft:#3A2437;--danger:#E07070}}
*{box-sizing:border-box} html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--ink);font-family:"Source Sans 3","Segoe UI",system-ui,sans-serif;font-size:16px;line-height:1.4}
header.bar{position:sticky;top:0;z-index:5;background:var(--accent);color:#fff;padding:10px 16px;padding-top:calc(10px + env(safe-area-inset-top,0px));display:flex;align-items:center;gap:10px;min-height:52px}
header.bar h1{font-family:Archivo,system-ui,sans-serif;font-size:19px;font-weight:700;margin:0;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
header.bar .sub{font-size:12px;opacity:.85;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:42%;flex:0 1 auto}
header.bar h1{flex:1 1 auto;min-width:34%}
header.bar .hb:not([hidden])+.logo{display:none}   /* the mark shows on home and sign-in; inner screens give the room to the title and the address */
button{font:inherit;cursor:pointer}
.btn{background:var(--accent);color:#fff;border:none;border-radius:10px;padding:12px 16px;font-family:Archivo,system-ui,sans-serif;font-size:15px;font-weight:600}
.btn.sec{background:var(--paper);color:var(--accent-ink);border:1px solid var(--accent)}
.btn.ghost{background:transparent;color:var(--ink2);border:1px solid var(--line)}
.btn.danger{background:transparent;color:var(--danger);border:1px solid var(--danger)}
.btn.ok{background:var(--ok)}
.btn.sm{padding:7px 11px;font-size:13px}
.btn.wide{width:100%}
.btn:disabled{opacity:.5;cursor:default}
.hb{background:transparent;border:1px solid rgba(255,255,255,.5);color:#fff;border-radius:8px;padding:6px 10px;font-size:14px}
.net{background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.5);color:#fff;border-radius:999px;padding:4px 10px;font-size:12px} .net.off{background:#B7791F;border-color:#B7791F}
main{max-width:760px;margin:0 auto;padding:14px 16px 150px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
h2.sec{font-family:Archivo,system-ui,sans-serif;font-size:17px;font-weight:600;margin:18px 0 8px;color:var(--ink)} h2.sec:first-child{margin-top:0}
.hint{font-size:13.5px;color:var(--muted);margin:4px 0 10px}
.field{display:grid;gap:4px;margin-bottom:12px}
.field label{font-size:12.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink2);font-weight:600}
input[type=text],input[type=email],input[type=password],input[type=search],input[type=date],input[type=number],select,textarea{width:100%;padding:11px 12px;border:1px solid var(--line);border-radius:10px;background:var(--paper);color:var(--ink);font:inherit;font-size:16px}
textarea{min-height:80px;line-height:1.45;resize:vertical}
.list{display:grid;gap:6px}
.row{background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:10px 12px;display:flex;justify-content:space-between;align-items:center;gap:10px;text-align:left;font:inherit;color:var(--ink);cursor:pointer;width:100%}
.row:active{background:var(--accent-soft)}
.row .l{flex:1;min-width:0} .row .n{font-weight:600;font-family:Archivo,system-ui,sans-serif;font-size:15.5px} .row .c{font-size:12.5px;color:var(--muted);margin-top:2px}
.row .r{display:flex;align-items:center;gap:8px;flex-shrink:0}
.row.done{border-left:4px solid var(--ok)} .row.fail{border-left:4px solid var(--crit)} .row.lt{border-left:4px solid var(--lt)}
.chip{display:inline-block;font-size:11.5px;padding:2px 8px;border-radius:999px;background:var(--accent-soft);color:var(--accent-ink);font-weight:600;white-space:nowrap}
.chip.ok{background:var(--ok-soft);color:var(--ok)} .chip.crit{background:var(--crit-soft);color:var(--crit)} .chip.warn{background:var(--warn-soft);color:var(--warn)} .chip.lt{background:var(--lt-soft);color:var(--lt)} .chip.mute{background:var(--line2);color:var(--ink2)}
.sev{display:inline-block;min-width:26px;text-align:center;font-size:11px;font-weight:700;padding:2px 6px;border-radius:5px;color:#fff;background:var(--muted)}
.sev.LT{background:var(--lt)} .sev.S{background:var(--crit)} .sev.M{background:var(--warn)} .sev.L{background:#5B6473}
.seg{display:flex;background:var(--paper);border:1px solid var(--line);border-radius:10px;overflow:hidden;margin-bottom:12px}
.seg button{flex:1;border:none;background:transparent;color:var(--ink2);padding:10px 6px;font-weight:600;font-family:Archivo,system-ui,sans-serif;font-size:14px}
.seg button.on{background:var(--accent);color:#fff}
.seg button .k{display:block;font-size:11px;font-weight:400;opacity:.85}
.line{background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:10px 12px;display:flex;gap:10px;align-items:flex-start;width:100%;text-align:left;font:inherit;color:var(--ink);cursor:pointer;margin-bottom:6px}
.line.on{border-color:var(--crit);background:var(--crit-soft)} .line.on.LT{border-color:var(--lt);background:var(--lt-soft)} .line.on.M{border-color:var(--warn);background:var(--warn-soft)}
.line .t{flex:1;min-width:0;font-size:15px;line-height:1.35} .line .t small{display:block;color:var(--muted);font-size:12px;margin-top:2px}
.line .star{color:var(--warn);font-weight:700}
.comp{font-family:Archivo,system-ui,sans-serif;font-size:13px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink2);margin:14px 0 6px}
.confirm{background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:8px 12px;margin-bottom:6px;display:flex;gap:8px;align-items:center}
.confirm .t{flex:1;min-width:0;font-size:14.5px} .confirm .yes{border:1px solid var(--ok);color:var(--ok);background:transparent;border-radius:8px;padding:6px 10px;font-weight:600} .confirm .yes.on{background:var(--ok);color:#fff} .confirm .no{border:1px solid var(--crit);color:var(--crit);background:transparent;border-radius:8px;padding:6px 10px;font-weight:600} .confirm .no.on{background:var(--crit);color:#fff}
.photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px;margin:8px 0}
.ph{position:relative;aspect-ratio:1;border-radius:10px;overflow:hidden;background:var(--line2);border:1px solid var(--line)} .ph img{width:100%;height:100%;object-fit:cover;display:block} .ph .x{position:absolute;top:4px;right:4px;background:rgba(0,0,0,.55);color:#fff;border:none;border-radius:999px;width:26px;height:26px;font-size:14px} .ph .p{position:absolute;left:4px;bottom:4px;font-size:10px;background:rgba(0,0,0,.55);color:#fff;border-radius:6px;padding:1px 5px}
.ph.add{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:var(--accent-ink);border:1px dashed var(--accent);background:var(--accent-soft);font:inherit;cursor:pointer} .ph.add .ico{font-size:28px;line-height:1} .ph.add .lbl{font-size:12px;font-weight:600}
.bottom{position:fixed;left:0;right:0;bottom:0;z-index:4;background:var(--paper);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom,0px)}
.status{padding:8px 16px;font-size:13px;color:var(--muted);text-align:center;min-height:32px} .status.err{color:var(--danger)}
.actions{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0}
.actions .btn{flex:1;min-width:120px}
.card{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:14px;margin-bottom:12px}
.card h3{margin:0 0 6px;font-family:Archivo,system-ui,sans-serif;font-size:16px}
.kv{display:grid;grid-template-columns:110px 1fr;gap:4px 10px;font-size:14.5px} .kv b{color:var(--ink2);font-weight:600}
.result{border-radius:12px;padding:16px;text-align:center;color:#fff;font-family:Archivo,system-ui,sans-serif;margin-bottom:12px} .result.pass{background:var(--ok)} .result.fail{background:var(--crit)} .result .big{font-size:34px;font-weight:700} .result .s{font-size:14px;opacity:.9}
.counts{display:flex;gap:10px;flex-wrap:wrap;margin:6px 0 12px} .counts span{font-size:13.5px}
.sig{background:#fff;border:1px solid var(--line);border-radius:10px;touch-action:none;width:100%;height:150px;display:block}
.menu{position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:9;display:flex;align-items:flex-end;justify-content:center}
.menu .sheet{background:var(--paper);border-radius:14px 14px 0 0;width:100%;max-width:560px;padding:10px 12px calc(14px + env(safe-area-inset-bottom,0px));display:grid;gap:6px}
.menu .sheet button{background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:12px;color:var(--ink);text-align:left}
.menu .sheet button.danger{color:var(--danger)}
.search{margin-bottom:10px}
.empty{color:var(--muted);font-size:14.5px;padding:14px 0;text-align:center}
.grp{margin-top:14px} .grp h4{margin:0 0 6px;font-family:Archivo,system-ui,sans-serif;font-size:13px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.tag{font-size:11px;padding:1px 6px;border-radius:5px;background:var(--line2);color:var(--ink2);margin-left:6px}
.bigcheck{display:flex;align-items:center;gap:10px;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--paper);margin-bottom:10px;cursor:pointer} .bigcheck input{width:22px;height:22px}
.fab{position:fixed;right:18px;bottom:calc(58px + env(safe-area-inset-bottom,0px));z-index:5;background:var(--accent);color:#fff;border:none;border-radius:999px;width:54px;height:54px;font-size:24px;box-shadow:0 4px 14px rgba(0,0,0,.25)}
a{color:var(--accent-ink)}
.comph{width:100%;display:flex;align-items:center;gap:10px;background:var(--accent-soft);border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin:12px 0 6px;font-family:Archivo,system-ui,sans-serif;font-size:13px;text-transform:uppercase;letter-spacing:.05em;color:var(--accent-ink);text-align:left;cursor:pointer}
.comph:active{opacity:.8} .comph.closed{margin-bottom:6px;background:var(--paper)} .comph .t{flex:1;min-width:0} .comph .r{display:flex;gap:8px;align-items:center} .comph .caret{font-size:16px;color:var(--accent-ink);width:14px;text-align:center;flex-shrink:0} .comph .cnt{font-size:11.5px;color:var(--muted);font-weight:600;background:var(--paper);border:1px solid var(--line);border-radius:999px;padding:1px 7px}
.allsw{display:flex;justify-content:flex-end;margin:8px 0 0}
.fab{width:48px;height:48px;font-size:22px;opacity:.92}
.announce{background:var(--ok);color:#fff;border-radius:10px;padding:12px 14px;margin:0 0 12px;font-family:Archivo,system-ui,sans-serif;font-weight:600;font-size:16px;transition:opacity .5s}
.announce.gone{opacity:0}
.ready{background:var(--ok-soft);color:var(--ok);border:1px solid var(--ok);border-radius:10px;padding:10px 12px;margin-bottom:12px;font-weight:600;font-size:14.5px}
.rr{display:flex;align-items:center;gap:10px} .rr .row{flex:1;min-width:0} .ck{width:26px;height:26px;flex-shrink:0;accent-color:var(--accent);margin:0}
.row.out{opacity:.55;border-style:dashed}
.fc{margin:-4px 0 8px 34px} .fnote{min-height:40px;padding:8px 10px;font-size:15px;line-height:1.35;overflow:hidden;resize:none;border-style:dashed} .fnote:focus{border-style:solid} .confirm+.fc{margin-left:0}
.noscroll{overflow:hidden}
.camov{position:fixed;inset:0;z-index:300;background:#000;display:flex;flex-direction:column;color:#fff}
.camov video{flex:1;min-height:0;width:100%;object-fit:cover;background:#000}
.camflash{position:absolute;inset:0;background:#fff;opacity:0;pointer-events:none;transition:opacity .2s} .camflash.on{opacity:.85;transition:none}
.camtop{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;padding:calc(12px + env(safe-area-inset-top,0px)) max(16px,env(safe-area-inset-right,0px)) 12px max(16px,env(safe-area-inset-left,0px));background:linear-gradient(rgba(0,0,0,.6),transparent);font-weight:600;font-size:15px}
.cambar{display:flex;align-items:center;justify-content:space-between;padding:18px max(24px,env(safe-area-inset-right,0px)) calc(18px + env(safe-area-inset-bottom,0px)) max(24px,env(safe-area-inset-left,0px));background:#000}
.camb{background:rgba(255,255,255,.18);color:#fff;border:1px solid rgba(255,255,255,.4);border-radius:999px;padding:10px 16px;font:inherit;font-weight:700;font-size:15px;min-width:92px} .camb.done{background:var(--ok);border-color:var(--ok)}
#camshot{width:78px;height:78px;border-radius:50%;background:#fff;border:6px solid #9aa0a6;box-shadow:0 0 0 3px #fff inset;padding:0;cursor:pointer} #camshot:active{transform:scale(.9);background:#ddd}
.camlast{width:56px;height:56px;border-radius:10px;overflow:hidden;background:rgba(255,255,255,.12);border:2px solid rgba(255,255,255,.5)} .camlast img{width:100%;height:100%;object-fit:cover;display:block}
.donebar{position:fixed;left:0;right:0;bottom:calc(48px + env(safe-area-inset-bottom,0px));z-index:5;background:var(--paper);border-top:1px solid var(--line);padding:10px max(16px,env(safe-area-inset-right,0px)) 10px max(16px,env(safe-area-inset-left,0px))} .donebar .btn{max-width:728px;margin:0 auto;display:block}
.doneflag{color:var(--ok);font-weight:700;font-size:15px;text-align:center;margin-bottom:6px} .donerow{display:flex;gap:8px;align-items:center;max-width:728px;margin:0 auto} .donerow .btn.ok{flex:1} .donerow .btn.sm{flex:0 0 auto}
.cbtext{white-space:pre-line;font-size:15px;line-height:1.45;margin:0}
.card.busy{border-color:var(--warn);background:var(--warn-soft)} .card.busy h3::before{content:'';display:inline-block;width:14px;height:14px;margin-right:8px;border:2px solid var(--warn);border-right-color:transparent;border-radius:50%;animation:spin 1s linear infinite;vertical-align:-2px} @keyframes spin{to{transform:rotate(360deg)}}

/* 10-25: home grouped by property; logo */
header.bar .logo{width:28px;height:28px;border-radius:7px;flex-shrink:0;display:block}
.logoband{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px 18px;margin:6px 0 14px;display:flex;justify-content:center} .logoband img{width:min(340px,100%);height:auto;display:block}
.phead{width:100%;display:flex;align-items:center;gap:10px;background:var(--accent-soft);border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin:12px 0 6px;text-align:left;font:inherit;color:var(--ink);cursor:pointer}
.phead.closed{background:var(--paper);margin-bottom:6px} .phead.busy{border-color:var(--accent)} .phead .t{flex:1;min-width:0} .phead .n{font-family:Archivo,system-ui,sans-serif;font-weight:700;font-size:16px;line-height:1.25} .phead .c{font-size:12.5px;color:var(--ink2);margin-top:2px}
.phead .r{display:flex;gap:6px;align-items:center;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end} .phead .caret{font-size:16px;color:var(--accent-ink);width:14px;text-align:center;flex-shrink:0} .phead .cnt{font-size:12px;color:var(--accent-ink);font-weight:700;background:var(--paper);border:1px solid var(--line);border-radius:999px;padding:2px 8px;white-space:nowrap}
.pbody{margin:0 0 4px 10px;padding-left:10px;border-left:2px solid var(--line)} .pbody[hidden]{display:none}   /* .list sets display:grid, which would beat the hidden attribute */ .pbody .prow{border-style:dashed} .subh{font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:600;margin:8px 0 0}
.sumbar{display:flex;align-items:center;gap:8px;margin:4px 0 0} .sumbar .grow{flex:1} .lnk{background:none;border:none;color:var(--accent-ink);font-size:13.5px;font-weight:600;padding:4px 0;text-decoration:underline}
