:root{--ink: #15161a;--muted: #6b6e76;--line: #d8dce1;--paper: #f4f5f7;--card: #ffffff;--bar: #1f2a37;--bar-ink: #f4f5f7;--accent: #2f6fed;--accent-soft: #e7eefc;--ok: #1d9e75;--ok-soft: #e1f5ee;--warn: #b9770b;--warn-soft: #faeeda;--danger: #c0392b;--danger-soft: #fbeaea;--radius: 10px;font-synthesis:none}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:var(--paper);color:var(--ink);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}button{font-family:inherit;cursor:pointer}.app{display:flex;flex-direction:column;height:100%}.topbar{background:var(--bar);color:var(--bar-ink);padding:env(safe-area-inset-top) 16px 0;position:sticky;top:0;z-index:10}.topbar-row{display:flex;align-items:center;gap:12px;min-height:56px}.topbar-title{font-size:17px;font-weight:600}.topbar-sub{font-size:12px;font-weight:600;color:var(--bar-ink);background:#ffffff24;padding:3px 10px;border-radius:6px}.topbar-spacer{flex:1}.topbar-stat{font-size:13px;opacity:.85}.progress-track{height:4px;background:#ffffff2e}.progress-fill{height:100%;background:#6fb1ff;transition:width .2s ease}.toolbar{display:flex;gap:8px;align-items:center;padding:10px 16px;background:var(--card);border-bottom:1px solid var(--line);position:sticky;top:56px;z-index:9}.search{flex:1;height:40px;border:1px solid var(--line);border-radius:var(--radius);padding:0 12px;font-size:16px;background:var(--paper)}.chip{height:40px;padding:0 14px;border:1px solid var(--line);background:var(--card);border-radius:var(--radius);font-size:14px;font-weight:500;color:var(--ink);white-space:nowrap}.chip.on{background:var(--accent);color:#fff;border-color:var(--accent)}.scroll{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding-bottom:96px}.sec-head{position:sticky;top:0;background:var(--paper);z-index:1;padding:14px 16px 6px}.sec-area{font-size:11px;font-weight:700;letter-spacing:.06em;color:var(--accent);text-transform:uppercase}.sec-name{font-size:14px;font-weight:700;letter-spacing:.03em;color:var(--muted);text-transform:uppercase}.row{display:flex;align-items:center;gap:10px;padding:12px 16px;background:var(--card);border-bottom:1px solid var(--line)}.row.counted{background:var(--card)}.row .status{width:26px;font-size:22px;line-height:1;text-align:center;flex:none}.status-done{color:var(--ok)}.status-todo{color:#c3c7cd}.status-custom{color:var(--accent)}.row .meta{flex:1;min-width:0}.row .name{font-size:16px;font-weight:600;line-height:1.25}.row .hint{font-size:12px;color:var(--muted);margin-top:2px}.badge-added{font-size:11px;font-weight:600;color:var(--accent);background:var(--accent-soft);padding:1px 7px;border-radius:6px;margin-left:6px}.qty-controls{display:flex;align-items:center;gap:8px;flex:none}.step{width:46px;height:46px;border-radius:var(--radius);border:1px solid var(--line);background:var(--card);font-size:22px;font-weight:500;color:var(--ink)}.step:active{transform:scale(.96)}.qty-value{min-width:54px;height:46px;border:1px solid var(--line);border-radius:var(--radius);text-align:center;font-size:20px;font-weight:600;color:var(--ink);background:var(--paper);padding:0 4px}.qty-value.todo{color:#b6bac1}.zero{min-width:54px;height:46px;border-radius:var(--radius);border:1px solid var(--line);background:var(--card);font-size:16px;font-weight:700;color:var(--ink)}.zero:active{transform:scale(.96)}.unlock{min-width:40px;height:46px;border-radius:var(--radius);border:1px dashed var(--border, var(--line));background:var(--card);font-size:17px;color:var(--muted)}.fracs{display:flex;gap:6px}.frac{min-width:40px;height:46px;border-radius:var(--radius);border:1px solid var(--line);background:var(--card);font-size:18px;font-weight:600;color:var(--ink)}.frac.on{background:var(--accent);color:#fff;border-color:var(--accent)}.unlock:active,.frac:active{transform:scale(.96)}.add-bar{padding:14px 16px}.btn{width:100%;min-height:48px;border-radius:var(--radius);border:1px solid var(--accent);background:var(--card);color:var(--accent);font-size:15px;font-weight:600}.btn.solid{background:var(--accent);color:#fff}.btn.ghost{border-color:var(--line);color:var(--ink)}.btn:active{transform:scale(.99)}.center{max-width:460px;margin:0 auto;padding:24px 18px}.center h1{font-size:22px;margin:4px 0 2px}.center p.lede{color:var(--muted);margin:0 0 20px;font-size:15px}.field{margin-bottom:16px}.field label{display:block;font-size:13px;font-weight:600;color:var(--muted);margin-bottom:6px}.input,.select{width:100%;height:48px;border:1px solid var(--line);border-radius:var(--radius);padding:0 12px;font-size:16px;background:var(--card);color:var(--ink)}.site-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.site-btn{min-height:56px;border:1px solid var(--line);border-radius:var(--radius);background:var(--card);font-size:16px;font-weight:600;color:var(--ink)}.site-btn.on{background:var(--accent);color:#fff;border-color:var(--accent)}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:flex-end;z-index:50}.sheet{width:100%;background:var(--card);border-radius:16px 16px 0 0;padding:18px 18px 28px;max-height:86%;overflow-y:auto}.sheet h2{font-size:18px;margin:0 0 14px}.sheet-actions{display:flex;gap:10px;margin-top:16px}.sheet-actions .btn{flex:1}.syncpill{font-size:12px;font-weight:600;padding:3px 10px;border-radius:999px}.syncpill.ok{background:#ffffff29;color:#cfeede}.syncpill.pending{background:#ffffff29;color:#ffe1a8}.syncpill.offline{background:#ffffff29;color:#ffc9c2}.con-wrap{max-width:820px;margin:0 auto;padding:18px}.con-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;margin-bottom:10px}.con-row{display:flex;align-items:center;gap:12px}.pill{font-size:12px;font-weight:600;padding:2px 9px;border-radius:6px}.pill.ok{background:var(--ok-soft);color:var(--ok)}.pill.conflict{background:var(--warn-soft);color:var(--warn)}.con-item{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--line)}.con-item:last-child{border-bottom:none}.con-contribs{font-size:12px;color:var(--muted)}.linkbtn{background:none;border:none;color:var(--accent);font-weight:600;font-size:14px;padding:0}.table-num{font-variant-numeric:tabular-nums;font-weight:600;min-width:48px;text-align:right}.notice{background:var(--accent-soft);color:#14387a;padding:10px 12px;border-radius:var(--radius);font-size:14px;margin-bottom:14px}
