@font-face{font-family:Geist;src:url('assets/fonts/geist-latin.woff2') format('woff2');font-weight:100 900;font-display:swap}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:105px}body{margin:0;color:#b9c6cf;font:17px/1.85 Geist,system-ui,sans-serif;background:radial-gradient(1100px 820px at 82% 8%,rgba(34,202,214,.05),transparent 62%),radial-gradient(900px 1000px at 10% 42%,rgba(15,139,154,.042),transparent 64%),radial-gradient(1000px 900px at 88% 78%,rgba(34,202,214,.034),transparent 62%),linear-gradient(180deg,#0b1015 0%,#0c1218 34%,#0b1016 62%,#0b1015 100%)}a{color:#8fd0d3;text-decoration:none}a:hover{color:#fff}a:focus-visible{outline:2px solid #8fd0d3;outline-offset:5px}.reader-bar{position:sticky;top:0;z-index:20;height:80px;display:flex;align-items:center;justify-content:space-between;padding:0 max(28px,calc((100vw - 1100px)/2));background:rgba(11,16,21,.88);backdrop-filter:saturate(140%) blur(10px);-webkit-backdrop-filter:saturate(140%) blur(10px);border-bottom:1px solid #1c2a32}.reader-brand{display:flex;align-items:center;gap:10px;color:#edf2f6;font-size:24px;font-weight:600}.reader-brand img{width:32px;height:28px;object-fit:contain}.reader-back{font-size:14px}.reader{max-width:900px;margin:0 auto;padding:64px 32px 80px}.reader-label,.kicker{color:#80bdbc;text-transform:uppercase;letter-spacing:.13em;font-size:12px;font-weight:600;margin:0 0 20px}.reader h1{font-size:clamp(32px,4vw,50px);line-height:1.16;letter-spacing:-.035em;color:#edf3f6;font-weight:650;margin:0 0 28px}.reader h2{font-size:29px;line-height:1.3;letter-spacing:-.025em;color:#e3edf2;font-weight:600;margin:0 0 22px}.reader h3{font-size:22px;line-height:1.4;color:#adcecf;font-weight:550;margin:0 0 14px}.reader p{margin:0 0 20px;max-width:75ch}.reader strong{color:#dee8eb;font-weight:600}.reader section{margin:0;padding:clamp(56px,6vw,84px) 0}.reader>section:first-of-type{padding-top:0}.reader article{margin:0 0 34px}.reader ul,.reader ol{padding-left:24px}.reader li{margin-bottom:14px}.reader .kicker-tick{display:none}.reader .vcard{padding:26px 0}.reader .evidence-code{color:#cdb987;font-size:13px;line-height:1.7;margin-bottom:18px}.reader .hsteps{counter-reset:step;list-style:none;padding:0}.reader .hsteps>li{position:relative;padding:22px 0 26px 60px;margin:0}.reader .hsteps>li::before{counter-increment:step;content:counter(step,decimal-leading-zero);position:absolute;left:0;top:27px;color:#84bfb5;font-size:15px}.reader small{font-size:13px;color:#8ca6b3}.reader .chain{display:block;border-top:1px solid #1c2a32;padding-top:16px;color:#86b7ba}.reader .protocol-topic-grid article,.reader .performance-grid article{padding:26px 0}.protocol-topic-number{display:block;font-size:13px;color:#ccb585;margin-bottom:14px}.reader .experiment-facts>div{padding:22px 0}.reader dt{font-size:14px;color:#89c5c4;font-weight:600;margin-bottom:8px}.reader dd{margin:0}.reader .paper-card{padding:26px 0}.paper-meta,.paper-authors,.data-footnote{font-size:14px;color:#8ea5b4}.reader .paper-relevance{padding:18px 22px;background:rgba(17,28,35,.55);border-left:2px solid rgba(96,139,140,.65);margin:20px 0}.reader .paper-relevance p{margin:8px 0 0}.reader .table-wrap,.reader .table-scroll{overflow-x:auto;max-width:100%;margin:24px 0}.reader table{border-collapse:collapse;width:100%;font-size:13px;line-height:1.65;display:block;overflow-x:auto;margin:24px 0}.reader th,.reader td{text-align:left;vertical-align:top;padding:10px 14px;border-bottom:1px solid #1c2a32;min-width:85px}.reader th{color:#dbe5eb;background:rgba(20,33,42,.7)}.reader pre{padding:20px;background:rgba(17,27,35,.55);overflow:auto;font-size:13px;line-height:1.7}.reader code{overflow-wrap:anywhere}.reader .roadmap-card,.reader .slp-stage{padding:26px 0}.reader .roadmap-intro{padding-bottom:24px}.reader [id="slp-track"]{margin-top:56px;border-top:1px solid #1c2a32;padding-top:48px}.reader button{font:inherit;padding:10px 18px;background:#172c32;color:#a9c4c9;border:1px solid #3d5961;border-radius:6px}.reader-footer{max-width:836px;margin:0 auto;padding:40px 0 50px;border-top:1px solid #1c2a32;display:flex;justify-content:space-between;font-size:14px}.reader img{max-width:100%}.reader .entry-actions{display:flex;gap:12px;flex-wrap:wrap}.reader section:last-child{border-bottom:0}
@media(max-width:600px){body{font-size:16px;line-height:1.8}.reader-bar{height:68px;padding:0 22px}.reader-brand{font-size:21px}.reader-back{font-size:12px}.reader{padding:38px 22px 50px}.reader h2{font-size:25px}.reader h3{font-size:21px}.reader section{padding:30px 0}.reader .hsteps>li{padding-left:40px}.reader-footer{margin:0 22px}.reader h1 br{display:none}}

.related-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin-top:28px}.related-grid>a{display:flex;flex-direction:column;padding:24px;background:#111d26;border:1px solid #2c424d;border-radius:10px}.related-grid>a:hover{border-color:#7babaf}.related-grid>a>span{font-size:12px;color:#c6b78e;margin-bottom:14px}.reader .related-grid h3{font-size:20px;color:#dce9ed}.reader .related-grid p{font-size:15px;color:#a8bac5}.related-grid b{font-size:14px;font-weight:500;margin-top:auto;padding-top:12px;color:#8fd0d3}@media(max-width:650px){.related-grid{grid-template-columns:1fr}}

/* ── 报告 / 数据按钮 + 引用声明 ───────────────────────────────
   放在 topic.css 里，因为 research.html 和报告原文页都只加载它。 */
.reader .doc-actions{display:flex;flex-wrap:wrap;align-items:center;gap:14px;margin:0 0 26px}
.reader .doc-actions-label{font-size:13px;letter-spacing:.1em;text-transform:uppercase;color:#7fa7b2}
.reader .doc-btn{display:inline-flex;align-items:baseline;gap:10px;padding:14px 22px;border:1px solid #2f4a52;border-radius:8px;background:rgba(17,28,35,.6);color:#c2d9de;font-size:15px;font-weight:550;line-height:1.4;transition:border-color .18s,background .18s,color .18s}
.reader .doc-btn:hover{border-color:#8fd0d3;background:rgba(34,202,214,.10);color:#eaf5f7}
.reader .doc-btn--primary{border-color:#3f8088;background:rgba(34,202,214,.13);color:#dcf0f3}
.reader .doc-btn--primary:hover{border-color:#8fd0d3;background:rgba(34,202,214,.2);color:#fff}
.reader .doc-btn-meta{font-size:12px;font-weight:400;color:#88a4b0;letter-spacing:.04em;white-space:nowrap}
.reader .doc-btn:hover .doc-btn-meta{color:#9fc4cc}
.reader .cite-notice{margin:0 0 40px;padding:18px 22px;background:rgba(17,28,35,.55);border-left:2px solid rgba(96,139,140,.65);font-size:14px;line-height:1.8;color:#a8bec9;max-width:none}
.reader .cite-notice strong{display:block;margin-bottom:8px;color:#a9d7d8;font-size:12px;font-weight:600;letter-spacing:.12em;text-transform:uppercase}
.reader .report-actions{display:flex;flex-wrap:wrap;align-items:center;gap:14px;margin:22px 0 26px}
@media(max-width:620px){.reader .doc-actions,.reader .report-actions{gap:10px}.reader .doc-btn{width:100%;flex-wrap:wrap;justify-content:center;text-align:center;padding:13px 18px}}

/* 五个实验报告：按 kim 转述的「论文和实验放的大」，把标题和间距加重，
   让它们读起来像五份报告，而不是正文里的几段小字。
   （SLP 和延迟基准这两段后加的，之前漏在选择器外，标题比前三段小一档、
   也没有左侧色条 —— 补上。） */
.reader #verification-cost-7b>h2,.reader #dense-experiment>h2,.reader #moe-experiment>h2,.reader #slp-experiment>h2,.reader #verification-latency-benchmark>h2{
 font-size:clamp(26px,2.7vw,36px);line-height:1.22;letter-spacing:-.03em;color:#eaf3f6;
 margin:0 0 18px;padding-left:16px;border-left:3px solid #2f7f86}
.reader #verification-cost-7b,.reader #dense-experiment,.reader #moe-experiment,.reader #slp-experiment,.reader #verification-latency-benchmark{
 padding:clamp(40px,4.4vw,60px) 0}
.reader #verification-cost-7b>p,.reader #dense-experiment>p,.reader #moe-experiment>p,.reader #slp-experiment>p,.reader #verification-latency-benchmark>p{
 font-size:18px;line-height:1.8;color:#c0d0da}
/* 论文条目也放大一档 */
.reader .paper-card h3{font-size:25px;line-height:1.35;color:#e6eff3}
.reader .paper-card{padding:30px 0}
/* 挂在每个实验段末尾的按钮行 */
.reader .doc-actions--inline{margin:26px 0 0}

/* Preprint notice: one line of running text with a tag at the front. It sits
   directly under a page title or a citation block, so it borrows their rhythm
   rather than starting a card of its own.

   Deliberately NOT a flex container: the sentence contains a <cite> and a link,
   and flex would make each of them its own flex item, breaking one sentence
   across three lines. inline-block on the tag gives the same look and lets the
   text wrap normally. */
.preprint-notice{
  margin:18px 0 0;font-size:15px;line-height:1.8;color:#b6c6d2;max-width:74ch;}
.preprint-tag{
  display:inline-block;margin-right:10px;vertical-align:1px;
  font-size:11px;font-weight:600;letter-spacing:1.3px;text-transform:uppercase;
  color:#0b1119;background:#80bdbc;padding:3px 9px;border-radius:999px;}
.preprint-notice cite{font-style:normal;color:#dbe9f0;}
.preprint-notice a{color:#8fd3d8;text-decoration:underline;
  text-decoration-color:rgba(143,211,216,.45);text-underline-offset:3px;}
.preprint-notice a:hover{text-decoration-color:#8fd3d8;}
@media(max-width:640px){.preprint-notice{font-size:14px;line-height:1.75;}}
