/* ===== Floating widgets: chatbot, voice, a11y panel, search overlay, popup, toast ===== */

/* floating action buttons */
.fab-stack{position:fixed;right:20px;bottom:20px;z-index:120;display:flex;flex-direction:column;gap:12px;align-items:flex-end;}
.fab{width:58px;height:58px;border-radius:50%;border:0;display:grid;place-items:center;box-shadow:var(--shadow-lg);color:#fff;position:relative;}
.fab svg{width:26px;height:26px;}
.fab.chat{background:linear-gradient(135deg,#1B5E20,#43A047);}
.fab.voice{background:linear-gradient(135deg,#EA7A0C,#FF9933);width:50px;height:50px;}
.fab .ping{position:absolute;top:-2px;right:-2px;background:var(--accent);color:#fff;font-size:.6rem;font-weight:700;border-radius:999px;padding:2px 6px;border:2px solid var(--bg);}
.fab .label{position:absolute;right:70px;white-space:nowrap;background:var(--heading);color:#fff;padding:6px 10px;border-radius:8px;font-size:.78rem;opacity:0;pointer-events:none;transition:.15s;}
.fab:hover .label{opacity:1;}

/* chatbot panel */
.chatbot{position:fixed;right:20px;bottom:20px;width:380px;max-width:calc(100vw - 32px);height:560px;max-height:calc(100vh - 40px);
  background:var(--surface);border:1px solid var(--border);border-radius:18px;box-shadow:var(--shadow-lg);
  z-index:130;display:none;flex-direction:column;overflow:hidden;}
.chatbot.open{display:flex;animation:slideup .22s ease;}
@keyframes slideup{from{transform:translateY(16px);opacity:0;}to{transform:none;opacity:1;}}
.chat-head{background:linear-gradient(135deg,#1B5E20,#2E7D32);color:#fff;padding:14px 16px;display:flex;align-items:center;gap:12px;}
.chat-head .av{width:40px;height:40px;border-radius:50%;background:rgba(255,255,255,.16);display:grid;place-items:center;font-size:1.2rem;}
.chat-head b{font-family:var(--font-head);font-size:1rem;display:block;line-height:1.1;}
.chat-head small{opacity:.85;font-size:.72rem;}
.chat-head .prov{margin-left:auto;font-size:.6rem;background:rgba(255,255,255,.16);padding:3px 7px;border-radius:6px;letter-spacing:.03em;}
.chat-head .x{background:transparent;border:0;color:#fff;font-size:1.3rem;line-height:1;padding:4px;}
.chat-body{flex:1;overflow-y:auto;padding:16px;background:var(--bg);display:flex;flex-direction:column;gap:10px;}
.msg{max-width:85%;padding:10px 13px;border-radius:14px;font-size:.9rem;line-height:1.5;box-shadow:var(--shadow-sm);}
.msg.bot{background:var(--card);border:1px solid var(--border);border-bottom-left-radius:4px;align-self:flex-start;}
.msg.user{background:var(--primary);color:var(--primary-fg);border-bottom-right-radius:4px;align-self:flex-end;}
.msg.bot a{color:var(--link);font-weight:600;}
.msg .qbtns{display:flex;flex-direction:column;gap:6px;margin-top:8px;}
.msg .qbtns button{text-align:left;background:var(--card-tint);border:1px solid var(--border);border-radius:10px;padding:8px 11px;font-size:.83rem;color:var(--heading);font-weight:600;}
.msg .qbtns button:hover{border-color:var(--leaf);background:var(--surface-2);}
.typing{display:flex;gap:4px;padding:12px 14px;}
.typing span{width:7px;height:7px;background:var(--leaf);border-radius:50%;animation:blink 1.2s infinite;}
.typing span:nth-child(2){animation-delay:.2s;}.typing span:nth-child(3){animation-delay:.4s;}
@keyframes blink{0%,60%,100%{opacity:.3;}30%{opacity:1;}}
.chat-foot{border-top:1px solid var(--border);padding:10px;background:var(--surface);}
.chat-chips{display:flex;gap:6px;overflow-x:auto;padding-bottom:8px;}
.chat-chips button{white-space:nowrap;background:var(--card-tint);border:1px solid var(--border);border-radius:999px;padding:6px 12px;font-size:.78rem;color:var(--heading);font-weight:600;}
.chat-input{display:flex;gap:8px;align-items:center;}
.chat-input input{flex:1;border:1.5px solid var(--border);border-radius:999px;padding:10px 14px;background:var(--surface);color:var(--text);font-family:inherit;font-size:.9rem;}
.chat-input .mic,.chat-input .send{width:40px;height:40px;border-radius:50%;border:0;display:grid;place-items:center;color:#fff;flex:none;}
.chat-input .mic{background:var(--accent);}
.chat-input .mic.rec{animation:pulse 1s infinite;}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(234,122,12,.5);}70%{box-shadow:0 0 0 12px rgba(234,122,12,0);}100%{box-shadow:0 0 0 0 rgba(234,122,12,0);}}
.chat-input .send{background:var(--primary);}

/* modal (a11y panel, search results, generic) */
.modal-back{position:fixed;inset:0;background:rgba(10,20,12,.55);z-index:200;display:none;align-items:flex-start;justify-content:center;padding:6vh 16px;overflow:auto;}
.modal-back.open{display:flex;}
.modal{background:var(--surface);border-radius:18px;box-shadow:var(--shadow-lg);max-width:640px;width:100%;border:1px solid var(--border);animation:slideup .2s;}
.modal.wide{max-width:820px;}
.modal-head{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid var(--border);}
.modal-head h3{margin:0;}
.modal-head .x{background:var(--card-tint);border:0;border-radius:8px;width:34px;height:34px;font-size:1.2rem;color:var(--heading);}
.modal-body{padding:22px;}

/* accessibility panel controls */
.a11y-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 0;border-bottom:1px solid var(--border);flex-wrap:wrap;}
.a11y-row:last-child{border-bottom:0;}
.a11y-row .lbl b{display:block;color:var(--heading);font-family:var(--font-head);}
.a11y-row .lbl span{font-size:.8rem;color:var(--text-muted);}

/* AI search overlay results */
.searchres{display:flex;flex-direction:column;gap:2px;}
.searchres .ai-answer{background:var(--card-tint);border:1px solid var(--border);border-left:4px solid var(--leaf);border-radius:0 12px 12px 0;padding:14px 16px;margin-bottom:14px;}
.searchres .ai-answer .lab{font-size:.7rem;font-weight:700;color:var(--forest,#2E7D32);letter-spacing:.05em;text-transform:uppercase;display:flex;align-items:center;gap:6px;margin-bottom:6px;}
.searchres a.res{display:block;padding:12px 14px;border-radius:10px;border:1px solid transparent;}
.searchres a.res:hover{background:var(--surface-2);border-color:var(--border);text-decoration:none;}
.searchres a.res b{color:var(--link);font-size:.98rem;}
.searchres a.res .u{color:var(--ok);font-size:.76rem;}
.searchres a.res p{margin:.2em 0 0;font-size:.85rem;color:var(--text-soft);}
.searchres mark{background:#fff2c2;color:inherit;padding:0 2px;border-radius:3px;}
html[data-theme="dark"] .searchres mark{background:#4d4413;color:#ffe9a3;}

/* welcome pop-up */
.popup-card{max-width:460px;text-align:center;}
.popup-card .media{aspect-ratio:16/9;border-radius:14px 14px 0 0;overflow:hidden;}
.popup-card .media img{width:100%;height:100%;object-fit:cover;}
.popup-card .pc-body{padding:22px;}

/* toast */
.toast-wrap{position:fixed;left:50%;bottom:26px;transform:translateX(-50%);z-index:300;display:flex;flex-direction:column;gap:8px;align-items:center;}
.toast{background:var(--heading);color:#fff;padding:12px 18px;border-radius:999px;box-shadow:var(--shadow-lg);font-size:.88rem;display:flex;align-items:center;gap:8px;animation:slideup .2s;}
.toast.ok{background:#1e7d34;}
.toast .ic{width:18px;height:18px;}

/* back to top */
.totop{position:fixed;left:20px;bottom:20px;width:44px;height:44px;border-radius:50%;background:var(--primary);color:#fff;border:0;display:none;place-items:center;box-shadow:var(--shadow);z-index:110;}
.totop.show{display:grid;}

/* reading progress + last updated ribbon */
.updated-ribbon{font-size:.78rem;color:var(--text-muted);display:inline-flex;align-items:center;gap:6px;}
.pulse-dot{width:8px;height:8px;border-radius:50%;background:var(--leaf);box-shadow:0 0 0 0 rgba(67,160,71,.6);animation:pulse2 2s infinite;}
@keyframes pulse2{0%{box-shadow:0 0 0 0 rgba(67,160,71,.5);}70%{box-shadow:0 0 0 8px rgba(67,160,71,0);}100%{box-shadow:0 0 0 0 rgba(67,160,71,0);}}
