/* ==========================================================================
   Pagina Chat AI — Piante.it
   Layout full-width tipo ChatGPT, integrato con il tema Genesis/Piante.it.
   Attivo solo sulla pagina con template "Chat AI".
   ========================================================================== */

/* I browser danno il cursore a manina solo ai link, non ai bottoni —
   senza questa regola, nessun bottone di questa pagina (salva
   conversazione, nuova chat, voce, invia, ecc.) lo mostra al passaggio
   del mouse. Correzione sistemica, non bottone per bottone. */
.pc-shell button:not(:disabled) {
	cursor: pointer;
}

/* ---------- Shell: rimuove i wrapper Genesis superflui ---------- */
.page-template-page-chat .site-inner,
.page-template-page-chat .content-sidebar-wrap,
.page-template-page-chat .content {
	max-width: none !important;
	padding: 0 !important;
	margin: 0 !important;
	width: 100% !important;
}

.page-template-page-chat .site-inner {
	display: flex;
	flex-direction: column;
}

/* Il pulsante fluttuante del widget non serve su questa pagina: si è
   già dentro la chat, occuperebbe solo spazio inutilmente. Selettore
   ovunque appaia nel documento (il widget viene aggiunto a wp_footer,
   non dentro .pc-shell). */
.page-template-page-chat #mac-fab {
	display: none !important;
}

/* Stesso motivo per il pulsante di riapertura delle preferenze cookie
   (plugin di gestione consenso, non del tema): su una pagina già
   fissa e senza scroll, nasconde elementi utili — soprattutto da
   mobile, dove lo schermo è ridotto. */
.page-template-page-chat #pcc-reopen {
	display: none !important;
}

/* La pagina stessa non deve MAI scorrere: solo l'area messaggi dentro
   .pc-shell lo fa. Senza questo, un margine o arrotondamento
   imprevisto potrebbe comunque generare uno scroll di pagina anche
   con l'altezza della shell corretta. */
html.page-template-page-chat,
body.page-template-page-chat {
	overflow: hidden;
	height: 100%;
}

