/*
Theme Name: Source of Beauty
Theme URI: https://sourceofbeauty.ru/
Author: Source of Beauty
Description: Изящная авторская тема для блога о красоте и здоровье. Мягкая цветовая палитра, элегантная типографика, адаптивная сетка статей.
Version: 1.0
Requires at least: 6.0
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: source-of-beauty
*/

/* ==========================================================================
   0. Variables
   ========================================================================== */

:root{
  --sob-cream:      #fdfaf6;
  --sob-cream-2:     #f7efe8;
  --sob-blush:       #f3dcd8;
  --sob-blush-2:     #eec7c2;
  --sob-rose:        #c97b84;
  --sob-rose-dark:   #a85b66;
  --sob-sage:        #8fa08b;
  --sob-sage-dark:   #71836d;
  --sob-ink:         #332c2a;
  --sob-ink-soft:    #6b5f5a;
  --sob-line:        #e8ddd5;
  --sob-white:       #ffffff;
  --sob-shadow:      0 10px 30px rgba(51, 44, 42, 0.08);
  --sob-shadow-lg:   0 20px 50px rgba(51, 44, 42, 0.12);
  --sob-radius:      18px;
  --sob-radius-sm:   10px;
  --sob-font-head:   "Playfair Display", "Georgia", serif;
  --sob-font-body:   "Jost", "Helvetica Neue", Arial, sans-serif;
  --sob-max:         1160px;
}

/* ==========================================================================
   1. Reset & base
   ========================================================================== */

*, *::before, *::after{ box-sizing: border-box; }

html{ scroll-behavior: smooth; }

body{
  margin: 0;
  background: var(--sob-cream);
  color: var(--sob-ink);
  font-family: var(--sob-font-body);
  font-size: 17px;
  line-height: 1.75;
  -webkit-font-smoothing: antialiased;
}

img{ max-width: 100%; height: auto; display: block; }

a{ color: var(--sob-rose-dark); text-decoration: none; transition: color .2s ease; }
a:hover{ color: var(--sob-rose); }

ul, ol{ padding-left: 1.2em; }

h1, h2, h3, h4, h5, h6{
  font-family: var(--sob-font-head);
  font-weight: 600;
  color: var(--sob-ink);
  line-height: 1.25;
  margin: 0 0 .5em;
}

h1{ font-size: 2.6rem; }
h2{ font-size: 2rem; }
h3{ font-size: 1.5rem; }

p{ margin: 0 0 1.3em; }

.sob-container{
  max-width: var(--sob-max);
  margin: 0 auto;
  padding: 0 24px;
}

.sob-btn{
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 12px 26px;
  border-radius: 999px;
  background: var(--sob-rose);
  color: var(--sob-white) !important;
  font-family: var(--sob-font-body);
  font-size: .92rem;
  letter-spacing: .03em;
  text-transform: uppercase;
  border: none;
  cursor: pointer;
  transition: background .2s ease, transform .2s ease;
}
.sob-btn:hover{ background: var(--sob-rose-dark); color: var(--sob-white) !important; transform: translateY(-1px); }

.sob-eyebrow{
  display: inline-block;
  font-family: var(--sob-font-body);
  font-size: .78rem;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--sob-sage-dark);
  font-weight: 600;
  margin-bottom: 10px;
}

/* ==========================================================================
   2. Header
   ========================================================================== */

.sob-header{
  position: sticky;
  top: 0;
  z-index: 50;
  background: rgba(253, 250, 246, 0.92);
  backdrop-filter: saturate(180%) blur(10px);
  border-bottom: 1px solid var(--sob-line);
}

.sob-header-inner{
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  padding: 18px 24px;
}

.sob-logo{
  font-family: var(--sob-font-head);
  font-size: 1.6rem;
  font-weight: 700;
  color: var(--sob-ink);
  letter-spacing: .01em;
  display: flex;
  align-items: center;
  gap: 10px;
}
.sob-logo:hover{ color: var(--sob-rose-dark); }
.sob-logo img{ max-height: 46px; width: auto; }
.sob-logo .sob-logo-mark{
  width: 34px; height: 34px; border-radius: 50%;
  background: linear-gradient(135deg, var(--sob-blush-2), var(--sob-sage));
  flex: 0 0 auto;
}

.sob-tagline{
  display: block;
  font-family: var(--sob-font-body);
  font-size: .72rem;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--sob-ink-soft);
  margin-top: 2px;
}

