.ctm-ai-campus{max-width:1150px;margin:24px auto;padding:0 14px}.ctm-ai-chat{background:#fff;border:1px solid #d6e0ec;border-radius:16px;overflow:hidden;max-width:1100px;margin:20px auto;box-shadow:0 4px 18px #1a37550c}.ctm-ai-title{background:#123c67;color:#fff;font-size:19px;font-weight:700;padding:18px}.ctm-ai-messages{min-height:340px;max-height:65vh;overflow-y:auto;padding:20px;background:#f5f8fc}.ctm-ai-messages p{padding:12px 16px;max-width:85%;border-radius:14px;line-height:1.55;margin:8px 0;white-space:pre-wrap;overflow-wrap:anywhere}.ctm-ai-bot{background:#fff;color:#23384c;border:1px solid #dce5ee}.ctm-ai-user{background:#1767c5;color:#fff;margin-left:auto!important}.ctm-ai-form{display:flex;gap:10px;padding:15px}.ctm-ai-form input{flex:1;min-width:0;padding:12px;border:1px solid #bbc9d9;border-radius:9px;font-size:16px}.ctm-ai-form button{border:0;background:#1767c5;color:#fff;padding:12px 22px;border-radius:9px;cursor:pointer}.ctm-ai-form button:disabled{opacity:.5}.ctm-ai-card{max-width:1150px;margin:24px auto;padding:24px;background:#fff;border:1px solid #d7e1ef;border-radius:16px}.ctm-ai-card a{display:inline-block;background:#1767c5;color:#fff;padding:12px 18px;border-radius:9px;text-decoration:none}@media(max-width:600px){.ctm-ai-messages{min-height:300px}.ctm-ai-messages p{max-width:95%}.ctm-ai-form{padding:10px}.ctm-ai-form button{padding:10px 14px}}
/* CTM visitor bubble; logged-in students use their campus card. */
.ctm-ai-float{--ctm-ai-accent:#1767c5;position:fixed;bottom:22px;z-index:99990;max-width:calc(100vw - 24px);font-family:inherit}.ctm-ai-float-right{right:20px}.ctm-ai-float-left{left:20px}.ctm-ai-float-toggle{border:0;background:var(--ctm-ai-accent);color:white;border-radius:30px;padding:13px 18px;font-size:15px;font-weight:700;box-shadow:0 5px 20px #0003;cursor:pointer}.ctm-ai-float-panel{position:absolute;bottom:65px;width:min(390px,calc(100vw - 30px));max-height:min(640px,calc(100vh - 110px));background:#fff;border-radius:16px;box-shadow:0 10px 38px #0003;overflow:hidden}.ctm-ai-float-right .ctm-ai-float-panel{right:0}.ctm-ai-float-left .ctm-ai-float-panel{left:0}.ctm-ai-float-panel[hidden]{display:none!important}.ctm-ai-float-close{position:absolute;right:10px;top:9px;z-index:2;background:#fff;color:#123c67;border:0;border-radius:20px;width:32px;height:32px;font-size:23px;cursor:pointer}.ctm-ai-float .ctm-ai-chat{margin:0;border:0;border-radius:0;box-shadow:none;max-width:none}.ctm-ai-float .ctm-ai-title{background:var(--ctm-ai-accent);padding:15px 48px 15px 15px;font-size:16px}.ctm-ai-float .ctm-ai-messages{min-height:230px;height:min(370px,calc(100vh - 230px));max-height:none;padding:12px}.ctm-ai-float .ctm-ai-form{padding:10px;gap:6px}.ctm-ai-float .ctm-ai-form input{font-size:16px;padding:9px}.ctm-ai-float .ctm-ai-form button{padding:9px 11px;background:var(--ctm-ai-accent)}.ctm-ai-thinking{opacity:.72;font-style:italic;animation:ctm-ai-pulse 1.2s ease-in-out infinite}@keyframes ctm-ai-pulse{50%{opacity:.38}}@media(max-width:480px){.ctm-ai-float{bottom:12px}.ctm-ai-float-right{right:12px}.ctm-ai-float-left{left:12px}.ctm-ai-float-panel{bottom:60px}}

/* 4.0.3: visible public avatar and accessible floating trigger */
.ctm-ai-float{bottom:var(--ctm-ai-bottom,22px)!important;z-index:2147482000!important;visibility:visible!important;opacity:1!important;pointer-events:auto!important}
.ctm-ai-float-right{right:var(--ctm-ai-side,20px)!important}.ctm-ai-float-left{left:var(--ctm-ai-side,20px)!important}
.ctm-ai-float-toggle{display:flex!important;align-items:center;gap:9px;min-height:52px;max-width:calc(100vw - 24px);line-height:1.2;visibility:visible!important;opacity:1!important}
.ctm-ai-avatar{width:var(--ctm-ai-avatar-size,54px);height:var(--ctm-ai-avatar-size,54px);max-width:none;object-fit:contain;border-radius:50%;flex-shrink:0;transform-origin:center}
.ctm-ai-default-icon{font-size:23px}.ctm-ai-avatar-float{animation:ctm-ai-float 3s ease-in-out infinite}.ctm-ai-avatar-pulse{animation:ctm-ai-pulse 2s ease-in-out infinite}.ctm-ai-avatar-bounce{animation:ctm-ai-bounce 2.8s ease-in-out infinite}
@keyframes ctm-ai-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes ctm-ai-bounce{0%,100%{transform:translateY(0)}40%{transform:translateY(-9px)}55%{transform:translateY(-2px)}}
@media(prefers-reduced-motion:reduce){.ctm-ai-avatar{animation:none!important}}

/* CTM 4.0.4 - virtual / futuristic skin. All selectors scoped to CTM. */
.ctm-ai-chat{--ctm-ai-ink:#e8f8ff;--ctm-ai-glow:#4de2ff;background:#08192c;border:1px solid #45dfff65;border-radius:20px;box-shadow:0 12px 44px #061b3880,0 0 28px #33d7ff18;color:var(--ctm-ai-ink)}
.ctm-ai-title{background:linear-gradient(115deg,#06182e,#10375b 65%,#134b69);color:#effcff;letter-spacing:.3px;border-bottom:1px solid #42d6f87a;text-shadow:0 0 16px #50dfff77}
.ctm-ai-title:before{content:'✦';display:inline-block;color:#59edff;margin-right:10px;animation:ctm-ai-pulse 2.5s ease-in-out infinite}
.ctm-ai-messages{background:radial-gradient(ellipse at 15% 0%,#123a5a 0%,#091a30 55%,#081424 100%);color:#e8f8ff}
.ctm-ai-messages p{box-shadow:0 4px 18px #0003;line-height:1.6}
.ctm-ai-bot{background:#15314b;color:#edfaff;border:1px solid #59cfee4d;border-bottom-left-radius:5px}
.ctm-ai-user{background:linear-gradient(125deg,#166cb5,#124e85);color:#fff;border:1px solid #69d6ff66;border-bottom-right-radius:5px}
.ctm-ai-form{background:#0c223a;border-top:1px solid #3dbce63b}
.ctm-ai-form input{background:#091b30!important;color:#f0fcff!important;border:1px solid #4ec8ec77!important;border-radius:12px;outline-offset:2px}
.ctm-ai-form input::placeholder{color:#aac6d6}
.ctm-ai-form input:focus{border-color:#5ee6ff!important;box-shadow:0 0 0 3px #52d5ff26}
.ctm-ai-form button{background:linear-gradient(125deg,#116db1,#1595bc)!important;border:1px solid #77eaff66;border-radius:12px;box-shadow:0 0 12px #33ceff27}
.ctm-ai-form button:hover{filter:brightness(1.16)}
.ctm-ai-float-toggle{background:linear-gradient(120deg,#072e56,var(--ctm-ai-accent),#087d9f)!important;border:1px solid #7beaff9c;box-shadow:0 7px 26px #021a35a8,0 0 18px #35d7ff55!important;border-radius:40px;color:#fff;transition:transform .2s,box-shadow .2s}
.ctm-ai-float-toggle:hover{transform:translateY(-2px);box-shadow:0 9px 30px #021a35b0,0 0 25px #43e1ff88!important}
.ctm-ai-float-panel{background:#08192c;border:1px solid #52d9ff8c;box-shadow:0 18px 52px #02152ed9,0 0 30px #32d4ff2b;border-radius:20px}
.ctm-ai-float .ctm-ai-title{background:linear-gradient(120deg,#071b35,#0e4c70)!important}
.ctm-ai-float-close{background:#173a56;color:#e6faff;border:1px solid #56d5ff66}
.ctm-ai-avatar-video{display:block;object-fit:cover;background:transparent}
.ctm-ai-default-icon{font-size:26px;color:#a8f4ff;text-shadow:0 0 12px #7beaff}
@media(prefers-reduced-motion:reduce){.ctm-ai-title:before{animation:none}.ctm-ai-float-toggle{transition:none}}
/* 4.0.7 - Complete administrator-controlled palette, scoped to CTM only. */
.ctm-ai-chat{background:var(--ctm-color-panel,#08192c);border-color:var(--ctm-color-border,#45dfff);color:var(--ctm-color-header-text,#effcff)}
.ctm-ai-title,.ctm-ai-float .ctm-ai-title{background:var(--ctm-color-header,#10375b)!important;color:var(--ctm-color-header-text,#effcff);border-color:var(--ctm-color-border,#45dfff)}
.ctm-ai-messages{background:var(--ctm-color-messages,#091a30)}
.ctm-ai-bot{background:var(--ctm-color-bot-bg,#15314b);color:var(--ctm-color-bot-text,#edfaff);border-color:var(--ctm-color-border,#45dfff)}
.ctm-ai-user{background:var(--ctm-color-user-bg,#166cb5);color:var(--ctm-color-user-text,#ffffff);border-color:var(--ctm-color-border,#45dfff)}
.ctm-ai-form{background:var(--ctm-color-form-bg,#0c223a);border-color:var(--ctm-color-border,#45dfff)}
.ctm-ai-form input{background:var(--ctm-color-input-bg,#091b30)!important;color:var(--ctm-color-input-text,#f0fcff)!important;border-color:var(--ctm-color-border,#45dfff)!important}
.ctm-ai-form input::placeholder{color:var(--ctm-color-placeholder,#aac6d6)}
.ctm-ai-form button{background:var(--ctm-color-button-bg,#116db1)!important;color:var(--ctm-color-button-text,#ffffff)!important;border-color:var(--ctm-color-border,#45dfff)}
.ctm-ai-float-toggle{background:var(--ctm-color-bubble-bg,#1767c5)!important;color:var(--ctm-color-bubble-text,#ffffff);border-color:var(--ctm-color-border,#45dfff)}
.ctm-ai-float-panel{background:var(--ctm-color-panel,#08192c);border-color:var(--ctm-color-border,#45dfff)}

/* 4.0.8: standalone avatar launcher; label floats above without pill background. */
.ctm-ai-float-launcher{display:flex;flex-direction:column;align-items:center;gap:7px;width:max-content;max-width:min(230px,calc(100vw - 24px));margin-left:auto;margin-right:auto}
.ctm-ai-float-label{display:block;max-width:220px;color:var(--ctm-color-bubble-text,#ffffff);font-weight:650;font-size:13px;line-height:1.3;text-align:center;text-shadow:0 1px 4px #000,0 0 12px #000a;overflow-wrap:anywhere;pointer-events:none}
.ctm-ai-float .ctm-ai-float-toggle{display:flex!important;align-items:center;justify-content:center;min-width:0!important;min-height:0!important;width:var(--ctm-ai-avatar-size,54px);height:var(--ctm-ai-avatar-size,54px);padding:0!important;margin:0!important;gap:0!important;border:0!important;border-radius:50%!important;background:transparent!important;box-shadow:none!important;overflow:visible;cursor:pointer}
.ctm-ai-float .ctm-ai-float-toggle:hover{transform:translateY(-2px);box-shadow:none!important}
.ctm-ai-float .ctm-ai-float-toggle:focus-visible{outline:3px solid #67dfff;outline-offset:4px}
.ctm-ai-float .ctm-ai-avatar{display:block;width:100%;height:100%;border-radius:50%;object-fit:contain;box-shadow:0 0 18px #35d7ff70}
.ctm-ai-float .ctm-ai-default-icon{display:grid;place-items:center;width:100%;height:100%;border-radius:50%;background:var(--ctm-color-bubble-bg,#1767c5);box-shadow:0 0 18px #35d7ff70;color:var(--ctm-color-bubble-text,#fff)}
.ctm-ai-float .ctm-ai-float-panel{bottom:calc(var(--ctm-ai-avatar-size,54px) + 62px)}
@media(max-width:480px){.ctm-ai-float .ctm-ai-float-panel{bottom:calc(var(--ctm-ai-avatar-size,54px) + 54px)}}

/* 4.0.9: el avatar ocupa toda la superficie circular, sin márgenes interiores. */
.ctm-ai-float .ctm-ai-float-toggle{overflow:hidden!important}
.ctm-ai-float .ctm-ai-avatar{width:100%!important;height:100%!important;object-fit:cover!important;border-radius:50%!important}

/* 4.1.1: admin-configurable chat header icon */
.ctm-ai-title:before{content:none!important;display:none!important}
.ctm-ai-title-icon{display:inline-flex;align-items:center;justify-content:center;margin-right:10px;vertical-align:middle;min-width:18px;font-size:18px;line-height:1;color:var(--ctm-color-border,#59edff)}

.ctm-ai-title-icon{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;flex:none}.ctm-ai-header-icon-svg,.ctm-ai-header-icon-image{display:block;flex:none;object-fit:contain;max-width:none;max-height:none}

/* 4.2.3: Enlaces como botones táctiles, aislados de los colores generales del chat. */
.ctm-ai-messages .ctm-ai-link-button{display:table;max-width:100%;box-sizing:border-box;margin:12px 0 3px;padding:10px 15px;border-radius:10px;background:var(--ctm-color-send-bg,var(--ctm-ai-accent,#1767c5));color:#fff!important;font-weight:700;font-size:14px;line-height:1.35;text-align:center;text-decoration:none!important;overflow-wrap:anywhere;box-shadow:0 3px 12px #0003;cursor:pointer}
.ctm-ai-messages .ctm-ai-link-button:hover,.ctm-ai-messages .ctm-ai-link-button:focus{filter:brightness(1.14);text-decoration:underline!important;outline-offset:3px}
@media(max-width:480px){.ctm-ai-messages .ctm-ai-link-button{min-height:44px;padding:12px 15px}}
