:root{--ink:#23211F;--teal:#22A895;--teal-d:#1a8a7a;--tint:#E3F5F2;--grey:#F3F1EE;--line:#E4E0DA;--muted:#6b6763;--warn:#F2B84B;--rain:#a9c7f5;--bad:#d9534f}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{font-family:'Montserrat',system-ui,sans-serif;background:#ECEAE6;color:var(--ink);-webkit-tap-highlight-color:transparent}
#app{max-width:460px;margin:0 auto;min-height:100%;background:#fff;display:flex;flex-direction:column;position:relative}
#app.wide{max-width:1100px}
header.bar{display:flex;align-items:center;justify-content:space-between;padding:14px 18px 8px;position:sticky;top:0;background:#fff;z-index:5}
header.bar img{height:34px}
header.bar .who{font-size:.72rem;font-weight:700;color:var(--muted)}
main{flex:1;padding:6px 18px 96px;display:flex;flex-direction:column;gap:12px}
nav.tabs{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:100%;max-width:460px;display:flex;justify-content:space-around;background:#fff;border-top:1px solid var(--line);padding:8px 4px calc(10px + env(safe-area-inset-bottom));z-index:6}
#app.wide~nav.tabs{max-width:1100px}
nav.tabs button{border:0;background:none;font:inherit;font-size:.62rem;font-weight:700;color:#9a9692;display:grid;gap:2px;justify-items:center;cursor:pointer;padding:2px 10px}
nav.tabs button.on{color:var(--teal)}
nav.tabs svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
h1,h2,h3{font-weight:800;line-height:1.2}
h2{font-size:1.3rem}h3{font-size:1.02rem}
.s{font-size:.74rem;color:var(--muted);font-weight:500}
.card{background:var(--grey);border-radius:16px;padding:14px}
.card.w{background:#fff;border:1px solid var(--line)}
.card.t{background:var(--tint)}
.card.d{background:var(--ink);color:#fff}.card.d .s{color:#bdb9b4}
.card.warn{background:#fff3d6}
.row{display:flex;gap:10px;align-items:center}.sp{justify-content:space-between}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.btn{display:block;width:100%;text-align:center;background:var(--ink);color:#fff;font:inherit;font-weight:800;font-size:.84rem;padding:13px;border-radius:14px;border:0;cursor:pointer}
.btn.t{background:var(--teal)}.btn.o{background:#fff;color:var(--ink);box-shadow:inset 0 0 0 2px var(--ink)}.btn.sm{padding:9px;font-size:.76rem;border-radius:12px}
.btn.bad{background:#fff;color:var(--bad);box-shadow:inset 0 0 0 2px var(--bad)}
.btn:disabled{opacity:.5}
.pill{display:inline-block;white-space:nowrap;font-size:.62rem;font-weight:800;padding:3px 10px;border-radius:99px;background:var(--teal);color:#fff;letter-spacing:.03em}
.pill.g{background:var(--ink)}.pill.l{background:var(--tint);color:var(--teal-d)}.pill.y{background:var(--warn);color:var(--ink)}.pill.r{background:var(--rain);color:var(--ink)}.pill.x{background:#e7e4df;color:var(--muted)}
label{display:grid;gap:4px;font-size:.74rem;font-weight:700}
input,select,textarea{font:inherit;font-size:.88rem;padding:12px 13px;border:2px solid var(--line);border-radius:12px;width:100%;background:#fff}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--teal)}
form{display:grid;gap:11px}
.chips{display:flex;gap:8px;flex-wrap:wrap}
.chip{border:2px solid var(--line);border-radius:12px;padding:9px 12px;font-size:.78rem;font-weight:700;background:#fff;cursor:pointer;font-family:inherit}
.chip.on{border-color:var(--teal);background:var(--tint)}
.meter{height:8px;background:#d9d5cf;border-radius:9px;overflow:hidden;margin-top:6px}.meter i{display:block;height:100%;background:var(--teal)}
.tl{display:grid;gap:8px}.tl div{display:flex;gap:10px;align-items:center;font-size:.78rem;font-weight:600}
.tl i{width:14px;height:14px;border-radius:50%;background:#d9d5cf;flex:none}.tl i.d{background:var(--teal)}.tl i.n{background:#fff;border:3px solid var(--teal)}
.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:5px;font-size:.66rem;font-weight:700;text-align:center}
.cal button{border:0;font:inherit;padding:8px 0;border-radius:9px;background:var(--grey);cursor:pointer;color:var(--ink)}
.cal .h{background:none;color:#9a9692;padding:2px 0;cursor:default}
.cal .st-completed{background:var(--teal);color:#fff}.cal .st-scheduled{background:var(--tint)}.cal .st-in_progress{background:var(--ink);color:#fff}
.cal .st-skipped{background:var(--warn)}.cal .st-weather{background:var(--rain)}.cal .st-unassigned{background:var(--bad);color:#fff}.cal .st-open{background:#fff;box-shadow:inset 0 0 0 2px var(--teal)}.cal .none{background:none;cursor:default}
.legend{display:flex;gap:12px;flex-wrap:wrap;font-size:.62rem;font-weight:600}.legend i{display:inline-block;width:9px;height:9px;border-radius:3px;margin-right:4px}
.map{height:240px;border-radius:16px;overflow:hidden;background:#d8efe9}
.photos{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.photos img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:10px}
.av{width:44px;height:44px;border-radius:50%;background:var(--teal);color:#fff;display:grid;place-items:center;font-weight:800;flex:none}
.big{font-size:2rem;font-weight:900;line-height:1}
.auth{display:flex;flex-direction:column;gap:14px;padding:28px 22px;min-height:100vh;justify-content:center}
.auth img.tag{width:150px;margin:0 auto}
.splash{background:var(--teal);min-height:100vh;display:grid;place-items:center}
.sheet{position:fixed;inset:0;background:rgba(35,33,31,.5);z-index:20;display:flex;align-items:flex-end;justify-content:center}
.sheet[hidden],.toast[hidden]{display:none}
.sheet .in{background:#fff;width:100%;max-width:460px;border-radius:24px 24px 0 0;padding:20px 18px 26px;display:grid;gap:12px;max-height:90vh;overflow:auto}
.toast{position:fixed;left:50%;bottom:90px;transform:translateX(-50%);background:var(--ink);color:#fff;padding:12px 18px;border-radius:14px;font-size:.8rem;font-weight:700;z-index:30;max-width:90%;text-align:center}
.toast.err{background:var(--bad)}
.sec{font-size:.7rem;font-weight:800;letter-spacing:.08em;color:var(--muted);text-transform:uppercase;margin-top:6px}
.empty{text-align:center;color:var(--muted);font-size:.82rem;padding:22px 8px}
table{width:100%;border-collapse:collapse;font-size:.76rem}th,td{text-align:left;padding:7px 6px;border-bottom:1px solid var(--line);vertical-align:top}th{font-size:.64rem;color:var(--muted)}
.adm{display:grid;gap:14px}
.adm .cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px}
.checks{display:grid;gap:6px}.checks label{display:flex;gap:8px;align-items:center;font-weight:600}.checks input{width:auto}
label.chk{display:flex;flex-direction:row;gap:10px;align-items:flex-start;font-weight:600;font-size:.8rem}
label.chk input{width:auto;margin-top:2px;flex:none}

.bell{border:0;background:none;font-size:1.05rem;cursor:pointer;position:relative;padding:2px 6px}
.bell b{position:absolute;top:-4px;right:-2px;background:var(--bad);color:#fff;border-radius:99px;font-size:.58rem;font-weight:800;padding:1px 5px}
