*{box-sizing:border-box}body{margin:0;font-family:Microsoft YaHei,system-ui,sans-serif;background:#f3f5f7;color:#18212b}button,input,select,textarea{font:inherit}button{border:0;border-radius:6px;padding:10px 12px;background:#2563eb;color:#fff;display:inline-flex;align-items:center;justify-content:center;gap:6px;cursor:pointer;min-height:40px}button:disabled{cursor:not-allowed;opacity:.68}input,select,textarea{border:1px solid #cbd6df;border-radius:6px;padding:10px 12px;min-width:0;width:100%;color:#15202b;background:#fff}input:focus,select:focus,textarea:focus{border-color:#2563eb;box-shadow:0 0 0 3px #2563eb24;outline:0}textarea{min-height:104px;resize:vertical}.app-shell{min-height:100vh;display:grid;grid-template-columns:260px 1fr}.sidebar{background:#111827;color:#fff;padding:24px 18px;display:flex;flex-direction:column;gap:22px}.sidebar-title{display:flex;align-items:center;gap:10px;font-size:19px;font-weight:700;padding:4px 8px}nav{display:flex;flex-direction:column;gap:8px}nav button{justify-content:flex-start;background:transparent;color:#d5dde8}nav button.active,nav button:hover{background:#ffffff1a;color:#fff}.admin-profile{display:flex;flex-direction:column;gap:6px;padding:12px;border-radius:8px;background:#ffffff14}.admin-profile span{color:#aab6c5;font-size:13px}.admin-profile strong{color:#fff}.login-screen{min-height:100vh;display:grid;place-items:center;padding:24px;background:#f3f5f7}.login-card{width:min(440px,100%);background:#fff;border:1px solid #dbe3ea;border-radius:8px;box-shadow:0 18px 40px #0f172a1f;padding:24px}.login-brand{display:flex;align-items:center;gap:12px;margin-bottom:20px}.login-brand svg{color:#2563eb}.login-brand h1{margin:0;font-size:23px}.login-brand p{margin:4px 0 0;color:#667485}.login-form,.bootstrap-form{display:flex;flex-direction:column;gap:12px}.bootstrap-form{margin-top:14px;padding-top:14px;border-top:1px solid #edf1f4}.login-form label,.bootstrap-form label,.stack-form label,.modal-form label{display:flex;flex-direction:column;gap:7px;font-weight:700}details{color:#657485}summary{cursor:pointer;margin-bottom:8px}.link-button{margin-top:14px;width:100%;background:transparent;color:#2563eb;min-height:36px;padding:6px 8px}.sidebar-version{margin-top:auto;padding:12px;border-radius:8px;background:#ffffff14}.sidebar-version h2{margin:0 0 10px;font-size:15px}.sidebar-version-form{display:flex;flex-direction:column;gap:10px}.sidebar-version-form label{display:flex;flex-direction:column;gap:6px;color:#d5dde8;font-size:13px;font-weight:700}.sidebar-version-form input,.sidebar-version-form textarea{border-color:#ffffff29}.sidebar-version-form textarea{min-height:78px}.workspace{padding:26px;display:flex;flex-direction:column;gap:18px;min-width:0}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px}.topbar h1{margin:0;font-size:24px}.topbar p{margin:6px 0 0;color:#667485}.topbar-actions{display:flex;gap:10px;flex-wrap:wrap}.ghost{background:#fff;color:#1f2937;border:1px solid #ccd6dd}.notice,.inline-notice{display:flex;align-items:center;gap:8px;margin:0;border-radius:6px;padding:10px 12px;line-height:1.4}.notice{position:relative;padding-right:44px}.inline-notice{font-size:14px}.notice-success{background:#e5f7ed;color:#126333}.notice-error{background:#fde8e6;color:#b42318}.notice-info{background:#e8f0ff;color:#1746b8}.notice-close{position:absolute;right:6px;top:50%;transform:translateY(-50%);background:transparent;color:inherit;min-height:30px;width:30px;padding:0}.toast{position:fixed;top:18px;left:50%;transform:translate(-50%);z-index:20;display:flex;align-items:center;gap:8px;min-width:220px;max-width:min(420px,calc(100vw - 32px));border:1px solid transparent;border-radius:8px;padding:10px 38px 10px 12px;box-shadow:0 12px 28px #0f172a29;line-height:1.4}.toast-close{position:absolute;right:6px;top:50%;transform:translateY(-50%);background:transparent;color:inherit;min-height:28px;width:28px;padding:0}.status-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.stat,.panel{background:#fff;border:1px solid #dbe3ea;border-radius:8px;box-shadow:0 1px 2px #0f172a0a}.stat{padding:16px}.stat span{color:#657485;display:block;font-size:13px}.stat strong{display:block;font-size:26px;margin-top:6px}.stat.blue{border-left:4px solid #2563eb}.stat.green{border-left:4px solid #16a34a}.stat.amber{border-left:4px solid #d97706}.content-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:18px;align-items:start}.panel{min-width:0}.panel-heading{padding:16px 18px;border-bottom:1px solid #edf1f4}.panel-heading h2{margin:0;font-size:17px}.table-wrap{overflow-x:auto}.data-table{width:100%;border-collapse:collapse;min-width:920px}.data-table th,.data-table td{padding:12px 14px;border-bottom:1px solid #edf1f4;text-align:left;font-size:14px;vertical-align:middle}.data-table th{color:#2b3540;font-weight:700}.badge{display:inline-flex;align-items:center;border-radius:999px;padding:4px 9px;font-size:13px;font-weight:700}.badge-ok{background:#e5f7ed;color:#126333}.badge-muted{background:#edf1f4;color:#596775}.table-input{min-width:120px;max-width:180px;padding:8px 10px}.row-actions{display:flex;gap:8px;flex-wrap:wrap}.mini{min-height:32px;padding:6px 9px;background:#eef4ff;color:#0f4cbf}.mini.danger{background:#fff0ef;color:#b42318}.empty{text-align:center;color:#6b7a86}.stack-form{display:flex;flex-direction:column;gap:12px;padding:18px}.modal-backdrop{position:fixed;inset:0;background:#0f172a6b;display:flex;align-items:center;justify-content:center;padding:24px}.account-modal{width:min(460px,100%);background:#fff;border-radius:8px;box-shadow:0 18px 40px #0f172a38}.modal-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 18px;border-bottom:1px solid #edf1f4}.modal-header h2{margin:0;font-size:18px}.icon-button{background:transparent;color:#334155;min-height:32px;width:32px;padding:0}.modal-form{display:flex;flex-direction:column;gap:13px;padding:18px}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:4px}.spin{animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:1120px){.app-shell{grid-template-columns:1fr}.sidebar{min-height:auto}.sidebar-version{margin-top:0}.content-grid,.status-grid{grid-template-columns:1fr}.topbar{align-items:flex-start;flex-direction:column}}
