/* Cursor: a Figma-style arrow, dark with a white outline; it turns plane-purple over anything clickable */
@media (pointer: fine) {
  html, html * { cursor: url(./assets/cursor-arrow.svg?v=2) 4 3, auto; }
  html :is(a, button, summary, select, label[for], [role=button], [role=link], [data-case-study]),
  html :is(a, button, [role=button], [role=link], [data-case-study]) * { cursor: url(./assets/cursor-arrow-hover.svg?v=2) 4 3, pointer; }
  html :is(input:not([type=checkbox]):not([type=radio]):not([type=range]), textarea, [contenteditable=true]) { cursor: text; }
}


.rahul-fab-wrap .orbx--aurora{
  background:radial-gradient(90% 75% at 50% 18%, #FFFFFF 0%, #FBF9FF 52%, #F4F0FD 100%);
  border:1px solid rgba(255,255,255,.96);
  box-shadow:0 14px 28px rgba(110,85,180,.14), 0 6px 14px rgba(110,85,180,.10), 0 0 0 1px rgba(255,255,255,.7) inset;
  overflow:hidden;
}
.rahul-fab-wrap .orbx--aurora .orbx__aurora{
  position:absolute; inset:-1px; border-radius:50%; overflow:hidden; opacity:.98; z-index:0;
  background:conic-gradient(from 24deg at 50% 50%, #F3EFFD 0deg, #FBF9FF 72deg, #D6C9F4 132deg, #A48BE4 198deg, #8A6FD0 278deg, #C4B1EE 320deg, #F3EFFD 360deg);
  filter:blur(.6px) saturate(1.02) brightness(1.02);
}
.rahul-fab-wrap .orbx--aurora .orbx__wave{
  position:absolute; inset:0; border-radius:50%; overflow:hidden; z-index:1; pointer-events:none;
}
.rahul-fab-wrap .orbx--aurora .orbx__wave svg{ position:absolute; inset:0; width:108%; height:100%; display:block; left:-4%; }
.rahul-fab-wrap .orbx--aurora .orbx__wave .wave-fill{ filter:blur(.4px) saturate(1.02); opacity:.94; }
.rahul-fab-wrap .orbx--aurora .orbx__glass{
  position:absolute; inset:0; border-radius:50%;
  background:radial-gradient(72% 52% at 34% 26%, rgba(255,255,255,.72) 0%, transparent 62%), linear-gradient(180deg, rgba(255,255,255,.18), transparent 58%);
  border:none; box-shadow:inset 0 1px 0 rgba(255,255,255,.72), inset 0 -8px 14px rgba(120,90,180,.06);
  backdrop-filter:blur(4px); -webkit-backdrop-filter:blur(4px); pointer-events:none; z-index:2;
}
.rahul-fab-wrap .orbx__aurora{ will-change:transform; transform:rotate(0deg); }
@media(prefers-reduced-motion:reduce){ .rahul-fab-wrap .orbx__aurora{ will-change:auto; } }

.rahul-fab-wrap .orb-tip{
  position:absolute; bottom:68px; left:50%; transform:translateX(-50%) translateY(6px);
  display:inline-flex; align-items:center; gap:6px;
  background:var(--surface-solid); color:var(--text);
  border:1.5px solid var(--border); border-radius:999px;
  padding:8px 14px; font-size:.8125rem; font-weight:500; line-height:1; white-space:nowrap;
  box-shadow:0 8px 20px rgba(10,10,10,.12), 0 2px 8px rgba(10,10,10,.08);
  opacity:0; pointer-events:none; z-index:5;
  transition:opacity .22s cubic-bezier(.16,1,.3,1), transform .22s cubic-bezier(.16,1,.3,1);
}
.rahul-fab-wrap .orb-tip.is-visible{ opacity:1; transform:translateX(-50%) translateY(0); pointer-events:auto; }
.rahul-fab-wrap .orb-tip::after{
  content:""; position:absolute; left:50%; bottom:-6px; transform:translateX(-50%) rotate(45deg);
  width:10px; height:10px; background:var(--surface-solid); border-right:1.5px solid var(--border); border-bottom:1.5px solid var(--border);
}
.rahul-fab-wrap .orb-tip__hand{ display:inline-block; transform-origin:70% 70%; }
.rahul-fab-wrap .orb-tip.is-visible .orb-tip__hand{ animation:handWave 1.1s ease-in-out infinite; }
@keyframes handWave{
  0%{ transform:rotate(0deg) }
  15%{ transform:rotate(14deg) }
  30%{ transform:rotate(-8deg) }
  45%{ transform:rotate(14deg) }
  60%{ transform:rotate(-4deg) }
  75%{ transform:rotate(10deg) }
  100%{ transform:rotate(0deg) }
}
[data-theme="dark"] .rahul-fab-wrap .orb-tip{ box-shadow:0 8px 20px rgba(0,0,0,.32), 0 2px 8px rgba(0,0,0,.22); }
@media(min-width:641px){
  .rahul-fab-wrap .orb-tip{ bottom:auto; top:50%; left:auto; right:68px; transform:translateY(-50%) translateX(6px); }
  .rahul-fab-wrap .orb-tip.is-visible{ transform:translateY(-50%) translateX(0); }
  .rahul-fab-wrap .orb-tip::after{ left:auto; right:-6px; bottom:auto; top:50%; transform:translateY(-50%) rotate(45deg); }
}
@media(prefers-reduced-motion:reduce){
  .rahul-fab-wrap .orb-tip, .rahul-fab-wrap .orb-tip__hand{ animation:none !important; transition:none; }
}
.cfb__face { position: relative; }
.cfb__icon { position: relative; z-index: 1; }

.cfb-slot--fab:not(.cfb-slot--flat) {
  --cfb-glow-drop: 10px;
  box-shadow:
    0 4px 0    2.5px  var(--cfb-edge-lo),
    0 5px 0.2px 2.5px var(--cfb-edge-deep),
    0 34px 28px       rgba(var(--cfb-ambient), 0.28),
    0 12px 11px       rgba(var(--cfb-ambient), 0.70);
}
.cfb-slot--fab:not(.cfb-slot--flat):hover {
  box-shadow:
    0 4px 0    2.5px  var(--cfb-edge-lo),
    0 5px 0.2px 2.5px var(--cfb-edge-deep),
    0 38px 30px       rgba(var(--cfb-ambient), 0.32),
    0 13px 12px       rgba(var(--cfb-ambient), 0.72);
}
.cfb-slot--fab.cfb-slot--flat {
  --flat-amb-y:     4px;
  --flat-amb-blur:  8px;
  --flat-amb-alpha: 0.12;
}
.cfb-slot--fab.cfb-slot--flat:hover {
  --flat-amb-y:     0.5px;
  --flat-amb-blur:  2px;
  --flat-amb-alpha: 0.03;
}
.cfb-slot--fab.cfb-slot--flat:has(.cfb:active) {
  --flat-amb-y:     0.25px;
  --flat-amb-blur:  1.5px;
  --flat-amb-alpha: 0.025;
}

@media (prefers-reduced-motion: reduce) {
  .cfb-slot, .cfb-glow, .cfb__face, .cfb { transition: none; }
  .cfb-slot:has(.cfb:active) { transform: none; }
  .cfb-slot:not(.cfb-slot--flat):hover .cfb__face::after,
  .cfb-slot:not(.cfb-slot--flat):hover .cfb__label::after {
    animation: none;
    background-position: 50% 0;
  }
  .btn:hover::after {
    animation: none;
    background-position: 50% 0;
  }
}

/* Match the existing Aurora control while keeping the notebook page independent. */
.notebook-header{display:grid;grid-template-columns:1fr 44px;column-gap:20px;align-items:center;position:relative}.notebook-header .site-name{grid-column:1;align-self:end;justify-self:start}.notebook-header nav{grid-column:1;align-self:start}.header-avatar{grid-column:2;grid-row:1/3;position:relative;display:block;width:44px;height:44px;border-radius:50%}.header-avatar img{width:44px;height:44px;object-fit:cover;border-radius:50%;border:1px solid var(--line)}.online-indicator{position:absolute;width:11px;height:11px;border-radius:50%;right:0;bottom:1px;background:#6bb777;border:2px solid var(--paper);box-shadow:0 0 0 1px #7ca38220}.rahul-fab-wrap{position:fixed;right:24px;bottom:24px;z-index:85;--surface-solid:var(--paper);--text:var(--ink);--border:var(--line)}.rahul-fab-wrap .orbx{position:relative;display:grid;place-items:center;width:58px;height:58px;animation:none;border-radius:50%;padding:0}.rahul-fab-wrap .orbx__aurora{animation:rahul-aurora-turn 32s linear infinite}.rahul-fab-wrap .orb-tip{bottom:auto;top:50%;left:auto;right:76px;transform:translateY(-50%);font-family:inherit;background:var(--paper);color:var(--ink);font-size:14px}.rahul-fab-wrap .orb-tip.is-visible{transform:translateY(-50%);pointer-events:none}.rahul-fab-wrap .orb-tip::after{left:auto;right:-6px;bottom:auto;top:50%;transform:translateY(-50%) rotate(45deg)}.rahul-fab-wrap .orb-tip__hand{animation:handWave 2.5s ease-in-out 2!important}.rahul-fab-wrap:has([aria-expanded=true]){visibility:hidden}.rahul-chat{position:fixed;inset:auto 24px 98px auto;margin:0;width:380px;max-width:calc(100vw - 32px);max-height:calc(100dvh - 130px);padding:0;border:1px solid var(--line);border-radius:16px;background:var(--paper);color:var(--body-ink);font:14px/1.6 Runde,Arial,sans-serif;box-shadow:0 18px 70px #101a1025;overflow:visible}.rahul-chat::backdrop{background:#11161120;backdrop-filter:blur(2px)}.rahul-chat[open]{display:flex;flex-direction:column}.rahul-chat-head{display:flex;align-items:center;gap:12px;padding:18px;border-bottom:1px solid var(--line);flex-shrink:0}.rahul-chat-head img{width:40px;height:40px;border-radius:50%}.rahul-chat-head h2{font-size:15px;margin:0;font-weight:500}.rahul-chat-head p{font-size:14px;margin:0;color:var(--quiet)}.rahul-chat-close{margin-left:auto;border:0;border-radius:50%;width:32px;height:32px;background:var(--wash);color:var(--quiet);font-size:22px;line-height:1}.rahul-chat-log{padding:18px;overflow-y:auto;min-height:120px;max-height:280px;overscroll-behavior:contain}.rahul-message{padding:11px 13px;border-radius:10px;background:var(--wash);font-size:14px;line-height:1.65;margin:0 0 12px;max-width:95%;overflow-wrap:anywhere}.rahul-message.visitor{margin-left:auto;background:var(--ink);color:var(--paper)}.rahul-chat-prompts{display:flex;gap:6px;flex-wrap:wrap;padding:0 18px 13px;flex-shrink:0}.rahul-chat-prompts button{border:1px solid var(--line);color:var(--body-ink);background:var(--paper);border-radius:20px;padding:5px 9px;font-size:14px}.rahul-chat-prompts button:hover{background:var(--wash)}.rahul-chat-form{display:flex;gap:8px;border-top:1px solid var(--line);padding:13px 18px 6px;flex-shrink:0}.rahul-chat-form input{min-width:0;flex:1;padding:9px 11px;font-size:14px;border:1px solid var(--line);border-radius:7px;background:var(--wash);color:var(--ink);outline-offset:2px}.rahul-chat-form>button{border:0;background:var(--ink);color:var(--paper);border-radius:7px;width:36px;font-size:22px}.rahul-chat-note{margin:5px 18px 15px;font-size:14px;line-height:1.65;color:var(--quiet);flex-shrink:0}.rahul-chat-note a{text-decoration:underline;text-underline-offset:2px}.notebook-legacy .rahul-chat p{font-size:14px}.notebook-legacy .rahul-chat .rahul-chat-note,.notebook-legacy .rahul-chat-head p{font-size:14px}
@keyframes rahul-aurora-turn{to{transform:rotate(360deg)}}
@media(max-width:600px){.notebook-header{column-gap:14px}.notebook-header nav{grid-column:1/-1;margin-top:12px;gap:18px}.header-avatar{grid-row:1;grid-column:2}.notebook-header .site-name{align-self:center}.rahul-fab-wrap{right:18px;bottom:18px}.rahul-chat{right:16px;bottom:90px}.notebook-footer{padding-bottom:100px}}
@media(max-width:350px){.notebook-header nav{gap:12px}}
@media(prefers-reduced-motion:reduce){.rahul-fab-wrap .orbx__aurora,.rahul-fab-wrap .orb-tip__hand{animation:none!important}}
.rahul-chat-log{min-height:0;flex:1 1 auto}
@media(max-width:600px){.rahul-chat-form input{font-size:16px}}
/* Keep the conversation tall, with the composer anchored at the bottom. */
.rahul-chat{top:7.5vh;bottom:auto;height:85vh;max-height:85vh;top:7.5dvh;height:85dvh;max-height:85dvh;box-sizing:border-box}.rahul-chat-log{max-height:none;flex:1 1 0;min-height:0}
@media(max-width:600px){.rahul-chat{top:7.5vh;bottom:auto;top:7.5dvh}}

/* Watercolour paper on the Ask Rahul orb, matching the paper planes */
.rahul-fab-wrap .orbx--aurora .orbx__paper{position:absolute;inset:0;border-radius:50%;z-index:2;pointer-events:none;background-size:cover;mix-blend-mode:multiply}
.rahul-fab-wrap .orbx--aurora .orbx__glass{z-index:3;opacity:.6}

/* Tooltip arrow pointing right at the orb: border on its two outer edges, one shadow for bubble and arrow together */
.rahul-fab-wrap .orb-tip{box-shadow:none;filter:drop-shadow(0 6px 14px rgba(10,10,10,.1)) drop-shadow(0 1px 3px rgba(10,10,10,.07))}
[data-theme="dark"] .rahul-fab-wrap .orb-tip{box-shadow:none;filter:drop-shadow(0 6px 16px rgba(0,0,0,.35))}
.rahul-fab-wrap .orb-tip::after{right:-4.5px;width:9px;height:9px;border:0;border-top:1.5px solid var(--border);border-right:1.5px solid var(--border);border-top-right-radius:2px;transform:translateY(-50%) rotate(45deg)}

/* The orb in the header: an empty 48px ring holding a living orb; it floats at the top once you scroll */
.orb-rail{position:absolute;width:48px;padding-top:14px;z-index:85;pointer-events:none}
.orb-rail .rahul-fab-wrap{pointer-events:auto}
.rahul-fab-wrap.is-docked{position:fixed;right:auto;bottom:auto;width:48px;height:48px;border-radius:50%;border:0;display:grid;place-items:center;z-index:85;transition:background-color .25s,box-shadow .25s,border-color .25s}
.rahul-fab-wrap.is-docked.is-floating{background:color-mix(in srgb,var(--paper) 82%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:0 10px 24px -14px #25272355}
.rahul-fab-wrap.is-docked:has([aria-expanded=true]){visibility:visible}
.rahul-fab-wrap.is-docked .orbx{animation:orb-breathe 4.2s ease-in-out infinite}
.orbx__face{position:absolute;inset:0;z-index:4;pointer-events:none}
.orbx__eye{position:absolute;top:38%;width:3.6px;height:5.6px;border-radius:2px;background:#2a1f4a;opacity:.82;transform:translate(var(--lx,0px),var(--ly,0px));animation:orb-blink 4.8s infinite;transition:height .2s,top .2s}
.orbx__eye:first-child{left:32%}
.orbx__eye:nth-child(2){right:32%}
.orbx__mouth{position:absolute;left:50%;top:58%;width:8px;height:4px;margin-left:-4px;border:1.4px solid #2a1f4a;border-top:0;border-radius:0 0 8px 8px;opacity:0;transform:translate(var(--lx,0px),var(--ly,0px)) scaleY(.2);transition:opacity .2s,transform .2s}
/* hover: it smiles at you */
.rahul-fab-wrap.is-docked .orbx:hover .orbx__eye,.rahul-fab-wrap.is-docked .orbx:focus-visible .orbx__eye{height:3.4px;top:40%;border-radius:3px 3px 1px 1px}
.rahul-fab-wrap.is-docked .orbx:hover .orbx__mouth,.rahul-fab-wrap.is-docked .orbx:focus-visible .orbx__mouth{opacity:.85;transform:translate(var(--lx,0px),var(--ly,0px)) scaleY(1)}
@keyframes orb-blink{0%,92%,100%{transform:translate(var(--lx,0px),var(--ly,0px)) scaleY(1)}94%{transform:translate(var(--lx,0px),var(--ly,0px)) scaleY(.12)}}
@keyframes orb-breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.05)}}
.rahul-chat.rahul-chat--top{inset:auto;position:fixed;margin:0}
@media(prefers-reduced-motion:reduce){.rahul-fab-wrap.is-docked .orbx,.orbx__eye{animation:none}}

/* Homepage header: name on the left; Work, Experiments and the orb on the right */
.notebook-header--bar{display:flex;align-items:center;justify-content:space-between;gap:16px}
.notebook-header--bar .header-right{display:flex;align-items:center;gap:22px}
.notebook-header--bar nav{margin:0;flex-wrap:nowrap;gap:20px}
.orb-slot{width:48px;height:48px;flex-shrink:0}
@media(max-width:600px){.notebook-header--bar .header-right{gap:14px}.notebook-header--bar nav{gap:14px;margin:0;grid-column:auto}}
.notebook-header--bar .site-name,.notebook-header--bar nav,.notebook-header--bar .header-right{align-self:center;margin-top:0}
/* rich chat replies: a line of links under the answer */
.rahul-message p{margin:0}
.rahul-message-links{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:8px!important}
.rahul-message-links a{color:var(--ink);text-decoration:underline;text-decoration-color:#b4b9ae;text-underline-offset:3px;font-size:14px}
div.rahul-message{padding:11px 13px;border-radius:10px;background:var(--wash);font-size:14px;line-height:1.65;margin:0 0 12px;max-width:95%}
/* opened from the header orb: sized to its content, never taller than the window */
.rahul-chat.rahul-chat--top{height:auto;max-height:calc(100dvh - 100px)}
.rahul-chat.rahul-chat--top .rahul-chat-log{flex:0 1 auto;min-height:160px;max-height:min(360px,calc(100dvh - 330px))}
/* Work and Experiments: 14px, centred on the orb */
.notebook-header--bar nav a{font-size:14px;line-height:1}
.notebook-header--bar nav{display:flex;align-items:center;line-height:1}
/* breathing room between the header and the headline */
.notebook-header--bar{margin-bottom:56px}
@media(max-width:600px){.notebook-header--bar{margin-bottom:40px}}

/* ---------- Ask Rahul chat, v2: a calm panel in the bottom-right ---------- */
.rahul-chat.rahul-chat--v2{position:fixed;z-index:1000;inset:auto 24px 24px auto;margin:0;width:380px;max-width:calc(100vw - 32px);height:min(600px,calc(100dvh - 48px));max-height:none;padding:0;border:1px solid var(--line);border-radius:22px;background:var(--paper);color:var(--body-ink);box-shadow:0 30px 80px -32px #10181045,0 10px 26px -16px #10181028;overflow:hidden;font:14px/1.6 Runde,Arial,sans-serif}
.rahul-chat.rahul-chat--v2[open]{display:flex;flex-direction:column;animation:rc-open .26s cubic-bezier(.2,.8,.2,1)}
.rahul-chat.rahul-chat--v2::backdrop{background:#11161112;backdrop-filter:none}
/* header */
.rc-head{display:flex;align-items:center;gap:12px;padding:16px 14px 14px 18px;border-bottom:1px solid var(--line);flex-shrink:0}
.rc-head h2{font-size:15px;font-weight:500;color:var(--ink);margin:0;line-height:1.3}
.rc-head p{display:flex;align-items:center;gap:6px;font-size:14px;color:var(--quiet);margin:2px 0 0}
.rc-live{width:6px;height:6px;border-radius:50%;background:#6bb777;box-shadow:0 0 0 3px #6bb77722}
.rc-close{margin-left:auto;width:32px;height:32px;border:0;border-radius:50%;background:transparent;color:var(--quiet);display:grid;place-items:center;transition:background .18s,color .18s}
.rc-close:hover{background:var(--wash);color:var(--ink)}
/* the orb's face, as a small avatar */
.rc-face{position:relative;flex-shrink:0;width:22px;height:22px;border-radius:50%;background:conic-gradient(from 24deg,#F3EFFD 0deg,#FBF9FF 70deg,#D6C9F4 130deg,#A48BE4 200deg,#8A6FD0 280deg,#C4B1EE 320deg,#F3EFFD 360deg);box-shadow:inset 0 0 0 1px #ffffff99,0 2px 6px -2px #6e55b455}
.rc-face i{position:absolute;top:38%;width:2.2px;height:3.4px;border-radius:1px;background:#2a1f4a;opacity:.8;animation:orb-blink 4.8s infinite}
.rc-face i:first-child{left:31%}.rc-face i:nth-child(2){right:31%}
.rc-face--lg{width:38px;height:38px}
.rc-face--lg i{width:3.4px;height:5.2px}
/* conversation */
.rahul-chat--v2 .rahul-chat-log{flex:1 1 auto;min-height:0;max-height:none;overflow-y:auto;padding:18px 16px 10px;display:flex;flex-direction:column;gap:10px;overscroll-behavior:contain}
.rc-row{display:flex;align-items:flex-end;gap:8px;animation:rc-in .28s cubic-bezier(.2,.8,.2,1) both}
.rc-row.visitor{justify-content:flex-end}
.rahul-chat--v2 .rahul-message{margin:0;max-width:82%;padding:10px 13px;font-size:14px;line-height:1.55;overflow-wrap:anywhere}
.rahul-chat--v2 .rahul-message.guide{background:var(--wash);color:var(--body-ink);border-radius:16px 16px 16px 5px}
.rahul-chat--v2 .rahul-message.visitor{background:var(--ink);color:var(--paper);border-radius:16px 16px 5px 16px;margin-left:auto}
.rahul-chat--v2 .rahul-message-links{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px!important}
.rahul-chat--v2 .rahul-message-links a{font-size:14px;color:var(--ink);text-decoration:none;padding:4px 10px;border-radius:999px;background:var(--paper);border:1px solid var(--line);transition:border-color .18s}
.rahul-chat--v2 .rahul-message-links a:hover{border-color:var(--quiet)}
.rc-typing{display:flex;gap:4px;align-items:center;padding:13px 14px!important}
.rc-typing i{width:5px;height:5px;border-radius:50%;background:var(--quiet);animation:rc-dot 1s infinite ease-in-out}
.rc-typing i:nth-child(2){animation-delay:.15s}.rc-typing i:nth-child(3){animation-delay:.3s}
/* suggested questions: one scrollable row */
.rahul-chat--v2 .rahul-chat-prompts{display:flex;flex-wrap:nowrap;gap:6px;overflow-x:auto;padding:8px 16px 10px;scrollbar-width:none;flex-shrink:0}
.rahul-chat--v2 .rahul-chat-prompts::-webkit-scrollbar{display:none}
.rahul-chat--v2 .rahul-chat-prompts button{flex-shrink:0;white-space:nowrap;border:1px solid var(--line);background:var(--paper);color:var(--body-ink);border-radius:999px;padding:6px 12px;font-size:14px;transition:border-color .18s,color .18s}
.rahul-chat--v2 .rahul-chat-prompts button:hover{border-color:var(--quiet);color:var(--ink)}
/* input: a rounded field with the send button inside */
.rahul-chat--v2 .rahul-chat-form{display:flex;align-items:center;gap:6px;margin:0 16px;padding:4px 4px 4px 16px;border:1px solid var(--line);border-top:1px solid var(--line);border-radius:999px;background:var(--wash);transition:border-color .18s;flex-shrink:0}
.rahul-chat--v2 .rahul-chat-form:focus-within{border-color:var(--quiet)}
.rahul-chat--v2 .rahul-chat-form input{flex:1;min-width:0;border:0;background:transparent;padding:8px 0;font-size:14px;color:var(--ink);outline:none}
.rahul-chat--v2 .rahul-chat-form>button{width:34px;height:34px;flex-shrink:0;border:0;border-radius:50%;background:var(--ink);color:var(--paper);display:grid;place-items:center;font-size:0}
.rahul-chat--v2 .rahul-chat-note{margin:8px 16px 14px;font-size:14px;color:var(--quiet);text-align:center;flex-shrink:0}
@keyframes rc-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes rc-open{from{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:none}}
@keyframes rc-dot{0%,80%,100%{transform:translateY(0);opacity:.4}40%{transform:translateY(-3px);opacity:1}}
@media(max-width:600px){.rahul-chat.rahul-chat--v2{inset:auto 8px 8px 8px;width:auto;max-width:none;height:min(560px,calc(100dvh - 16px));border-radius:18px}}
@media(prefers-reduced-motion:reduce){.rc-row,.rahul-chat.rahul-chat--v2[open],.rc-face i{animation:none}}
.rahul-chat.rahul-chat--v2.is-restored[open]{animation:none}
.rahul-chat--v2 .rc-row{animation-duration:.28s}
.rahul-chat--v2.is-restored .rc-row{animation:none}
/* Inside the chat panel use the normal system cursor; the custom dot would sit underneath it */
/* Chat docked as a full-height sidebar on the right */
.rahul-chat.rahul-chat--v2{inset:0 0 0 auto;width:400px;max-width:100vw;height:100vh;height:100dvh;border:0;border-left:1px solid var(--line);border-radius:0;box-shadow:0 0 60px -30px #10181030}
.rahul-chat.rahul-chat--v2[open]{animation:rc-dock .32s cubic-bezier(.2,.8,.2,1)}
.rahul-chat--v2 .rc-head{padding:22px 16px 18px 20px}
.rahul-chat--v2 .rahul-chat-note{margin-bottom:18px}
@keyframes rc-dock{from{transform:translateX(24px);opacity:0}to{transform:none;opacity:1}}
/* wide screens: the page moves over instead of being covered */
@media(min-width:1100px){
  html.chat-docked body{margin-right:400px}
  .rahul-chat.rahul-chat--v2{box-shadow:none}
}
@media(max-width:600px){.rahul-chat.rahul-chat--v2{inset:0;width:100%;height:100dvh;border:0;border-radius:0}}
.rahul-chat--v2 .rc-close:focus-visible{outline:none;background:var(--wash);color:var(--ink)}

/* Case-study question launcher. Keep the glass layer behind the controls. */
.case-chat-launcher{position:fixed;bottom:24px;left:50%;right:auto;transform:translateX(-50%);z-index:90;display:flex;align-items:center;gap:10px;width:min(390px,calc(100vw - 32px));min-height:56px;padding:8px 10px;border:1px solid color-mix(in srgb,var(--ink) 14%,transparent);border-radius:999px;background:color-mix(in srgb,var(--paper) 32%,transparent);-webkit-backdrop-filter:blur(20px) saturate(140%);backdrop-filter:blur(20px) saturate(140%);box-shadow:0 8px 32px -12px #10181040}

.case-chat-launcher input{appearance:none;-webkit-appearance:none;display:block;min-width:0;flex:1;height:38px;margin:0;padding:6px 0;border:0;border-radius:0;outline:none;box-shadow:none;background:transparent;color:var(--ink);font:16px/26px Runde,Arial,sans-serif}
.case-chat-launcher input::placeholder{color:var(--quiet)}
.case-chat-launcher:focus-within{border-color:var(--quiet)}
.case-chat-orb{display:grid;place-items:center;padding:0;border:0;background:transparent;border-radius:50%;flex-shrink:0}
.case-chat-launcher .rc-face--lg{width:38px;height:38px}
.case-chat-launcher .rc-face::after{content:'';position:absolute;left:50%;top:57%;width:8px;height:4px;box-sizing:border-box;transform:translateX(-50%);border:1.5px solid #2a1f4a;border-top:0;border-radius:0 0 8px 8px;opacity:.85}
.case-chat-send{display:grid;place-items:center;width:36px;height:36px;flex-shrink:0;border:0;border-radius:50%;background:var(--ink);color:var(--paper)}
html.chat-docked .case-chat-launcher{display:none}
body[data-chat-project] .notebook-footer{padding-bottom:112px}
.rahul-chat--v2 .rahul-chat-form{background:color-mix(in srgb,var(--paper) 60%,transparent);-webkit-backdrop-filter:blur(16px) saturate(130%);backdrop-filter:blur(16px) saturate(130%)}
/* Phones keep the full bar (it used to shrink to a lone circle), sitting just above the home indicator */
@media(max-width:600px){.case-chat-launcher{width:calc(100vw - 24px);min-height:52px;padding:6px 8px;bottom:calc(12px + env(safe-area-inset-bottom,0px))}}
@supports not (backdrop-filter:blur(1px)){.case-chat-launcher,.rahul-chat--v2 .rahul-chat-form{background:var(--paper)}}
/* Chat gallery: two-row bento that scrolls sideways */
.rc-row.rc-row--wide .rahul-message{max-width:100%;flex:1;min-width:0}
.rc-gallery-msg p{margin:0 0 10px}
.rc-gallery{--u:84px;display:grid;grid-auto-flow:column dense;grid-template-rows:repeat(2,var(--u));grid-auto-columns:var(--u);gap:6px;overflow-x:auto;scroll-snap-type:x proximity;scrollbar-width:none;margin:0 -13px -10px;padding:0 13px 12px;overscroll-behavior-x:contain}
.rc-gallery::-webkit-scrollbar{display:none}
.rc-tile{position:relative;display:grid;place-content:center;gap:2px;border-radius:10px;overflow:hidden;background:var(--paper);border:1px solid var(--line);text-align:center;scroll-snap-align:start;transition:transform .2s,border-color .2s}
.rc-tile:hover{border-color:var(--quiet);transform:translateY(-1px)}
.rc-tile img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.rc-tile span{font-size:12px;line-height:1.3;color:var(--ink);padding:0 6px}
.rc-tile small{font-size:11px;color:var(--quiet)}
.rc-tile--hero{grid-column:span 2;grid-row:span 2}
.rc-tile--tall{grid-row:span 2}
.rc-tile--wide{grid-column:span 2}
.rc-tile--square{grid-column:span 1}
/* Loader: purple ring + a friendly line, floating under the header; never covers the page */
.rs-loader{position:fixed;left:50%;top:76px;z-index:95;display:flex;align-items:center;gap:10px;padding:8px 16px 8px 10px;border-radius:999px;background:color-mix(in srgb,var(--paper) 86%,transparent);border:1px solid color-mix(in srgb,var(--ink) 10%,transparent);-webkit-backdrop-filter:blur(16px) saturate(140%);backdrop-filter:blur(16px) saturate(140%);box-shadow:0 10px 30px -14px #2a1f4a40;font-size:14px;line-height:1.4;color:var(--body-ink);opacity:0;transform:translate(-50%,-6px);transition:opacity .35s ease,transform .35s ease;pointer-events:none}
.rs-loader.is-on{opacity:1;transform:translate(-50%,0)}
.rs-loader__ring{width:18px;height:18px;flex-shrink:0;border-radius:50%;border:2.5px solid #D6C9F4;border-top-color:var(--plane);animation:rs-spin .9s linear infinite}
:root[data-theme=dark] .rs-loader__ring{border-color:#3b3260;border-top-color:#B29BE8}
@keyframes rs-spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion: reduce){.rs-loader__ring{animation:rs-pulse 1.6s ease-in-out infinite;border-top-color:#D6C9F4;background:var(--plane)}.rs-loader{transition:opacity .2s}}
@keyframes rs-pulse{50%{opacity:.45}}
@supports not (backdrop-filter:blur(1px)){.rs-loader{background:var(--paper)}}
@media (max-width:600px){.rs-loader{top:64px;max-width:calc(100vw - 32px)}}

/* iOS Safari ignores a rounded overflow:hidden for animated or blurred children, so the aurora, wave and shine
   poked out as flat sides; a circular clip on each layer keeps the orb round */
.rahul-fab-wrap .orbx--aurora :is(.orbx__aurora,.orbx__wave,.orbx__paper,.orbx__glass){clip-path:circle(50% at 50% 50%);-webkit-clip-path:circle(50% at 50% 50%)}
.rahul-fab-wrap .orbx--aurora .orbx__wave svg{width:100%!important;left:0!important}
/* Light mode: a faint lavender rim, so the orb keeps its round edge on a white page */
:root:not([data-theme=dark]) .rahul-fab-wrap .orbx--aurora{border-color:rgba(116,87,200,.22);box-shadow:0 10px 22px rgba(110,85,180,.16),0 0 0 1px rgba(255,255,255,.7) inset}
:root:not([data-theme=dark]) .rc-face{box-shadow:inset 0 0 0 1px rgba(116,87,200,.25),0 2px 6px -2px #6e55b455}
/* Touch devices: drop the effects that are costly to scroll past (a spinning blurred swirl, frosted glass,
   blur-in reveals). Everything looks the same at rest; it just stops working the phone's GPU so hard. */
@media (pointer:coarse){
  .rahul-fab-wrap .orbx--aurora .orbx__aurora,.rahul-fab-wrap .orbx--aurora .orbx__wave .wave-fill{animation:none!important;filter:none!important}
  .rahul-fab-wrap.is-docked.is-floating{-webkit-backdrop-filter:none;backdrop-filter:none;background:var(--paper)}
  .case-chat-launcher{-webkit-backdrop-filter:none;backdrop-filter:none;background:var(--paper)}
  .rs-loader{-webkit-backdrop-filter:none;backdrop-filter:none;background:var(--paper)}
  .rahul-chat--v2 .rahul-chat-form{-webkit-backdrop-filter:none;backdrop-filter:none;background:var(--paper)}
}

/* ---------- ⌘K command palette ---------- */
.cmdk kbd,.tool-keys kbd{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 5px;border-radius:6px;border:1px solid var(--line);border-bottom-width:1.5px;background:color-mix(in srgb,var(--ink) 3%,var(--paper));color:var(--quiet);font:500 11px/1 Runde,Arial,sans-serif}
.cmdk{width:min(540px,calc(100vw - 32px));max-height:min(500px,calc(100dvh - 140px));margin:12vh auto auto;padding:0;border:1px solid var(--line);border-radius:16px;background:var(--paper);color:var(--ink);box-shadow:0 30px 70px -24px #1c123f66,0 2px 8px -4px #1c123f22;overflow:hidden}
.cmdk[open]{display:flex;flex-direction:column}
.cmdk::backdrop{background:color-mix(in srgb,#18161e 22%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.cmdk-head{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--line);color:var(--quiet)}
.cmdk-head input{flex:1;min-width:0;border:0;outline:0;padding:0;background:transparent;color:var(--ink);font:16px/1.4 Runde,Arial,sans-serif}
.cmdk-head input::placeholder{color:var(--quiet)}
.cmdk-list{flex:1;margin:0;padding:6px 8px 8px;list-style:none;overflow-y:auto;overscroll-behavior:contain}
.cmdk-group{padding:12px 10px 6px;font-size:12px;color:var(--quiet)}
.cmdk-item{display:flex;align-items:center;gap:12px;padding:9px 10px;border-radius:10px;font-size:14px;color:var(--ink);cursor:pointer}
.cmdk-item svg{flex:none;color:var(--quiet)}
.cmdk-item .cmdk-t{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cmdk-item small{margin-left:auto;padding-left:12px;flex:none;font-size:12px;color:var(--quiet);white-space:nowrap}
.cmdk-item[aria-selected=true]{background:var(--wash)}
.cmdk-item[aria-selected=true] svg,.cmdk-item.is-done small{color:var(--plane)}
.cmdk-foot{display:flex;align-items:center;gap:16px;padding:9px 14px;border-top:1px solid var(--line);background:color-mix(in srgb,var(--wash) 55%,var(--paper));font-size:12px;color:var(--quiet)}
.cmdk-foot kbd{margin-right:4px;padding:3px 5px}
.cmdk-end{margin-left:auto}
@media(max-width:600px){
  .tool-keys,.cmdk-head kbd,.cmdk-foot{display:none}
  /* the keyboard covers the lower half, so the panel sits at the top and rows tighten: 5 to 6 fit above it */
  .cmdk{margin-top:calc(env(safe-area-inset-top) + 10px);width:calc(100vw - 24px);max-height:calc(100dvh - 20px)}
  .cmdk-head{padding:12px 14px}
  .cmdk-group{padding:8px 10px 4px}
  .cmdk-item{padding:8px 10px}
}
/* Phones: the search pill joins the header, so the bar tightens; the narrowest phones drop the
   Experiments link (still one tap away in the palette) to keep the name on one line */
.notebook-header--bar .site-name{white-space:nowrap}
@media(max-width:600px){
  .notebook-header--bar .header-right{gap:10px}
  .notebook-header--bar nav{gap:12px}
}

/* ---------- Liquid glass: one style for every floating pill ----------
   A thin paper tint, a light blur that bends what's behind it (the refraction filter is Chrome-only;
   other browsers keep the plain blur), a bright top edge and a soft drop shadow. */
.liquid-glass,.rahul-fab-wrap.is-docked.is-floating{
  --glass-blur:2px;
  background:color-mix(in srgb,var(--paper) 55%,transparent);
  -webkit-backdrop-filter:blur(var(--glass-blur)) saturate(1.8);
  backdrop-filter:blur(var(--glass-blur)) saturate(1.8);
  backdrop-filter:blur(var(--glass-blur)) saturate(1.8) url(#glass-refraction);
  border-color:color-mix(in srgb,var(--ink) 7%,transparent);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.35),inset 0 -1px 0 rgba(255,255,255,.14),0 10px 28px -12px rgba(28,18,63,.35);
}
/* over long-form text a 2px blur leaves the words behind too sharp, so the Ask bar and orb ring frost a little more */
.case-chat-launcher.liquid-glass,.rahul-fab-wrap.is-docked.is-floating{--glass-blur:12px}
[data-theme=dark] .liquid-glass,[data-theme=dark] .rahul-fab-wrap.is-docked.is-floating{box-shadow:inset 0 1px 0 rgba(255,255,255,.12),inset 0 -1px 0 rgba(255,255,255,.05),0 10px 28px -12px rgba(0,0,0,.6)}
/* touch screens: no live blur (it made scrolling stutter); the same edges and shadow on solid paper */
@media (pointer:coarse){
  .liquid-glass,.rahul-fab-wrap.is-docked.is-floating{-webkit-backdrop-filter:none;backdrop-filter:none;background:var(--paper)}
}

/* ---------- Tool pill: search | theme, beside the orb (same 48px height) ---------- */
.tool-pill{display:inline-flex;align-items:center;height:48px;padding:0 6px;border:1px solid var(--line);border-radius:999px;background:var(--paper);box-shadow:0 1px 2px rgba(28,18,63,.04)}
.tool-pill button{display:inline-flex;align-items:center;justify-content:center;height:36px;border:0;border-radius:999px;background:transparent;color:var(--quiet);cursor:pointer;transition:color .18s,background-color .18s}
.tool-pill button:hover{color:var(--ink);background:color-mix(in srgb,var(--ink) 4%,transparent)}
.tool-pill button:focus-visible{outline:2px solid var(--plane);outline-offset:2px}
.tool-pill .cmdk-trigger{gap:10px;padding:0 10px 0 12px}
.tool-keys{display:inline-flex;gap:3px}
.tool-sep{width:1px;height:20px;margin:0 4px;background:var(--line)}
.tool-pill .tool-theme{width:36px}
@media(max-width:600px){
  .tool-pill{height:48px;padding:0 4px}
  .tool-pill .cmdk-trigger{width:38px;padding:0}
  .tool-keys{display:none}
  .tool-pill .tool-theme{width:38px}
}
/* iPhone/iPad: Safari slices the orb's round edge flat when a live blur, rounded clipping and a
   scale animation meet. On touch screens the orb holds still and the shine is a plain highlight. */
@media (pointer:coarse){
  .rahul-fab-wrap.is-docked .orbx{animation:none}
  /* one picture with its own circular clip instead of four separately clipped layers, which iOS
     clipped unevenly (flat cuts on the sides); the face stays live on top */
  .rahul-fab-wrap .orbx--aurora{background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Cdefs%3E%3CclipPath id='c'%3E%3Ccircle cx='50' cy='50' r='50'/%3E%3C/clipPath%3E%3Cfilter id='b' x='-50%25' y='-50%25' width='200%25' height='200%25'%3E%3CfeGaussianBlur stdDeviation='11'/%3E%3C/filter%3E%3Cfilter id='s' x='-10%25' y='-10%25' width='120%25' height='120%25'%3E%3CfeGaussianBlur stdDeviation='.9'/%3E%3C/filter%3E%3ClinearGradient id='w' x1='0' x2='1' y1='0' y2='.35'%3E%3Cstop offset='0' stop-color='%23E3D9F8'/%3E%3Cstop offset='.45' stop-color='%23B6A0EA'/%3E%3Cstop offset='1' stop-color='%238A6FD0'/%3E%3C/linearGradient%3E%3CradialGradient id='h' cx='34%25' cy='26%25' r='55%25'%3E%3Cstop offset='0' stop-color='%23fff' stop-opacity='.75'/%3E%3Cstop offset='1' stop-color='%23fff' stop-opacity='0'/%3E%3C/radialGradient%3E%3C/defs%3E%3Cg clip-path='url(%23c)'%3E%3Crect width='100' height='100' fill='%23F6F3FE'/%3E%3Cg filter='url(%23b)'%3E%3Cg%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 50 50' to='360 50 50' dur='32s' repeatCount='indefinite'/%3E%3Ccircle cx='63' cy='78' r='22' fill='%23D6C9F4'/%3E%3Ccircle cx='30' cy='72' r='24' fill='%23A48BE4'/%3E%3Ccircle cx='25' cy='34' r='22' fill='%238A6FD0'/%3E%3Ccircle cx='43' cy='20' r='18' fill='%23C4B1EE'/%3E%3C/g%3E%3C/g%3E%3Cg filter='url(%23s)'%3E%3Cg%3E%3CanimateTransform attributeName='transform' type='translate' values='0 0;-3 1.2;0 0;3 -1;0 0' dur='9s' repeatCount='indefinite'/%3E%3Cpath d='M-8 62 Q14 44 34 56 T72 52 T110 60 L110 110 L-8 110Z' fill='url(%23w)' fill-opacity='.9'/%3E%3Cpath d='M-8 62 Q14 44 34 56 T72 52 T110 60' fill='none' stroke='%23fff' stroke-opacity='.55' stroke-width='1.1'/%3E%3C/g%3E%3C/g%3E%3Crect width='100' height='100' fill='url(%23h)'/%3E%3C/g%3E%3C/svg%3E") center / 100% 100% no-repeat}
  .rahul-fab-wrap .orbx--aurora :is(.orbx__aurora,.orbx__wave,.orbx__paper,.orbx__glass){display:none}
}
/* Pill and orb share one height: 40px (the orb size is set in portfolio-personality.js) */
.tool-pill{height:40px;padding:0 4px}
.tool-pill button{height:32px}
.tool-pill .tool-theme{width:32px}
.tool-pill .cmdk-trigger{padding:0 9px 0 11px}
@media(max-width:600px){.tool-pill{height:40px}.tool-pill .cmdk-trigger{width:34px;padding:0}.tool-pill .tool-theme{width:34px}}
/* Ask bar: a purple edge and soft ring while typing */
.case-chat-launcher.liquid-glass:focus-within{border-color:var(--plane);box-shadow:inset 0 1px 0 rgba(255,255,255,.35),0 0 0 3px color-mix(in srgb,var(--plane) 18%,transparent),0 10px 28px -12px rgba(28,18,63,.35)}
/* ⌘K palette: eases in (fade, a small rise and grow) over a fading backdrop, and fades out on close */
@keyframes cmdk-in{from{opacity:0;transform:translateY(-10px) scale(.97)}to{opacity:1;transform:none}}
@keyframes cmdk-out{to{opacity:0;transform:translateY(-6px) scale(.98)}}
@keyframes cmdk-fade{from{opacity:0}to{opacity:1}}
@keyframes cmdk-unfade{from{opacity:1}to{opacity:0}}
.cmdk[open]{transform-origin:50% 0;animation:cmdk-in .26s cubic-bezier(.16,1,.3,1)}
.cmdk[open]::backdrop{animation:cmdk-fade .26s ease}
.cmdk.is-closing{animation:cmdk-out .16s ease-in forwards}
.cmdk.is-closing::backdrop{animation:cmdk-unfade .16s ease-in forwards}
@media (prefers-reduced-motion:reduce){.cmdk[open],.cmdk[open]::backdrop,.cmdk.is-closing,.cmdk.is-closing::backdrop{animation:none}}
/* the wave's top edge: a soft white glow, not a crisp line */
.rahul-fab-wrap .orbx--aurora .orbx__wave .wave-edge{filter:blur(1.1px)}
/* One orb everywhere: once the script has built the orb picture, the header orb (desktop and touch) and every
   small orb face use it instead of the stacked layers / plain conic gradient */
html.orb-img .rahul-fab-wrap .orbx--aurora{background-color:transparent;background-position:center;background-size:100% 100%;background-repeat:no-repeat}
html.orb-img .rahul-fab-wrap .orbx--aurora :is(.orbx__aurora,.orbx__wave,.orbx__paper,.orbx__glass){display:none}
html.orb-img .rc-face{background:var(--orb-img) center/100% 100% no-repeat}
/* Hello intro (first homepage visit per session). A paper cover hides the page from the very first paint;
   it lifts by itself after 4s if anything goes wrong. */
html.orb-hello::before{content:'';position:fixed;inset:0;z-index:300;background:var(--paper);animation:hello-failsafe 0s 4s forwards}
@keyframes hello-failsafe{to{visibility:hidden}}
.orb-intro{position:fixed;inset:0;z-index:301;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px;background:var(--paper);transition:background-color .6s ease}
.orb-intro.is-leaving{background-color:transparent;pointer-events:none}
.orb-intro__orb{position:relative;width:96px;height:96px;border-radius:50%;background:var(--orb-img,radial-gradient(circle at 40% 30%,#FBF9FF,#D6C9F4 55%,#A48BE4)) center/100% 100% no-repeat;box-shadow:0 0 0 1px rgba(116,87,200,.2),0 22px 44px -18px #6e55b480;animation:hello-pop .55s cubic-bezier(.2,1.5,.4,1) both}
.orb-intro__orb i{position:absolute;top:38%;width:9px;height:14px;border-radius:5px;background:#2a1f4a;opacity:.85;animation:hello-look 1.3s ease .55s both,hello-blink .3s ease .5s}
.orb-intro__orb i:first-child{left:31%}
.orb-intro__orb i:nth-child(2){right:31%}
.orb-intro__orb b{position:absolute;left:50%;top:60%;width:20px;height:10px;margin-left:-10px;border:3px solid #2a1f4a;border-top:0;border-radius:0 0 20px 20px;opacity:0;transform:scaleY(.2);animation:hello-smile .35s ease 1.35s forwards}
.orb-intro__hi{margin:0;font-size:18px;line-height:1.4;color:var(--ink);opacity:0;transform:translateY(6px);animation:hello-hi .45s ease 1.1s forwards}
.orb-intro.is-leaving .orb-intro__hi{animation:none;opacity:0;transition:opacity .2s ease}
@keyframes hello-pop{from{opacity:0;transform:scale(.55)}}
@keyframes hello-blink{50%{transform:scaleY(.12)}}
@keyframes hello-look{0%,100%{translate:0 0}30%{translate:-6px 0}65%{translate:6px 0}}
@keyframes hello-smile{to{opacity:.9;transform:scaleY(1)}}
@keyframes hello-hi{to{opacity:1;transform:none}}
/* search: the Ask Rahul rows use the chat's orb face instead of a line icon */
.cmdk-item .cmdk-orb{width:18px;height:18px;margin:-1px}
.cmdk-item .cmdk-orb i{width:1.8px;height:2.8px}
