/* AstroPlus 2.0 „Aura”: fundament (tokeny, fonty, baza, komponenty wspólne, nagłówek, stopka, cookies).
   Wzorzec: prototyp/styles.css. Kolor wchodzi tylko przez aury (per znak lub kategoria), sekcje nocne
   to łagodny zmierzchowy fiolet w zaokrąglonych panelach. Bez glassmorphismu, emoji i cząsteczek.
   Pliki kontekstowe: home.css, article.css, archive.css, horoskop.css, ai.css, pages.css. */

/* ---------- fonty (self-hosted, bez połączeń z serwerami Google) ---------- */
/* Taylor Belle (Envato Elements, licencja dla astroplus.pl): rodzina wyłącznie kursywowa */
@font-face { font-family: "Taylor Belle"; src: url("../fonts/taylor-belle-100.woff2") format("woff2"); font-weight: 100; font-style: italic; font-display: swap; }
@font-face { font-family: "Taylor Belle"; src: url("../fonts/taylor-belle-200.woff2") format("woff2"); font-weight: 200; font-style: italic; font-display: swap; }
@font-face { font-family: "Taylor Belle"; src: url("../fonts/taylor-belle-300.woff2") format("woff2"); font-weight: 300; font-style: italic; font-display: swap; }
@font-face { font-family: "Taylor Belle"; src: url("../fonts/taylor-belle-400.woff2") format("woff2"); font-weight: 400; font-style: italic; font-display: swap; }
@font-face { font-family: "Taylor Belle"; src: url("../fonts/taylor-belle-500.woff2") format("woff2"); font-weight: 500; font-style: italic; font-display: swap; }
/* Jost i Newsreader (OFL): fonty zmienne okrojone do łaciny z polskimi znakami */
@font-face { font-family: "Jost"; src: url("../fonts/jost.woff2") format("woff2"); font-weight: 300 600; font-style: normal; font-display: swap; }
@font-face { font-family: "Jost"; src: url("../fonts/jost-italic.woff2") format("woff2"); font-weight: 300 600; font-style: italic; font-display: swap; }
@font-face { font-family: "Newsreader"; src: url("../fonts/newsreader.woff2") format("woff2"); font-weight: 400 600; font-style: normal; font-display: swap; }
@font-face { font-family: "Newsreader"; src: url("../fonts/newsreader-italic.woff2") format("woff2"); font-weight: 400 600; font-style: italic; font-display: swap; }

