[hidden]{display:none!important}
:root{--ink:#16202e;--mute:#5d6878;--line:#dde2ea;--bg:#f4f6f9;--card:#fff;--brand:#1b3a6b;--accent:#1f5fd1;--ok:#147a43;--warn:#b26b00;--bad:#b42318;--chip:#eef1f6;--r:14px;font-size:17px}
*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;-webkit-text-size-adjust:100%}
a{color:var(--accent);text-decoration:none}
header#top{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:calc(env(safe-area-inset-top) + 8px) 16px 8px;background:var(--brand);color:#fff}
.brand{display:flex;align-items:center;gap:8px;color:#fff;font-weight:800;font-size:20px}.brand img{width:30px;height:30px;border-radius:7px}
nav{display:flex;gap:4px;flex-wrap:wrap;flex:1}nav a{color:#dfe7f5;padding:10px 12px;border-radius:10px;font-weight:600;font-size:16px}nav a.on{background:rgba(255,255,255,.18);color:#fff}
.projbadge{background:#ffd34d;color:#3b2a00;font-weight:800;padding:4px 10px;border-radius:8px;font-size:13px}
.pill{border:0;border-radius:999px;padding:8px 14px;font-weight:700;font-size:14px;background:#e7f6ec;color:var(--ok)}.pill.off{background:#fde8e7;color:var(--bad)}.pill.pend{background:#fff3d6;color:var(--warn)}
main{max-width:1180px;margin:0 auto;padding:16px 16px calc(env(safe-area-inset-bottom) + 90px)}
h1{font-size:26px;margin:6px 0 14px}h2{font-size:20px;margin:22px 0 10px}h3{font-size:17px;margin:14px 0 8px}
.loading{padding:60px;text-align:center;color:var(--mute)}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px;margin-bottom:12px}
.grid{display:grid;gap:12px}.g2{grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}.g3{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}.g4{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}
.metric{display:block;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px;color:var(--ink);min-height:96px}
.metric .n{font-size:34px;font-weight:800;line-height:1.1}.metric .l{color:var(--mute);font-weight:600;margin-top:4px}.metric.bad .n{color:var(--bad)}.metric.warn .n{color:var(--warn)}.metric.ok .n{color:var(--ok)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:48px;padding:10px 18px;border-radius:12px;border:1px solid var(--line);background:#fff;color:var(--ink);font-size:17px;font-weight:650;cursor:pointer;text-align:center}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.ok{background:var(--ok);border-color:var(--ok);color:#fff}.btn.danger{background:#fff;color:var(--bad);border-color:#f0c2bd}.btn.big{min-height:58px;font-size:19px;padding:12px 24px}.btn.sm{min-height:38px;padding:6px 12px;font-size:15px}
.btn:disabled{opacity:.5}.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.row.end{justify-content:flex-end}.sp{flex:1}
label{display:block;font-weight:650;margin:12px 0 6px}label .hint{font-weight:400;color:var(--mute);font-size:14px}
input,select,textarea{width:100%;font-size:17px;padding:12px 14px;border:1px solid #c9d1dc;border-radius:12px;background:#fff;color:var(--ink);font-family:inherit}
textarea{min-height:110px;resize:vertical}input[type=checkbox]{width:24px;height:24px;vertical-align:middle}
.chip{display:inline-block;padding:3px 10px;border-radius:999px;background:var(--chip);font-size:13.5px;font-weight:650;color:var(--ink);white-space:nowrap}
.st-Open{background:#e8eefc;color:#1f4fb3}.st-In-Progress{background:#e4f3ff;color:#0b5c8f}.st-Waiting{background:#fff1d6;color:#8a5300}.st-Ready-for-Inspection{background:#efe6ff;color:#5b2fb0}.st-Correction-Required{background:#fde8e7;color:#a3221a}.st-Complete{background:#e3f5ea;color:#11683a}
.pr-Critical{background:#b42318;color:#fff}.pr-High{background:#fde8e7;color:#a3221a}.pr-Low{background:#f1f3f6;color:#5d6878}
.rd{font-weight:700}.rd-Not-Yet-Walked{background:#f1f3f6;color:#5d6878}.rd-Outstanding-Work{background:#fff1d6;color:#8a5300}.rd-Ready-for-Punch-Inspection{background:#efe6ff;color:#5b2fb0}.rd-All-Recorded-Items-Accepted{background:#e4f3ff;color:#0b5c8f}.rd-Ready-for-Final-Room-Inspection{background:#e3f5ea;color:#11683a}.rd-Final-Room-Sign-off{background:#11683a;color:#fff}
.roomcard{display:block;background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;color:var(--ink);min-height:92px}.roomcard .nm{font-weight:750;font-size:18px}.roomcard .sub{color:var(--mute);font-size:14px;margin:3px 0 8px}
.list{background:#fff;border:1px solid var(--line);border-radius:var(--r);overflow:hidden}.li{display:flex;gap:12px;padding:14px 16px;border-top:1px solid var(--line);color:var(--ink);align-items:flex-start}.li:first-child{border-top:0}.li .no{font-weight:800;min-width:62px}.li .main{flex:1;min-width:0}.li .desc{font-weight:600}.li .meta{color:var(--mute);font-size:14px;margin-top:4px}.li .tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}
.li.pending{background:#fffaf0}.od{color:var(--bad);font-weight:700}
.toolbar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}.toolbar input,.toolbar select{width:auto;flex:1 1 180px;min-height:48px}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#fff}.seg button{border:0;background:none;padding:10px 14px;font-size:15px;font-weight:650}.seg button.on{background:var(--accent);color:#fff}
.photos{display:flex;gap:10px;flex-wrap:wrap}.ph{position:relative;width:118px;height:118px;border-radius:12px;overflow:hidden;background:#e9edf2;border:1px solid var(--line)}.ph img{width:100%;height:100%;object-fit:cover;display:block}.ph .tag{position:absolute;left:4px;bottom:4px;background:rgba(0,0,0,.65);color:#fff;font-size:11px;padding:2px 6px;border-radius:6px}.ph .state{position:absolute;right:4px;top:4px;background:#fff;font-size:11px;padding:2px 6px;border-radius:6px;font-weight:700}
.addph{display:flex;align-items:center;justify-content:center;flex-direction:column;width:118px;height:118px;border:2px dashed #b9c3d0;border-radius:12px;color:var(--mute);font-weight:650;font-size:14px;text-align:center;cursor:pointer;background:#fff}
.timeline{border-left:3px solid var(--line);margin-left:8px;padding-left:14px}.ev{margin:0 0 12px}.ev .t{color:var(--mute);font-size:13.5px}
.warnbox{background:#fff6e5;border:1px solid #f2d39b;color:#6b4300;border-radius:12px;padding:12px 14px;margin:10px 0}.errbox{background:#fde8e7;border:1px solid #f4b8b2;color:#7a1610;border-radius:12px;padding:12px 14px;margin:10px 0}.okbox{background:#e3f5ea;border:1px solid #a8dcbc;color:#0d4d2b;border-radius:12px;padding:12px 14px;margin:10px 0}.infobox{background:#eaf1fd;border:1px solid #bcd0f5;color:#163e86;border-radius:12px;padding:12px 14px;margin:10px 0}
table.t{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--line);border-radius:var(--r);overflow:hidden;font-size:15px}table.t th,table.t td{padding:10px 12px;border-top:1px solid var(--line);text-align:left;vertical-align:top}table.t th{background:#f3f5f8;font-size:13px;color:var(--mute);border-top:0}
#toast{position:fixed;left:50%;bottom:calc(env(safe-area-inset-bottom) + 20px);transform:translateX(-50%);background:#16202e;color:#fff;padding:12px 18px;border-radius:12px;font-weight:600;opacity:0;pointer-events:none;transition:opacity .2s;max-width:92vw;z-index:50}#toast.on{opacity:1}
#modal{position:fixed;inset:0;background:rgba(10,20,35,.45);z-index:40;display:flex;align-items:flex-end;justify-content:center}#modal .sheet{background:#fff;width:min(720px,100%);max-height:92vh;overflow:auto;border-radius:18px 18px 0 0;padding:20px 20px calc(env(safe-area-inset-bottom) + 20px)}
@media(min-width:760px){#modal{align-items:center}#modal .sheet{border-radius:18px}}
.viewer{position:fixed;inset:0;background:#000;z-index:60;display:flex;align-items:center;justify-content:center}.viewer img{max-width:100%;max-height:100%}.viewer button{position:absolute;top:calc(env(safe-area-inset-top) + 12px);right:12px}
.fab{position:fixed;right:18px;bottom:calc(env(safe-area-inset-bottom) + 18px);z-index:30;box-shadow:0 6px 20px rgba(0,0,0,.2)}
.stickybar{position:sticky;bottom:0;background:linear-gradient(to top,var(--bg) 70%,transparent);padding:14px 0 calc(env(safe-area-inset-bottom) + 8px);display:flex;gap:10px;flex-wrap:wrap}.stickybar .btn{flex:1 1 200px}
.muted{color:var(--mute)}.small{font-size:14px}.bold{font-weight:700}.nowrap{white-space:nowrap}.right{text-align:right}
.login{max-width:460px;margin:40px auto}.login .card{padding:24px}
@media(max-width:620px){:root{font-size:16px}nav a{padding:8px 9px;font-size:14.5px}.li .no{min-width:52px}h1{font-size:23px}}
@media print{header,#toast,.fab,.stickybar,.noprint{display:none!important}main{padding:0}}

/* hotfix 2026-10-28: pills/chips wrap inside their cards instead of overflowing (iPad landscape/portrait, phone) */
.chip{white-space:normal;max-width:100%;line-height:1.3;overflow-wrap:anywhere;vertical-align:middle}
.metric,.roomcard,.card{min-width:0;overflow-wrap:break-word}
.metric .l{line-height:1.3}.metric .l .chip{display:inline-block;text-align:left}
.li .tags .chip,.row .chip{max-width:100%}
