/* ============================================================
   details.css — 文章详情页样式 (v4)
   双栏布局 + 目录导航 + 浮动工具栏 + 增强排版
   ============================================================ */

/* ---------- Section override (reduce top padding, breadcrumb already has space) ---------- */
.section-detail{padding:2rem 0 4rem}

/* ============================================================
   TWO-COLUMN LAYOUT
   ============================================================ */
.detail-layout{display:grid;grid-template-columns:220px 1fr 60px;gap:2.5rem;max-width:var(--max-width);margin:0 auto;padding:0 1.5rem;align-items:start}
@media(max-width:1280px){.detail-layout{grid-template-columns:200px 1fr 56px;gap:1.75rem}}
@media(max-width:1024px){.detail-layout{grid-template-columns:1fr;gap:0}}
@media(max-width:768px){.detail-layout{padding:0 1rem}}

/* ============================================================
   LEFT SIDEBAR — TOC + Info Card
   ============================================================ */
.detail-sidebar{position:sticky;top:calc(var(--header-height) + 1.5rem);max-height:calc(100vh - var(--header-height) - 3rem);overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--color-border) transparent}
.detail-sidebar::-webkit-scrollbar{width:4px}
.detail-sidebar::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:2px}

@media(max-width:1024px){
  .detail-sidebar{position:static;max-height:none;display:flex;flex-direction:column;gap:1.25rem;margin-bottom:1.5rem;padding-bottom:1.25rem;border-bottom:1px solid var(--color-border)}
}

/* --- TOC Card --- */
.toc-card{background:var(--color-bg-card);border:1.5px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden;margin-bottom:1.25rem;box-shadow:var(--shadow-sm)}
.toc-card-header{display:flex;align-items:center;gap:.6rem;padding:.85rem 1rem;font-size:.85rem;font-weight:700;color:var(--color-heading);border-bottom:1px solid var(--color-border-light);background:var(--color-bg-secondary)}
.toc-card-header svg{color:var(--color-primary);flex-shrink:0}
.toc-nav{padding:.5rem 0;max-height:50vh;overflow-y:auto}
.toc-nav::-webkit-scrollbar{width:4px}
.toc-nav::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:2px}
.toc-list{list-style:none;padding:0;margin:0}
.toc-item{border-left:2px solid transparent;transition:border-color var(--transition-fast)}
.toc-item a{display:block;padding:.45rem 1rem .45rem .8rem;font-size:.82rem;color:var(--color-text-secondary);line-height:1.45;transition:all var(--transition-fast);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.toc-item a:hover{color:var(--color-primary);background:var(--color-primary-light)}
.toc-item a.active{color:var(--color-primary);font-weight:600;background:var(--color-primary-light);border-color:var(--color-primary)}
.toc-item.toc-sub a{padding-left:1.6rem;font-size:.78rem}
.toc-loading,.toc-empty{padding:1rem;text-align:center;font-size:.82rem;color:var(--color-text-muted)}

@media(max-width:1024px){
  .toc-card{margin-bottom:0}
  .toc-nav{max-height:300px}
}

/* --- Info Card --- */
.detail-info-card{background:var(--color-bg-card);border:1.5px solid var(--color-border);border-radius:var(--radius-lg);padding:.85rem 1rem;box-shadow:var(--shadow-sm)}
.detail-info-item{display:flex;align-items:center;gap:.55rem;padding:.4rem 0;font-size:.82rem;color:var(--color-text-secondary)}
.detail-info-item:not(:last-child){border-bottom:1px solid var(--color-border-light)}
.detail-info-item svg{color:var(--color-primary);flex-shrink:0}

@media(max-width:1024px){
  .detail-info-card{display:flex;flex-wrap:wrap;gap:1rem}
  .detail-info-item{border-bottom:none!important;padding:0}
}

/* ============================================================
   MAIN CONTENT AREA
   ============================================================ */
.detail-main{min-width:0;max-width:820px}

/* --- Article Header --- */
.article-detail-header{margin-bottom:2rem}
.article-detail-header h1{font-size:clamp(1.5rem,3.5vw,2.2rem);font-weight:900;letter-spacing:-.02em;line-height:1.25;margin-bottom:.85rem;color:var(--color-heading)}
.article-detail-meta{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;padding-bottom:1rem;border-bottom:2px solid transparent;border-image:linear-gradient(90deg,var(--color-primary) 0%,var(--color-primary-soft) 50%,transparent 90%) 1}
.meta-tag{display:inline-flex;align-items:center;padding:.15rem .65rem;border-radius:var(--radius-full);font-size:.75rem;font-weight:700}

/* --- Article Content (Typography) --- */
.article-detail-content{font-size:clamp(.95rem,2.2vw,1.08rem);line-height:2;color:var(--color-text)}

/* h2 = section headings */
.article-detail-content h2{font-size:clamp(1.2rem,2.5vw,1.55rem);font-weight:800;margin:3rem 0 1rem;padding-bottom:.55rem;border-bottom:2px solid var(--color-primary-soft);position:relative;color:var(--color-heading);scroll-margin-top:calc(var(--header-height) + 1rem)}
.article-detail-content h2::after{content:"";position:absolute;bottom:-2px;left:0;width:60px;height:2px;background:linear-gradient(90deg,var(--color-primary),var(--color-accent));border-radius:1px}
.article-detail-content h2:first-child{margin-top:.5rem}

/* h3 = sub-section */
.article-detail-content h3{font-size:clamp(1rem,2vw,1.2rem);font-weight:700;margin:1.75rem 0 .75rem;color:var(--color-primary-dark);scroll-margin-top:calc(var(--header-height) + 1rem)}
.article-detail-content p{margin-bottom:1.25rem}
.article-detail-content a{color:var(--color-primary);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--color-primary-soft)}
.article-detail-content a:hover{color:var(--color-primary-dark);text-decoration-color:var(--color-primary)}

