*{box-sizing:border-box}html,body{min-height:100%}body{margin:0;font-family:Inter,Arial,"Microsoft YaHei",sans-serif;background:#f3f5f7;color:#222;font-size:14px}.layout{display:flex;min-height:100vh}.sidebar{width:226px;background:#09271f;color:#fff;transition:.2s;position:fixed;left:0;top:0;bottom:0;z-index:20;border-right:1px solid rgba(255,255,255,.04)}.sidebar.mini{width:68px}.brand{height:62px;display:flex;align-items:center;gap:10px;padding:0 18px;font-size:17px;font-weight:700;white-space:nowrap;overflow:hidden;border-bottom:1px solid rgba(255,255,255,.08)}.brand-mark{font-size:24px;color:#25c897}.brand-text{overflow:hidden}.collapse{position:absolute;right:9px;top:17px;border:0;background:transparent;color:#d7ebe4;font-size:19px;cursor:pointer;padding:4px}.sidebar nav{padding:10px 8px 20px;overflow-y:auto;height:calc(100vh - 62px)}.nav-section{font-size:11px;color:#6e9689;padding:13px 10px 7px;text-transform:uppercase;letter-spacing:.6px}.sidebar nav a{display:flex;gap:12px;align-items:center;color:#c8d9d3;text-decoration:none;padding:11px 12px;margin:2px 0;border-radius:5px;white-space:nowrap;overflow:hidden}.sidebar nav a i{font-style:normal;width:20px;text-align:center;font-size:16px;flex:0 0 20px}.sidebar nav a:hover,.sidebar nav a.active{background:#123d33;color:#fff}.sidebar nav a.active{box-shadow:inset 3px 0 0 #25c897}.sidebar.mini .brand-text,.sidebar.mini nav a span,.sidebar.mini .nav-section{display:none}.sidebar.mini .brand{padding-left:18px}.sidebar.mini .collapse{right:8px}.main{margin-left:226px;width:calc(100% - 226px);transition:.2s;min-height:100vh}.sidebar.mini~.main{margin-left:68px;width:calc(100% - 68px)}.topbar{height:62px;background:#fff;border-bottom:1px solid #e5e9ec;display:flex;align-items:center;justify-content:space-between;padding:0 22px;position:sticky;top:0;z-index:10}.crumb{font-size:14px;color:#57616a}.account{display:flex;align-items:center;gap:12px}.account a{color:#5f6870;text-decoration:none}.account a:hover{color:#0d8f69}.account .logout{color:#c34a4a}.tag{background:#e8f7f1;color:#147758;padding:4px 8px;border-radius:4px;font-size:12px}.content{padding:18px 20px 30px}.page-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.page-title h2{margin:0 0 6px;font-size:20px}.page-title p,.muted{margin:0;color:#7a858d;font-size:13px}.cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:14px}.card,.panel{background:#fff;border:1px solid #e3e8eb;border-radius:5px}.card{padding:18px}.card .num{font-size:30px;font-weight:700;margin-top:10px;color:#24322d}.panel{padding:16px;margin-bottom:14px;overflow:auto}.panel-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.panel-title h3,.panel h3{margin:0 0 12px;font-size:15px}.panel-title h3{margin:0}.form-row,.toolbar{display:flex;gap:9px;align-items:center;flex-wrap:wrap}.toolbar{justify-content:flex-start}.grid-form{display:grid;grid-template-columns:repeat(3,minmax(180px,1fr));gap:12px;align-items:end}.grid-form label,.stack label,.bot-config label,.copy-form label,.pop-form label{display:flex;flex-direction:column;gap:6px;color:#4c555c;font-size:13px}.span-2{grid-column:span 2}.copy-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.copy-form textarea{min-height:92px}.stack{display:flex;flex-direction:column;gap:12px;max-width:520px}.cleanup-form{max-width:560px}.bot-config{display:grid;grid-template-columns:minmax(300px,1fr) 180px 140px;gap:12px;align-items:end}.check-line{display:flex!important;flex-direction:row!important;align-items:center!important;gap:8px!important;height:40px}.check-line input{min-width:auto;width:auto}.info-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-bottom:14px}.info-grid.four{grid-template-columns:repeat(4,1fr)}.info-grid div{background:#fff;border:1px solid #e3e8eb;padding:15px;border-radius:5px}.info-grid b,.info-grid span{display:block}.info-grid b{font-size:12px;color:#7b858d;font-weight:500}.info-grid span{margin-top:8px;font-size:15px}input,select,textarea{border:1px solid #d7dde1;border-radius:4px;padding:9px 10px;font:inherit;background:#fff;min-width:150px;color:#222;outline:none}input:focus,select:focus,textarea:focus{border-color:#32aa85;box-shadow:0 0 0 2px rgba(50,170,133,.09)}textarea{resize:vertical;min-height:80px}.btn{display:inline-flex;align-items:center;justify-content:center;border:1px solid #cfd6db;background:#fff;color:#333;padding:8px 13px;border-radius:4px;text-decoration:none;cursor:pointer;font-size:13px;line-height:1.2;white-space:nowrap}.btn:hover{border-color:#99aaa3}.btn.primary{background:#159b74;color:#fff;border-color:#159b74}.btn.primary:hover{background:#118765}.btn.danger{background:#df5858;color:#fff;border-color:#df5858}.btn.ghost{background:#f8fafb}.btn.sm{padding:5px 9px;font-size:12px}.btn.wide{width:100%;padding:11px}.actions{display:flex;gap:5px;align-items:center;flex-wrap:wrap}.actions form{margin:0}table{width:100%;border-collapse:collapse;min-width:900px}th,td{border-bottom:1px solid #edf0f2;text-align:left;padding:10px 9px;font-size:13px;vertical-align:middle}th{background:#fafbfc;color:#525d65;font-weight:600}tbody tr:hover{background:#fbfcfc}.empty{text-align:center!important;color:#98a0a6;padding:36px!important}.ellipsis{max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.status{display:inline-flex;padding:3px 7px;border-radius:3px;background:#eef1f3;color:#69747c;font-size:12px}.status.ok{background:#e7f7f0;color:#16825f}.status.off{background:#fff0f0;color:#bd4a4a}.level{font-size:11px;padding:3px 6px;border-radius:3px;background:#eef1f3}.level.info{color:#3e6f8d;background:#eaf3f9}.level.warn{color:#976b16;background:#fff7df}.level.error{color:#b83d3d;background:#fff0f0}.flash{padding:10px 12px;border-radius:4px;margin-bottom:12px}.flash.ok{background:#e9f8f1;color:#137456;border:1px solid #d0eedf}.flash.error{background:#fff0f0;color:#b02e2e;border:1px solid #f4d5d5}.notice,.alert{line-height:1.7}.notice{background:#f7fbf9;border-color:#dcece5;color:#476059}.alert{padding:12px 14px;border-radius:4px;margin-bottom:14px}.alert.danger{background:#fff3f3;border:1px solid #f2d5d5;color:#9f4141}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:14px}.qr{width:190px;height:190px;border:1px solid #e1e5e8;padding:5px;background:#fff}.login-info{margin-top:20px;padding-top:14px;border-top:1px solid #edf0f2;color:#7a858d;display:grid;gap:6px}.chat{max-width:1100px;margin-left:auto;margin-right:auto}.msg{padding:12px 14px;border-radius:6px;margin:10px 0;max-width:82%;border:1px solid transparent}.msg.customer{background:#f3f6f8;border-color:#e8edf0}.msg.staff{background:#eaf8f2;border-color:#d7efe5;margin-left:auto}.msg.system{background:#fff8e8;border-color:#f1e5c5;margin-left:auto;margin-right:auto}.msg .meta{font-size:12px;color:#7b858e;margin-bottom:6px}.message-text{white-space:pre-wrap;word-break:break-word}.versions{margin-top:8px;font-size:12px;color:#9b6b13}.versions summary{cursor:pointer}.versions div{margin-top:5px;padding:5px 8px;background:rgba(255,255,255,.65);border-radius:3px}.deleted{margin-top:7px;color:#b14b4b;font-size:12px}.session-meta{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:12px}.session-meta span{background:#fff;border:1px solid #e3e8eb;border-radius:4px;padding:7px 10px;color:#626c74;font-size:12px}.inline-details{position:relative;display:inline-block}.inline-details>summary{list-style:none}.inline-details>summary::-webkit-details-marker{display:none}.pop-form{position:absolute;right:0;top:34px;width:330px;background:#fff;border:1px solid #dce2e6;border-radius:6px;padding:14px;box-shadow:0 12px 32px rgba(0,0,0,.12);z-index:50;display:grid;gap:10px}.wide-pop .pop-form{width:520px;grid-template-columns:1fr 1fr}.wide-pop .pop-form label:nth-of-type(7),.wide-pop .pop-form label:nth-of-type(9){grid-column:span 2}.login-body{background:#edf2f1;display:flex;align-items:center;justify-content:center;min-height:100vh;padding:20px}.login-shell{width:840px;display:grid;grid-template-columns:1fr 1fr;background:#fff;border:1px solid #dfe6e3;border-radius:10px;overflow:hidden;box-shadow:0 18px 50px rgba(20,47,39,.08)}.login-brand{background:#0b3027;color:#fff;padding:48px 42px;display:flex;flex-direction:column;justify-content:center}.login-logo{font-size:44px;color:#31c99a}.login-brand h1{font-size:28px;margin:18px 0 8px}.login-brand p{color:#b9d2c9;line-height:1.7}.login-box{padding:40px}.login-box form{display:flex;flex-direction:column;gap:9px}.login-box label{font-size:13px;color:#566069}.hint{margin-top:18px;padding:10px 12px;background:#faf7e9;color:#846b1e;border-radius:4px;font-size:12px;line-height:1.6}code{background:#edf3f1;color:#176d55;padding:2px 5px;border-radius:3px}
@media(max-width:1000px){.cards{grid-template-columns:repeat(2,1fr)}.grid-form,.copy-form,.two-col{grid-template-columns:1fr}.span-2{grid-column:auto}.info-grid.four{grid-template-columns:repeat(2,1fr)}.bot-config{grid-template-columns:1fr}.login-shell{grid-template-columns:1fr;max-width:460px}.login-brand{display:none}.wide-pop .pop-form{width:360px;grid-template-columns:1fr}.wide-pop .pop-form label:nth-of-type(7),.wide-pop .pop-form label:nth-of-type(9){grid-column:auto}}
@media(max-width:760px){.sidebar{width:68px}.sidebar .brand-text,.sidebar nav a span,.sidebar .nav-section{display:none}.main{margin-left:68px;width:calc(100% - 68px)}.cards{grid-template-columns:1fr 1fr}.topbar{padding:0 12px}.account>span:first-child,.account>a:not(.logout){display:none}.content{padding:12px}.info-grid,.info-grid.four{grid-template-columns:1fr}.page-title{align-items:flex-start;gap:10px}.pop-form,.wide-pop .pop-form{position:fixed;left:75px;right:10px;top:90px;width:auto;max-height:75vh;overflow:auto}}

/* V0.3.3 业务组大表单 / 自定义 Emoji */
.group-form{display:grid;grid-template-columns:repeat(2,minmax(260px,1fr));gap:14px 16px;align-items:start}
.group-form label{display:flex;flex-direction:column;gap:7px;color:#4c555c;font-size:13px}
.group-form .full{grid-column:1/-1}
.group-form textarea{min-height:145px;width:100%}
.group-form input,.group-form select,.group-form textarea{width:100%}
.group-form small,.copy-form small{color:#8a949b;line-height:1.55}
.form-actions{display:flex!important;flex-direction:row!important;justify-content:flex-end;gap:8px;padding-top:4px}
.check-card{min-height:40px;display:flex!important;flex-direction:row!important;align-items:center!important;gap:8px!important;border:1px solid #e0e5e8;border-radius:4px;padding:9px 10px}
.check-card input{width:auto!important;min-width:0!important}
.notice-line{background:#f7fbf9;border:1px solid #dcece5;color:#486158;border-radius:4px;padding:10px 12px;line-height:1.7}
.emoji-library{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px;max-height:210px;overflow:auto;padding:2px}
.emoji-chip{display:flex;align-items:center;gap:7px;border:1px solid #dce3e0;background:#fff;border-radius:6px;padding:7px 9px;cursor:pointer;color:#35423d}
.emoji-chip:hover{border-color:#27a37d;background:#f4fbf8}.emoji-chip span{font-size:20px}.emoji-chip small{font-size:10px;color:#8b949a;max-width:125px;overflow:hidden;text-overflow:ellipsis}
.empty-mini{color:#90999f;padding:10px 0}.emoji-help{margin-top:10px;line-height:1.7}
.button-config-box{border:1px solid #e3e8eb;border-radius:5px;padding:11px;background:#fbfcfc;display:grid;grid-template-columns:1fr 1fr;gap:10px}
.button-config-box label{display:flex;flex-direction:column;gap:6px}
.copy-form-wide textarea{min-height:110px}
.table-wrap{overflow:auto;width:100%}.table-panel{overflow:visible}
@media(max-width:900px){.group-form{grid-template-columns:1fr}.group-form .full{grid-column:auto}.button-config-box{grid-template-columns:1fr}}

/* V0.3.4 按钮布局 / 变量 / Emoji 图片预览 */
.emoji-chip{min-width:42px;min-height:42px;justify-content:center;padding:6px}.emoji-chip img,.emoji-icon-choice img,.layout-button-icon img{width:28px;height:28px;object-fit:contain;display:block}.emoji-chip span,.emoji-icon-choice span{font-size:24px}.emoji-chip small{display:none}.emoji-library.compact{max-height:156px}.field-caption{font-size:13px;color:#4c555c;margin-bottom:7px}.emoji-icon-picker{display:flex;gap:7px;flex-wrap:wrap;padding:8px;border:1px solid #e4e8ea;border-radius:5px;background:#fbfcfc;max-height:180px;overflow:auto}.emoji-icon-choice{width:42px;height:42px;border:1px solid #d8dfe2;background:#fff;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;color:#6b747a}.emoji-icon-choice:hover{border-color:#56ae91}.emoji-icon-choice.selected{border:2px solid #159b74;background:#eef9f5}.emoji-icon-choice.none{font-size:12px}.variable-bar{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.variable-chip{border:1px solid #cfe2db;background:#f3faf7;color:#147458;border-radius:4px;padding:5px 8px;cursor:pointer;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px}.variable-chip:hover{background:#e7f7f0;border-color:#8fcbb7}.editor-tools{display:grid!important;grid-template-columns:1fr 1fr;gap:14px;border:1px dashed #d9e2de;border-radius:5px;padding:12px;background:#fbfdfc}.editor-tools>div{min-width:0}.sticky-tools{position:relative;overflow:visible}.full-width-box{grid-column:1/-1}.push-form,.button-create-form{display:grid;grid-template-columns:repeat(2,minmax(260px,1fr));gap:14px 16px;align-items:start}.push-form label,.button-create-form label{display:flex;flex-direction:column;gap:7px;color:#4c555c;font-size:13px}.push-form .full,.button-create-form .full{grid-column:1/-1}.push-form textarea,.button-create-form textarea{min-height:130px;width:100%}.tabs{display:flex;gap:6px;margin-bottom:12px;border-bottom:1px solid #dfe5e7}.tab-btn{border:0;background:transparent;padding:10px 16px;cursor:pointer;color:#647078;border-bottom:2px solid transparent;font-size:14px}.tab-btn.active{color:#138362;border-bottom-color:#159b74;font-weight:600}.tab-pane{display:none}.tab-pane.active{display:block}.button-layout{display:flex;flex-direction:column;gap:9px;padding:12px;background:#f7f9fa;border:1px solid #e3e8eb;border-radius:6px}.button-row{display:grid;grid-template-columns:66px minmax(0,1fr) 30px;gap:8px;align-items:center}.row-label{font-size:12px;color:#78838a;text-align:right}.button-row-drop{min-height:58px;border:1px dashed #cbd5da;border-radius:6px;background:#fff;padding:7px;display:flex;gap:8px;align-items:center;overflow-x:auto}.empty-drop{color:#a0a9ae;font-size:12px;padding:10px}.layout-button{flex:0 0 auto;min-width:150px;max-width:270px;border:1px solid #d9e0e3;border-radius:6px;background:#fff;display:flex;align-items:center;gap:7px;padding:9px;cursor:grab;box-shadow:0 1px 2px rgba(0,0,0,.03)}.layout-button.dragging{opacity:.35}.layout-button.disabled{opacity:.55}.drag-handle{color:#96a0a5;letter-spacing:-2px}.layout-button-icon{width:28px;height:28px;display:flex;align-items:center;justify-content:center}.layout-button-text{font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.button-kind{font-size:10px;background:#eef3f1;color:#68756f;padding:2px 5px;border-radius:3px;margin-left:auto}.mini-link{font-size:11px;color:#16815f;text-decoration:none}.row-remove{border:0;background:transparent;color:#a0a8ad;font-size:20px;cursor:pointer}.row-remove:hover{color:#cf4f4f}.danger-panel{border-color:#efdada}.edit-button-form{max-width:1100px}.info-panel{overflow:visible}
@media(max-width:900px){.editor-tools,.push-form,.button-create-form{grid-template-columns:1fr}.push-form .full,.button-create-form .full,.full-width-box{grid-column:auto}.button-row{grid-template-columns:48px minmax(0,1fr) 26px}.layout-button{min-width:130px}.editor-tools{display:grid!important}}
