/* Gnosis ontology hydration: source records rise into objects and relationships. */
#loading.gnosis-hydration {
    --hydration-bg:#f7f7f2; --hydration-ink:#232a27; --hydration-dim:#69716c;
    --hydration-line:#8c958e; --hydration-grid:#d9ddd5; --hydration-plane:#fbfcf7;
    --hydration-signal:#797997;
    background:var(--hydration-bg); color:var(--hydration-ink);
    gap:0; transition:opacity 220ms ease; overflow:auto;
}
:root:not([data-theme="light"]) #loading.gnosis-hydration {
    --hydration-bg:#151a18; --hydration-ink:#dce3d9; --hydration-dim:#9ca99f;
    --hydration-line:#68796e; --hydration-grid:#35453b; --hydration-plane:#1b241e;
    --hydration-signal:#b1adc9;
}
#loading.gnosis-hydration.hidden { display:none; }
#loading.gnosis-hydration.is-leaving { opacity:0; pointer-events:none; }
.hydration-composition { width:min(420px,calc(100% - 40px)); text-align:center; padding:28px 0 48px; }
.hydration-art { display:block; width:100%; height:auto; overflow:visible; }
.hydration-art * { vector-effect:non-scaling-stroke; }
.hydration-plane { fill:var(--hydration-plane); stroke:var(--hydration-line); stroke-width:.65; }
.hydration-edge { stroke:var(--hydration-line); stroke-width:.55; opacity:.6; }
.hydration-grid { stroke:var(--hydration-grid); stroke-width:.55; }
.hydration-index { stroke:var(--hydration-line); stroke-width:.65; opacity:.5; }
.hydration-guide { stroke:var(--hydration-line); stroke-width:.55; stroke-dasharray:2 4; opacity:.45; }
.hydration-flow { stroke:var(--hydration-signal); stroke-width:1.2; stroke-dasharray:13 87; stroke-dashoffset:100; opacity:0; }
.hydration-link { stroke:var(--hydration-ink); stroke-width:.8; }
.hydration-node { fill:var(--hydration-ink); }
.hydration-node:nth-last-child(3) { fill:var(--hydration-signal); }
.hydration-source { fill:var(--hydration-signal); opacity:.6; }
.hydration-copy { margin:12px 0 0; font-family:Inter,Arial,sans-serif; }
.hydration-title { margin:0; color:var(--hydration-ink); font:400 21px/1.35 Inter,Arial,sans-serif; letter-spacing:-.65px; }
.hydration-detail { margin:11px 0 0; color:var(--hydration-dim); font:400 12px/1.6 Inter,Arial,sans-serif; letter-spacing:.08px; }
.hydration-retry { margin-top:22px; padding:10px 0; color:var(--hydration-ink); border:0; border-bottom:1px solid var(--hydration-line); background:transparent; font:400 12px/1.3 Inter,Arial,sans-serif; cursor:pointer; }
.hydration-retry span { padding-left:18px; }
.hydration-retry:focus-visible { outline:2px solid var(--hydration-signal); outline-offset:6px; }
#loading[data-state="loading"] .hydration-object-layer { animation:hydration-lift 1400ms cubic-bezier(.22,.61,.36,1) both; }
#loading[data-state="loading"] .hydration-link { animation:hydration-connect 1100ms calc(160ms + var(--i)*45ms) ease both; }
#loading[data-state="loading"] .hydration-node { animation:hydration-object 900ms calc(160ms + var(--i)*90ms) ease both; }
#loading[data-state="loading"] .hydration-flow { animation:hydration-feed 2800ms calc(var(--i)*210ms) linear infinite; }
#loading[data-state="loading"] .hydration-source { animation:hydration-source 2800ms calc(var(--i)*210ms) ease infinite; }
#loading[data-state="error"] .hydration-art { opacity:.65; }
#loading.is-paused .hydration-art * { animation-play-state:paused; }
@keyframes hydration-lift { from { transform:translateY(22px); } to { transform:translateY(0); } }
@keyframes hydration-connect { from { stroke-dasharray:100; stroke-dashoffset:100; opacity:.15; } to { stroke-dasharray:100; stroke-dashoffset:0; opacity:1; } }
@keyframes hydration-object { from { opacity:.15; } to { opacity:1; } }
@keyframes hydration-feed { 0% { stroke-dashoffset:100; opacity:0; } 12%,58% { opacity:.8; } 75%,100% { stroke-dashoffset:-10; opacity:0; } }
@keyframes hydration-source { 0%,75%,100% { opacity:.3; } 20% { opacity:1; } }
@media(max-width:480px) { .hydration-composition { width:min(340px,calc(100% - 32px)); } .hydration-title { font-size:20px; } }
@media(max-height:480px) { .hydration-composition { width:280px; padding:12px 0; } .hydration-copy { margin:0; } }
@media(prefers-reduced-motion:reduce) { #loading.gnosis-hydration { transition:none; } #loading .hydration-art * { animation:none !important; } }