/* Images */
.article-detail-content img{max-width:100%;border-radius:var(--radius-lg);margin:1.5rem auto;display:block;box-shadow:var(--shadow-lg);border:1px solid var(--color-border)}
.article-detail-content img:hover{transform:scale(1.005);box-shadow:0 8px 30px rgba(0,0,0,.08)}

/* Lists */
.article-detail-content ul,.article-detail-content ol{padding-left:1.75rem;margin-bottom:1.25rem}
.article-detail-content ul{list-style:none}
.article-detail-content ul li{position:relative;padding-left:.25rem;margin-bottom:.5rem}
.article-detail-content ul li::before{content:"";position:absolute;left:-1.2rem;top:.6em;width:6px;height:6px;border-radius:50%;background:var(--color-primary);opacity:.6}
.article-detail-content ol{list-style:decimal;counter-reset:ol-counter}
.article-detail-content ol li{margin-bottom:.5rem}
.article-detail-content li{line-height:1.8}

/* Tables */
.article-detail-content table{width:100%;border-collapse:collapse;margin:1.5rem 0;font-size:.92rem;border-radius:var(--radius-md);overflow:hidden;box-shadow:var(--shadow-sm);border:1px solid var(--color-border)}
.article-detail-content thead th{background:linear-gradient(180deg,var(--color-bg-secondary),var(--color-bg-tertiary));font-weight:700;font-size:.85rem;color:var(--color-heading);border-bottom:2px solid var(--color-border)}
.article-detail-content th,.article-detail-content td{border:1px solid var(--color-border-light);padding:.7rem 1rem;text-align:left}
.article-detail-content tbody tr:nth-child(even){background:var(--color-bg-secondary)}
.article-detail-content tbody tr:hover{background:var(--color-primary-glow)}

/* Blockquote */
.article-detail-content blockquote{border-left:4px solid var(--color-primary);padding:1rem 1.5rem;margin:1.5rem 0;color:var(--color-text-secondary);background:var(--color-primary-light);border-radius:0 var(--radius-md) var(--radius-md) 0;position:relative}
.article-detail-content blockquote::before{content:open-quote;position:absolute;top:-12px;left:12px;font-size:3.5rem;color:var(--color-primary-soft);line-height:1;font-family:Georgia,serif;pointer-events:none}

