:root{--bg:#f6f6f4;--fg:#222;--card:#fff;--line:#ddd;--muted:#777;--accent:#1f6feb}
@media (prefers-color-scheme:dark){:root{--bg:#16181c;--fg:#e6e6e6;--card:#20242a;--line:#343a42;--muted:#9aa;--accent:#4c8dff}}
*{box-sizing:border-box}
body{font-family:system-ui,sans-serif;margin:0;background:var(--bg);color:var(--fg)}
main{padding:12px 14px;max-width:1300px;margin:0 auto}
h1{margin:6px 0} h2{font-size:18px;margin:22px 0 8px} h3{margin:0 0 6px;font-size:16px}
.muted{color:var(--muted);font-size:13px}
.nav{display:flex;flex-wrap:wrap;gap:2px;background:var(--card);border-bottom:1px solid var(--line);padding:4px 8px;position:sticky;top:0;z-index:5}
.nav a{padding:8px 12px;text-decoration:none;color:var(--fg);border-radius:6px}
.nav a.on{background:var(--accent);color:#fff}
.badge{background:#888;color:#fff;border-radius:10px;padding:1px 7px;font-size:12px}
.badge.warn{background:#d33}
.flash{background:#fff3cd;color:#553;padding:8px 12px;border-radius:6px;margin-bottom:8px}
.grid{display:flex;flex-wrap:wrap;gap:12px}
.card{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:10px;width:100%;max-width:420px}
.crops{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:6px}
.crop{width:150px}
.imgs{display:flex;gap:6px;align-items:flex-end}
img.body{max-height:150px;max-width:90px;border-radius:4px}
img.face{width:56px;height:56px;object-fit:cover;border-radius:4px}
.card>.imgs img.body,.card>form>.imgs img.body{max-height:200px;max-width:130px}
.meta{font-size:12px;color:var(--muted);margin:4px 0}
form.suggest{display:flex;gap:8px;align-items:center;border:1px dashed var(--accent);border-radius:6px;padding:6px;margin:6px 0}
form.suggest .meta{flex:1;margin:0}
form.suggest button{flex:none;padding:8px 10px}
.card>form.suggest>.imgs img.body{max-height:70px;max-width:50px}
.dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:4px;vertical-align:middle}
select,input[type=text],input[type=date]{width:100%;padding:8px;margin:3px 0;background:var(--bg);color:var(--fg);border:1px solid var(--line);border-radius:4px;font-size:16px}
form.inline{display:flex;gap:6px;max-width:300px}
.row{display:flex;gap:6px;margin-top:4px}
button{flex:1;padding:9px;cursor:pointer;border:1px solid var(--line);background:var(--card);color:var(--fg);border-radius:4px}
button.save{background:var(--accent);color:#fff;border:0}
details summary{font-size:12px;color:var(--muted);cursor:pointer}
.thumbs{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}
.thumb{position:relative}
.thumb button{position:absolute;top:-4px;right:-4px;width:20px;height:20px;padding:0;border-radius:50%;flex:none;line-height:1}
.legend span{margin-right:12px;font-size:13px}
.tl{overflow-x:auto;margin:10px 0}
.tl-row{display:flex;align-items:center;min-width:560px}
.tl-label{width:110px;flex:none;font-size:13px;padding-right:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tl-track{position:relative;flex:1;height:26px;border-bottom:1px solid var(--line)}
.axis .tl-track{height:20px;border:0}
.tick{position:absolute;font-size:11px;color:var(--muted);transform:translateX(-50%)}
.grid-line{position:absolute;top:0;bottom:0;width:1px;background:var(--line);opacity:.5}
.seg{position:absolute;top:5px;height:16px;border-radius:3px;min-width:3px}
.events{list-style:none;padding:0}.events li{padding:4px 0;border-bottom:1px solid var(--line)}
.kind{font-size:11px;border:1px solid var(--line);border-radius:4px;padding:0 5px}
.kind.arrived{color:#2fa86b}.kind.left{color:#e1572f}.kind.moved{color:#2f7de1}
.alerts{list-style:none;padding:0}
.alert{display:flex;gap:10px;align-items:center;background:var(--card);border:1px solid var(--line);border-left:5px solid #888;border-radius:6px;padding:8px;margin:6px 0}
.alert>div{flex:1}.alert.warn{border-left-color:#d0a62f}.alert.alarm{border-left-color:#d33}.alert.done{opacity:.55}
.alert form{width:130px}
iframe.summary{width:100%;height:75vh;border:1px solid var(--line);background:#fff;border-radius:6px}
table.cams{border-collapse:collapse;width:100%;font-size:14px}
table.cams th,table.cams td{text-align:left;padding:6px 8px;border-bottom:1px solid var(--line)}
table.cams tr.off{opacity:.55}
footer{padding:14px;text-align:center;font-size:12px;color:var(--muted)}
/* login (web/auth.py) */
main.login{max-width:360px;margin:40px auto;padding:0 16px}
main.login form{display:flex;flex-direction:column;gap:10px;margin:14px 0}
main.login input{padding:11px;font-size:18px;border:1px solid var(--line);border-radius:4px;background:var(--card);color:var(--fg)}
main.login button[type=submit]:not(.link){background:var(--accent);color:#fff;border:0;padding:11px;font-size:16px}
main.login form.resend{flex-direction:row;align-items:center}
button.link{flex:none;background:none;border:0;padding:0;color:var(--accent);text-decoration:underline;cursor:pointer}
footer form.inline{display:inline-flex;max-width:none}
