/*
 * James, Artisa's AI assistant: the chat window.
 * Used inside the client account and, when switched on, on the website.
 * Everything is scoped under .aj- so it never collides with the theme.
 */

.aj-root {
	--aj-ink: #241F26;
	--aj-text: #4A434C;
	--aj-muted: #6B6472;
	--aj-gold: #856834;
	--aj-gold-deep: #6E5427;
	--aj-gold-wash: #F3EAD7;
	--aj-panel: #FBF6EC;
	--aj-line: #ECE5D4;
	--aj-plum: #2A2430;
	--aj-serif: 'Cormorant Garamond', Georgia, 'Times New Roman', serif;
	--aj-sans: Jost, 'Helvetica Neue', Helvetica, Arial, sans-serif;
	--aj-ease: cubic-bezier(.22, .61, .36, 1);
	--aj-bottom: 22px;
	font-family: var(--aj-sans);
	color: var(--aj-text);
	-webkit-font-smoothing: antialiased;
}

.aj-root *, .aj-root *::before, .aj-root *::after { box-sizing: border-box; }

.aj-root.aj-portal { --aj-bottom: 28px; }

@media (max-width: 960px) {
	.aj-root.aj-portal { --aj-bottom: 88px; }
}

/* Launcher */
.aj-launch {
	position: fixed; right: 20px; bottom: var(--aj-bottom); z-index: 9990;
	display: inline-flex; align-items: center; gap: 10px;
	height: 52px; padding: 0 20px 0 8px; border-radius: 999px; border: 1px solid rgba(201, 175, 126, .5);
	background: #fff; color: var(--aj-ink); cursor: pointer;
	box-shadow: 0 10px 30px rgba(36, 31, 38, .14);
	font: 500 14.5px/1 var(--aj-sans); letter-spacing: .01em;
	transition: transform 220ms var(--aj-ease), box-shadow 220ms var(--aj-ease);
}
.aj-launch:hover { transform: translateY(-2px); box-shadow: 0 16px 40px rgba(36, 31, 38, .18); }
.aj-launch:focus-visible { outline: 2px solid var(--aj-gold); outline-offset: 3px; }
.aj-launch[hidden] { display: none; }

.aj-avatar {
	width: 36px; height: 36px; border-radius: 50%; flex: none; display: grid; place-items: center;
	background: radial-gradient(circle at 30% 30%, #4A3B33, var(--aj-plum)); color: #F2E3BF;
	font: 500 19px/1 var(--aj-serif);
}

/* Nudge */
.aj-nudge {
	position: fixed; right: 20px; bottom: calc(var(--aj-bottom) + 64px); z-index: 9990;
	max-width: 300px; padding: 14px 40px 14px 16px; border-radius: 18px 18px 6px 18px;
	background: #fff; border: 1px solid var(--aj-line); box-shadow: 0 12px 34px rgba(36, 31, 38, .14);
	font-size: 14px; line-height: 1.5; color: var(--aj-text);
	animation: aj-rise 420ms var(--aj-ease) both;
}
.aj-nudge button.aj-go { display: block; margin-top: 8px; padding: 0; border: 0; background: none; color: var(--aj-gold); font: 500 14px var(--aj-sans); cursor: pointer; text-decoration: underline; text-underline-offset: 3px; }
.aj-nudge .aj-x { position: absolute; top: 8px; right: 8px; width: 28px; height: 28px; border-radius: 50%; border: 0; background: none; color: var(--aj-muted); cursor: pointer; font-size: 18px; line-height: 1; }

/* Panel */
.aj-panel {
	position: fixed; right: 20px; bottom: var(--aj-bottom); z-index: 9991;
	width: 400px; height: min(640px, calc(100vh - 2 * var(--aj-bottom)));
	display: flex; flex-direction: column; overflow: hidden;
	background: #fff; border-radius: 26px; border: 1px solid var(--aj-line);
	box-shadow: 0 30px 80px rgba(36, 31, 38, .22);
	animation: aj-rise 420ms var(--aj-ease) both;
}
.aj-panel[hidden] { display: none; }

@media (max-width: 640px) {
	.aj-panel { inset: 0; width: 100%; height: 100%; border-radius: 0; border: 0; }
}

@keyframes aj-rise { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } }

