/* 柯瓦雷 · 铜版天穹：17 世纪铜版书。纸是带帘纹的米色手工纸，墨是褐黑，唯一的颜色是赭红。 */
.c-koyre {
  --bg: #efe7d4; --paper: #f6f0e1; --ink: #1d1a17; --ink-2: #4a4339; --ink-3: #81786a; --rule: rgba(29, 26, 23, .22);
  --acc: #8c3b1f; --acc-ink: #f6f0e1; --night: #13110e;
  --head: "Noto Serif SC", "Songti SC", serif; --body: "Noto Serif SC", "Songti SC", serif; --fell: "IM Fell English", "Noto Serif SC", serif; --fellsc: "IM Fell English SC", "IM Fell English", serif;
  --bar-bg: rgba(239, 231, 212, .93); --chip-bg: rgba(246, 240, 225, .9); --chip-ring: #f6f0e1;
  background-color: var(--bg);
  /* 帘纹纸：竖向链线 + 细密的横向帘纹 */
  background-image: repeating-linear-gradient(90deg, transparent 0 118px, rgba(120, 96, 60, .07) 118px 119px),
    repeating-linear-gradient(0deg, transparent 0 2px, rgba(120, 96, 60, .025) 2px 3px);
}
.c-koyre .dlg { --dlg-bg: #ece3cd; --dlg-paper: #f8f3e6; --dlg-me: #1d1a17; --dlg-me-ink: #f6f0e1; --dlg-acc: #8c3b1f; }
.c-koyre .c3bar { border-bottom: 3px double var(--rule); font-family: var(--body); }
.c-koyre .c3bar__t a { font-family: var(--fellsc); font-weight: 400; letter-spacing: .04em; }
.ky-rn { font-family: var(--fellsc); letter-spacing: .12em; }

/* 目录：书页边上的小字页码 */
.c-koyre .c3toc a { font-family: var(--fell); font-size: 13px; color: var(--ink-3); }
.c-koyre .c3toc a b { font-weight: 400; }
.c-koyre .c3toc a::after { width: 14px; height: 1px; border: 0; border-radius: 0; background: currentColor; }
.c-koyre .c3toc a[aria-current="true"] { color: var(--acc); }
.c-koyre .c3toc a[aria-current="true"]::after { width: 26px; height: 2px; }

/* 首屏 */
.c-koyre .c3hero { padding-top: calc(var(--bar) + 28px); }
.ky-hero { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); gap: clamp(24px, 4vw, 64px); align-items: center; max-width: 1280px; margin: 0 auto; }
.ky-sky { margin: 0; }
.ky-sky__frame { position: relative; }
.ky-sky img { display: block; width: 100%; height: auto; filter: contrast(1.05); }
.ky-sky figcaption, .ky-fig figcaption, .ky-two__cap, .ky-clock__cap { margin-top: 10px; font-family: var(--fell); font-style: italic; font-size: 14px; line-height: 1.55; color: var(--ink-2); }
.ky-stars { position: absolute; inset: 0; pointer-events: none; }
.ky-stars i { position: absolute; left: 50%; top: 50%; font-style: normal; font-size: 13px; line-height: 1; color: var(--ink); opacity: 0;
  animation: ky-drift var(--d, 14s) linear var(--del, 0s) infinite; }