.sob-nav ul{
  list-style: none;
  display: flex;
  gap: 30px;
  margin: 0;
  padding: 0;
}
.sob-nav a{
  font-size: .95rem;
  color: var(--sob-ink);
  font-weight: 500;
  padding: 6px 2px;
  border-bottom: 2px solid transparent;
}
.sob-nav a:hover,
.sob-nav .current-menu-item > a{
  color: var(--sob-rose-dark);
  border-bottom-color: var(--sob-rose);
}

.sob-menu-toggle{
  display: none;
  background: none;
  border: 1px solid var(--sob-line);
  border-radius: 8px;
  padding: 8px 12px;
  font-size: 1.1rem;
  cursor: pointer;
}

@media (max-width: 780px){
  .sob-nav{ display: none; width: 100%; }
  .sob-nav.is-open{ display: block; }
  .sob-nav ul{ flex-direction: column; gap: 4px; padding: 14px 0 6px; }
  .sob-header-inner{ flex-wrap: wrap; }
  .sob-menu-toggle{ display: inline-block; }
}

/* ==========================================================================
   3. Hero (front page)
   ========================================================================== */

.sob-hero{
  position: relative;
  padding: 64px 24px 84px;
  text-align: center;
  background:
    radial-gradient(circle at 15% 20%, var(--sob-blush) 0%, transparent 45%),
    radial-gradient(circle at 85% 15%, rgba(143,160,139,.25) 0%, transparent 40%),
    var(--sob-cream-2);
  overflow: hidden;
  border-bottom: 1px solid var(--sob-line);
}

.sob-hero-inner{ max-width: 720px; margin: 0 auto; position: relative; z-index: 2; }

.sob-hero h1{ font-size: 3rem; margin-bottom: .35em; }

.sob-hero p.sob-lead{
  font-size: 1.15rem;
  color: var(--sob-ink-soft);
  max-width: 560px;
  margin: 0 auto 1.6em;
}

.sob-hero-deco{
  position: absolute;
  border-radius: 50%;
  opacity: .55;
}

/* ==========================================================================
   4. Post grid / cards
   ========================================================================== */

.sob-main{ padding: 60px 24px 80px; }

.sob-section-title{
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  margin-bottom: 34px;
}

.sob-grid{
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 34px;
}

