/**
 * 艮岳网 主题样式
 * 宋徽宗美学 × 莫兰迪色彩
 */

/* ============================================================
   CSS 自定义属性
   ============================================================ */
:root {
  /* 莫兰迪色系 */
  --gy-primary:         #8B9D77;
  --gy-primary-light:   #A8BC92;
  --gy-primary-dark:    #6B7D5A;
  --gy-secondary:       #C4A882;
  --gy-secondary-light: #D9C4A8;
  --gy-secondary-dark:  #A88B66;
  --gy-accent:          #B08A7A;
  --gy-accent-light:    #C9A898;
  --gy-accent-dark:     #8A6A5C;

  /* 中性色 */
  --gy-dark:     #3A3028;
  --gy-gray-900: #4A4040;
  --gy-gray-700: #6B6258;
  --gy-gray-500: #9A9088;
  --gy-gray-300: #C8C0B8;
  --gy-gray-100: #EDE8E3;

  /* 背景 */
  --gy-bg:       #F7F3EE;
  --gy-bg-card:  #FDFAF6;
  --gy-bg-code:  #2C2A26;

  /* 文字 */
  --gy-text:      #3A3028;
  --gy-text-muted:#7A7068;
  --gy-text-link: #6B7D5A;

  /* 圆角 */
  --gy-radius-sm: 4px;
  --gy-radius:    8px;
  --gy-radius-lg: 14px;

  /* 阴影 */
  --gy-shadow-sm: 0 1px 4px rgba(58,48,40,.07);
  --gy-shadow:    0 4px 14px rgba(58,48,40,.09);
  --gy-shadow-lg: 0 8px 28px rgba(58,48,40,.11);

  /* 字体 */
  --gy-font-serif: 'Noto Serif SC', 'Source Han Serif SC', 'SimSun', serif;
  --gy-font-sans:  'Noto Sans SC', 'PingFang SC', 'Microsoft YaHei', sans-serif;
  --gy-font-mono:  'JetBrains Mono', 'Fira Code', monospace;

  /* 过渡 */
  --gy-transition: .2s ease;
}

/* ============================================================
   全局基础
   ============================================================ */
*, *::before, *::after { box-sizing: border-box; }

html { scroll-behavior: smooth; }

body.gy-body {
  font-family:      var(--gy-font-sans);
  font-size:        1rem;
  line-height:      1.75;
  color:            var(--gy-text);
  background-color: var(--gy-bg);
  -webkit-font-smoothing: antialiased;
}

a {
  color:           var(--gy-text-link);
  text-decoration: none;
  transition:      color var(--gy-transition);
}
a:hover { color: var(--gy-primary-dark); text-decoration: underline; }

h1, h2, h3, h4, h5, h6 {
  font-family: var(--gy-font-serif);
  font-weight: 700;
  color:       var(--gy-dark);
  line-height: 1.35;
}

/* ============================================================
   导航栏
   ============================================================ */
.gy-navbar {
  background-color: rgba(253, 250, 246, .96);
  backdrop-filter:  blur(8px);
  border-bottom:    1px solid var(--gy-gray-100);
  box-shadow:       var(--gy-shadow-sm);
  z-index:          1030;
  line-height:      1;
}
.gy-navbar .navbar {
  --bs-navbar-padding-y: 0;
  --bs-navbar-brand-padding-y: 0;
  min-height: 60px;
}
.gy-navbar .container,
.gy-navbar .navbar-collapse {
  align-items: center;
  min-height: 60px;
}
.gy-navbar .navbar-nav {
  align-items: center;
  flex-wrap: nowrap;
  gap: 1px;
}
.gy-navbar .nav-item {
  display: flex;
  align-items: center;
}

.gy-brand {
  display: inline-flex;
  align-items: center;
  flex: 0 0 auto;
  gap: 0;
  margin-right: 1.15rem;
  padding: 0;
  font-family: var(--gy-font-serif);
  font-weight: 700;
  line-height: 1;
  color: var(--gy-dark) !important;
  text-decoration: none;
}
.gy-brand:hover { color: var(--gy-dark) !important; text-decoration: none; }
.gy-brand-zh {
  color: var(--gy-primary-dark);
  font-size: 1.3rem;
  font-weight: 700;
  letter-spacing: 0.18em;
  line-height: 1;
  margin-right: -0.18em;
}
.gy-brand-sep {
  display: block;
  width: 3px;
  height: 3px;
  margin: 0 0.55rem;
  border-radius: 50%;
  background: var(--gy-secondary);
  flex: 0 0 auto;
}
.gy-brand-en {
  color: var(--gy-gray-500);
  font-family: var(--gy-font-sans);
  font-size: 0.8125rem;
  font-weight: 500;
  letter-spacing: 0.02em;
  line-height: 1;
  transform: translateY(1px);
}

