*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#f8f9fb;--surface:#fff;--border:#e2e5ea;--text:#1a1d23;--text-muted:#8a92a1;--primary:#3b82f6;--primary-hover:#2563eb;--danger:#ef4444;--danger-hover:#dc2626;--radius:6px;--shadow:0 1px 4px #00000014;font-family:system-ui,-apple-system,sans-serif}body{background:var(--bg);color:var(--text);font-size:14px;line-height:1.5}.app{flex-direction:column;min-height:100vh;display:flex}header{background:var(--surface);border-bottom:1px solid var(--border);z-index:10;height:56px;box-shadow:var(--shadow);align-items:center;gap:16px;padding:0 24px;display:flex;position:sticky;top:0}header h1{flex:1;font-size:18px;font-weight:600}main{flex:1;width:100%;max-width:1200px;margin:0 auto;padding:24px}.token-form{gap:8px;display:flex}.token-form input{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);width:240px;padding:6px 10px;font-size:13px}.token-form input:focus{outline:2px solid var(--primary);outline-offset:1px}button{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);cursor:pointer;padding:6px 14px;font-family:inherit;font-size:13px;transition:background .1s,border-color .1s}button:hover:not(:disabled){background:var(--bg);border-color:#c0c8d4}button:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--primary-hover);border-color:var(--primary-hover)}.btn-danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn-danger:hover:not(:disabled){background:var(--danger-hover);border-color:var(--danger-hover)}.btn-icon{background:0 0;border:none;padding:4px 7px;font-size:14px;line-height:1}.btn-icon:hover:not(:disabled){background:var(--bg);border-radius:var(--radius)}.dep-list-container{flex-direction:column;gap:16px;display:flex}.search-bar{flex-wrap:wrap;gap:10px;display:flex}.search-bar input{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);min-width:160px;padding:8px 12px;font-size:13px}.search-bar input:focus{outline:2px solid var(--primary);outline-offset:1px}.search-bar input[type=search]{flex:1;min-width:200px}.table-wrapper{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);overflow-x:auto}table{border-collapse:collapse;width:100%}th{text-align:left;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);border-bottom:1px solid var(--border);white-space:nowrap;padding:10px 14px;font-size:12px;font-weight:600}td{border-bottom:1px solid var(--border);vertical-align:middle;padding:10px 14px}tr:last-child td{border-bottom:none}tr:hover td{background:#f6f8fb}.dep-name{font-weight:500}.dep-version{color:var(--text-muted);font-family:ui-monospace,monospace;font-size:12px}.missing-date{color:var(--text-muted);white-space:nowrap;font-size:12px}.dep-notes{text-overflow:ellipsis;white-space:nowrap;max-width:280px;overflow:hidden}.dep-actions{white-space:nowrap;gap:4px;display:flex}.badge{color:#3b5bdb;white-space:nowrap;background:#eff3ff;border-radius:12px;padding:2px 7px;font-size:11px;font-weight:600;display:inline-block}.pagination{align-items:center;gap:12px;display:flex}.pagination span,.result-count{color:var(--text-muted);font-size:13px}.modal-overlay{z-index:100;background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--surface);border-radius:var(--radius);flex-direction:column;gap:14px;width:90%;min-width:380px;max-width:500px;padding:28px;display:flex;box-shadow:0 8px 32px #00000026}.modal h2{font-size:16px;font-weight:600}.modal-dep-id{color:var(--text-muted);font-family:ui-monospace,monospace;font-size:12px}.modal-actions{justify-content:flex-end;gap:8px;display:flex}.modal-wide{max-width:600px;max-height:90vh;overflow-y:auto}.form-grid{grid-template-columns:110px 1fr;align-items:center;gap:10px 12px;display:grid}.form-grid label{color:var(--text-muted);text-align:right;font-size:13px;font-weight:500}.label-top{align-self:start;padding-top:8px}.form-grid input{border:1px solid var(--border);border-radius:var(--radius);padding:7px 10px;font-family:inherit;font-size:13px}.form-grid input:focus{outline:2px solid var(--primary);outline-offset:1px}.notes-textarea{border:1px solid var(--border);border-radius:var(--radius);resize:vertical;width:100%;padding:8px 10px;font-family:inherit;font-size:13px}.notes-textarea:focus{outline:2px solid var(--primary);outline-offset:1px}.tabs{border-bottom:1px solid var(--border);gap:0;margin-bottom:24px;display:flex}.tab{color:var(--text-muted);background:0 0;border:none;border-bottom:2px solid #0000;border-radius:0;margin-bottom:-1px;padding:10px 18px;font-size:14px}.tab:hover:not(:disabled){color:var(--text);background:0 0;border-color:#0000}.tab-active{color:var(--primary);border-bottom-color:var(--primary);font-weight:500}.detail-grid{flex-direction:column;gap:10px;display:flex}.detail-row{grid-template-columns:110px 1fr;align-items:start;gap:8px;display:grid}.detail-row-full{grid-template-columns:1fr}.detail-label{text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);padding-top:2px;font-size:12px;font-weight:600}.license-text{white-space:pre-wrap;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);max-height:300px;padding:10px;font-family:ui-monospace,monospace;font-size:11px;line-height:1.6;overflow-y:auto}.muted{color:var(--text-muted)}.center{text-align:center}.error{color:var(--danger);font-size:13px}.loading{color:var(--text-muted);font-size:13px}
