:root{--brand: #3B5BFF;--brand-dark: #2842D6;--brand-soft: #EAF0FF;--brand-line: #D7E0FF;--accent: #FF7A1A;--accent-dark: #E96A0C;--accent-soft: #FFF1E6;--ok: #16A34A;--warn: #F59E0B;--danger: #EF4444;--bg: #F4F5F9;--surface: #FFFFFF;--line: #ECEEF3;--text-1: #1A1F36;--text-2: #5B6478;--text-3: #9AA2B5;--sidebar: #1F2440;--radius: 16px;--radius-sm: 8px;--shadow-card: 0 12px 34px rgba(20, 30, 60, .1);--shadow-hover: 0 18px 40px rgba(20, 30, 60, .16);--h5-width: 390px;--sidebar-width: 220px;--topbar-height: 60px;--page-gap: 20px;--el-color-primary: #3B5BFF;--el-color-primary-dark-2: #2842D6;--el-color-warning: #FF7A1A;--el-color-success: #16A34A;--el-color-danger: #EF4444;--el-border-radius-base: 8px;--el-bg-color-page: #F4F5F9}*{box-sizing:border-box}html,body,#app{height:100%;margin:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;color:var(--text-1);background:var(--bg);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}.cp-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-card)}.cp-tag{display:inline-block;font-size:11px;font-weight:700;padding:3px 8px;border-radius:6px;background:var(--brand-soft);color:var(--brand-dark)}.cp-tag--accent{background:var(--accent-soft);color:var(--accent-dark)}.cp-tag--ok{background:#e8f7ee;color:var(--ok)}.cp-tag--danger{background:#fdecec;color:var(--danger)}.cp-layout{display:flex;height:100%}.cp-side{width:var(--sidebar-width);flex:0 0 var(--sidebar-width);background:var(--sidebar);color:#c9d0e8;display:flex;flex-direction:column}.cp-side__brand{height:var(--topbar-height);display:flex;align-items:center;gap:10px;padding:0 18px;font-weight:800;color:#fff}.cp-side__nav{flex:1;overflow:auto;padding:8px 10px}.cp-side__nav a{display:block;padding:10px 12px;border-radius:var(--radius-sm);font-size:14px;margin-bottom:2px}.cp-side__nav a:hover{background:#ffffff0f;color:#fff}.cp-side__nav a.router-link-active{background:var(--brand);color:#fff}.cp-side__nav a.is-disabled{opacity:.35;pointer-events:none}.cp-side__foot{padding:14px 18px;font-size:12px;border-top:1px solid rgba(255,255,255,.08)}.cp-main{flex:1;min-width:0;display:flex;flex-direction:column}.cp-top{height:var(--topbar-height);flex:0 0 var(--topbar-height);background:var(--surface);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 24px;font-size:14px}.cp-content{flex:1;overflow:auto;padding:var(--page-gap)}.h5-stage{height:100%;min-height:100%;padding:28px 0 56px;overflow-y:auto;-webkit-overflow-scrolling:touch;background:radial-gradient(1200px 600px at 50% -10%,#eef1ff,#eef1f6 60%);display:flex;flex-direction:column;align-items:center}.app-root{width:var(--h5-width);height:844px;flex:0 0 auto;max-height:calc(100vh - 84px);background:var(--surface);border-radius:46px;overflow:hidden;position:relative;display:flex;flex-direction:column;transform:translateZ(0);box-shadow:0 10px 30px #141e3c1f,0 0 0 10px #11131a,0 0 0 12px #2a2d36}.h5-statusbar{height:46px;flex:0 0 46px;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;padding:0 26px;font-size:13px;font-weight:600;color:var(--text-1);background:var(--surface)}.h5-statusbar__ico{display:flex;align-items:center;gap:6px}.app-body{flex:1 1 auto;min-height:0;overflow:auto;-webkit-overflow-scrolling:touch;background:var(--bg);padding-bottom:20px;scrollbar-width:none}.app-body::-webkit-scrollbar{width:0;height:0}.page{padding:14px 14px 20px}.tabbar{height:64px;flex:0 0 64px;background:var(--surface);border-top:1px solid var(--line);display:flex;position:relative;z-index:10}.tabbar a{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:11px;color:var(--text-3)}.tabbar a.router-link-active{color:var(--brand);font-weight:700}.tabbar a svg{width:22px;height:22px;display:block}.tabbar__ico{position:relative;display:flex;align-items:center;justify-content:center;width:22px;height:22px}.tabbar__bd{position:absolute;top:-5px;right:-8px;min-width:16px;height:16px;padding:0 4px;box-sizing:border-box;border-radius:999px;display:flex;align-items:center;justify-content:center;background:var(--accent);color:#fff;font-size:10px;font-weight:700;font-style:normal;line-height:1;font-variant-numeric:tabular-nums;border:2px solid var(--surface)}.tabbar__link--mid{position:relative}.tabbar__ico--mid{position:absolute;top:-20px;left:50%;margin-left:-26px;width:52px;height:52px;border-radius:50%;background:linear-gradient(135deg,#4e6cff,#3450ee);color:#fff;box-shadow:0 8px 18px #3450ee57,0 0 0 4px var(--surface);transition:transform .14s ease}.tabbar__link--mid:active .tabbar__ico--mid{transform:scale(.94)}.tabbar a .tabbar__ico--mid svg{width:24px;height:24px}.tabbar__link--mid .tabbar__tx{margin-top:26px}.tabbar__ico--mid .tabbar__bd{top:-2px;right:-2px}@media(max-width:480px){.h5-stage{padding:0;height:100vh;height:100dvh;min-height:0;overflow:hidden;background:var(--bg)}.app-root{width:100%;height:100%;max-height:none;flex:1 1 auto;border-radius:0;box-shadow:none;transform:none}.h5-statusbar{display:none}}.cp-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:36px;padding:0 16px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);color:var(--text-1);font-size:13px;font-weight:600;cursor:pointer}.cp-btn:hover{border-color:var(--brand);color:var(--brand)}.cp-btn--primary{background:var(--brand);border-color:var(--brand);color:#fff}.cp-btn--primary:hover{background:var(--brand-dark);border-color:var(--brand-dark);color:#fff}.cp-btn--accent{background:var(--accent);border-color:var(--accent);color:#fff}.cp-btn--danger{background:var(--danger);border-color:var(--danger);color:#fff}.cp-btn--danger:hover{border-color:var(--danger);color:#fff;filter:brightness(.94)}.cp-btn--sm{height:28px;padding:0 10px;font-size:12px;font-weight:500}.cp-btn--block{width:100%;display:flex;align-items:center;justify-content:center}.cp-btn:disabled{opacity:.45;cursor:not-allowed}.cp-input{width:100%;height:40px;padding:0 12px;font-size:13px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);color:var(--text-1);outline:none}.cp-input:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.cp-input::placeholder{color:var(--text-3)}.cp-textarea,textarea:not([class]){display:block;width:100%;min-height:88px;padding:10px 12px;font-family:inherit;font-size:13px;line-height:1.6;resize:vertical;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);color:var(--text-1);outline:none}.cp-textarea:focus,textarea:not([class]):focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.cp-textarea::placeholder,textarea:not([class])::placeholder{color:var(--text-3)}.cp-textarea:disabled,textarea:not([class]):disabled{background:var(--bg);color:var(--text-3);cursor:not-allowed}.cp-seg{display:inline-flex;background:#eef1f7;border-radius:10px;padding:3px;gap:2px}.cp-seg button{border:0;background:transparent;color:var(--text-2);cursor:pointer;padding:7px 14px;border-radius:8px;font-size:13px;font-weight:600}.cp-seg button.is-active{background:var(--surface);color:var(--brand);box-shadow:0 2px 8px #141e3c1a}.cp-seg__n{font-style:normal;margin-left:5px;font-size:11px;font-weight:700;color:var(--text-3);font-variant-numeric:tabular-nums}.cp-seg button.is-active .cp-seg__n{color:var(--brand-dark)}.cp-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.cp-muted{color:var(--text-3);font-size:12px}.cp-title{font-size:17px;font-weight:800;margin:0 0 12px}.cp-section{margin-bottom:14px;padding:16px}.cp-field{margin-bottom:14px}.cp-field>label{display:block;font-size:12px;font-weight:700;color:var(--text-2);margin-bottom:7px}.cp-hint{font-size:11px;color:var(--text-3);line-height:1.6;margin-top:8px}.cp-table{width:100%;border-collapse:collapse;font-size:13px}.cp-table th,.cp-table td{padding:11px 12px;border-bottom:1px solid var(--line);text-align:left}.cp-table th{color:var(--text-2);font-weight:700;background:#fafbfe}.cp-table td{color:var(--text-1)}.cp-table tfoot td{font-weight:800;background:#fafbfe}.export-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.export-card{border:1.5px solid var(--line);border-radius:12px;padding:14px 10px;text-align:center;cursor:pointer;background:var(--surface);transition:.15s}.export-card:hover{border-color:var(--brand-line);box-shadow:var(--shadow-card)}.export-card.is-active{border-color:var(--brand);background:var(--brand-soft)}.export-card b{display:block;font-size:14px;margin-bottom:4px}.export-card span{font-size:11px;color:var(--text-2)}.export-card .ext{display:inline-block;margin-top:8px;font-size:10px;font-weight:800;color:var(--brand);letter-spacing:.5px}.cp-alert{padding:10px 12px;border-radius:var(--radius-sm);background:var(--accent-soft);color:var(--accent-dark);font-size:12px;line-height:1.6}.cp-alert--info{background:var(--brand-soft);color:var(--brand-dark)}.cp-alert--ok{background:#e8f7ee;color:var(--ok)}.cp-alert--warn{background:#fdecec;color:var(--danger)}.cp-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}.cp-toolbar .cp-input{width:auto;min-width:190px}.cp-select{height:40px;padding:0 10px;font-size:13px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--text-1);outline:none}.cp-select:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.cp-toolbar .spacer{flex:1}.cp-pager{display:flex;justify-content:flex-end;gap:6px;padding:14px 0 2px;font-size:12px;color:var(--text-2)}.cp-pager span{min-width:28px;height:28px;display:flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:6px;cursor:pointer}.cp-pager span.is-active{background:var(--brand);border-color:var(--brand);color:#fff}.cp-link{color:var(--brand);cursor:pointer;font-size:12px;font-weight:600;margin-right:10px}.cp-link--danger{color:var(--danger)}.cp-link--ok{color:var(--ok)}.cp-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#14182d73;display:flex;align-items:center;justify-content:center;padding:24px}.cp-modal{background:var(--surface);border-radius:14px;max-width:100%;max-height:88vh;display:flex;flex-direction:column;box-shadow:0 24px 60px #141e3c47}.cp-modal__head{padding:16px 20px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;font-size:15px}.cp-modal__head button{border:0;background:transparent;cursor:pointer;font-size:16px;color:var(--text-3)}.cp-modal__body{padding:20px;overflow:auto;font-size:13px}.cp-modal__foot{padding:14px 20px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:10px}.cp-sub{font-size:13px;font-weight:800;margin:18px 0 10px}.cp-sub:first-child{margin-top:0}.cp-form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.cp-form-grid .cp-field{margin-bottom:0}.cp-upload-row{display:flex;gap:8px;flex-wrap:wrap}.cp-upload-box{width:78px;height:78px;border-radius:10px;border:1px dashed var(--brand-line);display:flex;align-items:center;justify-content:center;font-size:11px;color:var(--text-3);background:var(--bg);cursor:pointer;text-align:center}.cp-upload-box.is-filled{border-style:solid;border:0;color:#fff;font-weight:700}.cp-switch{width:42px;height:24px;border-radius:20px;background:var(--brand);position:relative;cursor:pointer;flex:0 0 42px}.cp-switch i{position:absolute;top:3px;right:3px;width:18px;height:18px;border-radius:50%;background:#fff}.cp-switch.is-off{background:#cbd2e0}.cp-switch.is-off i{left:3px;right:auto}.cp-switchline{display:flex;align-items:center;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--line);font-size:13px}.cp-panel{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:16px;margin-bottom:16px}.cp-panel h3{margin:0 0 14px;font-size:14px}.cp-panel h3 small{font-weight:400;color:var(--text-3);margin-left:8px;font-size:11px}.cp-2col{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:16px;align-items:start}.cp-2col--preview{grid-template-columns:300px minmax(0,1fr)}.cp-chip{display:inline-flex;align-items:center;padding:6px 12px;border-radius:999px;background:var(--bg);color:var(--text-2);font-size:12px;cursor:pointer;border:1px solid var(--line);margin:0 8px 8px 0}.cp-chip.is-active{background:var(--brand-soft);border-color:var(--brand-line);color:var(--brand-dark);font-weight:700}.notice-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:3000;background:#14182d6b;display:flex;align-items:center;justify-content:center;padding:28px;animation:notice-fade .14s ease-out}.notice{width:100%;max-width:300px;background:var(--surface);border-radius:16px;padding:22px 20px 16px;text-align:center;box-shadow:0 24px 60px #141e3c47;animation:notice-pop .16s ease-out}.notice__ico{width:40px;height:40px;border-radius:50%;margin:0 auto 10px;display:flex;align-items:center;justify-content:center;font-size:19px;font-weight:800;color:#fff}.notice--ok .notice__ico{background:var(--ok)}.notice--info .notice__ico{background:var(--brand)}.notice--warn .notice__ico{background:var(--warn)}.notice--error .notice__ico{background:var(--danger)}.notice__title{display:block;font-size:15px;color:var(--text-1);margin-bottom:6px}.notice__msg b{color:var(--text-1);font-weight:700}.notice__msg code{font-family:ui-monospace,monospace;background:#f1f3f9;padding:1px 4px;border-radius:4px;font-size:12px}.notice--wide{max-width:420px}.notice--wide .notice__msg{text-align:left}.notice__msg{margin:0 0 18px;font-size:13px;line-height:1.6;color:var(--text-2);max-height:40vh;overflow:auto;white-space:pre-wrap;word-break:break-word}.notice__acts{display:flex;gap:10px}.notice__acts .notice__btn{flex:1}.notice__btn{width:100%;height:40px;border:0;border-radius:10px;cursor:pointer;background:var(--brand);color:#fff;font-size:14px;font-weight:700}.notice__btn--ghost{background:#f1f3f9;color:var(--text-2)}.notice__btn:active{background:var(--brand-dark)}.notice__btn--ghost:active{background:#e6e9f2}@keyframes notice-fade{0%{opacity:0}to{opacity:1}}@keyframes notice-pop{0%{transform:scale(.94);opacity:.4}to{transform:none;opacity:1}}@media(prefers-reduced-motion:reduce){.notice-mask,.notice{animation:none}}