.gy-navbar .nav-link {
  display: inline-flex;
  align-items: center;
  gap: 0.28rem;
  height: 32px;
  margin: 0;
  padding: 0 0.48rem 0 0.42rem;
  border-radius: 6px;
  color: var(--gy-gray-700);
  font-family: var(--gy-font-sans);
  font-size: 0.875rem;
  font-weight: 500;
  line-height: 1;
  white-space: nowrap;
  text-decoration: none;
  transition: background var(--gy-transition), color var(--gy-transition);
}
.gy-navbar .nav-link span {
  letter-spacing: 0.06em;
  margin-right: -0.06em;
}
.gy-navbar .nav-link i {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.05em;
  height: 1em;
  flex: 0 0 auto;
  font-size: 0.92rem;
  line-height: 1;
  color: currentColor;
  opacity: 0.82;
}
.gy-navbar .nav-link:hover,
.gy-navbar .nav-link.active {
  color: var(--gy-primary-dark);
  background-color: rgba(139, 157, 119, .12);
  text-decoration: none;
}
.gy-navbar .nav-link:hover i,
.gy-navbar .nav-link.active i { opacity: 1; }
.gy-navbar .navbar-toggler {
  align-items: center;
  justify-content: center;
  width: 34px;
  height: 34px;
  padding: 0;
  border: 1px solid var(--gy-gray-300);
  border-radius: 6px;
  color: var(--gy-dark);
  font-size: 1.2rem;
  line-height: 1;
}
.gy-navbar .navbar-toggler:focus { box-shadow: 0 0 0 .2rem rgba(139, 157, 119, .2); }

/* 搜索框 */
.gy-search-form { position: relative; }

.gy-navbar .gy-search-form {
  align-items: center;
  margin-right: 0.7rem !important;
}
.gy-navbar .gy-search-form .input-group {
  height: 32px;
  flex-wrap: nowrap;
  align-items: stretch;
}
.gy-search-input,
.gy-navbar .input-group-sm > .gy-search-input {
  background:   var(--gy-bg);
  border-color: var(--gy-gray-300);
  border-radius: 6px 0 0 6px !important;
  color:        var(--gy-text);
  font-family:  var(--gy-font-sans);
  font-size:    0.8125rem;
  font-weight:  400;
  height:       32px;
  min-height:   32px;
  line-height:  30px;
  padding:      0 0.7rem;
  width:        196px;
  transition:   border-color var(--gy-transition), width var(--gy-transition);
}
.gy-navbar .gy-search-input::placeholder {
  color: var(--gy-gray-500);
  opacity: 1;
}
.gy-search-input:focus,
.gy-navbar .gy-search-input:focus {
  border-color: var(--gy-primary);
  box-shadow:   0 0 0 .2rem rgba(139,157,119,.2);
  width:        232px;
  outline:      none;
}