/* Code inline */
.article-detail-content :not(pre) > code{background:var(--color-bg-secondary);color:#e11d48;padding:.15em .5em;border-radius:5px;font-size:.88em;border:1px solid var(--color-border);font-weight:500}
.article-detail-content pre{background:linear-gradient(160deg,#1a2332 0%,#1e293b 100%);color:#e2e8f0;border-radius:var(--radius-lg);padding:1.5rem;overflow-x:auto;margin-bottom:1.5rem;font-size:.88rem;line-height:1.7;border:1px solid rgba(255,255,255,.06);box-shadow:0 4px 20px rgba(0,0,0,.15);position:relative}
.article-detail-content pre::before{content:"";position:absolute;top:0;left:1.25rem;right:1.25rem;height:1px;background:linear-gradient(90deg,transparent,rgba(99,102,241,.3),transparent);opacity:.6}
.article-detail-content pre code{background:none;color:inherit;padding:0;font-size:inherit;border:none}

/* Horizontal rule */
.article-detail-content hr{border:none;border-top:2px dashed var(--color-border);margin:2rem 0;position:relative}
.article-detail-content hr::after{content:"✦";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--color-bg);padding:0 .75rem;color:var(--color-text-muted);font-size:.75rem}

@media(max-width:768px){
  .article-detail-content{font-size:.95rem;line-height:1.85}
  .article-detail-content h2{font-size:1.2rem;margin:2rem 0 .75rem}
  .article-detail-content pre{padding:1rem;font-size:.82rem;border-radius:var(--radius-md)}
  .article-detail-content table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;white-space:nowrap}
  .article-detail-content img{margin:1rem auto}
}

/* ============================================================
   TAGS
   ============================================================ */
.article-detail-tags{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;margin:2.5rem 0;padding:1.25rem 0;border-top:1px solid var(--color-border);border-bottom:1px solid var(--color-border)}
.article-detail-tags > svg{color:var(--color-text-muted);flex-shrink:0}

/* ============================================================
   SHARE ROW
   ============================================================ */
.share-row{display:flex;align-items:center;gap:.65rem;margin:1rem 0 2rem;font-size:.85rem;font-weight:600;color:var(--color-text-muted)}

/* ============================================================
   PREV / NEXT — Enhanced Card Style
   ============================================================ */
.article-nav{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin:2rem 0 3rem}
.article-nav-item{display:flex;flex-direction:column;gap:.55rem}
.article-nav-next{align-items:flex-end;text-align:right}
.article-nav-prev{align-items:flex-start;text-align:left}
.nav-hint{font-size:.72rem;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:700}
.nav-card{display:block;padding:1rem 1.25rem;background:var(--color-bg-secondary);border-radius:var(--radius-lg);border:1.5px solid var(--color-border);transition:all var(--transition-base);position:relative;overflow:hidden}
.nav-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(180deg,var(--color-primary),var(--color-accent));border-radius:0 2px 2px 0;opacity:0;transition:opacity var(--transition-base)}
.article-nav-prev .nav-card::before{left:0;right:auto;border-radius:0 2px 2px 0}
.article-nav-next .nav-card::before{left:auto;right:0;border-radius:2px 0 0 2px}
.nav-card:hover{background:var(--color-bg-card);border-color:var(--color-primary-soft);box-shadow:var(--shadow-md);transform:translateY(-2px)}
.nav-card:hover::before{opacity:1}
.nav-card-title{font-size:.92rem;font-weight:600;color:var(--color-text);line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.nav-card:hover .nav-card-title{color:var(--color-primary)}
.nav-none{font-size:.88rem;color:var(--color-text-muted);font-style:italic;padding:.9rem 1.2rem}

@media(max-width:768px){
  .article-nav{grid-template-columns:1fr;gap:.75rem}
  .article-nav-next{align-items:flex-start;text-align:left}
}

/* ============================================================
   RELATED SECTION
   ============================================================ */
.related-section{margin:1rem 0}
.related-section h2{font-size:1.4rem;margin-bottom:1.5rem;font-weight:800}
.article-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.25rem}
@media(max-width:480px){.article-grid{grid-template-columns:1fr}}

/* ============================================================
   RIGHT FLOATING TOOLBAR
   ============================================================ */