@media (max-width: 980px){ .sob-grid{ grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 640px){ .sob-grid{ grid-template-columns: 1fr; } }

.sob-card{
  background: var(--sob-white);
  border-radius: var(--sob-radius);
  overflow: hidden;
  box-shadow: var(--sob-shadow);
  transition: transform .25s ease, box-shadow .25s ease;
  display: flex;
  flex-direction: column;
}
.sob-card:hover{ transform: translateY(-6px); box-shadow: var(--sob-shadow-lg); }

.sob-card-thumb{
  position: relative;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  background: var(--sob-blush);
}
.sob-card-thumb img{
  width: 100%; height: 100%; object-fit: cover;
  transition: transform .5s ease;
}
.sob-card:hover .sob-card-thumb img{ transform: scale(1.06); }

.sob-card-cat{
  position: absolute;
  top: 14px; left: 14px;
  background: rgba(253,250,246,.92);
  color: var(--sob-rose-dark);
  font-size: .72rem;
  letter-spacing: .06em;
  text-transform: uppercase;
  font-weight: 600;
  padding: 6px 12px;
  border-radius: 999px;
}

.sob-card-body{ padding: 22px 22px 26px; display: flex; flex-direction: column; flex: 1; }

.sob-card-meta{
  font-size: .8rem;
  color: var(--sob-ink-soft);
  text-transform: uppercase;
  letter-spacing: .05em;
  margin-bottom: 10px;
}

.sob-card-body h2, .sob-card-body h3{
  font-size: 1.28rem;
  margin-bottom: .5em;
}
.sob-card-body h2 a, .sob-card-body h3 a{ color: var(--sob-ink); }
.sob-card-body h2 a:hover, .sob-card-body h3 a:hover{ color: var(--sob-rose-dark); }

.sob-card-excerpt{
  color: var(--sob-ink-soft);
  font-size: .95rem;
  margin-bottom: 16px;
  flex: 1;
}

.sob-card-more{
  font-size: .82rem;
  letter-spacing: .06em;
  text-transform: uppercase;
  font-weight: 600;
  color: var(--sob-rose-dark);
}
.sob-card-more::after{ content: " →"; }

/* ==========================================================================
   5. Pagination
   ========================================================================== */

.sob-pagination{
  display: flex;
  justify-content: center;
  gap: 10px;
  margin-top: 50px;
  flex-wrap: wrap;
}
.sob-pagination a, .sob-pagination span{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 42px;
  height: 42px;
  padding: 0 12px;
  border-radius: 999px;
  background: var(--sob-white);
  border: 1px solid var(--sob-line);
  color: var(--sob-ink);
  font-size: .9rem;
}
.sob-pagination .current{ background: var(--sob-rose); color: var(--sob-white); border-color: var(--sob-rose); }
.sob-pagination a:hover{ border-color: var(--sob-rose); color: var(--sob-rose-dark); }

/* ==========================================================================
   6. Single post
   ========================================================================== */

.sob-single-header{
  padding: 56px 24px 20px;
  text-align: center;
  background: var(--sob-cream-2);
  border-bottom: 1px solid var(--sob-line);
}
.sob-single-header .sob-container{ max-width: 800px; }
.sob-single-header h1{ font-size: 2.5rem; }

.sob-post-meta{
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  flex-wrap: wrap;
  font-size: .85rem;
  color: var(--sob-ink-soft);
  text-transform: uppercase;
  letter-spacing: .05em;
  margin-bottom: 18px;
}
.sob-post-meta a{ color: var(--sob-rose-dark); }
.sob-post-meta .dot{ opacity: .5; }

.sob-single-thumb{
  max-width: 900px;
  margin: 0 auto;
  padding: 0 24px;
  transform: translateY(40px);
}
.sob-single-thumb img{
  border-radius: var(--sob-radius);
  box-shadow: var(--sob-shadow-lg);
}

.sob-single-content{
  max-width: 760px;
  margin: 0 auto;
  padding: 70px 24px 40px;
}

.sob-single-content h2{ margin-top: 1.6em; }
.sob-single-content h3{ margin-top: 1.4em; }
.sob-single-content blockquote{
  margin: 2em 0;
  padding: 4px 0 4px 24px;
  border-left: 3px solid var(--sob-rose);
  font-family: var(--sob-font-head);
  font-style: italic;
  font-size: 1.2rem;
  color: var(--sob-ink-soft);
}
.sob-single-content ul li, .sob-single-content ol li{ margin-bottom: .5em; }
.sob-single-content figure{ margin: 2em 0; }
.sob-single-content figcaption{
  text-align: center;
  font-size: .85rem;
  color: var(--sob-ink-soft);
  margin-top: 10px;
}
.sob-single-content img{ border-radius: var(--sob-radius-sm); }

.sob-tags{
  max-width: 760px;
  margin: 0 auto;
  padding: 0 24px 10px;
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}
.sob-tags a{
  font-size: .8rem;
  padding: 6px 14px;
  border-radius: 999px;
  background: var(--sob-cream-2);
  border: 1px solid var(--sob-line);
  color: var(--sob-ink-soft);
}
.sob-tags a:hover{ color: var(--sob-rose-dark); border-color: var(--sob-rose); }

.sob-author-box{
  max-width: 760px;
  margin: 40px auto 0;
  padding: 24px;
  background: var(--sob-white);
  border-radius: var(--sob-radius);
  box-shadow: var(--sob-shadow);
  display: flex;
  gap: 18px;
  align-items: center;
}
.sob-author-box img{ border-radius: 50%; width: 64px; height: 64px; }
.sob-author-box .sob-author-name{ font-family: var(--sob-font-head); font-size: 1.05rem; margin-bottom: 4px; }
.sob-author-box p{ margin: 0; font-size: .92rem; color: var(--sob-ink-soft); }

/* ==========================================================================
   7. Sidebar / widgets (footer areas)
   ========================================================================== */

.widget{ margin-bottom: 34px; }
.widget-title{
  font-family: var(--sob-font-head);
  font-size: 1.1rem;
  margin-bottom: 16px;
  color: var(--sob-white);
}
.widget ul{ list-style: none; padding: 0; margin: 0; }
.widget li{ margin-bottom: 8px; }

/* ==========================================================================
   8. Footer
   ========================================================================== */

.sob-footer{
  background: var(--sob-ink);
  color: #e9e2dd;
  padding: 64px 24px 26px;
}
.sob-footer a{ color: #f0d9d5; }
.sob-footer a:hover{ color: var(--sob-white); }

.sob-footer-grid{
  display: grid;
  grid-template-columns: 1.3fr 1fr 1fr;
  gap: 40px;
  margin-bottom: 40px;
}
@media (max-width: 780px){ .sob-footer-grid{ grid-template-columns: 1fr; } }

.sob-footer-brand .sob-logo{ color: var(--sob-white); margin-bottom: 12px; }
.sob-footer-brand p{ color: #cfc3bd; font-size: .92rem; }

.sob-footer-bottom{
  border-top: 1px solid rgba(255,255,255,.12);
  padding-top: 22px;
  display: flex;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
  font-size: .82rem;
  color: #b9ada7;
}

/* ==========================================================================
   9. Misc: search, 404, comments, forms
   ========================================================================== */

.sob-search-form{ display: flex; gap: 8px; max-width: 480px; margin: 0 auto; }
.sob-search-form input[type="search"]{
  flex: 1;
  padding: 12px 16px;
  border-radius: 999px;
  border: 1px solid var(--sob-line);
  font-family: var(--sob-font-body);
  font-size: .95rem;
}
.sob-search-form button{
  border: none;
  background: var(--sob-rose);
  color: var(--sob-white);
  border-radius: 999px;
  padding: 0 22px;
  cursor: pointer;
}
.sob-search-form button:hover{ background: var(--sob-rose-dark); }

.sob-empty{
  text-align: center;
  padding: 60px 24px;
  color: var(--sob-ink-soft);
}

.sob-comments{ max-width: 760px; margin: 40px auto 0; padding: 0 24px; }

/* WP core alignment helpers */
.alignwide{ max-width: 1000px; margin-left: calc(50% - 500px); width: 1000px; }
.alignfull{ width: 100%; max-width: 100%; }
.aligncenter{ margin-left: auto; margin-right: auto; display: block; }

/* ==========================================================================
   10. Rich article components (drop cap, callouts, steps, TOC, tables,
       pull quotes, comparison columns, FAQ)
   ========================================================================== */

/* Anchored headings should clear the sticky header */
.sob-single-content h2[id], .sob-single-content h3[id]{ scroll-margin-top: 110px; }

/* Drop cap on the opening paragraph */
.sob-single-content p.has-drop-cap:first-letter{
  float: left;
  font-family: var(--sob-font-head);
  font-weight: 700;
  font-size: 4.4em;
  line-height: .82;
  padding: .04em .1em 0 0;
  color: var(--sob-rose-dark);
}

/* Inline highlight */
.sob-single-content mark{
  background: var(--sob-blush);
  color: var(--sob-rose-dark);
  padding: .05em .35em;
  border-radius: 5px;
  box-decoration-break: clone;
  -webkit-box-decoration-break: clone;
}

/* Callout boxes: summary / tip / table-of-contents */
.sob-callout{
  margin: 2.2em 0;
  padding: 26px 28px;
  border-radius: var(--sob-radius);
  background: var(--sob-cream-2);
  border: 1px solid var(--sob-line);
}
.sob-callout__label{
  display: flex;
  align-items: center;
  gap: 8px;
  font-family: var(--sob-font-body);
  font-size: .74rem;
  letter-spacing: .14em;
  text-transform: uppercase;
  font-weight: 700;
  color: var(--sob-rose-dark);
  margin-bottom: 14px;
}
.sob-callout ul, .sob-callout ol{ margin: 0; padding-left: 1.2em; }
.sob-callout li{ margin-bottom: .5em; font-size: .97rem; }
.sob-callout li:last-child{ margin-bottom: 0; }

.sob-callout--tip{ background: #eef3ec; border-color: #d9e4d5; }
.sob-callout--tip .sob-callout__label{ color: var(--sob-sage-dark); }

.sob-callout--toc{ background: var(--sob-white); border-color: var(--sob-line); box-shadow: var(--sob-shadow); }
.sob-callout--toc ol{ counter-reset: sob-toc; list-style: none; padding-left: 0; }
.sob-callout--toc ol li{
  counter-increment: sob-toc;
  padding-left: 2em;
  position: relative;
}
.sob-callout--toc ol li::before{
  content: counter(sob-toc);
  position: absolute;
  left: 0; top: -.05em;
  width: 1.5em; height: 1.5em;
  border-radius: 50%;
  background: var(--sob-cream-2);
  color: var(--sob-rose-dark);
  font-family: var(--sob-font-head);
  font-weight: 700;
  font-size: .82rem;
  display: flex; align-items: center; justify-content: center;
}
.sob-callout--toc a{ color: var(--sob-ink); font-weight: 500; }
.sob-callout--toc a:hover{ color: var(--sob-rose-dark); }

/* Numbered step cards */
.sob-steps{
  display: flex;
  flex-direction: column;
  gap: 18px;
  margin: 2.2em 0;
}
.sob-step{
  display: flex;
  gap: 18px;
  align-items: flex-start;
  padding: 22px;
  background: var(--sob-white);
  border-radius: var(--sob-radius-sm);
  box-shadow: var(--sob-shadow);
}
.sob-step-num{
  flex: 0 0 auto;
  width: 40px; height: 40px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--sob-rose), var(--sob-sage));
  color: #fff;
  display: flex; align-items: center; justify-content: center;
  font-family: var(--sob-font-head);
  font-weight: 700;
  font-size: 1.05rem;
}
.sob-step-body h3{ margin: 0 0 .35em; font-size: 1.12rem; }
.sob-step-body p{ margin: 0; color: var(--sob-ink-soft); font-size: .95rem; }

/* Pull quotes (core block) */
.sob-single-content .wp-block-pullquote{
  margin: 2.6em 0;
  padding: 1.5em 10px;
  text-align: center;
  border-top: 2px solid var(--sob-blush-2);
  border-bottom: 2px solid var(--sob-blush-2);
}
.sob-single-content .wp-block-pullquote blockquote{ margin: 0; border: none; padding: 0; }
.sob-single-content .wp-block-pullquote p{
  font-family: var(--sob-font-head);
  font-size: 1.55rem;
  font-style: italic;
  line-height: 1.4;
  color: var(--sob-ink);
  margin: 0;
}
.sob-single-content .wp-block-pullquote cite{
  display: block;
  margin-top: .7em;
  font-size: .78rem;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--sob-ink-soft);
  font-style: normal;
}

/* Decorative separator */
.sob-single-content .wp-block-separator{
  border: none;
  height: 2px;
  width: 110px;
  margin: 3.2em auto;
  background: linear-gradient(90deg, transparent, var(--sob-rose), transparent);
  opacity: 1;
}

/* Comparison columns (Да / Нет) */
.sob-single-content .wp-block-columns.sob-compare{ gap: 22px; margin: 2.2em 0; }
.sob-compare .wp-block-column{
  padding: 22px 24px;
  border-radius: var(--sob-radius-sm);
}
.sob-compare .wp-block-column:first-child{ background: #eef3ec; border: 1px solid #d9e4d5; }
.sob-compare .wp-block-column:last-child{ background: #faeceb; border: 1px solid #f1d5d2; }
.sob-compare h3{ font-size: 1.05rem; margin: 0 0 .6em; }
.sob-compare ul{ margin: 0; padding-left: 1.15em; }
.sob-compare li{ margin-bottom: .45em; font-size: .93rem; }

/* Tables */
.sob-single-content .wp-block-table{
  margin: 2.2em 0;
  border-radius: var(--sob-radius-sm);
  overflow: hidden;
  box-shadow: var(--sob-shadow);
}
.sob-single-content .wp-block-table table{ width: 100%; border-collapse: collapse; font-size: .92rem; margin: 0; }
.sob-single-content .wp-block-table th,
.sob-single-content .wp-block-table td{ padding: 13px 16px; border-bottom: 1px solid var(--sob-line); text-align: left; vertical-align: top; }
.sob-single-content .wp-block-table thead th{
  background: var(--sob-cream-2);
  font-family: var(--sob-font-head);
  font-weight: 600;
  color: var(--sob-ink);
}
.sob-single-content .wp-block-table tbody tr:last-child td{ border-bottom: none; }
.sob-single-content .wp-block-table tbody tr:nth-child(even){ background: rgba(243, 220, 216, .12); }

/* FAQ accordion-style list */
.sob-faq{ margin: 2.2em 0; }
.sob-faq-item{ padding: 18px 0; border-bottom: 1px solid var(--sob-line); }
.sob-faq-item:first-child{ border-top: 1px solid var(--sob-line); }
.sob-faq-q{
  font-family: var(--sob-font-head);
  font-size: 1.08rem;
  margin: 0 0 .5em;
  color: var(--sob-ink);
}
.sob-faq-a{ margin: 0; color: var(--sob-ink-soft); }

@media (max-width: 640px){
  .sob-step{ flex-direction: column; }
  .sob-single-content .wp-block-columns.sob-compare{ flex-direction: column; }
}
