:root{--bg:#f4f5f1;--card:#fff;--tx:#1d2723;--mu:#68736d;--ac:#1f7a4d;--ac2:#e6f2ea;--bd:#dde0d8;--dg:#c0392b;--wr:#fff4d6;--wt:#8a6100;--bl:#e4eefb;--bt:#1f5aa6;--wa:#25d366}
@media (prefers-color-scheme:dark){:root{--bg:#141819;--card:#1e2425;--tx:#eaeeec;--mu:#98a39d;--ac:#4fb480;--ac2:#243529;--bd:#323a3b;--dg:#ef6b5c;--wr:#3a3216;--wt:#f0c860;--bl:#1d2c42;--bt:#7fb1f0}}
*{box-sizing:border-box}
[hidden]{display:none!important}
body{margin:0;background:var(--bg);color:var(--tx);font-family:system-ui,-apple-system,"Segoe UI",sans-serif;line-height:1.4;padding-bottom:env(safe-area-inset-bottom,0)}
.bar{background:var(--ac);color:#fff;padding:12px 16px;padding-top:calc(12px + env(safe-area-inset-top,0));display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.bar b{font-size:18px;flex:1}.bar span{font-size:13px;opacity:.9}
.bar button{background:rgba(255,255,255,.18);color:#fff;border:0}
.w{max-width:1000px;margin:0 auto;padding:14px}
input,select,button{font:inherit;color:var(--tx);background:var(--card);border:1px solid var(--bd);border-radius:10px;padding:8px 10px}
button{cursor:pointer}.pri{background:var(--ac);color:#fff;border-color:var(--ac);font-weight:600}
.card{background:var(--card);border:1px solid var(--bd);border-radius:14px;padding:14px;margin-bottom:12px}
.card h2{font-size:16px;margin:0 0 10px}
.tabs{display:flex;gap:6px;margin-bottom:12px;flex-wrap:wrap}
.tabs button{flex:1;font-weight:600}.tabs .on{background:var(--ac);color:#fff;border-color:var(--ac)}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:12px;margin-bottom:12px}
.grid .card{margin:0}
.tool{display:flex;gap:8px;align-items:center;margin-bottom:12px;flex-wrap:wrap}
.mu{color:var(--mu);font-size:13px}
.cat{font-size:12px;color:var(--mu);margin:10px 0 4px;text-transform:uppercase;letter-spacing:.04em}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{padding:4px 10px;border-radius:20px;font-size:14px}.chip.sel{background:var(--ac2);border-color:var(--ac);color:var(--ac);font-weight:600}
.row{display:flex;align-items:center;gap:6px;padding:6px 0;border-bottom:1px solid var(--bd)}
.row:last-child{border:0}.row .n{flex:1;min-width:0;overflow-wrap:anywhere}.row.done .n{text-decoration:line-through;color:var(--mu)}
.row input[type=number],.add input[type=number]{width:72px}
.row select,.add select{padding:7px 4px}
.x{color:var(--dg);padding:4px 9px}
.add{display:flex;gap:6px;margin-top:10px;flex-wrap:wrap}.add input[type=text]{flex:1;min-width:110px}
.tw{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:14px}
th,td{padding:8px 10px;border-bottom:1px solid var(--bd);text-align:left;white-space:nowrap}th{font-size:12px;color:var(--mu);text-transform:uppercase}
.b{display:inline-block;padding:2px 9px;border-radius:12px;font-size:12px;font-weight:600}
.same{background:var(--ac2);color:var(--ac)}.diff{background:var(--wr);color:var(--wt)}.only{background:var(--bl);color:var(--bt)}
.stats{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.login{max-width:380px;margin:30px auto}.login input{width:100%;margin-bottom:8px}
.err{color:var(--dg);font-size:14px;min-height:20px}
.wa{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.wa input{flex:1;min-width:180px}
.wab{background:var(--wa);color:#073b1c;font-weight:700;text-decoration:none;padding:10px 16px;border-radius:10px}
#toast{position:fixed;left:50%;bottom:20px;transform:translateX(-50%);background:#222;color:#fff;padding:10px 16px;border-radius:10px;display:none;max-width:90%;z-index:9}
@media print{.bar,.tabs,.tool,.add,.x,.wa{display:none}}