@keyframes ky-drift {
  0% { transform: translate(calc(var(--x0) * 1%), calc(var(--y0) * 1%)) rotate(0); opacity: 0; }
  12% { opacity: .9; }
  85% { opacity: .55; }
  100% { transform: translate(calc(var(--x1) * 1%), calc(var(--y1) * 1%)) rotate(90deg); opacity: 0; }
}
.ky-title { max-width: 560px; }
.ky-k { margin: 0; font-family: var(--fellsc); font-size: 15px; letter-spacing: .1em; color: var(--acc); }
.ky-title h1 { margin: 4px 0 0; font-family: var(--head); font-weight: 900; font-size: clamp(64px, 9vw, 128px); line-height: 1; letter-spacing: .04em; }
.ky-en { margin: 10px 0 18px; display: flex; flex-wrap: wrap; gap: 6px 16px; align-items: baseline; font-family: var(--fell); font-size: 22px; }
.ky-en .ky-rn { font-size: 15px; color: var(--ink-3); }
.ky-who { margin: 0 0 6px; font-size: 19px; font-weight: 600; }
.ky-now { margin: 0 0 16px; color: var(--ink-2); font-size: 15px; }
.ky-rel { margin: 0 0 14px; padding: 12px 14px; border: 1px solid var(--rule); border-left: 3px solid var(--acc); background: rgba(246, 240, 225, .7); }
.ky-rel p { margin: 0; font-size: 15px; line-height: 1.75; }
.ky-rel .mk { margin-bottom: 4px; color: var(--acc); font-family: var(--fellsc); letter-spacing: .08em; }
.ky-facts { margin: 0 0 16px; font-size: 14.5px; color: var(--ink-2); line-height: 1.8; }
.c-koyre .c3-btn { border-radius: 0; font-family: var(--body); }
.c-koyre .c3-btn--go { background: var(--acc); border-color: var(--acc); color: var(--acc-ink); }
.c-koyre .c3-btn--deep { background: transparent; color: var(--ink); border-color: var(--ink); }
.ky-band { max-width: 1280px; margin: 44px auto 0; padding-top: 22px; border-top: 3px double var(--rule); display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 28px; }
.ky-band .mk { font-family: var(--fellsc); font-size: 14px; letter-spacing: .1em; color: var(--acc); }
.ky-mk2 { margin-top: 18px !important; }
.c-koyre .c3-feats { margin: 0; padding: 0; list-style: none; counter-reset: f; }
.c-koyre .c3-feats li { counter-increment: f; position: relative; padding: 4px 0 4px 30px; font-size: 14.5px; line-height: 1.65; border-bottom: 1px dotted var(--rule); }
.c-koyre .c3-feats li::before { content: counter(f, upper-roman) "."; position: absolute; left: 0; font-family: var(--fell); color: var(--acc); }
.c-koyre .c3-books li { font-size: 14.5px; }
.c-koyre .c3-books small { font-size: 12px; }
.c-koyre .c3-qlist li a { display: flex; gap: 10px; padding: 3px 0; text-decoration: none; font-size: 14.5px; }
.c-koyre .c3-qlist li a b { font-family: var(--fell); font-weight: 400; color: var(--acc); min-width: 2.6em; }
.c-koyre .c3-qlist li a:hover span { text-decoration: underline; }
.c-koyre .c3-links li { font-size: 14px; }

/* 每一问：一页书 */
.c-koyre .c3q { display: block; padding-top: calc(var(--bar) + 18px); }
.ky-page { max-width: 1280px; margin: 0 auto; }
.ky-rh { display: grid; grid-template-columns: 1fr auto 1fr; align-items: baseline; margin: 0 0 22px; padding-bottom: 6px; border-bottom: 1px solid var(--ink);
  box-shadow: 0 3px 0 -2px var(--ink); font-family: var(--fell); font-size: 15px; color: var(--ink-2); }
.ky-rh span:nth-child(2) { font-size: 17px; color: var(--ink); }
.ky-rh span:nth-child(3) { text-align: right; font-family: var(--body); font-size: 13px; }
.ky-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); gap: clamp(24px, 4vw, 64px); align-items: start; }
.c-koyre .c3q:nth-of-type(even) .ky-art { order: 2; }
.ky-txt { padding-top: 6px; }
.c-koyre .c3q__when b { font-family: var(--fell); font-weight: 400; font-size: 34px; color: var(--acc); }
.c-koyre .c3q__when span { font-family: var(--body); }
.c-koyre .c3q__q { font-size: clamp(30px, 3.6vw, 46px); letter-spacing: .02em; }
.c-koyre .c3q__lede { font-size: 16.5px; line-height: 1.9; text-align: justify; }
.ky-dc { float: left; margin: 6px 10px 0 0; padding: 5px 7px; border: 1px solid var(--ink); font-family: var(--head); font-weight: 900; font-size: 34px; line-height: 1; }
.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.c-koyre .c3-quote { border-left: 0; padding: 14px 0; border-top: 1px solid var(--rule); border-bottom: 1px solid var(--rule); }
.c-koyre .c3-quote blockquote p { font-size: 18px; }
.c-koyre .c3-orig { font-family: var(--fell); font-size: 15px; }
.c-koyre .c3-tags li { border-radius: 0; font-family: var(--body); }
.c-koyre .talk { border-radius: 2px; border-color: var(--ink); background: var(--paper); }
.c-koyre .c3-ask { border-color: var(--ink-3); border-radius: 0; }

