/* Lina — Pai Digital Concierge widget (v1). Dark luxury theme to match paidigital.site.
   All classes are lina- prefixed to avoid colliding with the host page. */
:root{--lina-gold:#d8b45a;--lina-gold-2:#f0d48a;--lina-ink:#101014;--lina-panel:#17171d;--lina-line:#2c2c35;--lina-text:#f3efe6;--lina-dim:#b9b3a4}
.lina-root{position:fixed;right:16px;bottom:16px;z-index:2147483000;font-family:Georgia,'Times New Roman',serif;color:var(--lina-text);
  transition:transform .45s ease,opacity .45s ease}
.lina-root *{box-sizing:border-box}
/* hide the legacy Pai Guide FAB when Lina replaces it (config.replaceGuideFab) */
body.lina-replaces-guide .guide-fab{display:none!important}

/* ---- launcher / portrait card ---- */
.lina-card{width:118px;border-radius:18px;overflow:hidden;background:var(--lina-panel);border:1px solid var(--lina-gold);
  box-shadow:0 12px 34px rgba(0,0,0,.55);cursor:pointer;transform:translateY(16px);opacity:0;transition:all .5s ease;position:relative}
.lina-card.lina-in{transform:none;opacity:1}
.lina-face{position:relative;width:100%;aspect-ratio:4/5;overflow:hidden;background:#222}
.lina-face img{width:100%;height:100%;object-fit:cover;display:block;animation:lina-breathe 5.2s ease-in-out infinite;transform-origin:50% 60%}
.lina-face .lina-face-vid{width:100%;height:100%;object-fit:cover;display:block}
@keyframes lina-breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.025)}}
.lina-blink{position:absolute;inset:0;background:linear-gradient(180deg,rgba(16,16,20,.0),rgba(16,16,20,0));pointer-events:none;animation:lina-blink 6.4s infinite}
@keyframes lina-blink{0%,93%,100%{opacity:0}95%,97%{opacity:.28;background:#101014}96%{opacity:0}}
.lina-mouth{position:absolute;left:50%;top:64%;width:34%;height:16%;transform:translateX(-50%);border-radius:50%;
  background:radial-gradient(ellipse at center,rgba(240,212,138,.55),rgba(240,212,138,0) 70%);opacity:0;pointer-events:none}
/* --talk (0..1) is written by lina.js from the REAL voice signal (Kokoro
   analyser) or a labelled rhythm approximation (speechSynthesis fallback).
   At rest it is 0: no speaking motion while she is silent. */
.lina-card,.lina-panel{--talk:0}
.lina-speaking .lina-mouth{opacity:calc(.12 + var(--talk) * .75);transform:translateX(-50%) scale(calc(.85 + var(--talk) * .3));
  transition:opacity .09s linear,transform .09s linear}
.lina-speaking .lina-face{box-shadow:inset 0 0 0 2px var(--lina-gold)}
.lina-speaking .lina-face img{animation:none;transform:translateY(calc(var(--talk) * -2.5px)) scale(calc(1.012 + var(--talk) * .018));
  transition:transform .09s linear}
.lina-speaking .lina-face .lina-face-vid{transform:translateY(calc(var(--talk) * -2.5px)) scale(calc(1.012 + var(--talk) * .018));
  transition:transform .09s linear}
.lina-panel.lina-speaking .lina-head img,.lina-panel.lina-speaking .lina-head-vid{
  transform:translateY(calc(var(--talk) * -1.5px));transition:transform .09s linear}
.lina-head .lina-head-vid{width:52px;height:64px;object-fit:cover;border-radius:10px;border:1px solid var(--lina-gold);cursor:pointer;background:#222}
/* live voice equalizer beside her name/status — bars scaled by lina.js */
.lina-eq{display:inline-flex;align-items:flex-end;gap:2px;height:10px;margin-left:7px;vertical-align:middle;
  opacity:0;transition:opacity .25s ease}
.lina-panel.lina-speaking .lina-eq{opacity:1}
.lina-eq i{display:block;width:3px;height:10px;border-radius:2px;background:var(--lina-gold-2);
  transform:scaleY(.15);transform-origin:50% 100%}
.lina-card.lina-nudge{animation:lina-nudge .55s ease-in-out 2}
@keyframes lina-nudge{0%,100%{transform:none}25%{transform:translateX(-4px) rotate(-1deg)}75%{transform:translateX(4px) rotate(1deg)}}
.lina-name{padding:7px 9px 8px;text-align:center}
.lina-name b{display:block;font-size:14px;letter-spacing:.14em;color:var(--lina-gold-2)}
.lina-name span{display:block;font-size:10.5px;color:var(--lina-dim);letter-spacing:.06em;margin-top:1px}
.lina-dot{position:absolute;top:8px;left:8px;width:9px;height:9px;border-radius:50%;background:#3ddc84;box-shadow:0 0 8px #3ddc84}
/* ---- minimize / tuck-away: the panel header's Minimize button (—)
   collapses the panel back to the launcher (header buttons share the
   generic .lina-head button style); the launcher's tuck control (›)
   slides her to a slim edge tab for the rest of the session — one tap
   on the tab restores her, never a dead end. ---- */
.lina-root.lina-tucked{transform:translateX(calc(100% + 24px));opacity:0;pointer-events:none}
.lina-tuck{position:absolute;top:6px;right:6px;z-index:2;width:22px;height:22px;border-radius:50%;background:rgba(14,14,18,.72);
  border:1px solid var(--lina-line);color:var(--lina-text);font-size:15px;line-height:1;padding:0;cursor:pointer;font-family:inherit;
  display:flex;align-items:center;justify-content:center}
.lina-tuck:hover{border-color:var(--lina-gold);color:var(--lina-gold-2)}
.lina-tab{position:fixed;right:0;top:50%;z-index:2147483000;transform:translate(110%,-50%);transition:transform .45s ease;
  background:var(--lina-panel);border:1px solid var(--lina-gold);border-right:none;border-radius:13px 0 0 13px;
  padding:9px 6px 9px 7px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:6px;
  font-family:Georgia,'Times New Roman',serif;color:var(--lina-gold-2);box-shadow:-6px 10px 26px rgba(0,0,0,.5)}
.lina-tab.lina-in{transform:translate(0,-50%)}
.lina-tab img{width:30px;height:30px;border-radius:50%;object-fit:cover;border:1px solid var(--lina-gold);display:block}
.lina-tab span{writing-mode:vertical-rl;font-size:11px;letter-spacing:.22em;text-transform:uppercase}
.lina-tab:hover{border-color:var(--lina-gold-2)}
.lina-hello{position:absolute;right:128px;bottom:6px;width:230px;background:#1d1d24;border:1px solid var(--lina-gold);color:var(--lina-text);
  border-radius:14px 14px 4px 14px;padding:10px 12px;font-size:13.5px;line-height:1.45;box-shadow:0 10px 28px rgba(0,0,0,.5);
  opacity:0;transform:translateX(8px);transition:all .45s ease;pointer-events:none}
.lina-hello.lina-in{opacity:1;transform:none}
.lina-hello b{color:var(--lina-gold-2)}
/* ---- proactive bubble (v3): small, dismissible, quick-action chips;
   sits in the greeting bubble's slot beside the card, never blocks content.
   Interactive only while shown (.lina-in); hidden + inert otherwise. ---- */
.lina-bubble{position:absolute;right:128px;bottom:6px;width:252px;background:#1d1d24;border:1px solid var(--lina-gold);color:var(--lina-text);
  border-radius:14px 14px 4px 14px;padding:11px 28px 11px 12px;font-size:13.5px;line-height:1.45;box-shadow:0 10px 28px rgba(0,0,0,.5);
  opacity:0;transform:translateX(8px);transition:all .45s ease;pointer-events:none;z-index:3}
.lina-bubble.lina-in{opacity:1;transform:none;pointer-events:auto}
.lina-bubble b{color:var(--lina-gold-2)}
.lina-bubble-x{position:absolute;top:5px;right:7px;background:none;border:none;color:var(--lina-dim);font-size:13px;cursor:pointer;padding:2px 4px;line-height:1;font-family:inherit}
.lina-bubble-x:hover{color:var(--lina-gold-2)}
.lina-bubble-chips{display:flex;flex-wrap:wrap;gap:5px;margin-top:9px}
.lina-bubble-chip{font-size:12px;padding:5px 10px}

/* ---- chat panel ---- */
.lina-panel{position:fixed;right:16px;bottom:16px;width:min(392px,calc(100vw - 24px));height:min(600px,calc(100dvh - 32px));
  background:var(--lina-panel);border:1px solid var(--lina-gold);border-radius:20px;display:none;flex-direction:column;overflow:hidden;
  box-shadow:0 24px 60px rgba(0,0,0,.65);z-index:2147483001;font-family:Georgia,'Times New Roman',serif;color:var(--lina-text)}
.lina-panel.lina-open{display:flex}
.lina-head{display:flex;gap:12px;align-items:center;padding:12px 14px;border-bottom:1px solid var(--lina-line);background:#131318}
.lina-head img{width:52px;height:64px;object-fit:cover;border-radius:10px;border:1px solid var(--lina-gold)}
.lina-head .lina-who{flex:1;min-width:0}
.lina-head .lina-who b{font-size:16px;letter-spacing:.1em;color:var(--lina-gold-2);display:block}
.lina-head .lina-who span{font-size:11.5px;color:var(--lina-dim)}
.lina-head button{background:none;border:1px solid var(--lina-line);color:var(--lina-text);border-radius:9px;padding:6px 9px;cursor:pointer;font-size:13px}
.lina-head button:hover{border-color:var(--lina-gold)}
.lina-log{flex:1;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:10px}
.lina-msg{max-width:86%;padding:9px 12px;border-radius:14px;font-size:14px;line-height:1.5;white-space:pre-wrap;word-wrap:break-word}
.lina-msg.lina-her{align-self:flex-start;background:#22222b;border:1px solid var(--lina-line);border-bottom-left-radius:4px}
.lina-msg.lina-me{align-self:flex-end;background:#2e2a1c;border:1px solid #57491f;border-bottom-right-radius:4px}
.lina-msg .lina-cta{display:inline-block;margin-top:8px;background:var(--lina-gold);color:#171205;font-weight:bold;text-decoration:none;
  padding:8px 14px;border-radius:10px;font-size:13.5px}
.lina-msg .lina-cta.lina-ghost{background:none;color:var(--lina-gold-2);border:1px solid var(--lina-gold);font-weight:normal;margin-left:6px}
.lina-msg small.lina-src{display:block;margin-top:6px;color:var(--lina-dim);font-size:11px}
.lina-chips{display:flex;flex-wrap:wrap;gap:6px;padding:0 14px 10px}
.lina-chip{border:1px solid var(--lina-gold);color:var(--lina-gold-2);background:none;border-radius:999px;padding:6px 11px;font-size:12.5px;cursor:pointer;font-family:inherit}
.lina-chip:hover{background:#2e2a1c}
.lina-input{display:flex;gap:8px;padding:11px 12px;border-top:1px solid var(--lina-line);background:#131318}
.lina-input input{flex:1;background:#0e0e12;border:1px solid var(--lina-line);border-radius:11px;color:var(--lina-text);padding:10px 12px;font-size:14px;font-family:inherit;min-width:0}
.lina-input input:focus{outline:1px solid var(--lina-gold)}
.lina-input button{background:var(--lina-gold);border:none;color:#171205;font-weight:bold;border-radius:11px;padding:0 14px;cursor:pointer;font-size:14px}
.lina-input button.lina-mic{background:none;border:1px solid var(--lina-line);font-weight:normal}
.lina-input button.lina-mic.lina-live{border-color:#e5484d;color:#ff8589}
.lina-foot{padding:7px 14px 10px;font-size:11px;color:var(--lina-dim);border-top:1px solid var(--lina-line);background:#131318}
.lina-foot a{color:var(--lina-gold-2)}
@media (max-width:640px){.lina-hello{display:none}.lina-card{width:92px}
.lina-bubble{right:0;bottom:calc(100% + 8px);width:min(252px,calc(100vw - 32px))}}
