:root{font-family:PingFang SC,Microsoft YaHei,system-ui,sans-serif;color:#1a1a2e;background:#f4f5f8;line-height:1.5}*{box-sizing:border-box}body{margin:0}a{color:#6b5ce7;text-decoration:none}.layout{display:flex;min-height:100vh}.layout-body{flex:1;display:flex;flex-direction:column;min-width:0}.sidebar{width:232px;background:#fff;border-right:1px solid #e8e8ef;padding:16px 10px;display:flex;flex-direction:column;max-height:100vh;position:sticky;top:0}.sidebar-brand{margin:0 8px 12px}.sidebar-brand h1{font-size:15px;margin:0;color:#6b5ce7;line-height:1.35}.sidebar-brand-sub{margin:4px 0 0;font-size:12px;color:#999}.admin-nav{flex:1;overflow-y:auto;padding-right:4px}.admin-nav-group{margin-bottom:12px}.admin-nav-group-label{font-size:13px;font-weight:600;color:#333;letter-spacing:.01em;padding:8px 12px 4px}.admin-nav a{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:7px 12px 7px 16px;border-radius:8px;color:#666;font-size:13px;font-weight:400;margin-bottom:2px}.admin-nav-label{flex:1;min-width:0}.admin-nav-badge{flex-shrink:0;min-width:20px;height:20px;padding:0 6px;border-radius:10px;background:#e57373;color:#fff;font-size:11px;font-weight:700;line-height:20px;text-align:center}.admin-nav a:hover:not(.active){background:#f7f4ef;color:#5c4f42}.admin-nav a.active{background:#f0edff;color:#6b5ce7;font-weight:600}.admin-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:16px 24px 0;background:#f4f5f8;border-bottom:1px solid #e8e8ef}.admin-header-main{min-width:0;display:flex;flex-wrap:wrap;align-items:flex-start;gap:8px 12px}.admin-sidebar-toggle{flex-shrink:0;margin-top:2px;min-width:36px;padding-left:10px;padding-right:10px}.admin-breadcrumb{font-size:18px;font-weight:500;color:#888;line-height:1.4;margin:0 0 14px}.admin-breadcrumb a{color:#666;text-decoration:none}.admin-breadcrumb a:hover{color:#6b5ce7}.admin-header-actions{display:flex;align-items:center;gap:8px;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end}.admin-global-search{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.admin-global-search input{width:168px;padding:6px 10px;border-radius:8px;border:1px solid #ddd;font-size:13px}.admin-global-search-hint{font-size:12px;color:#e57373;width:100%}@media(max-width:900px){.admin-global-search input{width:120px}}.admin-env-tag,.admin-build-tag{font-size:11px;padding:3px 8px;border-radius:6px;background:#fff;border:1px solid #e8e8ef;color:#666}.admin-user-chip{display:flex;align-items:center;gap:6px;padding:4px 10px;border-radius:8px;background:#fff;border:1px solid #e8e8ef}.admin-user-name{font-size:13px;font-weight:600;color:#333}.admin-user-role{font-size:11px;color:#6b5ce7;background:#f0edff;padding:2px 6px;border-radius:4px}.admin-breadcrumb-item{display:inline}.btn-sm{padding:6px 12px;font-size:13px}.page-container-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.page-container-title{margin:0;font-size:inherit}.admin-page-tabs{display:inline-flex;gap:6px;padding:4px;border-radius:12px;background:#f0edff;margin-bottom:16px;flex-wrap:wrap}.admin-page-tabs button{border:none;border-radius:10px;padding:8px 18px;font-size:14px;font-weight:500;cursor:pointer;background:transparent;color:#6b6b80}.admin-page-tabs button.is-active{font-weight:700;background:#fff;color:#6b5ce7;box-shadow:0 1px 4px #6b5ce726}.admin-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#1a1a2e73;display:flex;align-items:center;justify-content:center;padding:24px;z-index:1000}.admin-modal{width:min(440px,100%);background:#fff;border-radius:14px;padding:20px 22px;box-shadow:0 12px 40px #00000026}.page-container-extra-only{display:flex;justify-content:flex-end;margin-bottom:12px}.sidebar nav{flex:1;overflow-y:auto;padding-right:4px}.sidebar h1{font-size:16px;margin:0 8px 20px;color:#6b5ce7}.sidebar nav a{display:block;padding:10px 12px;border-radius:8px;color:#444;margin-bottom:4px}.sidebar nav a:hover:not(.active){background:#f7f4ef;color:#5c4f42}.sidebar nav a.active{background:#f0edff;color:#6b5ce7;font-weight:600}.main{flex:1;padding:20px 24px 24px}.card{background:#fff;border-radius:12px;padding:20px;box-shadow:0 1px 4px #0000000f;margin-bottom:16px}.stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px}.stat{background:#f8f7fc;border-radius:10px;padding:14px}.stat strong{display:block;font-size:22px;color:#6b5ce7}table{width:100%;border-collapse:collapse;font-size:14px}th,td{text-align:left;padding:10px;border-bottom:1px solid #eee;vertical-align:top}thead th{background:#f8f7fc;color:#555;font-size:13px;font-weight:600;white-space:nowrap}tbody tr:hover{background:#faf9ff}.btn{border:none;border-radius:8px;padding:8px 14px;cursor:pointer;font-size:14px}.btn-primary{background:#6b5ce7;color:#fff}.btn-outline{background:#fff;border:1px solid #ccc;color:#333}.btn-danger{background:#e57373;color:#fff}.login-page{min-height:100vh;display:grid;grid-template-columns:1fr 1fr}@media(max-width:900px){.login-page{grid-template-columns:1fr}}.login-brand{display:flex;align-items:center;justify-content:center;padding:48px 32px;background:linear-gradient(145deg,#4a3fbf,#6b5ce7 45%,#8e7cf5);color:#fff}.login-brand-inner{max-width:400px}.login-logo{display:inline-block;font-size:14px;font-weight:700;letter-spacing:.12em;padding:6px 12px;border-radius:8px;background:#ffffff26;margin-bottom:16px}.login-brand h1{margin:0 0 12px;font-size:32px;line-height:1.25}.login-brand>.login-brand-inner>p{margin:0 0 24px;opacity:.92;font-size:15px;line-height:1.6}.login-brand-features{margin:0;padding-left:18px;line-height:1.9;opacity:.9;font-size:14px}.login-form-wrap{display:flex;align-items:center;justify-content:center;padding:32px 24px;background:#f4f5f8}.login-box{width:min(400px,100%);background:#fff;padding:32px;border-radius:16px;box-shadow:0 8px 32px #1a1a2e14}.login-mode-tabs{display:flex;gap:8px;margin-bottom:16px}.login-box input{width:100%;padding:10px 12px;border:1px solid #ddd;border-radius:8px;margin:8px 0 16px;font-size:14px;box-sizing:border-box}.login-submit{width:100%;margin-top:4px}.login-error{color:#e57373;font-size:13px;margin:0 0 12px}.login-dev-hint{margin:12px 0 0;text-align:center;font-size:12px}.dashboard-todo{margin-bottom:20px}.dashboard-todo-header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap;margin-bottom:16px}.dashboard-todo-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}@media(max-width:900px){.dashboard-todo-grid{grid-template-columns:repeat(2,1fr)}}.dashboard-todo-item{display:flex;flex-direction:column;gap:4px;padding:14px 16px;border-radius:10px;border:1px solid #e8e8ef;background:#fafafa;color:inherit;transition:border-color .15s,box-shadow .15s}.dashboard-todo-item:hover{border-color:#c5cae9;box-shadow:0 2px 8px #6b5ce714}.dashboard-todo-item.is-urgent{border-color:#ffcdd2;background:#fff8f8}.dashboard-todo-label{font-size:12px;color:#888}.dashboard-todo-value{font-size:28px;line-height:1.1;color:#1a1a2e}.dashboard-todo-item.is-urgent .dashboard-todo-value{color:#c62828}.dashboard-todo-hint{font-size:11px;color:#999;line-height:1.4}.dashboard-quick-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}@media(max-width:900px){.dashboard-quick-grid{grid-template-columns:repeat(2,1fr)}}.dashboard-quick-item{display:flex;flex-direction:column;gap:4px;padding:12px 14px;border-radius:10px;border:1px solid #e8e8ef;background:#fff;color:inherit}.dashboard-quick-item:hover{border-color:#6b5ce7;background:#faf9ff}.dashboard-quick-item strong{font-size:14px}.dashboard-quick-item span{font-size:12px}.admin-skeleton-row{height:16px;border-radius:6px;background:linear-gradient(90deg,#eee 25%,#f5f5f5,#eee 75%);background-size:200% 100%;animation:admin-shimmer 1.2s infinite;margin-bottom:10px}.admin-skeleton-stats{pointer-events:none}.admin-skeleton-stat{min-height:64px;border-radius:10px;background:linear-gradient(90deg,#eee 25%,#f5f5f5,#eee 75%);background-size:200% 100%;animation:admin-shimmer 1.2s infinite}@keyframes admin-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.muted{color:#888;font-size:13px}.report-preview{background:#f5f5f7;padding:10px;border-radius:8px;margin:8px 0;font-size:13px}.admin-filter-bar{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap}.admin-filter-bar input,.admin-filter-bar select{padding:8px 12px;border-radius:8px;border:1px solid #e0d8cc;font-size:14px;background:#fffdf9}.admin-table thead th{background:#faf6f0;color:#5c4f42;border-bottom:1px solid #efe6da}.admin-table tbody tr:hover{background:#fffdf9}.legal-html-preview h3{margin:20px 0 8px;font-size:16px;font-weight:700;color:#1c1c1e;line-height:1.5}.legal-html-preview h4{margin:12px 0 6px;font-size:15px;font-weight:600;color:#1c1c1e}.legal-html-preview p{margin:0 0 12px}.legal-html-preview ul,.legal-html-preview ol{margin:0 0 12px;padding-left:1.2em}.legal-html-preview li{margin-bottom:10px}.legal-html-preview ul li::marker{color:#7c5cbf}.legal-html-preview a{color:#6b5ce7;text-decoration:underline}.rich-text-editor{border:1px solid #ddd;border-radius:8px;overflow:hidden;background:#fff}.rich-text-toolbar{display:flex;flex-wrap:wrap;gap:4px;padding:8px 10px;border-bottom:1px solid #eee;background:#fafafa}.rich-text-toolbar-sep{width:1px;height:20px;background:#e0e0e0;margin:4px;align-self:center}.rich-text-toolbar-btn{min-width:32px;height:28px;padding:0 8px;border:1px solid transparent;border-radius:6px;background:transparent;color:#333;font-size:13px;cursor:pointer;line-height:1}.rich-text-toolbar-btn:hover:not(:disabled){background:#eee}.rich-text-toolbar-btn.is-active{background:#ede9ff;border-color:#c4b5fd;color:#5b21b6}.rich-text-toolbar-btn:disabled{opacity:.35;cursor:not-allowed}.rich-text-toolbar-label{align-self:center;margin-right:2px;color:#666;font-size:12px;-webkit-user-select:none;user-select:none}.rich-text-legal-link-select{max-width:168px;height:28px;padding:0 8px;border:1px solid #ddd;border-radius:6px;background:#fff;color:#444;font-size:12px}.rich-text-editor-body{cursor:text}.rich-text-editor-loading{display:flex;align-items:center;justify-content:center;color:#888;font-size:14px;background:#fff}.rich-text-prose{padding:12px 14px;outline:none;font-size:14px;line-height:1.75;color:#333;caret-color:#6b5ce7;min-height:inherit}.rich-text-editor .ProseMirror{min-height:inherit;outline:none}.rich-text-prose p{margin:0 0 .75em}.rich-text-prose h1,.rich-text-prose h2,.rich-text-prose h3,.rich-text-prose h4{margin:1em 0 .5em;line-height:1.4;color:#1c1c1e}.rich-text-prose ul,.rich-text-prose ol{margin:0 0 .75em;padding-left:1.4em}.rich-text-prose a{color:#6b5ce7;text-decoration:underline}.rich-text-prose p.is-editor-empty:first-child:before{color:#aaa;content:attr(data-placeholder);float:left;height:0;pointer-events:none}.admin-toast-stack{position:fixed;top:16px;right:16px;z-index:2000;display:flex;flex-direction:column;gap:8px;max-width:min(420px,calc(100vw - 32px));pointer-events:none}.admin-toast{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border-radius:10px;box-shadow:0 8px 24px #0000001f;font-size:14px;line-height:1.45;pointer-events:auto;animation:admin-toast-in .2s ease}.admin-toast--success{background:#e8f5e9;color:#1b5e20;border:1px solid #a5d6a7}.admin-toast--error{background:#ffebee;color:#b71c1c;border:1px solid #ef9a9a}.admin-toast--info{background:#e3f2fd;color:#0d47a1;border:1px solid #90caf9}.admin-toast__close{flex-shrink:0;border:none;background:transparent;color:inherit;opacity:.6;cursor:pointer;font-size:18px;line-height:1;padding:0;margin-left:auto}.admin-toast__close:hover{opacity:1}@keyframes admin-toast-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.sidebar-backdrop{display:none}@media(max-width:767px){.sidebar{position:fixed;left:0;top:0;bottom:0;z-index:200;max-height:none;transform:translate(-100%);transition:transform .2s ease;box-shadow:4px 0 24px #0000001f}.layout.sidebar-open .sidebar{transform:translate(0)}.sidebar-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:150;border:none;padding:0;margin:0;background:#00000059;cursor:pointer}}@media(min-width:768px){.layout.sidebar-collapsed .sidebar{width:0;min-width:0;padding:0;overflow:hidden;border-right:none}}:root{--admin-brand: #6355d8;--admin-brand-hover: #5246c4;--admin-brand-soft: #f0edff;--admin-brand-muted: #8b82e8;--admin-text: #1c1c28;--admin-text-secondary: #5c5c72;--admin-text-muted: #8e8ea0;--admin-border: #e4e6ef;--admin-border-strong: #d0d3e0;--admin-bg: #f3f4f8;--admin-bg-elevated: #ffffff;--admin-bg-subtle: #f8f9fc;--admin-danger: #e25555;--admin-danger-soft: #fff5f5;--admin-radius-sm: 8px;--admin-radius-md: 12px;--admin-radius-lg: 16px;--admin-shadow-sm: 0 1px 2px rgba(28, 28, 40, .04);--admin-shadow-md: 0 4px 16px rgba(28, 28, 40, .06);--admin-shadow-lg: 0 12px 40px rgba(28, 28, 40, .08);--admin-focus-ring: 0 0 0 3px rgba(99, 85, 216, .18)}body{color:var(--admin-text);background:var(--admin-bg);-webkit-font-smoothing:antialiased}a{color:var(--admin-brand)}a:hover{color:var(--admin-brand-hover)}.sidebar{width:240px;background:var(--admin-bg-elevated);border-right:1px solid var(--admin-border);padding:20px 12px;box-shadow:var(--admin-shadow-sm)}.sidebar-brand h1{font-size:16px;font-weight:700;letter-spacing:-.02em;color:var(--admin-brand)}.sidebar-brand-sub{color:var(--admin-text-muted)}.admin-nav-group-label{font-size:13px;font-weight:600;color:var(--admin-text);letter-spacing:.01em;padding:10px 12px 4px}.admin-nav a{padding:7px 12px 7px 16px;border-radius:var(--admin-radius-sm);color:var(--admin-text-secondary);font-size:13px;font-weight:400;transition:background .15s,color .15s}.admin-nav a:hover:not(.active){background:var(--admin-bg-subtle);color:var(--admin-text)}.admin-nav a.active{background:var(--admin-brand-soft);color:var(--admin-brand);font-weight:600}.admin-header{padding:14px 28px 0;background:var(--admin-bg-elevated);border-bottom:1px solid var(--admin-border);box-shadow:var(--admin-shadow-sm)}.admin-breadcrumb{font-size:18px;font-weight:500;color:var(--admin-text-muted);line-height:1.4;margin:0 0 14px}.admin-breadcrumb a{color:var(--admin-text-secondary);text-decoration:none;transition:color .15s}.admin-breadcrumb a:hover{color:var(--admin-brand)}.admin-breadcrumb-sep{margin:0 8px;color:var(--admin-text-muted);font-weight:400}.admin-breadcrumb-current{color:var(--admin-text);font-weight:600}.admin-env-tag,.admin-build-tag,.admin-user-chip{border-color:var(--admin-border);background:var(--admin-bg-subtle);border-radius:var(--admin-radius-sm)}.admin-user-role{color:var(--admin-brand);background:var(--admin-brand-soft)}.main{padding:24px 28px 32px}.page-intro{margin:0 0 20px;padding:14px 16px;border-radius:var(--admin-radius-md);background:var(--admin-bg-elevated);border:1px solid var(--admin-border);color:var(--admin-text-secondary);font-size:13px;line-height:1.65}.page-intro code{font-size:12px;padding:2px 6px;border-radius:4px;background:var(--admin-bg-subtle);color:var(--admin-brand)}.card{background:var(--admin-bg-elevated);border:1px solid var(--admin-border);border-radius:var(--admin-radius-md);padding:22px 24px;box-shadow:var(--admin-shadow-sm);margin-bottom:16px}.card--danger{border-color:#f5c2c2;background:var(--admin-danger-soft)}.admin-page-tabs{gap:4px;padding:4px;border-radius:var(--admin-radius-md);background:var(--admin-bg-subtle);border:1px solid var(--admin-border);margin-bottom:20px}.admin-page-tabs button{padding:8px 16px;font-size:13px;font-weight:500;color:var(--admin-text-secondary);border-radius:calc(var(--admin-radius-md) - 4px);transition:background .15s,color .15s,box-shadow .15s}.admin-page-tabs button.is-active{background:var(--admin-bg-elevated);color:var(--admin-brand);font-weight:600;box-shadow:var(--admin-shadow-sm)}.btn{font-weight:500;transition:background .15s,border-color .15s,box-shadow .15s,transform .1s}.btn:focus-visible{outline:none;box-shadow:var(--admin-focus-ring)}.btn-primary{background:var(--admin-brand)}.btn-primary:hover:not(:disabled){background:var(--admin-brand-hover)}.btn-outline{border:1px solid var(--admin-border-strong);background:var(--admin-bg-elevated);color:var(--admin-text)}.btn-outline:hover:not(:disabled){border-color:var(--admin-brand-muted);background:var(--admin-brand-soft);color:var(--admin-brand)}.btn-danger{background:var(--admin-danger)}.btn:disabled{opacity:.55;cursor:not-allowed}.main input[type=text],.main input[type=number],.main input[type=password],.main input[type=email],.main input[type=datetime-local],.main input[type=search],.main input:not([type]),.main select,.main textarea{width:100%;max-width:100%;padding:9px 12px;font-size:14px;line-height:1.4;color:var(--admin-text);background:var(--admin-bg-elevated);border:1px solid var(--admin-border-strong);border-radius:var(--admin-radius-sm);transition:border-color .15s,box-shadow .15s}.main input[type=number],.main input[type=datetime-local]{width:auto;min-width:120px}.main select{cursor:pointer;max-width:360px}.main textarea{resize:vertical;min-height:88px}.main input:focus,.main select:focus,.main textarea:focus{outline:none;border-color:var(--admin-brand-muted);box-shadow:var(--admin-focus-ring)}.main label{font-size:14px;color:var(--admin-text);line-height:1.5}.main label.muted,.main .field-label{display:block;font-size:12px;font-weight:600;color:var(--admin-text-muted);margin-bottom:6px;letter-spacing:.02em}.form-stack{display:flex;flex-direction:column;gap:14px}.form-check{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;border-radius:var(--admin-radius-sm);border:1px solid transparent;cursor:pointer;transition:background .12s,border-color .12s}.form-check:hover{background:var(--admin-bg-subtle);border-color:var(--admin-border)}.form-check input[type=checkbox],.form-check input[type=radio]{width:16px;height:16px;margin:2px 0 0;flex-shrink:0;accent-color:var(--admin-brand);cursor:pointer}.checkbox-grid{display:flex;flex-wrap:wrap;gap:8px}.checkbox-chip{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border-radius:999px;border:1px solid var(--admin-border);background:var(--admin-bg-elevated);font-size:13px;cursor:pointer;transition:border-color .12s,background .12s}.checkbox-chip:has(input:checked){border-color:var(--admin-brand-muted);background:var(--admin-brand-soft);color:var(--admin-brand)}.checkbox-chip input{accent-color:var(--admin-brand)}.admin-settings-form{display:flex;flex-direction:column;gap:16px}.admin-form-section{margin-bottom:0}.admin-form-section--danger{border-color:#f5c2c2;background:linear-gradient(180deg,snow,#fff 48%)}.admin-form-section__head{margin-bottom:16px;padding-bottom:14px;border-bottom:1px solid var(--admin-border)}.admin-form-section__title{margin:0 0 6px;font-size:16px;font-weight:700;letter-spacing:-.01em;color:var(--admin-text)}.admin-form-section__desc{margin:0;line-height:1.6}.admin-form-actions{position:sticky;bottom:16px;z-index:5;display:flex;align-items:center;gap:12px;padding:14px 18px;margin-bottom:0;background:#ffffffeb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--admin-border);box-shadow:var(--admin-shadow-md)}.admin-form-actions .muted{flex:1;margin:0}.admin-scenario-block{padding:14px 16px;border-radius:var(--admin-radius-sm);border:1px solid var(--admin-border);background:var(--admin-bg-subtle)}table{font-size:13px}th,td{padding:12px 14px;border-bottom:1px solid var(--admin-border)}thead th{background:var(--admin-bg-subtle);color:var(--admin-text-secondary);font-size:12px;font-weight:600;text-transform:none;letter-spacing:.02em}tbody tr:hover{background:#fafbff}.card>table:first-child thead th:first-child{border-top-left-radius:calc(var(--admin-radius-md) - 1px)}.card:has(>table){padding:0;overflow:hidden}.card:has(>table) table{margin:0}.stat{background:var(--admin-bg-subtle);border:1px solid var(--admin-border)}.stat strong{color:var(--admin-brand)}.muted{color:var(--admin-text-muted);font-size:13px;line-height:1.55}.admin-filter-bar input,.admin-filter-bar select{background:var(--admin-bg-elevated);border-color:var(--admin-border-strong)}.admin-table thead th{background:var(--admin-bg-subtle);color:var(--admin-text-secondary);border-bottom-color:var(--admin-border)}.admin-table tbody tr:hover{background:#fafbff}.login-brand{background:linear-gradient(145deg,#4a3fbf 0%,var(--admin-brand) 45%,#8e7cf5 100%)}.login-box{border:1px solid var(--admin-border);box-shadow:var(--admin-shadow-lg)}