/* 配图 */
.ky-fig { margin: 0; }
.ky-fig img { display: block; width: 100%; height: auto; max-height: 76vh; object-fit: contain; object-position: left top; mix-blend-mode: multiply; }
.ky-fig--inset { max-width: 300px; margin-top: 22px; }
.ky-fig--inset img { max-height: 40vh; }

/* 思想实验：船桅落石 */
.ky-exp { padding: 14px 16px 16px; border: 1px solid var(--ink); background: var(--paper); box-shadow: 6px 6px 0 rgba(29, 26, 23, .12); }
.ky-exp__k { margin: 0 0 6px; font-family: var(--fellsc); font-size: 15px; letter-spacing: .08em; color: var(--acc); }
.ky-exp svg { display: block; width: 100%; height: auto; font-family: var(--body); font-size: 13px; fill: var(--acc); }
.ky-exp__ctl { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; }
.ky-exp__ctl button { padding: 6px 12px; border: 1px solid var(--ink); background: transparent; color: var(--ink); font: inherit; font-size: 14px; cursor: pointer; }
.ky-exp__ctl button[aria-pressed="true"] { background: var(--ink); color: var(--paper); }
.ky-exp__go { margin-left: auto; background: var(--acc) !important; border-color: var(--acc) !important; color: var(--acc-ink) !important; }
.ky-exp__out { margin: 10px 0 0; min-height: 3.4em; font-size: 14.5px; line-height: 1.7; color: var(--ink-2); }

/* 两个世界 */
.ky-two { display: grid; grid-template-columns: 1fr 64px 1fr; min-height: 300px; border: 1px solid var(--ink); background: var(--paper); outline-offset: 4px; }
.ky-two > div { display: flex; flex-direction: column; justify-content: space-between; padding: 18px; }
.ky-two p { margin: 0; font-size: 20px; line-height: 1.9; }
.ky-two b { font-weight: 600; font-size: 14px; }
.ky-two__q { background: radial-gradient(circle at 30% 30%, rgba(196, 120, 52, .32), transparent 60%), radial-gradient(circle at 70% 75%, rgba(73, 112, 77, .28), transparent 55%), radial-gradient(circle at 80% 20%, rgba(70, 90, 150, .22), transparent 50%); }
.ky-two__g { font-family: var(--fell); filter: grayscale(1);
  background-image: linear-gradient(var(--rule) 1px, transparent 1px), linear-gradient(90deg, var(--rule) 1px, transparent 1px); background-size: 22px 22px; }