/* ---------- Shell app ---------- */
.pc-shell {
	display: flex;
	height: calc(100dvh - var(--pc-header-h, 60px));
	overflow: hidden;
	background: var(--p-off, #FAFBF8);
}

/* Barra admin di WordPress (#wpadminbar): visibile solo per chi ha
   effettuato l'accesso con permessi sufficienti — cioè esattamente
   chi testa questa pagina. WordPress la mostra fissa in alto e
   aggiunge da solo la classe "admin-bar" al body, ma NON riduce
   automaticamente l'altezza di elementi calcolati con 100dvh: senza
   questo conteggio, per un amministratore loggato la pagina risulta
   più alta del viewport esattamente dell'altezza della barra,
   causando lo scroll di pagina che non dovrebbe esserci. Altezza
   standard WordPress: 32px da desktop, 46px sotto i 783px. */
body.admin-bar .pc-shell {
	height: calc(100dvh - var(--pc-header-h, 60px) - 32px);
}
@media screen and (max-width: 782px) {
	body.admin-bar .pc-shell {
		height: calc(100dvh - var(--pc-header-h, 60px) - 46px);
	}
}

/* ---------- Sidebar storico ---------- */
.pc-sidebar {
	width: 280px;
	flex-shrink: 0;
	background: var(--p-tint, #F1F7E8);
	border-right: 1px solid var(--p-line, #E7EAE1);
	display: flex;
	flex-direction: column;
	padding: 16px 12px 20px;
	gap: 16px;
	overflow-y: auto;
	/* Senza altezza esplicita, come elemento flessibile può crescere
	   oltre lo spazio disponibile invece di attivare il proprio
	   scorrimento interno — con molte voci in cronologia/salvate, il
	   contenuto in fondo (il messaggio sui 30 giorni, il link al
	   forum) restava tagliato fuori dalla vista invece di essere
	   raggiungibile scorrendo. */
	height: 100%;
	max-height: 100%;
	transition: transform .25s ease, width .25s ease;
}

.pc-sidebar.pc-sidebar-hidden {
	width: 0;
	padding: 0;
	overflow: hidden;
	transform: translateX(-100%);
}

/* Pulsante nuova chat */
.pc-btn-new {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	width: 100%;
	padding: 11px 16px;
	background: var(--p-green-ink, #1E3312);
	color: #fff;
	font-family: var(--p-font-sans, 'Sora', sans-serif);
	font-size: 13.5px;
	font-weight: 600;
	border: none;
	border-radius: 10px;
	cursor: pointer;
	transition: background .15s;
	flex-shrink: 0;
}
.pc-btn-new:hover { background: var(--p-green-deep, #2E4A1C); }

/* Gruppi della sidebar: "Cronologia", "Salvate", "Esplora il sito" */
.pc-side-group {
	display: flex;
	flex-direction: column;
	gap: 2px;
	flex-shrink: 0;
}
.pc-side-group:has(.pc-history) {
	flex: 1;
	min-height: 60px;
	overflow: hidden;
}
.pc-eyebrow {
	font-size: 10px;
	font-weight: 700;
	letter-spacing: .1em;
	text-transform: uppercase;
	color: var(--p-text-soft, #66705E);
	padding: 4px 8px 6px;
}
.pc-side-empty {
	font-size: 12.5px;
	color: var(--p-text-soft, #66705E);
	padding: 4px 8px 8px;
	line-height: 1.5;
	margin: 0;
}

/* Voci "Esplora il sito": collegamenti semplici, icona + testo */
.pc-side-item {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 8px 10px;
	border-radius: 8px;
	font-size: 13px;
	font-weight: 500;
	color: var(--p-text, #20261B);
	text-decoration: none;
	transition: background .12s;
}
.pc-side-item:hover { background: rgba(255,255,255,.7); }
.pc-side-item svg { flex-shrink: 0; color: var(--p-green-deep, #2E4A1C); }
.pc-side-item span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* Voci della cronologia/salvate: testo + menu a tre puntini */
.pc-history,
.pc-starred {
	display: flex;
	flex-direction: column;
	gap: 2px;
	overflow-y: auto;
}
.pc-history-row {
	display: flex;
	align-items: center;
	gap: 2px;
	border-radius: 8px;
	position: relative;
}
.pc-history-row:hover,
.pc-history-row.pc-menu-open { background: rgba(255,255,255,.7); }
.pc-history-row.pc-active { background: #fff; border: 1px solid var(--p-line, #E7EAE1); }
.pc-history-row.pc-active .pc-history-item { padding: 7px 9px 7px 8px; }

.pc-history-item {
	display: flex;
	align-items: center;
	gap: 8px;
	padding: 8px 4px 8px 10px;
	font-size: 13px;
	font-weight: 500;
	color: var(--p-text, #20261B);
	background: none;
	border: none;
	cursor: pointer;
	text-align: left;
	flex: 1;
	min-width: 0;
	font-family: var(--p-font-sans, 'Sora', sans-serif);
}
.pc-history-row.pc-active .pc-history-item { font-weight: 600; }
.pc-history-item-text {
	flex: 1;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}
.pc-history-item-star {
	color: var(--p-green, #7CB829);
	flex-shrink: 0;
	font-size: 12px;
}

/* Menu a tre puntini: elimina / salva tra i preferiti */
.pc-history-menu-btn {
	width: 28px;
	height: 28px;
	flex-shrink: 0;
	margin-right: 4px;
	border-radius: 6px;
	display: flex;
	align-items: center;
	justify-content: center;
	color: var(--p-text-soft, #66705E);
	opacity: 0;
	transition: background .12s, opacity .12s;
}
.pc-history-row:hover .pc-history-menu-btn,
.pc-history-row.pc-menu-open .pc-history-menu-btn { opacity: 1; }
.pc-history-menu-btn:hover { background: rgba(0,0,0,.06); color: var(--p-text, #20261B); }

.pc-history-menu {
	position: fixed;
	z-index: 200;
	background: #fff;
	border: 1px solid var(--p-line, #E7EAE1);
	border-radius: 10px;
	box-shadow: 0 8px 24px rgba(30,51,18,.16);
	min-width: 180px;
	padding: 4px;
	display: none;
}
.pc-history-menu.pc-visible { display: block; }
.pc-history-menu button {
	display: flex;
	align-items: center;
	gap: 9px;
	width: 100%;
	padding: 9px 10px;
	border-radius: 7px;
	font-size: 13px;
	font-weight: 500;
	color: var(--p-text, #20261B);
	background: none;
	border: none;
	cursor: pointer;
	text-align: left;
	font-family: var(--p-font-sans, 'Sora', sans-serif);
}
.pc-history-menu button:hover { background: var(--p-tint, #F1F7E8); }
.pc-history-menu button.pc-menu-danger { color: #b3271f; }
.pc-history-menu button.pc-menu-danger:hover { background: #FBEAEA; }
.pc-history-menu svg { flex-shrink: 0; }


.pc-sidebar-foot {
	margin-top: auto;
	flex-shrink: 0;
	background: rgba(255,255,255,.55);
	border: 1px solid var(--p-line, #E7EAE1);
	border-radius: 10px;
	padding: 12px 14px;
	font-size: 11px;
	line-height: 1.55;
	color: var(--p-text-soft, #66705E);
}
.pc-sidebar-foot a {
	color: var(--p-green-deep, #2E4A1C);
	font-weight: 600;
	text-decoration: none;
}
.pc-sidebar-foot a:hover { text-decoration: underline; }
.pc-sidebar-foot p { margin: 0 0 6px; }

/* ---------- Colonna chat principale ---------- */
.pc-main {
	flex: 1;
	display: flex;
	flex-direction: column;
	min-width: 0;
	overflow: hidden;
	position: relative;
}

/* Intestazione chat */
.pc-head {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 12px 20px;
	background: rgba(250,251,248,.95);
	backdrop-filter: blur(8px);
	border-bottom: 1px solid var(--p-line, #E7EAE1);
	flex-shrink: 0;
	z-index: 2;
}

.pc-sidebar-toggle {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 36px;
	height: 36px;
	border-radius: 8px;
	color: var(--p-text-soft, #66705E);
	transition: background .15s, color .15s;
	flex-shrink: 0;
}
.pc-sidebar-toggle:hover { background: var(--p-tint, #F1F7E8); color: var(--p-text, #20261B); }

.pc-head-info {
	display: flex;
	align-items: center;
	gap: 10px;
	flex: 1;
	min-width: 0;
}

.pc-head-avatar {
	width: 36px;
	height: 36px;
	border-radius: 50%;
	flex-shrink: 0;
	object-fit: cover;
}
.pc-head-avatar-icon {
	background: var(--p-soft, #DFEEC9);
	border: 1px solid var(--p-line, #E7EAE1);
	display: flex;
	align-items: center;
	justify-content: center;
}

.pc-head-name {
	font-size: 14.5px;
	font-weight: 700;
	display: flex;
	align-items: center;
	gap: 7px;
	color: var(--p-text, #20261B);
}

.pc-badge-ai {
	font-size: 9px;
	font-weight: 700;
	letter-spacing: .08em;
	color: var(--p-green-deep, #2E4A1C);
	border: 1px solid var(--p-green, #7CB829);
	border-radius: 4px;
	padding: 2px 5px;
}

.pc-head-status {
	font-size: 11.5px;
	color: var(--p-text-soft, #66705E);
	display: flex;
	align-items: center;
	gap: 5px;
	margin-top: 1px;
}
.pc-dot {
	width: 7px;
	height: 7px;
	border-radius: 50%;
	background: #3E9B4F;
	flex-shrink: 0;
}

.pc-head-actions {
	display: flex;
	align-items: center;
	gap: 4px;
}

.pc-icon-btn {
	width: 36px;
	height: 36px;
	border-radius: 8px;
	display: flex;
	align-items: center;
	justify-content: center;
	color: var(--p-text-soft, #66705E);
	transition: background .15s, color .15s;
}
.pc-icon-btn:hover { background: var(--p-tint, #F1F7E8); color: var(--p-text, #20261B); }

/* Salva conversazione: icona + testo, non solo un'icona — richiesto
   esplicitamente al posto della sola stellina. */
.pc-btn-star {
	display: flex;
	align-items: center;
	gap: 7px;
	padding: 8px 14px;
	border-radius: 9px;
	font-size: 13px;
	font-weight: 600;
	color: var(--p-text-soft, #66705E);
	background: none;
	border: 1px solid var(--p-line, #E7EAE1);
	cursor: pointer;
	transition: background .15s, color .15s, border-color .15s;
	white-space: nowrap;
	font-family: var(--p-font-sans, 'Sora', sans-serif);
}
.pc-btn-star:hover { background: var(--p-tint, #F1F7E8); color: var(--p-text, #20261B); }
.pc-btn-star.pc-starred {
	color: #fff;
	border-color: var(--p-green-deep, #2E4A1C);
	background: var(--p-green-deep, #2E4A1C);
}
.pc-btn-star.pc-starred:hover {
	background: var(--p-green-ink, #1E3312);
	border-color: var(--p-green-ink, #1E3312);
	color: #fff;
}
.pc-btn-star.pc-starred svg { fill: currentColor; }
.pc-btn-voice.pc-voice-active { color: #e53935; animation: pc-pulse 1.2s ease-in-out infinite; }

@media (max-width: 560px) {
	.pc-btn-star span { display: none; }
	.pc-btn-star { padding: 8px; }
}

@keyframes pc-pulse {
	0%, 100% { opacity: 1; }
	50% { opacity: .5; }
}

/* ---------- Messaggi ---------- */
.pc-messages {
	flex: 1;
	overflow-y: auto;
	padding: 24px 20px 8px;
	scroll-behavior: smooth;
}
.pc-messages::-webkit-scrollbar { width: 8px; }
.pc-messages::-webkit-scrollbar-thumb {
	background: var(--p-soft, #DFEEC9);
	border-radius: 6px;
	border: 2px solid var(--p-off, #FAFBF8);
}

.pc-messages-inner {
	max-width: 740px;
	margin: 0 auto;
	display: flex;
	flex-direction: column;
	gap: 20px;
}

/* Schermata iniziale */
.pc-intro {
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	gap: 10px;
	padding: 20px 0 16px;
}
.pc-intro.pc-hidden { display: none; }

.pc-intro-avatar {
	width: 60px;
	height: 60px;
	background: var(--p-soft, #DFEEC9);
	border: 1px solid var(--p-line, #E7EAE1);
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
}

.pc-intro-title {
	font-family: var(--p-font-serif, 'Source Serif 4', Georgia, serif);
	font-size: 24px;
	font-weight: 600;
	color: var(--p-green-ink, #1E3312);
	letter-spacing: -.01em;
	margin: 4px 0 0;
}

.pc-intro-body {
	font-size: 14px;
	color: var(--p-text-soft, #66705E);
	max-width: 440px;
	line-height: 1.6;
}

/* Chips domande rapide */
.pc-chips {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	justify-content: center;
	margin-top: 8px;
}
.pc-chip {
	padding: 8px 14px;
	border: 1.5px solid var(--p-line, #E7EAE1);
	border-radius: 20px;
	font-size: 13px;
	font-weight: 500;
	color: var(--p-text, #20261B);
	background: #fff;
	cursor: pointer;
	transition: border-color .15s, background .15s, color .15s;
	font-family: var(--p-font-sans, 'Sora', sans-serif);
}
.pc-chip:hover {
	border-color: var(--p-green, #7CB829);
	background: var(--p-tint, #F1F7E8);
	color: var(--p-green-deep, #2E4A1C);
}

/* Divisore giornaliero */
.pc-day-divider {
	align-self: center;
	font-size: 11px;
	font-weight: 600;
	color: var(--p-text-soft, #66705E);
	background: var(--p-tint, #F1F7E8);
	border: 1px solid var(--p-line, #E7EAE1);
	border-radius: 20px;
	padding: 3px 12px;
}

/* Messaggi */
.pc-msg {
	display: flex;
	gap: 12px;
	align-items: flex-start;
}
.pc-msg.pc-msg-user {
	flex-direction: row-reverse;
}

.pc-msg-avatar {
	width: 32px;
	height: 32px;
	border-radius: 50%;
	background: var(--p-soft, #DFEEC9);
	border: 1px solid var(--p-line, #E7EAE1);
	display: flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
	margin-top: 2px;
}

.pc-msg-body {
	display: flex;
	flex-direction: column;
	gap: 4px;
	max-width: 75%;
}
.pc-msg-user .pc-msg-body { align-items: flex-end; }

.pc-bubble {
	padding: 12px 16px;
	border-radius: 16px;
	font-size: 14.5px;
	line-height: 1.65;
	color: var(--p-text, #20261B);
	background: #fff;
	border: 1px solid var(--p-line, #E7EAE1);
	box-shadow: 0 1px 4px rgba(30,51,18,.05);
}
.pc-msg-user .pc-bubble {
	background: var(--p-green-ink, #1E3312);
	color: #fff;
	border-color: transparent;
	border-radius: 16px 16px 4px 16px;
}
.pc-msg-assistant .pc-bubble {
	border-radius: 4px 16px 16px 16px;
}

/* Link nelle risposte AI */
.pc-bubble a {
	color: var(--p-green-deep, #2E4A1C);
	font-weight: 600;
	text-decoration: underline;
	text-underline-offset: 2px;
}
.pc-msg-user .pc-bubble a { color: rgba(255,255,255,.85); }

/* Fonti / plant card sotto la bolla */
.pc-bubble-sources,
.pc-bubble-related,
.pc-bubble-plant {
	font-size: 12px;
	color: var(--p-text-soft, #66705E);
	margin-top: 6px;
	padding-top: 6px;
	border-top: 1px solid var(--p-line, #E7EAE1);
}
.pc-bubble-sources a,
.pc-bubble-related a,
.pc-bubble-plant a {
	color: var(--p-green-deep, #2E4A1C);
	font-weight: 600;
	text-decoration: none;
}
.pc-bubble-sources a:hover,
.pc-bubble-related a:hover,
.pc-bubble-plant a:hover { text-decoration: underline; }

.pc-msg-time {
	font-size: 10.5px;
	color: var(--p-text-soft, #66705E);
	padding: 0 4px;
}

/* Typing indicator */
.pc-typing .pc-bubble {
	display: flex;
	gap: 5px;
	align-items: center;
	padding: 14px 16px;
}
.pc-typing-dot {
	width: 7px;
	height: 7px;
	border-radius: 50%;
	background: var(--p-green, #7CB829);
	animation: pc-blink 1.2s infinite both;
}
.pc-typing-dot:nth-child(2) { animation-delay: .2s; }
.pc-typing-dot:nth-child(3) { animation-delay: .4s; }
@keyframes pc-blink {
	0%, 80%, 100% { opacity: .25; transform: scale(.8); }
	40% { opacity: 1; transform: scale(1); }
}

/* ---------- Composer ---------- */
.pc-limit-warning {
	max-width: 740px;
	margin: 0 auto 10px;
	padding: 10px 14px;
	background: #FFF6E5;
	border: 1px solid #F0D999;
	border-radius: 10px;
	font-size: 12.5px;
	color: #7A5B12;
	line-height: 1.5;
	display: none;
}
.pc-limit-warning.pc-visible { display: block; }

.pc-composer-area {
	flex-shrink: 0;
	padding: 12px 20px 16px;
	background: rgba(250,251,248,.95);
	border-top: 1px solid var(--p-line, #E7EAE1);
}
.pc-composer-inner {
	max-width: 740px;
	margin: 0 auto;
}
.pc-composer {
	display: flex;
	align-items: flex-end;
	gap: 8px;
	background: #fff;
	border: 1.5px solid var(--p-line, #E7EAE1);
	border-radius: 14px;
	padding: 10px 12px;
	transition: border-color .15s, box-shadow .15s;
	box-shadow: 0 2px 8px rgba(30,51,18,.06);
}
.pc-composer:focus-within {
	border-color: var(--p-green, #7CB829);
	box-shadow: 0 0 0 3px rgba(124,184,41,.12);
}

.pc-input {
	flex: 1;
	border: none;
	outline: none;
	background: none;
	font-family: var(--p-font-sans, 'Sora', sans-serif);
	font-size: 14.5px;
	line-height: 1.55;
	color: var(--p-text, #20261B);
	resize: none;
	max-height: 160px;
	overflow-y: auto;
	/* min-height + padding: centra verticalmente una singola riga di
	   testo/placeholder rispetto ai pulsanti alti 36px accanto (vedi
	   .pc-tool-btn/.pc-send) — senza, con "align-items:flex-end" sul
	   contenitore (necessario per far crescere la textarea verso
	   l'alto con più righe), il testo di una riga sola restava
	   schiacciato in basso, non centrato. */
	min-height: 22px;
	padding: 7px 0;
	box-sizing: content-box;
}
.pc-input::placeholder { color: var(--p-text-soft, #66705E); opacity: .7; }

/* Microfono per la modalità vocale: dentro il composer, a sinistra
   del pulsante invio — non più nell'intestazione. */
.pc-tool-btn {
	width: 36px;
	height: 36px;
	border-radius: 9px;
	display: flex;
	align-items: center;
	justify-content: center;
	color: var(--p-text-soft, #66705E);
	flex-shrink: 0;
	transition: background .15s, color .15s;
}
.pc-tool-btn:hover { background: var(--p-tint, #F1F7E8); color: var(--p-text, #20261B); }
.pc-tool-btn.pc-voice-active { color: #e53935; animation: pc-pulse 1.2s ease-in-out infinite; }

.pc-send {
	width: 38px;
	height: 38px;
	border-radius: 10px;
	background: var(--p-green-ink, #1E3312);
	color: #fff;
	display: flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
	transition: background .15s, opacity .15s;
}
.pc-send:disabled { opacity: .35; cursor: not-allowed; }
.pc-send:not(:disabled):hover { background: var(--p-green-deep, #2E4A1C); }

.pc-disclaimer {
	font-size: 11px;
	color: var(--p-text-soft, #66705E);
	text-align: center;
	margin-top: 8px;
	line-height: 1.5;
}
.pc-disclaimer a {
	color: var(--p-green-deep, #2E4A1C);
	text-decoration: none;
}
.pc-disclaimer a:hover { text-decoration: underline; }

/* ---------- Mobile ---------- */
@media (max-width: 768px) {
	.pc-sidebar {
		position: fixed;
		top: 0;
		left: 0;
		height: 100dvh;
		z-index: 100;
		width: 280px;
		transform: translateX(-100%);
		box-shadow: 4px 0 24px rgba(0,0,0,.12);
	}
	.pc-sidebar.pc-sidebar-open {
		transform: translateX(0);
		width: 280px;
		padding: 16px 12px 20px;
		overflow: auto;
	}
	.pc-sidebar-overlay {
		display: none;
		position: fixed;
		inset: 0;
		background: rgba(0,0,0,.35);
		z-index: 99;
	}
	.pc-sidebar-overlay.pc-visible { display: block; }
	.pc-msg-body { max-width: 88%; }
	.pc-intro-title { font-size: 20px; }
	.pc-chips { gap: 6px; }
}

@media (max-width: 480px) {
	.pc-head { padding: 10px 14px; }
	.pc-messages { padding: 16px 12px 8px; }
	.pc-composer-area { padding: 10px 12px 14px; }
}
