:root{--echo-success: #10B981;--echo-error: #F43F5E;--echo-warning: #F59E0B;--echo-info: #0EA5E9;--echo-enter-ms: .24s;--echo-exit-ms: .18s;--echo-z: 10000;--echo-width: 22rem;--echo-offset: 5.5rem;--echo-gap: .65rem;--echo-radius: 1rem}.echo-root{--echo-accent: var(--echo-info);position:fixed;z-index:var(--echo-z);display:flex;width:min(var(--echo-width),calc(100vw - 2rem));flex-direction:column;gap:.55rem;pointer-events:none}.echo-root[data-echo-position=top-right]{top:var(--echo-offset);right:1rem;align-items:flex-end}.echo-root[data-echo-position=top-left]{top:var(--echo-offset);left:1rem;align-items:flex-start}.echo-root[data-echo-position=top-center]{top:var(--echo-offset);left:50%;align-items:center;transform:translate(-50%)}.echo-root[data-echo-position=bottom-right]{right:1rem;bottom:1.25rem;align-items:flex-end}.echo-root[data-echo-position=bottom-left]{bottom:1.25rem;left:1rem;align-items:flex-start}.echo-root[data-echo-position=bottom-center]{bottom:1.25rem;left:50%;align-items:center;transform:translate(-50%)}.echo-stack{display:flex;width:100%;flex-direction:column;gap:var(--echo-gap);pointer-events:none}.echo-root[data-echo-position^=bottom] .echo-stack{flex-direction:column-reverse}.echo-toast{--echo-deck: 0;position:relative;display:grid;width:100%;grid-template-columns:auto minmax(0,1fr) auto;gap:.75rem;align-items:start;padding:.85rem .8rem .9rem .85rem;overflow:hidden;pointer-events:auto;contain:layout;color:var(--text-primary, #1e293b);background:var(--surface-glass, rgba(255, 255, 255, .78));border:1px solid color-mix(in srgb,var(--echo-accent) 22%,var(--border-soft, #e2e8f0));border-radius:var(--echo-radius);box-shadow:0 18px 40px -24px color-mix(in srgb,var(--echo-accent) 55%,#0f172a),0 1px color-mix(in srgb,#fff 40%,transparent);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);transform-origin:top center;opacity:0;transform:translate3d(18px,0,0) scale(calc(1 - (var(--echo-deck) * .04)));will-change:transform,opacity}.echo-root[data-echo-position$=left] .echo-toast{transform:translate3d(-18px,0,0) scale(calc(1 - (var(--echo-deck) * .04)))}.echo-root[data-echo-position$=center] .echo-toast{transform:translate3d(0,-12px,0) scale(calc(1 - (var(--echo-deck) * .04)))}.echo-root[data-echo-position^=bottom][data-echo-position$=center] .echo-toast{transform:translate3d(0,12px,0) scale(calc(1 - (var(--echo-deck) * .04)))}.echo-toast.is-in{opacity:1;transform:translate3d(0,calc(var(--echo-deck) * 6px),0) scale(calc(1 - (var(--echo-deck) * .04)));transition:transform var(--echo-enter-ms) cubic-bezier(.22,1,.36,1),opacity var(--echo-enter-ms) ease}.echo-toast.is-out{opacity:0;transform:translate3d(0,-6px,0) scale(.98);transition:transform var(--echo-exit-ms) ease,opacity var(--echo-exit-ms) ease}.echo-toast[data-echo-enter=fade]{transform:translate3d(0,calc(var(--echo-deck) * 6px),0) scale(calc(1 - (var(--echo-deck) * .04)))}.echo-toast[data-echo-enter=pop]{transform:translate3d(0,8px,0) scale(.92)}.echo-toast[data-echo-enter=pop].is-in{transform:translate3d(0,calc(var(--echo-deck) * 6px),0) scale(calc(1 - (var(--echo-deck) * .04)))}.echo-toast[data-echo-enter=drop]{transform:translate3d(0,-28px,0) scale(.98)}.echo-toast[data-echo-enter=drop].is-in{transform:translate3d(0,calc(var(--echo-deck) * 6px),0) scale(calc(1 - (var(--echo-deck) * .04)))}.echo-toast[data-echo-exit=slide].is-out{transform:translate3d(24px,0,0)}.echo-toast[data-echo-exit=pop].is-out,.echo-toast[data-echo-exit=shrink].is-out{transform:scale(.86)}.echo-toast.is-dragging{transition:none}.echo-toast--static,.echo-toast--static.is-in,.echo-toast--static.is-out{opacity:1;transform:none;transition:none;will-change:auto}.echo-toast__disc{display:grid;width:2rem;height:2rem;place-items:center;color:var(--echo-accent);background:color-mix(in srgb,var(--echo-accent) 12%,transparent);border-radius:999px}.echo-icon{width:1.05rem;height:1.05rem}.echo-icon__draw{stroke-dasharray:36;stroke-dashoffset:36;animation:echo-draw .42s ease forwards}.echo-icon--spin{animation:echo-spin .76s linear infinite}.echo-toast__body{min-width:0;padding-top:.1rem}.echo-toast__title{margin:0;font-family:var(--font-heading, Sora, Inter, sans-serif);font-size:.875rem;font-weight:650;letter-spacing:-.01em;line-height:1.35}.echo-toast__description{margin:.25rem 0 0;font-size:.75rem;line-height:1.45;color:var(--text-muted, #64748b)}.echo-toast__action{margin-top:.45rem;padding:0;font-size:.75rem;font-weight:700;color:var(--echo-accent);background:none;border:0;cursor:pointer}.echo-toast__close{display:grid;width:1.6rem;height:1.6rem;place-items:center;color:var(--text-muted, #64748b);background:transparent;border:0;border-radius:999px;cursor:pointer}.echo-toast__close svg{width:.9rem;height:.9rem}.echo-toast__close:hover{color:var(--text-primary, #0f172a);background:color-mix(in srgb,var(--text-primary, #0f172a) 6%,transparent)}.echo-toast__progress{position:absolute;right:.9rem;bottom:0;left:.9rem;height:1px;background:color-mix(in srgb,var(--echo-accent) 80%,transparent);transform-origin:left center;animation-name:echo-progress;animation-timing-function:linear;animation-fill-mode:forwards}.echo-toast.is-paused .echo-toast__progress,.echo-toast--static .echo-toast__progress{animation-play-state:paused}.echo-toast--static .echo-icon__draw{stroke-dashoffset:0;animation:none}.echo-history-toggle{display:grid;width:2.25rem;height:2.25rem;place-items:center;pointer-events:auto;color:var(--text-secondary, #334155);background:var(--surface-glass, rgba(255, 255, 255, .78));border:1px solid var(--border-soft, #e2e8f0);border-radius:999px;box-shadow:0 10px 24px -18px #0f172a;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);cursor:pointer}.echo-history-toggle svg{width:1rem;height:1rem}.echo-history{width:100%;padding:.8rem;pointer-events:auto;background:var(--surface-glass, rgba(255, 255, 255, .86));border:1px solid var(--border-soft, #e2e8f0);border-radius:var(--echo-radius);box-shadow:0 18px 40px -24px #0f172a;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.echo-history__head{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.45rem}.echo-history__title{margin:0;font-family:var(--font-heading, Sora, Inter, sans-serif);font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted, #64748b)}.echo-history__clear{padding:0;font-size:.72rem;font-weight:700;color:var(--text-secondary, #334155);background:none;border:0;cursor:pointer}.echo-history__list{display:grid;gap:.3rem}.echo-history__empty{margin:.35rem 0 0;font-size:.8rem;color:var(--text-muted, #64748b)}.echo-history__row{display:flex;width:100%;align-items:baseline;justify-content:space-between;gap:.75rem;padding:.45rem .4rem;text-align:left;background:transparent;border:0;border-radius:.7rem;cursor:pointer}.echo-history__row:hover{background:color-mix(in srgb,var(--echo-error) 6%,transparent)}.echo-history__row[data-echo-type=warning]:hover{background:color-mix(in srgb,var(--echo-warning) 8%,transparent)}.echo-history__row-title{min-width:0;font-size:.8rem;font-weight:650;color:var(--text-primary, #0f172a)}.echo-history__row-meta{flex:none;font-size:.68rem;color:var(--text-muted, #64748b)}@keyframes echo-draw{to{stroke-dashoffset:0}}@keyframes echo-progress{0%{transform:scaleX(1)}to{transform:scaleX(0)}}html.dark .echo-toast,html.dark .echo-history,html.dark .echo-history-toggle{color:var(--text-primary, #e7ebf3);box-shadow:0 18px 40px -22px #020617}@media(max-width:639px){.echo-root{--echo-offset: 4.75rem;width:min(24rem,calc(100vw - 1.5rem))}}.echo-dialog{--echo-dialog-accent: var(--echo-info);position:fixed;top:0;right:0;bottom:0;left:0;z-index:calc(var(--echo-z) + 50);display:grid;place-items:center;padding:1.25rem}.echo-dialog[hidden]{display:none!important}.echo-dialog__backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at 50% 18%,color-mix(in srgb,var(--echo-dialog-accent) 26%,transparent),transparent 38%),radial-gradient(circle at 88% 92%,color-mix(in srgb,var(--echo-dialog-accent) 14%,transparent),transparent 26%),color-mix(in srgb,#020617 64%,transparent);backdrop-filter:blur(18px) saturate(1.2);-webkit-backdrop-filter:blur(18px) saturate(1.2);opacity:0;transition:opacity .28s ease}.echo-dialog.is-open .echo-dialog__backdrop{opacity:1}.echo-dialog__panel{position:relative;z-index:1;display:grid;width:min(40rem,calc(100vw - 2.5rem));max-width:100%;overflow:hidden;padding:2rem 1.9rem 1.7rem 2.05rem;text-align:left;color:var(--text-primary, #0f172a);background:linear-gradient(180deg,color-mix(in srgb,var(--echo-dialog-accent) 7%,#fff),var(--surface-elevated, #fff) 38%),var(--surface-elevated, #fff);border:1px solid color-mix(in srgb,var(--echo-dialog-accent) 22%,var(--border-soft, #e2e8f0));border-radius:2rem;box-shadow:0 40px 90px -28px color-mix(in srgb,#020617 55%,var(--echo-dialog-accent)),0 1px color-mix(in srgb,#fff 70%,transparent);transform:translate3d(0,22px,0) scale(.96);opacity:0;transition:transform .42s cubic-bezier(.16,1,.3,1),opacity .28s ease}.echo-dialog.is-open .echo-dialog__panel{transform:none;opacity:1}.echo-dialog__glow{position:absolute;inset:-40% -20% auto;height:14rem;background:radial-gradient(circle,color-mix(in srgb,var(--echo-dialog-accent) 34%,transparent),transparent 68%);pointer-events:none;animation:echo-dialog-glow 5s ease-in-out infinite}.echo-dialog__rail{position:absolute;top:1.1rem;bottom:1.1rem;left:0;width:.28rem;border-radius:999px;background:var(--echo-dialog-accent);box-shadow:0 0 18px color-mix(in srgb,var(--echo-dialog-accent) 55%,transparent)}.echo-dialog__head{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr);gap:1.15rem 1.25rem;align-items:center}.echo-dialog__lead{min-width:0}.echo-dialog__eyebrow{margin:0;font-family:var(--font-heading, Sora, Inter, sans-serif);font-size:.78rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--echo-dialog-accent)}.echo-dialog__radar{position:relative;display:grid;width:5.6rem;height:5.6rem;place-items:center;flex-shrink:0}.echo-dialog__ring,.echo-dialog__sweep,.echo-dialog__burst,.echo-dialog__core{position:absolute;top:0;right:0;bottom:0;left:0;margin:auto;border-radius:999px}.echo-dialog__ring{border:1px solid color-mix(in srgb,var(--echo-dialog-accent) 28%,transparent)}.echo-dialog__ring:nth-child(1){top:0;right:0;bottom:0;left:0}.echo-dialog__ring:nth-child(2){top:.45rem;right:.45rem;bottom:.45rem;left:.45rem}.echo-dialog__ring:nth-child(3){top:.9rem;right:.9rem;bottom:.9rem;left:.9rem}.echo-dialog__sweep{top:.2rem;right:.2rem;bottom:.2rem;left:.2rem;background:conic-gradient(from 200deg,transparent 62%,color-mix(in srgb,var(--echo-dialog-accent) 55%,transparent));mask:radial-gradient(farthest-side,transparent 62%,#000 63%);opacity:0}.echo-dialog__burst{top:.55rem;right:.55rem;bottom:.55rem;left:.55rem;border:2px solid color-mix(in srgb,var(--echo-success) 70%,transparent);opacity:0;transform:scale(.7)}.echo-dialog__core{top:1.35rem;right:1.35rem;bottom:1.35rem;left:1.35rem;display:grid;place-items:center;color:var(--echo-dialog-accent);background:color-mix(in srgb,var(--echo-dialog-accent) 14%,#fff);box-shadow:inset 0 1px color-mix(in srgb,#fff 70%,transparent)}.echo-dialog__core .echo-icon{width:1.6rem;height:1.6rem}.echo-dialog__title{margin:.4rem 0 0;font-family:var(--font-heading, Sora, Inter, sans-serif);font-size:clamp(1.45rem,1.2rem + .8vw,1.85rem);font-weight:750;letter-spacing:-.045em;line-height:1.2}.echo-dialog__copy{position:relative;margin:1.15rem 0 0;max-width:none;font-size:1.05rem;line-height:1.65;color:var(--text-muted, #64748b)}.echo-dialog__track{position:relative;display:grid;gap:.4rem;margin:1.05rem 0 0;padding:0;list-style:none}.echo-dialog__track[hidden]{display:none}.echo-dialog__track li{display:grid;grid-template-columns:.7rem 1fr;gap:.7rem;align-items:center;font-size:.8rem;font-weight:650;color:var(--text-muted, #64748b)}.echo-dialog__track li:before{content:"";width:.55rem;height:.55rem;border-radius:999px;background:color-mix(in srgb,var(--echo-dialog-accent) 22%,#cbd5e1)}.echo-dialog__track li.is-active{color:var(--text-primary, #0f172a)}.echo-dialog__track li.is-active:before{background:var(--echo-dialog-accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--echo-dialog-accent) 16%,transparent);animation:echo-dialog-pulse 1.1s ease-in-out infinite}.echo-dialog__track li.is-done{color:var(--text-primary, #0f172a)}.echo-dialog__track li.is-failed{color:var(--echo-error)}.echo-dialog__track li.is-failed:before{background:var(--echo-error);box-shadow:none;animation:none}.echo-dialog--scan .echo-dialog__panel{width:min(32rem,calc(100vw - 2rem))}.echo-scan__head{grid-template-columns:auto minmax(0,1fr) auto;align-items:start;column-gap:1rem;row-gap:.75rem}.echo-scan__action{min-width:0;justify-self:end;padding:.55rem 1.05rem;font-size:.8125rem;font-weight:700;color:var(--text-secondary, #334155);background:var(--surface-muted, #f1f5f9);border:0;border-radius:999px;cursor:pointer}.echo-scan__action[hidden]{display:none}.echo-scan__action:disabled{opacity:.45;cursor:not-allowed}.echo-scan__steps{display:grid;gap:.55rem}html.dark .echo-scan__action{color:var(--text-primary, #e7ebf3);background:color-mix(in srgb,#fff 8%,transparent)}@media(max-width:790px){.echo-dialog--scan{padding:.75rem;place-items:end center}.echo-dialog--scan .echo-dialog__panel{width:100%;max-width:none;border-radius:1.35rem 1.35rem 1rem 1rem}.echo-scan__head{grid-template-columns:auto minmax(0,1fr)}.echo-scan__action{grid-column:1 / -1;justify-self:stretch;width:100%}}@media(max-width:390px){.echo-dialog--scan .echo-dialog__panel{padding:1.15rem 1rem 1.05rem}}.echo-dialog__actions{position:relative;display:flex;flex-wrap:wrap;gap:.75rem;justify-content:flex-end;margin-top:1.75rem}.echo-dialog__cancel,.echo-dialog__accept{min-width:0;min-height:3.1rem;padding:.95rem 1.45rem;font-size:.98rem;font-weight:700;border:0;border-radius:999px;cursor:pointer}.echo-dialog__cancel{flex:0 1 auto}.echo-dialog__accept{flex:1 1 14rem}.echo-dialog__cancel{color:var(--text-secondary, #334155);background:var(--surface-muted, #f1f5f9)}.echo-dialog__accept{color:#fff;background:var(--text-primary, #0f172a);box-shadow:0 10px 22px -12px color-mix(in srgb,#0f172a 70%,var(--echo-dialog-accent))}.echo-dialog[data-echo-dialog-tone=danger] .echo-dialog__accept{background:var(--echo-error);box-shadow:0 10px 22px -12px var(--echo-error)}.echo-dialog[data-echo-dialog-tone=warn] .echo-dialog__accept{background:#0f172a}.echo-dialog[data-echo-dialog-stage=processing] .echo-dialog__actions,.echo-dialog[data-echo-dialog-stage=success] .echo-dialog__actions{min-height:3.1rem}.echo-dialog[data-echo-dialog-stage=processing] .echo-dialog__ring{animation:echo-dialog-rings 2.4s ease-out infinite}.echo-dialog[data-echo-dialog-stage=processing] .echo-dialog__sweep{opacity:1;animation:echo-dialog-spin 1.6s linear infinite}.echo-dialog[data-echo-dialog-stage=processing] .echo-dialog__core{animation:echo-dialog-core 1.2s ease-in-out infinite}.echo-dialog[data-echo-dialog-stage=success] .echo-dialog__core{color:var(--echo-success);background:color-mix(in srgb,var(--echo-success) 16%,#fff)}.echo-dialog[data-echo-dialog-stage=success] .echo-dialog__burst{animation:echo-dialog-burst .7s cubic-bezier(.16,1,.3,1) forwards}.echo-dialog[data-echo-dialog-stage=error] .echo-dialog__core{color:var(--echo-error);background:color-mix(in srgb,var(--echo-error) 14%,#fff)}button.is-busy,[data-echo-busy="1"]{pointer-events:none;opacity:.72}.echo-spinner{display:inline-block;width:.9em;height:.9em;margin-right:.45rem;border:2px solid currentColor;border-right-color:transparent;border-radius:999px;vertical-align:-.12em;animation:echo-spin .7s linear infinite}@keyframes echo-spin{to{transform:rotate(360deg)}}body.echo-dialog-open{overflow:hidden}html.dark .echo-dialog__panel{color:var(--text-primary, #e7ebf3);background:linear-gradient(180deg,color-mix(in srgb,var(--echo-dialog-accent) 12%,#0f172a),color-mix(in srgb,#0f172a 92%,#fff) 42%);box-shadow:0 40px 90px -24px #020617}html.dark .echo-dialog__core{background:color-mix(in srgb,var(--echo-dialog-accent) 18%,#0f172a)}html.dark .echo-dialog__cancel{color:var(--text-primary, #e7ebf3);background:color-mix(in srgb,#fff 8%,transparent)}@media(max-width:790px){.echo-dialog{padding:.85rem;place-items:end center}.echo-dialog__panel{width:min(40rem,100%);padding:1.7rem 1.45rem 1.4rem 1.55rem;border-radius:1.6rem 1.6rem 1.15rem 1.15rem}.echo-dialog__radar{width:5rem;height:5rem}.echo-dialog__title{font-size:1.5rem}.echo-dialog__copy{font-size:1.02rem}.echo-dialog__actions{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.6fr);justify-content:stretch}.echo-dialog__cancel,.echo-dialog__accept{width:100%;flex:none}}@media(max-width:639px){.echo-dialog{padding:.65rem}.echo-dialog__panel{width:100%;padding:1.45rem 1.15rem 1.2rem}.echo-dialog__head{grid-template-columns:auto minmax(0,1fr);align-items:start}.echo-dialog__radar{width:4.4rem;height:4.4rem}.echo-dialog__title{font-size:1.38rem}.echo-dialog__actions{grid-template-columns:1fr}}@media(max-width:390px){.echo-dialog__panel{padding:1.25rem 1rem 1.1rem;border-radius:1.35rem 1.35rem 1rem 1rem}.echo-dialog__head{grid-template-columns:minmax(0,1fr);justify-items:start;gap:.85rem}.echo-dialog__title{font-size:1.28rem}.echo-dialog__copy{margin-top:.9rem;font-size:.98rem}.echo-dialog__cancel,.echo-dialog__accept{min-height:3rem;padding:.9rem 1.1rem;font-size:.95rem}}@keyframes echo-dialog-glow{0%,to{opacity:.72;transform:translateY(0)}50%{opacity:1;transform:translateY(8px)}}@keyframes echo-dialog-spin{to{transform:rotate(360deg)}}@keyframes echo-dialog-rings{0%{opacity:.9;transform:scale(.92)}70%{opacity:.2;transform:scale(1.04)}to{opacity:.9;transform:scale(.92)}}@keyframes echo-dialog-core{0%,to{transform:scale(1)}50%{transform:scale(1.06)}}@keyframes echo-dialog-pulse{0%,to{box-shadow:0 0 0 4px color-mix(in srgb,var(--echo-dialog-accent) 16%,transparent)}50%{box-shadow:0 0 0 7px color-mix(in srgb,var(--echo-dialog-accent) 8%,transparent)}}@keyframes echo-dialog-burst{0%{opacity:.9;transform:scale(.72)}to{opacity:0;transform:scale(1.45)}}@media(prefers-reduced-motion:reduce){.echo-toast,.echo-toast.is-in,.echo-toast.is-out,.echo-icon__draw,.echo-icon--spin,.echo-toast__progress,.echo-dialog__backdrop,.echo-dialog__panel,.echo-dialog__glow,.echo-dialog__ring,.echo-dialog__sweep,.echo-dialog__core,.echo-dialog__burst,.echo-dialog__track li.is-active:before,.echo-spinner{animation:none!important;transition:none!important;transform:none!important;opacity:1!important}}