.ky-two__g p { font-style: italic; }
.ky-two__gap { position: relative; justify-content: center !important; align-items: center; padding: 0 !important; background: var(--night);
  background-image: radial-gradient(1px 1px at 20% 30%, #fff8, transparent), radial-gradient(1px 1px at 70% 60%, #fff6, transparent), radial-gradient(1px 1px at 40% 85%, #fff5, transparent); }
.ky-two__gap span { color: var(--paper); font-size: 22px; font-weight: 900; transition: transform 1.6s cubic-bezier(.5, 0, .9, .4), opacity 1.6s; }
.ky-two:hover .ky-two__gap span, .ky-two:focus .ky-two__gap span, .ky-two.is-fall .ky-two__gap span { transform: translateY(170px) rotate(160deg); opacity: 0; }

/* 人的时钟 */
.ky-measure { display: grid; grid-template-columns: minmax(0, 1fr) 190px; gap: 18px; align-items: start; }
.ky-clock { position: sticky; top: calc(var(--bar) + 24px); padding: 12px; border: 1px solid var(--ink); background: var(--paper); text-align: center; }
.ky-clock svg { width: 110px; height: auto; }
.ky-pend { transform-origin: 60px 10px; animation: ky-swing 1.1s ease-in-out infinite alternate; }
@keyframes ky-swing { from { transform: rotate(-24deg); } to { transform: rotate(24deg); } }
.ky-beat { display: flex; justify-content: center; gap: 10px; margin: 4px 0 8px; font-family: var(--fell); font-size: 22px; font-style: italic; }
.ky-beat span { opacity: .25; transition: opacity .15s, color .15s; }
.ky-beat span.on { opacity: 1; color: var(--acc); }
.ky-clock__cap { font-size: 13px !important; text-align: left; }

/* 无限宇宙：群星出走 */
.ky-burst { position: relative; }
.ky-burst__s { position: absolute; left: 0; right: 0; top: 0; height: calc(100% - 4.5em); pointer-events: none; overflow: visible; }
.ky-burst__s i { position: absolute; left: 50%; top: 52%; font-style: normal; font-size: 14px; color: var(--ink); opacity: 0; transform: translate(-50%, -50%); }
.is-in .ky-burst__s i { animation: ky-out 3.2s cubic-bezier(.2, .7, .3, 1) var(--del) forwards; }
@keyframes ky-out { 0% { opacity: 0; transform: translate(-50%, -50%) scale(.6); } 20% { opacity: 1; } 100% { opacity: .85; transform: translate(calc(-50% + var(--tx)), calc(-50% + var(--ty))) scale(1); } }

/* 中文世界的时间线 */
.ky-tl { padding: 16px 18px; border: 1px solid var(--ink); background: var(--paper); }
.ky-tl ol { list-style: none; margin: 8px 0 0; padding: 0 0 0 18px; border-left: 2px solid var(--ink); }
.ky-tl li { position: relative; padding: 8px 0 10px 10px; }
.ky-tl li::before { content: "✶"; position: absolute; left: -27px; top: 8px; width: 16px; text-align: center; background: var(--paper); color: var(--acc); }
.ky-tl b { font-family: var(--fell); font-size: 24px; font-weight: 400; margin-right: 10px; }
.ky-tl .ky-rn { font-size: 12px; color: var(--ink-3); }
.ky-tl p { margin: 2px 0 0; font-size: 15px; }
.ky-tl__n { margin: 10px 0 0; font-size: 12.5px; color: var(--ink-3); }

/* 结尾 */
.c-koyre .c3end { border-top: 3px double var(--rule); }
.c-koyre .c3end h2 { font-weight: 900; }
.c-koyre .c3end h2::before { content: "FINIS · "; font-family: var(--fellsc); font-weight: 400; font-size: .5em; color: var(--acc); letter-spacing: .1em; vertical-align: .35em; }
.c-koyre .c3-lin li { border-radius: 0; background: var(--paper); }

@media (max-width: 960px) {
  .ky-hero, .ky-grid { grid-template-columns: minmax(0, 1fr); }
  .c-koyre .c3q:nth-of-type(even) .ky-art { order: 0; }
  .ky-band { grid-template-columns: minmax(0, 1fr); }
  .ky-fig img { max-height: 62vh; }
  .ky-measure { grid-template-columns: minmax(0, 1fr); }
  .ky-clock { position: static; display: grid; grid-template-columns: 90px 1fr; text-align: left; align-items: center; gap: 4px 12px; }
  .ky-clock svg { grid-row: span 2; width: 80px; }
  .ky-beat { justify-content: flex-start; }
}
@media (max-width: 560px) {
  .ky-two { grid-template-columns: 1fr 44px 1fr; }
  .ky-two p { font-size: 16px; }
  .ky-exp__go { margin-left: 0; }
  .ky-dc { font-size: 28px; }
}
