:root{--g:#1f6f43;--g2:#e7f3ec;--r:#c0392b;--r2:#fdecea;--o:#b9770e;--o2:#fef5e7;--t:#1d1d1f;--m:#6e6e73;--b:#fff;--bg:#f2f2f7;--line:#e2e2e7}
@media (prefers-color-scheme:dark){:root{--t:#f2f2f7;--m:#a1a1a6;--b:#1c1c1e;--bg:#000;--line:#2c2c2e;--g2:#12301f;--r2:#3a1714;--o2:#3a2a0c}}
*{box-sizing:border-box}
body{margin:0;font:16px/1.4 -apple-system,system-ui,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--t);-webkit-text-size-adjust:100%}
header{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:8px;padding:calc(env(safe-area-inset-top) + 10px) 12px 10px;background:var(--g);color:#fff}
header h1{flex:1;margin:0;font-size:18px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
header button{background:none;border:0;color:#fff;font-size:26px;line-height:1;padding:0 8px;min-width:40px;min-height:40px}
main{max-width:720px;margin:0 auto;padding:12px 12px calc(env(safe-area-inset-bottom) + 90px)}
.card{background:var(--b);border-radius:14px;padding:14px;margin:0 0 10px;box-shadow:0 1px 2px rgba(0,0,0,.06)}
a.card{display:block;color:inherit;text-decoration:none}
.row{display:flex;align-items:center;gap:10px}
.grow{flex:1;min-width:0}
.t{font-weight:600}
.s{color:var(--m);font-size:14px}
.pill{display:inline-block;font-size:13px;font-weight:600;padding:3px 9px;border-radius:999px;white-space:nowrap}
.ok{background:var(--g2);color:var(--g)} .late{background:var(--r2);color:var(--r)} .open{background:var(--o2);color:var(--o)}
h2{font-size:14px;text-transform:uppercase;letter-spacing:.04em;color:var(--m);margin:18px 4px 8px}
label{display:block;font-size:14px;color:var(--m);margin:12px 0 4px}
input,textarea,select{width:100%;font:inherit;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--b);color:var(--t)}
textarea{min-height:90px;resize:vertical}
.btn{display:block;width:100%;font:inherit;font-weight:600;padding:14px;border:0;border-radius:12px;background:var(--g);color:#fff;margin-top:12px;text-align:center;text-decoration:none}
.btn.sec{background:var(--b);color:var(--g);border:1px solid var(--g)}
.btn.red{background:var(--r)}
.btn:disabled{opacity:.5}
.fab{position:fixed;right:18px;bottom:calc(env(safe-area-inset-bottom) + 18px);width:60px;height:60px;border-radius:30px;background:var(--g);color:#fff;font-size:32px;border:0;box-shadow:0 4px 12px rgba(0,0,0,.25)}
.err{color:var(--r);margin-top:10px;font-size:14px}
.chk{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--line)}
.chk input{width:22px;height:22px;flex:none}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
.msg{padding:8px 10px;border-radius:10px;background:var(--bg);margin:6px 0}
.msg.me{background:var(--g2)}
.msg img{max-width:100%;border-radius:8px;margin-top:6px;display:block}
.tabs{display:flex;gap:6px;margin-bottom:10px}
.tabs button{flex:1;font:inherit;font-size:14px;padding:9px;border-radius:10px;border:1px solid var(--line);background:var(--b);color:var(--t)}
.tabs button.on{background:var(--g);color:#fff;border-color:var(--g)}
.banner{background:var(--o2);color:var(--t);border-radius:12px;padding:12px;margin-bottom:10px;font-size:14px}
.photo-btn{display:flex;gap:8px}
.photo-btn>*{flex:1;margin:12px 0 0}
.photo-btn label{margin:12px 0 0}
.empty{text-align:center;color:var(--m);padding:40px 10px}
