:root{font-family:Inter,"Microsoft YaHei",sans-serif;color:#1c2c38;background:#f3f6f8;font-size:14px}*{box-sizing:border-box}body{margin:0}button,input,textarea,select{font:inherit}button{border:1px solid #d5dfe5;background:white;border-radius:8px;padding:9px 14px;cursor:pointer;color:#233d4c}button:hover{background:#eaf2f4}button:disabled{opacity:.5;cursor:wait}.primary{background:#176b64;color:white;border-color:#176b64}.primary:hover{background:#12574f}.quiet{background:transparent;border:none}.hidden{display:none!important}aside{position:fixed;inset:0 auto 0 0;width:224px;background:#152f35;color:#ebf5f4;padding:30px 20px;display:flex;flex-direction:column}.brand{font-size:27px;font-weight:750;letter-spacing:2px}.brand small{display:block;font-size:12px;letter-spacing:4px;font-weight:400;opacity:.65;margin-top:8px}nav{display:grid;gap:7px;margin-top:44px}nav button{text-align:left;border:none;background:transparent;color:#aec7ca;padding:13px 16px}nav button.active{background:#285057;color:white}nav button:hover{background:#24464c}.aside-note{margin-top:auto;padding:24px 10px;line-height:2;color:#a4bdbf}.aside-note span{font-size:12px}aside .quiet{color:#a4bdbf}main{margin-left:224px;padding:38px 42px;max-width:1800px}header{display:flex;justify-content:space-between;align-items:center;margin-bottom:26px}h1{font-size:29px;margin:8px 0;font-weight:650}.eyebrow{font-size:10px;letter-spacing:2px;color:#789094}.header-actions{display:flex;gap:16px;align-items:center;color:#87959e;font-size:12px}.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}.card,.panel{background:white;border:1px solid #e1e8ed;border-radius:13px;padding:24px}.card .label{color:#74828c}.card .number{font-size:32px;margin-top:15px;font-weight:600}.panel{margin-top:22px;overflow:auto}.panel h2{font-size:18px;margin:0 0 16px}.muted{color:#71818d;line-height:1.8}.toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px}.actions{display:flex;gap:6px;flex-wrap:wrap}.actions button{font-size:12px;padding:6px 9px}table{width:100%;border-collapse:collapse;text-align:left}th{font-size:12px;color:#7c8b95;font-weight:500;padding:12px;border-bottom:1px solid #e3eaf0;white-space:nowrap}td{padding:16px 12px;border-bottom:1px solid #edf1f4;max-width:340px;overflow-wrap:anywhere;line-height:1.6}tbody tr:hover{background:#fafcfc}.badge{display:inline-block;background:#edf4f3;color:#356f66;border-radius:5px;font-size:12px;padding:3px 8px}.badge.warn{background:#fff0dc;color:#906726}.empty{padding:55px;text-align:center;color:#85969f}.small{font-size:12px;color:#80909a}footer{color:#94a1a8;font-size:12px;margin-top:30px}#notice:not(:empty){background:#e5f1ed;padding:13px 18px;border-radius:8px;margin-bottom:20px}#notice.error{background:#fbeae7;color:#9b4637}.auth{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,#edf5f3,#e4ebf2)}.auth-card{width:min(440px,94vw);background:white;border-radius:20px;padding:42px;box-shadow:0 20px 70px #1d4b4920}.auth .brand{color:#24675c;margin-bottom:35px}.auth h1{font-size:24px}.auth p{color:#7b8c91;line-height:1.7}label{display:block;margin:16px 0;color:#566b76;font-size:13px}input,textarea,select{display:block;width:100%;margin-top:7px;padding:11px;border:1px solid #d7e0e6;border-radius:7px;background:#fcfdfd;color:#203a47}textarea{min-height:120px;resize:vertical}input[type=checkbox]{display:inline-block;width:auto;margin-right:8px}.auth button{width:100%;margin-top:15px}.error{color:#ad403b!important}dialog{border:0;border-radius:16px;width:min(690px,94vw);padding:28px;box-shadow:0 20px 80px #0003}dialog::backdrop{background:#152c3866}.dialog-head{display:flex;justify-content:space-between;align-items:center}.dialog-head h2{margin:0}.dialog-actions{text-align:right;margin-top:20px}.message{white-space:pre-wrap}.split{display:grid;grid-template-columns:1fr 1fr;gap:20px}.code{font-family:monospace;word-break:break-all;background:#f0f4f6;padding:14px;border-radius:8px}@media(max-width:950px){aside{width:170px}main{margin-left:170px;padding:24px}.cards{grid-template-columns:repeat(2,1fr)}.split{grid-template-columns:1fr}}@media(max-width:620px){aside{position:static;width:auto;padding:18px}nav{display:flex;overflow:auto;margin-top:15px}nav button{white-space:nowrap}.aside-note,aside #logout{display:none}main{margin:0;padding:18px}header{align-items:flex-start}.header-actions span{display:none}.cards{gap:10px}.card{padding:16px}.card .number{font-size:26px}}
