:root{--c-bg: #F3F6FB;--c-surface: #ffffff;--c-surface-2: #F8FAFD;--c-ink: #1A2036;--c-ink-2: #5B6B8A;--c-border: #DCE3F0;--c-primary: #FF7A00;--c-primary-deep: #D45F00;--c-primary-soft: #FFF3E6;--c-accent: #1677FF;--c-accent-deep: #0958D9;--c-accent-soft: #E6F4FF;--c-danger: #FF4D4F;--c-danger-soft: #FFF2F0;--c-success: #22C55E;--c-success-soft: #F0FDF4;--c-warning: #FAAD14;--c-warning-soft: #FFFBE6;--c-blue: #0958D9;--c-green: #22C55E;--c-amber: #FF7A00;--c-rose: #FF4D4F;--radius-lg: 22px;--radius-md: 16px;--shadow-card: 0 2px 10px rgba(26, 32, 54, .06);--shadow-float: 0 6px 24px rgba(26, 32, 54, .14);--fs-body: 17px;--fs-body-lg: 20px;--fs-body-xl: 24px;--fs-title: 20px;--fs-title-lg: 23px;--fs-title-xl: 27px;--fs-sub: 14px;--fs-sub-lg: 16px;--fs-sub-xl: 18px;--touch: 48px;--safe-b: env(safe-area-inset-bottom, 0px);--safe-t: env(safe-area-inset-top, 0px);--cur-body: var(--fs-body);--cur-title: var(--fs-title);--cur-sub: var(--fs-sub)}.admin-body{font-family:-apple-system,PingFang SC,sans-serif;background:#f3f6fb;min-height:100vh;color:#1a2036}.admin-login{max-width:360px;margin:12vh auto;background:#fff;padding:32px;border-radius:12px;box-shadow:0 4px 24px #00000014}.admin-login h1{font-size:22px;margin:0 0 6px;text-align:center}.admin-login .sub{text-align:center;color:#8c9ab0;font-size:13px;margin-bottom:20px}.admin-login input{width:100%;padding:12px;margin-bottom:14px;border:1px solid #DCE3F0;border-radius:8px;font-size:15px;box-sizing:border-box}.admin-login button{width:100%;padding:12px;background:#ff7a00;color:#fff;border:none;border-radius:8px;font-size:16px;cursor:pointer}.admin-err{color:#ff4d4f;font-size:14px;margin-top:10px;text-align:center}.admin-topbar{background:#fff;padding:14px 24px;display:flex;align-items:center;gap:16px;box-shadow:0 1px 4px #0000000f;flex-wrap:wrap;max-width:1800px;margin:0 auto}.admin-topbar .brand{font-weight:700;font-size:17px}.admin-topbar .who{color:#5b6b8a;font-size:14px}.admin-topbar .spacer{flex:1}.admin-tabs{display:flex;gap:8px;padding:12px 24px;background:#fff;border-bottom:1px solid #EDF1F8;flex-wrap:wrap;max-width:1800px;margin:0 auto}.admin-tabs button{padding:8px 16px;border:1px solid #DCE3F0;background:#fff;border-radius:20px;cursor:pointer;font-size:14px}.admin-tabs button.active{background:#ff7a00;color:#fff;border-color:#ff7a00}.admin-main{padding:24px 20px;max-width:1800px;margin:0 auto}.admin-card{background:#fff;border-radius:12px;padding:20px;box-shadow:0 1px 4px #0000000d}.admin-card h2{margin:0 0 16px;font-size:18px}.admin-table{width:100%;border-collapse:collapse;font-size:14px}.admin-table th,.admin-table td{text-align:left;padding:10px;border-bottom:1px solid #EDF1F8;vertical-align:top}.admin-table th{background:#f8fafd;font-weight:600;white-space:nowrap}.admin-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px;margin-bottom:18px;padding:14px;background:#f8fafd;border-radius:8px}.admin-form input,.admin-form select,.admin-form textarea{padding:9px;border:1px solid #DCE3F0;border-radius:6px;font-size:14px;width:100%;box-sizing:border-box}.admin-form textarea{grid-column:1 / -1;min-height:72px}.admin-form .full{grid-column:1 / -1}.btn{padding:9px 16px;border:none;border-radius:6px;cursor:pointer;font-size:14px;background:#ff7a00;color:#fff}.btn.sm{padding:5px 10px;font-size:13px}.btn.danger{background:#ff4d4f}.btn.ghost{background:#f3f6fb;color:#1a2036}.tag{display:inline-block;padding:2px 8px;border-radius:10px;font-size:12px;background:#f3f6fb;margin-right:4px}.tag.on{background:#f0fdf4;color:#22c55e}.tag.off{background:#fff2f0;color:#d9363e}.station-bar{display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap;padding:12px 16px;background:#fff;border-radius:10px;box-shadow:0 1px 3px #0000000a}.station-bar strong{color:#5b6b8a;font-size:14px;white-space:nowrap}.station-bar select.sb-select{padding:9px 12px;border:1px solid #DCE3F0;border-radius:6px;font-size:14px;min-width:240px!important;max-width:360px;background:#fff;display:inline-block!important;width:auto!important;height:auto!important;box-sizing:border-box;color:#1a2036}.station-bar select.sb-select option{color:#1a2036}.station-bar .sb-placeholder{color:#8c9ab0}.station-bar .hint{color:#8c9ab0;font-size:13px}.station-bar .hint.mono{font-family:ui-monospace,monospace;font-size:12px;color:#5b6b8a}.station-bar .picker-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.station-bar .picker-row>*{flex:0 0 auto}.station-bar .station-link-block{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.station-bar .station-link{display:inline-block;max-width:420px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:#f8fafd;border:1px solid #EDF1F8;border-radius:6px;padding:6px 10px;color:#5b6b8a}.station-bar .btn-copy{padding:7px 12px;border:1px solid #FF7A00;border-radius:6px;background:#fff;color:#ff7a00;font-size:13px;cursor:pointer;transition:all .15s ease}.station-bar .btn-copy:hover{background:#ff7a00;color:#fff}.station-bar .btn-copy:disabled{opacity:.85;cursor:default}.station-bar .qr-preview{width:96px;height:96px;border:1px solid #EDF1F8;border-radius:8px;background:#fff;padding:6px;box-shadow:0 1px 3px #0000000a}.station-bar .qr-preview canvas{display:block;width:100%!important;height:100%!important}.empty-state{padding:48px 20px;text-align:center;color:#8c9ab0;font-size:14px;background:#f8fafd;border-radius:8px;border:1px dashed #DCE3F0}.section-title{font-size:15px;font-weight:600;margin:18px 0 10px;color:#1a2036;display:flex;align-items:center;gap:8px}.section-title .count{font-size:12px;color:#8c9ab0;font-weight:400}.kb-row{display:grid;grid-template-columns:90px 1fr 100px;gap:12px;padding:12px;border-bottom:1px solid #EDF1F8;align-items:start}.kb-row:hover{background:#f8fafd}.kb-row .cat{color:#ff7a00;font-size:12px;padding:2px 8px;background:#fff3e6;border-radius:10px;text-align:center;align-self:start}.kb-row .title{font-weight:600;font-size:14px;margin-bottom:4px}.kb-row .preview{color:#5b6b8a;font-size:13px;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.kb-row .meta{color:#8c9ab0;font-size:12px}.kb-row .actions{display:flex;flex-direction:column;gap:6px}.hint{color:#8c9ab0;font-size:13px;margin-top:8px}.mono{font-family:ui-monospace,monospace;font-size:12px;color:#5b6b8a}.dashboard-card{padding:24px}.dashboard-card h2{margin:0 0 18px}.stat-grid{display:grid;gap:14px;margin-bottom:24px;grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}.topic-overview{margin:2px 0 6px;display:flex;flex-wrap:wrap;align-items:center;gap:4px}.conv-detail{background:#f8fafd;border:1px solid #EDF1F8;border-radius:8px;padding:12px;max-height:380px;overflow:auto;scrollbar-gutter:stable}.conv-msg{padding:8px 0;border-bottom:1px dashed #EDF1F8}.conv-msg:last-child{border-bottom:none}.conv-msg .q{margin-bottom:4px;color:#d45f00}.conv-msg .a{color:#5b6b8a;white-space:pre-wrap;line-height:1.5}.stat-conv{background:#fff3e6}.stat-conv-users{background:#f0fdf4}.stat-conv-msgs{background:#fff3e6}.stat-grid.totals{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.stat-grid.compact{grid-template-columns:repeat(4,1fr);margin-bottom:14px}.stat-card{background:#fff;border-radius:10px;padding:14px;border:1px solid #F3F6FB;text-align:center}.stat-card .stat-num{font-size:26px;font-weight:700;color:#1a2036;line-height:1.1}.stat-card .stat-label{font-size:12px;color:#8c9ab0;margin-top:4px}.stat-card.stat-knowledge{border-top:3px solid #FF7A00}.stat-card.stat-services{border-top:3px solid #22C55E}.stat-card.stat-activities{border-top:3px solid #722ED1}.stat-card.stat-members,.stat-card.stat-conv{border-top:3px solid #FF7A00}.stat-card.stat-conv-users{border-top:3px solid #FF4D4F}.stat-card.stat-conv-msgs{border-top:3px solid #FF7A00}.stat-grid.compact .stat-card{padding:8px 6px}.stat-grid.compact .stat-num{font-size:18px}.stat-grid.compact .stat-label{font-size:11px}.station-grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(360px,1fr))}.station-card{background:#f8fafd;border:1px solid #F3F6FB;border-radius:10px;padding:16px}.station-card-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:6px}.station-card-head .station-name{font-weight:700;font-size:16px;color:#1a2036}.station-card-head .station-key{color:#8c9ab0;font-size:12px;font-family:ui-monospace,monospace}.station-card-meta{display:flex;gap:14px;flex-wrap:wrap;color:#8c9ab0;font-size:12px;margin-bottom:10px}.station-card-actions{display:flex;gap:6px;flex-wrap:wrap}.dropzone{margin:16px 0 8px;border:2px dashed #DCE3F0;border-radius:10px;padding:28px 16px;text-align:center;background:#f8fafd;transition:background .15s,border-color .15s}.dropzone:hover{background:#fff3e6;border-color:#ff7a00}.dropzone-hint{font-size:14px;color:#5b6b8a;margin:0 0 10px}.dropzone-tiny{font-size:12px;color:#8c9ab0;margin-top:10px}.dropzone code{background:#fff;padding:1px 6px;border-radius:4px;border:1px solid #DCE3F0;font-size:12px}.dropzone .btn{display:inline-block}.kb-modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a1a2e73;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:flex-start;justify-content:center;z-index:1000;padding:48px 16px 32px;overflow-y:auto;scrollbar-gutter:stable;animation:kb-mask-in .18s ease-out}.kb-modal{background:#fff;border-radius:14px;box-shadow:0 12px 48px #0a1a2e2e,0 2px 8px #0a1a2e0f;width:100%;max-width:880px;display:flex;flex-direction:column;overflow:hidden;animation:kb-modal-in .22s cubic-bezier(.2,.7,.3,1)}@keyframes kb-mask-in{0%{opacity:0}to{opacity:1}}@keyframes kb-modal-in{0%{opacity:0;transform:translateY(12px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.kb-modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:20px 24px 16px;border-bottom:1px solid #F3F6FB;background:linear-gradient(180deg,#f8fafd,#fff)}.kb-modal-title{font-size:18px;font-weight:700;color:#1a2036;margin-bottom:4px}.kb-modal-sub{font-size:13px;color:#5b6b8a;line-height:1.5}.kb-modal-close{border:none;background:transparent;font-size:26px;line-height:1;color:#8c9ab0;cursor:pointer;padding:4px 8px;border-radius:6px;transition:background .15s,color .15s;flex-shrink:0}.kb-modal-close:hover{background:#fff3e6;color:#1a2036}.kb-modal-body{padding:20px 24px 24px;display:flex;flex-direction:column;gap:18px;overflow-y:auto;scrollbar-gutter:stable;max-height:calc(100vh - 240px)}.kb-field{display:flex;flex-direction:column;gap:6px}.kb-field-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}.kb-label{font-size:13px;font-weight:600;color:#1a2036;display:flex;align-items:center;gap:6px}.kb-required{color:#ff4d4f;font-weight:700}.kb-counter{margin-left:auto;font-size:12px;font-weight:400;color:#8c9ab0}.kb-field input,.kb-field textarea,.kb-field select{width:100%;box-sizing:border-box;padding:10px 12px;border:1px solid #DCE3F0;border-radius:8px;font-size:14px;font-family:inherit;color:#1a2036;background:#fff;transition:border-color .15s,box-shadow .15s}.kb-field input:focus,.kb-field textarea:focus,.kb-field select:focus{outline:none;border-color:#ff7a00;box-shadow:0 0 0 3px #ff7a0026}.kb-field textarea{min-height:320px;resize:vertical;line-height:1.65;font-size:14px}.kb-helper{font-size:12px;color:#8c9ab0;line-height:1.5}.kb-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}.kb-chip{font-size:12px;padding:4px 12px;border-radius:14px;border:1px solid #DCE3F0;background:#fff;color:#5b6b8a;cursor:pointer;transition:background .15s,color .15s,border-color .15s}.kb-chip:hover{background:#fff3e6;border-color:#ff7a00;color:#ff7a00}.kb-chip.active{background:#ff7a00;color:#fff;border-color:#ff7a00}.kb-error{padding:10px 12px;background:#fff1f1;border:1px solid #FFD8D8;border-radius:8px;color:#d9363e;font-size:13px}.kb-modal-footer{padding:14px 24px;border-top:1px solid #F3F6FB;background:#f8fafd;display:flex;justify-content:flex-end;gap:10px}.btn.primary{background:#ff7a00;color:#fff;border-color:#ff7a00}.btn.primary:hover{background:#d45f00;border-color:#d45f00}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:16px}.panel-head h2{margin:0}.modal-form{display:flex;flex-direction:column;gap:18px}.modal-form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}.modal-form-row .kb-field{margin:0}.modal-form .kb-field input[type=checkbox]{width:auto;margin-right:6px;vertical-align:-2px}@media (max-width: 720px){.kb-field-row{grid-template-columns:1fr;gap:18px}.kb-modal-mask{padding:16px 8px}.kb-modal-body{max-height:calc(100vh - 200px)}.modal-form-row{grid-template-columns:1fr;gap:14px}}:root{--c-bg: #F3F6FB;--c-surface: #ffffff;--c-surface-2: #F8FAFD;--c-ink: #1A2036;--c-ink-2: #5B6B8A;--c-border: #DCE3F0;--c-primary: #FF7A00;--c-primary-deep: #D45F00;--c-primary-soft: #FFF3E6;--c-accent: #1677FF;--c-accent-deep: #0958D9;--c-accent-soft: #E6F4FF;--c-danger: #FF4D4F;--c-danger-soft: #FFF2F0;--c-success: #22C55E;--c-success-soft: #F0FDF4;--c-warning: #FAAD14;--c-warning-soft: #FFFBE6;--c-blue: #0958D9;--c-green: #22C55E;--c-amber: #FF7A00;--c-rose: #FF4D4F;--radius-lg: 22px;--radius-md: 16px;--shadow-card: 0 2px 10px rgba(26, 32, 54, .06);--shadow-float: 0 6px 24px rgba(26, 32, 54, .14);--fs-body: 17px;--fs-body-lg: 20px;--fs-body-xl: 24px;--fs-title: 20px;--fs-title-lg: 23px;--fs-title-xl: 27px;--fs-sub: 14px;--fs-sub-lg: 16px;--fs-sub-xl: 18px;--touch: 48px;--safe-b: env(safe-area-inset-bottom, 0px);--safe-t: env(safe-area-inset-top, 0px);--cur-body: var(--fs-body);--cur-title: var(--fs-title);--cur-sub: var(--fs-sub);--app-w: 520px}[data-font=normal]{--cur-body: var(--fs-body);--cur-title: var(--fs-title);--cur-sub: var(--fs-sub)}[data-font=large]{--cur-body: var(--fs-body-lg);--cur-title: var(--fs-title-lg);--cur-sub: var(--fs-sub-lg)}[data-font=xlarge]{--cur-body: var(--fs-body-xl);--cur-title: var(--fs-title-xl);--cur-sub: var(--fs-sub-xl)}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;overflow-x:hidden;scrollbar-gutter:stable}body{font-family:-apple-system,BlinkMacSystemFont,PingFang SC,HarmonyOS Sans SC,Microsoft YaHei,Noto Sans SC,Segoe UI,sans-serif;background:#f3f6fb;color:var(--c-ink);-webkit-font-smoothing:antialiased;font-size:17px;line-height:1.55}button{font:inherit;color:inherit;background:none;border:none;cursor:pointer;touch-action:manipulation;min-height:var(--touch);-webkit-tap-highlight-color:transparent}button:focus-visible,input:focus-visible{outline:3px solid var(--c-primary);outline-offset:2px}input{font:inherit}.app{position:relative;max-width:var(--app-w);margin:0 auto;height:100dvh;background:radial-gradient(1200px 480px at 85% -10%,rgba(255,122,0,.1),transparent 60%),linear-gradient(180deg,#F8FAFD 0%,var(--c-bg) 42%);display:flex;flex-direction:column;box-shadow:0 0 40px #1a20361a}.app-header{position:sticky;top:0;z-index:30;background:#fbf9f3eb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--c-border);padding:calc(var(--safe-t) + 8px) 14px 8px}.header-main{display:flex;align-items:center;gap:10px}.header-logo{width:48px;height:48px;flex:none;border-radius:16px;background:linear-gradient(145deg,#ff7a00,#d45f00);color:#fff;font-size:24px;font-weight:700;display:grid;place-items:center;box-shadow:var(--shadow-card)}.header-title-wrap{min-width:0;flex:1}.header-title{font-size:var(--cur-title);font-weight:700;letter-spacing:.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-sub{font-size:var(--cur-sub);color:var(--c-ink-2);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-actions{margin-left:auto;display:flex;gap:6px;align-items:center;flex:none}.icon-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:5px;min-width:40px;min-height:40px;width:40px;height:40px;padding:0;border-radius:14px;background:var(--c-surface);border:1px solid var(--c-border);color:var(--c-primary-deep);font-weight:600;font-size:var(--cur-sub);box-shadow:var(--shadow-card);transition:transform .15s ease}.icon-btn:active{transform:scale(.95)}.badge{position:absolute;top:2px;right:2px;min-width:20px;height:20px;padding:0 5px;border-radius:10px;background:var(--c-danger);color:#fff;font-size:12px;font-weight:700;display:grid;place-items:center}.app-main{flex:1;overflow-y:auto;scrollbar-gutter:stable;padding:14px 14px 0;display:flex;flex-direction:column;gap:14px}.quick-cards{display:grid;grid-template-columns:1fr 1fr;gap:8px}.quick-card{display:flex;flex-direction:column;align-items:flex-start;gap:3px;padding:10px 10px 8px;background:var(--c-surface);border:1px solid var(--c-border);border-radius:18px;box-shadow:var(--shadow-card);text-align:left;transition:transform .15s ease}.quick-card:active{transform:scale(.97)}.quick-icon{width:40px;height:40px;border-radius:14px;display:grid;place-items:center;color:#fff;margin-bottom:2px}.tone-blue .quick-icon{background:var(--c-blue)}.tone-green .quick-icon{background:var(--c-green)}.tone-amber .quick-icon{background:var(--c-amber)}.tone-rose .quick-icon{background:var(--c-rose)}.quick-title{font-size:var(--cur-title);font-weight:700}.quick-sub{font-size:var(--cur-sub);color:var(--c-ink-2)}.chips{display:flex;flex-wrap:wrap;gap:10px}.chip{padding:10px 16px;min-height:48px;border-radius:999px;background:var(--c-primary-soft);color:var(--c-primary-deep);font-size:var(--cur-sub);font-weight:600;border:1px solid rgba(255,122,0,.22);transition:transform .15s ease}.chip:active{transform:scale(.96)}.location-chip{display:inline-flex;align-items:center;gap:6px;margin:0 2px 10px;padding:6px 14px;border-radius:999px;background:var(--c-surface);border:1px solid var(--c-border);color:var(--c-primary-deep);font-size:var(--cur-sub);font-weight:600;box-shadow:var(--shadow-card);align-self:flex-start}.chat-area{flex:1;display:flex;flex-direction:column;gap:12px;padding:4px 2px 12px;min-height:140px}.msg{display:flex;flex-direction:column;gap:10px;align-items:flex-start;animation:rise .25s ease-out}.msg.user{align-items:flex-end}.msg>div{display:flex;flex-direction:column;max-width:92%}.msg.user>div{align-items:flex-end}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.avatar{width:42px;height:42px;flex:none;border-radius:50%;display:grid;place-items:center;font-weight:700;font-size:19px}.msg.assistant .avatar{background:linear-gradient(145deg,#ff7a00,#d45f00);color:#fff}.msg.user .avatar{background:#dce3f0;color:#5b6b8a}.bubble{max-width:100%;padding:12px 15px;border-radius:18px;font-size:var(--cur-body);line-height:1.6;word-break:break-word}.msg.assistant .bubble{background:var(--c-surface);border:1px solid var(--c-border);border-bottom-left-radius:6px;box-shadow:var(--shadow-card)}.msg.user .bubble{background:var(--c-primary);color:#fff;border-bottom-right-radius:6px}.md{font-size:var(--cur-body);line-height:1.75;word-break:break-word}.md>:first-child{margin-top:0}.md>:last-child{margin-bottom:0}.md p{margin:8px 0}.md-h{margin:14px 0 8px;font-weight:700;line-height:1.4}.md-h:first-child{margin-top:0}.md ul,.md ol{margin:8px 0;padding-left:1.4em}.md li{margin:6px 0}.md ul li{list-style:disc}.md ol li{list-style:decimal}.md strong{font-weight:700;color:var(--c-primary-deep)}.msg.user .bubble .md strong{color:#fff}.md em{font-style:italic}.md code{background:#0000000f;border-radius:6px;padding:1px 6px;font-size:.92em}.md a{color:var(--c-primary-deep);text-decoration:underline}.md blockquote{margin:10px 0;padding:8px 12px;border-left:4px solid var(--c-primary);background:#00000008;border-radius:0 10px 10px 0;color:var(--c-text-soft)}.msg-meta{margin-top:6px;display:flex;align-items:center;gap:10px}.msg-time{font-size:12px;color:var(--c-ink-2)}.replay-btn{display:inline-flex;align-items:center;gap:5px;padding:5px 12px;min-height:44px;border-radius:999px;background:var(--c-primary-soft);color:var(--c-primary-deep);font-size:var(--cur-sub);font-weight:600}.replay-btn.active{background:var(--c-primary);color:#fff}.msg>.typing{display:flex;flex-direction:row;width:fit-content;gap:6px;padding:14px 18px}.typing i{width:8px;height:8px;border-radius:50%;background:var(--c-primary);opacity:.5;animation:blink 1s infinite}.typing i:nth-child(2){animation-delay:.18s}.typing i:nth-child(3){animation-delay:.36s}@keyframes blink{0%,80%,to{opacity:.35;transform:none}40%{opacity:1;transform:translateY(-3px)}}.app-bottom{position:sticky;bottom:0;z-index:20;padding:10px 14px calc(var(--safe-b) + 12px);background:linear-gradient(180deg,rgba(246,243,236,0),var(--c-bg) 30%);display:flex;flex-direction:column;align-items:center;gap:10px}.voice-wrap{display:flex;flex-direction:column;align-items:center;gap:8px}.voice-btn{position:relative;width:92px;height:92px;border-radius:50%;background:linear-gradient(145deg,#ff9a33,#d45f00);color:#fff;display:grid;place-items:center;box-shadow:0 8px 24px #ff7a0059;transition:transform .15s ease;-webkit-tap-highlight-color:transparent;outline:none;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.voice-btn:active,.voice-btn:focus-visible{outline:none;box-shadow:none}.voice-btn:active{transform:scale(.94)}.voice-btn.active{background:linear-gradient(145deg,#d45f00,#a84300)}.pulse-ring{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;border:3px solid rgba(255,122,0,.55);animation:pulse 1.4s ease-out infinite}@keyframes pulse{0%{transform:scale(1);opacity:.9}to{transform:scale(1.55);opacity:0}}.voice-hint{font-size:var(--cur-sub);color:var(--c-ink-2);order:-1;margin:0 0 6px;white-space:nowrap}.typing-toggle{position:fixed;left:16px;bottom:calc(var(--safe-b) + 18px);z-index:40;display:inline-flex;align-items:center;justify-content:center;width:52px;height:52px;border-radius:50%;background:var(--c-surface);border:1px solid var(--c-border);color:var(--c-primary-deep);box-shadow:var(--shadow-card)}@media (min-width: 560px){.typing-toggle{left:max(16px,calc((100vw - var(--app-w)) / 2 + 16px))}}.text-input-row{width:100%;display:flex;gap:10px;align-items:center}.text-input-row input{flex:1;min-height:52px;padding:0 16px;border-radius:999px;border:1.5px solid var(--c-border);background:var(--c-surface);font-size:var(--cur-body)}.text-input-row input:focus{border-color:var(--c-primary)}.btn-send{width:56px;height:52px;flex:none;border-radius:18px;background:var(--c-primary);color:#fff;display:grid;place-items:center}.emergency-fab{position:fixed;right:16px;bottom:calc(var(--safe-b) + 18px);width:52px;height:52px;border-radius:50%;background:linear-gradient(145deg,#ff4d4f,#d9363e);color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0px;box-shadow:0 6px 18px #b91c1c61;z-index:40;font-size:11px;font-weight:700;transition:transform .15s ease}.emergency-fab:active{transform:scale(.94)}@media (min-width: 560px){.emergency-fab{right:max(16px,calc((100vw - var(--app-w)) / 2 + 16px))}}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:#1a20367a;display:flex;align-items:center;justify-content:center;padding:28px;animation:fade .18s ease-out}@keyframes fade{0%{opacity:0}to{opacity:1}}.emergency-card{width:100%;max-width:400px;background:var(--c-surface);border-radius:26px;padding:26px 22px 20px;text-align:center;animation:pop .22s cubic-bezier(.2,1.2,.4,1)}@keyframes pop{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:none}}.emergency-icon{width:64px;height:64px;border-radius:50%;background:var(--c-danger-soft);color:var(--c-danger);display:grid;place-items:center;margin:0 auto 12px}.emergency-card h2{font-size:24px;margin-bottom:8px}.emergency-card p{color:var(--c-ink-2);margin-bottom:20px;font-size:var(--cur-sub)}.btn-danger{width:100%;min-height:60px;border-radius:18px;background:var(--c-danger);color:#fff;font-size:20px;font-weight:700;margin-bottom:10px}.btn-ghost{width:100%;min-height:54px;border-radius:18px;background:var(--c-surface-2);border:1px solid var(--c-border);font-size:18px;font-weight:600}.sheet-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#1a20366b;display:flex;align-items:flex-end;animation:fade .18s ease-out}.sheet{width:100%;max-width:520px;margin:0 auto;background:var(--c-surface);border-radius:26px 26px 0 0;padding:10px 18px calc(var(--safe-b) + 18px);animation:sheetUp .25s cubic-bezier(.2,.9,.3,1)}@keyframes sheetUp{0%{transform:translateY(40px);opacity:.6}to{transform:none;opacity:1}}.sheet-handle{width:44px;height:5px;border-radius:3px;background:#dce3f0;margin:0 auto 12px}.sheet-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.sheet-head h2{font-size:22px}.booking-list{list-style:none;display:flex;flex-direction:column;gap:10px}.booking-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border-radius:var(--radius-md);background:var(--c-surface-2);border:1px solid var(--c-border)}.booking-service{font-weight:700;font-size:var(--cur-body);display:block}.booking-time{color:var(--c-ink-2);font-size:var(--cur-sub)}.status{flex:none;padding:5px 12px;border-radius:999px;font-size:13px;font-weight:700}.status-pending{background:var(--c-amber-soft, #FFF3E6);color:var(--c-amber)}.status-done{background:var(--c-green-soft, #F0FDF4);color:var(--c-green)}.sheet-note{margin-top:14px;text-align:center;color:var(--c-ink-2);font-size:var(--cur-sub)}.business-sheet{max-height:min(86vh,760px);overflow-y:auto;scrollbar-gutter:stable;padding-bottom:28px}.catalog-sections,.course-list{display:grid;gap:18px}.catalog-group,.course-card,.benefit-detail{border:1px solid #E6EBF5;border-radius:22px;background:#fff;padding:18px}.catalog-group h3,.course-card h3{margin:0 0 12px;color:#ff7a00}.catalog-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 0;border-top:1px solid #E6EBF5}.catalog-row>div{min-width:0}.catalog-row strong,.catalog-price{display:block}.catalog-price{margin-top:5px;color:#d45f00;line-height:1.45}.small-action,.primary-wide{min-height:46px;border:0;border-radius:16px;background:#ff7a00;color:#fff;font:inherit;font-weight:700;padding:10px 16px}.small-action{flex:0 0 auto}.primary-wide{width:100%;margin-top:12px}.benefit-price-line{display:flex;align-items:center;gap:14px;color:#ff4d4f}.benefit-original{color:#8c9ab0;text-decoration:line-through}.benefit-promo{margin:10px 0;color:#ff4d4f;font-size:2.4rem;font-weight:900}.benefit-promo span{font-size:1rem}.benefit-facts{display:flex;flex-wrap:wrap;gap:8px}.benefit-facts span,.course-date{border-radius:999px;background:#fff3e6;color:#d45f00;padding:7px 11px;font-weight:700}.fine-print{color:#5b6b8a;font-size:.9em;line-height:1.5}.city-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:18px 0}.city-grid button{min-height:48px;border:1px solid #FFD1A3;border-radius:14px;background:#fff3e6;color:#d45f00;font:inherit;font-weight:700}.city-input-row{display:flex;gap:10px}.city-input-row input{min-width:0;flex:1;min-height:48px;border:1px solid #DCE3F0;border-radius:14px;padding:0 14px;font:inherit}.profile-form,.family-list{margin-top:18px;border:1px solid #E6EBF5;border-radius:20px;background:#fff;padding:18px}.profile-form h3,.family-list h3{margin-top:0;color:#ff7a00}.profile-form label{display:grid;gap:6px;margin-top:12px;font-weight:700}.profile-form input{min-height:48px;border:1px solid #DCE3F0;border-radius:14px;padding:0 14px;font:inherit}.form-message{position:sticky;bottom:0;border-radius:14px;background:#1a2036;color:#fff;padding:12px 16px}.profile-section,.family-section{margin-top:18px;border:1px solid #E6EBF5;border-radius:20px;background:#fff;padding:18px}.section-title-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.section-title-row h3,.family-section>h3{margin:0;color:#ff7a00;font-size:18px}.text-btn{background:transparent;border:0;color:#ff7a00;font-size:15px;font-weight:700;padding:6px 10px;border-radius:10px;cursor:pointer}.text-btn:active{background:#ff7a0014}.profile-card{margin-top:14px;display:grid;gap:12px}.profile-row{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:10px 12px;background:#f8fafd;border-radius:12px}.profile-label{flex:0 0 auto;color:#5b6b8a;font-size:15px}.profile-value{flex:1 1 auto;text-align:right;font-weight:600;color:#1a2036;word-break:break-word}.profile-empty{color:#8c9ab0;font-weight:400}.profile-form select{min-height:48px;border:1px solid #DCE3F0;border-radius:14px;padding:0 14px;font:inherit;background:#fff}.form-actions{display:flex;flex-direction:column;gap:10px;margin-top:4px}.secondary-wide{width:100%;min-height:46px;border:1px solid #DCE3F0;border-radius:16px;background:#fff;color:#5b6b8a;font:inherit;font-weight:700;cursor:pointer}.secondary-wide:active{background:#f3f6fb}.family-empty{margin:14px 0 0;color:#8c9ab0;text-align:center;padding:18px 0;background:#f8fafd;border-radius:12px}.family-list{margin:14px 0 0;padding:0;list-style:none;border:0}.family-list li{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px;background:#f8fafd;border-radius:12px;margin-bottom:10px}.family-list li:last-child{margin-bottom:0}.family-info{display:flex;flex-direction:column;gap:4px;min-width:0}.family-ops{display:flex;gap:12px;flex-shrink:0}.family-list strong{font-size:16px;color:#1a2036}.family-meta{font-size:14px;color:#5b6b8a}.text-danger{color:#ff4d4f}.text-danger:active{color:#d9363e}.family-toggle,.family-form{margin-top:14px}.toast{position:fixed;top:calc(var(--safe-t) + 14px);left:50%;transform:translate(-50%);z-index:80;max-width:90%;background:#1a2036;color:#fff;padding:12px 20px;border-radius:999px;font-size:15px;font-weight:600;box-shadow:var(--shadow-float);animation:fade .2s ease-out}.call-mode{position:absolute;top:0;right:0;bottom:0;left:0;z-index:70;display:flex;flex-direction:column;color:#fff;overflow:hidden;background:radial-gradient(120% 70% at 50% -5%,rgba(255,122,0,.55),transparent 55%),radial-gradient(90% 55% at 88% 100%,rgba(255,122,0,.4),transparent 60%),linear-gradient(180deg,#0a1a2e,#0d2540 46%,#102a4d)}.call-mode:before,.call-mode:after{content:"";position:absolute;border-radius:50%;filter:blur(70px);opacity:.5;pointer-events:none}.call-mode:before{width:240px;height:240px;left:-70px;top:18%;background:radial-gradient(circle,rgba(35,180,170,.55),transparent 70%);animation:drift1 9s ease-in-out infinite alternate}.call-mode:after{width:300px;height:300px;right:-110px;bottom:12%;background:radial-gradient(circle,rgba(56,132,189,.5),transparent 70%);animation:drift2 11s ease-in-out infinite alternate}@keyframes drift1{to{transform:translate(26px,18px) scale(1.08)}}@keyframes drift2{to{transform:translate(-24px,-14px) scale(1.06)}}.call-top{position:relative;z-index:1;padding-top:calc(var(--safe-t) + 34px);display:flex;flex-direction:column;align-items:center;gap:6px}.call-avatar{position:relative;width:78px;height:78px;border-radius:50%;background:linear-gradient(145deg,#ff7a00,#d45f00);border:3px solid rgba(255,255,255,.35);box-shadow:0 10px 34px #00000059;display:grid;place-items:center;font-size:36px;font-weight:700;margin-bottom:8px}.call-wave{position:absolute;left:50%;bottom:-18px;transform:translate(-50%);display:flex;gap:3px;align-items:flex-end;height:16px}.call-wave i{width:4px;border-radius:2px;background:#bae0ff;animation:wave .9s ease-in-out infinite}.call-wave i:nth-child(1){height:6px}.call-wave i:nth-child(2){height:14px;animation-delay:.12s}.call-wave i:nth-child(3){height:10px;animation-delay:.24s}.call-wave i:nth-child(4){height:16px;animation-delay:.36s}@keyframes wave{0%,to{transform:scaleY(.7);opacity:.7}50%{transform:scaleY(1.15);opacity:1}}.call-name{font-size:22px;font-weight:700;letter-spacing:.5px}.call-status{font-size:var(--cur-sub);color:#ffffffb8}.call-chat{position:relative;z-index:1;flex:1;overflow-y:auto;scrollbar-gutter:stable;display:flex;flex-direction:column;align-items:center;gap:14px;padding:18px 20px 12px}.call-msg{width:100%;max-width:430px;display:flex}.call-msg.assistant{justify-content:flex-start}.call-msg.user{justify-content:flex-end}.call-bubble{max-width:82%;padding:12px 16px;border-radius:18px;font-size:var(--cur-body);line-height:1.6;word-break:break-word;animation:rise .25s ease-out}.call-msg.user .call-bubble{background:#ffffffeb;color:#1a2036;border-bottom-right-radius:6px}.call-msg.assistant .call-bubble{background:#0a202adb;border:1px solid rgba(255,255,255,.14);border-bottom-left-radius:6px;color:#f0f7ff}.call-msg.assistant .call-bubble .md strong{color:#ffd8a6}.call-msg.assistant .call-bubble .md a{color:#a3d8ff}.call-msg.assistant .call-bubble .md code{background:#ffffff24;color:#f0f7ff}.call-msg.assistant .call-bubble .md blockquote{background:#ffffff14;border-left-color:#a3d8ff;color:#d6eef0}.call-bottom{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;gap:26px;padding:8px 16px calc(var(--safe-b) + 26px)}.call-btn{display:flex;flex-direction:column;align-items:center;gap:6px;min-width:72px;min-height:72px;color:#ffffffe0;font-size:var(--cur-sub);font-weight:600}.call-btn-icon{width:56px;height:56px;border-radius:50%;background:#ffffff1f;border:1px solid rgba(255,255,255,.2);display:grid;place-items:center}.call-btn.muted .call-btn-icon{background:#ffffff47}.call-end .call-btn-icon{background:#dc2626d9;border-color:transparent}.call-mic{position:relative;width:92px;height:92px;border-radius:50%;background:linear-gradient(145deg,#ff7a00,#d45f00);border:3px solid rgba(255,255,255,.35);box-shadow:0 10px 30px #00000059;color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:14px;font-weight:700;transition:transform .15s ease}.call-mic:active{transform:scale(.94)}.call-mic.active{background:linear-gradient(145deg,#0e7b70,#0a5d55)}.call-mode~.emergency-fab{top:calc(var(--safe-t) + 14px);bottom:auto;z-index:90}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@media (min-width: 1024px){:root{--app-w: 1440px}.app{height:100dvh;box-shadow:0 0 60px #1a20361f}.app-header .header-main{max-width:1080px;margin:0 auto;width:100%}.quick-cards{grid-template-columns:repeat(4,1fr);max-width:1080px;width:100%;margin:0 auto}.chips{max-width:1080px;width:100%;margin:0 auto}.location-chip{max-width:1080px;margin-left:auto;margin-right:auto}.chat-area{max-width:880px;width:100%;margin:0 auto}}
