@import"https://fonts.googleapis.com/css2?family=Kanit:wght@300;400;500;600;700&family=Inter:wght@300;400;500;600;700&display=swap";:root{--bsp-primary-green: #2d7f5f;--bsp-dark-charcoal: #2b3e50;--bsp-light-green: #a8d5ba;--bsp-warm-grey: #f5f7fa;--bsp-accent-gold: #d4af37;--bsp-success: #27ae60;--bsp-alert: #e67e22;--bsp-error: #e74c3c;--bsp-info: #3498db;--bsp-font-th: "Kanit", sans-serif;--bsp-font-en: "Inter", sans-serif}.bansuanplace-theme{--color-bg-start: var(--bsp-warm-grey);--color-bg-end: #eef2f0;--color-card-bg: rgba(255, 255, 255, .85);--color-card-border: rgba(45, 127, 95, .18);--color-text-primary: var(--bsp-dark-charcoal);--color-text-secondary: #5b6b78;--color-text-muted: #8a97a3;--color-accent: var(--bsp-primary-green);--color-accent-2: var(--bsp-light-green);--color-error: var(--bsp-error);--color-warn: var(--bsp-alert);--color-online: var(--bsp-success);--color-info: var(--bsp-info);--color-gold: var(--bsp-accent-gold);--shadow-card: 0 2px 8px rgba(43, 62, 80, .08);--shadow-card-lg: 0 8px 24px rgba(43, 62, 80, .14);--radius-card: 16px;font-family:var(--bsp-font-en)}.bansuanplace-theme :lang(th){font-family:var(--bsp-font-th)}.bansuanplace-theme .execute-button,.bansuanplace-theme .login-button{color:var(--bsp-warm-grey)}.bansuanplace-theme .bsp-back-link{display:inline-block;font-size:12px;color:var(--color-text-secondary);text-decoration:none;margin-bottom:8px}.bansuanplace-theme .bsp-back-link:hover{color:var(--color-accent)}@media(prefers-color-scheme:dark){.bansuanplace-theme{--color-bg-start: #16201c;--color-bg-end: #131b22;--color-card-bg: rgba(255, 255, 255, .05);--color-card-border: rgba(168, 213, 186, .18);--color-text-primary: #e9f2ec;--color-text-secondary: #a9bdb4;--color-text-muted: #77897f}}.bansuanplace-theme .bsp-header{align-items:center}.bansuanplace-theme .bsp-brand-lockup{display:flex;align-items:flex-start;gap:16px}.bansuanplace-theme .bsp-logo-badge{flex-shrink:0;width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--bsp-primary-green),var(--bsp-light-green));color:var(--bsp-warm-grey);margin-top:2px}.bansuanplace-theme .bsp-brand-title{font-size:26px;letter-spacing:.5px;font-weight:600;display:flex;gap:8px;flex-wrap:wrap;align-items:baseline}.bansuanplace-theme .bsp-preview-tag{font-size:10px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--bsp-alert);background:#e67e221f;border:1px solid rgba(230,126,34,.3);border-radius:10px;padding:3px 8px}.bansuanplace-theme .bsp-stats-strip{grid-template-columns:repeat(4,1fr)}.bansuanplace-theme .bsp-legend{display:flex;align-items:center;gap:18px;margin-bottom:14px;font-size:12px;color:var(--color-text-secondary)}.bansuanplace-theme .bsp-legend-item{display:flex;align-items:center;gap:6px}.bansuanplace-theme .bsp-legend-swatch{width:14px;height:14px;padding:0;font-size:0}.bansuanplace-theme .bsp-buildings-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:20px}.bansuanplace-theme .bsp-building-card{border-radius:var(--radius-card);background:var(--color-card-bg);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--color-card-border);box-shadow:var(--shadow-card);padding:18px}.bansuanplace-theme .bsp-building-header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:14px}.bansuanplace-theme .bsp-building-name{font-size:15px;font-weight:600;color:var(--color-text-primary)}.bansuanplace-theme .bsp-building-count{font-size:11px;color:var(--color-text-muted)}.bansuanplace-theme .bsp-room-grid{display:flex;flex-wrap:wrap;gap:8px}.bansuanplace-theme .bsp-room-chip{min-width:44px;text-align:center;border-radius:8px;padding:6px 8px;font-size:10.5px;font-weight:600;color:#fff}.bansuanplace-theme .bsp-room-occupied{background:var(--bsp-success)}.bansuanplace-theme .bsp-room-vacant{background:var(--bsp-info)}.bansuanplace-theme .bsp-room-maintenance{background:var(--bsp-alert)}.bansuanplace-theme .bsp-panel-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(360px,1fr));gap:20px}.bansuanplace-theme .bsp-panel{border-radius:var(--radius-card);background:var(--color-card-bg);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--color-card-border);box-shadow:var(--shadow-card);padding:20px;display:flex;flex-direction:column;gap:14px}.bansuanplace-theme .bsp-panel .status-chip{background:#2d7f5f1a;color:var(--color-text-secondary)}.bansuanplace-theme .bsp-panel-header{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.bansuanplace-theme .bsp-panel-title{font-size:14px;font-weight:600;color:var(--color-text-primary)}.bansuanplace-theme .bsp-panel-note{font-size:11.5px;color:var(--color-text-muted);background:#2d7f5f0f;border:1px solid var(--color-card-border);border-radius:8px;padding:8px 10px;line-height:1.5}.bansuanplace-theme .bsp-panel-subheading{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.6px;color:var(--color-text-secondary);margin-top:4px}.bansuanplace-theme .bsp-billing-list{display:flex;flex-direction:column;gap:10px}.bansuanplace-theme .bsp-billing-row{display:grid;grid-template-columns:1fr auto auto auto;align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--color-card-border);border-radius:8px;font-size:12.5px}.bansuanplace-theme .bsp-billing-room{display:flex;flex-direction:column}.bansuanplace-theme .bsp-billing-room-no{font-weight:600;color:var(--color-text-primary)}.bansuanplace-theme .bsp-billing-tenant{font-size:11px;color:var(--color-text-muted)}.bansuanplace-theme .bsp-billing-method{font-size:11px;color:var(--color-text-secondary)}.bansuanplace-theme .bsp-billing-amount{font-weight:600;color:var(--color-text-primary)}.bansuanplace-theme .bsp-comm-log{display:flex;flex-direction:column;gap:10px}.bansuanplace-theme .bsp-comm-row{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:baseline;padding:10px 12px;border:1px solid var(--color-card-border);border-radius:8px;font-size:12.5px}.bansuanplace-theme .bsp-comm-channel{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--color-accent)}.bansuanplace-theme .bsp-comm-text{color:var(--color-text-primary)}.bansuanplace-theme .bsp-comm-date{font-size:11px;color:var(--color-text-muted);white-space:nowrap}.bansuanplace-theme .bsp-poster-form{display:flex;gap:10px;align-items:flex-end}.bansuanplace-theme .bsp-poster-form .command-textarea{min-height:60px}@media(max-width:900px){.bansuanplace-theme .bsp-stats-strip{grid-template-columns:repeat(2,1fr)}}@media(max-width:560px){.bansuanplace-theme .bsp-stats-strip,.bansuanplace-theme .bsp-billing-row,.bansuanplace-theme .bsp-comm-row{grid-template-columns:1fr}.bansuanplace-theme .bsp-poster-form{flex-direction:column;align-items:stretch}}:root{--color-bg-start: #0f1917;--color-bg-end: #0d1620;--color-card-bg: rgba(255, 255, 255, .045);--color-card-border: rgba(141, 211, 199, .16);--color-text-primary: #e7efec;--color-text-secondary: #9db8b1;--color-text-muted: #6f8580;--color-accent: #8dd3c7;--color-accent-2: #a8d5d0;--color-error: #e0685b;--color-warn: #e0b055;--color-online: #4fd18b;--shadow-card: 0 2px 8px rgba(0, 0, 0, .18);--shadow-card-lg: 0 8px 24px rgba(0, 0, 0, .28);--radius-card: 16px}@media(prefers-color-scheme:light){:root{--color-bg-start: #f8fbf9;--color-bg-end: #f5f9fc;--color-card-bg: rgba(255, 255, 255, .7);--color-card-border: rgba(158, 206, 199, .2);--color-text-primary: #2c3e50;--color-text-secondary: #5c7a74;--color-text-muted: #8ba39d;--shadow-card: 0 2px 8px rgba(0, 0, 0, .04);--shadow-card-lg: 0 4px 12px rgba(0, 0, 0, .06)}}*{box-sizing:border-box}body{margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased}button{font-family:inherit}.dashboard-container{padding:40px 40px 64px;min-height:100vh;background:linear-gradient(160deg,var(--color-bg-start) 0%,var(--color-bg-end) 100%);color:var(--color-text-primary)}.dashboard-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:36px;gap:16px}.dashboard-title{font-size:36px;font-weight:300;letter-spacing:-1px;color:var(--color-text-primary);line-height:1.1;margin:0}.dashboard-subtitle{font-size:13px;color:var(--color-text-muted);letter-spacing:.8px;text-transform:uppercase;font-weight:500;margin-top:10px}.logout-button{flex-shrink:0;padding:10px 18px;background:#8dd3c71a;border:1px solid var(--color-card-border);border-radius:24px;font-size:13px;color:var(--color-text-secondary);cursor:pointer}.error-banner{background:#e0685b1a;border:1px solid rgba(224,104,91,.25);color:var(--color-error);padding:12px 16px;border-radius:8px;margin-bottom:20px;font-size:13px}.section-container{margin-bottom:40px}.section-heading{font-size:13px;font-weight:600;letter-spacing:1px;text-transform:uppercase;color:var(--color-text-secondary);margin:0 0 18px}.health-strip{display:grid;grid-template-columns:repeat(6,1fr);gap:16px}.health-pill{border-radius:var(--radius-card);background:var(--color-card-bg);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--color-card-border);padding:16px 18px;box-shadow:var(--shadow-card)}.health-pill-top{display:flex;align-items:center;gap:8px;margin-bottom:10px}.status-dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex-shrink:0;background:var(--color-text-muted)}.status-dot.tone-green{background:var(--color-online);box-shadow:0 0 6px #4fd18b80}.status-dot.tone-amber{background:var(--color-warn);box-shadow:0 0 6px #e0b05580}.status-dot.tone-red{background:var(--color-error);box-shadow:0 0 6px #e0685b80}.status-dot.tone-unknown,.status-dot.tone-neutral{background:var(--color-accent)}.health-pill-label{font-size:10.5px;text-transform:uppercase;letter-spacing:.8px;color:var(--color-text-secondary);font-weight:600}.health-pill-value{font-size:22px;font-weight:300;letter-spacing:-.5px;color:var(--color-text-primary)}.health-pill-subtext{font-size:11px;color:var(--color-text-muted);margin-top:4px}.command-console{border-radius:var(--radius-card);background:var(--color-card-bg);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--color-card-border);box-shadow:var(--shadow-card);padding:24px;display:flex;flex-direction:column;gap:18px}.command-console-row{display:flex;gap:32px;flex-wrap:wrap}.field-label{font-size:11px;text-transform:uppercase;letter-spacing:1px;color:var(--color-text-secondary);margin-bottom:8px;font-weight:600}.mode-selector,.agent-selector,.quick-command-row{display:flex;gap:8px;flex-wrap:wrap}.chip-button{padding:8px 14px;background:transparent;border:1px solid var(--color-card-border);border-radius:8px;color:var(--color-text-secondary);font-size:11px;font-weight:600;cursor:pointer;text-transform:uppercase}.chip-button.active{background:#8dd3c726;border-color:var(--color-accent);color:var(--color-accent)}.quick-chip{padding:7px 14px;background:#8dd3c70f;border:1px dashed var(--color-card-border);border-radius:20px;color:var(--color-text-secondary);font-size:12px;cursor:pointer}.quick-chip:hover{border-color:var(--color-accent);color:var(--color-accent)}.command-input-row{display:flex;gap:12px;align-items:flex-end}.command-textarea{flex:1;background:#00000026;border:1px solid var(--color-card-border);border-radius:8px;color:var(--color-text-primary);padding:10px 14px;font-family:Monaco,Courier New,monospace;font-size:12px;resize:none;min-height:60px}.command-textarea-large{min-height:90px;font-size:13px}.execute-button{padding:10px 16px;background:linear-gradient(135deg,var(--color-accent),var(--color-accent-2));border:none;border-radius:8px;color:#06231e;font-weight:700;font-size:12px;cursor:pointer;text-transform:uppercase;letter-spacing:.5px}.execute-button-large{padding:14px 26px;font-size:13px;align-self:stretch}.execute-button:disabled{opacity:.5;cursor:not-allowed}.command-status{font-size:12px}.command-status.ok{color:var(--color-online)}.command-status.error{color:var(--color-error)}.chat-history{display:flex;flex-direction:column;gap:10px;max-height:420px;overflow-y:auto;scroll-behavior:smooth;padding-right:2px}.attach-button{flex:0 0 auto;width:46px;min-height:60px;background:#8dd3c70f;border:1px solid var(--color-card-border);border-radius:8px;color:var(--color-text-secondary);font-size:16px;cursor:pointer}.attach-button:hover:not(:disabled){border-color:var(--color-accent);color:var(--color-accent)}.attach-button:disabled{opacity:.5;cursor:not-allowed}.pending-file-list,.chat-attachment-list{display:flex;flex-wrap:wrap;gap:8px}.pending-file-chip,.attachment-chip{display:inline-flex;align-items:center;gap:6px;padding:5px 8px;background:#8dd3c70f;border:1px solid var(--color-card-border);border-radius:8px;font-size:11px;color:var(--color-text-secondary);max-width:200px}.pending-file-thumb,.attachment-thumb{width:24px;height:24px;border-radius:4px;object-fit:cover;flex:0 0 auto}.pending-file-icon,.attachment-icon{font-size:14px;flex:0 0 auto}.pending-file-name,.attachment-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100px}.pending-file-size,.attachment-size{color:var(--color-text-muted);flex:0 0 auto}.pending-file-remove{background:none;border:none;color:var(--color-text-muted);font-size:15px;line-height:1;cursor:pointer;padding:0 0 0 2px}.pending-file-remove:hover{color:var(--color-error)}.attachment-download{background:none;border:1px solid var(--color-accent);border-radius:6px;color:var(--color-accent);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;padding:3px 7px;cursor:pointer;flex:0 0 auto}.attachment-download:hover{background:#8dd3c726}.chat-message-thinking{display:flex;align-items:center;gap:5px;padding:14px 16px;width:fit-content}.thinking-dot{width:6px;height:6px;border-radius:50%;background:var(--color-accent);opacity:.4;animation:thinking-pulse 1.1s ease-in-out infinite}.thinking-dot:nth-child(2){animation-delay:.15s}.thinking-dot:nth-child(3){animation-delay:.3s}@keyframes thinking-pulse{0%,80%,to{opacity:.3;transform:scale(.85)}40%{opacity:1;transform:scale(1)}}.agent-carousel{display:flex;gap:20px;overflow-x:auto;padding:4px 4px 16px;scroll-snap-type:x proximity}.agent-carousel-empty{color:var(--color-text-muted);font-size:13px;padding:24px 0}.agent-card{all:unset;position:relative;flex:0 0 260px;height:260px;border-radius:var(--radius-card);overflow:hidden;box-shadow:var(--shadow-card-lg);transition:transform .25s ease-out;cursor:pointer;scroll-snap-align:start}.agent-card:hover{transform:translateY(-4px)}.agent-card-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(to top,rgba(10,20,18,.94),rgba(10,20,18,.55),transparent);padding:20px;display:flex;flex-direction:column;justify-content:flex-end}.agent-badge-row{display:flex;flex-direction:column;gap:6px;align-items:flex-start;margin-bottom:12px}.status-chip{display:inline-flex;align-items:center;gap:6px;padding:3px 9px;border-radius:12px;font-size:10px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;background:#ffffff1a;color:#ffffffd9}.status-dot-indicator{width:6px;height:6px;border-radius:50%;display:inline-block}.status-dot-indicator.online{background:var(--color-online)}.status-dot-indicator.offline{background:var(--color-error)}.agent-name{font-size:19px;font-weight:400;letter-spacing:-.4px;color:#fff;margin-bottom:4px}.agent-title{font-size:12px;color:#ffffffd9;line-height:1.4}.agent-subtitle{font-size:11px;color:#ffffffa6;margin-top:6px}.agent-usage{font-size:10.5px;color:#fff9;margin-top:10px}.agent-card-hint{font-size:10.5px;color:#ffffff80;margin-top:6px}.agent-grid-error{color:var(--color-error);font-size:13px;margin-bottom:12px}.chat-panel-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0408078c;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;justify-content:flex-end;z-index:50}.chat-panel{width:min(420px,100vw);height:100vh;background:#0e1a18;border-left:1px solid var(--color-card-border);box-shadow:var(--shadow-card-lg);padding:24px;display:flex;flex-direction:column;gap:16px;animation:chat-panel-in .2s ease-out}@keyframes chat-panel-in{0%{transform:translate(100%)}to{transform:translate(0)}}@media(prefers-color-scheme:light){.chat-panel{background:#fff}}.chat-panel-header{display:flex;justify-content:space-between;align-items:flex-start}.chat-panel-title{font-size:20px;font-weight:400;color:var(--color-text-primary)}.chat-panel-subtitle{font-size:12px;color:var(--color-text-secondary);margin-top:2px}.chat-panel-close{background:none;border:none;font-size:24px;line-height:1;color:var(--color-text-secondary);cursor:pointer}.chat-panel-note{font-size:11.5px;color:var(--color-text-muted);background:#8dd3c70f;border:1px solid var(--color-card-border);border-radius:8px;padding:10px 12px;line-height:1.5}.chat-panel-messages{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:10px}.chat-panel-empty{color:var(--color-text-muted);font-size:12px}.chat-message{border:1px solid var(--color-card-border);border-radius:8px;padding:10px 12px;background:#8dd3c70a}.chat-message-mode{font-size:10px;text-transform:uppercase;letter-spacing:.6px;color:var(--color-accent);font-weight:700;margin-bottom:4px}.chat-message-text{font-size:13px;color:var(--color-text-primary)}.chat-message-status{font-size:11px;color:var(--color-text-muted);margin-top:6px}.chat-message-failed .chat-message-status{color:var(--color-error)}.chat-message-sent .chat-message-status{color:var(--color-online)}.chat-message-role-agent{background:#8dd3c71a;border-color:var(--color-accent);align-self:flex-start;max-width:78%}.chat-message-role-user{align-self:flex-end;max-width:78%;background:#a8d5d01a}.chat-panel-modes{margin-bottom:-4px}.chat-panel-input-row{display:flex;gap:10px;align-items:flex-end}.client-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px}.client-card{all:unset;border-radius:var(--radius-card);background:var(--color-card-bg);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--color-card-border);box-shadow:var(--shadow-card);padding:20px;cursor:pointer;display:flex;flex-direction:column;gap:14px;transition:transform .2s ease-out,border-color .2s ease-out}.client-card:hover{transform:translateY(-2px);border-color:var(--color-accent)}.client-card-top,.client-card-bottom{display:flex;justify-content:space-between;align-items:center;gap:12px}.client-card-top .status-chip,.client-card-bottom .status-chip{background:#8dd3c71a;color:var(--color-text-secondary)}.client-card-name{font-size:17px;font-weight:500;color:var(--color-text-primary)}.client-card-name-local{font-size:12px;color:var(--color-text-muted);margin-top:2px}.client-card-hint{font-size:11px;color:var(--color-text-muted)}.client-stub-note{margin-top:16px;font-size:12px;color:var(--color-text-secondary);background:#8dd3c70f;border:1px solid var(--color-card-border);border-radius:8px;padding:12px 14px}.login-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(160deg,var(--color-bg-start) 0%,var(--color-bg-end) 100%)}.login-card{background:var(--color-card-bg);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:var(--radius-card);padding:40px;width:320px;box-shadow:var(--shadow-card-lg);border:1px solid var(--color-card-border)}.login-title{font-size:22px;font-weight:300;color:var(--color-text-primary);margin:0 0 4px}.login-subtitle{font-size:13px;color:var(--color-text-secondary);margin:0 0 24px}.login-input{width:100%;padding:12px 14px;border-radius:8px;border:1px solid var(--color-card-border);background:#00000026;color:var(--color-text-primary);font-size:14px;margin-bottom:12px}@media(prefers-color-scheme:light){.login-input{background:#fff}}.login-error{color:var(--color-error);font-size:12px;margin-bottom:12px}.login-button{width:100%;padding:12px;background:linear-gradient(135deg,var(--color-accent),var(--color-accent-2));border:none;border-radius:8px;color:#06231e;font-weight:700;font-size:13px;cursor:pointer;text-transform:uppercase;letter-spacing:.5px}.login-button:disabled{opacity:.6;cursor:not-allowed}@media(max-width:1100px){.health-strip{grid-template-columns:repeat(3,1fr)}}@media(max-width:900px){.command-console-row{gap:20px}}@media(max-width:560px){.dashboard-container{padding:28px 16px 48px}.health-strip{grid-template-columns:repeat(2,1fr)}.agent-card{flex-basis:220px;height:240px}.command-input-row{flex-direction:column;align-items:stretch}.execute-button-large{align-self:auto}.attach-button{align-self:flex-start;width:44px;min-height:40px}.chat-message-role-agent,.chat-message-role-user{max-width:92%}.chat-history{max-height:320px}}
