/* Code and Circuite Cloud – neonový nápis „Cloud by codeandcircuite“ ze skleněných trubic (sdílí přihlášení i portál).
   Třídy s prefixem nn- (nekolidují s .neon v app/cloud.css). Markup:
     <div class="nn-light" aria-hidden="true"></div>                      (první prvek body: světlo nápisu na stránce)
     <div class="nn-sign" role="img" aria-label="Cloud by codeandcircuite">
       <span class="nn-word nn-cloud" data-text="Cloud"><span class="nn-lit">Cloud</span></span>
       <span class="nn-word nn-by" data-text="by codeandcircuite"><span class="nn-lit">by codeandcircuite</span></span>
     </div>
   Vrstvy každého slova: ::before = zhaslá skleněná trubice (jen obrys, neanimuje se, prosvítá při bliknutí),
   .nn-lit = žhavé jádro (téměř bílé + text-shadow), ::after = vnější záře (rozmazaný barevný text).
   Animuje se jen opacity (kompozitor). Nápis ani .nn-light se nikdy nepřepínají přes display: none
   (restartovalo by to animaci a rozladilo blikání nápisu a světla) – skrývat přes visibility. */

/* Mr Dafoe (Sudtipos / Typesenses, SIL OFL 1.1), hostovaný lokálně; block = nikdy neukázat nápis fallbackovým písmem */
@font-face { font-family: 'Mr Dafoe'; font-style: normal; font-weight: 400; font-display: block; src: url(/brand/mrdafoe-400-latin.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }

.nn-sign { position: relative; z-index: 1; display: flex; flex-direction: column; align-items: center; width: max-content; max-width: 100%; margin: 0 auto;
  -webkit-user-select: none; user-select: none; animation: nn-hum 3.6s ease-in-out infinite; }
.nn-word { position: relative; display: inline-block; isolation: isolate;   /* nikdy overflow: hidden – ozdoby písma přesahují box */
  padding: .12em .3em .2em; font-family: 'Mr Dafoe', cursive; font-weight: 400; font-style: normal; line-height: 1; white-space: nowrap;
  --nn-c: #00F0FF; --nn-c55: rgba(0, 240, 255, .55); --nn-tube: rgba(120, 245, 255, .26); --nn-core: #effeff; }
.nn-cloud { font-size: clamp(4.2rem, 17vw, 7.5rem); transform: rotate(-7deg); }
.nn-by { font-size: clamp(1.3rem, 5vw, 2.1rem); transform: rotate(-4deg) translateX(22%); margin-top: -.3em;
  --nn-c: #FF1493; --nn-c55: rgba(255, 20, 147, .55); --nn-tube: rgba(255, 140, 200, .26); --nn-core: #fff0f7; }

/* zhaslá trubice: průhledné sklo, slabě tónovaný obrys */
.nn-word::before { content: attr(data-text); position: absolute; inset: 0; padding: inherit; z-index: 0;
  color: transparent; -webkit-text-fill-color: rgba(255, 255, 255, .025); -webkit-text-stroke: 1.5px var(--nn-tube); }
/* žhavé jádro */
.nn-lit { position: relative; z-index: 1; display: inline-block; color: var(--nn-core);
  text-shadow: 0 0 1px #fff, 0 0 4px rgba(255, 255, 255, .8), 0 0 10px var(--nn-c), 0 0 22px var(--nn-c), 0 0 44px var(--nn-c55); }
/* vnější záře (síla .55 je v alfě barvy, opacity patří animaci) */
.nn-word::after { content: attr(data-text); position: absolute; inset: 0; padding: inherit; z-index: -1; pointer-events: none;
  color: var(--nn-c55); filter: blur(18px); }

/* blikání: jádro i záře téhož slova stejným zápisem, ať jsou v souladu */
.nn-cloud .nn-lit, .nn-cloud::after { animation: nn-flick-a 11.3s linear infinite; }
.nn-by .nn-lit, .nn-by::after { animation: nn-flick-b 7.7s linear infinite; }

/* osvětlení stránky zářícím nápisem (pozice přes --nn-x / --nn-y na body nebo rodiči) */
.nn-light { position: fixed; inset: 0; z-index: 0; pointer-events: none; animation: nn-hum 3.6s ease-in-out infinite; }
.nn-light::before, .nn-light::after { content: ''; position: absolute; inset: 0; }
.nn-light::before { background: radial-gradient(ellipse 65% 45% at var(--nn-x, 50%) var(--nn-y, 20%), rgba(0, 240, 255, .16), rgba(0, 240, 255, .05) 40%, transparent 70%);
  animation: nn-flick-a 11.3s linear infinite; }
.nn-light::after { background: radial-gradient(ellipse 55% 35% at calc(var(--nn-x, 50%) + 8%) calc(var(--nn-y, 20%) + 12%), rgba(255, 20, 147, .10), rgba(255, 20, 147, .03) 40%, transparent 70%);
  animation: nn-flick-b 7.7s linear infinite; }

/* pomalé pulzování proudu + krátký „výpadek sítě“ obou trubic */
@keyframes nn-hum {
  0%, 100% { opacity: 1; }
  45% { opacity: .86; }
  78% { opacity: .97; }
  78.6% { opacity: .62; }
  79.2% { opacity: .97; }
}
/* cyan: shluky poklesů kolem 61–63 % a 87 % */
@keyframes nn-flick-a {
  0%, 60.8%, 63.4%, 86.8%, 88.2%, 100% { opacity: 1; }
  61% { opacity: .22; }
  61.3% { opacity: .95; }
  61.6% { opacity: .12; }
  62.1% { opacity: 1; }
  62.6% { opacity: .45; }
  62.9% { opacity: 1; }
  87% { opacity: .3; }
  87.4% { opacity: .9; }
  87.7% { opacity: .2; }
}
/* růžová: shluk kolem 34–36 % */
@keyframes nn-flick-b {
  0%, 33.8%, 36.4%, 100% { opacity: 1; }
  34% { opacity: .18; }
  34.4% { opacity: .9; }
  34.8% { opacity: .1; }
  35.5% { opacity: .1; }
  35.8% { opacity: 1; }
  36.1% { opacity: .5; }
}

/* malá varianta (hlavička portálu, návod): bez rozmazané záře, menší, náklon −4° */
.nn-sm .nn-cloud { font-size: clamp(2rem, 7vw, 2.6rem); transform: rotate(-4deg); }
.nn-sm .nn-by { font-size: clamp(.8rem, 2.6vw, .95rem); transform: rotate(-4deg) translateX(22%); }
.nn-sm .nn-word::after { content: none; }
.nn-sm .nn-lit { text-shadow: 0 0 1px #fff, 0 0 3px rgba(255, 255, 255, .7), 0 0 7px var(--nn-c), 0 0 14px var(--nn-c55); }
.nn-sm .nn-word::before { -webkit-text-stroke-width: 1px; }
a.nn-sign { text-decoration: none; }

/* omezit pohyb: nápis i světlo svítí staticky */
@media (prefers-reduced-motion: reduce) {
  .nn-sign, .nn-lit, .nn-word::after, .nn-light, .nn-light::before, .nn-light::after { animation: none !important; }
}
