:root{--bg:#F5F4EF;--surface:#FFFFFF;--surface-1:#F1EFE8;--surface-0:#FAFAF7;--text:#26251F;--text-2:#5F5E5A;--text-muted:#8C8B84;--border:#E3E1D8;--border-2:#CFCDC2;--accent-bg:#E6F1FB;--accent-tx:#185FA5;--accent-bd:#B5D4F4;--ok-bg:#EAF3DE;--ok-tx:#3B6D11;--ok-bd:#C0DD97;--warn-bg:#FAEEDA;--warn-tx:#854F0B;--warn-bd:#FAC775;--danger-bg:#FCEBEB;--danger-tx:#A32D2D;--danger-bd:#F7C1C1;--radius:8px;--sec-h:340px;--note-w:72px}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:14px;line-height:1.5}a{color:inherit;text-decoration:none}.wrap{max-width:1400px;margin:0 auto;padding:24px 20px 60px}.topbar{display:flex;align-items:center;gap:10px;margin-bottom:8px}.logo{width:30px;height:30px;border-radius:7px;background:var(--text);color:#fff;display:flex;align-items:center;justify-content:center;flex-shrink:0}.title{font-size:18px;font-weight:600;margin:0}.cap{font-size:12px;color:var(--text-muted);margin:0 0 20px 40px}.topbar-right{margin-left:auto;display:flex;align-items:center;gap:10px;font-size:12px;color:var(--text-2)}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:18px;flex-wrap:wrap}.tab{padding:9px 15px;font-size:13px;color:var(--text-2);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;-webkit-user-select:none;user-select:none;display:inline-flex;align-items:center;gap:5px}.tab.active{color:var(--text);border-bottom-color:var(--text);font-weight:600}.bar{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;gap:12px;flex-wrap:wrap}.h{font-size:17px;font-weight:600;margin:0}.sub{font-size:12px;color:var(--text-muted);margin:2px 0 0}.btn{border:1px solid var(--border-2);background:var(--surface);border-radius:var(--radius);padding:6px 12px;font-size:13px;color:var(--text);display:inline-flex;align-items:center;gap:6px;cursor:pointer}.btn:hover{background:var(--surface-1)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-off{opacity:.5;cursor:not-allowed;pointer-events:none}.btn-primary{background:var(--text);color:#fff;border-color:var(--text)}.btn-primary:hover{opacity:.9;background:var(--text)}.btn-danger{color:var(--danger-tx)}.btn-sm{padding:3px 8px;font-size:11px}.card,.sec{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:14px 16px;margin-bottom:12px}.sec-h{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;margin:0 0 12px;padding-bottom:8px;border-bottom:1px solid var(--border);justify-content:space-between;flex-wrap:wrap}.sec-h .lhs{display:flex;align-items:center;gap:8px}.sec-h i{font-size:17px;color:var(--text-2)}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}.f{display:flex;flex-direction:column;gap:4px}.l{font-size:11px;color:var(--text-muted)}.in{min-height:32px;border:1px solid var(--border-2);border-radius:var(--radius);background:var(--surface-0);display:flex;align-items:center;padding:6px 10px;font-size:13px;color:var(--text-2)}input.in,select.in,textarea.in{width:100%;font-family:inherit;color:var(--text)}textarea.in{min-height:60px;resize:vertical}.in.ph{color:var(--text-muted);align-items:flex-start}.drive{display:inline-flex;align-items:center;gap:5px;height:52px;border:1px dashed var(--border-2);border-radius:var(--radius);justify-content:center;font-size:12px;color:var(--accent-tx);background:var(--accent-bg);cursor:pointer;width:100%}.drive.ok{background:var(--ok-bg);color:var(--ok-tx);border-color:var(--ok-bd)}.drive.no{background:var(--danger-bg);color:var(--danger-tx);border-color:var(--danger-bd)}.badge{display:inline-flex;align-items:center;gap:4px;font-size:11px;padding:2px 8px;border-radius:999px;font-weight:600}.st{display:inline-flex;align-items:center;gap:5px;font-size:12px;padding:3px 10px;border-radius:999px;font-weight:600}.b-accent{background:var(--accent-bg);color:var(--accent-tx)}.b-ok{background:var(--ok-bg);color:var(--ok-tx)}.b-warn{background:var(--warn-bg);color:var(--warn-tx)}.b-danger{background:var(--danger-bg);color:var(--danger-tx)}.b-mute{background:var(--surface-1);color:var(--text-2)}.dtag{font-size:10px;color:var(--accent-tx);display:inline-flex;align-items:center;gap:3px}table{width:100%;border-collapse:collapse;font-size:12px}.tscroll{overflow-x:auto}.tscroll>table{width:max-content;min-width:100%}.tscroll td,.tscroll th{white-space:nowrap}.ell{max-width:170px;overflow:hidden;text-overflow:ellipsis}.note-cell{display:inline-block;max-width:var(--note-w);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom;cursor:pointer;text-decoration:underline dotted var(--border-2);text-underline-offset:3px}.note-cell:hover{color:var(--text)}.notes-wide{--note-w:180px}.status-editable{cursor:pointer}.status-editable:hover{outline:1px solid var(--border-2);outline-offset:1px}.status-pick{border:1px solid var(--border-2);background:var(--surface);border-radius:999px;padding:2px 6px;font-size:11px;font-weight:600;color:var(--text);cursor:pointer;font-family:inherit}.cell-in{border:1px solid transparent;background:var(--surface-0);border-radius:6px;padding:3px 6px;font-size:12px;font-family:inherit;color:var(--text);width:100%;min-width:52px}.cell-in:hover{border-color:var(--border-2)}.cell-in:focus{outline:none;border-color:var(--accent-bd);background:var(--surface)}.cell-in:disabled{opacity:.5}.lock-btn.on{background:var(--warn-bg);color:var(--warn-tx);border-color:var(--warn-bd)}.tbl-unlocked{box-shadow:inset 0 0 0 1px var(--warn-bd);border-radius:8px}.rowlimit{overflow-y:auto}.sec-fixed{height:var(--sec-h);overflow-y:auto}.sec-pair{display:flex;flex-direction:column}.sec-pair>.sec-fixed{flex-grow:1;min-height:0}.rowlimit thead th,.sec-fixed thead th{position:sticky;top:0;z-index:1;background:var(--surface);border-bottom:none;box-shadow:inset 0 -1px 0 var(--border)}.rows-pick{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--text-muted)}.rows-pick select{border:1px solid var(--border-2);background:var(--surface);border-radius:var(--radius);padding:2px 6px;font-size:11px;color:var(--text);cursor:pointer}th{text-align:left;font-weight:600;color:var(--text-muted);font-size:11px;padding:6px 8px;border-bottom:1px solid var(--border)}td{padding:8px;border-bottom:1px solid var(--border);color:var(--text-2)}tr:last-child td{border-bottom:none}tr.clickable{cursor:pointer}tr.clickable:hover{background:var(--surface-0)}.name{color:var(--text);font-weight:600}.thumb{width:38px;height:38px;border-radius:8px;background:var(--surface-1);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;color:var(--text-muted);flex-shrink:0;overflow:hidden}.thumb img{width:100%;height:100%;object-fit:cover}.thumb-lg{width:56px;height:56px}.thumb-act{cursor:pointer}.thumb-act:hover{border-color:var(--accent-bd)}.round{border:1px solid var(--border);border-radius:10px;padding:12px;margin-bottom:10px}.round-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;gap:8px;flex-wrap:wrap}.chip{font-size:11px;font-weight:600;padding:2px 8px;border-radius:6px;background:var(--surface-1);color:var(--text-2)}.note{font-size:11px;color:var(--text-muted);margin:8px 2px}.error{font-size:12px;color:var(--danger-tx);background:var(--danger-bg);border:1px solid var(--danger-bd);border-radius:var(--radius);padding:8px 10px;margin-bottom:12px}.gallery{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.gallery img{width:64px;height:64px;object-fit:cover;border-radius:6px;border:1px solid var(--border)}.pending-x{position:absolute;top:-5px;right:-5px;width:17px;height:17px;border-radius:50%;background:var(--danger-tx);color:#fff;font-size:12px;line-height:17px;text-align:center;cursor:pointer;border:1px solid var(--surface)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#26251f59;display:flex;align-items:center;justify-content:center;z-index:50;padding:20px}.modal{background:var(--surface);border-radius:12px;padding:20px;max-width:520px;width:100%;max-height:90vh;overflow:auto}.modal-wide{max-width:900px}.gallery img{cursor:pointer}.modal h3{margin:0 0 14px;font-size:15px}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.center-page{min-height:100vh;display:flex;align-items:center;justify-content:center}.login-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:32px;width:100%;max-width:360px}.loading{padding:40px;text-align:center;color:var(--text-muted)}.icon{width:1em;height:1em;display:inline-block;vertical-align:-.15em;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
