/* Direction D · Swiss / International — shared design system
   grid: 1920x1080, margins 96, 12 cols × 122, gutter 24 (col starts 96 + n·146) */
@font-face{font-family:"D Grotesk";src:url(fonts/InterTight-sub.woff2) format("woff2");font-weight:100 900;font-display:block;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2190-2199,U+2212,U+2215,U+2248,U+2260,U+2264,U+2265}
@font-face{font-family:"D CJK";src:url(fonts/NotoSansSC-sub.woff2) format("woff2");font-weight:100 900;font-display:block}
:root{--ink:#111;--paper:#f3f2ee;--red:#e4321b;--g1:#55524c;--g2:#8d8a83;--g3:#cfccc4;--g4:#e4e1da;
 --sans:"D Grotesk","D CJK","Noto Sans SC","Noto Sans CJK SC","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;overflow:hidden;background:#1b1b1a}
body{font-family:var(--sans);color:var(--ink);-webkit-font-smoothing:antialiased;text-rendering:geometricPrecision}
a{color:inherit}
.stage{position:absolute;left:0;top:0;width:1920px;height:1080px;transform-origin:0 0;background:var(--paper);overflow:hidden}
.slide{position:absolute;inset:0;visibility:hidden;background:var(--paper)}
.slide.on{visibility:visible}
h1,h2,h3,.hp{font-feature-settings:"kern"}
.red{color:var(--red)}.g1{color:var(--g1)}.g2{color:var(--g2)}
.nw{white-space:nowrap}
/* chrome */
.rule{position:absolute;left:96px;right:96px;top:96px;height:6px;background:var(--ink)}
.rule.b{top:auto;bottom:110px;height:2px}
.meta{position:absolute;left:96px;right:96px;top:120px;display:grid;grid-template-columns:repeat(12,1fr);column-gap:24px;font-size:22px;font-weight:700;line-height:32px}
.meta>*{grid-column:span 3;white-space:nowrap}
.meta .r{text-align:right}
.meta b{color:var(--red);font-weight:800;margin-right:16px}
.foot{position:absolute;left:96px;right:96px;bottom:34px;height:48px;display:flex;align-items:center;gap:16px}
.src{font-size:18px;font-weight:600;color:var(--g1);flex:1;min-width:0;line-height:1.4}
.go{display:inline-flex;align-items:center;gap:14px;height:48px;padding:0 20px 0 16px;background:var(--ink);color:#fff;text-decoration:none;font-size:20px;font-weight:800;white-space:nowrap;transition:background .2s}
.go::before{content:"";width:12px;height:12px;background:var(--red)}
.go:hover{background:var(--red)}.go:hover::before{background:#fff}
/* type */
.t1{font-size:96px;line-height:1.08;font-weight:900;letter-spacing:-.02em}
.t2{font-size:80px;line-height:1.1;font-weight:900;letter-spacing:-.02em}
.t3{font-size:44px;line-height:1.2;font-weight:900;letter-spacing:-.01em}
.lede{font-size:30px;line-height:1.6;font-weight:500}
.lbl{font-size:22px;font-weight:800;line-height:1.4}
.small{font-size:22px;font-weight:500;line-height:1.55;color:var(--g1)}
.num{font-weight:900;letter-spacing:-.04em;line-height:.85}
.abs{position:absolute}
.cols{position:absolute;left:96px;right:96px;display:grid;grid-template-columns:repeat(12,1fr);column-gap:24px}
.hr{height:2px;background:var(--ink)}.hr6{height:6px;background:var(--ink)}
/* diagram primitives */
.dg{position:absolute;inset:0;pointer-events:none}
.dg svg{position:absolute;left:0;top:0;width:1920px;height:1080px;overflow:visible}
.bx{position:absolute;display:flex;flex-direction:column;justify-content:center;padding:0 24px;border:3px solid var(--ink);background:var(--paper)}
.bx .k{font-size:15px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--g2);margin-bottom:6px}
.bx .t{font-size:28px;font-weight:900;line-height:1.2;white-space:nowrap}
.bx .s{font-size:18px;font-weight:500;line-height:1.4;margin-top:6px;color:var(--g1);white-space:nowrap}
.bx.blk{background:var(--ink);color:#fff}.bx.blk .s{color:#bdbab3}.bx.blk .k{color:#8d8a83}
.bx.redb{border-color:var(--red)}.bx.redb .t{color:var(--red)}
.bx.c{align-items:center;padding:0}
.bx.wht{background:#fff}
.ln{fill:none;stroke:var(--ink);stroke-width:3}
.ln.r{stroke:var(--red);stroke-width:6}
.ln.thin{stroke-width:2}
.ln.dash{stroke-dasharray:8 8}
.dlab{font-family:var(--sans);font-size:22px;font-weight:900;fill:var(--red)}
.dlab.k{fill:var(--ink);font-size:18px;font-weight:800}
/* notes overlay */
.notes{display:none}
body.show-notes .slide.on .notes{display:block;position:absolute;left:0;right:0;bottom:0;max-height:62%;overflow:auto;padding:36px 96px 40px;background:rgba(17,17,17,.94);color:#f3f2ee;font-size:24px;line-height:1.65;font-weight:500;white-space:pre-line;z-index:50;border-top:6px solid var(--red)}
/* motion */
.rv{opacity:0;transform:translateY(24px)}
.slide.on .rv{animation:rv .8s cubic-bezier(.2,.8,.2,1) both;animation-delay:calc(var(--d,0)*90ms + 80ms)}
@keyframes rv{to{opacity:1;transform:none}}
.wipe{transform:scaleX(0);transform-origin:left}
.slide.on .wipe{animation:wipe .9s cubic-bezier(.7,0,.2,1) both;animation-delay:calc(var(--d,0)*90ms)}
@keyframes wipe{to{transform:none}}
.draw{stroke-dasharray:var(--len,2400);stroke-dashoffset:var(--len,2400)}
.slide.on .draw{animation:draw 1.1s cubic-bezier(.6,0,.2,1) both;animation-delay:calc(var(--d,0)*90ms + 200ms)}
@keyframes draw{to{stroke-dashoffset:0}}
html.shot .rv,html.shot .wipe,html.shot .draw{animation:none!important;opacity:1!important;transform:none!important;stroke-dashoffset:0!important}
html.shot *{transition:none!important}
.prog{position:absolute;left:0;bottom:0;height:6px;background:var(--red);transition:width .5s cubic-bezier(.2,.8,.2,1)}
html.shot .prog{display:none}
/* detail page chrome */
.dhead{position:absolute;left:96px;right:96px;top:120px;display:flex;align-items:center;gap:32px;height:48px}
.back{display:inline-flex;align-items:center;gap:12px;height:48px;padding:0 20px 0 16px;border:3px solid var(--ink);text-decoration:none;font-size:20px;font-weight:800;white-space:nowrap;transition:all .2s}
.back::before{content:"←";color:var(--red);font-weight:900}
.back:hover{background:var(--ink);color:#fff}
.dhead h1{font-size:30px;font-weight:900;white-space:nowrap}
.dhead .tag{margin-left:auto;font-size:20px;font-weight:700;color:var(--g1);white-space:nowrap}
.btn{height:56px;min-width:56px;padding:0 22px;border:3px solid var(--ink);background:var(--paper);font:800 22px var(--sans);color:var(--ink);cursor:pointer;transition:all .15s}
.btn:hover{background:var(--ink);color:#fff}
.btn.on{background:var(--ink);color:#fff}
.flag{display:inline-block;background:var(--red);color:#fff;font-size:18px;font-weight:800;padding:4px 10px;line-height:1.3}
input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:6px;background:var(--ink);outline:none}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:28px;height:28px;background:var(--red);border:0;cursor:pointer}
input[type=range]::-moz-range-thumb{width:28px;height:28px;background:var(--red);border:0;border-radius:0}
.chk{display:inline-flex;align-items:center;gap:14px;font-size:22px;font-weight:700;cursor:pointer;user-select:none}
.chk input{-webkit-appearance:none;appearance:none;width:28px;height:28px;border:3px solid var(--ink);margin:0;cursor:pointer;display:grid;place-items:center}
.chk input:checked{background:var(--ink);box-shadow:inset 0 0 0 5px var(--paper)}
/* arch pages */
.archsvg{position:absolute;left:0;top:0;width:1920px;height:1080px;overflow:visible;pointer-events:none}
.ae{fill:none;stroke:var(--ink);stroke-width:3}
.ae.r{stroke:var(--red);stroke-width:6}
.ae.d{stroke-dasharray:9 9}
.ae.g{stroke:var(--g2);stroke-width:2}
.al{font-family:var(--sans);font-size:20px;font-weight:900;fill:var(--ink)}
.al.r{fill:var(--red)}.al.g{fill:var(--g1);font-weight:700;font-size:18px}
.an{position:absolute;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;text-align:left;padding:0 20px;border:3px solid var(--ink);background:var(--paper);color:var(--ink);font-family:var(--sans);cursor:pointer;transition:background .2s,color .2s,box-shadow .2s}
.an .k{font-size:14px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--g2);margin-bottom:4px}
.an .t{font-size:25px;font-weight:900;line-height:1.2;white-space:nowrap}
.an .s{font-size:17px;font-weight:500;color:var(--g1);margin-top:5px;white-space:nowrap}
.an.b{background:var(--ink);color:#fff}.an.big .t{font-size:32px}.an.b .s{color:#c9c6bf}.an.b .k{color:#8d8a83}
.an.u{border-style:dashed;border-color:var(--red)}.an.u .t{color:var(--red)}
.an.rb{border-color:var(--red)}
.an.q{border-color:var(--g3);color:var(--g1)}
.an:hover{box-shadow:0 0 0 3px var(--red)}
.an.sel{box-shadow:0 0 0 6px var(--red)}
.frame{position:absolute;border:2px dashed var(--g2);pointer-events:none}
.frame span{position:absolute;left:16px;top:-14px;background:var(--paper);padding:0 10px;font-size:18px;font-weight:800;color:var(--g1)}
#note{position:absolute;left:96px;right:96px;top:872px;height:96px;border-top:6px solid var(--ink);padding-top:18px;font-size:22px;font-weight:600;line-height:1.55;color:#2a2926}
#note b{font-weight:900;color:var(--ink);margin-right:18px;font-size:24px}
/* presenter view (P) */
body.presenter{background:#1b1b1a}
#pv{position:fixed;left:var(--w,1200px);right:0;top:0;bottom:0;color:#f3f2ee;font-family:var(--sans);display:flex;flex-direction:column;padding:20px 28px 24px 0}
#pv .pv-top{display:flex;flex-wrap:wrap;align-items:center;gap:10px 18px;font-size:18px;font-weight:700;color:#a9a69f;border-bottom:3px solid var(--red);padding-bottom:14px}
#pv-no{font-size:22px;color:#fff;width:100%}
#pv-clock{margin-left:auto;font:800 26px var(--sans);color:#fff;background:transparent;border:2px solid #55524c;padding:4px 12px;cursor:pointer}
#pv-notes{flex:1;overflow:auto;white-space:pre-line;font-size:21px;line-height:1.7;font-weight:500;padding-top:16px}
body.presenter::after{content:"演讲者视图 · ← → 翻页 · 另一个窗口会同步";position:fixed;left:24px;top:22px;color:#8d8a83;font:700 18px var(--sans)}
