  /* =========================================================================
     Varsity AI chat — full-viewport sheet that slides up from the bottom.
     Mirrors the #vmodal motion; ChatGPT-style centered conversation column.
     Relies on page palette tokens. Markup is injected by varsity-chat.js.
     ========================================================================= */
  .vchat{position:fixed;inset:0;z-index:1001;display:flex;align-items:flex-end;justify-content:center;visibility:hidden;pointer-events:none}
  .vchat-scrim{position:absolute;inset:0;background:rgba(27,18,51,.55);opacity:0;transition:opacity .35s ease}
  .vchat-sheet{position:relative;width:100%;height:100%;background:#fff;display:flex;flex-direction:row;transform:translateY(100%);transition:transform .42s cubic-bezier(.2,.8,.2,1)}
  .vchat.open{visibility:visible;pointer-events:auto}
  .vchat.open .vchat-scrim{opacity:1}
  .vchat.open .vchat-sheet{transform:translateY(0)}

  /* Left brand rail (desktop only) — image + the touchpoint's context */
  .vchat-main{flex:1 1 auto;min-width:0;display:flex;flex-direction:column}
  .vchat-rail{flex:0 0 34%;max-width:380px;position:relative;overflow:hidden;background:var(--violet-dk)}
  .vchat-rail[hidden]{display:none}
  .vchat-rail-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
  .vchat-rail::after{content:"";position:absolute;inset:0;background:linear-gradient(160deg,rgba(27,18,51,.18),rgba(27,18,51,.34) 45%,rgba(27,18,51,.86))}
  .vchat-rail-cap{position:absolute;left:0;right:0;bottom:0;z-index:1;padding:clamp(24px,2.6vw,40px)}
  .vchat-rail-title{color:#fff;font-size:var(--fs-2xl);line-height:1.14;font-weight:700;max-width:16ch;text-shadow:0 2px 20px rgba(20,4,8,.4)}
  .vchat-rail-line{color:#EBE7FA;margin-top:10px;font-size:var(--fs-sm);max-width:30ch}

  /* Header */
  .vchat-head{flex:0 0 auto;display:flex;align-items:center;gap:12px;padding:16px clamp(18px,4vw,40px);background:var(--violet);color:#fff}
  .vchat-brand{display:inline-flex;align-items:center;gap:9px;font-weight:700;font-size:var(--fs-lg)}
  .vchat-spark{width:20px;height:20px;fill:var(--soft-lilac)}
  .vchat-tag{font-size:var(--fs-3xs);font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#fff;opacity:.75;border:1px solid rgba(255,255,255,.4);border-radius:6px;padding:3px 9px}
  .vchat-cta{margin-left:auto;display:inline-flex;align-items:center;gap:7px;font-family:inherit;font-size:var(--fs-sm);font-weight:600;color:#fff;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.4);border-radius:6px;padding:8px 14px;cursor:pointer;transition:background .15s,color .15s}
  .vchat-cta:hover{background:#fff;color:var(--violet)}
  .vchat-cta svg{width:16px;height:16px;fill:currentColor;flex:0 0 auto}
  .vchat-close{width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:50%;background:rgba(255,255,255,.14);color:#fff;cursor:pointer;transition:background .15s,transform .15s}
  .vchat-close:hover{background:rgba(255,255,255,.26);transform:rotate(90deg)}
  .vchat-close svg{width:18px;height:18px;fill:currentColor}

  /* Conversation log — each child centered in a 720px column */
  .vchat-log{flex:1 1 auto;overflow-y:auto;padding:clamp(20px,3vw,34px) 16px;display:flex;flex-direction:column;gap:14px}
  .vchat-log > *{width:100%;max-width:720px;margin:0 auto}
  .vchat-msg{display:flex}
  .vchat-msg.user{justify-content:flex-end}
  .vchat-bubble{max-width:80%;padding:12px 16px;border-radius:6px;font-size:var(--fs-base);line-height:1.5;white-space:pre-wrap}
  .vchat-msg.bot .vchat-bubble{background:var(--lav-2);color:var(--ink);border-bottom-left-radius:5px}
  .vchat-msg.user .vchat-bubble{background:var(--violet);color:#fff;border-bottom-right-radius:5px}

  /* Quick-reply chips — pinned in a row just above the composer */
  .vchat-suggest{flex:0 0 auto;display:flex;flex-wrap:wrap;gap:8px;width:100%;max-width:720px;margin:0 auto;padding:10px 16px 0}
  .vchat-suggest[hidden]{display:none}
  .vchat-chip{font-family:inherit;font-size:var(--fs-sm);font-weight:600;color:var(--violet);background:#fff;border:1.5px solid var(--line);border-radius:6px;padding:8px 15px;cursor:pointer;transition:border-color .15s,background .15s}
  .vchat-chip:hover{border-color:var(--violet);background:var(--lav)}

  /* Typing indicator */
  .vchat-typing .vchat-bubble{display:inline-flex;gap:5px;align-items:center}
  .vchat-typing span{width:7px;height:7px;border-radius:50%;background:var(--violet);opacity:.35;animation:vchatDot 1s infinite ease-in-out}
  .vchat-typing span:nth-child(2){animation-delay:.15s}
  .vchat-typing span:nth-child(3){animation-delay:.3s}
  @keyframes vchatDot{0%,60%,100%{opacity:.25;transform:translateY(0)}30%{opacity:.9;transform:translateY(-3px)}}

  /* Composer */
  .vchat-composer{flex:0 0 auto;display:flex;gap:10px;width:100%;max-width:720px;margin:0 auto;padding:12px 16px 4px}
  .vchat-input{flex:1 1 auto;font-family:inherit;font-size:var(--fs-base);color:var(--ink);padding:13px 16px;border:1.5px solid var(--line);border-radius:6px;background:#fff;outline:0;transition:border-color .15s}
  .vchat-input:focus{border-color:var(--violet)}
  .vchat-send{flex:0 0 auto;width:48px;height:48px;display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:50%;background:var(--violet);color:#fff;cursor:pointer;transition:background .15s}
  .vchat-send:hover{background:var(--violet-dk)}
  .vchat-send svg{width:20px;height:20px;fill:currentColor}
  .vchat-fine{width:100%;max-width:720px;margin:0 auto;padding:0 16px 14px;font-size:var(--fs-2xs);color:var(--muted);text-align:center}

  body.vchat-lock{overflow:hidden}

  /* Reusable inline "ask Varsity AI" nudge — a quiet text affordance,
     deliberately subordinate to the primary .btn CTAs it sits near. */
  .chat-nudge{display:inline-flex;align-items:center;gap:7px;font-family:inherit;font-size:var(--fs-sm);font-weight:600;color:var(--violet);background:none;border:0;padding:2px 0;cursor:pointer;transition:color .15s}
  .chat-nudge:hover{color:var(--violet-dk)}
  .chat-nudge .lbl{border-bottom:1.5px solid transparent;padding-bottom:1px;transition:border-color .15s}
  .chat-nudge:hover .lbl{border-color:currentColor}
  .chat-nudge .sp{width:15px;height:15px;fill:var(--violet);flex:0 0 auto}
  /* Light variant for placement on dark/maroon sections (e.g. .fees) */
  .chat-nudge--light{color:var(--lav)}
  .chat-nudge--light:hover{color:#fff}
  .chat-nudge--light .sp{fill:var(--soft-lilac)}

  @media(max-width:820px){
    .vchat-bubble{max-width:88%}
    .vchat-head{padding:14px 18px}
    .vchat-rail{display:none}
    .vchat-tag{display:none}
  }
  @media(max-width:480px){
    .vchat-cta-label{display:none}
    .vchat-cta{padding:8px 11px}
  }
  @media(prefers-reduced-motion:reduce){
    .vchat-sheet,.vchat-scrim{transition:none}
    .vchat-typing span{animation:none}
  }
