.lipacek { --lp-ink:#173f36; --lp-green:#216c53; position:fixed; right:max(16px,env(safe-area-inset-right)); bottom:calc(max(12px,env(safe-area-inset-bottom)) + var(--lp-keyboard-height,0px)); z-index:60; font:400 1rem/1.5 var(--font-sans,system-ui,sans-serif); color:var(--lp-ink); }
.lipacek *, .lipacek *::before, .lipacek *::after { box-sizing:border-box; }
.lipacek [hidden], .lipacek[hidden] { display:none !important; }
.lipacek button,.lipacek input { font:inherit; }
.lipacek button { cursor:pointer; }
.lipacek button:focus-visible,.lipacek a:focus-visible,.lipacek summary:focus-visible { outline:3px solid #318c68; outline-offset:3px; }
.lipacek__launcher { width:112px; padding:0; border:0; background:transparent; display:block; margin-left:auto; color:#194b3c; }
.lipacek-avatar { display:block; width:100%; height:auto; overflow:visible; }
.lipacek__launcher>span { display:block; width:fit-content; margin:-8px auto 0; padding:3px 11px; border-radius:30px; background:#fff; box-shadow:0 2px 12px #193e3520; font-size:.8rem; }
.lipacek-avatar__body { transform-origin:100px 140px; }
.lipacek-avatar__pupils { transform:translate(var(--lp-eye-x,0px),var(--lp-eye-y,0px)); transition:transform .12s; }
.lipacek-avatar__eyes { transform-origin:100px 110px; transition:transform .2s; }
.lipacek[data-emotion="thinking"] .lipacek-avatar__body { transform:rotate(-5deg); }
.lipacek[data-emotion="curious"] .lipacek-avatar__body { transform:rotate(4deg); }
.lipacek[data-emotion="empathetic"] .lipacek-avatar__eyes { transform:scaleY(.9); }
.lipacek[data-blink="true"] .lipacek-avatar__eyes { transform:scaleY(.08); }
.lipacek-outfit { display:none; }
.lipacek[data-outfit="automotive"] [data-outfit="automotive"],.lipacek[data-outfit="healthcare"] [data-outfit="healthcare"],.lipacek[data-outfit="workshop"] [data-outfit="workshop"],.lipacek[data-outfit="electrical"] [data-outfit="electrical"],.lipacek[data-outfit="gastro"] [data-outfit="gastro"],.lipacek[data-outfit="nature"] [data-outfit="nature"],.lipacek[data-outfit="services"] [data-outfit="services"] { display:block; }
.lipacek__panel { width:min(390px,calc(100vw - 40px)); margin-bottom:8px; border:1px solid #d1e2d7; border-radius:22px; background:#fff; box-shadow:0 12px 50px #15392e30; overflow:hidden; }
.lipacek__header { display:flex; align-items:center; justify-content:space-between; padding:15px 18px; background:#eef7f0; }
.lipacek__header strong { font-size:1.1rem; }
.lipacek__header span { display:block; font-size:.8rem; }
.lipacek__header button { width:44px; height:44px; border:0; background:transparent; font-size:1.8rem; color:inherit; }
.lipacek__scroll { padding:16px 18px; max-height:min(520px,calc(var(--lp-viewport-height,100dvh) - 265px)); overflow-y:auto; overscroll-behavior:contain; }
.lipacek__message { margin:0 0 18px; padding:12px 14px; border-radius:0 15px 15px; background:#eef7f0; }
.lipacek label { display:block; font-size:.9rem; margin-bottom:6px; }
.lipacek input { min-width:0; width:100%; border:1px solid #a3bfb0; border-radius:10px; background:#fff; color:#173f36; padding:10px; font-size:1rem; }
.lipacek__search { display:flex; gap:6px; }
.lipacek__search button,.lipacek__buttons button,.lipacek__preferences>button,.lipacek__restore { border:1px solid #c9dfd0; border-radius:10px; padding:9px 12px; min-height:44px; color:var(--lp-ink); background:#edf6ef; }
.lipacek__search button,.lipacek__buttons button:first-child { color:#fff; background:var(--lp-green); border-color:var(--lp-green); }
.lipacek__status { font-size:.85rem; }
.lipacek__results { list-style:none; padding:0; margin:0; }
.lipacek__results li { margin:0; border-bottom:1px solid #e0ebe4; }
.lipacek__results a { display:block; padding:12px 0; color:#205f4e; text-decoration:none; }
.lipacek__results a:hover strong { text-decoration:underline; }
.lipacek__results strong,.lipacek__results span { display:block; overflow-wrap:anywhere; }
.lipacek__results span { font-size:.8rem; color:#44685a; margin-top:3px; }
.lipacek__shortcuts { display:flex; flex-wrap:wrap; gap:6px; margin:15px 0; }
.lipacek__shortcuts a { color:#225d4c; background:#f0f6f2; border-radius:8px; padding:8px 10px; font-size:.8rem; }
.lipacek__preferences { border-top:1px solid #dce8e0; padding-top:12px; }
.lipacek__preferences summary { cursor:pointer; min-height:44px; }
.lipacek__preferences p { font-size:.8rem; line-height:1.6; }
.lipacek__buttons { display:flex; flex-wrap:wrap; gap:8px; }
.lipacek__buttons button { font-size:.85rem; }
.lipacek__footer { display:flex; flex-wrap:wrap; justify-content:space-between; align-items:center; gap:10px; margin-top:16px; font-size:.8rem; }
.lipacek__footer button { border:0; background:transparent; min-height:44px; color:#416451; padding:6px; text-decoration:underline; }
.lipacek__footer a { color:#416451; }
.lipacek__greeting { position:absolute; bottom:100%; right:0; width:min(280px,calc(100vw - 40px)); background:#fff; border:1px solid #d3e4d9; box-shadow:0 8px 24px #15392e15; border-radius:18px 18px 0; padding:14px; font-size:.9rem; }
body:has(dialog[open]) .lipacek { visibility:hidden; }
@media(max-width:640px) { .lipacek { right:10px; bottom:calc(max(8px,env(safe-area-inset-bottom)) + var(--lp-keyboard-height,0px)); } .lipacek__launcher { width:78px; } .lipacek__panel { width:min(390px,calc(100vw - 40px)); } .lipacek__scroll { max-height:calc(var(--lp-viewport-height,100dvh) - 230px); } .lipacek__launcher>span { font-size:.75rem; } }
@media(prefers-reduced-motion:reduce) { .lipacek * { animation:none!important; transition:none!important; } }
@media print { .lipacek { display:none!important; } }
.lipacek__panel { display:flex; flex-direction:column; max-height:calc(var(--lp-viewport-height,100dvh) - 145px - 3rem); }
.lipacek__header { flex-shrink:0; }
.lipacek__scroll { min-height:0; max-height:none; }
@media(max-width:640px) { .lipacek__panel { max-height:calc(var(--lp-viewport-height,100dvh) - 105px - 3rem); } }
.lipacek__search { flex-wrap:wrap; }
.lipacek__search input { flex:1 1 10em; }
.lipacek__search button { flex:1 1 5em; }

.lipacek__choices { display:flex; flex-wrap:wrap; gap:.5rem; margin:0 0 1rem; }
.lipacek__choices:empty { display:none; }
.lipacek__choices button { font:inherit; font-size:.9rem; color:#175d50; background:#edf6f0; border:1px solid #c3dcd1; border-radius:1rem; padding:.45rem .7rem; cursor:pointer; }
.lipacek__choices button:hover { background:#dceee4; }
.lipacek__choices button:focus-visible { outline:3px solid #b46323; outline-offset:2px; }

.lipacek-avatar__blush { opacity:0; }
.lipacek[data-protest="true"] .lipacek-avatar__blush { opacity:1; }
.lipacek[data-protest="true"] .lipacek-avatar { filter:sepia(.35) saturate(1.5) drop-shadow(0 0 5px #e1585870); }
.lipacek[data-protest="true"] .lipacek-avatar * { animation-play-state:paused!important; transition:none!important; }
.lipacek[data-protest="true"] .lipacek__message { background:#fff0ee; color:#743d38; }
.lipacek button:disabled,.lipacek input:disabled { opacity:.6; cursor:wait; }

.lipacek__help { display:block; margin:8px 0 0 auto; border:1px solid #b5cfc2; background:#fff; color:#194b3c; border-radius:12px; padding:8px 12px; min-height:44px; }
.lipacek__help-panel { border:1px solid #c7dad0; border-radius:12px; padding:12px; margin-bottom:14px; }
.lipacek__help-panel a { color:#175d50; text-decoration:underline; }
.lipacek__help-panel button { min-height:44px; background:#edf6ef; color:#173f36; border:1px solid #c9dfd0; border-radius:8px; }
.lipacek[data-help="true"] .lipacek-avatar * { animation:none!important; transition:none!important; }
.lipacek__panel { max-height:calc(var(--lp-viewport-height,100dvh) - 205px - 3rem); }
@media(max-width:640px) { .lipacek__panel { max-height:calc(var(--lp-viewport-height,100dvh) - 165px - 3rem); } }

.lipacek__help-panel summary { cursor:pointer; min-height:44px; font-weight:600; }

.lipacek[data-inviting="true"] .lipacek-avatar__body { animation:lp-invite-hop 1.4s ease-in-out 2; }
.lipacek[data-inviting="true"] .lipacek-avatar__hand { transform-origin:155px 150px; animation:lp-invite-wave .65s ease-in-out 4; }
@keyframes lp-invite-hop { 0%,100% { transform:translateY(0) rotate(0); } 25% { transform:translateY(-9px) rotate(-4deg); } 50% { transform:translateY(0) rotate(0); } 72% { transform:translateY(-5px) rotate(3deg); } }
@keyframes lp-invite-wave { 0%,100% { transform:rotate(20deg); } 25%,75% { transform:translate(-10px,-30px) rotate(-50deg); } 50% { transform:translate(4px,-38px) rotate(5deg); } }

/* Quiet idle life; the face turns separately from the shell to suggest depth. */
.lipacek-avatar__face { transform-origin:100px 115px; }
.lipacek-avatar__leaf { transform-origin:104px 32px; }
.lipacek:has(.lipacek__panel[hidden]):not([data-inviting="true"]):not([data-gesture]) .lipacek-avatar__body { animation:lp-breathe 7s ease-in-out infinite; }
.lipacek:has(.lipacek__panel[hidden]) .lipacek-avatar__face { animation:lp-look-around 19s ease-in-out infinite; }
.lipacek:has(.lipacek__panel[hidden]) .lipacek-avatar__eyes { animation:lp-natural-blink 6.7s linear infinite; }
.lipacek:has(.lipacek__panel[hidden]) .lipacek-avatar__leaf { animation:lp-leaf-sway 8s ease-in-out infinite; }
.lipacek[data-gesture="wave"] .lipacek-avatar__body { animation:lp-turn-greet 1.8s ease-in-out; }
.lipacek[data-gesture="wave"] .lipacek-avatar__face { animation:lp-face-greet 1.8s ease-in-out; }
.lipacek[data-gesture="wave"] .lipacek-avatar__hand { transform-origin:155px 150px; animation:lp-invite-wave .6s ease-in-out 3; }
.lipacek[data-gesture="nod"] .lipacek-avatar__body { animation:lp-answer-nod 1.2s ease-in-out; }
.lipacek[data-gesture="listen"] .lipacek-avatar__body { animation:lp-listen 1.8s ease-in-out; }
.lipacek[data-emotion="thinking"] .lipacek-avatar__face { animation:lp-search-look 2.8s ease-in-out 3; }
.lipacek[data-help="true"] .lipacek-avatar *, .lipacek[data-emotion="empathetic"] .lipacek-avatar *, .lipacek[data-sleeping="true"] .lipacek-avatar * { animation:none!important; }
@keyframes lp-breathe { 0%,100% { transform:translateY(0); } 50% { transform:translateY(-2px); } }
@keyframes lp-look-around { 0%,65%,100% { transform:translateX(0) scaleX(1); } 73%,79% { transform:translateX(-5px) scaleX(.94); } 88%,93% { transform:translateX(4px) scaleX(.96); } }
@keyframes lp-natural-blink { 0%,42%,46%,100% { transform:scaleY(1); } 44% { transform:scaleY(.08); } }
@keyframes lp-leaf-sway { 0%,100% { transform:rotate(0); } 50% { transform:rotate(6deg); } }
@keyframes lp-turn-greet { 0%,100% { transform:rotate(0); } 25%,65% { transform:translateY(-3px) rotate(-6deg); } }
@keyframes lp-face-greet { 0%,100% { transform:translateX(0) scaleX(1); } 25%,65% { transform:translateX(-5px) scaleX(.94); } }
@keyframes lp-answer-nod { 0%,100% { transform:translateY(0) rotate(0); } 40% { transform:translateY(3px) rotate(3deg); } 70% { transform:translateY(-2px) rotate(-2deg); } }
@keyframes lp-listen { 0%,100% { transform:rotate(4deg); } 45% { transform:rotate(-5deg); } }
@keyframes lp-search-look { 0%,100% { transform:translateX(0); } 35% { transform:translateX(-4px); } 70% { transform:translateX(3px); } }

.lipacek__voice { margin:12px 0; font-size:.85rem; }
.lipacek__voice summary { cursor:pointer; min-height:44px; padding:10px 0; }
.lipacek__voice input[type="checkbox"] { width:auto; margin-right:5px; }
.lipacek[data-speaking="true"]:not([data-help="true"]) .lipacek-avatar__smile { transform-origin:100px 140px; animation:lp-speaking .5s ease-in-out infinite; }
@keyframes lp-speaking { 0%,100% { transform:scaleY(1); } 50% { transform:scaleY(1.45); } }

.lipacek-avatar__turn-front,.lipacek-avatar__turn-back { transform-origin:100px 130px; }
.lipacek-avatar__turn-back { opacity:0; }
.lipacek[data-outfit="automotive"] { --lp-back-clothes:#457694; }
.lipacek[data-outfit="workshop"] { --lp-back-clothes:#a37847; }
.lipacek[data-outfit="nature"] { --lp-back-clothes:#648354; }
.lipacek[data-outfit="services"] { --lp-back-clothes:#3a8d81; }
.lipacek[data-outfit="gastro"],.lipacek[data-outfit="healthcare"] { --lp-back-clothes:#fff; }
.lipacek:is([data-gesture="greet"],[data-gesture="spin"]) .lipacek-avatar__turn-front { animation:lp-spin-front 2.4s ease-in-out; }
.lipacek:is([data-gesture="greet"],[data-gesture="spin"]) .lipacek-avatar__turn-back { animation:lp-spin-back 2.4s ease-in-out; }
.lipacek:is([data-gesture="greet"],[data-gesture="spin"]) .lipacek-avatar__hand { transform-origin:155px 150px; animation:lp-invite-wave .55s 1.9s ease-in-out 2; }
.lipacek[data-gesture="joy"] .lipacek-avatar__body { animation:lp-happy-hop 1.2s ease-in-out 2; }
.lipacek[data-gesture="joy"] .lipacek-avatar__hand { transform-origin:155px 150px; animation:lp-invite-wave .6s ease-in-out 3; }
.lipacek[data-gesture="joy"] .lipacek-avatar__hand-left { transform-origin:45px 150px; animation:lp-happy-hand .6s ease-in-out 3; }
@keyframes lp-spin-front { 0%,100% { transform:scaleX(1); opacity:1; } 24.9% { opacity:1; } 25% { transform:scaleX(0); opacity:0; } 74.9% { opacity:0; } 75% { transform:scaleX(0); opacity:1; } }
@keyframes lp-spin-back { 0%,24.9%,75.1%,100% { transform:scaleX(0); opacity:0; } 25%,75% { transform:scaleX(0); opacity:1; } 50% { transform:scaleX(1); opacity:1; } }
@keyframes lp-happy-hop { 0%,100% { transform:translateY(0) rotate(0); } 30% { transform:translateY(-12px) rotate(-6deg); } 65% { transform:translateY(-4px) rotate(5deg); } }
@keyframes lp-happy-hand { 0%,100% { transform:rotate(-20deg); } 50% { transform:translate(-3px,-25px) rotate(35deg); } }

.lipacek__feedback { margin: 1rem 0; padding: .9rem; border: 1px solid #d3e4d9; border-radius: .9rem; background: #f3f8f5; }
.lipacek__feedback p { margin: 0 0 .7rem; }
.lipacek__feedback a, .lipacek__feedback button { display: inline-block; margin: .25rem .4rem .25rem 0; min-height: 44px; padding: .6rem; font: inherit; color: #075e63; }
.lipacek__feedback button { border: 1px solid #a5beb7; border-radius: .6rem; background: #fff; cursor: pointer; }
.lipacek__feedback [hidden] { display: none; }
