/* Shared, restrained feedback. Content remains readable and dimensions stay fixed. */
[data-ui-loading="true"],[data-page-loading="true"],.tr-provider.collecting{animation:ui-data-pulse 1.65s ease-in-out infinite;cursor:progress}
[data-ui-loading="true"] [data-ui-loading="true"]{animation:none}
@keyframes ui-data-pulse{0%,100%{opacity:.94}50%{opacity:.64}}
#trStatus .tr-metric-value{display:flex;align-items:center;gap:6px}
#trStatus .tr-metric-value strong{display:inline-flex;align-items:baseline;gap:3px}
#trStatus .tr-metric-open{display:inline-grid;place-items:center;width:28px;height:28px;flex:0 0 28px;color:var(--psd-blue,#247ba0);border-radius:3px;text-decoration:none}
#trStatus .tr-metric-open svg{width:16px;height:16px}
#trStatus .tr-metric-open:hover{background:#edf5f7}
#trStatus .tr-metric-open:focus-visible{outline:2px solid var(--psd-blue,#247ba0);outline-offset:2px}
#trStatus [data-provider="instagram"]>.ins-provider-metric{margin-bottom:0}
#trNetworkGraph{perspective:1000px}
#trNetworkGraph>svg{transition:transform .22s ease-out;transform:rotateX(var(--net-x,0deg)) rotateY(var(--net-y,0deg));touch-action:pan-y;cursor:grab}
#trNetworkGraph>svg[data-dragging="true"]{cursor:grabbing;transition:none;transform:none}
#trNetworkGraph [data-word]{cursor:grab;outline:none}
#trNetworkGraph .tr-node-body{transition:transform .24s ease,filter .24s ease}
#trNetworkGraph [data-word]:hover .tr-node-body,#trNetworkGraph [data-word]:focus-visible .tr-node-body{transform:scale(1.055);filter:drop-shadow(0 5px 4px #247ba033)}
#trNetworkGraph [data-word]:focus-visible .tr-node-body>circle:first-of-type{stroke-width:5}
#trNetworkGraph line{transition:stroke-opacity .2s,stroke-width .2s}
#trNetworkGraph line.net-connected{stroke-opacity:.9;opacity:.9;stroke-width:2.5}
@media(hover:none){#trNetworkGraph>svg{transform:none}}
@media(prefers-reduced-motion:reduce){
 [data-ui-loading="true"],[data-page-loading="true"],.tr-provider.collecting{animation:none;opacity:.8}
 #trNetworkGraph>svg,#trNetworkGraph .tr-node-body,#trNetworkGraph line{transition:none;transform:none!important}
}
@media print{[data-ui-loading="true"],[data-page-loading="true"],.tr-provider.collecting{animation:none;opacity:1}#trNetworkGraph>svg{transform:none}}

/* GEO-style feedback shared by long analyses; never covers the navigation. */
.wb-page:has(.analysis-loading-layer){position:relative;min-height:420px}
.analysis-loading-layer.analysis-loading-layer{position:absolute;inset:0;z-index:5;display:flex;align-items:flex-start;justify-content:center;margin:0;padding:70px 18px;background:#f2f4f5bb;backdrop-filter:blur(1px);border:0;border-radius:4px}
.analysis-loading-layer[hidden]{display:none}
.analysis-loading-layer>.analysis-loading-card{box-sizing:border-box;position:sticky;top:24px;display:flex;flex-direction:column;align-items:center;gap:14px;width:100%;max-width:460px;margin:0;padding:28px;border:1px solid var(--line,#e1e6e8);border-radius:4px;background:white;color:var(--ink,#34434b);text-align:center;box-shadow:0 6px 24px #34434b18;overflow-wrap:anywhere}
.analysis-loading-layer>.analysis-loading-card>:is(strong,h3){display:block;margin:0;font-size:16px;line-height:1.7;word-break:keep-all;color:var(--ink,#34434b)}
.analysis-loading-layer>.analysis-loading-card>p{margin:0;font-size:13px;line-height:1.8;color:var(--muted,#74848c)}
.analysis-loading-layer>.analysis-loading-card>small{display:block;margin:0;padding:0;border:0;font-size:12px;line-height:1.8;color:var(--muted,#74848c)}
.analysis-loading-card>.loading-ring,.analysis-loading-card>.tr-spinner{display:block;flex:0 0 auto;width:30px;height:30px;margin:0;border:3px solid var(--line,#e1e6e8);border-top-color:var(--psd-blue,#247ba0);border-radius:50%}
.wb-page[aria-busy="true"]>.wb-content{opacity:.38;filter:saturate(.6);pointer-events:none;user-select:none}
[data-ui-loading="true"]:has(.analysis-loading-layer:not([hidden])),[data-page-loading="true"]:has(.analysis-loading-layer:not([hidden])){animation:none;opacity:1}
/* Search trends can already show partial results while supplementing sources. */
#trendsView{min-width:0;width:100%}
#trendsView .analysis-loading-layer{pointer-events:none}
#trendsView .analysis-loading-card #trLoadingDetail{font-size:12px;color:var(--muted,#74848c);line-height:1.8}
@media(max-width:780px){.analysis-loading-layer.analysis-loading-layer{padding:35px 12px}.analysis-loading-layer>.analysis-loading-card{padding:24px 16px;top:16px}}
@media(prefers-reduced-motion:reduce){.analysis-loading-card>.loading-ring,.analysis-loading-card>.tr-spinner{animation:none}}
@media print{.analysis-loading-layer.analysis-loading-layer{display:none}}

.analysis-loading-layer.analysis-loading-layer{position:fixed;inset:0;z-index:80;display:flex;align-items:center;justify-content:center;padding:24px;box-sizing:border-box;pointer-events:none}.analysis-loading-layer[hidden]{display:none}.analysis-loading-layer>.analysis-loading-card{position:static;top:auto;margin:0;max-height:calc(100dvh - 48px);overflow:auto;pointer-events:auto}@media(max-width:780px){.analysis-loading-layer.analysis-loading-layer{padding:16px}.analysis-loading-layer>.analysis-loading-card{top:auto;max-height:calc(100dvh - 32px)}}
/* Legacy global loader must preserve the current page and fill the viewport too. */
main[data-loading="true"]>section:not([hidden]){display:block!important}
.page-loader.analysis-loading-layer{height:auto;min-height:0;width:auto}
@media print{.analysis-loading-layer.analysis-loading-layer{display:none}}

/* A filtered ancestor creates a containing block for fixed layers. Keep the layer outside that effect. */
:is(.rv-stage,.wb-page,.mi-page):has(.analysis-loading-layer){filter:none!important;transform:none!important;contain:none!important}.analysis-loading-layer>.analysis-loading-card>p.analysis-loading-guidance{font-size:15px;color:var(--ink);font-weight:600}
