/* Ask assistant: floating button, panel and inline page. Uses the site's tokens (site.css). */
.ask-fab{position:fixed;right:1.1rem;bottom:1.1rem;z-index:60;display:inline-flex;align-items:center;gap:.5rem;padding:.8rem 1.15rem;border:0;border-radius:999px;background:var(--navy);color:#fff;font:700 1rem/1 var(--sans);box-shadow:0 8px 24px rgba(15,31,58,.28);cursor:pointer}
.ask-fab:hover{background:var(--navy-2)}
.ask-fab svg{width:1.15rem;height:1.15rem}
.ask-fab[hidden]{display:none}
.ask-scrim{position:fixed;inset:0;background:rgba(15,31,58,.35);z-index:70}
.ask-panel{position:fixed;z-index:71;right:1rem;bottom:1rem;top:1rem;width:min(30rem,calc(100vw - 2rem));display:flex;flex-direction:column;background:var(--paper);border:1px solid var(--line);border-radius:18px;box-shadow:0 18px 60px rgba(15,31,58,.3);overflow:hidden}
.ask-inline .ask-panel{position:static;width:auto;max-width:48rem;height:min(46rem,calc(100vh - 9rem));min-height:30rem;margin:0 auto;box-shadow:0 2px 0 rgba(15,31,58,.04)}
.ask-head{display:flex;align-items:flex-start;gap:.75rem;padding:1rem 1.1rem .85rem;border-bottom:1px solid var(--line);background:#fff}
.ask-head h2{font-size:1.15rem;margin:0}
.ask-head p{margin:.2rem 0 0;font-size:.86rem;color:var(--muted)}
.ask-head .eyebrow{margin:0 0 .35rem}
.ask-acro{margin:.3rem 0 0;font:400 .8rem/1.4 var(--sans);color:var(--muted)}
.ask-acro summary{cursor:pointer;color:var(--river);font-weight:600;width:max-content}
.ask-acro summary:focus-visible{outline:3px solid var(--gold-2);outline-offset:2px;border-radius:4px}
.ask-acro p{margin:.25rem 0 0;font-size:.8rem}
.ask-ctl{margin-left:auto;flex:none;display:flex;align-items:center;gap:.4rem}
.ask-new{display:inline-flex;align-items:center;gap:.3rem;height:2.4rem;padding:0 .8rem;border-radius:999px;border:1px solid var(--line);background:#fff;color:var(--navy);font:600 .8rem/1 var(--sans);cursor:pointer;white-space:nowrap}
.ask-new:hover,.ask-x:hover{border-color:var(--navy)}
.ask-new:focus-visible,.ask-x:focus-visible{outline:3px solid var(--gold-2);outline-offset:2px}
.ask-new svg{width:.95rem;height:.95rem}
@media (max-width:640px){.ask-new{padding:0 .65rem}.ask-new span{font-size:.76rem}}
.ask-x{flex:none;width:2.4rem;height:2.4rem;border-radius:999px;border:1px solid var(--line);background:#fff;color:var(--navy);font-size:1.3rem;line-height:1;cursor:pointer}
.ask-log{flex:1;overflow-y:auto;margin:0;padding:1rem 1.1rem;list-style:none;display:flex;flex-direction:column;gap:.9rem}
.ask-msg{max-width:92%;padding:.7rem .9rem;border-radius:14px;line-height:1.55}
.ask-msg.me{align-self:flex-end;background:var(--river-soft);color:var(--ink);border-bottom-right-radius:4px}
.ask-msg.bot{align-self:flex-start;background:#fff;border:1px solid var(--line);border-bottom-left-radius:4px;font-family:var(--serif);font-size:1.04rem}
.ask-msg.bot p{margin:0 0 .6em}.ask-msg.bot p:last-of-type{margin-bottom:0}
.ask-msg.bot ul{margin:.2em 0 .6em;padding-left:1.2em}
.ask-msg.err{border-color:#e7c9a8;background:var(--warn-soft);font-family:var(--sans);font-size:.95rem}
.ask-msg sup a{font:700 .72rem/1 var(--sans);text-decoration:none;background:var(--gold-soft);color:var(--warn);padding:.1em .35em;border-radius:5px;margin-left:.1em}
.ask-src{margin:.7rem 0 0;padding:.6rem 0 0;border-top:1px solid var(--line);font:400 .84rem/1.45 var(--sans)}
.ask-src b{display:block;font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--gold);margin-bottom:.3rem}
.ask-src ol{margin:0;padding-left:1.3em}.ask-src li{margin:.15em 0}
.ask-src .k{color:var(--muted);font-size:.76rem;margin-left:.3em}
.ask-tools{display:flex;gap:.4rem;margin-top:.55rem;font-family:var(--sans)}
.ask-tools button{font:600 .8rem/1 var(--sans);padding:.45rem .7rem;border-radius:999px;border:1px solid var(--line);background:var(--paper);color:var(--navy);cursor:pointer}
.ask-caption{margin-top:.55rem;padding:.5rem .7rem;border-radius:10px;background:var(--navy);color:#fff;font:500 .9rem/1.45 var(--sans)}
.ask-caption[hidden]{display:none}
.ask-caption::before{content:"Speaking";display:block;font:700 .66rem/1 var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--gold-2);margin-bottom:.3rem}
.ask-typing{align-self:flex-start;color:var(--muted);font-size:.9rem}
.ask-typing i{display:inline-block;width:.42rem;height:.42rem;margin-right:.2rem;border-radius:50%;background:var(--muted);animation:ask-b 1s infinite ease-in-out}
.ask-typing i:nth-child(2){animation-delay:.15s}.ask-typing i:nth-child(3){animation-delay:.3s}
@keyframes ask-b{0%,80%,100%{opacity:.25}40%{opacity:1}}
.ask-intro{font-size:.92rem;color:var(--muted)}
.ask-sugg{display:flex;flex-wrap:wrap;gap:.4rem;margin:.6rem 0 0;padding:0;list-style:none}
.ask-sugg button{font:600 .84rem/1.25 var(--sans);text-align:left;padding:.5rem .75rem;border-radius:999px;border:1px solid var(--line);background:#fff;color:var(--river);cursor:pointer}
.ask-sugg button:hover{border-color:var(--river)}
.ask-foot{border-top:1px solid var(--line);background:#fff;padding:.7rem .8rem .6rem}
.ask-form{display:flex;gap:.45rem;align-items:flex-end}
.ask-form textarea{flex:1;min-height:2.9rem;max-height:8rem;resize:none;padding:.7rem .8rem;border:1px solid #cfc7b6;border-radius:12px;font:400 1rem/1.4 var(--sans);background:var(--paper);color:var(--ink)}
.ask-form textarea:focus{outline:3px solid var(--gold-2);outline-offset:1px;border-color:transparent}
.ask-btn{flex:none;width:2.9rem;height:2.9rem;border-radius:12px;border:0;display:grid;place-items:center;cursor:pointer;background:var(--navy);color:#fff}
.ask-btn svg{width:1.25rem;height:1.25rem}
.ask-btn:disabled{opacity:.5;cursor:default}
.ask-mic{background:var(--gold-soft);color:var(--warn);border:1px solid #e9d4a6;touch-action:none;user-select:none;-webkit-user-select:none}
.ask-mic[aria-pressed=true]{background:#a33f2b;color:#fff;border-color:#a33f2b;box-shadow:0 0 0 4px rgba(163,63,43,.2)}
.ask-stop{background:#a33f2b}
.ask-stop[hidden]{display:none}
.ask-bar{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem .9rem;margin-top:.55rem;font:400 .8rem/1.3 var(--sans);color:var(--muted)}
.ask-bar label{display:inline-flex;align-items:center;gap:.35rem;color:var(--ink);font-weight:600}
.ask-bar select{font:inherit;padding:.2rem .3rem;border:1px solid var(--line);border-radius:6px;background:#fff;color:var(--ink)}
.ask-status{flex-basis:100%;min-height:1.1em}
.ask-prog{display:block;height:4px;border-radius:4px;background:var(--line);overflow:hidden;margin-top:.3rem}
.ask-prog i{display:block;height:100%;width:0;background:var(--river);transition:width .2s}
.ask-fine{margin:.45rem 0 0;font:400 .74rem/1.4 var(--sans);color:var(--muted)}
.ask-ts{margin-top:.4rem}
.ask-ts:empty{display:none}
.ask-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.ask-card{background:var(--navy);color:#c9d2e3;border-radius:var(--r);padding:1.5rem}
.ask-card h3{color:#fff}
@media (max-width:640px){
  .ask-panel{inset:0;width:100%;border-radius:0;border:0}
  .ask-inline .ask-panel{height:calc(100svh - 8.5rem);min-height:26rem;border:1px solid var(--line);border-radius:14px}
  .ask-fab{right:.8rem;bottom:.8rem;padding:.75rem 1rem}
  .ask-msg{max-width:100%}
}
@media print{.ask-fab{display:none}}
body:has(.map-shell) .ask-fab{bottom:2.4rem}
.ask-consent{margin-top:.6rem;padding:.85rem .95rem;border-radius:12px;background:var(--gold-soft);border:1px solid #ecd9ae;font:400 .9rem/1.5 var(--sans);color:var(--ink)}
.ask-consent[hidden]{display:none}
.ask-consent p{margin:0 0 .6rem}
.ask-c-t{font-weight:700;color:var(--navy)}
.ask-c-b{display:flex;gap:.5rem;flex-wrap:wrap}
.ask-c-b .btn{padding:.55rem 1rem;font-size:.9rem}
/* MORONI mark: the badge of MORONI, this site's guide. Navy tile, gold letters, a slow gradient shimmer on the rim. */
:root{--si-a:#d9a948;--si-b:#7cc6ff;--si-c:#9b8cff}
.si-mark{position:relative;flex:none;display:inline-grid;place-items:center;width:2.35rem;height:2.35rem;border-radius:11px;
  font:800 .95rem/1 var(--sans);letter-spacing:.04em;color:#f7e3b4;background:radial-gradient(120% 120% at 30% 20%,#23407a 0%,#0f1f3a 60%,#0a1529 100%);
  box-shadow:0 0 0 1px rgba(217,169,72,.35),0 4px 14px rgba(124,198,255,.18);isolation:isolate}
.si-mark::before{content:"";position:absolute;inset:-1.5px;border-radius:12px;padding:1.5px;z-index:-1;
  background:conic-gradient(from var(--si-ang,0deg),var(--si-a),var(--si-b),var(--si-c),var(--si-a));
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:si-spin 6s linear infinite}
.si-mark::after{content:"";position:absolute;inset:0;border-radius:11px;background:linear-gradient(115deg,transparent 35%,rgba(255,255,255,.22) 50%,transparent 65%);
  background-size:250% 100%;animation:si-sheen 4.5s ease-in-out infinite;pointer-events:none}
@property --si-ang{syntax:"<angle>";inherits:false;initial-value:0deg}
@keyframes si-spin{to{--si-ang:360deg}}
@keyframes si-sheen{0%,55%{background-position:120% 0}100%{background-position:-120% 0}}
.si-sm{width:1.45rem;height:1.45rem;border-radius:7px;font-size:.62rem;vertical-align:-.35em;margin-right:.35rem}
.si-sm::before{border-radius:8px}.si-sm::after{border-radius:7px}
@media (prefers-reduced-motion:reduce){.si-mark::before,.si-mark::after{animation:none}}
/* floating button */
.ask-fab{padding:.5rem 1.05rem .5rem .5rem;gap:.65rem;background:linear-gradient(135deg,#0f1f3a,#18305a);border:1px solid rgba(217,169,72,.35);
  box-shadow:0 10px 30px rgba(15,31,58,.32),0 0 0 4px rgba(124,198,255,.08)}
.ask-fab:hover{background:linear-gradient(135deg,#132849,#1d3a6b);box-shadow:0 12px 34px rgba(15,31,58,.38),0 0 0 5px rgba(124,198,255,.14)}
.ask-fab-t{display:flex;flex-direction:column;align-items:flex-start;line-height:1.1}
.ask-fab-t b{font-size:1.02rem;font-weight:700;color:#fff}
.ask-fab-t small{font:600 .66rem/1.2 var(--sans);letter-spacing:.06em;text-transform:uppercase;color:#bfcfe6;margin-top:.2rem}
/* nav item */
.nav a[href="/ask/"]{display:inline-flex;align-items:center;gap:.4rem}
.nav a[href="/ask/"]::before{content:"M";content:"M"/"";display:inline-grid;place-items:center;width:1.3rem;height:1.3rem;border-radius:6px;font:800 .56rem/1 var(--sans);letter-spacing:.03em;color:#f7e3b4;
  background:linear-gradient(#0f1f3a,#0f1f3a) padding-box,conic-gradient(from var(--si-ang,0deg),var(--si-a),var(--si-b),var(--si-c),var(--si-a)) border-box;border:1.5px solid transparent;animation:si-spin 6s linear infinite}
@media (prefers-reduced-motion:reduce){.nav a[href="/ask/"]::before{animation:none}}
.ask-head .si-mark{width:2.6rem;height:2.6rem;font-size:1.02rem}
.ask-promo .eyebrow{display:flex;align-items:center}
.page-head .eyebrow .si-mark{vertical-align:-.45em}
@media (max-width:640px){.ask-fab-t small{display:none}.ask-fab{padding:.45rem .95rem .45rem .45rem}}
/* Moroni presence: voice stage */
.ask-stage{display:flex;flex-direction:column;align-items:center;gap:.35rem;padding:.9rem 1rem 1rem;border-top:1px solid var(--line);
  background:radial-gradient(120% 90% at 50% 0%,#18305a 0%,#0f1f3a 55%,#0b172d 100%);color:#e8eef8;
  opacity:0;transform:translateY(12px) scale(.96);transition:opacity .28s ease,transform .32s cubic-bezier(.2,.8,.2,1)}
.ask-stage.on{opacity:1;transform:none}
.ask-stage[hidden]{display:none}
.ask-state{margin:0;font:700 .74rem/1 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--gold-2);min-height:1em}
.ask-live{margin:.15rem 0 .2rem;min-height:1.5em;max-width:28rem;text-align:center;font:400 1.05rem/1.45 var(--serif);color:#fff}
.ask-live:empty::before{content:"\00a0"}
.ask-stage-b{display:flex;gap:.5rem}
.ask-stage-b .btn{padding:.5rem 1.1rem;font-size:.9rem}
.ask-stage .btn-line{color:#e8eef8;border-color:rgba(232,238,248,.45);background:transparent}
.ask-stage .btn-navy{background:var(--gold-2);color:var(--navy);border-color:var(--gold-2)}
.ask-stage [hidden]{display:none}
@media (max-width:640px){.ask-holo{width:7rem;height:7rem}.ask-stage{padding:.6rem .9rem .75rem;gap:.25rem}.ask-live{font-size:1rem}}
@media (prefers-reduced-motion:reduce){.ask-stage{transition:opacity .2s}.ask-stage,.ask-stage.on{transform:none}}

/* [hidden] must win over the display rules above (the close button depends on it) */
.ask-new[hidden],.ask-panel[hidden],.ask-scrim[hidden],.ask-fab[hidden],.ask-stage[hidden],.ask-consent[hidden]{display:none!important}

/* ---- Moroni hologram (voice mode presence) ---- */
.ask-stage{--lv:0}
.ask-holo{position:relative;width:11rem;height:11rem;display:grid;place-items:center;isolation:isolate}
.ask-av,.ask-av img{display:block;width:100%;height:100%}
.ask-av img{object-fit:contain;filter:drop-shadow(0 0 calc(4px + var(--lv) * 18px) rgba(124,198,255,calc(.35 + var(--lv) * .5)))}
.ask-ring{position:absolute;inset:4%;border-radius:50%;z-index:-1;
  background:radial-gradient(circle,rgba(124,198,255,calc(.16 + var(--lv) * .45)) 0%,rgba(217,169,72,calc(.08 + var(--lv) * .2)) 42%,transparent 68%);
  transform:scale(calc(1 + var(--lv) * .22));transition:transform .08s linear}
.ask-ring::before{content:"";position:absolute;inset:6%;border-radius:50%;padding:2px;
  background:conic-gradient(from var(--si-ang,0deg),rgba(217,169,72,.85),rgba(124,198,255,.85),rgba(155,140,255,.7),rgba(217,169,72,.85));
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;
  opacity:calc(.35 + var(--lv) * .65);animation:si-spin 9s linear infinite}
.ask-scan{position:absolute;inset:0;pointer-events:none;opacity:0;
  -webkit-mask:url(/assets/si-avatar-256.webp) center/contain no-repeat;mask:url(/assets/si-avatar-256.webp) center/contain no-repeat;
  background:repeating-linear-gradient(0deg,rgba(190,230,255,.22) 0 1px,transparent 1px 4px);background-size:100% 8px}
/* listening: hologram flicker + drifting scanlines */
.ask-stage[data-state=listening] .ask-scan{opacity:1;animation:si-scan 1.6s linear infinite}
.ask-stage[data-state=listening] .ask-av{animation:si-flicker 3.2s steps(1) infinite}
/* thinking: slow glow sweep down the figure */
.ask-stage[data-state=thinking] .ask-scan,.ask-stage[data-state=preparing] .ask-scan,.ask-stage[data-state=gap] .ask-scan{opacity:1;background:linear-gradient(180deg,transparent 0%,rgba(247,227,180,.0) 35%,rgba(247,227,180,.55) 50%,rgba(124,198,255,.0) 65%,transparent 100%);background-size:100% 260%;animation:si-sweep 2.4s ease-in-out infinite}
.ask-stage[data-state=thinking] .ask-ring::before,.ask-stage[data-state=preparing] .ask-ring::before,.ask-stage[data-state=gap] .ask-ring::before{animation-duration:3.5s}
/* speaking: glow pulses with MORONI's voice through --lv (set from the AnalyserNode) */
.ask-stage[data-state=speaking] .ask-scan{opacity:calc(.3 + var(--lv) * .7)}
@keyframes si-scan{to{background-position:0 8px}}
@keyframes si-sweep{0%{background-position:0 100%}100%{background-position:0 0}}
@keyframes si-flicker{0%{opacity:1}12%{opacity:.86}13%{opacity:1}47%{opacity:.93}48%{opacity:1}71%{opacity:.82}72.5%{opacity:1}}
/* small round icon of the guide (button + panel header) */
.si-face{border-radius:50%;padding:0;overflow:visible;background:radial-gradient(120% 120% at 30% 20%,#23407a 0%,#0f1f3a 70%)}
.si-face::before{border-radius:50%}.si-face::after{border-radius:50%}
.si-face img{width:100%;height:100%;border-radius:50%;object-fit:cover;display:block}
.si-face i{position:absolute;right:-.3rem;bottom:-.2rem;font:800 .5rem/1 var(--sans);font-style:normal;letter-spacing:.06em;color:#0f1f3a;
  background:linear-gradient(135deg,#f7e3b4,#d9a948);padding:.16rem .26rem;border-radius:6px;box-shadow:0 0 0 1.5px #0f1f3a,0 0 8px rgba(217,169,72,.5)}
.ask-fab .si-face{width:2.5rem;height:2.5rem}
.ask-head .si-face{width:2.9rem;height:2.9rem}
/* closing: panel slides away */
.ask-panel{transition:opacity .2s ease,transform .2s ease}
.ask-panel.closing{opacity:0;transform:translateY(14px) scale(.985)}
/* the excuse-me bubble that lingers for a moment after closing mid-answer */
.si-bubble{position:fixed;right:1.3rem;bottom:5.2rem;z-index:80;width:4.2rem;height:4.2rem;border-radius:50%;pointer-events:none;
  background:radial-gradient(circle,#18305a,#0b172d);box-shadow:0 0 0 1.5px rgba(217,169,72,.6),0 0 26px rgba(124,198,255,.45);
  opacity:0;transform:scale(.6);transition:opacity .25s ease,transform .3s cubic-bezier(.2,.8,.2,1)}
.si-bubble.on{opacity:1;transform:none;animation:si-sheepish .9s ease-in-out 1}
.si-bubble.out{opacity:0;transform:scale(.7) translateY(8px)}
.si-bubble-av{display:block;width:100%;height:100%;border-radius:50%;overflow:hidden}
.si-bubble-av img{width:100%;height:100%;object-fit:cover;animation:si-flicker 1.2s steps(1) 1}
@keyframes si-sheepish{0%{transform:scale(.6)}35%{transform:scale(1.04) rotate(-6deg)}55%{transform:rotate(4deg)}75%{transform:rotate(-2deg)}100%{transform:none}}
.ask-paused{margin:.4rem 0 0;font:600 .78rem/1 var(--sans);color:var(--muted,#6b7280);letter-spacing:.03em}
.ask-resume{list-style:none;margin:.4rem 0;padding:.75rem .9rem;border:1px solid rgba(217,169,72,.45);border-radius:12px;background:#fffaf0}
.ask-resume p{margin:0 0 .5rem;font-weight:600}
@media (max-width:640px){.si-bubble{right:.9rem;bottom:4.6rem}}
@media (prefers-reduced-motion:reduce){
  .ask-stage .ask-scan,.ask-stage .ask-av,.ask-ring::before,.si-bubble.on,.si-bubble-av img{animation:none!important}
  .ask-ring{transform:none}.ask-panel,.si-bubble{transition:opacity .2s}.ask-panel.closing,.si-bubble,.si-bubble.out{transform:none}}

.ask-note{align-self:flex-start;max-width:92%;padding:.55rem .8rem;border-radius:12px;background:var(--gold-soft);border:1px solid #ecd9ae;font:500 .88rem/1.45 var(--sans);color:var(--ink)}
/* Panel header: SI face, "Ask MORONI", and in red underneath "Guide to the Pasión River model" */
:root{--si-red:#b42318;--si-red-navy:#ff8f80} /* #b42318: 6.6:1 on white, 5.7:1 on stone; #ff8f80: 7.4:1 on navy, 5.9:1 on navy-2 */
.ask-name{flex:1;min-width:0}
.ask-id{display:flex;align-items:center;gap:.7rem}
.ask-tt{min-width:0}
.ask-head h2{font-size:1.2rem;line-height:1.15}
.ask-head .ask-sub{margin:.18rem 0 0;font:600 .84rem/1.2 var(--sans);color:var(--si-red)}
.ask-head .ask-acro{margin:.45rem 0 0 calc(2.9rem + .7rem)}
.ask-head .ask-ctl{align-self:flex-start}
.si-sub{color:var(--si-red)}
.ask-fab-t small.si-sub{color:var(--si-red-navy);text-transform:none;letter-spacing:.01em;font-size:.7rem}
.eyebrow .si-sub{color:var(--si-red)}
@media (max-width:640px){.ask-head .ask-acro{margin-left:0}}
.ask-fab-t{text-align:left}

/* ---- MORONI's voice download (the mic no longer waits for it; the device voice answers meanwhile) ---- */
.ask-dl{margin:0 0 .6rem;border:2px solid var(--si-red);border-radius:14px;background:#fff;color:var(--ink);overflow:hidden;font-family:var(--sans);box-shadow:0 6px 20px rgba(180,35,24,.14)}
.ask-dl.in-stage{width:min(100%,26rem);margin:.4rem 0 .2rem;box-shadow:0 10px 30px rgba(0,0,0,.35)}
.ask-dl-warn{display:flex;align-items:center;gap:.5rem;margin:0;padding:.55rem .85rem;background:var(--si-red);color:#fff;font:800 .95rem/1.2 var(--sans);letter-spacing:.01em}
.ask-dl-warn svg{flex:none;width:1.25rem;height:1.25rem;animation:ask-hg 2.4s ease-in-out infinite}
@keyframes ask-hg{0%,40%{transform:none}50%,90%{transform:rotate(180deg)}100%{transform:rotate(360deg)}}
.ask-dl-in{padding:.7rem .85rem .8rem}
.ask-dl-row{display:flex;align-items:center;gap:.55rem}
.ask-dl-what{flex:1;min-width:0;display:flex;flex-direction:column;gap:.15rem}
.ask-dl-t{font:700 1.02rem/1.25 var(--sans);color:var(--navy)}
.ask-dl-sz{font:600 .86rem/1.3 var(--sans);color:#3d4656}
.ask-dl-arrow{flex:none;width:2.6rem;height:1.75rem;color:var(--si-red);animation:ask-poke 1.1s ease-in-out infinite}
.ask-dl-arrow svg{width:100%;height:100%;display:block}
@keyframes ask-poke{0%,100%{transform:translateX(0)}50%{transform:translateX(5px)}}
.ask-dl-pct{flex:none;min-width:4.6ch;text-align:right;font:800 2.5rem/1 var(--sans);color:var(--navy);font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.ask-dl-bar{position:relative;height:16px;margin:.6rem 0 .5rem;border-radius:999px;background:#ebe5d8;border:1px solid #c9bfa9;overflow:hidden}
.ask-dl-bar i{display:block;height:100%;width:2%;border-radius:999px;background:repeating-linear-gradient(-45deg,var(--navy) 0 10px,#23407a 10px 20px);background-size:28px 100%;transition:width .3s ease;animation:ask-stripe 1s linear infinite}
@keyframes ask-stripe{to{background-position:28px 0}}
.ask-dl-note{margin:0;font:500 .86rem/1.4 var(--sans);color:var(--ink)}
.ask-dl-slow{margin:.45rem 0 0;padding:.45rem .6rem;border-radius:8px;background:var(--warn-soft,#fff4e5);border:1px solid #e7c9a8;font:600 .84rem/1.4 var(--sans);color:var(--ink)}
.ask-dl-type{margin:.45rem 0 0;font:700 .88rem/1.35 var(--sans);color:var(--river)}
.ask-dl-b{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.55rem}
.ask-dl-b .btn{padding:.5rem 1rem;font-size:.88rem}
.ask-dl-b [hidden],.ask-dl [hidden]{display:none!important}
.ask-foot .ask-dl-b .ask-dl-typeb{display:none}
.ask-dl.in-stage .ask-dl-b .btn-line{color:var(--navy);border-color:#c9bfa9;background:#fff}
.ask-dl.is-warm .ask-dl-arrow{visibility:hidden}
.ask-dl.is-warm .ask-dl-bar i{width:100%!important}
.ask-dl.is-ready{border-color:#1f7a3a;box-shadow:0 6px 20px rgba(31,122,58,.16)}
.ask-dl.is-ready .ask-dl-warn{background:#1f7a3a}
.ask-dl.is-ready .ask-dl-warn svg,.ask-dl.is-ready .ask-dl-arrow{display:none}
.ask-dl.is-ready .ask-dl-warn::before{content:"\2713";font-size:1.1rem}
.ask-dl.is-ready .ask-dl-in{display:none}
.ask-dl.is-fail .ask-dl-arrow,.ask-dl.is-fail .ask-dl-pct,.ask-dl.is-fail .ask-dl-bar{display:none}
.ask-dl.is-fail .ask-dl-warn svg{animation:none}
.ask-dl.is-fail .ask-dl-foot .ask-dl-typeb{display:none}
.ask-foot .ask-dl.is-fail .ask-dl-typeb{display:none}
/* stage while waiting: the hologram dims and steps back; the state line reads "Please wait · not listening yet" */
.ask-stage[data-state=waitvoice] .ask-holo,.ask-stage[data-state=voicefail] .ask-holo{width:4.5rem;height:4.5rem;opacity:.5;filter:grayscale(.7)}
.ask-stage[data-state=waitvoice] .ask-scan,.ask-stage[data-state=voicefail] .ask-scan{opacity:0!important}
.ask-stage[data-state=waitvoice] .ask-state,.ask-stage[data-state=voicefail] .ask-state{font-size:1rem;letter-spacing:.08em;color:var(--si-red-navy)}
.ask-stage[data-state=waitvoice] .ask-live,.ask-stage[data-state=voicefail] .ask-live{display:none}
.ask-stage.just-ready .ask-state{font-size:1rem;color:#8ff0a8;animation:ask-ready 1.2s ease-out 2}
@keyframes ask-ready{0%{transform:scale(1.15)}100%{transform:none}}
/* the microphone while the voice loads: an hourglass, dashed red outline, plainly not ready */
.ask-mic.ask-wait{background:#fff;color:var(--si-red);border:2px dashed var(--si-red);cursor:progress}
.ask-mic.ask-wait svg{animation:ask-hg 2.4s ease-in-out infinite}
@media (max-width:640px){.ask-dl-pct{font-size:2.1rem}.ask-dl-t{font-size:.96rem}.ask-dl-arrow{width:2.1rem}.ask-stage[data-state=waitvoice] .ask-holo{width:3.4rem;height:3.4rem}}
@media (prefers-reduced-motion:reduce){.ask-dl-warn svg,.ask-dl-arrow,.ask-dl-bar i,.ask-mic.ask-wait svg,.ask-stage.just-ready .ask-state{animation:none!important}}
.ask-dl.is-fail .ask-dl-warn svg{display:none}
.ask-dl.is-fail .ask-dl-warn::before{content:"!";display:inline-grid;place-items:center;width:1.3rem;height:1.3rem;border-radius:50%;background:#fff;color:var(--si-red);font:900 .9rem/1 var(--sans)}

/* Oct 28 2026: the download no longer blocks the mic, so the card is calm: navy strip, no pointing arrow */
.ask-dl:not(.is-fail):not(.is-ready) .ask-dl-warn{background:#18305a}
.ask-dl:not(.is-fail):not(.is-ready) .ask-dl-warn svg{animation:none}
.ask-dl-arrow{display:none!important}

/* ===== Voice conversation, Oct 28 2026 redesign (Ben: avatar too big; one control; no media symbols) =====
   One control: MORONI's small picture. Idle = the "Talk" button with a mic (the only place the mic icon appears).
   Listening = green breathing ring + live level bars. Thinking = gold orbiting arc. Speaking = blue ripples.
   "End conversation" is a plain text button. */
.ask-stop{display:none!important}
.ask-mic.ask-talk{width:auto;padding:0 .85rem;display:inline-flex;align-items:center;gap:.35rem;font:700 .9rem/1 var(--sans);touch-action:manipulation}
.ask-talking .ask-mic{display:none}
.ask-stage{flex-direction:row;align-items:center;gap:.85rem;padding:.65rem .9rem;text-align:left}
.ask-holo{width:4.5rem;height:4.5rem;flex:none;border:0;padding:0;margin:0;background:none;cursor:pointer;border-radius:50%;color:inherit}
.ask-holo:focus-visible{outline:3px solid var(--gold-2);outline-offset:5px}
.ask-stage-t{flex:1;min-width:0;display:flex;flex-direction:column;gap:.2rem}
.ask-stage .ask-state{font:800 1rem/1.15 var(--sans);letter-spacing:.02em;text-transform:none;color:#fff}
.ask-hint{margin:0;font:400 .8rem/1.35 var(--sans);color:#bfcfe6}
.ask-hint:empty{display:none}
.ask-stage .ask-live{margin:0;text-align:left;max-width:none;font:italic 400 .95rem/1.4 var(--serif);color:#f7e3b4}
.ask-stage .ask-live:empty::before{content:none}
.ask-end{align-self:flex-start;flex:none;background:transparent;border:1px solid rgba(232,238,248,.45);color:#e8eef8;border-radius:999px;padding:.4rem .75rem;font:600 .78rem/1 var(--sans);cursor:pointer;white-space:nowrap}
.ask-end:hover,.ask-end:focus-visible{background:rgba(255,255,255,.1)}
.ask-stage .ask-dl-stage:empty{display:none}
/* rings around the picture */
.ask-waves{position:absolute;inset:-5px;border-radius:50%;pointer-events:none;z-index:2}
.ask-waves i{position:absolute;inset:0;border-radius:50%;border:2px solid rgba(124,198,255,.75);opacity:0}
.ask-bars{display:none;height:1.3rem;align-items:center;gap:3px;margin:.1rem 0}
.ask-bars i{display:block;width:4px;border-radius:2px;background:#62d68c;height:calc(12% + var(--lv) * 88% * var(--k));transition:height .08s linear}
.ask-bars i:nth-child(1),.ask-bars i:nth-child(7){--k:.45}.ask-bars i:nth-child(2),.ask-bars i:nth-child(6){--k:.7}.ask-bars i:nth-child(3),.ask-bars i:nth-child(5){--k:.9}.ask-bars i:nth-child(4){--k:1}
/* listening */
.ask-stage[data-state=listening] .ask-state{color:#8ff0a8}
.ask-stage[data-state=listening] .ask-bars{display:flex}
.ask-stage[data-state=listening] .ask-waves{box-shadow:0 0 0 calc(2px + var(--lv) * 9px) rgba(98,214,140,.6);animation:ask-breathe 2.4s ease-in-out infinite}
@keyframes ask-breathe{0%,100%{transform:scale(1);opacity:.8}50%{transform:scale(1.07);opacity:1}}
/* thinking */
.ask-stage[data-state=thinking] .ask-waves,.ask-stage[data-state=preparing] .ask-waves,.ask-stage[data-state=waiting] .ask-waves{border:3px solid rgba(217,169,72,.18);border-top-color:var(--gold-2);animation:ask-orbit 1s linear infinite}
.ask-stage[data-state=thinking] .ask-state,.ask-stage[data-state=preparing] .ask-state{color:var(--gold-2)}
@keyframes ask-orbit{to{transform:rotate(360deg)}}
/* speaking */
.ask-stage[data-state=speaking] .ask-state,.ask-stage[data-state=gap] .ask-state{color:#9fd8ff}
.ask-stage[data-state=speaking] .ask-waves i,.ask-stage[data-state=gap] .ask-waves i{animation:ask-ripple 1.8s ease-out infinite}
.ask-stage .ask-waves i:nth-child(2){animation-delay:.6s}.ask-stage .ask-waves i:nth-child(3){animation-delay:1.2s}
@keyframes ask-ripple{0%{transform:scale(1);opacity:.85}100%{transform:scale(1.55);opacity:0}}
/* needs a tap */
.ask-stage[data-state=blocked] .ask-waves,.ask-stage[data-state=paused] .ask-waves{box-shadow:0 0 0 3px var(--gold-2);animation:ask-breathe 1.1s ease-in-out infinite}
.ask-stage[data-state=blocked] .ask-state,.ask-stage[data-state=paused] .ask-state{color:var(--gold-2)}
.ask-stage .ask-scan{border-radius:50%;overflow:hidden}
@media (max-width:640px){.ask-holo{width:3.6rem;height:3.6rem}.ask-stage{gap:.65rem;padding:.55rem .7rem}.ask-end{padding:.35rem .6rem}.ask-hint{font-size:.76rem}}
@media (prefers-reduced-motion:reduce){.ask-stage .ask-waves,.ask-stage .ask-waves i{animation:none!important}.ask-stage[data-state=speaking] .ask-waves i:first-child{opacity:.8}}
/* Voice details */
.ask-diag{margin-top:.35rem;font:400 .78rem/1.4 var(--sans);color:var(--muted,#5b6577)}
.ask-diag summary{cursor:pointer;font-weight:600;color:var(--navy);width:max-content}
.ask-diag-l{display:grid;grid-template-columns:max-content 1fr;gap:.15rem .7rem;margin:.45rem 0;max-height:13rem;overflow:auto}
.ask-diag-l dt{font-weight:600;color:var(--ink)}.ask-diag-l dd{margin:0;word-break:break-word}
.ask-diag-b{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center}
.ask-diag-b .btn{padding:.35rem .7rem;font-size:.78rem}
.ask-micl{display:inline-flex;gap:.3rem;align-items:center}.ask-micsel{max-width:14rem;font:inherit}
.ask-diag summary{list-style:none}.ask-diag summary::-webkit-details-marker{display:none}
.ask-diag summary::after{content:" +";font-weight:700}.ask-diag[open] summary::after{content:" \2212"}
/* Oct 28 2026 10:11 PM MT (Ben): small live wave line instead of level bars; no transcript echo; spoken answers folded */
.ask-bars{display:none!important}
.ask-wave{display:none;width:132px;height:28px;margin:.1rem 0;opacity:.9}
.ask-stage[data-state=listening] .ask-wave{display:block}
@media (max-width:640px){.ask-wave{width:108px;height:24px}}
.ask-msg.bot.spoken{padding-top:.45rem;padding-bottom:.45rem}
.ask-said>summary{cursor:pointer;list-style:none;font:600 .8rem/1.3 var(--sans);color:var(--muted,#5b6577)}
.ask-said>summary::-webkit-details-marker{display:none}
.ask-said>summary span{color:var(--navy);text-decoration:underline;text-underline-offset:2px}
.ask-said[open]>summary span{text-decoration:none}
.ask-said[open]>summary{margin-bottom:.4rem}
.ask-asked{font:italic 400 .85rem/1.4 var(--sans);color:var(--muted,#5b6577);margin:0 0 .4rem}
.ask-msg.spoken .ask-tools{margin-top:.25rem}
.ask-test-r{list-style:none;margin:.45rem 0 0;padding:0;display:grid;gap:.15rem}
.ask-test-r:empty{display:none}
.ask-test-r b{color:var(--ink)}

/* ===== Oct 28 2026 11:35-11:38 PM MT (Ben): voice mode takes almost no room =====
   The voice row takes the text box's place in the question row: state word + small wave line, then the small head,
   then the one Talk / End button (same place, same size). What he says and what MORONI says are typed lines in the
   conversation (no bubbles). */
.ask-voice .ask-form textarea,.ask-voice .ask-form .ask-send{display:none}
.ask-form .ask-stage{flex:1;min-width:0;height:2.9rem;flex-direction:row;align-items:center;gap:.55rem;padding:0 .3rem 0 .8rem;margin:0;border:0;border-radius:12px;
  background:linear-gradient(135deg,#0f1f3a,#18305a);color:#e8eef8;transform:none;opacity:0;transition:opacity .18s ease}
.ask-form .ask-stage.on{opacity:1;transform:none}
.ask-form .ask-stage-t{flex:1;min-width:0;flex-direction:row;align-items:center;gap:.6rem}
.ask-form .ask-stage .ask-state{flex:0 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font:700 .84rem/1 var(--sans);letter-spacing:.01em;color:#fff}
.ask-form .ask-stage .ask-wave{display:block;flex:0 1 120px;min-width:36px;width:120px;height:22px;margin:0;opacity:.95}
.ask-form .ask-stage[data-state=thinking] .ask-wave,.ask-form .ask-stage[data-state=preparing] .ask-wave,.ask-form .ask-stage[data-state=waitvoice] .ask-wave,.ask-form .ask-stage[data-state=waiting] .ask-wave{opacity:.3}
.ask-form .ask-stage[data-state] .ask-holo{width:2.3rem;height:2.3rem;flex:none;opacity:1;filter:none}
.ask-form .ask-stage .ask-dl-stage{display:none}
.ask-form .ask-stage.on .ask-holo{animation:ask-pop .22s cubic-bezier(.2,.8,.2,1)}
@keyframes ask-pop{from{transform:scale(.4);opacity:0}to{transform:none;opacity:1}}
.ask-form .ask-stage .ask-waves{inset:-3px}
.ask-form .ask-stage .ask-av img{transform-origin:50% 85%;transition:transform .08s linear}
/* listening: the head leans in and breathes with his voice */
.ask-form .ask-stage[data-state=listening] .ask-av img{transform:scale(calc(1 + var(--lv) * .07)) rotate(calc(var(--lv) * -4deg))}
.ask-form .ask-stage[data-state=listening] .ask-waves{box-shadow:0 0 0 calc(1.5px + var(--lv) * 5px) rgba(98,214,140,.65)}
/* speaking: the head moves with MORONI's voice */
.ask-form .ask-stage[data-state=speaking] .ask-av img{transform:translateY(calc(var(--lv) * -2px)) scale(calc(1 + var(--lv) * .09))}
.ask-form .ask-stage[data-state=speaking] .ask-av,.ask-form .ask-stage[data-state=gap] .ask-av{animation:ask-nod 1.6s ease-in-out infinite}
@keyframes ask-nod{0%,100%{transform:none}30%{transform:rotate(-3deg)}65%{transform:rotate(2.5deg)}}
@keyframes ask-ripple{0%{transform:scale(1);opacity:.8}100%{transform:scale(1.35);opacity:0}}
.ask-form .ask-stage[data-state=listening] .ask-state{color:#8ff0a8}
.ask-form .ask-stage[data-state=thinking] .ask-state,.ask-form .ask-stage[data-state=preparing] .ask-state,.ask-form .ask-stage[data-state=waitvoice] .ask-state{color:var(--gold-2);font-size:.84rem;letter-spacing:.01em}
.ask-form .ask-stage[data-state=speaking] .ask-state,.ask-form .ask-stage[data-state=gap] .ask-state{color:#9fd8ff}
.ask-form .ask-stage[data-state=voicefail] .ask-state,.ask-form .ask-stage[data-state=blocked] .ask-state,.ask-form .ask-stage[data-state=paused] .ask-state{color:var(--si-red-navy);font-size:.84rem;letter-spacing:.01em}
/* waiting for the voice: the head is dim and still */
.ask-form .ask-stage[data-state=waitvoice] .ask-av{opacity:.55;filter:grayscale(.6)}
/* the one control: Talk (mic) <-> End (no icon), same spot, same size */
.ask-talking .ask-mic.ask-talk,.ask-mic.ask-talk{display:inline-flex;justify-content:center;width:5.3rem;padding:0 .5rem}
.ask-mic.ask-talk.is-on{background:#fff;color:#a33f2b;border:1.5px solid #a33f2b;box-shadow:0 0 0 3px rgba(163,63,43,.12)}
.ask-mic.ask-talk.is-on:hover{background:#a33f2b;color:#fff}
.ask-mic.ask-talk:focus-visible{outline:3px solid var(--gold-2);outline-offset:2px}
@media (max-width:640px){.ask-form .ask-stage{padding-left:.6rem;gap:.4rem}.ask-form .ask-stage .ask-wave{width:72px;flex-basis:72px}.ask-mic.ask-talk{width:4.8rem;padding:0 .4rem}}

/* typed lines: "YOU" and "MORONI", letter by letter, a terminal feel, compact */
.ask-line{list-style:none;display:grid;grid-template-columns:3.9rem 1fr;gap:.55rem;align-items:baseline;margin:0;padding:0;
  font:400 .9rem/1.5 ui-monospace,"Cascadia Mono","Segoe UI Mono",Consolas,Menlo,monospace;color:var(--ink)}
.ask-line+.ask-line{margin-top:-.45rem}
.ask-who{font:700 .62rem/2.2 var(--sans);letter-spacing:.13em;text-transform:uppercase;text-align:right;color:#7a8394;white-space:nowrap}
.ask-line.bot .ask-who{color:var(--river)}
.ask-line.me .ask-tx{color:#4b5565}
.ask-tx{min-width:0;overflow-wrap:anywhere}
.ask-tt{white-space:pre-wrap}
.ask-caret{display:inline-block;width:.55em;height:1.05em;margin-left:1px;vertical-align:-.17em;background:currentColor;opacity:.5;animation:ask-blink 1s steps(1) infinite}
@keyframes ask-blink{50%{opacity:0}}
.ask-line.done .ask-caret{display:none}
.ask-line.full .ask-tx p{margin:0 0 .45em}.ask-line.full .ask-tx p:last-of-type{margin-bottom:0}
.ask-line.full .ask-tx ul{margin:.1em 0 .45em;padding-left:1.2em}
.ask-line sup a{font:700 .66rem/1 var(--sans);text-decoration:none;background:var(--gold-soft);color:var(--warn);padding:.1em .3em;border-radius:4px;margin-left:.1em}
.ask-src-mini{margin:.3rem 0 0;font:400 .74rem/1.45 var(--sans);color:var(--muted)}
.ask-src-mini b{font-size:.62rem;letter-spacing:.12em;text-transform:uppercase;color:var(--gold);margin-right:.25rem}
.ask-src-mini a{color:var(--river)}
.ask-line .ask-play{display:inline;margin:.25rem 0 0;padding:0;border:0;background:none;font:600 .72rem/1.3 var(--sans);color:var(--river);text-decoration:underline;text-underline-offset:2px;cursor:pointer}
@media (max-width:640px){.ask-line{grid-template-columns:3.3rem 1fr;gap:.45rem;font-size:.86rem}}
@media (prefers-reduced-motion:reduce){.ask-caret{animation:none}.ask-form .ask-stage.on .ask-holo,.ask-form .ask-stage .ask-av{animation:none!important}.ask-form .ask-stage .ask-av img{transform:none!important}}

/* closing goodbye: a small face that fades in and out in about half a second, no wobble */
.si-bubble{width:2.2rem;height:2.2rem;bottom:4.6rem;box-shadow:0 0 0 1px rgba(217,169,72,.45),0 0 8px rgba(124,198,255,.25);transition:opacity .12s ease,transform .12s ease;transform:scale(.85)}
.si-bubble.on{animation:none;transform:none;opacity:.9}
.si-bubble.out{opacity:0;transform:scale(.9)}
.si-bubble-av img{animation:none}
/* Talk / End is always the last thing in the question row, so it never moves when voice mode hides the send arrow */
.ask-form .ask-send{order:1}.ask-form .ask-mic.ask-talk{order:2}
/* the one-time voice download, while talking: one slim line above the question row */
.ask-voice .ask-dl{margin:0 0 .45rem;border-width:1px;border-radius:10px;box-shadow:none}
.ask-voice .ask-dl:not(.is-fail):not(.is-ready) .ask-dl-warn{display:none}
.ask-voice .ask-dl-warn{padding:.3rem .6rem;font-size:.8rem}
.ask-voice .ask-dl-in{padding:.4rem .65rem .5rem}
.ask-voice .ask-dl-t{font-size:.82rem}.ask-voice .ask-dl-sz{font-size:.72rem}
.ask-voice .ask-dl-pct{font-size:1.15rem;min-width:3.6ch}
.ask-voice .ask-dl-bar{height:6px;margin:.35rem 0 0}
.ask-voice .ask-dl-note,.ask-voice .ask-dl-type{display:none!important}
.ask-voice .ask-dl-slow{margin-top:.3rem;padding:.3rem .5rem;font-size:.76rem}
.ask-voice .ask-fine{display:none}
.ask-form .ask-stage .ask-state{flex:0 0 auto;max-width:70%}
.ask-form .ask-stage .ask-wave{flex:1 1 auto;min-width:24px;max-width:120px}