.detail-toolbar{position:sticky;top:calc(var(--header-height) + 1.5rem);display:flex;flex-direction:column;gap:.5rem;opacity:0;pointer-events:none;transition:opacity var(--transition-base)}
.toolbar-btn{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:var(--radius-full);border:1.5px solid var(--color-border);background:var(--color-bg-card);color:var(--color-text-secondary);cursor:pointer;transition:all var(--transition-base);position:relative;overflow:hidden;box-shadow:var(--shadow-sm)}
.toolbar-btn::before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,var(--color-primary),var(--color-primary-dark));opacity:0;transition:opacity var(--transition-base)}
.toolbar-btn:hover{color:#fff;border-color:var(--color-primary);transform:translateY(-3px);box-shadow:0 4px 16px var(--color-primary-glow)}
.toolbar-btn:hover::before{opacity:1}
.toolbar-btn svg,.toolbar-btn > *{position:relative;z-index:1}
.toolbar-btn.copied{border-color:var(--color-success);color:var(--color-success)}
.toolbar-btn.copied::before{opacity:0}

@media(max-width:1024px){
  .detail-toolbar{display:none}
}

/* ============================================================
   SHARE BUTTONS (inline row)
   ============================================================ */
.share-btn{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--radius-full);border:1.5px solid var(--color-border);color:var(--color-text-secondary);background:var(--color-bg-card);cursor:pointer;transition:all var(--transition-base);position:relative;overflow:hidden}
.share-btn::before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,var(--color-primary),var(--color-primary-dark));opacity:0;transition:opacity var(--transition-base);border-radius:inherit}
.share-btn:hover{color:#fff;border-color:var(--color-primary);transform:translateY(-2px);box-shadow:0 4px 14px var(--color-primary-glow)}
.share-btn:hover::before{opacity:1}
.share-btn svg{position:relative;z-index:1}

/* ============================================================
   ARTICLE CARDS (reused in related section)
   ============================================================ */
.article-card{background:var(--color-bg-card);border:1.5px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden;transition:all var(--transition-base);display:flex;flex-direction:column;box-shadow:var(--shadow-card);position:relative}
.article-card::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 60%,var(--color-primary-glow) 100%);opacity:0;transition:opacity var(--transition-base);pointer-events:none;z-index:1}
.article-card:hover{transform:translateY(-6px);box-shadow:var(--shadow-xl);border-color:var(--color-primary-soft)}
.article-card:hover::after{opacity:1}
.article-card-thumb{aspect-ratio:16/9;background:var(--color-bg-secondary);overflow:hidden;display:block;position:relative}
.article-card-thumb img{width:100%;height:100%;object-fit:cover;transition:transform var(--transition-slow)}
.article-card:hover .article-card-thumb img{transform:scale(1.07)}
.article-card-body{padding:1rem 1.15rem .5rem;flex:1;display:flex;flex-direction:column}
.article-card-body h3{font-size:1rem;margin-bottom:.3rem;line-height:1.4}
.article-card-body h3 a{color:var(--color-heading);transition:color var(--transition-fast)}
.article-card-body h3 a:hover{color:var(--color-primary)}
.article-card-desc{font-size:.83rem;color:var(--color-text-secondary);line-height:1.6;flex:1;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.article-card-meta{display:flex;align-items:center;gap:.85rem;padding:.5rem 1.15rem;border-top:1px solid var(--color-border-light);font-size:.75rem;color:var(--color-text-muted)}

/* ============================================================
   404 ERROR PAGE
   ============================================================ */
.error-page{text-align:center;padding:5rem 1rem;max-width:560px;margin:0 auto}
.error-icon{margin-bottom:1.5rem;opacity:.3;color:var(--color-text-muted)}
.error-code{font-size:clamp(6rem,12vw,8rem);font-weight:900;background:linear-gradient(135deg,var(--color-primary),var(--color-accent));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;line-height:1;margin-bottom:.6rem}
.error-page h2{font-size:1.5rem;margin-bottom:.75rem;color:var(--color-heading)}
.error-page p{color:var(--color-text-secondary);margin-bottom:2rem;font-size:1.05rem}
.error-actions{display:flex;gap:.75rem;justify-content:center;flex-wrap:wrap}
.error-actions .btn{min-width:140px}
