*{box-sizing:border-box}body{margin:0;background:#f3f5f7;color:#1f2933;font-family:Microsoft YaHei,Arial,sans-serif}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.72}.login-shell{display:grid;min-height:100vh;place-items:center;padding:24px;background:linear-gradient(135deg,#00746d14,#009e9608),#f3f5f7}.login-panel{width:min(420px,100%);border-radius:8px;background:#fff;padding:34px;box-shadow:0 18px 50px #0f172a24}.login-brand{margin-bottom:24px;color:#00746d}.login-brand span{display:block;font-size:30px;font-weight:800;line-height:1.1}.login-brand small{color:#55736f}.login-panel h1{margin-bottom:24px;font-size:26px}.login-form{display:grid;gap:16px}.login-form label{display:grid;gap:8px;color:#37485a;font-weight:700}.login-form input{width:100%;height:42px;border:1px solid #d7dde5;border-radius:6px;background:#fff;color:#243447;padding:0 12px;outline:none;font-weight:400}.login-form input:focus{border-color:#009e96;box-shadow:0 0 0 3px #009e961f}.login-form button{height:42px;border:0;border-radius:6px;background:#009e96;color:#fff;font-weight:700}.login-error{min-height:38px;border:1px solid #f4b8bf;border-radius:6px;background:#fff1f2;color:#b42323;padding:9px 12px}.admin-shell{display:flex;min-height:100vh}.sidebar{position:sticky;top:0;width:220px;min-height:100vh;padding:24px 16px;background:#00746d;color:#fff}.brand{margin-bottom:28px}.brand span{display:block;font-size:26px;font-weight:800;line-height:1.1}.brand small{color:#c7eeec}.sidebar button{width:100%;height:44px;margin-bottom:10px;border:0;border-radius:6px;background:transparent;color:#e1f6f4;text-align:left;padding:0 14px}.sidebar button.active{background:#0aa39b;color:#fff;font-weight:700}.workspace{flex:1;min-width:0;padding:30px 28px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:22px}h1,h2,h3,p{margin:0}h1{font-size:28px;line-height:1.25}h2{font-size:20px}.topbar p{margin-top:8px;color:#64748b}.topbar-actions{display:flex;align-items:center;gap:10px}.refresh,.logout-button,.actions button,.modal-actions button,.filters button,.article-toolbar button,.upload-button,.plain-link,.format-button{height:34px;border:0;border-radius:6px;background:#009e96;color:#fff;padding:0 14px;white-space:nowrap}.logout-button{background:#22313f}.notice{min-height:40px;margin-bottom:14px;border:1px solid #bce7dd;border-radius:6px;background:#ecfbf7;color:#05756c;padding:10px 14px}.dashboard-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.metric,.panel{border-radius:8px;background:#fff;box-shadow:0 8px 22px #0f172a14}.metric{padding:22px}.metric span{color:#64748b}.metric strong{display:block;margin-top:14px;color:#a40000;font-size:34px}.panel{padding:0;overflow:hidden}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:64px;padding:18px 20px;border-bottom:1px solid #e5e9ef}.filters{display:flex;align-items:center;gap:10px}.filters input,.filters select,.edit-modal input,.edit-modal select,.edit-modal textarea{height:36px;border:1px solid #d7dde5;border-radius:6px;background:#fff;color:#243447;padding:0 12px;outline:none}.edit-modal textarea{width:100%;height:auto;min-height:120px;padding:10px 12px;resize:vertical;font:inherit;line-height:1.5}.filters input{width:260px}.type-tabs{display:flex;gap:8px;padding:14px 20px;border-bottom:1px solid #e5e9ef;background:#fafbfc}.type-tabs button{height:34px;border:1px solid #d7dde5;border-radius:6px;background:#fff;color:#445466;padding:0 14px}.type-tabs button.active{border-color:#009e96;background:#009e96;color:#fff;font-weight:700}.table-wrap{width:100%;overflow-x:auto}table{width:100%;min-width:1040px;border-collapse:collapse}.management-table{min-width:1180px}th,td{border-bottom:1px solid #e7ebef;padding:14px;text-align:left;vertical-align:middle;font-size:14px}th{height:48px;background:#fbfcfe;color:#26384a;font-weight:700}tbody tr:hover{background:#fbfdff}.audit-images{display:flex;max-width:150px;flex-wrap:wrap;gap:6px}.audit-thumb{width:44px;height:44px;padding:0;overflow:hidden;border:1px solid #dbe3ec;border-radius:5px;background:#f8fafc}.audit-thumb img{display:block;width:100%;height:100%;object-fit:cover}.status,.community-status,.verify-badge,.pin-badge{display:inline-flex;align-items:center;justify-content:center;min-width:58px;min-height:24px;border-radius:999px;padding:3px 10px;background:#eef2f7;color:#64748b;font-size:13px;font-weight:700}.pin-badge{background:#fff1d6;color:#b45309}.status.pending,.community-status.pending,.verify-badge{background:#fff4db;color:#9b6500}.status.approved,.community-status.approved{background:#def8e7;color:#16833a}.status.rejected,.community-status.rejected{background:#ffe4e4;color:#b42323}.status.offline{background:#edf0f4;color:#5a6675}.actions{display:flex;align-items:center;gap:8px;white-space:nowrap}.actions .danger,.modal-actions .danger{background:#d63d4a}.actions .warning{background:#f5aa00}.actions .muted-button,.modal-actions .muted-button{background:#687686}.muted{color:#7a8796}.empty-cell{height:88px;color:#7a8796;text-align:center}.image-modal,.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;display:flex;align-items:center;justify-content:center;padding:32px;background:#0f172ab8}.image-modal img{max-width:min(980px,92vw);max-height:88vh;border-radius:8px;background:#fff;object-fit:contain}.modal-close,.plain-close{border:0;background:transparent;color:inherit}.modal-close{position:fixed;right:30px;top:24px;width:42px;height:42px;border-radius:50%;background:#fff;color:#1f2933;font-size:30px;line-height:38px}.edit-modal{width:min(520px,94vw);border-radius:8px;background:#fff;padding:22px;box-shadow:0 18px 50px #0f172a38}.article-modal{width:min(860px,94vw);max-height:88vh;overflow-y:auto}.modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.plain-close{width:34px;height:34px;border-radius:50%;font-size:24px}.plain-close:hover{background:#edf1f5}.edit-modal label{display:grid;gap:8px;margin-bottom:14px;color:#37485a;font-weight:700}.edit-modal input,.edit-modal select,.edit-modal textarea{width:100%;font-weight:400}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.article-toolbar{display:flex;align-items:center;gap:10px;margin:10px 0 16px}.plain-link{background:transparent;color:#d63d4a;padding:0}.format-row{display:flex;justify-content:flex-end;margin:-4px 0 8px}.format-button{background:#22313f;font-weight:800}.article-body-editor{min-height:360px;border:1px solid #d7dde5;border-radius:6px;background:#fff;color:#243447;padding:16px;font-weight:400;line-height:1.75;outline:none;overflow-y:auto;white-space:pre-wrap}.article-body-editor:focus{border-color:#009e96;box-shadow:0 0 0 3px #009e961f}.article-body-editor:empty:before{content:attr(data-placeholder);color:#9aa6b2}.article-body-editor strong,.article-body-editor b{font-weight:800}.article-body-editor p{margin:0 0 14px}.article-body-editor img,.article-inline-image{display:block;max-width:min(100%,560px);max-height:320px;margin:14px 0;border-radius:6px;background:#f1f5f9;object-fit:contain}.image-block-actions{display:flex;align-items:center;gap:10px;margin:6px 0 12px}.upload-button{display:inline-flex;align-items:center;justify-content:center;padding:0 14px;cursor:pointer}.upload-button input{display:none}.article-image-preview{display:block;max-width:320px;max-height:180px;margin-bottom:12px;border-radius:6px;background:#f1f5f9;object-fit:contain}.article-cover-preview{display:block;width:220px;height:124px;margin:0 0 14px;border-radius:6px;background:#f1f5f9;object-fit:cover}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}@media(max-width:900px){.admin-shell{display:block}.sidebar{position:static;width:100%;min-height:auto;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.brand{grid-column:1 / -1;margin-bottom:8px}.sidebar button{margin-bottom:0}.workspace{padding:20px 14px}.topbar,.panel-head{align-items:stretch;flex-direction:column}.topbar-actions{align-items:stretch}.topbar-actions button{flex:1}.filters,.type-tabs{flex-wrap:wrap}.filters input{width:100%}.dashboard-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.form-grid{grid-template-columns:1fr}}