/* ---------- tokeny ---------- */
:root {
  color-scheme: light;
  /* kolor */
  --paper: #F4EFE6;
  --paper-2: #EAE3D6;
  --paper-3: #FBF8F2;
  --ink: #1E1B2E;
  --ink-soft: #57516B;
  --line: rgba(30, 27, 46, .16);
  --line-strong: rgba(30, 27, 46, .38);
  --night: #342D4A;
  --night-2: #40385A;
  --night-grad:
    radial-gradient(80% 70% at 88% 0%, rgba(150, 120, 200, .38) 0%, transparent 62%),
    radial-gradient(70% 60% at 0% 100%, rgba(230, 150, 180, .16) 0%, transparent 60%),
    linear-gradient(180deg, #4A4066 0%, #3C3456 100%);
  --on-night: #F1ECF8;
  --on-night-soft: #C6BFD8;
  --star: #EBD8AC;
  --line-night: rgba(235, 216, 172, .26);
  --ok: #3F6B4E;
  --err: #9A2F3F;
  --card-ink: #1E1B2E;
  /* krój: nagłówki Taylor Belle, tekst i interfejs Jost, długie artykuły Newsreader (tylko .prose) */
  --f-display: "Taylor Belle", "Bodoni Moda", Georgia, serif;
  --f-accent: "Taylor Belle", "Bodoni Moda", Georgia, serif;
  --f-text: "Jost", "Segoe UI", system-ui, sans-serif;
  --f-ui: "Jost", "Segoe UI", system-ui, sans-serif;
  --f-title: var(--f-text);
  --f-lead: var(--f-text);
  --accent-weight: 200;
  --text-weight: 400;
  --ui-weight: 500;
  --title-weight: 500;
  --lead-weight: 300;
  --lead-style: normal;
  /* skala */
  --t-xs: .75rem;
  --t-sm: .875rem;
  --t-md: 1.0625rem;
  --t-lg: 1.25rem;
  --t-h3: 1.5rem;
  --t-h2: clamp(2rem, 4.2vw, 3.25rem);
  --t-h1: clamp(2.6rem, 6.4vw, 5.25rem);
  --t-poster: clamp(5rem, 19vw, 16rem);
  /* odstępy */
  --gutter: clamp(16px, 4vw, 48px);
  --wrap: 1240px;
  --section: clamp(64px, 9vw, 128px);
  --head-h: 68px;
  --radius-panel: clamp(22px, 3vw, 40px);
  /* aura domyślna (body dostaje aurę sezonu Słońca) */
  --a1: #F3A6C4;
  --a2: #C8B5F2;
  --a3: #F5ECFA;
  --grain: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* aury znaków (każda aura ustawia własny kolor tekstu, żeby ciemna aura nie przeciekała do zagnieżdżonych) */
[data-aura] { --card-ink: #1E1B2E; }
[data-aura="baran"]      { --a1: #FF5B4A; --a2: #FF9A52; --a3: #FFD99A; }
[data-aura="byk"]        { --a1: #9FB48A; --a2: #D8C9A0; --a3: #EFE4CC; }
[data-aura="bliznieta"]  { --a1: #F4D35E; --a2: #B7D3EF; --a3: #E6F0F8; }
[data-aura="rak"]        { --a1: #B9D2EA; --a2: #E3D6F0; --a3: #F7F2F8; }
[data-aura="lew"]        { --a1: #FFB13B; --a2: #FF7A3D; --a3: #FFE3A3; }
[data-aura="panna"]      { --a1: #8FAE8B; --a2: #CFD8B4; --a3: #EEEAD8; }
[data-aura="waga"]       { --a1: #F3A6C4; --a2: #C8B5F2; --a3: #F5ECFA; }
[data-aura="skorpion"]   { --a1: #5E2B86; --a2: #B4386E; --a3: #F08C8C; --card-ink: #FFF4EC; }
[data-aura="strzelec"]   { --a1: #E9507A; --a2: #FF925A; --a3: #FFD08A; }
[data-aura="koziorozec"] { --a1: #7F8E6B; --a2: #B6A78A; --a3: #E2D8C4; }
[data-aura="wodnik"]     { --a1: #5FA0F5; --a2: #9FE0DC; --a3: #E7F6F7; }
[data-aura="ryby"]       { --a1: #6CC3BF; --a2: #8E9FF2; --a3: #E4E6FB; }
/* aury kategorii Magazynu */
[data-aura="astrologia"]  { --a1: #5B5BD6; --a2: #B9A6F0; --a3: #ECE6FA; }
[data-aura="numerologia"] { --a1: #E3A73B; --a2: #F3CF7A; --a3: #FAEBC8; }
[data-aura="tarot"]       { --a1: #8C2F4B; --a2: #C9667A; --a3: #F2C5C4; --card-ink: #FFF4EC; }
[data-aura="blog"]        { --a1: #9DB49A; --a2: #F0B8BE; --a3: #F7E6E3; }
/* body niesie tylko domyślną aurę, a nie jasny tekst Skorpiona */
body[data-aura] { --card-ink: #1E1B2E; }

/* ---------- baza ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; font-synthesis: none; scroll-padding-top: calc(var(--head-h) + 16px); }
body {
  margin: 0;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  background: var(--paper);
  color: var(--ink);
  font-family: var(--f-text);
  font-size: var(--t-md);
  font-weight: var(--text-weight);
  line-height: 1.65;
  font-optical-sizing: auto;
  /* ligatury ch/ck/ct Taylor Belle są rysowane pod angielski; po polsku „ch” jest za częste */
  font-variant-ligatures: no-common-ligatures;
  overflow-x: hidden;
}
body::after { /* ziarno papieru */
  content: "";
  position: fixed;
  inset: 0;
  z-index: 90;
  pointer-events: none;
  opacity: .07;
  background-image: var(--grain);
}
.site-main { flex: 1 0 auto; }
img, svg, video { max-width: 100%; }
img { height: auto; }
a { color: inherit; text-decoration-thickness: 1px; text-underline-offset: .2em; }
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, summary:focus-visible, [tabindex]:focus-visible {
  outline: 1.5px solid currentColor;
  outline-offset: 3px;
}
h1, h2, h3, h4, h5, h6 { margin: 0; text-wrap: balance; }
h1, h2 {
  font-family: var(--f-display);
  font-weight: 400;
  font-style: italic;
  line-height: 1.04;
  letter-spacing: -.01em;
}
h1 { font-size: var(--t-h1); }
h2 { font-size: var(--t-h2); }
/* małe tytuły w kroju tekstu; Taylor Belle zostaje dla h1/h2 i momentów tożsamości */
h3, h4, h5, h6 { font-family: var(--f-title); font-weight: var(--title-weight); letter-spacing: -.005em; line-height: 1.2; }
h3 { font-size: var(--t-h3); }
h4 { font-size: var(--t-lg); }
/* słowa-akcenty w kroju wyświetlanym: kontrast grubości */
:is(h1, h2, .wordmark, .display) em { font-family: var(--f-accent); font-weight: var(--accent-weight); font-style: italic; }
p, figure, blockquote { margin: 0; }
ul[class], ol[class] { margin: 0; padding: 0; list-style: none; }
hr { border: 0; border-top: 1px solid var(--line); margin: 0; }
button, input, select, textarea { font: inherit; color: inherit; }
::selection { background: color-mix(in srgb, var(--a2) 55%, transparent); }
[hidden] { display: none !important; }
.wrap { width: 100%; max-width: var(--wrap); margin-inline: auto; padding-inline: var(--gutter); }
.wrap--text { max-width: calc(720px + 2 * var(--gutter)); }
.sr-only, .screen-reader-text {
  position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
.skip-link {
  position: fixed; left: 12px; top: -60px; z-index: 100; padding: 10px 16px;
  background: var(--ink); color: var(--paper); text-decoration: none; font: var(--ui-weight) var(--t-sm)/1 var(--f-ui);
}
.skip-link:focus { top: 12px; }

/* ---------- typografia pomocnicza ---------- */
.display { font-family: var(--f-display); font-style: italic; font-weight: 400; }
.label {
  font-family: var(--f-ui);
  font-size: var(--t-xs);
  font-weight: var(--ui-weight);
  letter-spacing: .2em;
  text-transform: uppercase;
}
.muted { color: var(--ink-soft); }
.lead { font-family: var(--f-lead); font-style: var(--lead-style); font-weight: var(--lead-weight); font-size: clamp(1.25rem, 2.2vw, 1.6rem); line-height: 1.4; }
.dot { display: inline-block; width: 3px; height: 3px; border-radius: 50%; background: currentColor; opacity: .6; vertical-align: middle; }

/* ---------- przyciski i linki ---------- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .75em;
  padding: .95em 1.6em;
  border: 1px solid var(--ink);
  border-radius: 0;
  background: var(--ink);
  color: var(--paper);
  font: var(--ui-weight) var(--t-xs)/1 var(--f-ui);
  letter-spacing: .18em;
  text-transform: uppercase;
  text-decoration: none;
  cursor: pointer;
  transition: background .25s, color .25s, border-color .25s;
}
.btn .arr, .link-arrow .arr { transition: transform .25s; }
.btn:hover { background: transparent; color: var(--ink); }
.btn:hover .arr, .link-arrow:hover .arr { transform: translateX(4px); }
.btn--ghost { background: transparent; color: var(--ink); }
.btn--ghost:hover { background: var(--ink); color: var(--paper); }
.btn[disabled], .btn[aria-disabled="true"] { opacity: .5; pointer-events: none; }
.night .btn { border-color: var(--star); background: var(--star); color: var(--night); }
.night .btn:hover { background: transparent; color: var(--star); }
.night .btn--ghost { background: transparent; color: var(--star); }
.night .btn--ghost:hover { background: var(--star); color: var(--night); }
.link-arrow { font-family: var(--f-ui); font-weight: 600; font-size: var(--t-sm); text-decoration: none; display: inline-flex; gap: .5em; align-items: center; }
.btn-mini {
  font: 600 .68rem/1 var(--f-ui); letter-spacing: .16em; text-transform: uppercase; padding: .7em 1em;
  border: 1px solid var(--card-ink); background: transparent; color: var(--card-ink); cursor: pointer;
}
.btn-mini:hover { background: var(--card-ink); color: var(--a3); }
.pill {
  display: inline-block; font: 600 .65rem/1.4 var(--f-ui); letter-spacing: .2em; text-transform: uppercase;
  border: 1px solid var(--line-strong); padding: 4px 10px; color: var(--ink-soft);
}
.night .pill { border-color: var(--line-night); color: var(--on-night-soft); }
.pill--live { border-color: var(--ink); color: var(--ink); }
.night .pill--live { border-color: var(--star); color: var(--star); }
.chips { display: flex; flex-wrap: wrap; gap: 8px; }
.chips li { font: .8rem/1.4 var(--f-ui); padding: 6px 12px; border: 1px solid var(--line); border-radius: 999px; }
.night .chips li { border-color: var(--line-night); color: var(--on-night-soft); }

/* ---------- aura: kula koloru z ziarnem ---------- */
.aura {
  position: absolute;
  aspect-ratio: 1;
  max-width: none;
  border-radius: 50%;
  pointer-events: none;
  z-index: 0;
}
.aura::before {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: 50%;
  background: radial-gradient(circle at 50% 50%, var(--a1) 0%, var(--a2) 36%, var(--a3) 58%, transparent 71%);
  filter: blur(18px);
  animation: breathe 26s ease-in-out infinite;
}
.aura::after { /* mocniejsze ziarno w środku aury */
  content: "";
  position: absolute;
  inset: 8%;
  border-radius: 50%;
  opacity: .22;
  mix-blend-mode: soft-light;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.1' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  -webkit-mask-image: radial-gradient(circle, #000 40%, transparent 70%);
          mask-image: radial-gradient(circle, #000 40%, transparent 70%);
}
@keyframes breathe {
  0%, 100% { transform: scale(1) translate(0, 0); }
  50% { transform: scale(1.06) translate(1.5%, -1%); }
}
.aura--static::before { animation: none; }
/* wypełnienie całej karty aurą (karty znaków, afirmacja, okładki) */
.aura-fill {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(120% 90% at 18% 12%, var(--a3) 0%, transparent 55%),
    radial-gradient(90% 80% at 82% 88%, var(--a1) 0%, transparent 62%),
    radial-gradient(110% 110% at 50% 50%, var(--a2) 0%, var(--a3) 100%);
}
.aura-fill::after {
  content: "";
  position: absolute;
  inset: 0;
  opacity: .38;
  mix-blend-mode: overlay;
  background-image: var(--grain);
}

/* ---------- zdjęcia: surowe zdjęcie + aura i ziarno nakładane przez motyw ---------- */
.media { position: relative; overflow: hidden; isolation: isolate; background: var(--paper-2); }
.media img { display: block; width: 100%; height: 100%; object-fit: cover; filter: saturate(.86) contrast(.97); }
.media::before { /* aura kategorii lub znaku */
  content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none; mix-blend-mode: soft-light; opacity: .75;
  background: radial-gradient(70% 80% at 85% 10%, var(--a1) 0%, transparent 60%), radial-gradient(80% 70% at 10% 90%, var(--a2) 0%, transparent 65%);
}
.media::after {
  content: ""; position: absolute; inset: 0; z-index: 2; pointer-events: none; opacity: .16; mix-blend-mode: multiply;
  background-image: var(--grain);
}
.media--empty { display: grid; place-items: center; }
.media--empty .aura { width: 90%; left: 5%; top: -22%; }
.media--empty .ill { position: relative; z-index: 3; width: 38%; color: var(--ink); }

/* ---------- glify, ilustracje, gwiazdka ---------- */
.g { width: 1.4em; height: 1.4em; display: inline-block; vertical-align: middle; flex: none; fill: none; stroke: currentColor; stroke-width: 1.4; }
.star { width: 1em; height: 1em; display: inline-block; vertical-align: middle; flex: none; }
.ill, [data-ill] { display: block; color: inherit; }
.ill svg, [data-ill] svg { width: 100%; height: auto; display: block; }
/* duże ilustracje jako maska z pliku SVG (inc/template-tags.php): kolor z currentColor, plik w cache */
.ill--mask { width: 100%; background: currentColor; -webkit-mask: var(--ill) center / contain no-repeat; mask: var(--ill) center / contain no-repeat; }
.stars { display: inline-flex; gap: 6px; }
.stars svg { width: 15px; height: 15px; }
.stars .off { opacity: .18; }
.sep { display: block; width: min(240px, 60%); margin-inline: auto; color: var(--ink-soft); }
.night .sep { color: var(--star); }
/* ramka tarota: cienka rama z narożnikami-ornamentami */
.frame { position: relative; }
.frame > .corner { position: absolute; width: 30px; color: currentColor; pointer-events: none; }
.corner.tl { top: 0; left: 0; }
.corner.tr { top: 0; right: 0; transform: scaleX(-1); }
.corner.bl { bottom: 0; left: 0; transform: scaleY(-1); }
.corner.br { bottom: 0; right: 0; transform: scale(-1, -1); }

/* ---------- nagłówek ---------- */
/* pełne krycie: przy przewijaniu nic nie prześwituje; po przewinięciu tylko delikatny cień */
.site-head {
  position: sticky;
  top: 0;
  z-index: 50;
  background: var(--paper);
  border-bottom: 1px solid var(--line);
  transition: box-shadow .3s;
}
.site-head.is-scrolled { box-shadow: 0 12px 30px -26px rgba(30, 27, 46, .45); }
.admin-bar .site-head { top: 32px; }
@media screen and (max-width: 782px) { .admin-bar .site-head { top: 46px; } }
@media screen and (max-width: 600px) { .admin-bar .site-head { top: 0; } }
.site-head__in { display: flex; align-items: center; gap: 24px; height: var(--head-h); }
.wordmark {
  font-family: var(--f-display);
  font-style: italic;
  font-weight: 400;
  font-size: 1.6rem;
  line-height: 1;
  letter-spacing: -.01em;
  text-decoration: none;
  display: inline-flex;
  align-items: baseline;
  white-space: nowrap;
}
.wordmark .plus { width: .62em; height: .62em; margin: 0 .04em; align-self: center; transform: translateY(-.32em); display: inline-block; }
.nav { margin-left: auto; }
.nav__list { display: flex; gap: 30px; align-items: center; }
.nav__list > li { position: relative; }
.nav a {
  display: inline-block;
  font: 600 var(--t-xs)/1.2 var(--f-ui);
  letter-spacing: .18em;
  text-transform: uppercase;
  text-decoration: none;
  padding-block: 6px;
  background: linear-gradient(currentColor, currentColor) 0 100% / 0 1px no-repeat;
  transition: background-size .3s;
}
.nav a:hover, .nav a[aria-current="page"] { background-size: 100% 1px; }
.nav .menu-item-has-children > a::after { content: ""; display: inline-block; width: 5px; height: 5px; margin-left: 8px; border-right: 1px solid; border-bottom: 1px solid; transform: translateY(-3px) rotate(45deg); }
.nav .sub-menu {
  position: absolute; left: -20px; top: 100%; min-width: 210px; padding: 12px 20px; display: grid; gap: 2px;
  background: var(--paper); border: 1px solid var(--line); box-shadow: 0 18px 40px -24px rgba(30, 27, 46, .35);
  opacity: 0; visibility: hidden; transform: translateY(6px); transition: opacity .2s, transform .2s, visibility .2s;
}
.nav .sub-menu::before { content: ""; position: absolute; left: 0; right: 0; top: -12px; height: 12px; }
.nav li:hover > .sub-menu, .nav li:focus-within > .sub-menu { opacity: 1; visibility: visible; transform: none; }
.nav .sub-menu a { padding-block: 9px; letter-spacing: .14em; }
.site-head .btn { padding: .8em 1.2em; }
/* przycisk menu: okrąg jak strzałki talii, dwie kreski różnej długości, po otwarciu „×” */
.burger {
  display: none; position: relative; flex: none; margin-left: auto; width: 44px; height: 44px; padding: 0; cursor: pointer;
  border: 1px solid var(--line-strong); border-radius: 50%; background: transparent; color: var(--ink);
  transition: background .3s, border-color .3s, color .3s;
}
.burger:hover { border-color: var(--ink); }
.burger__l {
  position: absolute; left: 12px; height: 1.5px; border-radius: 2px; background: currentColor;
  transition: transform .4s cubic-bezier(.2, .7, .2, 1), top .4s cubic-bezier(.2, .7, .2, 1), width .4s cubic-bezier(.2, .7, .2, 1);
}
.burger__l:first-child { top: 16px; width: 19px; }
.burger__l:last-child { top: 25px; width: 12px; }
.burger:hover .burger__l:last-child { width: 19px; }
.burger[aria-expanded="true"] { background: var(--ink); border-color: var(--ink); color: var(--paper); }
.burger[aria-expanded="true"] .burger__l { top: 20.5px; width: 19px; }
.burger[aria-expanded="true"] .burger__l:first-child { transform: rotate(45deg); }
.burger[aria-expanded="true"] .burger__l:last-child { transform: rotate(-45deg); }
@media (max-width: 900px) {
  .nav, .site-head .btn { display: none; }
  .burger { display: block; }
}
/* menu mobilne „Nocny portal”: nocny panel spod kremowego nagłówka, bez rozmycia; nagłówek zostaje na wierzchu */
.mnav { position: fixed; inset: var(--head-h) 0 0; z-index: 45; padding: 8px; background: var(--paper); }
.admin-bar .mnav { top: calc(var(--head-h) + 46px); }
.mnav__panel {
  position: relative; height: 100%; overflow: hidden auto; overscroll-behavior: contain; isolation: isolate;
  display: flex; flex-direction: column; gap: 26px; padding: 14px 22px calc(24px + env(safe-area-inset-bottom, 0px));
  border-radius: 28px; animation: mnav-in .5s cubic-bezier(.2, .7, .2, 1);
}
.mnav.is-closing .mnav__panel { animation: mnav-out .22s ease-in forwards; }
@keyframes mnav-in { from { clip-path: inset(0 0 100% 0 round 28px); } to { clip-path: inset(0 0 0 0 round 28px); } }
@keyframes mnav-out { to { opacity: 0; transform: translateY(-10px); } }
.mnav__wheel { position: absolute; z-index: -1; width: 150%; right: -78%; top: -14%; color: var(--star); opacity: .16; pointer-events: none; animation: mnav-spin 240s linear infinite; }
@keyframes mnav-spin { to { transform: rotate(360deg); } }
.mnav__list { counter-reset: mn; }
.mnav__list > li { border-bottom: 1px solid var(--line-night); }
.mnav__list > li > a {
  display: grid; grid-template-columns: 48px minmax(0, 1fr) auto; align-items: baseline; padding: 16px 2px 14px;
  font: 400 italic clamp(2rem, 8.5vw, 2.5rem)/1.05 var(--f-display); color: var(--on-night); text-decoration: none;
}
.mnav__list > li > a::before { counter-increment: mn; content: counter(mn, upper-roman); font: 400 italic 1rem/1 var(--f-display); color: var(--star); opacity: .85; }
.mnav__list > li > a::after { content: "→"; font: 300 1.15rem/1 system-ui, sans-serif; color: var(--star); opacity: .55; transition: transform .25s, opacity .25s; }
.mnav__list > li > a:hover::after, .mnav__list > li > a:focus-visible::after { transform: translateX(4px); opacity: 1; }
.mnav__list > li > a[aria-current="page"] { color: var(--star); }
.mnav__panel a:focus-visible { outline: 1.5px solid var(--star); outline-offset: 2px; border-radius: 12px; }
.mnav__signs a:focus-visible, .mnav .sub-menu a:focus-visible { border-radius: 999px; }
.mnav .sub-menu { display: flex; flex-wrap: wrap; gap: 8px; padding: 0 0 18px 50px; margin-top: -2px; }
.mnav .sub-menu a {
  display: inline-block; padding: 8px 14px; border: 1px solid var(--line-night); border-radius: 999px;
  font: 500 .8rem/1 var(--f-ui); letter-spacing: .04em; color: var(--on-night-soft); text-decoration: none; transition: border-color .25s, color .25s;
}
.mnav .sub-menu a:hover, .mnav .sub-menu a[aria-current="page"] { border-color: var(--star); color: var(--star); }
.mnav__today { display: grid; gap: 12px; margin-top: auto; }
.mnav__today .label { color: var(--star); }
.mnav__sky { display: flex; align-items: center; gap: 10px; font: var(--t-sm)/1.4 var(--f-ui); color: var(--on-night-soft); }
.mnav__sky svg { flex: none; width: 24px; height: 24px; color: var(--star); }
.mnav__sky b { color: var(--on-night); font-weight: 500; }
.mnav__signs { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 8px; }
.mnav__signs a {
  display: grid; place-items: center; aspect-ratio: 1; max-width: 56px; border: 1px solid var(--line-night); border-radius: 50%;
  color: var(--on-night-soft); transition: border-color .25s, color .25s, background .25s;
}
.mnav__signs a:hover, .mnav__signs a:focus-visible { border-color: var(--star); color: var(--star); }
.mnav__signs a.is-mine { background: var(--star); border-color: var(--star); color: #2A2440; }
.mnav__signs .g { width: 20px; height: 20px; }
.mnav__panel > .btn { justify-content: center; }
/* pozycje wchodzą po kolei, gdy panel się rozwija */
.mnav__list > li, .mnav__today, .mnav__panel > .btn { animation: mnav-rise .55s cubic-bezier(.2, .7, .2, 1) backwards; }
.mnav__list > li:nth-child(1) { animation-delay: .12s; }
.mnav__list > li:nth-child(2) { animation-delay: .17s; }
.mnav__list > li:nth-child(3) { animation-delay: .22s; }
.mnav__list > li:nth-child(4) { animation-delay: .27s; }
.mnav__list > li:nth-child(n+5) { animation-delay: .32s; }
.mnav__today { animation-delay: .36s; }
.mnav__panel > .btn { animation-delay: .42s; }
@keyframes mnav-rise { from { opacity: 0; transform: translateY(14px); } }
body.has-mnav { overflow: hidden; }
@media (prefers-reduced-motion: reduce) {
  .burger__l, .mnav__panel, .mnav__wheel, .mnav__list > li, .mnav__today, .mnav__panel > .btn { animation: none !important; transition: none !important; }
}

/* ---------- sekcje ---------- */
.section { padding-block: var(--section); position: relative; overflow-x: clip; }
.section-head { display: flex; justify-content: space-between; align-items: end; gap: 24px; flex-wrap: wrap; margin-bottom: clamp(32px, 5vw, 56px); }
.section-head__title { display: grid; gap: 14px; max-width: 760px; }
.paper-2 { background: var(--paper-2); }
.night { background: var(--night-grad); color: var(--on-night); }
/* sekcje nocne to miękkie zaokrąglone panele, a nie pełne pasy */
.section.night { margin-inline: clamp(8px, 1.4vw, 18px); border-radius: var(--radius-panel); overflow: hidden; }
.night .muted { color: var(--on-night-soft); }
.night hr { border-color: var(--line-night); }
.night a:not(.btn) { color: inherit; }

/* ---------- formularze ---------- */
.form-row { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.field { display: grid; gap: 6px; min-width: 0; }
.field label, .field .field__label { font: 600 .7rem/1.3 var(--f-ui); letter-spacing: .16em; text-transform: uppercase; color: var(--ink-soft); }
.field input, .field select, .field textarea {
  font: 400 1rem/1.4 var(--f-ui); color: var(--ink); background: transparent; border: 0;
  border-bottom: 1px solid var(--line-strong); padding: 10px 0; border-radius: 0; width: 100%; min-width: 0;
}
.field textarea { min-height: 140px; resize: vertical; }
.field input:focus, .field select:focus, .field textarea:focus { outline: none; border-bottom-color: var(--ink); }
.field input::placeholder, .field textarea::placeholder { color: var(--ink-soft); opacity: .7; }
.night .field label { color: var(--on-night-soft); }
.night .field input, .night .field select, .night .field textarea { color: var(--on-night); border-bottom-color: var(--line-night); }
.night .field input:focus, .night .field select:focus { border-bottom-color: var(--star); }
.night .field input::placeholder, .night .field textarea::placeholder { color: var(--on-night-soft); opacity: .75; }
.night option { color: #1E1B2E; }
.check { display: grid; grid-template-columns: 18px minmax(0, 1fr); gap: 10px; align-items: start; font: var(--t-sm)/1.45 var(--f-ui); }
.check input { width: 16px; height: 16px; margin: 2px 0 0; accent-color: var(--ink); }
.night .check input { accent-color: var(--star); }
.form-note { font: var(--t-xs)/1.5 var(--f-ui); color: var(--ink-soft); }
.night .form-note { color: var(--on-night-soft); }
.form-note a { text-underline-offset: .15em; }
.form-msg { font: var(--t-sm)/1.4 var(--f-ui); min-height: 1.4em; }
.form-msg.is-ok { color: var(--ok); }
.form-msg.is-err { color: var(--err); }
.night .form-msg.is-ok { color: var(--star); }
.night .form-msg.is-err { color: #F2A3AE; }
.checklist { display: grid; gap: 10px; }
.checklist li { display: grid; grid-template-columns: 14px minmax(0, 1fr); gap: 12px; align-items: baseline; }
.checklist .star { width: 12px; height: 12px; }
@media (max-width: 560px) { .form-row { grid-template-columns: 1fr; } }

/* ---------- FAQ (natywne <details>) ---------- */
.faq { border-top: 1px solid var(--line); max-width: 860px; }
.faq details { border-bottom: 1px solid var(--line); }
.faq summary {
  list-style: none; cursor: pointer; display: flex; justify-content: space-between; gap: 24px; align-items: center;
  padding: 22px 0; font-family: var(--f-title); font-weight: var(--title-weight); font-size: 1.2rem; line-height: 1.35;
}
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after {
  content: ""; flex: none; width: 14px; height: 14px; transition: transform .3s;
  background: linear-gradient(currentColor, currentColor) center / 100% 1px no-repeat, linear-gradient(currentColor, currentColor) center / 1px 100% no-repeat;
}
.faq details[open] summary::after { transform: rotate(45deg); }
.faq details > :not(summary) { padding: 0 0 24px; max-width: 64ch; color: var(--ink-soft); }
.night .faq, .night .faq details { border-color: var(--line-night); }
.night .faq details > :not(summary) { color: var(--on-night-soft); }

/* ---------- okruszki ---------- */
.crumbs { font: .8125rem/1.5 var(--f-ui); letter-spacing: .06em; color: var(--ink-soft); display: flex; gap: 8px; flex-wrap: wrap; }
.crumbs a { text-decoration: none; }
.crumbs a:hover { text-decoration: underline; }
.night .crumbs { color: var(--on-night-soft); }

/* ---------- nagłówki stron (hero): wspólne zasady czytelności ----------
   Wstęp ciemniejszy niż --ink-soft, na telefonie grubszy i mniejszy; akcent w H1 bez włoskowej grubości;
   wyraźny koniec hero (linia z gwiazdką), żeby następna sekcja nie wyglądała na drugie hero.
   Położenie aur i wielkości wstępów: pages.css, horoskop.css, article.css, tools.css. */
:root { --ink-lead: #45405A; }
/* dolny odstęp hero ustawiają pliki stron (pages.css, horoskop.css, article.css); tu odstęp sekcji pod hero */
:is(.p-hero, .h-index-head, .mag-hero) + .section { padding-top: clamp(48px, 7vw, 76px); }
:is(.p-hero, .h-index-head, .mag-hero)::after {
  content: ""; position: absolute; left: var(--gutter); right: var(--gutter); bottom: 0; height: 11px; z-index: 1; pointer-events: none;
  background:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 1C13.3 10.7 13.3 10.7 23 12C13.3 13.3 13.3 13.3 12 23C10.7 13.3 10.7 13.3 1 12C10.7 10.7 10.7 10.7 12 1Z' fill='%2357516B'/%3E%3C/svg%3E") center / 11px 11px no-repeat,
    linear-gradient(to right, var(--line-strong) calc(50% - 16px), transparent calc(50% - 16px) calc(50% + 16px), var(--line-strong) calc(50% + 16px)) center / 100% 1px no-repeat;
}
@media (max-width: 700px) {
  /* aura w prawym dolnym rogu (położenie w plikach stron) wygasa przed dolną krawędzią, zamiast być ucięta */
  :is(.p-hero, .h-index-head, .mag-hero) > .aura {
    -webkit-mask-image: linear-gradient(to bottom, #000 30%, transparent 62%);
            mask-image: linear-gradient(to bottom, #000 30%, transparent 62%);
  }
  :is(.p-hero, .h-index-head, .a-hero, .r-hero, .moon-hero, .flag__head) h1 em { font-weight: 300; }
  /* rytm w hero: okruszki osobno, etykieta przy tytule, wstęp z oddechem */
  :is(.p-hero, .h-index-head, .mag-hero) .crumbs { margin-bottom: 10px; }
  :is(.p-hero, .h-index-head, .mag-hero) .label + h1 { margin-top: -6px; }
  :is(.p-hero, .h-index-head, .mag-hero) h1 + .lead { margin-top: 6px; }
  :is(.p-hero, .h-index-head, .r-hero__txt) .lead { font-size: 1.125rem; font-weight: 400; line-height: 1.5; }
}

/* ---------- treść stron i wpisów (długie czytanie w Newsreaderze) ---------- */
.prose {
  --f-text: "Newsreader", Georgia, serif;
  --f-title: "Newsreader", Georgia, serif;
  --f-lead: "Newsreader", Georgia, serif;
  --lead-style: italic;
  --lead-weight: 400;
  min-width: 0;
  font-family: var(--f-text);
  font-size: 1.15rem;
  line-height: 1.75;
  overflow-wrap: break-word;
}
.prose > * + * { margin-top: 1.15em; }
.prose h2 { font-size: clamp(1.8rem, 3.2vw, 2.4rem); margin-top: 2.2em; scroll-margin-top: calc(var(--head-h) + 28px); }
.prose h3 { font-size: 1.4rem; margin-top: 1.8em; scroll-margin-top: calc(var(--head-h) + 28px); }
.prose h4 { font-size: 1.15rem; margin-top: 1.6em; }
.prose ul, .prose ol { padding-left: 1.2em; }
.prose li + li { margin-top: .4em; }
.prose a { text-decoration-color: var(--line-strong); }
.prose a:hover { text-decoration-color: currentColor; }
.prose blockquote { font-style: italic; font-size: 1.3rem; line-height: 1.45; padding-left: 1.2em; border-left: 1px solid var(--line-strong); }
.prose figure img, .prose > img { display: block; }
.prose figcaption, .wp-caption-text, .wp-element-caption { font: var(--t-xs)/1.5 var(--f-ui); color: var(--ink-soft); margin-top: 10px; }
.prose table { width: 100%; border-collapse: collapse; font: var(--t-sm)/1.5 var(--f-ui); }
.prose th, .prose td { text-align: left; padding: 10px 12px 10px 0; border-bottom: 1px solid var(--line); vertical-align: top; }
.prose th { font-weight: 600; }
.prose hr { margin-block: 2.4em; }
.alignleft { float: left; margin: .3em 1.4em 1em 0; }
.alignright { float: right; margin: .3em 0 1em 1.4em; }
.aligncenter { display: block; margin-inline: auto; }

/* ---------- stopka: głęboka noc na całą szerokość ----------
   Sekcje nocne w treści to zmierzchowe, zaokrąglone panele; stopka jest od nich wyraźnie ciemniejsza i płaska,
   żeby panel nad nią (newsletter, zaproszenie na raport, lista oczekujących) nie zlewał się z nią w jedno. */
.foot {
  margin-top: clamp(32px, 5vw, 64px);
  padding-block: clamp(56px, 7vw, 80px) 32px;
  background:
    radial-gradient(60% 90% at 88% 0%, rgba(126, 100, 178, .22) 0%, transparent 62%),
    radial-gradient(50% 80% at 0% 100%, rgba(160, 96, 140, .12) 0%, transparent 60%),
    linear-gradient(180deg, #221C33 0%, #16121F 100%);
  color: var(--on-night-soft);
  font: var(--t-sm)/1.6 var(--f-ui);
}
.consts { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 10px; color: var(--star); opacity: .8; margin-bottom: 48px; }
.foot__grid { display: grid; grid-template-columns: minmax(0, 1.5fr) repeat(3, minmax(0, 1fr)); gap: 32px; }
.foot__brand { display: grid; gap: 14px; align-content: start; }
.foot__brand p { max-width: 34ch; }
.foot .wordmark { color: var(--on-night); }
.foot__h { font: var(--ui-weight) var(--t-xs)/1.3 var(--f-ui); letter-spacing: .18em; text-transform: uppercase; color: var(--star); margin-bottom: 14px; }
.foot ul { display: grid; gap: 8px; list-style: none; margin: 0; padding: 0; }
.foot a, .foot .linklike { text-decoration: none; }
.foot a:hover, .foot .linklike:hover { color: var(--on-night); }
.linklike { background: none; border: 0; padding: 0; cursor: pointer; font: inherit; color: inherit; text-align: left; }
.foot__cookie { margin-top: 8px; }
.foot__bottom { margin-top: 40px; padding-top: 20px; border-top: 1px solid var(--line-night); display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap; font-size: var(--t-xs); }
.foot__bottom a { text-decoration: underline; text-decoration-color: var(--line-night); }
@media (max-width: 800px) {
  .foot__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .foot__brand { grid-column: 1 / -1; }
  .consts { grid-template-columns: repeat(6, minmax(0, 1fr)); }
}

/* ---------- zgoda na cookies (RODO: analityka domyślnie wyłączona) ---------- */
.cookie {
  position: fixed; left: clamp(8px, 2vw, 24px); bottom: clamp(8px, 2vw, 24px); z-index: 80;
  width: min(440px, calc(100vw - 2 * clamp(8px, 2vw, 24px)));
  max-height: calc(100vh - 32px); overflow-y: auto;
  padding: 24px; display: grid; gap: 14px;
  background: var(--paper-3); border: 1px solid var(--line-strong); box-shadow: 0 24px 60px -28px rgba(30, 27, 46, .45);
  font: var(--t-sm)/1.55 var(--f-ui);
}
.cookie__title { font: 400 italic 1.7rem/1.1 var(--f-display); }
.cookie__more summary { cursor: pointer; font: 600 var(--t-xs)/1.4 var(--f-ui); letter-spacing: .16em; text-transform: uppercase; }
.cookie__opts { display: grid; gap: 12px; margin-top: 12px; }
.cookie__opt b { display: block; font-weight: 600; }
.cookie__opt span { color: var(--ink-soft); }
.cookie__actions { display: flex; flex-wrap: wrap; gap: 8px; }
.cookie__actions .btn { flex: 1 1 auto; padding: .9em 1.1em; }
.cookie__note { font-size: var(--t-xs); color: var(--ink-soft); }

/* ---------- WordPress: elementy rdzenia ---------- */
.wp-block-image, .wp-caption { max-width: 100%; }
.gallery { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 12px; }
.sticky, .bypostauthor { position: relative; }

/* ---------- ruch (budżet: oddychanie aur, jednorazowe pojawienie, hover) ---------- */
/* sam ruch bez zanikania: treść jest czytelna także zanim skrypt zadziała */
.rise { transition: transform .8s cubic-bezier(.2, .7, .2, 1); }
.rise.is-low { transform: translateY(14px); }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
  .rise.is-low { transform: none; }
}

/* elementy interfejsu zawsze w kroju UI, także wewnątrz artykułów */
.label, .btn, .btn-mini, .pill, .chips li, .crumbs, .field label, .field input, .field select, .form-note, .form-msg, .nav, .mnav .sub-menu, .foot, .cookie { font-family: var(--f-ui); }
