:root{font-family:Inter,Microsoft YaHei,system-ui,sans-serif;color:#17233b;background:#f5f7fb;font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer;border:1px solid #dce3ef;border-radius:8px;padding:9px 13px;background:#fff;color:#263958}button:hover{background:#edf3ff}button:disabled{cursor:wait;opacity:.55}a{color:#285fcb}input,select,textarea{width:100%;min-width:0;border:1px solid #ccd7e6;border-radius:8px;padding:10px;background:#fff;color:#17233b}input[type=checkbox]{width:20px;height:20px}textarea{min-height:90px;resize:vertical}h1{font-size:24px;margin:0 0 6px}h2{font-size:18px;margin:0 0 16px}h3{font-size:15px}p{line-height:1.7}small,.muted{color:#64748b}.shell{display:grid;grid-template-columns:224px minmax(0,1fr);min-height:100dvh}.side{background:#fff;border-right:1px solid #e0e6ef;padding:24px 12px;position:sticky;top:0;height:100dvh;overflow:auto}.brand{font-size:20px;letter-spacing:1px;font-weight:700;padding:0 12px 20px}.brand small{display:block;font-size:12px;margin-top:7px;font-weight:400;letter-spacing:0}.side nav{display:grid;gap:4px}.side nav button{border:0;text-align:left;background:transparent;font-size:14px;padding:11px 13px}.side nav button.active{background:#eaf1ff;color:#245bcd;font-weight:600}.main{min-width:0;padding:28px 32px}.top{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:25px}.actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.primary{background:#2b61d7;color:#fff;border-color:#2b61d7}.primary:hover{background:#204fb9}.danger{color:#b42335}.card{background:#fff;border:1px solid #e0e6ef;border-radius:12px;padding:22px;margin:16px 0;min-width:0;box-shadow:0 2px 4px #14244703}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr));gap:16px}.metric{font-size:28px;font-weight:650;margin-top:10px}.toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:end}.toolbar label{flex:1;min-width:150px;max-width:400px}.toolbar input,.toolbar select{margin-top:7px}.scroll{width:100%;overflow:auto;overscroll-behavior-x:contain}table{border-collapse:collapse;width:100%;font-size:13px}th{text-align:left;font-size:12px;color:#66768d;background:#f7f9fc}td,th{padding:12px 10px;border-bottom:1px solid #e8edf4;vertical-align:top;max-width:300px;overflow-wrap:anywhere}td .actions{min-width:105px}td button{font-size:12px;padding:6px 9px}td pre{font:inherit;white-space:pre-wrap;margin:0}.badge{display:inline-block;background:#eef3fc;border-radius:5px;padding:3px 7px;font-size:12px;color:#315d9e}.notice{border:1px solid #c8d9f7;border-radius:9px;background:#edf4ff;padding:12px 16px;line-height:1.7;font-size:13px;margin:14px 0;overflow-wrap:anywhere}.error{background:#fff0f0;border-color:#f1c8ce;color:#9f2837}.empty{padding:35px;text-align:center;color:#75869b}.login{width:min(440px,calc(100% - 32px));margin:8vh auto}.login .card{padding:30px}.form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.form label{display:grid;gap:7px;font-size:13px;min-width:0}.form .wide{grid-column:1/-1}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#16244166;display:flex;justify-content:center;align-items:center;padding:18px}.modal{background:#fff;border-radius:14px;padding:24px;width:min(700px,100%);max-height:90dvh;overflow:auto;box-shadow:0 20px 80px #13274633}.modal .top{margin-bottom:18px}.secret{font-family:monospace;letter-spacing:2px;font-size:18px;overflow-wrap:anywhere;padding:18px;background:#f0f4fb;border-radius:8px;-webkit-user-select:all;-moz-user-select:all;user-select:all}.pager{display:flex;justify-content:flex-end;gap:12px;align-items:center;margin:18px 0}.detail{display:grid;grid-template-columns:150px minmax(0,1fr);gap:10px;font-size:13px}.detail dt{color:#66768d}.detail dd{margin:0;overflow-wrap:anywhere}.mobile-nav{display:none}button:focus-visible,a:focus-visible{outline:3px solid #86a9ee;outline-offset:2px}@media (max-width: 760px){.shell{display:block}.side{position:static;height:auto;padding:15px;border-right:0;border-bottom:1px solid #dce3ef}.brand{padding:0 0 12px;font-size:18px}.side nav{display:flex;overflow:auto;padding-bottom:4px}.side nav button{white-space:nowrap;flex:none}.main{padding:20px 14px}.card{padding:16px}.form{grid-template-columns:1fr}.top{align-items:start}h1{font-size:21px}.modal{padding:18px}.detail{grid-template-columns:105px minmax(0,1fr)}.login{margin-top:4vh}td,th{padding:10px 8px}}