.gy-btn-search,
.gy-navbar .input-group-sm > .gy-btn-search {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  min-height: 32px;
  padding: 0;
  font-size: 0.875rem;
  line-height: 1;
  background-color: var(--gy-primary);
  color:            #fff;
  border:           none;
  border-radius:    0 6px 6px 0 !important;
}
.gy-btn-search:hover { background-color: var(--gy-primary-dark); color: #fff; }

.gy-search-dropdown {
  position:   absolute;
  top:        100%;
  left:       0;
  right:      0;
  z-index:    1050;
  background: var(--gy-bg-card);
  border:     1px solid var(--gy-gray-300);
  border-top: none;
  border-radius: 0 0 var(--gy-radius) var(--gy-radius);
  box-shadow: var(--gy-shadow);
  max-height: 400px;
  overflow-y: auto;
}

/* 头像 */
.gy-avatar-xs { width: 24px; height: 24px; object-fit: cover; }
.gy-avatar-sm { width: 36px; height: 36px; object-fit: cover; }
.gy-avatar    { width: 48px; height: 48px; object-fit: cover; }
.gy-avatar-lg { width: 80px; height: 80px; object-fit: cover; }

/* 按钮 */
.gy-btn-primary {
  background-color: var(--gy-primary);
  color: #fff;
  border: none;
  border-radius: var(--gy-radius-sm);
  padding: .35rem .85rem;
  font-size: .875rem;
  transition: background var(--gy-transition);
}
.gy-btn-primary:hover { background-color: var(--gy-primary-dark); color: #fff; }

.gy-btn-outline {
  background: transparent;
  color: var(--gy-primary-dark);
  border: 1px solid var(--gy-primary);
  border-radius: var(--gy-radius-sm);
  padding: .35rem .85rem;
  font-size: .875rem;
  transition: background var(--gy-transition), color var(--gy-transition);
}
.gy-btn-outline:hover {
  background-color: var(--gy-primary);
  color: #fff;
  text-decoration: none;
}

.gy-navbar .gy-btn-outline,
.gy-navbar .gy-btn-primary,
.gy-navbar .gy-btn-user {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 32px;
  padding: 0 calc(0.8rem - 0.08em) 0 0.8rem;
  border: 1px solid transparent;
  border-radius: 6px;
  font-family: var(--gy-font-sans);
  font-size: 0.875rem;
  font-weight: 500;
  letter-spacing: 0.08em;
  line-height: 1;
  white-space: nowrap;
}
.gy-navbar .gy-btn-outline { border-color: var(--gy-primary); }
.gy-navbar .gy-btn-primary { border-color: var(--gy-primary); }
.gy-navbar .d-flex.gap-2 { align-items: center; gap: 0.4rem !important; }
.gy-navbar .gy-btn-user {
  gap: 0.4rem;
  padding: 0 0.62rem 0 0.28rem;
  letter-spacing: 0;
  background: transparent;
  border: 1px solid var(--gy-gray-300);
  color: var(--gy-text);
}
.gy-navbar .gy-user-name {
  max-width: 6.5em;
  overflow: hidden;
  text-overflow: ellipsis;
  letter-spacing: 0.02em;
}
.gy-navbar .gy-avatar-xs {
  width: 22px;
  height: 22px;
  flex: 0 0 auto;
}
.gy-btn-user:hover { border-color: var(--gy-primary); color: var(--gy-primary-dark); background: transparent; }
.gy-navbar .gy-btn-user.dropdown-toggle::after {
  margin-left: 0.35rem;
  vertical-align: middle;
}

/* Offcanvas */
.gy-offcanvas { background-color: var(--gy-bg-card); }
.gy-offcanvas .offcanvas-title {
  margin: 0;
  font-size: 1.2rem;
  letter-spacing: 0.14em;
}
.gy-offcanvas .nav-link {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  height: 44px;
  padding: 0 0.2rem;
  border-radius: 6px;
  font-size: 0.975rem;
  font-weight: 500;
  text-decoration: none;
}
.gy-offcanvas .nav-link span { letter-spacing: 0.1em; }
.gy-offcanvas .nav-link i {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.25em;
  font-size: 1.05rem;
  color: var(--gy-primary-dark);
  opacity: 0.9;
}
.gy-offcanvas .gy-btn-outline,
.gy-offcanvas .gy-btn-primary {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 40px;
  font-weight: 500;
  letter-spacing: 0.08em;
}

/* ============================================================
   Hero Banner
   ============================================================ */
.gy-hero {
  background: linear-gradient(135deg, #EDE8E3 0%, #D9C4A8 50%, #C8C0B8 100%);
  padding: 4rem 0 3rem;
  text-align: center;
  position: relative;
  overflow: hidden;
}
.gy-hero::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100' height='100'%3E%3Ccircle cx='50' cy='50' r='40' fill='none' stroke='rgba(139,157,119,.08)' stroke-width='1'/%3E%3C/svg%3E");
  opacity: .5;
}
.gy-hero-title {
  font-family: var(--gy-font-serif);
  font-size:   clamp(2rem, 5vw, 3.5rem);
  color:       var(--gy-dark);
  font-weight: 700;
  letter-spacing: .08em;
  position: relative;
}
.gy-hero-subtitle {
  font-size:   1.1rem;
  color:       var(--gy-gray-700);
  margin-top:  .5rem;
  position:    relative;
}
.gy-hero-actions { position: relative; margin-top: 1.5rem; }
.gy-hero-lead {
  max-width: 40rem;
  margin: .85rem auto 0;
  position: relative;
  color: var(--gy-gray-700);
  line-height: 1.75;
}

/* ============================================================
   内容卡片
   ============================================================ */
.gy-card {
  background:    var(--gy-bg-card);
  border:        1px solid var(--gy-gray-100);
  border-radius: var(--gy-radius);
  box-shadow:    var(--gy-shadow-sm);
  overflow:      hidden;
  transition:    box-shadow var(--gy-transition), transform var(--gy-transition);
  height:        100%;
  display:       flex;
  flex-direction: column;
}
.gy-card:hover {
  box-shadow: var(--gy-shadow);
  transform:  translateY(-2px);
}

.gy-card-img {
  width:       100%;
  height:      180px;
  object-fit:  cover;
  background:  var(--gy-gray-100);
  display:     block;
}

.gy-card-img-placeholder {
  width:       100%;
  height:      180px;
  background:  linear-gradient(135deg, var(--gy-gray-100), var(--gy-secondary-light));
  display:     flex;
  align-items: center;
  justify-content: center;
  font-size:   2.5rem;
  color:       var(--gy-gray-500);
}

.gy-card-body {
  padding:    1.25rem;
  flex:       1;
  display:    flex;
  flex-direction: column;
}

.gy-card-meta {
  display:     flex;
  align-items: center;
  gap:         .5rem;
  font-size:   .8rem;
  color:       var(--gy-text-muted);
  margin-bottom: .5rem;
  flex-wrap:   wrap;
}

.gy-card-title {
  font-family: var(--gy-font-serif);
  font-size:   1rem;
  font-weight: 700;
  color:       var(--gy-dark);
  margin-bottom: .5rem;
  line-height: 1.4;
  flex: 1;
}
.gy-card-title a { color: inherit; }
.gy-card-title a:hover { color: var(--gy-primary-dark); text-decoration: none; }

.gy-card-summary {
  font-size:   .875rem;
  color:       var(--gy-gray-700);
  line-height: 1.6;
  margin-bottom: .75rem;
}

.gy-card-footer {
  display:     flex;
  align-items: center;
  justify-content: space-between;
  padding-top: .75rem;
  border-top:  1px solid var(--gy-gray-100);
  font-size:   .8rem;
  color:       var(--gy-text-muted);
  margin-top:  auto;
}

/* ============================================================
   类型徽章
   ============================================================ */
.gy-type-badge {
  font-size:     .7rem;
  padding:       .2em .5em;
  border-radius: var(--gy-radius-sm);
  font-weight:   600;
  letter-spacing: .02em;
}
.bg-sage  { background-color: #8B9D77 !important; color: #fff !important; }
.bg-sand  { background-color: #C4A882 !important; color: #fff !important; }
.bg-rose  { background-color: #B08A7A !important; color: #fff !important; }
.bg-clay  { background-color: #9A8870 !important; color: #fff !important; }
.bg-muted { background-color: #9A9088 !important; color: #fff !important; }

/* ============================================================
   文章详情页
   ============================================================ */
.gy-article-header { margin-bottom: 2rem; }

.gy-article-title {
  font-family:    var(--gy-font-serif);
  font-size:      clamp(1.5rem, 4vw, 2.2rem);
  font-weight:    700;
  color:          var(--gy-dark);
  line-height:    1.3;
  margin-bottom:  .75rem;
}

.gy-article-meta {
  display:     flex;
  flex-wrap:   wrap;
  gap:         1rem;
  align-items: center;
  font-size:   .875rem;
  color:       var(--gy-text-muted);
  padding-bottom: 1rem;
  border-bottom: 1px solid var(--gy-gray-100);
}

.gy-article-meta img {
  width: 32px; height: 32px;
  border-radius: 50%;
  object-fit: cover;
}

.gy-article-body {
  font-size:   1rem;
  line-height: 1.85;
  color:       var(--gy-text);
}

.gy-article-body h1, .gy-article-body h2,
.gy-article-body h3, .gy-article-body h4 {
  font-family:  var(--gy-font-serif);
  margin-top:   2rem;
  margin-bottom:.75rem;
  color:        var(--gy-dark);
}
.gy-article-body h2 {
  font-size:     1.4rem;
  border-left:   3px solid var(--gy-primary);
  padding-left:  .75rem;
}
.gy-article-body h3 { font-size: 1.2rem; }

.gy-article-body p  { margin-bottom: 1.2rem; }

.gy-article-body img {
  max-width:     100%;
  height:        auto;
  border-radius: var(--gy-radius);
  margin:        1rem 0;
  box-shadow:    var(--gy-shadow-sm);
}

.gy-article-body img.gy-svg-embed,
.gy-comment-content img.gy-svg-embed {
  display:       block;
  max-width:     100%;
  height:        auto;
  border-radius: var(--gy-radius);
  margin:        1rem 0;
}

.gy-article-body blockquote {
  border-left:    3px solid var(--gy-secondary);
  padding:        .75rem 1.25rem;
  background:     rgba(196,168,130,.08);
  border-radius:  0 var(--gy-radius-sm) var(--gy-radius-sm) 0;
  color:          var(--gy-gray-700);
  font-style:     italic;
  margin:         1.2rem 0;
}

.gy-article-body code {
  background:    rgba(139,157,119,.12);
  color:         var(--gy-primary-dark);
  padding:       .1em .4em;
  border-radius: var(--gy-radius-sm);
  font-family:   var(--gy-font-mono);
  font-size:     .875em;
}

.gy-article-body pre {
  background:    var(--gy-bg-code);
  color:         #e8e0d8;
  border-radius: var(--gy-radius);
  padding:       1.25rem;
  overflow-x:    auto;
  margin:        1.2rem 0;
  font-family:   var(--gy-font-mono);
  font-size:     .875rem;
  line-height:   1.6;
}
.gy-article-body pre code {
  background: none;
  color:      inherit;
  padding:    0;
}

.gy-article-body table {
  width:        100%;
  border-collapse: collapse;
  margin:       1.2rem 0;
  font-size:    .9rem;
}
.gy-article-body th {
  background:  var(--gy-gray-100);
  color:       var(--gy-dark);
  font-weight: 600;
  text-align:  left;
  padding:     .6rem .9rem;
  border:      1px solid var(--gy-gray-300);
}
.gy-article-body td {
  padding: .5rem .9rem;
  border:  1px solid var(--gy-gray-300);
}
.gy-article-body tr:nth-child(even) td { background: rgba(239,233,226,.4); }

/* ============================================================
   评论区
   ============================================================ */
.gy-comments { margin-top: 3rem; }
.gy-comments-title {
  font-family:   var(--gy-font-serif);
  font-size:     1.2rem;
  font-weight:   700;
  color:         var(--gy-dark);
  padding-bottom: .5rem;
  border-bottom: 2px solid var(--gy-gray-100);
  margin-bottom: 1.5rem;
}

.gy-comment {
  display:       flex;
  gap:           .85rem;
  margin-bottom: 1.5rem;
}
.gy-comment-body {
  flex:          1;
  background:    var(--gy-bg-card);
  border:        1px solid var(--gy-gray-100);
  border-radius: var(--gy-radius);
  padding:       .85rem 1rem;
}
.gy-comment-header {
  display:       flex;
  gap:           .75rem;
  align-items:   center;
  margin-bottom: .4rem;
  font-size:     .85rem;
}
.gy-comment-author { font-weight: 600; color: var(--gy-dark); }
.gy-comment-time   { color: var(--gy-text-muted); }
.gy-comment-content { font-size: .925rem; line-height: 1.7; }

/* ============================================================
   论坛
   ============================================================ */
.gy-forum-cat {
  background:    var(--gy-bg-card);
  border:        1px solid var(--gy-gray-100);
  border-radius: var(--gy-radius);
  margin-bottom: 1rem;
  overflow:      hidden;
  transition:    box-shadow var(--gy-transition);
}
.gy-forum-cat:hover { box-shadow: var(--gy-shadow-sm); }

.gy-forum-cat-header {
  display:         flex;
  align-items:     center;
  gap:             .85rem;
  padding:         1rem 1.25rem;
  border-bottom:   1px solid var(--gy-gray-100);
  background:      rgba(139,157,119,.05);
}
.gy-forum-cat-icon {
  width:           42px; height: 42px;
  border-radius:   var(--gy-radius-sm);
  background:      var(--gy-primary);
  color:           #fff;
  display:         flex;
  align-items:     center;
  justify-content: center;
  font-size:       1.2rem;
  flex-shrink:     0;
}
.gy-forum-cat-name { font-family: var(--gy-font-serif); font-size: 1.05rem; font-weight: 700; }
.gy-forum-cat-desc { font-size: .85rem; color: var(--gy-text-muted); }

.gy-forum-cat-stats {
  padding:     .6rem 1.25rem;
  display:     flex;
  gap:         1.5rem;
  font-size:   .825rem;
  color:       var(--gy-text-muted);
  align-items: center;
}
.gy-forum-cat-latest a { color: var(--gy-text-link); }

.gy-thread-item {
  display:       flex;
  gap:           1rem;
  padding:       .85rem 1.25rem;
  border-bottom: 1px solid var(--gy-gray-100);
  align-items:   flex-start;
  transition:    background var(--gy-transition);
}
.gy-thread-item:hover    { background: rgba(139,157,119,.04); }
.gy-thread-item:last-child { border-bottom: none; }

.gy-thread-title {
  font-weight: 600;
  color:       var(--gy-dark);
  font-size:   .95rem;
}
.gy-thread-title:hover { color: var(--gy-primary-dark); text-decoration: none; }
.gy-thread-meta { font-size: .8rem; color: var(--gy-text-muted); margin-top: .2rem; }

.gy-thread-stats {
  text-align:  center;
  font-size:   .8rem;
  color:       var(--gy-text-muted);
  flex-shrink: 0;
  min-width:   60px;
}

/* ============================================================
   侧边栏 Widget
   ============================================================ */
.gy-sidebar { display: flex; flex-direction: column; gap: 1.25rem; }

.gy-widget {
  background:    var(--gy-bg-card);
  border:        1px solid var(--gy-gray-100);
  border-radius: var(--gy-radius);
  overflow:      hidden;
}

.gy-widget-title {
  font-family:   var(--gy-font-serif);
  font-size:     .9rem;
  font-weight:   700;
  color:         var(--gy-dark);
  padding:       .75rem 1rem;
  border-bottom: 1px solid var(--gy-gray-100);
  margin:        0;
  background:    rgba(139,157,119,.05);
}
.gy-widget-body { padding: .85rem 1rem; }

.gy-hot-list { margin: 0; }
.gy-hot-item {
  display:       flex;
  align-items:   center;
  gap:           .5rem;
  padding:       .45rem 1rem;
  border-bottom: 1px solid var(--gy-gray-100);
  font-size:     .85rem;
}
.gy-hot-item:last-child { border-bottom: none; }
.gy-hot-rank {
  width: 20px; height: 20px;
  border-radius: 50%;
  background:   var(--gy-gray-300);
  color:        var(--gy-gray-700);
  font-size:    .7rem;
  font-weight:  700;
  display:      flex;
  align-items:  center;
  justify-content: center;
  flex-shrink:  0;
}
.gy-hot-rank.top { background: var(--gy-accent); color: #fff; }
.gy-hot-title    { flex: 1; color: var(--gy-text); line-height: 1.3; }
.gy-hot-title:hover { color: var(--gy-primary-dark); text-decoration: none; }

/* 标签云 */
.gy-tag-cloud { padding: .75rem 1rem; display: flex; flex-wrap: wrap; gap: .4rem; }
.gy-tag {
  display:        inline-flex;
  align-items:    center;
  gap:            .25rem;
  background:     var(--gy-gray-100);
  color:          var(--gy-gray-700);
  padding:        .2em .6em;
  border-radius:  var(--gy-radius-sm);
  font-size:      .8rem;
  transition:     background var(--gy-transition), color var(--gy-transition);
}
.gy-tag:hover   { background: var(--gy-primary); color: #fff; text-decoration: none; }
.gy-tag-count   { font-size: .7em; opacity: .7; }

/* ============================================================
   搜索结果（htmx 片段）
   ============================================================ */
.gy-search-result-item {
  display:       flex;
  align-items:   flex-start;
  gap:           .6rem;
  padding:       .65rem 1rem;
  border-bottom: 1px solid var(--gy-gray-100);
  transition:    background var(--gy-transition);
}
.gy-search-result-item:hover { background: rgba(139,157,119,.06); }
.gy-search-result-item:last-child { border-bottom: none; }
.gy-search-result-title { font-size: .9rem; font-weight: 600; color: var(--gy-dark); }
.gy-search-result-title:hover { color: var(--gy-primary-dark); text-decoration: none; }
.gy-search-result-summary { font-size: .8rem; color: var(--gy-text-muted); line-height: 1.4; }
.gy-search-highlight { background: rgba(196,168,130,.4); border-radius: 2px; padding: 0 .1em; }

/* 搜索结果页面列表 */
.gy-search-results-list {
  display:        flex;
  flex-direction: column;
  gap:            .75rem;
}

.gy-search-result-row {
  background:     var(--gy-bg-card);
  border:         1px solid var(--gy-gray-100);
  border-radius:  var(--gy-radius);
  padding:        .85rem 1rem;
  transition:     box-shadow var(--gy-transition), border-color var(--gy-transition);
}

.gy-search-result-row:hover {
  box-shadow:    var(--gy-shadow-sm);
  border-color:  var(--gy-primary-light);
}

.gy-search-result-header {
  display:       flex;
  align-items:   center;
  gap:           .5rem;
  flex-wrap:     wrap;
  margin-bottom: .4rem;
  font-size:     .8rem;
  color:         var(--gy-text-muted);
}

.gy-search-result-title-main {
  font-family:   var(--gy-font-serif);
  font-size:     1rem;
  font-weight:   700;
  margin:        0 0 .35rem 0;
  line-height:   1.4;
}

.gy-search-result-title-main a {
  color:         var(--gy-dark);
  text-decoration: none;
}

.gy-search-result-title-main a:hover {
  color:         var(--gy-primary-dark);
  text-decoration: none;
}

.gy-search-result-row .gy-search-result-summary {
  font-size:     .875rem;
  color:         var(--gy-gray-700);
  line-height:   1.5;
  margin:        0 0 .5rem 0;
}

.gy-search-result-footer {
  display:       flex;
  align-items:   center;
  justify-content: space-between;
  padding-top:   .5rem;
  border-top:    1px solid var(--gy-gray-100);
  font-size:     .8rem;
  color:         var(--gy-text-muted);
}

/* ============================================================
   表单
   ============================================================ */
.gy-form-label { font-weight: 600; font-size: .9rem; color: var(--gy-dark); margin-bottom: .35rem; }

.gy-input {
  background:    var(--gy-bg);
  border:        1px solid var(--gy-gray-300);
  border-radius: var(--gy-radius-sm);
  color:         var(--gy-text);
  font-family:   var(--gy-font-sans);
  transition:    border-color var(--gy-transition), box-shadow var(--gy-transition);
  width:         100%;
  padding:       .5rem .85rem;
  font-size:     .95rem;
}
.gy-input:focus {
  border-color: var(--gy-primary);
  box-shadow:   0 0 0 .2rem rgba(139,157,119,.18);
  outline:      none;
  background:   var(--gy-bg-card);
}

.gy-textarea { min-height: 120px; resize: vertical; }

/* ============================================================
   分页
   ============================================================ */
.pagination { gap: .25rem; }
.page-link {
  color:         var(--gy-text-link);
  border-color:  var(--gy-gray-300);
  border-radius: var(--gy-radius-sm) !important;
  background:    var(--gy-bg-card);
  transition:    background var(--gy-transition), color var(--gy-transition);
  font-size:     .875rem;
}
.page-link:hover { background: var(--gy-primary); color: #fff; border-color: var(--gy-primary); }
.page-item.active .page-link { background: var(--gy-primary); border-color: var(--gy-primary); color: #fff; }
.page-item.disabled .page-link { color: var(--gy-gray-500); }

/* ============================================================
   页脚
   ============================================================ */
.gy-footer {
  background:  #EFEBE5;
  border-top:  1px solid var(--gy-gray-300);
  color:       var(--gy-gray-700);
}
.gy-footer-title {
  font-family: var(--gy-font-serif);
  font-size:   .9rem;
  font-weight: 700;
  color:       var(--gy-dark);
  margin-bottom: .6rem;
}
.gy-footer-text    { font-size: .85rem; line-height: 1.6; }
.gy-footer-links   { margin: 0; }
.gy-footer-links li { margin-bottom: .3rem; }
.gy-footer-links a { font-size: .875rem; color: var(--gy-gray-700); }
.gy-footer-links a:hover { color: var(--gy-primary-dark); text-decoration: none; }
.gy-footer-divider { border-color: var(--gy-gray-300); margin: 0; }
.gy-footer-copy    { font-size: .85rem; color: var(--gy-gray-700); }

/* ============================================================
   htmx 加载指示器
   ============================================================ */
.htmx-indicator { display: none; }
.htmx-request .htmx-indicator { display: inline-block; }
.htmx-request.htmx-indicator  { display: inline-block; }

.gy-spinner {
  width: 18px; height: 18px;
  border: 2px solid var(--gy-gray-300);
  border-top-color: var(--gy-primary);
  border-radius: 50%;
  animation: gy-spin .6s linear infinite;
  display: inline-block;
  vertical-align: middle;
}
@keyframes gy-spin { to { transform: rotate(360deg); } }

/* ============================================================
   首页特有
   ============================================================ */
.gy-section-title {
  font-family:   var(--gy-font-serif);
  font-size:     1.3rem;
  font-weight:   700;
  color:         var(--gy-dark);
  margin-bottom: 1.25rem;
  padding-bottom: .5rem;
  border-bottom: 2px solid var(--gy-gray-100);
  display:       flex;
  align-items:   center;
  gap:           .5rem;
}
.gy-section-title-line {
  display:       inline-block;
  width:         3px;
  height:        1.2em;
  background:    var(--gy-primary);
  border-radius: 2px;
}

/* 快捷入口卡片 */
.gy-quick-card {
  background:    var(--gy-bg-card);
  border:        1px solid var(--gy-gray-100);
  border-radius: var(--gy-radius-lg);
  padding:       1.5rem;
  text-align:    center;
  transition:    box-shadow var(--gy-transition), transform var(--gy-transition);
  cursor:        pointer;
  display:       block;
  text-decoration: none;
  color:         var(--gy-dark);
}
.gy-quick-card:hover {
  box-shadow:    var(--gy-shadow);
  transform:     translateY(-3px);
  color:         var(--gy-dark);
  text-decoration: none;
}
.gy-quick-icon {
  width:           56px; height: 56px;
  border-radius:   var(--gy-radius);
  background:      rgba(139,157,119,.12);
  color:           var(--gy-primary-dark);
  display:         flex;
  align-items:     center;
  justify-content: center;
  font-size:       1.5rem;
  margin:          0 auto .75rem;
}
.gy-quick-name { font-weight: 700; font-size: .95rem; }
.gy-quick-desc { font-size: .8rem; color: var(--gy-text-muted); margin-top: .2rem; }

/* ============================================================
   响应式
   ============================================================ */
@media (min-width: 1400px) {
  .gy-navbar .gy-search-input,
  .gy-navbar .input-group-sm > .gy-search-input { width: 228px; }
  .gy-navbar .gy-search-input:focus { width: 268px; }
}
@media (max-width: 1199.98px) {
  .gy-navbar .nav-link { padding: 0 0.36rem 0 0.32rem; gap: 0.22rem; }
  .gy-navbar .nav-link span { letter-spacing: 0.02em; margin-right: -0.02em; }
  .gy-brand { margin-right: 0.65rem; }
  .gy-navbar .gy-search-input,
  .gy-navbar .input-group-sm > .gy-search-input { width: 132px; }
  .gy-navbar .gy-search-input:focus { width: 168px; }
}
@media (max-width: 991.98px) {
  .gy-navbar .navbar,
  .gy-navbar .container,
  .gy-navbar .navbar-collapse { min-height: 56px; }
  .gy-navbar .navbar-toggler { display: inline-flex; }
  .gy-brand { margin-right: 0; }
  .gy-brand-en,
  .gy-brand-sep { display: none; }
}
@media (max-width: 767.98px) {
  .gy-hero { padding: 2.5rem 0 2rem; }
  .gy-card-img, .gy-card-img-placeholder { height: 150px; }
}

@media (max-width: 575.98px) {
  .gy-hero-title  { font-size: 1.8rem; }
  .gy-article-title { font-size: 1.4rem; }
}

/* ============================================================
   打印
   ============================================================ */
@media print {
  .gy-navbar, .gy-footer, .gy-sidebar, .htmx-indicator { display: none !important; }
  .gy-article-body { font-size: 11pt; }
}

/* ============================================================
   阶段 0：模式卡片、场地、空状态
   ============================================================ */
.gy-mode-card {
  display: flex;
  flex-direction: column;
  height: 100%;
  background: var(--gy-bg-card);
  border: 1px solid var(--gy-gray-100);
  border-radius: var(--gy-radius-lg);
  overflow: hidden;
  color: var(--gy-dark);
  text-decoration: none;
  box-shadow: var(--gy-shadow-sm);
  transition: box-shadow var(--gy-transition), transform var(--gy-transition);
}
.gy-mode-card:hover {
  color: var(--gy-dark);
  text-decoration: none;
  box-shadow: var(--gy-shadow);
  transform: translateY(-2px);
}
.gy-mode-svg { display: block; width: 100%; height: auto; background: #F4EFE8; }
.gy-mode-body { padding: 1rem 1.1rem 1.15rem; }
.gy-mode-kicker {
  font-size: .75rem;
  letter-spacing: .06em;
  color: var(--gy-secondary-dark);
}
.gy-mode-card h3 {
  font-family: var(--gy-font-serif);
  font-size: 1.15rem;
  margin: .3rem 0 .4rem;
}
.gy-mode-card p { margin: 0; font-size: .875rem; color: var(--gy-text-muted); line-height: 1.65; }
.gy-mode-detail {
  background: var(--gy-bg-card);
  border: 1px solid var(--gy-gray-100);
  border-radius: var(--gy-radius-lg);
  overflow: hidden;
}
.gy-site-chip {
  display: flex;
  flex-direction: column;
  gap: .25rem;
  height: 100%;
  padding: 1rem 1.05rem;
  background: var(--gy-bg-card);
  border: 1px solid var(--gy-gray-100);
  border-radius: var(--gy-radius);
  color: var(--gy-dark);
  text-decoration: none;
}
.gy-site-chip:hover { color: var(--gy-dark); border-color: var(--gy-primary); text-decoration: none; }
.gy-site-name { font-family: var(--gy-font-serif); font-size: 1.05rem; }
.gy-site-note { font-size: .8rem; color: var(--gy-text-muted); }
.gy-empty {
  text-align: center;
  padding: 2.25rem 1rem;
  border: 1px dashed var(--gy-gray-300);
  border-radius: var(--gy-radius-lg);
  background: rgba(255,255,255,.45);
}
.gy-empty-title {
  font-family: var(--gy-font-serif);
  font-size: 1.35rem;
  margin-bottom: .5rem;
}
.gy-empty-body {
  max-width: 36rem;
  margin: 0 auto;
  color: var(--gy-text-muted);
}
.gy-callout {
  padding: 1rem 1.1rem;
  background: rgba(139,157,119,.1);
  border-radius: var(--gy-radius);
}
.gy-fav-on { color: var(--gy-primary-dark); }
.gy-section-title { flex-wrap: wrap; }
@media (max-width: 390px) {
  .gy-hero { padding: 2rem 0 1.6rem; }
  .gy-hero-lead { font-size: .95rem; }
  .gy-mode-body { padding: .85rem .9rem 1rem; }
}
.gy-plant-list { border-top: 1px solid var(--gy-gray-100); }
.gy-plant-row {
  display: grid;
  grid-template-columns: minmax(5.5rem, 8rem) minmax(0, 1.5fr) minmax(0, 1fr);
  gap: .25rem .75rem;
  align-items: baseline;
  padding: .7rem 0;
  border-bottom: 1px solid var(--gy-gray-100);
}
.gy-plant-name {
  font-family: var(--gy-font-serif);
  font-size: 1.05rem;
  color: var(--gy-dark);
  text-decoration: none;
}
.gy-plant-latin { font-size: .9rem; }
.gy-plant-facts { margin: 0; }
.gy-plant-facts > div {
  display: grid;
  grid-template-columns: 6.5rem minmax(0, 1fr);
  gap: .35rem 1rem;
  padding: .55rem 0;
  border-bottom: 1px solid var(--gy-gray-100);
}
.gy-plant-facts dt { margin: 0; color: var(--gy-text-muted); font-weight: 600; }
.gy-plant-facts dd { margin: 0; }
.gy-gallery {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
  gap: .6rem;
}
.gy-shot {
  position: relative;
  border: 0;
  padding: 0;
  background: transparent;
  text-align: left;
  cursor: zoom-in;
}
.gy-shot img {
  width: 100%;
  height: 120px;
  object-fit: cover;
  border-radius: var(--gy-radius);
  background: var(--gy-bg);
}
.gy-shot-role {
  position: absolute;
  left: .4rem;
  bottom: .4rem;
  padding: .1rem .4rem;
  border-radius: 999px;
  background: rgba(28, 24, 20, .72);
  color: #fff;
  font-size: .75rem;
}
.gy-lightbox {
  border: 0;
  padding: .75rem;
  width: min(960px, calc(100vw - 1.5rem));
  max-width: 100%;
  background: #1c1814;
  color: #f4efe8;
}
.gy-lightbox::backdrop { background: rgba(28, 24, 20, .82); }
.gy-lightbox img {
  display: block;
  width: 100%;
  max-height: 78vh;
  object-fit: contain;
  background: #1c1814;
}
.gy-lightbox-close {
  display: block;
  margin: 0 0 .5rem auto;
  min-width: 44px;
  min-height: 44px;
  border: 0;
  border-radius: 999px;
  background: #f4efe8;
  color: #1c1814;
}
.gy-lightbox-caption { margin: .6rem 0 0; font-size: .9rem; }
.gy-cover-link {
  cursor: zoom-in;
  text-decoration: none;
}
.gy-cover-img {
  cursor: zoom-in;
  transition: opacity var(--gy-transition, .2s ease);
}
.gy-cover-link:hover .gy-cover-img {
  opacity: .94;
}
@media (max-width: 640px) {
  .gy-plant-row { grid-template-columns: 1fr; gap: .1rem; }
  .gy-plant-facts > div { grid-template-columns: 1fr; }
}
