/* =====================================================================
   cy23 · editorial
   —— 浅色编辑杂志风个人站
   纸张米白 + 墨黑 + 朱红 · 索线标题 · 极简留白 · 精准动效
   说明：保留 Bootstrap 栅格能力，但关键区块用 CSS Grid 重排，
        以编辑式列表取代卡片网格。
   ===================================================================== */

/* ---------------------------------------------------------------
   1. 设计变量
   ⚠ bootstrap.min.css 里有 html{font-size:10px}，所以本文件中的
     1rem = 10px（不是浏览器默认的 16px）。写 rem 字号时按 1rem=10px 换算。
   --------------------------------------------------------------- */
:root{
    /* 纸张色阶 */
    --paper:      #faf8f4;
    --paper-warm: #f4f0e8;
    --paper-deep: #eae4d7;

    /* 墨色阶 */
    --ink:        #171613;
    --ink-soft:   #4b483f;
    --ink-mute:   #8d867a;
    --ink-faint:  #b5ae9f;

    /* 分隔线 */
    --rule:       #ddd7c9;
    --rule-soft:  #ebe6db;

    /* 强调色 · 朱红 */
    --accent:      #c8361a;
    --accent-deep: #9e2a13;

    /* 字体
       Fraunces 负责拉丁字母与数字的索线气质，中文交给系统高质量字体；
       网络字体仅在 window.load 之后异步注入，未到达时下列回落链保证排版不失真。 */
    --f-display: 'Fraunces','PingFang SC','Hiragino Sans GB','Microsoft YaHei','Noto Sans SC','Source Han Sans SC',sans-serif;
    --f-body:    'Manrope',-apple-system,BlinkMacSystemFont,'PingFang SC','Hiragino Sans GB','Microsoft YaHei','Noto Sans SC','Source Han Sans SC',sans-serif;
    --f-mono:    'JetBrains Mono','SFMono-Regular',Consolas,'Liberation Mono',Menlo,'Courier New',monospace;

    /* 动效曲线 · ease-out-quint */
    --ease: cubic-bezier(.22,1,.36,1);
    --dur:  .62s;

    /* 版心与页边距 */
    --shell:  1240px;
    --gutter: clamp(20px,4vw,40px);
}

/* ---------------------------------------------------------------
   2. 基底
   --------------------------------------------------------------- */
*,*::before,*::after{box-sizing:border-box}

html{-webkit-text-size-adjust:100%}

body{
    margin:0;
    background:var(--paper);
    color:var(--ink);
    font-family:var(--f-body);
    font-size:16px;
    line-height:1.72;
    font-weight:400;
    -webkit-font-smoothing:antialiased;
    -moz-osx-font-smoothing:grayscale;
    /* 极淡纸张颗粒 */
    background-image:
        radial-gradient(rgba(23,22,19,.022) 1px,transparent 1px),
        radial-gradient(rgba(23,22,19,.014) 1px,transparent 1px);
    background-size:19px 19px,23px 23px;
    background-position:0 0,9px 11px;
    overflow-x:hidden;
}

