Найден корректный robots.txt
Файл управления сканированием сайта роботами
?
Robots.txt указывает поисковым роботам, какие страницы сканировать, а какие — нет. Ошибки в файле могут случайно закрыть важные разделы от индексации.
Robots.txt настроен корректно. Размер файла: 19762 байт. Загружен за: 0сек.
Проверяемая страница не запрещена в robots.txt.
Цепочка редиректов для файла robots.txt:
http://tarofleur.ru/robots.txt
301 MovedPermanently
https://tarofleur.ru/robots.txt
200 OK
Показать содержимое robots.txt
<!doctype html>
<html lang="ru">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Ксения Флёр — Таро · скоро открытие</title>
<meta name="description" content="tarofleur.ru — сайт таролога Ксении Флёр. Личные расклады, карты и символы. Скоро открытие.">
<meta name="theme-color" content="#06080a">
<meta property="og:type" content="website">
<meta property="og:title" content="Ксения Флёр — Таро">
<meta property="og:description" content="Скоро здесь откроется пространство личных раскладов.">
<meta property="og:url" content="https://tarofleur.ru/">
<meta property="og:locale" content="ru_RU">
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Crect width='48' height='48' fill='%2306080a'/%3E%3Cpath d='M30 10A15 15 0 1 0 30 38 19 19 0 0 1 30 10Z' fill='none' stroke='%23c8a45c' stroke-width='2'/%3E%3Cpath d='M36 8l1.4 4.6L42 14l-4.6 1.4L36 20l-1.4-4.6L30 14l4.6-1.4z' fill='%23c8a45c'/%3E%3C/svg%3E">
<link rel="preload" as="font" type="font/woff2" href="/fonts/forum-400-cyrillic.woff2" crossorigin>
<link rel="preload" as="font" type="font/woff2" href="/fonts/cormorant-garamond-400-cyrillic.woff2" crossorigin>
<link rel="stylesheet" href="/fonts/fonts.css">
<style>
/* ============================================================
tarofleur.ru — заглушка до запуска основного сайта.
Ар-нуво / ночной гербарий: чернильный фон, сусальное золото,
ботаническая линия. Один файл, без внешних зависимостей.
============================================================ */
:root {
--ink: #06080a;
--ink-2: #0b1013;
--gold: #c8a45c;
--gold-hi: #f4e3b8;
--gold-lo: #7d6636;
--rose: #b4707f;
--paper: #ece3d1;
--text: rgba(236, 227, 209, .66);
--frame: clamp(14px, 2.4vw, 30px);
--ease: cubic-bezier(.22, .68, .3, 1);
}
*, *::before, *::after { box-sizing: border-box; }
/* У figure браузерный margin 1em 40px — на узкой карте он съедает всю ширину. */
figure, figcaption { margin: 0; }
html, body { height: 100%; }
body {
margin: 0;
min-height: 100svh;
display: grid;
grid-template-rows: 1fr auto;
background: var(--ink);
color: var(--text);
font-family: 'Cormorant Garamond', Georgia, 'Times New Roman', serif;
font-weight: 400;
font-size: clamp(16px, 1.05vw + 13px, 20px);
line-height: 1.62;
overflow-x: hidden;
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
}
/* --- Атмосфера: лунное зарево, холодная зелень снизу, виньетка --- */
body::before {
content: '';
position: fixed;
inset: 0;
z-index: -3;
background:
radial-gradient(58vw 46vw at 72% -12%, rgba(200, 164, 92, .13), transparent 62%),
radial-gradient(52vw 44vw at 12% 108%, rgba(66, 122, 112, .12), transparent 64%),
radial-gradient(120vw 100vh at 50% 50%, #0a0f12 0%, #06080a 68%);
}
/* Виньетка отдельным слоем — чтобы затемняла и зарево тоже. */
body::after {
content: '';
position: fixed;
inset: 0;
z-index: -1;
pointer-events: none;
background: radial-gradient(78vw 78vh at 50% 46%, transparent 42%, rgba(0, 0, 0, .62) 100%);
}
/* Зерно плёнки поверх фона. */
.grain {
position: fixed;
inset: -50%;
z-index: -2;
pointer-events: none;
opacity: .055;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.82' numOctaves='3'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E");
animation: grain 7s steps(6) infinite;
}
@keyframes grain {
0% { transform: translate(0, 0); }
16% { transform: translate(-2%, 1.5%); }
33% { transform: translate(1.5%, -2%); }
50% { transform: translate(-1%, -1%); }
66% { transform: translate(2%, 1%); }
83% { transform: translate(-1.5%, 2%); }
100% { transform: translate(0, 0); }
}
/* Звёздная пыль — точки расставляет скрипт. */
.stars { position: fixed; inset: 0; z-index: -2; pointer-events: none; }
.star {
position: absolute;
width: 2px; height: 2px;
border-radius: 50%;
background: var(--gold-hi);
opacity: 0;
animation: twinkle var(--dur, 6s) ease-in-out var(--delay, 0s) infinite;
}
@keyframes twinkle {
0%, 100% { opacity: 0; transform: scale(.6); }
50% { opacity: var(--peak, .5); transform: scale(1); }
}
/* Тёплое пятно, следующее за курсором. */
.glow {
position: fixed;
top: 0; left: 0;
width: 44rem; height: 44rem;
margin: -22rem 0 0 -22rem;
z-index: -1;
pointer-events: none;
opacity: 0;
background: radial-gradient(closest-side, rgba(200, 164, 92, .10), transparent 70%);
transition: opacity .8s ease;
will-change: transform;
}
body.pointer .glow { opacity: 1; }
/* --- Рамка страницы: двойная золотая волосяная линия + углы --- */
.frame {
position: fixed;
inset: var(--frame);
z-index: 3;
pointer-events: none;
border: 1px solid rgba(200, 164, 92, .16);
animation: frame-in 1.6s var(--ease) .1s both;
}
.frame::before {
content: '';
position: absolute;
inset: 7px;
border: 1px solid rgba(200, 164, 92, .07);
}
@keyframes frame-in { from { opacity: 0; transform: scale(1.015); } to { opacity: 1; transform: none; } }
.corner {
position: absolute;
width: 34px; height: 34px;
color: rgba(200, 164, 92, .5);
}
.corner svg { display: block; width: 100%; height: 100%; }
.corner path, .corner circle {
stroke-dasharray: 60;
stroke-dashoffset: 60;
animation: draw 1.4s var(--ease) .5s forwards;
}
@keyframes draw { to { stroke-dashoffset: 0; } }
.corner.tl { top: -1px; left: -1px; }
.corner.tr { top: -1px; right: -1px; transform: scaleX(-1); }
.corner.bl { bottom: -1px; left: -1px; transform: scaleY(-1); }
.corner.br { bottom: -1px; right: -1px; transform: scale(-1); }
/* --- Композиция --- */
main {
position: relative;
z-index: 2;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: clamp(1.1rem, 2.6vh, 2rem);
padding: calc(var(--frame) + 2.6rem) 1.5rem 1rem;
text-align: center;
}
/* Общий приём появления: элементы всплывают со сдвигом по --d. */
.rise {
opacity: 0;
animation: rise 1.1s var(--ease) var(--d, 0s) both;
}
@keyframes rise {
from { opacity: 0; transform: translateY(18px); filter: blur(6px); }
to { opacity: 1; transform: none; filter: none; }
}
/* --- Веер из трёх карт --- */
.deck {
display: flex;
justify-content: center;
align-items: flex-end;
/* Верхний отступ: приподнятая средняя карта не должна наезжать на «Таро». */
margin: clamp(.5rem, 2vh, 1.3rem) 0 clamp(.4rem, 1.6vh, 1.4rem);
perspective: 900px;
}
.slot {
--tilt: 0deg;
--lift: 0px;
--scale: 1;
/* flex-basis фиксируем: иначе отрицательные поля ужимают ширину контейнера,
и flex-shrink съедает карты почти вдвое. */
flex: 0 0 auto;
width: clamp(86px, 19vw, 124px);
/* Перекрытие небольшое — иначе средняя карта прячет подписи боковых. */
margin-inline: clamp(-10px, -.55vw, -3px);
transform: rotate(var(--tilt)) translateY(var(--lift)) scale(var(--scale));
transition: transform .7s var(--ease);
}
.slot:nth-child(1) { --tilt: -14deg; --lift: 20px; z-index: 1; }
.slot:nth-child(2) { --tilt: 0deg; --lift: -6px; --scale: 1.07; z-index: 3; }
.slot:nth-child(3) { --tilt: 14deg; --lift: 20px; z-index: 2; }
/* Слой входа — отдельный, чтобы не конфликтовать с веером и парением. */
.card-in {
animation: card-in 1.4s var(--ease) var(--d, 0s) both;
}
@keyframes card-in {
from { opacity: 0; transform: translateY(46px) scale(.82) rotate(6deg); }
to { opacity: 1; transform: none; }
}
.card {
position: relative;
aspect-ratio: 100 / 168;
border-radius: 5px;
border: 1px solid rgba(200, 164, 92, .42);
background:
radial-gradient(120% 80% at 50% 8%, rgba(200, 164, 92, .10), transparent 60%),
linear-gradient(165deg, #131b1e 0%, #0a0e11 62%, #0d1215 100%);
box-shadow:
0 22px 44px -20px rgba(0, 0, 0, .9),
inset 0 0 34px rgba(200, 164, 92, .05);
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-between;
padding: 13% 7%;
animation: float var(--float, 7s) ease-in-out var(--d, 0s) infinite;
transition: box-shadow .6s var(--ease);
}
/* Внутренняя волосяная рамка карты. */
.card::before {
content: '';
position: absolute;
inset: 5px;
border: 1px solid rgba(200, 164, 92, .2);
border-radius: 2px;
}
@keyframes float {
0%, 100% { transform: translateY(0); }
50% { transform: translateY(-9px); }
}
/* Эмблема в ореоле — иначе на тёмном фоне карта читается пустой. */
.card svg {
width: 56%;
height: auto;
color: var(--gold);
opacity: .92;
filter: drop-shadow(0 0 10px rgba(200, 164, 92, .22));
}
.slot:nth-child(2) .card svg {
color: var(--rose);
opacity: 1;
filter: drop-shadow(0 0 12px rgba(180, 112, 127, .3));
}
.card .num, .card figcaption {
font-family: 'Forum', Georgia, serif;
line-height: 1;
color: rgba(200, 164, 92, .6);
}
.card .num {
font-size: clamp(7px, 1.15vw, 9px);
letter-spacing: .18em;
text-indent: .18em;
opacity: .75;
}
.card figcaption {
font-size: clamp(8px, 1.35vw, 11px);
letter-spacing: .17em;
text-indent: .17em;
text-transform: uppercase;
}
.slot:hover, .slot:focus-within {
--lift: -22px;
--tilt: 0deg;
}
.slot:hover .card, .slot:focus-within .card {
box-shadow:
0 30px 56px -22px rgba(0, 0, 0, .95),
0 0 30px -6px rgba(200, 164, 92, .28),
inset 0 0 40px rgba(200, 164, 92, .09);
}
/* --- Типографика --- */
.overline {
margin: 0;
font-family: 'Forum', Georgia, serif;
font-size: clamp(10px, 1.5vw, 12px);
letter-spacing: .58em;
text-indent: .58em;
text-transform: uppercase;
color: rgba(200, 164, 92, .58);
}
h1 {
margin: 0;
font-family: 'Forum', Georgia, serif;
font-weight: 400;
font-size: clamp(2.5rem, 10.5vw, 6.4rem);
line-height: .96;
letter-spacing: .045em;
text-indent: .045em;
background-image: linear-gradient(
100deg,
#b9954e 0%, #cfae69 30%, var(--gold-hi) 46%,
#fff6e2 50%, var(--gold-hi) 54%, #cfae69 70%, #b9954e 100%);
background-size: 320% 100%;
background-position: 140% 0;
-webkit-background-clip: text;
background-clip: text;
color: transparent;
animation: sheen 11s ease-in-out 1.6s infinite;
}
@keyframes sheen {
0%, 52% { background-position: 140% 0; }
88%, 100% { background-position: -40% 0; }
}
.author {
margin: 0;
font-style: italic;
font-size: clamp(1.05rem, 2.6vw, 1.5rem);
color: rgba(180, 112, 127, .85);
letter-spacing: .02em;
}
/* Орнаментальный разделитель: линия — ромб — линия. */
.rule {
display: flex;
align-items: center;
gap: .85rem;
width: min(320px, 62vw);
color: rgba(200, 164, 92, .42);
}
.rule::before, .rule::after {
content: '';
flex: 1;
height: 1px;
background: linear-gradient(90deg, transparent, currentColor);
}
.rule::after { background: linear-gradient(270deg, transparent, currentColor); }
.rule i {
width: 6px; height: 6px;
border: 1px solid currentColor;
transform: rotate(45deg);
}
.lede {
margin: 0;
max-width: 34ch;
font-size: clamp(1.02rem, 2.3vw, 1.32rem);
line-height: 1.72;
color: var(--text);
}
.lede em { font-style: italic; color: rgba(236, 227, 209, .84); }
.status {
display: inline-flex;
align-items: center;
gap: .6em;
margin: .3rem 0 0;
padding: .42em 1.15em;
border: 1px solid rgba(200, 164, 92, .2);
border-radius: 999px;
background: rgba(200, 164, 92, .035);
font-family: 'Forum', Georgia, serif;
font-size: clamp(10px, 1.4vw, 12px);
letter-spacing: .2em;
text-indent: .2em;
text-transform: uppercase;
color: rgba(200, 164, 92, .74);
}
.status .dot {
width: 5px; height: 5px;
border-radius: 50%;
background: var(--gold);
box-shadow: 0 0 0 0 rgba(200, 164, 92, .5);
animation: pulse 2.8s ease-out infinite;
}
@keyframes pulse {
0% { box-shadow: 0 0 0 0 rgba(200, 164, 92, .45); }
70% { box-shadow: 0 0 0 9px rgba(200, 164, 92, 0); }
100% { box-shadow: 0 0 0 0 rgba(200, 164, 92, 0); }
}
/* --- Подвал --- */
footer {
position: relative;
z-index: 2;
display: flex;
align-items: center;
justify-content: center;
gap: 1.4rem;
flex-wrap: wrap;
padding: 1rem 1.5rem calc(var(--frame) + 1.5rem);
font-family: 'Forum', Georgia, serif;
font-size: clamp(9.5px, 1.3vw, 11px);
letter-spacing: .3em;
text-indent: .3em;
text-transform: uppercase;
color: rgba(200, 164, 92, .38);
}
footer .sep {
width: 4px; height: 4px;
border: 1px solid currentColor;
transform: rotate(45deg);
}
.credit {
color: inherit;
text-decoration: none;
opacity: .62;
transition: opacity .4s var(--ease), color .4s var(--ease);
}
.credit:hover, .credit:focus-visible { opacity: 1; color: var(--gold); }
/* --- Мелкие экраны --- */
@media (max-width: 560px) {
.frame::before { display: none; }
.corner { width: 26px; height: 26px; }
main { gap: 1rem; padding-top: calc(var(--frame) + 1.6rem); }
.rule { width: min(240px, 66vw); }
footer { gap: .9rem; }
}
/* Низкие окна: веер ужимаем через переменную — скрипт дописывает
в transform свой наклон и не должен затирать масштаб. */
@media (max-height: 620px) {
.deck { --deck-scale: .82; margin-bottom: -.6rem; }
}
.deck { transform: scale(var(--deck-scale, 1)); }
/* --- Уважение к настройкам движения --- */
@media (prefers-reduced-motion: reduce) {
/* Обнуляем и задержку: иначе backwards-заливка держит контент
невидимым всю паузу до старта анимации. */
*, *::before, *::after {
animation-duration: .001ms !important;
animation-delay: 0s !important;
animation-iteration-count: 1 !important;
transition-duration: .001ms !important;
}
.rise, .card-in, .frame { opacity: 1; }
.star { opacity: .4; }
h1 { background-position: 50% 0; }
}
</style>
</head>
<body>
<div class="grain" aria-hidden="true"></div>
<div class="stars" aria-hidden="true"></div>
<div class="glow" aria-hidden="true"></div>
<div class="frame" aria-hidden="true">
<span class="corner tl"><svg viewBox="0 0 34 34" fill="none" stroke="currentColor" stroke-width="1"><path d="M33 1H12C6 1 1 6 1 12v21"/><path d="M27 1c0 7-5 12-12 12"/><circle cx="8" cy="8" r="1.6"/></svg></span>
<span class="corner tr"><svg viewBox="0 0 34 34" fill="none" stroke="currentColor" stroke-width="1"><path d="M33 1H12C6 1 1 6 1 12v21"/><path d="M27 1c0 7-5 12-12 12"/><circle cx="8" cy="8" r="1.6"/></svg></span>
<span class="corner bl"><svg viewBox="0 0 34 34" fill="none" stroke="currentColor" stroke-width="1"><path d="M33 1H12C6 1 1 6 1 12v21"/><path d="M27 1c0 7-5 12-12 12"/><circle cx="8" cy="8" r="1.6"/></svg></span>
<span class="corner br"><svg viewBox="0 0 34 34" fill="none" stroke="currentColor" stroke-width="1"><path d="M33 1H12C6 1 1 6 1 12v21"/><path d="M27 1c0 7-5 12-12 12"/><circle cx="8" cy="8" r="1.6"/></svg></span>
</div>
<main>
<p class="overline rise" style="--d:.15s">Таро</p>
<div class="deck" aria-hidden="true">
<div class="slot">
<div class="card-in" style="--d:.5s">
<figure class="card" style="--d:.2s; --float:7.5s">
<span class="num">XVIII</span>
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linejoin="round">
<path d="M31 8A16 16 0 1 0 31 40 20 20 0 0 1 31 8Z"/>
<path d="M38 9l1.1 3.7L43 14l-3.9 1.3L38 19l-1.1-3.7L33 14l3.9-1.3z" fill="currentColor" stroke="none"/>
</svg>
<figcaption>Луна</figcaption>
</figure>
</div>
</div>
<div class="slot">
<div class="card-in" style="--d:.34s">
<figure class="card" style="--d:0s; --float:6.4s">
<span class="num">✦</span>
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="1.3">
<g>
<ellipse cx="24" cy="11.4" rx="4.2" ry="7.4"/>
<ellipse cx="24" cy="11.4" rx="4.2" ry="7.4" transform="rotate(72 24 19)"/>
<ellipse cx="24" cy="11.4" rx="4.2" ry="7.4" transform="rotate(144 24 19)"/>
<ellipse cx="24" cy="11.4" rx="4.2" ry="7.4" transform="rotate(216 24 19)"/>
<ellipse cx="24" cy="11.4" rx="4.2" ry="7.4" transform="rotate(288 24 19)"/>
</g>
<circle cx="24" cy="19" r="2.6"/>
<path d="M24 34v11M24 39c-2.6 0-4.8-1.4-5.6-3.5 2.6-.5 4.8.6 5.6 3.5zM24 43c2.6 0 4.8-1.4 5.6-3.5-2.6-.5-4.8.6-5.6 3.5z" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
<figcaption>Флёр</figcaption>
</figure>
</div>
</div>
<div class="slot">
<div class="card-in" style="--d:.66s">
<figure class="card" style="--d:.4s; --float:8.2s">
<span class="num">XVII</span>
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linejoin="round">
<path d="M24 3l3.1 17.9L45 24l-17.9 3.1L24 45l-3.1-17.9L3 24l17.9-3.1z"/>
<circle cx="24" cy="24" r="3.4"/>
</svg>
<figcaption>Звезда</figcaption>
</figure>
</div>
</div>
</div>
<h1 class="rise" style="--d:.9s">Ксения Флёр</h1>
<p class="author rise" style="--d:1.05s">таро · расклады · символы</p>
<div class="rule rise" style="--d:1.2s" aria-hidden="true"><i></i></div>
<p class="lede rise" style="--d:1.32s">
Здесь скоро откроется пространство личных раскладов — <em>карты, символы
и разговор о том, что важно именно сейчас</em>.
</p>
<p class="status rise" style="--d:1.5s"><span class="dot" aria-hidden="true"></span>Сайт готовится к открытию</p>
</main>
<footer class="rise" style="--d:1.7s">
<span>tarofleur.ru</span>
<span class="sep" aria-hidden="true"></span>
<span>MMXXVI</span>
<span class="sep" aria-hidden="true"></span>
<a class="credit" href="https://deerflow.tech" target="_blank" rel="noopener">✦ Deerflow</a>
</footer>
<script>
(() => {
'use strict';
const calm = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
/* Звёздная пыль: точки гуще к верху, где лунное зарево. */
const sky = document.querySelector('.stars');
const count = window.innerWidth < 560 ? 26 : 46;
const frag = document.createDocumentFragment();
for (let i = 0; i < count; i++) {
const s = document.createElement('span');
s.className = 'star';
const top = Math.pow(Math.random(), 1.5) * 100; // смещение к верху
s.style.cssText =
`left:${(Math.random() * 100).toFixed(2)}%;top:${top.toFixed(2)}%;` +
`--dur:${(4 + Math.random() * 7).toFixed(1)}s;` +
`--delay:${(Math.random() * 8).toFixed(1)}s;` +
`--peak:${(0.18 + Math.random() * 0.5).toFixed(2)};` +
(Math.random() > 0.82 ? 'width:3px;height:3px;' : '');
frag.appendChild(s);
}
sky.appendChild(frag);
if (calm || !window.matchMedia('(pointer: fine)').matches) return;
/* Тёплое пятно за курсором + едва заметный наклон веера. */
const glow = document.querySelector('.glow');
const deck = document.querySelector('.deck');
let x = 0, y = 0, pending = false;
addEventListener('pointermove', (e) => {
x = e.clientX; y = e.clientY;
document.body.classList.add('pointer');
if (pending) return;
pending = true;
requestAnimationFrame(() => {
pending = false;
glow.style.transform = `translate3d(${x}px, ${y}px, 0)`;
const dx = (x / innerWidth - .5) * 2;
const dy = (y / innerHeight - .5) * 2;
deck.style.transform =
`rotateY(${(dx * 4).toFixed(2)}deg) rotateX(${(-dy * 2.4).toFixed(2)}deg) scale(var(--deck-scale, 1))`;
});
}, { passive: true });
addEventListener('pointerleave', () => document.body.classList.remove('pointer'));
})();
</script>
</body>
</html>