/* ========================================
Handwriting to Markdown — Plugin Styles
Prefisso hwm_ per evitare conflitti
======================================== */
/* ========================================
UTILITY CLASSES — Usate da JS per toggle
======================================== */
/* Nasconde un elemento (sostituisce style.display = 'none') */
.hwm_hidden {
display: none !important;
}
/* Annulla pointer-events (usato da stripContentEditableFalse sul formato legacy) */
.hwm_no-pointer {
pointer-events: none !important;
}
/* Overflow hidden per l'animazione collapse del wrapper immagine */
.hwm_overflow-hidden {
overflow: hidden;
}
/* Disabilita transizioni CSS temporaneamente (usato in syncWrapperHeight) */
.hwm_no-transition {
transition: none !important;
}
/* Animazione altezza del wrapper clip (collapse/expand nuovo formato) */
.hwm_clip-wrapper {
transition: height 0.3s ease;
}
.hwm_clip-animating {
height: var(--hwm-clip-h, auto);
}
/* Lo span internal-embed decorato dal plugin riceve position:relative
(ancoraggo del pannello portale position:absolute) e pointer-events:none
(non blocca lo stylus Android; il pannello portale ha pointer-events:auto) */
.internal-embed[data-hwm-decorated="1"] {
position: relative;
pointer-events: none;
}
/* --- Container principale dell'embed --- */
.hwm_container {
position: relative;
border: 1px solid var(--background-modifier-border);
border-radius: var(--radius-m);
overflow: hidden;
margin: 8px 0;
/* Sfondo via CSS var (impostato con setCssProps --hwm-bg) con fallback bianco */
background-color: var(--hwm-bg, #ffffff);
/* Riabilita pointer-events (i wrapper CM6 sopra hanno pointer-events: none
per non bloccare l'hit-test dell'handwriting Android) */
pointer-events: auto;
}
/* --- Modalità handwriting Android (switch nelle impostazioni) ---
Quando attiva (classe hwm-handwriting-mode su document.body), i riquadri
handwriting mostrano un box compatto con icona invece dell'SVG a piena
altezza. Questo riduce l'area CE=false che interferisce con la proximity
detection dello stylus handwriting di Android.
L'SVG viene nascosto; il pannello portale (position:absolute) rimane visibile
sopra il box per permettere apertura editor, conversione ed eliminazione. */
.hwm-handwriting-mode .hwm-badge-mode {
/* Larghezza piena: lo span .internal-embed di default può restare stretto
quanto l'immagine — forziamo 100% per contenere correttamente il pannello portale */
width: 100% !important;
box-sizing: border-box !important;
/* Altezza fissa: abbastanza alta da contenere il pannello portale (~34px)
senza occupare troppo spazio nel documento */
height: 72px !important;
max-height: 72px !important;
min-height: 72px !important;
overflow: hidden;
cursor: default;
/* Flex per centrare l'icona */
display: flex !important;
align-items: center;
justify-content: center;
background: var(--background-secondary, #f0f0f0);
border-radius: var(--radius-m);
}
/* Nasconde l'SVG: mostriamo solo il box con l'icona */
.hwm-handwriting-mode .hwm-badge-mode img {
display: none !important;
}
/* Icona matita centrata via pseudo-elemento */
.hwm-handwriting-mode .hwm-badge-mode::after {
content: "✏️";
font-size: 28px;
opacity: 0.5;
pointer-events: none;
}
/* SVG a piena larghezza in tutti i contesti (desktop).
Su mobile le regole .hwm-handwriting-mode sovrastano questo.
NO overflow:hidden sullo span: clipperebbe i tratti ai bordi dell'SVG.
Il border-radius va sull'img per arrotondarne gli angoli visivi. */
.internal-embed[src*="_handwriting/"] {
display: block;
width: 100%;
border-radius: var(--radius-m);
/* Bordo e ombra per rendere il riquadro visibile contro lo sfondo Obsidian */
border: 1.5px solid var(--background-modifier-border);
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.15);
/* Elimina whitespace implicito sotto l'img (gap tra img e bordo su Android) */
padding: 0;
line-height: 0;
}
.internal-embed[src*="_handwriting/"] img {
display: block;
width: 100%;
height: auto;
max-height: none;
border-radius: var(--radius-m);
}
/* Variante wiki ![[svg]]:
La classe hwm_container viene aggiunta DIRETTAMENTE allo span
.internal-embed di Obsidian (nessun wrapper esterno, per non
spostare i nodi CM6 e causare crash del virtual DOM).
L'immagine è già renderizzata da Obsidian; noi aggiungiamo solo
i bottoni come figli dello span. */
.hwm_container--wiki {
background: transparent; /* l'SVG ha già il suo sfondo */
width: 100%;
box-sizing: border-box;
}
.hwm_container--wiki img {
display: block;
width: 100%;
height: auto;
}
/* --- Toolbar in alto a destra --- */
.hwm_toolbar {
position: absolute;
top: 6px;
right: 6px;
z-index: 10;
display: flex;
align-items: center;
gap: 0; /* spacing gestito via margin-right sui bottoni, così i bottoni
nascosti (max-width:0, margin:0) non creano spazi vuoti */
padding: 3px 6px;
border-radius: var(--radius-m);
background: rgba(240, 240, 240, 0.95);
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15);
opacity: 1;
transition: opacity 0.2s;
}
/* --- Bottoni toolbar --- */
.hwm_btn {
display: flex;
align-items: center;
justify-content: center;
width: 28px;
height: 28px;
padding: 0;
border: none;
border-radius: var(--radius-s);
background: transparent;
color: #666;
cursor: pointer;
line-height: 0;
/* Spacing via margin-right invece di gap, così i bottoni nascosti
(margin:0) non lasciano spazi vuoti nella toolbar compatta */
margin-right: 4px;
/* Animazione espansione/compressione toolbar */
overflow: hidden;
max-width: 40px;
flex-shrink: 0;
transition: max-width 0.2s ease, opacity 0.2s ease,
margin 0.2s ease, padding 0.2s ease;
}
/* Icone SVG inline dentro i bottoni */
.hwm_btn svg {
width: 16px;
height: 16px;
flex-shrink: 0;
}
.hwm_btn:hover {
background: #e0e0e0;
color: #333;
}
/* Bottone attivo (tool selezionato) */
.hwm_btn.hwm_active {
background: var(--interactive-accent);
color: #ffffff;
}
/* --- Bottone salva (evidenziato) --- */
.hwm_save-btn {
margin-left: 4px;
}
.hwm_save-btn:hover {
background: var(--interactive-accent);
color: #ffffff;
}
/* --- Bottone elimina (X rossa su hover) --- */
.hwm_delete-btn:hover {
background: #dc2626;
color: #ffffff;
}
/* --- Selettore colori --- */
.hwm_colors {
display: flex;
align-items: center;
gap: 3px;
margin: 0 4px;
}
/* I pallini colore sono
(non