::selection{background:var(--accent);color:#fff}

a{color:inherit;text-decoration:none;transition:color .3s var(--ease)}
a:hover{color:var(--accent)}

p{margin:0 0 1.1em}
img{max-width:100%;height:auto;display:block}

h1,h2,h3,h4,h5{
    font-family:var(--f-display);
    font-weight:600;
    line-height:1.12;
    letter-spacing:-.015em;
    color:var(--ink);
    margin:0;
}

/* 滚动条 */
::-webkit-scrollbar{width:11px;height:11px}
::-webkit-scrollbar-track{background:var(--paper-warm)}
::-webkit-scrollbar-thumb{background:var(--ink-faint);border:3px solid var(--paper-warm)}
::-webkit-scrollbar-thumb:hover{background:var(--ink-mute)}

/* ---------------------------------------------------------------
   3. 布局骨架
   --------------------------------------------------------------- */
.as-mainwrapper,
.bg-white{background:transparent !important}

.container{
    width:100%;
    max-width:var(--shell);
    margin:0 auto;
    padding:0 var(--gutter);
}

/* 重置 Bootstrap row/col 的负边距，改为可控间距 */
.row{margin-left:0 !important;margin-right:0 !important}
.row > [class*="col-"]{padding-left:0;padding-right:0}

.section-padding{padding:clamp(64px,9vw,128px) 0}
.bg-gray{background:var(--paper-warm)}

/* 区块标头（编号 + 小标签 + 大标题） */
.ed-head{
    display:flex;
    align-items:flex-end;
    justify-content:space-between;
    gap:32px;
    padding-bottom:24px;
    border-bottom:1px solid var(--rule);
    margin-bottom:clamp(32px,5vw,64px);
}
.ed-head-title{
    font-size:clamp(2.1rem,4vw,3.1rem);
    line-height:1.05;
    letter-spacing:-.025em;
}
.ed-head-title em{
    font-style:normal;
    color:var(--accent);
}
.ed-head-note{
    font-family:var(--f-mono);
    font-size:11px;
    letter-spacing:.16em;
    text-transform:uppercase;
    color:var(--ink-mute);
    padding-bottom:6px;
    white-space:nowrap;
}

/* 小标签 · 唯一保留等宽字的技术标注 */
.ed-label{
    display:inline-flex;
    align-items:center;
    gap:10px;
    font-family:var(--f-mono);
    font-size:10.5px;
    letter-spacing:.2em;
    text-transform:uppercase;
    color:var(--ink-mute);
}
.ed-label::before{
    content:'';
    width:22px;
    height:1px;
    background:var(--accent);
    flex:none;
}

/* 文字链接 · 下划线展开 */
.ed-link{
    display:inline-flex;
    align-items:center;
    gap:9px;
    font-size:14px;
    font-weight:600;
    letter-spacing:.01em;
    color:var(--ink);
    position:relative;
}
.ed-link::after{
    content:'';
    position:absolute;
    left:0;
    bottom:-3px;
    width:100%;
    height:1px;
    background:var(--ink);
    transform-origin:right;
    transform:scaleX(1);
    transition:transform .45s var(--ease),background .3s;
}
.ed-link:hover{color:var(--accent)}
.ed-link:hover::after{background:var(--accent);transform-origin:left;animation:edLineSwipe .55s var(--ease)}
@keyframes edLineSwipe{
    0%{transform:scaleX(1);transform-origin:right}
    49%{transform:scaleX(0);transform-origin:right}
    50%{transform:scaleX(0);transform-origin:left}
    100%{transform:scaleX(1);transform-origin:left}
}
.ed-link .ed-arrow{transition:transform .4s var(--ease)}
.ed-link:hover .ed-arrow{transform:translateX(4px)}

/* 按钮 */
.ed-btn{
    display:inline-flex;
    align-items:center;
    gap:10px;
    padding:14px 30px;
    border:1px solid var(--ink);
    background:transparent;
    color:var(--ink);
    font-family:var(--f-body);
    font-size:13px;
    font-weight:600;
    letter-spacing:.06em;
    cursor:pointer;
    position:relative;
    overflow:hidden;
    transition:color .4s var(--ease),border-color .4s var(--ease);
}
.ed-btn span{position:relative;z-index:1}
.ed-btn::before{
    content:'';
    position:absolute;
    inset:0;
    background:var(--ink);
    transform:translateY(101%);
    transition:transform .5s var(--ease);
}
.ed-btn:hover{color:var(--paper) !important;border-color:var(--ink)}
.ed-btn:hover::before{transform:translateY(0)}
.ed-btn.is-accent{border-color:var(--accent);color:var(--accent)}
.ed-btn.is-accent::before{background:var(--accent)}
.ed-btn.is-accent:hover{color:#fff !important;border-color:var(--accent)}

/* 兼容旧按钮类 */
.button-default,.button-default.bg-blue{
    display:inline-flex !important;
    align-items:center;
    gap:10px;
    padding:14px 30px !important;
    border:1px solid var(--ink) !important;
    background:transparent !important;
    color:var(--ink) !important;
    font-family:var(--f-body) !important;
    font-size:13px !important;
    font-weight:600 !important;
    letter-spacing:.06em;
    border-radius:0 !important;
    box-shadow:none !important;
    position:relative;
    overflow:hidden;
    transition:color .4s var(--ease) !important;
}
.button-default::before{
    content:'';position:absolute;inset:0;background:var(--ink);
    transform:translateY(101%);transition:transform .5s var(--ease);
}
.button-default span{position:relative;z-index:1}
.button-default:hover{color:var(--paper) !important}
.button-default:hover::before{transform:translateY(0)}
.button-default::after{content:none !important}

/* ---------------------------------------------------------------
   4. 顶部导航
   --------------------------------------------------------------- */
.ed-header{
    position:sticky;
    top:0;
    z-index:900;
    background:rgba(250,248,244,.82);
    backdrop-filter:saturate(150%) blur(14px);
    -webkit-backdrop-filter:saturate(150%) blur(14px);
    border-bottom:1px solid transparent;
    transition:border-color .45s var(--ease),background .45s var(--ease);
}
.ed-header.is-stuck{
    border-bottom-color:var(--rule);
    background:rgba(250,248,244,.94);
}
.ed-header-inner{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:32px;
    min-height:74px;
}

/* 站点名 · 索线 + 朱红句点 */
.ed-brand a{
    font-family:var(--f-display);
    font-size:23px;
    font-weight:600;
    letter-spacing:-.02em;
    color:var(--ink);
    display:inline-flex;
    align-items:baseline;
    gap:3px;
}
.ed-brand a::after{
    content:'.';
    color:var(--accent);
    font-size:26px;
    line-height:0;
}
.ed-brand img{display:none}

/* 主菜单 */
.ed-nav{display:flex;align-items:center;gap:34px;margin-left:auto}
.ed-tools{
    position:relative;
    display:flex;
    align-items:center;
    gap:10px;
    flex:none;
}
.ed-nav ul{
    list-style:none;
    margin:0;
    padding:0;
    display:flex;
    align-items:center;
    gap:32px;
}
.ed-nav li{position:relative}
.ed-nav li > a{
    font-size:14px;
    font-weight:500;
    color:var(--ink-soft);
    letter-spacing:.02em;
    padding:6px 0;
    display:inline-block;
    position:relative;
}
.ed-nav li > a::after{
    content:'';
    position:absolute;
    left:0;
    bottom:0;
    width:100%;
    height:1px;
    background:var(--accent);
    transform:scaleX(0);
    transform-origin:left;
    transition:transform .4s var(--ease);
}
.ed-nav li > a:hover{color:var(--ink)}
.ed-nav li > a:hover::after{transform:scaleX(1)}
.ed-nav li.current > a{color:var(--ink);font-weight:600}
.ed-nav li.current > a::after{transform:scaleX(1)}

/* 二级菜单 */
.ed-nav ul ul{
    position:absolute;
    top:calc(100% + 14px);
    left:-16px;
    min-width:186px;
    background:var(--paper);
    border:1px solid var(--rule);
    padding:10px 0;
    display:block;
    flex-direction:column;
    gap:0;
    opacity:0;
    visibility:hidden;
    transform:translateY(10px);
    transition:all .35s var(--ease);
    box-shadow:0 18px 40px -20px rgba(23,22,19,.22);
}
.ed-nav li:hover > ul{opacity:1;visibility:visible;transform:translateY(0)}
.ed-nav ul ul li{width:100%}
.ed-nav ul ul li a{
    display:block;
    padding:8px 20px;
    font-size:13px;
    color:var(--ink-soft);
    white-space:nowrap;
}
.ed-nav ul ul li a::after{display:none}
.ed-nav ul ul li a:hover{color:var(--accent);background:var(--paper-warm)}

/* 搜索 */
.ed-search-toggle{
    width:38px;
    height:38px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    border:1px solid var(--rule);
    color:var(--ink-soft);
    cursor:pointer;
    font-size:15px;
    transition:all .35s var(--ease);
    background:transparent;
}
.ed-search-toggle:hover{border-color:var(--ink);color:var(--ink);background:var(--paper-warm)}

.ed-search-panel{
    position:absolute;
    top:calc(100% + 18px);
    right:0;
    width:min(420px,92vw);
    background:var(--paper);
    border:1px solid var(--rule);
    padding:20px;
    opacity:0;
    visibility:hidden;
    transform:translateY(10px);
    transition:all .35s var(--ease);
    z-index:60;
    box-shadow:0 22px 50px -24px rgba(23,22,19,.25);
}
.ed-search-panel.is-open{opacity:1;visibility:visible;transform:translateY(0)}
.ed-search-panel form{display:flex;gap:0}
.ed-search-panel input{
    flex:1;
    border:1px solid var(--rule);
    border-right:none;
    background:var(--paper-warm);
    padding:12px 14px;
    font-family:var(--f-body);
    font-size:14px;
    color:var(--ink);
    outline:none;
    transition:border-color .3s;
}
.ed-search-panel input:focus{border-color:var(--ink)}
.ed-search-panel input::placeholder{color:var(--ink-faint)}
.ed-search-panel button{
    border:1px solid var(--ink);
    background:var(--ink);
    color:var(--paper);
    padding:0 20px;
    cursor:pointer;
    font-size:14px;
    transition:background .3s;
}
.ed-search-panel button:hover{background:var(--accent);border-color:var(--accent)}

/* 移动端汉堡 */
.ed-burger{
    display:none;
    width:42px;
    height:42px;
    border:1px solid var(--rule);
    background:transparent;
    cursor:pointer;
    position:relative;
}
.ed-burger i{
    position:absolute;
    left:12px;
    width:18px;
    height:1.5px;
    background:var(--ink);
    transition:all .4s var(--ease);
}
.ed-burger i:nth-child(1){top:15px}
.ed-burger i:nth-child(2){top:20.5px}
.ed-burger i:nth-child(3){top:26px}
.ed-burger.is-open i:nth-child(1){top:20.5px;transform:rotate(45deg)}
.ed-burger.is-open i:nth-child(2){opacity:0;transform:scaleX(0)}
.ed-burger.is-open i:nth-child(3){top:20.5px;transform:rotate(-45deg)}

/* 移动端抽屉 */
.ed-drawer{
    position:fixed;
    inset:0;
    z-index:880;
    background:var(--paper);
    padding:96px var(--gutter) 40px;
    transform:translateY(-100%);
    transition:transform .6s var(--ease);
    overflow-y:auto;
    visibility:hidden;
}
.ed-drawer.is-open{transform:translateY(0);visibility:visible}
.ed-drawer ul{list-style:none;margin:0;padding:0}
.ed-drawer > ul > li{border-bottom:1px solid var(--rule-soft)}
.ed-drawer > ul > li > a{
    display:block;
    padding:16px 0;
    font-family:var(--f-display);
    font-size:22px;
    font-weight:600;
    color:var(--ink);
}
.ed-drawer > ul > li > a:active{color:var(--accent)}
.ed-drawer ul ul{padding:0 0 14px 18px}
.ed-drawer ul ul li a{
    display:block;
    padding:7px 0;
    font-size:14px;
    color:var(--ink-mute);
}

/* 阅读进度条 */
.ed-progress{
    position:fixed;
    top:0;
    left:0;
    height:2px;
    width:0;
    background:var(--accent);
    z-index:950;
    transition:width .1s linear;
}

/* ---------------------------------------------------------------
   5. 首屏
   --------------------------------------------------------------- */
.ed-hero{
    position:relative;
    padding:clamp(40px,5.4vw,84px) 0 0;
    overflow:hidden;
}
.ed-hero-top{
    display:flex;
    align-items:baseline;
    justify-content:space-between;
    gap:24px;
    flex-wrap:wrap;
    margin-bottom:clamp(28px,5vw,56px);
}
.ed-hero-meta{
    font-family:var(--f-mono);
    font-size:10.5px;
    letter-spacing:.19em;
    text-transform:uppercase;
    color:var(--ink-mute);
    display:flex;
    gap:26px;
    flex-wrap:wrap;
}
.ed-hero-meta b{color:var(--ink-soft);font-weight:500}

.ed-hero-title{
    font-size:clamp(2.7rem,9.2vw,7.4rem);
    line-height:.98;
    letter-spacing:-.038em;
    font-weight:600;
    margin:0 0 clamp(32px,5vw,52px);
    max-width:15ch;
}
.ed-hero-title .ed-line{display:block;overflow:hidden;padding-bottom:.04em}
.ed-hero-title .ed-line > span{
    display:block;
    transform:translateY(108%);
    animation:edRise .95s var(--ease) forwards;
}
.ed-hero-title .ed-line:nth-child(1) > span{animation-delay:.06s}
.ed-hero-title .ed-line:nth-child(2) > span{animation-delay:.16s}
.ed-hero-title .ed-line:nth-child(3) > span{animation-delay:.26s}
.ed-hero-title em{font-style:normal;color:var(--accent)}
@keyframes edRise{to{transform:translateY(0)}}

.ed-hero-foot{
    display:grid;
    grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);
    gap:clamp(24px,5vw,64px);
    align-items:end;
    padding-bottom:clamp(40px,6vw,72px);
}
.ed-hero-lead{
    font-size:clamp(15px,1.35vw,17.5px);
    line-height:1.78;
    color:var(--ink-soft);
    max-width:56ch;
    margin:0;
}
.ed-hero-motto{
    font-family:var(--f-display);
    font-size:14px;
    letter-spacing:.01em;
    color:var(--ink-mute);
    margin:16px 0 0;
}
.ed-hero-cta{
    display:flex;
    gap:14px;
    flex-wrap:wrap;
    justify-content:flex-end;
}

/* 首屏数据条 */
.ed-hero-facts{
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:1px;
    border-top:1px solid var(--rule);
    background:var(--rule);
}
.ed-fact{
    background:var(--paper);
    padding:22px 0 24px;
}
.ed-fact-k{
    font-family:var(--f-mono);
    font-size:10px;
    letter-spacing:.19em;
    text-transform:uppercase;
    color:var(--ink-faint);
    margin-bottom:7px;
}
.ed-fact-v{
    font-family:var(--f-display);
    font-size:clamp(15px,1.5vw,18px);
    font-weight:500;
    color:var(--ink);
    letter-spacing:-.01em;
}

/* ---------------------------------------------------------------
   6. 跑马灯
   --------------------------------------------------------------- */
.ed-marquee{
    border-top:1px solid var(--rule);
    border-bottom:1px solid var(--rule);
    background:var(--paper-warm);
    overflow:hidden;
    padding:20px 0;
    margin-top:clamp(56px,8vw,96px);
    -webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
    mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
}
.ed-marquee-track{
    display:flex;
    width:max-content;
    animation:edScroll 46s linear infinite;
}
.ed-marquee:hover .ed-marquee-track{animation-play-state:paused}
@keyframes edScroll{to{transform:translateX(-50%)}}
.ed-marquee-run{display:flex;align-items:center;flex:none}
.ed-marquee-item{
    display:inline-flex;
    align-items:center;
    gap:26px;
    padding:0 26px;
    font-family:var(--f-display);
    font-size:clamp(19px,2.3vw,30px);
    font-weight:500;
    letter-spacing:-.02em;
    color:var(--ink);
    white-space:nowrap;
}
.ed-marquee-item::after{
    content:'';
    width:5px;
    height:5px;
    border-radius:50%;
    background:var(--accent);
    flex:none;
}

/* ---------------------------------------------------------------
   7. 作品 · 编辑式列表
   --------------------------------------------------------------- */
.ed-works{list-style:none;margin:0;padding:0}

.ed-work{
    position:relative;
    border-top:1px solid var(--rule);
}
.ed-work:last-child{border-bottom:1px solid var(--rule)}

.ed-work-link{
    display:grid;
    grid-template-columns:56px minmax(0,1fr) 232px;
    gap:clamp(20px,3.4vw,44px);
    align-items:center;
    padding:clamp(24px,3.2vw,38px) 0;
    position:relative;
    transition:padding .5s var(--ease);
}
.ed-work-link:hover{padding-left:14px}

.ed-work-num{
    font-family:var(--f-mono);
    font-size:11.5px;
    letter-spacing:.1em;
    color:var(--ink-faint);
    transition:color .4s var(--ease);
    align-self:start;
    padding-top:6px;
}
.ed-work-link:hover .ed-work-num{color:var(--accent)}

.ed-work-body{min-width:0}
.ed-work-title{
    font-size:clamp(1.7rem,2.9vw,2.15rem);
    line-height:1.16;
    letter-spacing:-.028em;
    font-weight:600;
    margin:0 0 10px;
    transition:color .4s var(--ease);
    display:inline-block;
    position:relative;
}
.ed-work-title::after{
    content:'';
    position:absolute;
    left:0;
    bottom:-2px;
    width:100%;
    height:1px;
    background:var(--accent);
    transform:scaleX(0);
    transform-origin:left;
    transition:transform .55s var(--ease);
}
.ed-work-link:hover .ed-work-title{color:var(--accent)}
.ed-work-link:hover .ed-work-title::after{transform:scaleX(1)}

.ed-work-sum{
    font-size:14.5px;
    line-height:1.68;
    color:var(--ink-mute);
    margin:0 0 12px;
    max-width:66ch;
    display:-webkit-box;
    -webkit-line-clamp:2;
    -webkit-box-orient:vertical;
    overflow:hidden;
}
.ed-work-meta{
    display:flex;
    align-items:center;
    gap:20px;
    font-family:var(--f-mono);
    font-size:10.5px;
    letter-spacing:.13em;
    text-transform:uppercase;
    color:var(--ink-faint);
}
.ed-work-meta span{display:inline-flex;align-items:center;gap:6px}

.ed-work-thumb{
    width:232px;
    height:148px;
    overflow:hidden;
    background:var(--paper-deep);
    flex:none;
    position:relative;
}
.ed-work-thumb img{
    width:100%;
    height:100%;
    object-fit:cover;
    filter:saturate(.72) contrast(1.02);
    transition:transform .85s var(--ease),filter .6s var(--ease);
}
.ed-work-link:hover .ed-work-thumb img{transform:scale(1.07);filter:saturate(1) contrast(1.03)}
.ed-work-thumb.is-empty::after{
    content:'';
    position:absolute;
    inset:0;
    background:
        linear-gradient(135deg,var(--paper-deep) 0 49.6%,var(--rule) 49.6% 50.3%,var(--paper-deep) 50.3% 100%);
}

/* 无缩略图时收窄为两列，避免留白 */
.ed-work-link:not(:has(.ed-work-thumb)){grid-template-columns:56px minmax(0,1fr)}

/* 空状态 */
.ed-empty{
    padding:clamp(56px,9vw,110px) 0;
    text-align:center;
    border-top:1px solid var(--rule);
    border-bottom:1px solid var(--rule);
}
.ed-empty i{font-size:40px;color:var(--ink-faint);display:block;margin-bottom:16px}
.ed-empty h3{
    font-size:clamp(1.6rem,2.2vw,2.2rem);
    color:var(--ink-soft);
    margin-bottom:8px;
}
.ed-empty p{color:var(--ink-mute);font-size:14.5px;margin:0}

/* ---------------------------------------------------------------
   8. 统计 · 大数字
   --------------------------------------------------------------- */
.ed-stats{
    display:grid;
    grid-template-columns:repeat(4,minmax(0,1fr));
    border-top:1px solid var(--rule);
    border-bottom:1px solid var(--rule);
}
.ed-stat{
    padding:clamp(30px,4.4vw,54px) clamp(14px,2vw,28px) clamp(30px,4.4vw,54px) 0;
    border-right:1px solid var(--rule-soft);
    position:relative;
}
.ed-stat:last-child{border-right:none}
.ed-stat:nth-child(n+2){padding-left:clamp(14px,2vw,28px)}
.ed-stat-k{
    font-family:var(--f-mono);
    font-size:10px;
    letter-spacing:.19em;
    text-transform:uppercase;
    color:var(--ink-faint);
    margin-bottom:14px;
}
.ed-stat-v{
    font-family:var(--f-display);
    font-size:clamp(2.4rem,5.6vw,4.1rem);
    font-weight:600;
    line-height:1;
    letter-spacing:-.045em;
    color:var(--ink);
    display:flex;
    align-items:baseline;
    gap:4px;
}
.ed-stat-v sup{
    font-size:.36em;
    color:var(--accent);
    font-weight:500;
    top:-.85em;
    letter-spacing:0;
}
.ed-stat-l{
    font-size:13.5px;
    color:var(--ink-mute);
    margin-top:12px;
    letter-spacing:.01em;
}

/* ---------------------------------------------------------------
   9. 频道双栏 · 课程与书籍 / 杂谈随笔
   --------------------------------------------------------------- */
.ed-channels{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:1px;
    background:var(--rule);
    border-top:1px solid var(--rule);
    border-bottom:1px solid var(--rule);
}
.ed-channel{
    background:var(--paper-warm);
    padding:clamp(26px,3.4vw,42px);
}
.ed-channel-head{
    display:flex;
    align-items:baseline;
    justify-content:space-between;
    gap:16px;
    margin-bottom:24px;
}
.ed-channel-title{
    font-family:var(--f-display);
    font-size:clamp(19px,2vw,24px);
    font-weight:600;
    letter-spacing:-.022em;
    margin:0;
}
.ed-channel-more{
    font-size:12px;
    font-weight:600;
    letter-spacing:.04em;
    color:var(--ink-mute);
    flex:none;
    transition:color .3s var(--ease);
}
.ed-channel-more:hover{color:var(--accent)}
.ed-channel .ed-mini-title{font-size:15px}
.ed-channel .ed-mini-item{border-bottom-color:var(--paper-deep)}

/* ---------------------------------------------------------------
   10. 页脚
   --------------------------------------------------------------- */
.ed-footer{
    border-top:1px solid var(--rule);
    padding:clamp(36px,5vw,56px) 0;
    margin-top:clamp(64px,9vw,120px);
}
.ed-footer-inner{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:22px;
    flex-wrap:wrap;
}
.ed-footer-brand{
    font-family:var(--f-display);
    font-size:17px;
    font-weight:600;
    color:var(--ink);
}
.ed-footer-brand span{color:var(--accent)}
.ed-footer-copy{
    font-family:var(--f-mono);
    font-size:10.5px;
    letter-spacing:.11em;
    color:var(--ink-mute);
    text-transform:uppercase;
}
.ed-footer-nav{
    display:flex;
    gap:22px;
    flex-wrap:wrap;
    font-size:12.5px;
    color:var(--ink-mute);
}
.ed-footer-nav a{color:var(--ink-mute)}
.ed-footer-nav a:hover{color:var(--accent)}
.ed-footer-nav img{width:13px;display:inline-block;vertical-align:middle;margin-right:5px}

/* ---------------------------------------------------------------
   11. 内页 · 页头
   --------------------------------------------------------------- */
.ed-pagehead{
    padding:clamp(48px,7vw,88px) 0 clamp(28px,4vw,44px);
    border-bottom:1px solid var(--rule);
}
.ed-pagehead-crumb{
    font-family:var(--f-mono);
    font-size:10.5px;
    letter-spacing:.17em;
    text-transform:uppercase;
    color:var(--ink-faint);
    display:flex;
    align-items:center;
    gap:10px;
    flex-wrap:wrap;
    margin-bottom:22px;
}
.ed-pagehead-crumb a{color:var(--ink-mute)}
.ed-pagehead-crumb a:hover{color:var(--accent)}
/* 列表页里当前栏目是链条最后一项，用正文色以示"当前" */
.ed-pagehead-crumb > a:last-child{color:var(--ink)}
.ed-pagehead-crumb .sep{color:var(--ink-faint)}
.ed-pagehead-crumb .now{color:var(--ink)}
/* 详情页：末尾接文章标题，脱离小字等宽风格，超长省略 */
.ed-pagehead-crumb .now.is-title{
    font-family:var(--f-body);
    font-size:13.5px;
    font-weight:500;
    letter-spacing:0;
    text-transform:none;
    color:var(--ink-soft);
    max-width:44ch;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
}
/* 详情页的页头只有面包屑，收紧内边距，避免与正文标题之间出现大片空白 */
.ed-pagehead-crumb:only-child{margin-bottom:0}
.ed-pagehead:has(.ed-pagehead-crumb:only-child){
    padding:clamp(22px,2.8vw,34px) 0;
}
.ed-pagehead-row{
    display:flex;
    align-items:flex-end;
    justify-content:space-between;
    gap:32px;
    flex-wrap:wrap;
}
.ed-pagehead h1{
    font-size:clamp(2rem,5.4vw,3.9rem);
    line-height:1.04;
    letter-spacing:-.035em;
}
.ed-pagehead-side{
    font-size:14px;
    color:var(--ink-mute);
    max-width:34ch;
    line-height:1.7;
    padding-bottom:6px;
}

/* 子栏目导航 */
.ed-subnav{
    border-bottom:1px solid var(--rule);
    background:var(--paper);
    overflow-x:auto;
    -webkit-overflow-scrolling:touch;
}
.ed-subnav ul{
    list-style:none;
    margin:0;
    padding:0;
    display:flex;
    gap:30px;
    white-space:nowrap;
}
.ed-subnav li a{
    display:block;
    padding:15px 0;
    font-size:13.5px;
    color:var(--ink-mute);
    position:relative;
    transition:color .3s;
}
.ed-subnav li a::after{
    content:'';
    position:absolute;
    left:0;
    bottom:0;
    width:100%;
    height:1.5px;
    background:var(--accent);
    transform:scaleX(0);
    transform-origin:left;
    transition:transform .4s var(--ease);
}
.ed-subnav li a:hover{color:var(--ink)}
.ed-subnav li a:hover::after,.ed-subnav li a.active::after{transform:scaleX(1)}
.ed-subnav li a.active{color:var(--ink);font-weight:600}

/* ---------------------------------------------------------------
   12. 列表页主体
   --------------------------------------------------------------- */
.ed-list-main{padding:clamp(40px,5.5vw,72px) 0 clamp(56px,8vw,96px)}

/* 分页 */
.ed-pager{
    display:flex;
    justify-content:center;
    margin-top:clamp(44px,6vw,72px);
    padding-top:clamp(32px,4vw,48px);
    border-top:1px solid var(--rule);
}
.ed-pager .pagination{
    display:flex;
    gap:8px;
    list-style:none;
    margin:0;
    padding:0;
    align-items:center;
    flex-wrap:wrap;
    justify-content:center;
}
.ed-pager .pagination li{display:inline-flex !important;float:none !important;margin:0 !important}
.ed-pager .pagination li a,
.ed-pager .pagination li span{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    min-width:40px;
    height:40px;
    padding:0 12px;
    border:1px solid var(--rule) !important;
    background:transparent !important;
    color:var(--ink-soft) !important;
    font-family:var(--f-mono) !important;
    font-size:12.5px !important;
    border-radius:0 !important;
    transition:all .35s var(--ease);
}
.ed-pager .pagination li a:hover{
    border-color:var(--ink) !important;
    background:var(--paper-warm) !important;
    color:var(--ink) !important;
}
.ed-pager .pagination li.active a,
.ed-pager .pagination li.active span,
.ed-pager .pagination li span.current{
    background:var(--ink) !important;
    border-color:var(--ink) !important;
    color:var(--paper) !important;
}
.ed-pager .pagination li.disabled a,
.ed-pager .pagination li.disabled span{opacity:.4;pointer-events:none}

/* ---------------------------------------------------------------
   13. 详情页
   --------------------------------------------------------------- */
.ed-article-wrap{padding:clamp(44px,6vw,84px) 0 clamp(56px,8vw,96px)}

.ed-article-cols{
    display:grid;
    grid-template-columns:minmax(0,1fr) 300px;
    gap:clamp(32px,5.5vw,84px);
    align-items:start;
}

.ed-article-head{margin-bottom:clamp(28px,4vw,44px)}
.ed-article-title{
    font-size:clamp(2.1rem,4.6vw,3.35rem);
    line-height:1.1;
    letter-spacing:-.035em;
    margin:0 0 24px;
}
.ed-article-meta{
    display:flex;
    align-items:center;
    gap:22px;
    flex-wrap:wrap;
    padding-top:20px;
    border-top:1px solid var(--rule);
    font-family:var(--f-mono);
    font-size:10.5px;
    letter-spacing:.13em;
    text-transform:uppercase;
    color:var(--ink-faint);
}
.ed-article-meta span{display:inline-flex;align-items:center;gap:7px}
.ed-article-meta a{color:var(--ink-mute)}
.ed-article-meta a:hover{color:var(--accent)}

.ed-article-cover{
    margin:0 0 clamp(28px,4vw,44px);
    overflow:hidden;
    background:var(--paper-deep);
}
.ed-article-cover img{width:100%}

/* 正文 · 阅读体验优先 */
.ed-prose{
    font-size:16.5px;
    line-height:1.88;
    color:var(--ink-soft);
}
.ed-prose > *:first-child{margin-top:0}
.ed-prose h2,.ed-prose h3,.ed-prose h4{
    color:var(--ink);
    line-height:1.28;
    margin:2em 0 .7em;
    letter-spacing:-.02em;
}
.ed-prose h2{font-size:clamp(2rem,2.6vw,2.4rem)}
.ed-prose h3{font-size:clamp(1.8rem,2vw,2.1rem)}
.ed-prose h4{font-size:1.75rem;font-weight:600}
.ed-prose p{margin:0 0 1.35em}
.ed-prose a{
    color:var(--accent);
    border-bottom:1px solid rgba(200,54,26,.35);
    transition:border-color .3s;
}
.ed-prose a:hover{border-bottom-color:var(--accent)}
.ed-prose img{width:100%;margin:1.8em 0;background:var(--paper-deep)}
.ed-prose ul,.ed-prose ol{padding-left:1.4em;margin:0 0 1.35em}
.ed-prose li{margin-bottom:.55em}
.ed-prose li::marker{color:var(--accent)}
.ed-prose blockquote{
    margin:1.9em 0;
    padding:4px 0 4px 26px;
    border-left:2px solid var(--accent);
    font-family:var(--f-display);
    font-size:1.14em;
    line-height:1.66;
    color:var(--ink);
    font-style:normal;
}
.ed-prose blockquote p:last-child{margin-bottom:0}
.ed-prose pre{
    background:#1d1c19;
    color:#e8e4da;
    padding:20px 22px;
    overflow-x:auto;
    margin:1.8em 0;
    font-family:var(--f-mono);
    font-size:13px;
    line-height:1.72;
    border-radius:2px;
}
.ed-prose pre code{background:none;border:none;padding:0;color:inherit;font-size:inherit}
.ed-prose code{
    font-family:var(--f-mono);
    font-size:.86em;
    background:var(--paper-warm);
    border:1px solid var(--rule-soft);
    padding:2px 6px;
    border-radius:2px;
    color:var(--accent);
}
.ed-prose hr{
    border:none;
    border-top:1px solid var(--rule);
    margin:2.4em 0;
}
.ed-prose table{
    width:100%;
    border-collapse:collapse;
    margin:1.8em 0;
    font-size:14.5px;
}
.ed-prose th,.ed-prose td{
    border:1px solid var(--rule);
    padding:10px 14px;
    text-align:left;
}
.ed-prose th{background:var(--paper-warm);font-weight:600;color:var(--ink)}

/* 图集 */
.ed-gallery{
    margin:clamp(36px,5vw,56px) 0 0;
    padding-top:clamp(28px,4vw,40px);
    border-top:1px solid var(--rule);
}
.ed-gallery-title{
    font-family:var(--f-mono);
    font-size:10.5px;
    letter-spacing:.19em;
    text-transform:uppercase;
    color:var(--ink-mute);
    margin-bottom:20px;
}
.ed-gallery-grid{
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:12px;
}
.ed-gallery-item{
    overflow:hidden;
    background:var(--paper-deep);
    aspect-ratio:4/3;
}
.ed-gallery-item img{
    width:100%;
    height:100%;
    object-fit:cover;
    filter:saturate(.78);
    transition:transform .8s var(--ease),filter .5s;
}
.ed-gallery-item:hover img{transform:scale(1.07);filter:saturate(1)}

/* 标签 */
.ed-tags{
    display:flex;
    align-items:center;
    gap:10px;
    flex-wrap:wrap;
    margin-top:clamp(32px,4.5vw,52px);
    padding-top:clamp(24px,3.5vw,36px);
    border-top:1px solid var(--rule);
}
.ed-tags-label{
    font-family:var(--f-mono);
    font-size:10.5px;
    letter-spacing:.19em;
    text-transform:uppercase;
    color:var(--ink-faint);
    margin-right:6px;
}
.ed-tag{
    display:inline-flex;
    align-items:center;
    padding:7px 15px;
    border:1px solid var(--rule);
    font-size:12.5px;
    color:var(--ink-soft) !important;
    transition:all .35s var(--ease);
}
.ed-tag:hover{
    border-color:var(--accent);
    color:var(--accent) !important;
    background:var(--paper-warm);
}

/* 上/下一篇 */
.ed-postnav{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:1px;
    background:var(--rule);
    border:1px solid var(--rule);
    margin-top:clamp(36px,5vw,56px);
}
.ed-postnav-cell{
    background:var(--paper);
    padding:26px 28px;
    transition:background .4s var(--ease);
    min-height:112px;
    display:flex;
    flex-direction:column;
    justify-content:center;
}
.ed-postnav-cell:hover{background:var(--paper-warm)}
.ed-postnav-cell.is-next{text-align:right}
.ed-postnav-k{
    font-family:var(--f-mono);
    font-size:10px;
    letter-spacing:.19em;
    text-transform:uppercase;
    color:var(--ink-faint);
    margin-bottom:10px;
}
.ed-postnav-t{
    font-family:var(--f-display);
    font-size:17px;
    font-weight:600;
    line-height:1.36;
    letter-spacing:-.015em;
    color:var(--ink);
    transition:color .35s;
}
.ed-postnav-cell:hover .ed-postnav-t{color:var(--accent)}
.ed-postnav-cell.is-empty .ed-postnav-t{color:var(--ink-faint);font-weight:400}

/* ---------------------------------------------------------------
   14. 侧栏
   --------------------------------------------------------------- */
.ed-aside{position:sticky;top:96px}
.ed-block{
    padding:0 0 30px;
    margin-bottom:30px;
    border-bottom:1px solid var(--rule);
}
.ed-block:last-child{border-bottom:none;margin-bottom:0}
.ed-block-title{
    font-family:var(--f-mono);
    font-size:10.5px;
    letter-spacing:.19em;
    text-transform:uppercase;
    color:var(--ink-mute);
    margin-bottom:20px;
    display:flex;
    align-items:center;
    gap:10px;
}
.ed-block-title::after{
    content:'';
    flex:1;
    height:1px;
    background:var(--rule-soft);
}

.ed-mini-item{
    display:grid;
    grid-template-columns:64px minmax(0,1fr);
    gap:14px;
    align-items:start;
    padding-bottom:16px;
    margin-bottom:16px;
    border-bottom:1px solid var(--rule-soft);
}
.ed-mini-item:last-child{padding-bottom:0;margin-bottom:0;border-bottom:none}
.ed-mini-thumb{
    width:64px;
    height:64px;
    overflow:hidden;
    background:var(--paper-deep);
    flex:none;
}
.ed-mini-thumb img{
    width:100%;
    height:100%;
    object-fit:cover;
    filter:saturate(.75);
    transition:transform .7s var(--ease),filter .4s;
}
.ed-mini-item:hover .ed-mini-thumb img{transform:scale(1.08);filter:saturate(1)}
.ed-mini-title{
    font-size:14px;
    font-weight:600;
    line-height:1.46;
    color:var(--ink);
    margin:0 0 6px;
    display:-webkit-box;
    -webkit-line-clamp:2;
    -webkit-box-orient:vertical;
    overflow:hidden;
    transition:color .35s;
}
.ed-mini-item:hover .ed-mini-title{color:var(--accent)}
.ed-mini-date{
    font-family:var(--f-mono);
    font-size:10px;
    letter-spacing:.12em;
    color:var(--ink-faint);
    text-transform:uppercase;
}
/* 无缩略图时单列 */
.ed-mini-item:not(:has(.ed-mini-thumb)){grid-template-columns:minmax(0,1fr)}

/* 上下篇里的链接 */
.ed-postnav-t a{color:inherit}
.ed-postnav-t a.prev_no,
.ed-postnav-t a.next_no{color:var(--ink-faint);font-weight:400}
.ed-postnav-t a.prev_no:hover,
.ed-postnav-t a.next_no:hover{color:var(--ink-faint)}

/* 页头小标签间距 */
.ed-pagehead .ed-label{display:block;margin-bottom:16px}

/* 正文内推荐的旧结构兼容 */
.line_two,.line_three{
    display:-webkit-box;
    -webkit-box-orient:vertical;
    overflow:hidden;
}
.line_two{-webkit-line-clamp:2}
.line_three{-webkit-line-clamp:3}

/* ---------------------------------------------------------------
   15. 通用表单（搜索页 / 留言等）
   --------------------------------------------------------------- */
input[type=text],input[type=search],input[type=email],
input[type=password],input[type=tel],textarea,select{
    width:100%;
    background:var(--paper-warm);
    border:1px solid var(--rule);
    color:var(--ink);
    padding:12px 15px;
    font-family:var(--f-body);
    font-size:14.5px;
    border-radius:0;
    outline:none;
    transition:border-color .3s,background .3s;
}
input:focus,textarea:focus,select:focus{
    border-color:var(--ink);
    background:var(--paper);
}
::placeholder{color:var(--ink-faint)}
textarea{min-height:130px;resize:vertical}
label{
    display:block;
    font-family:var(--f-mono);
    font-size:10.5px;
    letter-spacing:.14em;
    text-transform:uppercase;
    color:var(--ink-mute);
    margin-bottom:8px;
}

/* ---------------------------------------------------------------
   16. 滚动渐显（由 JS 添加 .is-in）
   --------------------------------------------------------------- */
[data-reveal]{
    opacity:0;
    transform:translateY(26px);
    transition:opacity .85s var(--ease),transform .85s var(--ease);
    will-change:opacity,transform;
}
[data-reveal].is-in{opacity:1;transform:none}

/* ---------------------------------------------------------------
   17. 隐藏旧主题残留元素
   --------------------------------------------------------------- */
.ec-colorswitcher,
.color-switcher-wrapper,
.mean-bar,
.mean-push,
.mean-container{display:none !important}
.wow{visibility:visible !important}
.floatright{float:none !important}
.mobile-menu-area{display:none}
.header-top{display:none}

/* ---------------------------------------------------------------
   18. 响应式
   --------------------------------------------------------------- */
@media (max-width:1080px){
    .ed-article-cols{grid-template-columns:minmax(0,1fr)}
    .ed-aside{position:static;margin-top:clamp(36px,5vw,56px)}
    .ed-work-link{grid-template-columns:44px minmax(0,1fr) 190px;gap:22px}
    .ed-work-link:not(:has(.ed-work-thumb)){grid-template-columns:44px minmax(0,1fr)}
    .ed-work-thumb{width:190px;height:124px}
}

@media (max-width:900px){
    .ed-nav{display:none}
    .ed-burger{display:block}
    .ed-hero-foot{grid-template-columns:minmax(0,1fr);align-items:start}
    .ed-hero-cta{justify-content:flex-start}
    .ed-channels{grid-template-columns:minmax(0,1fr)}
    .ed-gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}

@media (max-width:720px){
    body{font-size:15.5px}
    .ed-head{flex-direction:column;align-items:flex-start;gap:14px}
    .ed-head-note{padding-bottom:0;white-space:normal}
    /* 首屏顶栏改为竖排，避免眉标与元信息互相挤压 */
    .ed-hero-top{flex-direction:column;align-items:flex-start;gap:12px}
    .ed-hero-meta{gap:8px 18px;font-size:10px;letter-spacing:.14em}
    /* 首屏数据条改为单列，彻底消除窄屏横向溢出 */
    .ed-hero-facts{grid-template-columns:minmax(0,1fr);gap:0;background:transparent}
    .ed-fact{padding:16px 0;border-bottom:1px solid var(--rule-soft)}
    .ed-fact:last-child{border-bottom:none}
    .ed-fact-v{font-size:15px}
    .ed-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
    .ed-stat{border-bottom:1px solid var(--rule-soft)}
    .ed-stat:nth-child(odd){padding-right:16px}
    .ed-stat:nth-child(even){border-right:none;padding-left:16px}
    .ed-stat:nth-child(n+3){border-bottom:none}

    /* 作品列表转卡片式堆叠 */
    .ed-work-link,
    .ed-work-link:not(:has(.ed-work-thumb)){
        grid-template-columns:minmax(0,1fr);
        gap:16px;
        padding:24px 0;
    }
    .ed-work-link:hover{padding-left:0}
    .ed-work-num{padding-top:0;margin-bottom:2px}
    .ed-work-thumb{
        width:100%;
        height:auto;
        aspect-ratio:16/10;
        order:-1;
        grid-row:1;
    }
    /* 带缩略图时手动指定行号：图(1) → 序号(2) → 正文(3)。
       若只给缩略图和正文指定行号，序号会被自动排布挤到最后一行的下方。
       无缩略图的条目仍走自动排布（序号1、正文2），不留空行。 */
    .ed-work-link:has(.ed-work-thumb) .ed-work-num{grid-row:2}
    .ed-work-link:has(.ed-work-thumb) .ed-work-body{grid-row:3}
    .ed-work-title{font-size:1.75rem}
    .ed-work-sum{-webkit-line-clamp:3}

    .ed-article-cols{gap:32px}
    .ed-gallery-grid{grid-template-columns:minmax(0,1fr)}
    .ed-postnav{grid-template-columns:minmax(0,1fr)}
    .ed-postnav-cell.is-next{text-align:left}
    .ed-postnav{background:var(--rule)}
    .ed-footer-inner{flex-direction:column;align-items:flex-start;gap:16px}
    .ed-pagehead-side{max-width:none}
}

/* 打印 */
@media print{
    .ed-header,.ed-progress,.ed-marquee,.ed-footer-nav{display:none !important}
    body{background:#fff}
}

/* 降低动效偏好 */
@media (prefers-reduced-motion:reduce){
    *,*::before,*::after{
        animation-duration:.001ms !important;
        animation-iteration-count:1 !important;
        transition-duration:.001ms !important;
        scroll-behavior:auto !important;
    }
    .ed-hero-title .ed-line > span{transform:none}
    [data-reveal]{opacity:1;transform:none}
    .ed-marquee-track{animation:none}
}