.aj-head { display: flex; align-items: center; gap: 12px; padding: 16px 16px 14px 18px; border-bottom: 1px solid var(--aj-line); background: linear-gradient(180deg, #FDFAF4, #fff); }
.aj-head .aj-avatar { width: 40px; height: 40px; font-size: 21px; }
.aj-head h2 { margin: 0; font: 500 21px/1.1 var(--aj-serif); color: var(--aj-ink); }
.aj-head p { margin: 2px 0 0; font-size: 12.5px; color: var(--aj-muted); }
.aj-close { margin-left: auto; width: 40px; height: 40px; border-radius: 50%; border: 0; background: var(--aj-panel); color: var(--aj-muted); cursor: pointer; font-size: 20px; line-height: 1; }
.aj-close:hover { color: var(--aj-ink); }

.aj-log { flex: 1; overflow-y: auto; padding: 18px 16px 8px; scroll-behavior: smooth; background: #fff; }

.aj-msg { display: flex; margin: 0 0 12px; animation: aj-rise 300ms var(--aj-ease) both; }
.aj-msg .aj-bubble { max-width: 86%; padding: 11px 15px; border-radius: 18px; font-size: 14.5px; line-height: 1.55; }
.aj-msg.aj-james .aj-bubble { background: var(--aj-panel); color: var(--aj-text); border-top-left-radius: 6px; }
.aj-msg.aj-me { justify-content: flex-end; }
.aj-msg.aj-me .aj-bubble { background: var(--aj-gold); color: #fff; border-top-right-radius: 6px; }
.aj-bubble p { margin: 0 0 8px; }
.aj-bubble p:last-child { margin-bottom: 0; }
.aj-bubble ul, .aj-bubble ol { margin: 4px 0 8px; padding-left: 20px; }
.aj-bubble li { margin: 2px 0; }

.aj-typing { display: inline-flex; gap: 5px; padding: 14px 16px; border-radius: 18px; border-top-left-radius: 6px; background: var(--aj-panel); }
.aj-typing span { width: 7px; height: 7px; border-radius: 50%; background: var(--aj-gold); opacity: .35; animation: aj-dot 1.4s infinite; }
.aj-typing span:nth-child(2) { animation-delay: .2s; }
.aj-typing span:nth-child(3) { animation-delay: .4s; }
@keyframes aj-dot { 0%, 80%, 100% { opacity: .25; transform: none; } 40% { opacity: .9; transform: translateY(-2px); } }

/* Action cards */
.aj-card { margin: -2px 0 14px; padding: 14px 16px; border-radius: 16px; border: 1px solid var(--aj-line); background: #fff; box-shadow: 0 6px 18px rgba(36, 31, 38, .06); font-size: 14px; }
.aj-card h3 { margin: 0 0 4px; font: 500 18px/1.2 var(--aj-serif); color: var(--aj-ink); }
.aj-card .aj-fee { font: 500 26px/1 var(--aj-serif); color: var(--aj-ink); margin: 8px 0 6px; font-variant-numeric: lining-nums; }
.aj-card p { margin: 4px 0; }
.aj-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }

.aj-btn {
	display: inline-flex; align-items: center; justify-content: center; min-height: 40px; padding: 0 16px; border-radius: 999px;
	border: 1px solid var(--aj-gold); background: transparent; color: var(--aj-gold); font: 500 13.5px var(--aj-sans);
	text-decoration: none; cursor: pointer; transition: background 200ms var(--aj-ease);
}
.aj-btn:hover { background: var(--aj-gold-wash); color: var(--aj-gold-deep); }
/* The house gold (0.1.23; 0.1.26), as on the website and the account: solid polished gold with a
   drifting sheen, a glint every 7s and dark engraved lettering. No breathing. The keyframes live in
   portal.css (and in the website styles, where James also appears).
   The drift and the glint are layers that slide with transform (::before the metal, ::after the glint),
   as the website Book Now does: they run on the graphics card and never wait for a repaint. Before,
   they moved by repainting the button background, which Chrome did not always redraw on screen. */
.aj-btn.aj-primary {
	color: #2B1F0C; text-shadow: 0 1px 0 rgba(255, 244, 214, .55);
	position: relative; isolation: isolate; overflow: hidden;
	background: #B8913F;
	border: 1px solid #7A5A22;
	box-shadow: inset 0 1px 0 rgba(255, 248, 225, .75), inset 0 -1px 0 rgba(92, 64, 20, .35), 0 3px 8px -5px rgba(74, 52, 16, .55);
	filter: brightness(1) saturate(1);
	transition: filter .6s ease, color .6s ease;
}
.aj-btn.aj-primary::before, .aj-btn.aj-primary::after {
	content: ''; display: block; position: absolute; top: 0; bottom: 0; left: 0; margin: 0; padding: 0; border: 0; border-radius: 0;
	pointer-events: none; z-index: -1;
}
.aj-btn.aj-primary::before {
	width: 260%;
	background:
		linear-gradient(180deg, rgba(255, 250, 232, .32) 0%, rgba(255, 250, 232, .08) 48%, rgba(80, 55, 15, 0) 52%, rgba(80, 55, 15, .12) 100%),
		linear-gradient(105deg, #86642A 0%, #B8913F 14%, #E8D08F 26%, #C7A256 38%, #8E6A2B 50%, #BE9849 62%, #F1DDA6 74%, #C29D50 86%, #8A672A 100%);
	transform: translateX(0); animation: apGoldSlide 14s ease-in-out infinite; will-change: transform;
}
.aj-btn.aj-primary::after {
	width: 22%;
	background: linear-gradient(90deg, rgba(255, 252, 240, 0), rgba(255, 252, 240, .65), rgba(255, 252, 240, 0));
	transform: translateX(-160%) skewX(-20deg); animation: apGoldGlint 7s ease-in-out infinite; will-change: transform;
}
.aj-btn.aj-primary:hover, .aj-btn.aj-primary:focus-visible { background: #B8913F; color: #21180A; filter: brightness(1.07) saturate(1.06); }
@media (prefers-reduced-motion: reduce) { .aj-btn.aj-primary::before, .aj-btn.aj-primary::after { animation: none; } .aj-btn.aj-primary::after { display: none; } }
.aj-btn.aj-quiet { border-color: transparent; color: var(--aj-muted); }
.aj-btn[disabled] { opacity: .55; pointer-events: none; }

/* Chips */
.aj-chips { display: flex; gap: 8px; overflow-x: auto; padding: 4px 16px 10px; scrollbar-width: none; }
.aj-chips::-webkit-scrollbar { display: none; }
.aj-chip { flex: none; padding: 8px 14px; border-radius: 999px; border: 1px solid var(--aj-line); background: var(--aj-panel); color: var(--aj-text); font: 13px var(--aj-sans); cursor: pointer; white-space: nowrap; }
.aj-chip:hover { border-color: rgba(133, 104, 52, .4); color: var(--aj-ink); }

/* Composer */
.aj-form { display: flex; align-items: flex-end; gap: 8px; padding: 10px 12px 10px 16px; border-top: 1px solid var(--aj-line); background: #fff; }
.aj-form textarea {
	flex: 1; min-height: 44px; max-height: 140px; resize: none; padding: 11px 14px; border-radius: 16px;
	border: 1px solid #DED3BC; font: 15px/1.45 var(--aj-sans); color: var(--aj-ink); background: #fff;
}
.aj-form textarea:focus { outline: none; border-color: var(--aj-gold); box-shadow: 0 0 0 3px rgba(201, 175, 126, .25); }
.aj-send { width: 44px; height: 44px; flex: none; border-radius: 50%; border: 0; background: var(--aj-gold); color: #fff; cursor: pointer; display: grid; place-items: center; }
.aj-send svg { width: 20px; height: 20px; stroke: currentColor; fill: none; }
.aj-send[disabled] { opacity: .5; }

.aj-foot { padding: 0 16px 12px; font-size: 11.5px; color: var(--aj-muted); text-align: center; background: #fff; }
@media (max-width: 640px) { .aj-foot { padding-bottom: calc(12px + env(safe-area-inset-bottom)); } }

@media (prefers-reduced-motion: reduce) {
	.aj-root *, .aj-nudge, .aj-panel { animation: none !important; transition: none !important; }
}

/* Out of the way of the account's own layers: hidden while a form sheet is
   open, and the account's messages sit above the launcher, not under it. */
body:has(.sheet) .aj-root.aj-portal .aj-launch,
body:has(.sheet) .aj-root.aj-portal .aj-nudge { display: none; }
body:has(.aj-root.aj-portal) .toast { bottom: calc(var(--aj-portal-bottom, 28px) + 64px); }
@media (max-width: 960px) {
	body:has(.aj-root.aj-portal) .toast { bottom: 152px; }
}

/* Launcher, out of the way: tucked while scrolling down; on phones a round J. */
.aj-launch.aj-tucked { transform: translateY(calc(100% + var(--aj-bottom))); opacity: 0; pointer-events: none; }
.aj-launch { transition: transform 260ms var(--aj-ease), opacity 260ms var(--aj-ease), box-shadow 220ms var(--aj-ease); }
@media (max-width: 640px) {
	.aj-root.aj-portal .aj-launch { width: 52px; padding: 0; justify-content: center; }
	.aj-root.aj-portal .aj-label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
	.aj-root.aj-portal .aj-avatar { width: 40px; height: 40px; }
}

/* 0.1.28 house style */
/* 0.1.28 (owner, 20 Oct; docs/house-style.md): James in the house style. The launcher is polished gold with the
   drifting sheen and the glint; the panel is an ivory-to-gold card with a gold band for its header; what the client
   says sits in soft gold bubbles, James in ivory; the chips are gold-rimmed pills; the send button is polished gold;
   the action cards and buttons follow the account's cards and buttons. The keyframes are repeated here because
   James also appears on the website, where portal.css is not loaded. Reduced motion: no sheen, no glint, no lifts. */
.aj-root {
	--aj-ink: #2E2A24; --aj-text: #2E2A24; --aj-muted: #6B6154;
	--aj-gold: #7A5E2E; --aj-gold-deep: #5E4722; --aj-gold-wash: #F6E9CC;
	--aj-panel: #FBF5E8; --aj-line: #C9AF7E; --aj-line-soft: rgba(166, 134, 75, .22);
	--aj-card: linear-gradient(180deg, #FFFDF8, #FBF5E8);
	--aj-soft: linear-gradient(180deg, #FFFBEF, #F6E9CC);
	--aj-polished: linear-gradient(160deg, #C9AF7E 0%, #A6864B 45%, #7A5E2E 100%);
	--aj-metal: linear-gradient(180deg, rgba(255, 250, 232, .32) 0%, rgba(255, 250, 232, .08) 48%, rgba(80, 55, 15, 0) 52%, rgba(80, 55, 15, .12) 100%),
		linear-gradient(105deg, #86642A 0%, #B8913F 14%, #E8D08F 26%, #C7A256 38%, #8E6A2B 50%, #BE9849 62%, #F1DDA6 74%, #C29D50 86%, #8A672A 100%);
	--aj-shadow: 0 2px 6px -2px rgba(74, 52, 16, .18), inset 0 1px 0 #fff;
}
@keyframes acpGoldSlide { 0%, 100% { transform: translateX(0); } 50% { transform: translateX(-61.5%); } }
@keyframes acpGoldGlint { 0%, 62% { transform: translateX(-160%) skewX(-20deg); } 88%, 100% { transform: translateX(560%) skewX(-20deg); } }

/* The polished-gold metal and glint layers, shared by the launcher, the primary button and the send button. */
.aj-send, .aj-btn.aj-primary { position: relative; }
.aj-launch, .aj-send, .aj-btn.aj-primary { isolation: isolate; overflow: hidden; } /* the launcher keeps position: fixed */
.aj-launch::before, .aj-launch::after, .aj-send::before, .aj-send::after, .aj-btn.aj-primary::before, .aj-btn.aj-primary::after,
.aj-btn:not(.aj-primary):not(.aj-quiet)::after {
	content: ""; display: block; position: absolute; top: 0; bottom: 0; left: 0; margin: 0; padding: 0; border: 0; border-radius: 0; pointer-events: none; z-index: -1;
}
.aj-launch::before, .aj-send::before, .aj-btn.aj-primary::before { width: 260%; background: var(--aj-metal); transform: translateX(0); animation: acpGoldSlide 14s ease-in-out infinite; will-change: transform; }
.aj-launch::after, .aj-send::after, .aj-btn.aj-primary::after {
	width: 22%; background: linear-gradient(90deg, rgba(255, 252, 240, 0), rgba(255, 252, 240, .65), rgba(255, 252, 240, 0));
	transform: translateX(-160%) skewX(-20deg); animation: acpGoldGlint 7s ease-in-out infinite; will-change: transform;
}
.aj-send::after { width: 30%; animation-delay: 2.5s; }
.aj-launch > *, .aj-send > *, .aj-btn.aj-primary > * { position: relative; z-index: 1; }

/* Launcher */
.aj-launch {
	border: 1px solid #7A5A22; background: #B8913F; color: #2B1F0C; text-shadow: 0 1px 0 rgba(255, 244, 214, .55);
	font-weight: 600; letter-spacing: .02em;
	box-shadow: inset 0 1px 0 rgba(255, 248, 225, .75), inset 0 -1px 0 rgba(92, 64, 20, .35), 0 8px 18px rgba(122, 94, 46, .3);
}
.aj-launch:hover { box-shadow: inset 0 1px 0 rgba(255, 248, 225, .75), inset 0 -1px 0 rgba(92, 64, 20, .35), 0 12px 24px rgba(122, 94, 46, .36); filter: brightness(1.05); }
.aj-launch:focus-visible { outline: 2px solid var(--aj-gold); outline-offset: 3px; }
.aj-avatar {
	background: linear-gradient(180deg, #FFFDF8, #F6EBD2); color: var(--aj-gold); border: 1px solid #FFFDF8; font-weight: 600;
	box-shadow: 0 3px 8px -3px rgba(40, 28, 8, .5);
}

/* Nudge: a card. */
.aj-nudge { background: var(--aj-card); border: 1px solid var(--aj-line); border-radius: 14px 14px 6px 14px; box-shadow: 0 12px 34px rgba(74, 52, 16, .18), inset 0 1px 0 #fff; color: var(--aj-text); }
.aj-nudge button.aj-go { color: var(--aj-gold); font-weight: 600; }
.aj-nudge .aj-x { color: var(--aj-muted); }

/* Panel: a card with a gold band for its header. */
.aj-panel { background: var(--aj-card); border: 1px solid var(--aj-line); border-radius: 14px; box-shadow: 0 30px 80px rgba(74, 52, 16, .28), inset 0 1px 0 #fff; }
@media (max-width: 640px) { .aj-panel { border-radius: 0; border: 0; } }
.aj-head { border-bottom: 0; background: linear-gradient(100deg, #7A5E2E, #A6864B 60%, #C9AF7E); color: #fff; }
.aj-head .aj-avatar { width: 40px; height: 40px; }
.aj-head h2 { color: #fff; font-weight: 600; text-shadow: 0 1px 1px rgba(60, 40, 10, .35); }
.aj-head p { color: rgba(255, 255, 255, .88); }
.aj-close { background: rgba(255, 255, 255, .18); border: 1px solid rgba(255, 255, 255, .45); color: #fff; }
.aj-close:hover, .aj-close:focus-visible { background: #fff; color: var(--aj-gold); }
.aj-log { background: transparent; }

/* Bubbles: James in ivory, the client in soft gold. */
.aj-msg.aj-james .aj-bubble { background: #FBF5E8; border: 1px solid var(--aj-line-soft); color: var(--aj-text); }
.aj-msg.aj-me .aj-bubble { background: var(--aj-soft); border: 1px solid var(--aj-line); color: var(--aj-ink); }
.aj-bubble a { color: var(--aj-gold); }
.aj-typing { background: #FBF5E8; border: 1px solid var(--aj-line-soft); }
.aj-typing span { background: #A6864B; }

/* Action cards and buttons. */
.aj-card { background: var(--aj-card); border: 1px solid var(--aj-line); border-radius: 14px; box-shadow: var(--aj-shadow); color: var(--aj-text); }
.aj-card h3, .aj-card .aj-fee { color: var(--aj-gold); font-weight: 600; }
.aj-btn:not(.aj-primary):not(.aj-quiet) {
	color: #6E5529; font-weight: 600; position: relative; isolation: isolate; overflow: hidden;
	background: linear-gradient(#FFFDF8, #FFFDF8) padding-box,
		linear-gradient(105deg, #9C7A38 0%, #C9A65A 20%, #F1DDA6 32%, #B8913F 46%, #8A672A 58%, #C7A256 72%, #EED8A0 84%, #9C7A38 100%) border-box;
	border: 1px solid transparent;
	box-shadow: inset 0 1px 0 rgba(255, 255, 255, .9), inset 0 0 0 40px rgba(232, 208, 143, 0), 0 2px 6px -4px rgba(74, 52, 16, .3);
	transition: box-shadow .6s ease, color .6s ease;
}
.aj-btn:not(.aj-primary):not(.aj-quiet)::after {
	width: 22%; background: linear-gradient(90deg, rgba(214, 182, 110, 0), rgba(214, 182, 110, .45), rgba(214, 182, 110, 0));
	transform: translateX(-160%) skewX(-20deg); animation: acpGoldGlint 7s ease-in-out infinite; will-change: transform;
}
.aj-btn:not(.aj-primary):not(.aj-quiet):hover, .aj-btn:not(.aj-primary):not(.aj-quiet):focus-visible {
	color: #4A3812; background: linear-gradient(#FFFDF8, #FFFDF8) padding-box,
		linear-gradient(105deg, #9C7A38 0%, #C9A65A 20%, #F1DDA6 32%, #B8913F 46%, #8A672A 58%, #C7A256 72%, #EED8A0 84%, #9C7A38 100%) border-box;
	box-shadow: inset 0 1px 0 rgba(255, 255, 255, .9), inset 0 0 0 40px rgba(232, 208, 143, .26), 0 3px 9px -5px rgba(74, 52, 16, .4);
}
.aj-btn.aj-primary {
	color: #2B1F0C; text-shadow: 0 1px 0 rgba(255, 244, 214, .55); font-weight: 600; background: #B8913F; border: 1px solid #7A5A22;
	box-shadow: inset 0 1px 0 rgba(255, 248, 225, .75), inset 0 -1px 0 rgba(92, 64, 20, .35), 0 3px 8px -5px rgba(74, 52, 16, .55);
}
.aj-btn.aj-primary:hover, .aj-btn.aj-primary:focus-visible { background: #B8913F; color: #21180A; filter: brightness(1.07) saturate(1.06); }
.aj-btn.aj-quiet { color: var(--aj-gold); font-weight: 600; border-color: transparent; }
.aj-btn.aj-quiet:hover { background: #EFE6D4; color: var(--aj-gold-deep); }

/* Chips: gold-rimmed pills. */
.aj-chip {
	background: #FFFDF8; border: 1px solid var(--aj-line); color: var(--aj-gold); font-weight: 600;
	box-shadow: 0 2px 6px -4px rgba(74, 52, 16, .35), inset 0 1px 0 #fff;
}
.aj-chip:hover, .aj-chip:focus-visible { background: var(--aj-gold); border-color: var(--aj-gold); color: #fff; }

/* Composer: the input recipe and a polished-gold send button. */
.aj-form { border-top: 1px solid var(--aj-line-soft); background: transparent; }
.aj-form textarea { border: 1.5px solid var(--aj-line); border-radius: 10px; background: #fff; color: var(--aj-ink); box-shadow: inset 0 1px 2px rgba(74, 52, 16, .06); }
.aj-form textarea:focus { border-color: var(--aj-gold); box-shadow: 0 0 0 3px rgba(166, 134, 75, .2); }
.aj-send {
	background: #B8913F; border: 1px solid #7A5A22; color: #2B1F0C;
	box-shadow: inset 0 1px 0 rgba(255, 248, 225, .75), inset 0 -1px 0 rgba(92, 64, 20, .35), 0 3px 8px -4px rgba(74, 52, 16, .6);
}
.aj-send svg { filter: drop-shadow(0 1px 0 rgba(255, 244, 214, .5)); }
.aj-send:hover, .aj-send:focus-visible { filter: brightness(1.07) saturate(1.06); }
.aj-foot { background: transparent; color: var(--aj-muted); }

@media (prefers-reduced-motion: reduce) {
	.aj-launch::before, .aj-launch::after, .aj-send::before, .aj-send::after, .aj-btn::before, .aj-btn::after { animation: none; }
	.aj-launch::after, .aj-send::after, .aj-btn.aj-primary::after, .aj-btn:not(.aj-primary):not(.aj-quiet)::after { display: none; }
	.aj-launch:hover { transform: none; }
}

/* 0.1.31 (owner, 31 Oct: the suggestions were cut off and James was only a letter J). The suggestions wrap onto as
   many lines as they need instead of a row that scrolled sideways with its scrollbar hidden (a mouse could not reach
   the rest), and step aside once the client has asked something (james.js). On the website the theme's own button
   and form rules reached the composer: Blocksy's [type=submit] padding squeezed the send arrow to 4px, and its 170px
   form-field height stretched the message box; both are set back here. James's face is a gold robot butler with a
   monocle and a bow tie (source tools/james-bot.svg), inline as a data: image so the account's strict CSP allows it. */
.aj-avatar.aj-bot {
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'%3E%3Cdefs%3E%3ClinearGradient id='g' x1='0' y1='0' x2='0' y2='1'%3E%3Cstop offset='0' stop-color='%23F1DDA6'/%3E%3Cstop offset='.55' stop-color='%23C7A256'/%3E%3Cstop offset='1' stop-color='%238E6A2B'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cpath d='M32 13V7' stroke='%237A5E2E' stroke-width='2.2' stroke-linecap='round'/%3E%3Ccircle cx='32' cy='6' r='3.2' fill='%23EF50B1'/%3E%3Ccircle cx='31' cy='5' r='1' fill='%23FBD3EC'/%3E%3Crect x='9' y='25' width='5' height='10' rx='2.2' fill='%238E6A2B'/%3E%3Crect x='50' y='25' width='5' height='10' rx='2.2' fill='%238E6A2B'/%3E%3Crect x='12' y='13' width='40' height='34' rx='11' fill='url(%23g)' stroke='%237A5E2E' stroke-width='1.6'/%3E%3Crect x='17' y='19' width='30' height='21' rx='7' fill='%232A2430'/%3E%3Ccircle cx='25' cy='28' r='3.6' fill='%23F6E9CC'/%3E%3Ccircle cx='39' cy='28' r='3.6' fill='%23F6E9CC'/%3E%3Ccircle cx='26' cy='27' r='1.2' fill='%232A2430'/%3E%3Ccircle cx='40' cy='27' r='1.2' fill='%232A2430'/%3E%3Ccircle cx='39' cy='28' r='6.4' fill='none' stroke='%23E8D08F' stroke-width='1.8'/%3E%3Cpath d='M44.2 32.4c2.6 4 4.5 8.6 3.6 14.6' fill='none' stroke='%23E8D08F' stroke-width='1.1' stroke-linecap='round'/%3E%3Cpath d='M26 34.5q6 4.2 12 0' fill='none' stroke='%23F6E9CC' stroke-width='2' stroke-linecap='round'/%3E%3Cpath d='M20 22.5q5-2.8 10 0' fill='none' stroke='%23F6E9CC' stroke-width='1.2' stroke-linecap='round' opacity='.55'/%3E%3Cpath d='M32 52l-9-5v10zM32 52l9-5v10z' fill='%232A2430'/%3E%3Crect x='29.6' y='49.6' width='4.8' height='4.8' rx='1.4' fill='%23C7A256'/%3E%3C/svg%3E") 50% 44% / 94% no-repeat, linear-gradient(180deg, #FFFDF8, #F6EBD2);
	font-size: 0;
}
.aj-root .aj-chips { flex-wrap: wrap; overflow: visible; padding: 6px 16px 10px; }
.aj-root .aj-chips[hidden] { display: none; }
.aj-root .aj-chip { max-width: 100%; margin: 0; min-height: 0; white-space: normal; text-align: left; line-height: 1.3; }
@media (max-width: 640px) {
	.aj-root .aj-chips { gap: 6px; padding: 4px 12px 8px; }
	.aj-root .aj-chip { padding: 7px 12px; font-size: 12.5px; }
}
.aj-root .aj-send { width: 44px; height: 44px; min-height: 0; padding: 0; border-radius: 50%; font-size: 0; line-height: 0; }
.aj-root .aj-send svg { flex: none; width: 20px; height: 20px; }
.aj-root .aj-form textarea { --has-height: 44px; height: 44px; margin: 0; }

/* 0.1.32 (owner, 1 Nov: on phones James covered the page). On a phone the website's launcher is his round face only,
   as in the account; everywhere he steps aside while the visitor scrolls down (james.js), and on the booking, basket
   and checkout pages of a phone he waits out of sight until they scroll up. He can be sent away for the visit with the
   small × beside him on his first appearance or a long press; "Ask James" at the foot of the phone menu brings him back. */
@media (max-width: 640px) {
	.aj-root .aj-launch { width: 52px; padding: 0; justify-content: center; }
	.aj-root .aj-label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
	.aj-root .aj-launch .aj-avatar { width: 40px; height: 40px; }
}
.aj-root.aj-away .aj-launch, .aj-root.aj-away .aj-dismiss { display: none; }
.aj-root .aj-dismiss {
	position: fixed; right: 62px; bottom: calc(var(--aj-bottom) + 36px); z-index: 9991;
	width: 26px; height: 26px; min-height: 0; padding: 0; margin: 0; border-radius: 50%;
	border: 1px solid var(--aj-line); background: #FFFDF8; color: var(--aj-muted);
	font: 400 17px/1 var(--aj-sans); cursor: pointer; box-shadow: 0 3px 10px rgba(74, 52, 16, .18);
	transition: transform 260ms var(--aj-ease), opacity 260ms var(--aj-ease);
	animation: ajFadeIn 300ms var(--aj-ease);
}
.aj-root .aj-dismiss::before { content: ""; position: absolute; inset: -9px; } /* a finger-sized target */
.aj-root .aj-dismiss.aj-tucked { opacity: 0; transform: translateY(calc(100% + var(--aj-bottom) + 36px)); pointer-events: none; }
.aj-root .aj-dismiss:focus-visible { outline: 2px solid var(--aj-gold); outline-offset: 2px; }
.aj-root .aj-toast {
	position: fixed; left: 16px; right: 16px; bottom: calc(var(--aj-bottom) + 6px); z-index: 9991; margin: 0 auto; max-width: 360px;
	padding: 12px 16px; border-radius: 14px; border: 1px solid var(--aj-line); background: #FFFDF8; color: var(--aj-text);
	font: 400 14px/1.4 var(--aj-sans); text-align: center; box-shadow: 0 12px 34px rgba(74, 52, 16, .18);
	animation: ajFadeIn 300ms var(--aj-ease);
}
@keyframes ajFadeIn { from { opacity: 0; } to { opacity: 1; } }
.aj-menu-item > a { display: flex; align-items: center; gap: 10px; }
.aj-menu-item .aj-avatar { width: 28px; height: 28px; border-radius: 50%; flex: none; border: 1px solid rgba(201, 175, 126, .6); }

/* 0.1.40 (owner, 4 Nov: "he should just be there, standing by; you shouldn't have to notice him unless you need to").
   The launcher is a small, still ivory disc with his face, at every screen size: no polished-gold sheen or glint, no
   hover lift, a soft shadow and a faint see-through until the pointer or focus reaches him. On a desktop his name shows
   beside him only on hover or keyboard focus. No pop-ups (the account's suggestion bubble is gone, james.js), and the
   website's "Hide James for this visit" sits in his window's small print. */
.aj-root .aj-launch {
	right: 16px; width: 50px; height: 50px; padding: 0; gap: 0; justify-content: center; border-radius: 50%; overflow: visible;
	border: 1px solid rgba(201, 175, 126, .55); background: #FFFDF8; color: var(--aj-ink); text-shadow: none; filter: none; opacity: .9;
	box-shadow: 0 4px 14px rgba(74, 52, 16, .12);
	transition: transform 260ms var(--aj-ease), opacity 200ms var(--aj-ease), box-shadow 200ms var(--aj-ease);
}
.aj-root .aj-launch::before, .aj-root .aj-launch::after { display: none; animation: none; }
.aj-root .aj-launch:hover, .aj-root .aj-launch:focus-visible { transform: none; filter: none; opacity: 1; box-shadow: 0 6px 18px rgba(74, 52, 16, .18); }
.aj-root .aj-launch.aj-tucked { opacity: 0; transform: translateY(calc(100% + var(--aj-bottom))); }
.aj-root .aj-launch .aj-avatar { width: 42px; height: 42px; border: 0; box-shadow: none; }
.aj-root .aj-label {
	position: absolute; right: calc(100% + 10px); top: 50%; transform: translateY(-50%); width: auto; height: auto; clip: auto; overflow: visible;
	padding: 7px 12px; border-radius: 999px; border: 1px solid var(--aj-line); background: #FFFDF8; color: var(--aj-text);
	font: 500 13px/1 var(--aj-sans); letter-spacing: .02em; white-space: nowrap; box-shadow: 0 4px 12px rgba(74, 52, 16, .1);
	opacity: 0; pointer-events: none; transition: opacity 160ms var(--aj-ease);
}
@media (hover: hover) and (min-width: 641px) {
	.aj-root .aj-launch:hover .aj-label, .aj-root .aj-launch:focus-visible .aj-label { opacity: 1; }
}
@media (max-width: 640px) {
	.aj-root .aj-label { position: absolute; width: 1px; height: 1px; padding: 0; border: 0; overflow: hidden; clip: rect(0 0 0 0); opacity: 0; }
	.aj-root .aj-launch, .aj-root.aj-portal .aj-launch { right: 14px; width: 48px; height: 48px; }
	.aj-root .aj-launch .aj-avatar, .aj-root.aj-portal .aj-avatar { width: 40px; height: 40px; }
}
.aj-foot .aj-hide { margin: 0; padding: 0; min-height: 0; border: 0; background: none; box-shadow: none; color: var(--aj-gold); font: inherit; text-decoration: underline; text-underline-offset: 2px; cursor: pointer; }
.aj-foot .aj-hide::before, .aj-foot .aj-hide::after { display: none; }

/* 0.1.44 (Part D): James's Confirm card for a paid cancellation with notice: credit (pre-selected) or the card. */
.aj-settle { margin: 10px 0 0; padding: 0; border: 0; display: grid; gap: 8px; }
.aj-settle legend { font-weight: 600; margin-bottom: 6px; padding: 0; }
.aj-settle-option { display: flex; gap: 10px; align-items: flex-start; padding: 10px 12px; border: 1.5px solid #C9AF7E; border-radius: 14px; background: #FFFDF8; cursor: pointer; line-height: 1.4; }
.aj-settle-option input { margin-top: 3px; accent-color: #7A5E2E; }
.aj-settle-option:has(input:checked) { border-color: #7A5E2E; background: linear-gradient(180deg, #FFFDF8, #F6EBD2); }
.aj-settle-option .aj-small { font-size: 13px; opacity: .85; }
