:root{--bg:#f4f5f1;--surface:#fff;--surface-2:#eceee9;--ink:#1a1e1b;--ink-muted:#5b6259;--ink-faint:#8b9188;--border:#dbdfd7;--border-strong:#c3c9be;--accent:#223b33;--accent-ink:#fff;--solved:#4c7a5c;--solved-bg:#e7f0e8;--solved-border:#bbd4c1;--open:#b4632b;--open-bg:#fbeee1;--open-border:#eacba4;--danger:#a5432f;--focus:#2f5d8a;--shadow:0 1px 2px rgba(26,30,27,.06),0 2px 8px rgba(26,30,27,.04);--radius:10px}*{box-sizing:border-box}body,html{background:var(--bg);color:var(--ink);font-family:Public Sans,system-ui,-apple-system,sans-serif;margin:0;padding:0;-webkit-font-smoothing:antialiased}.mono{font-family:IBM Plex Mono,ui-monospace,monospace}a{color:inherit}button{font-family:inherit}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.wrap{max-width:1180px;margin:0 auto;padding:28px 24px 80px}.hdr{display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;gap:16px;margin-bottom:28px;padding-bottom:20px;border-bottom:1px solid var(--border)}.hdr h1{font-size:22px;font-weight:700;letter-spacing:-.01em;margin:0 0 4px}.hdr p{margin:0;color:var(--ink-muted);font-size:14px}.hdr-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.sync-meta{font-size:12px;color:var(--ink-faint);text-align:right;line-height:1.5}.sync-meta .mono{color:var(--ink-muted)}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border-strong);background:var(--surface);color:var(--ink);padding:9px 16px;border-radius:8px;font-size:13.5px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:8px;transition:border-color .15s ease,transform .05s ease}.btn:hover{border-color:var(--ink-faint)}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.btn-primary:hover{opacity:.92}.btn-danger{background:var(--danger);color:#fff;border-color:var(--danger)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-sm{padding:6px 11px;font-size:12.5px}input[type=file]{display:none}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));grid-gap:12px;gap:12px;margin-bottom:20px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px;box-shadow:var(--shadow)}.card .num{font-family:IBM Plex Mono,monospace;font-size:26px;font-weight:600;line-height:1.1;margin-bottom:4px}.card .lbl{font-size:12.5px;color:var(--ink-muted)}.card.accent-open .num{color:var(--open)}.card.accent-solved .num{color:var(--solved)}.card.clickable{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.card.clickable:hover{border-color:var(--border-strong)}.card.active{border-color:var(--open-border);background:var(--open-bg)}.offender-chip{display:inline-flex;align-items:center;gap:6px;background:var(--open-bg);border:1px solid var(--open-border);color:var(--open);padding:4px 10px;border-radius:100px;font-size:12.5px;font-weight:600}.offender-cell{display:flex;flex-direction:column;gap:6px}.offender-line{display:flex;align-items:center;justify-content:space-between;gap:10px}.offender-mark{font-weight:900;font-size:14px}.offender-mark.done{color:var(--solved)}.offender-mark.pending{color:var(--danger)}.filters{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:14px}.filters input[type=date],.filters input[type=text],.filters select{border:1px solid var(--border-strong);background:var(--surface);color:var(--ink);border-radius:7px;padding:8px 10px;font-size:13px;font-family:inherit}.filters .search-box{min-width:220px;flex:1 1}.filters .spacer{flex:1 1}.filters .count{font-size:12.5px;color:var(--ink-faint);white-space:nowrap}.date-quick{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.table-scroll{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}table{width:100%;border-collapse:collapse;font-size:13.5px}thead th{text-align:left;padding:10px 14px;font-size:11.5px;font-weight:600;color:var(--ink-muted);background:var(--surface-2);white-space:nowrap}tbody td,thead th{border-bottom:1px solid var(--border)}tbody td{padding:11px 14px;vertical-align:top}tbody tr:last-child td{border-bottom:none}tbody tr.row{cursor:pointer}tbody tr.row.expanded,tbody tr.row:hover{background:var(--surface-2)}td.sku{font-family:IBM Plex Mono,monospace;font-weight:600;white-space:nowrap}td.date,td.rank{font-family:IBM Plex Mono,monospace;color:var(--ink-muted);white-space:nowrap}td.rank{text-align:right}td.reason{max-width:260px}td.comment-preview{max-width:220px;color:var(--ink-muted)}.empty-dash{color:var(--ink-faint)}.status-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:100px;font-size:12px;font-weight:600;white-space:nowrap}.status-pill.open{background:var(--open-bg);color:var(--open);border:1px solid var(--open-border)}.status-pill.solved{background:var(--solved-bg);color:var(--solved);border:1px solid var(--solved-border)}.status-pill:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.caret{display:inline-block;transition:transform .15s ease;color:var(--ink-faint);margin-right:6px}tr.expanded .caret{transform:rotate(90deg)}tr.detail-row td{background:var(--bg);padding:0}.detail-inner{padding:18px 22px 22px 40px}.detail-cols{display:grid;grid-template-columns:1.2fr 1fr;grid-gap:24px;gap:24px}@media (max-width:760px){.detail-cols{grid-template-columns:1fr}}.detail-section-title{font-size:11.5px;font-weight:600;color:var(--ink-muted);margin:0 0 10px}.field-chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:4px}.field-chip{display:inline-flex;align-items:center;gap:5px;background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:5px 10px;font-size:12px;color:var(--ink-muted);max-width:260px}.field-chip b{color:var(--ink);font-weight:600;white-space:nowrap}.field-chip a,.field-chip span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.field-chip a{color:var(--focus);text-decoration:underline}.field-chip a:hover{text-decoration:none}.status-toggle-row{display:flex;gap:8px;margin-bottom:4px}.checklist-note{font-size:12px;color:var(--ink-faint);margin-bottom:10px}.checklist{display:flex;flex-direction:column;gap:6px;margin-bottom:4px}.check-item{display:flex;align-items:flex-start;gap:10px;border:1px solid var(--border);border-radius:8px;padding:9px 11px;cursor:pointer;background:var(--surface);transition:background .1s ease}.check-item:hover{border-color:var(--border-strong)}.check-item.done{background:var(--solved-bg);border-color:var(--solved-border)}.check-box{width:16px;height:16px;border-radius:4px;border:1.5px solid var(--border-strong);flex-shrink:0;margin-top:1px;display:flex;align-items:center;justify-content:center;font-size:11px;color:var(--accent-ink);background:var(--surface)}.check-item.done .check-box{background:var(--solved);border-color:var(--solved)}.check-label{font-size:13px;font-weight:500}.check-item.done .check-label{color:var(--ink-muted);text-decoration:line-through}.check-sub{font-size:11px;color:var(--ink-faint);margin-top:2px}.comment-thread{display:flex;flex-direction:column;gap:10px;margin-bottom:12px;max-height:260px;overflow-y:auto;padding-right:4px}.comment{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:10px 12px}.comment-head{display:flex;justify-content:space-between;gap:8px;margin-bottom:4px}.comment-author{font-size:12px;font-weight:600}.comment-time{font-size:11px;color:var(--ink-faint);font-family:IBM Plex Mono,monospace}.comment-body{font-size:13px;color:var(--ink);white-space:pre-wrap;line-height:1.45}.comment-empty{font-size:12.5px;color:var(--ink-faint);font-style:italic;padding:4px 0 8px}.comment-history{font-size:11.5px;color:var(--ink-faint);margin-bottom:10px}.comment-history summary{cursor:pointer;color:var(--ink-muted)}.comment-input-row{display:flex;gap:8px;align-items:flex-start}.comment-input-row textarea{flex:1 1;resize:vertical;min-height:42px;border:1px solid var(--border-strong);background:var(--surface);color:var(--ink);border-radius:7px;padding:9px 11px;font-family:inherit;font-size:13px;line-height:1.4}.empty-state{text-align:center;padding:70px 20px;color:var(--ink-muted)}.empty-state h3{margin:0 0 6px;color:var(--ink);font-size:16px}.empty-state p{margin:0 0 18px;font-size:13.5px}.modal-backdrop{position:fixed;inset:0;background:rgba(20,22,18,.45);display:flex;align-items:center;justify-content:center;z-index:50;padding:20px}.modal{background:var(--surface);border-radius:12px;border:1px solid var(--border);max-width:560px;width:100%;max-height:85vh;overflow-y:auto;padding:24px;box-shadow:0 8px 40px rgba(0,0,0,.25)}.modal.narrow{max-width:380px}.modal h2{font-size:16px;margin:0 0 6px}.modal p.sub{font-size:13px;color:var(--ink-muted);margin:0 0 18px}.map-row{display:grid;grid-template-columns:130px 1fr;align-items:center;grid-gap:10px;gap:10px;margin-bottom:10px}.map-row label{font-size:12.5px;font-weight:600;color:var(--ink-muted)}.map-row select,.modal input[type=email],.modal input[type=number],.modal input[type=password],.modal input[type=text]{border:1px solid var(--border-strong);background:var(--surface);color:var(--ink);border-radius:7px;padding:8px 10px;font-size:13px;width:100%;box-sizing:border-box}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.modal-note{font-size:12px;color:var(--ink-faint);margin-top:14px;padding-top:14px;border-top:1px solid var(--border)}.field-row{margin-bottom:12px}.field-row label{display:block;font-size:12.5px;font-weight:600;color:var(--ink-muted);margin-bottom:6px}.checkbox-row{display:flex;align-items:center;gap:10px;font-size:13px;cursor:pointer;padding:4px 0}.error-text{color:var(--danger);font-size:12.5px;margin-top:8px}.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:var(--ink);color:var(--bg);padding:10px 18px;border-radius:8px;font-size:13px;box-shadow:0 4px 20px rgba(0,0,0,.2);z-index:100;opacity:0;pointer-events:none;transition:opacity .2s ease,transform .2s ease}.toast.show{opacity:1;transform:translateX(-50%) translateY(-4px)}.spinner{width:14px;height:14px;border-radius:50%;border:2px solid hsla(0,0%,100%,.35);border-top-color:currentcolor;animation:spin .7s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(1turn)}}