:root,[data-theme=cloud]{--bg: #f4f6f8;--bg-elev: #ffffff;--card: #ffffff;--text: #1c2430;--text-2: #5c6b7a;--text-3: #8b98a5;--line: #e6ebf0;--brand: #1677ff;--brand-contrast: #ffffff;--danger: #d4380d;--ok: #1f8a4c;--shadow: 0 8px 24px rgba(22, 36, 56, .06);--radius: 12px;--radius-sm: 8px;--font: "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;--mono: Consolas, "Courier New", monospace;--space: 16px;--motion: .22s;--ease: cubic-bezier(.2, .7, .2, 1);--grid-gap: 4px;--overlay: rgba(12, 16, 22, .72);--badge-bg: rgba(0, 0, 0, .55);--badge-text: #fff}[data-theme=night]{--bg: #10141a;--bg-elev: #222a34;--card: #1a212b;--text: #e8eef4;--text-2: #9aabbb;--text-3: #7d8b99;--line: #2c3642;--brand: #3ddcff;--brand-contrast: #082026;--danger: #ff8b7b;--ok: #7ddea8;--shadow: 0 10px 28px rgba(0, 0, 0, .28);--badge-bg: rgba(0, 0, 0, .55);--badge-text: #fff}[data-theme=apricot]{--bg: #f6f0e8;--bg-elev: #fffbf6;--card: #fffbf6;--text: #3a2a22;--text-2: #7a6558;--text-3: #a08b7c;--line: #eadfd2;--brand: #c4652d;--brand-contrast: #fff;--danger: #b4331a;--ok: #2f7d46;--shadow: 0 8px 24px rgba(90, 50, 20, .06);--radius: 16px;--badge-bg: rgba(58, 42, 34, .72);--badge-text: #fff}[data-theme=forest]{--bg: #eef4ef;--bg-elev: #f8fbf8;--card: #f8fbf8;--text: #1c2b22;--text-2: #5d7264;--text-3: #8aa092;--line: #d5e3d8;--brand: #1f7a4d;--brand-contrast: #fff;--danger: #b4331a;--ok: #1f7a4d;--shadow: 0 8px 24px rgba(20, 60, 30, .06);--badge-bg: rgba(0, 0, 0, .55);--badge-text: #fff}[data-theme=violet]{--bg: #f3f0fa;--bg-elev: #ffffff;--card: #ffffff;--text: #241c38;--text-2: #655b7c;--text-3: #9188a6;--line: #e4def2;--brand: #6d4aff;--brand-contrast: #fff;--danger: #c4386a;--ok: #1f8a4c;--shadow: 0 8px 24px rgba(60, 40, 120, .08);--badge-bg: rgba(36, 28, 56, .72);--badge-text: #fff}[data-theme=gilt]{--bg: #14120e;--bg-elev: #2a241c;--card: #221e18;--text: #f3ead8;--text-2: #cbbfa6;--text-3: #9c907c;--line: #3a3228;--brand: #d4b483;--brand-contrast: #1a140c;--danger: #e08b78;--ok: #b7d7a8;--shadow: 0 10px 28px rgba(0, 0, 0, .35);--badge-bg: rgba(0, 0, 0, .45);--badge-text: #d4b483}[data-surface=admin]{--radius: 8px;--space: 12px}@media (prefers-reduced-motion: reduce){:root{--motion: 1ms}}html,body{background:var(--bg);color:var(--text)}body,.card,.topbar,.panel,.side,.sheet,button,input,textarea,select{transition:background var(--motion) var(--ease),color var(--motion) var(--ease),border-color var(--motion) var(--ease),box-shadow var(--motion) var(--ease)}@media (prefers-reduced-motion: reduce){.rise,.pop,.shimmer,.pulse{animation:none!important}}*{box-sizing:border-box}html,body,#app{margin:0;min-height:100%}html{scrollbar-color:var(--text-3) var(--bg)}body{font-family:var(--font);background:var(--bg);color:var(--text)}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-track{background:var(--bg)}*::-webkit-scrollbar-thumb{background:var(--text-3);border-radius:999px;border:2px solid var(--bg)}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}.login-wrap{min-height:100vh;display:grid;place-items:center}.login-card,.panel,.drawer,.modal{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.login-card{width:min(400px,calc(100% - 32px));padding:28px}.shell{display:flex;min-height:100vh}.side{width:220px;background:var(--card);border-right:1px solid var(--line);padding:16px 10px;flex:none}.side.fold{width:72px}.side a,.side button.link{display:block;width:100%;text-align:left;border:0;background:transparent;padding:10px 12px;border-radius:8px;color:var(--text-2)}.side a.router-link-active{background:var(--bg);color:var(--brand)}.main{flex:1;min-width:0}.top{height:56px;display:flex;align-items:center;gap:12px;padding:0 16px;background:var(--card);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}.top .grow{flex:1}.page{padding:16px}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px}.card{background:var(--card);border-radius:var(--radius);padding:14px;box-shadow:var(--shadow)}.card b{display:block;font-size:22px;margin-top:6px}.card span{color:var(--text-2);font-size:13px}.tabs{display:flex;gap:8px;position:relative;border-bottom:1px solid var(--line);margin-bottom:16px;flex-wrap:wrap}.tabs button{border:0;background:transparent;padding:10px 12px;color:var(--text-2)}.tabs button.on{color:var(--brand);box-shadow:inset 0 -2px 0 var(--brand)}table{width:100%;border-collapse:collapse;background:var(--card)}th,td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);font-size:13px;vertical-align:middle}th{color:var(--text-2);font-weight:600;background:var(--bg);white-space:nowrap}td .btn+.btn{margin-left:6px}.btn,.btn.ghost,.btn.danger{display:inline-flex;align-items:center;justify-content:center;gap:6px;border-radius:8px;padding:8px 14px;border:1px solid transparent;line-height:1.2;white-space:nowrap;min-height:34px}.btn{background:var(--brand);color:var(--brand-contrast)}.btn.ghost{background:var(--card);color:var(--text);border-color:var(--line)}.btn.danger{background:var(--card);color:var(--danger);border-color:var(--danger)}.btn:disabled{opacity:.45;cursor:not-allowed}.filters{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap;align-items:center}.filters input,.filters select{width:220px}.filters input[type=date]{width:160px}input,textarea,select{background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:8px 10px;width:100%}input[type=checkbox],input[type=radio]{width:16px;height:16px;margin:0;padding:0;flex:none;accent-color:var(--brand)}input[type=file]{width:100%;padding:8px;color:var(--text);background:var(--bg)}textarea.code{font-family:var(--mono);min-height:220px}label{display:grid;gap:6px;margin:0 0 12px;font-size:13px;color:var(--text-2)}label.check,.switch{display:inline-flex;width:auto;flex-direction:row;align-items:center;gap:8px;margin:0;color:var(--text);white-space:nowrap}.drawer-mask,.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--overlay);z-index:20;display:flex}.drawer-mask{justify-content:flex-end}.drawer{width:min(920px,100%);height:100%;overflow:auto;padding:16px;border-radius:0;animation:rise var(--motion) var(--ease)}.editor{display:grid;grid-template-columns:1.1fr .9fr;gap:16px}.preview{display:grid;gap:4px}.preview.g9,.preview.g3,.preview.g6,.preview.grid9,.preview.grid3,.preview.grid6{grid-template-columns:repeat(3,1fr)}.preview.grid2,.preview.grid4{grid-template-columns:1fr 1fr}.preview img{width:100%;height:88px;object-fit:cover}.preview.g2,.preview.g4{grid-template-columns:1fr 1fr}.preview.row{display:flex;overflow:auto}.preview i,.ph{background:var(--bg);border-radius:4px;min-height:72px;display:block}.preview.row i{min-width:72%}.badge{display:inline-block;margin-top:8px;font-size:12px;padding:2px 6px;border-radius:4px;background:var(--badge-bg);color:var(--badge-text)}.chart{height:280px;background:var(--card);border-radius:var(--radius);margin-top:12px}.modal-mask{align-items:center;justify-content:center;padding:24px 16px}.modal{width:min(560px,calc(100% - 32px));max-height:calc(100vh - 48px);overflow:auto;padding:20px}.modal.wide{width:min(980px,calc(100% - 32px))}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.modal-head h3{margin:0;font-size:16px}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}.page-head h2{margin:0 0 4px;font-size:18px}.page-head p,.hint{margin:0;color:var(--text-2);font-size:13px;line-height:1.6}.form-card{padding:16px;max-width:760px}.table-wrap{width:100%;overflow:auto;background:var(--card);border:1px solid var(--line);border-radius:var(--radius)}.table-wrap table{margin:0}.table-wrap th:last-child,.table-wrap td:last-child{position:sticky;right:0;background:var(--card);z-index:1}.table-wrap th:last-child{background:var(--bg)}.device{display:grid;grid-template-columns:96px 1fr;gap:8px 12px;align-items:center;padding:12px 0;border-top:1px solid var(--line)}.device strong{color:var(--text)}.checks,.device .checks{display:flex;gap:16px;flex-wrap:wrap;margin:8px 0 16px}.device>input{grid-column:1 / -1}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.thumb{width:48px;height:48px;object-fit:cover;border-radius:6px;background:var(--bg);display:block}.ops{display:flex;flex-wrap:wrap;gap:6px}.ops .btn{margin:0}.msg{min-height:20px;margin:0 0 10px;color:var(--ok)}.msg.bad{color:var(--danger)}.theme-pop{position:absolute;right:16px;top:52px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:8px;width:180px;z-index:6}.theme-pop button{width:100%;text-align:left;border:0;background:transparent;padding:8px}.pulse{width:8px;height:8px;border-radius:50%;background:var(--ok);display:inline-block;animation:pulse 2s infinite}@keyframes pulse{50%{opacity:.35}}@keyframes rise{0%{transform:translateY(8px);opacity:.6}to{transform:none;opacity:1}}.pager{display:flex;gap:8px;justify-content:flex-end;margin-top:12px}.muted{color:var(--text-3)}.error{color:var(--danger)}.side{overflow:auto}@media (max-width: 900px){.cards,.editor,.field-row,.device{grid-template-columns:1fr}.side{display:none}.filters input,.filters select,.filters input[type=date]{width:100%}}@media (prefers-reduced-motion: reduce){.pulse,.drawer{animation:none}}
