*{box-sizing:border-box}:root{--border:#d9dee4;--bg:#f5f7f9;--accent:#1a73e8;--danger:#d93025;--text:#1f2937;--muted:#6b7280}body{margin:0;font-family:Segoe UI,Malgun Gothic,Apple SD Gothic Neo,sans-serif;background:var(--bg);color:var(--text);font-size:14px}.topbar{display:flex;align-items:center;gap:16px;padding:10px 20px;background:#fff;border-bottom:1px solid var(--border);position:-webkit-sticky;position:sticky;top:0;z-index:10}.topbar h1{font-size:16px;margin:0}.topbar .spacer{flex:1 1}.topbar .user{color:var(--muted);font-size:13px}.tabs{display:flex;gap:4px;padding:12px 20px 0}.tabs button{border:1px solid var(--border);border-bottom:none;background:#eceff3;padding:8px 16px;border-radius:8px 8px 0 0;cursor:pointer;font-size:14px}.tabs button.active{background:#fff;font-weight:600}.panel{margin:0 20px 20px;background:#fff;border:1px solid var(--border);border-radius:0 8px 8px 8px;padding:16px}.toolbar{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px;align-items:center}.toolbar input[type=text],.toolbar select{padding:7px 10px;border:1px solid var(--border);border-radius:6px;font-size:14px}.toolbar input[type=text]{min-width:240px}.toolbar .count{color:var(--muted);margin-left:auto}button.primary{background:var(--accent);color:#fff;border:none;padding:8px 14px;border-radius:6px;cursor:pointer;font-size:14px}button.primary:disabled{opacity:.5;cursor:default}button.danger{color:var(--danger);border:1px solid var(--danger);border-radius:6px}button.danger,button.plain{background:#fff;padding:8px 14px;cursor:pointer}button.plain{border:1px solid var(--border);border-radius:6px}.tablewrap{overflow-x:auto}table{border-collapse:collapse;width:100%}td,th{border-bottom:1px solid var(--border);padding:7px 10px;text-align:left;white-space:nowrap}th{background:#f1f4f7;font-weight:600;position:-webkit-sticky;position:sticky;top:0}tbody tr:hover{background:#f0f6ff;cursor:pointer}tbody tr.readonly:hover{cursor:default}.badge{display:inline-block;padding:1px 8px;border-radius:10px;font-size:12px;background:#e8f0fe;color:#1a56b0}.login-wrap{display:flex;justify-content:center;align-items:center;min-height:100vh}.login-box{background:#fff;border:1px solid var(--border);border-radius:10px;padding:32px;width:360px}.login-box h1{font-size:18px;margin:0 0 6px}.login-box p{margin:0 0 20px}.login-box label,.login-box p{color:var(--muted);font-size:13px}.login-box label{display:block;margin-bottom:4px}.login-box input{width:100%;padding:9px 10px;border:1px solid var(--border);border-radius:6px;margin-bottom:14px;font-size:14px}.login-box button{width:100%}.modal-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.35);display:flex;justify-content:center;align-items:flex-start;padding:4vh 16px;z-index:50}.modal{background:#fff;border-radius:10px;width:920px;max-width:100%;max-height:92vh;display:flex;flex-direction:column}.modal header{display:flex;align-items:center;gap:12px;padding:14px 20px;border-bottom:1px solid var(--border)}.modal header h2{font-size:16px;margin:0;flex:1 1}.modal .body{overflow-y:auto;padding:8px 20px 20px}.modal footer{display:flex;gap:8px;padding:12px 20px;border-top:1px solid var(--border);background:#fafbfc;border-radius:0 0 10px 10px}.modal footer .spacer{flex:1 1}.fgroup{margin-top:14px}.fgroup h3{font-size:13px;color:var(--muted);border-bottom:1px solid var(--border);padding-bottom:4px;margin:0 0 10px}.fgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));grid-gap:10px 14px;gap:10px 14px}.fgrid label{display:block;font-size:12px;color:var(--muted);margin-bottom:3px}.fgrid label .req{color:var(--danger)}.fgrid input,.fgrid select{width:100%;padding:7px 9px;border:1px solid var(--border);border-radius:6px;font-size:13px}.fgrid input:disabled{background:#f1f4f7;color:var(--muted)}.error{color:var(--danger);white-space:pre-wrap}.error,.notice{font-size:13px;margin:8px 0}.notice{color:#15803d}@media (max-width:640px){.panel{margin:0 8px 12px;padding:10px}.tabs{padding:8px 8px 0}.toolbar input[type=text]{min-width:150px;flex:1 1}}