@charset "UTF-8";
/* public edition layout layer (v6.9); every rule is scoped to body.p2 */

/* ===== signal card ===== */
body.v2.p2 .sig.p-sig{display:block;max-width:none}
body.v2.p2 .p-head{padding:24px 46px 20px}
body.v2.p2 .p-head .mod-hd{margin-bottom:12px}
body.v2.p2 .p-head h3{margin:0}
body.v2.p2 .p-hit{cursor:pointer}
body.v2.p2 .p-meta{display:flex;gap:14px;align-items:baseline;margin-top:6px;font:12px/1.5 "IBM Plex Mono",monospace;letter-spacing:.04em;color:var(--ink-faint)}
body.v2.p2 .p-meta em{font:normal 12.5px/1.5 "Noto Sans SC",sans-serif;letter-spacing:0}
body.v2.p2 .p-chev{flex:none;width:28px;height:28px;margin-left:4px;border:0;border-radius:50%;background:transparent;color:var(--ink-soft);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .45s cubic-bezier(.2,.7,.2,1),background .2s,color .2s}
body.v2.p2 .p-chev svg{width:13px;height:13px}
body.v2.p2 .p-hit:hover .p-chev,body.v2.p2 .p-sh:hover .p-schev{background:rgba(1,52,170,.08);color:var(--blue)}
body.v2.p2 .p-card.open .p-head .p-chev,body.v2.p2 .p-card.open .p-ahead .p-chev{transform:rotate(180deg);color:var(--blue)}
body.v2.p2 .p-bd{display:grid;grid-template-rows:0fr;transition:grid-template-rows .5s cubic-bezier(.2,.7,.2,1)}
body.v2.p2 .p-bdi{overflow:hidden;min-height:0}
body.v2.p2 .p-card.open .p-bd{grid-template-rows:1fr}
body.v2.p2 .p-bdi>*{opacity:0;transform:translateY(-6px);transition:opacity .35s ease,transform .45s cubic-bezier(.2,.7,.2,1)}
body.v2.p2 .p-card.open .p-bdi>*{opacity:1;transform:none;transition-delay:.08s}
body.v2.p2 .p-sig .mod-main{padding:0 46px 30px;border-top:1px solid var(--edge);margin:0}
body.v2.p2 .p-sig .txt{margin-top:22px}
body.v2.p2 .p-sig .txt p{margin:0 0 16px}
body.v2.p2 .mod.p-card{transition:box-shadow .35s}
body.v2.p2 .mod.p-card:not(.open){margin-bottom:12px}
body.v2.p2 .mod.p-card:not(.open):hover{transform:none}
/* ===== source badge ===== */
body.v2.p2 a.src.sd{position:relative;display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;padding:0;margin:0 2px 0 4px;border:0;border-radius:999px;background:rgba(1,52,170,.08);color:var(--blue);vertical-align:.18em;line-height:1;font:500 11.5px/1 "Noto Sans SC",sans-serif;transition:background .2s,color .2s;white-space:nowrap}
body.v2.p2 a.src.sd svg{position:relative;z-index:2;width:10px;height:10px;flex:none}
/* v6.10.2: the name shows in a small tip above the badge. The old badge widened on hover, reflowed the
   justified line, slid out from under the cursor, lost hover and looped (flicker). The tip takes no
   space and no pointer events, so only the 18px badge is the target and neighbours stay reachable. */
body.v2.p2 a.src.sd .l{position:absolute;left:-3px;bottom:calc(100% + 6px);z-index:30;height:22px;display:flex;align-items:center;padding:0 10px;border-radius:999px;background:var(--blue);color:#fff;
  font:500 11.5px/1 "Noto Sans SC",sans-serif;opacity:0;transform:translate3d(0,3px,0);pointer-events:none;transition:opacity .14s,transform .14s;box-shadow:0 3px 12px rgba(1,52,170,.25)}
body.v2.p2 a.src.sd.lf .l{left:auto;right:-3px}
body.v2.p2 a.src.sd.lb .l{bottom:auto;top:calc(100% + 6px);transform:translate3d(0,-3px,0)}
body.v2.p2 a.src.sd:hover,body.v2.p2 a.src.sd:focus-visible{background:var(--blue);color:#fff}
body.v2.p2 a.src.sd:hover .l,body.v2.p2 a.src.sd:focus-visible .l{opacity:1;transform:none}
/* ===== figures ===== */
body.v2.p2 .p-figs{display:flex;justify-content:center;gap:14px;margin:6px 0 22px}
body.v2.p2 .p-figs a.fig{width:auto;flex:0 1 620px}
/* two or more side by side: widths in proportion to aspect ratio, so heights match (v6.10.3) */
body.v2.p2 .p-figs a.fig:not(:only-child){flex:var(--ar,1) 1 0;max-width:none}
/* ===== tracking window ===== */
body.v2.p2 .p-win{position:relative;margin:8px 0 0;background:#F4F7FD;border-radius:14px}
body.v2.p2 .p-wh{display:flex;align-items:baseline;gap:10px;padding:16px 24px 6px}
body.v2.p2 .p-wh b{font:600 11.5px "IBM Plex Mono",monospace;letter-spacing:.2em;color:var(--blue)}
body.v2.p2 .p-wh span{font-size:12.5px;color:#56627E}
body.v2.p2 .p-sc{max-height:300px;overflow-y:auto;padding:0 24px 18px;scrollbar-width:thin;scrollbar-color:rgba(1,52,170,.22) transparent}
body.v2.p2 .p-sc::-webkit-scrollbar{width:6px}body.v2.p2 .p-sc::-webkit-scrollbar-thumb{background:rgba(1,52,170,.22);border-radius:3px}
body.v2.p2 .p-win:after{content:"";position:absolute;left:0;right:0;bottom:0;height:30px;border-radius:0 0 14px 14px;background:linear-gradient(rgba(244,247,253,0),#F4F7FD);pointer-events:none}
body.v2.p2 .p-p{display:grid;grid-template-columns:210px minmax(0,1fr);gap:20px;padding:12px 0}
body.v2.p2 .p-p+.p-p{border-top:1px solid rgba(1,52,170,.10)}
body.v2.p2 .p-who b{display:block;font-weight:500;font-size:14px;color:var(--ink);line-height:1.6}
body.v2.p2 .p-who small{display:block;font-size:12px;color:#7A86A0;line-height:1.5}
body.v2.p2 .p-say{font-size:14.5px;line-height:1.85;color:var(--body)}
body.v2.p2 .p-win a.src.sd{background:rgba(1,52,170,.1)}
/* ===== sections ===== */
body.v2.p2 .p-sh{cursor:pointer;user-select:none}
body.v2.p2 .p-schev{margin:0 4px 0 -6px;align-self:center}
body.v2.p2 .p-sh.shut .p-schev{transform:rotate(-90deg)}
body.v2.p2 .p-sec{display:grid;grid-template-rows:1fr;transition:grid-template-rows .5s cubic-bezier(.2,.7,.2,1),opacity .35s}
body.v2.p2 .p-seci{min-height:0;overflow:hidden;padding:2px 2px 6px;margin:-2px -2px 0}
body.v2.p2 .p-sec.shut{grid-template-rows:0fr;opacity:0}
body.v2.p2 .p-sh-all{order:9;margin-left:14px;border:0;background:none;font:500 12px "Noto Sans SC",sans-serif;color:var(--blue);cursor:pointer;padding:0;white-space:nowrap}
body.v2.p2 .p-sh-all:hover{text-decoration:underline;text-underline-offset:4px}
/* ===== insights ===== */
body.v2.p2 .p-quotes{background:var(--card);border-radius:14px;box-shadow:var(--shadow);overflow:hidden;margin-bottom:32px}
body.v2.p2 .p-quotes .mod.q{box-shadow:none;border-radius:0;margin:0;grid-template-columns:250px minmax(0,1fr);border-top:1px solid var(--edge);transform:none!important}
body.v2.p2 .p-quotes .mod.q:first-child{border-top:0}
body.v2.p2 .p-quotes .qwho{background:#F4F7FD;grid-template-columns:minmax(0,1fr);padding:18px 22px 16px 28px}
body.v2.p2 .p-quotes .qwho .ava{display:none}
body.v2.p2 .p-quotes .qwho .nm{font-size:14px;font-weight:500;color:var(--ink);display:block}
body.v2.p2 .p-quotes .qwho .role{display:block;font-size:12px;color:var(--ink-faint);margin:1px 0 8px}
body.v2.p2 .p-quotes .p-same .qwho .nm,body.v2.p2 .p-quotes .p-same .qwho .role{visibility:hidden;height:0;margin:0;overflow:hidden}
body.v2.p2 .p-quotes .mod.q.p-same{border-top-color:rgba(1,52,170,.05)}
body.v2.p2 .p-quotes blockquote{padding:18px 30px 16px;font-size:15px;line-height:1.85;margin:0;align-self:center}
/* ===== podcast ===== */
body.v2.p2 .p-pc .pc-side{background:#F4F7FD;box-shadow:none}
body.v2.p2 .p-pc .ava{display:none}
body.v2.p2 .p-pc .pg{grid-template-columns:minmax(0,1fr)}
/* ===== market ===== */
body.v2.p2 .mk-list li{border-top:1px solid var(--edge)}
body.v2.p2 .mk-list li:first-child{border-top:0}
body.v2.p2 .mk-list .dept-row{margin-top:8px}
/* ===== analysis ===== */
body.v2.p2 .p-an{padding:0}
body.v2.p2 .p-ahead{padding:22px 46px 18px}
body.v2.p2 .p-ahead h3{margin:8px 0 0}
body.v2.p2 .p-an .an-hd{display:flex;align-items:center;gap:12px}
body.v2.p2 .p-an .an-hd .p-chev{margin-left:auto}
body.v2.p2 .p-an .p-bdi>.txt{padding:20px 46px 28px;border-top:1px solid var(--edge);margin:0}
body.v2.p2 .p-an .p-figs2{display:flex;justify-content:center;gap:16px;margin:18px 0 6px}
body.v2.p2 .p-an .p-figs2 a.fig{width:auto;flex:1 1 0;max-width:480px}
body.v2.p2 .p-an .p-figs2 a.fig:not(:only-child){flex:var(--ar,1) 1 0;max-width:none}
body.v2.p2 .p-an .p-figs2:has(a.fig:nth-child(2)){max-width:960px;margin-left:auto;margin-right:auto}
/* ===== bookmark toc ===== */
body.v2.p2 .rtoc.p-hide{display:none!important}
body.v2.p2 .layout{transition:padding-right .45s cubic-bezier(.2,.7,.2,1)}
body.v2.p2.p-tocopen .layout{padding-right:300px}
body.v2.p2 .p-bm{position:fixed;right:0;top:132px;z-index:61;width:30px;padding:16px 0 18px;border:0;border-radius:10px 0 0 10px;background:var(--blue);color:#fff;cursor:pointer;box-shadow:-6px 8px 18px -8px rgba(1,52,170,.55);transition:right .45s cubic-bezier(.2,.7,.2,1),width .2s}
body.v2.p2 .p-bm span{writing-mode:vertical-rl;font:500 13px "Noto Sans SC",sans-serif;letter-spacing:.35em}
body.v2.p2 .p-bm:hover{width:34px}
body.v2.p2.p-tocopen .p-bm{right:300px}
body.v2.p2 .p-toc{position:fixed;top:48px;bottom:0;right:0;width:300px;z-index:60;background:var(--card);box-shadow:-1px 0 0 var(--edge),-24px 0 40px -28px rgba(16,24,40,.3);transform:translateX(100%);transition:transform .45s cubic-bezier(.2,.7,.2,1);display:flex;flex-direction:column}
body.v2.p2.p-tocopen .p-toc{transform:none}
body.v2.p2 .p-toch{display:flex;align-items:center;justify-content:space-between;padding:22px 22px 10px}
body.v2.p2 .p-toch b{font:600 12px "IBM Plex Mono",monospace;letter-spacing:.2em;color:var(--blue)}
body.v2.p2 .p-tocx{border:0;background:none;font-size:20px;line-height:1;color:var(--ink-faint);cursor:pointer}
body.v2.p2 .p-tocl{overflow-y:auto;padding:0 14px 28px}
body.v2.p2 .p-tocl a{display:flex;gap:8px;padding:6px 8px;border-radius:8px;font-size:13px;line-height:1.5;color:var(--ink-soft);border:0}
body.v2.p2 .p-tocl a span{min-width:0}
body.v2.p2 .p-tocl a.t1{margin-top:12px;font-weight:600;color:var(--ink)}
body.v2.p2 .p-tocl a.t2 em{flex:none;font:normal 11px/1.9 "IBM Plex Mono",monospace;color:var(--ink-faint)}
body.v2.p2 .p-tocl a.t2 span{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
body.v2.p2 .p-tocl a:hover{background:var(--rail);color:var(--blue)}
body.v2.p2 .p-tocl a.on{color:var(--blue);background:rgba(1,52,170,.06)}
body.v2.p2.peek .p-bm,body.v2.p2.peek .p-toc{display:none}
@media (max-width:920px){body.v2.p2.p-tocopen .layout{padding-right:0}}
/* ===== filter ===== */
body.v2.p2 .mod.flt.p-hide{display:none!important}
body.v2.p2 .nf{margin:0 0 32px}
body.v2.p2 .nf-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
body.v2.p2 .nf-btn{display:inline-flex;align-items:center;gap:7px;height:34px;padding:0 15px;border-radius:999px;border:0;background:var(--card);box-shadow:var(--shadow-sm);font:500 13.5px/1 "Noto Sans SC",sans-serif;color:var(--ink);cursor:pointer;transition:box-shadow .2s,color .2s}
body.v2.p2 .nf-btn svg{width:14px;height:14px}
body.v2.p2 .nf-btn:hover,body.v2.p2 .nf.open .nf-btn{color:var(--blue);box-shadow:0 0 0 1.5px var(--blue)}
body.v2.p2 .nf-c{min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:var(--blue);color:#fff;font:600 11px/18px "IBM Plex Mono",monospace;text-align:center}
body.v2.p2 .nf-pills{display:flex;flex-wrap:wrap;gap:6px}
body.v2.p2 .nf-pill{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px 0 12px;border-radius:999px;border:0;background:rgba(1,52,170,.08);color:var(--blue);font:500 12.5px/1 "Noto Sans SC",sans-serif;cursor:pointer}
body.v2.p2 .nf-pill span{opacity:.6}
body.v2.p2 .nf-pill:hover span{opacity:1}
body.v2.p2 .nf-res{margin-left:auto;font-size:13px;color:var(--ink-soft)}
body.v2.p2 .nf-res b{font:600 14px "IBM Plex Mono",monospace;color:var(--ink)}
body.v2.p2 .nf-panel{display:none;margin-top:12px;background:var(--card);border-radius:14px;box-shadow:var(--shadow);padding:6px 28px 0}
body.v2.p2 .nf.open .nf-panel{display:block;animation:voin .25s ease}
@keyframes voin{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
body.v2.p2 .nf-row{display:grid;grid-template-columns:56px minmax(0,1fr);gap:16px;padding:16px 0}
body.v2.p2 .nf-row+.nf-and+.nf-row{border-top:1px solid var(--edge)}
body.v2.p2 .nf-lab{font:600 13.5px/30px "Noto Sans SC",sans-serif;color:var(--ink)}
body.v2.p2 .nf-and{font-size:11.5px;color:var(--ink-faint);margin:-9px 0 -9px 72px;position:relative;z-index:1;background:var(--card);display:inline-block;padding:0 8px}
body.v2.p2 .nf-g{display:grid;grid-template-columns:104px minmax(0,1fr);gap:10px;align-items:start;margin-bottom:8px}
body.v2.p2 .nf-ks{display:flex;flex-wrap:wrap;gap:7px}
body.v2.p2 .nf-k,body.v2.p2 .nf-par,body.v2.p2 .nf-all{display:inline-flex;align-items:center;gap:5px;height:30px;padding:0 12px;border-radius:999px;border:1px solid var(--edge2);background:var(--card);font:13px/1 "Noto Sans SC",sans-serif;color:var(--body);cursor:pointer;white-space:nowrap;transition:all .15s}
body.v2.p2 .nf-k i{font-style:normal;font:500 10.5px "IBM Plex Mono",monospace;opacity:.6}
body.v2.p2 .nf-k .c,body.v2.p2 .nf-par .c{font:500 11px "IBM Plex Mono",monospace;color:var(--ink-faint);margin-left:2px}
body.v2.p2 .nf-k:hover,body.v2.p2 .nf-par:hover,body.v2.p2 .nf-all:hover{border-color:var(--blue);color:var(--blue)}
body.v2.p2 .nf-par{font-weight:600;color:var(--ink);justify-self:start}
body.v2.p2 .nf-k.on,body.v2.p2 .nf-par.on{background:var(--blue);border-color:var(--blue);color:#fff}
body.v2.p2 .nf-k.on .c,body.v2.p2 .nf-par.on .c,body.v2.p2 .nf-k.on i{color:#fff;opacity:.75}
body.v2.p2 .nf-par.part{background:rgba(1,52,170,.08);border-color:var(--blue);color:var(--blue)}
body.v2.p2 .nf-all.on{background:var(--ink);border-color:var(--ink);color:#fff}
body.v2.p2 .nf-k.z{opacity:.38;cursor:default}
body.v2.p2 .nf-k.z:hover{border-color:var(--edge2);color:var(--body)}
body.v2.p2 .nf-k:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.9}
body.v2.p2 .nf-k.g-core:not(.on):before{background:var(--g-core)}body.v2.p2 .nf-k.g-s:not(.on):before{background:var(--g-s)}body.v2.p2 .nf-k.g-ss:not(.on):before{background:var(--g-ss)}body.v2.p2 .nf-k.g-oth:not(.on):before{background:var(--ink-faint)}
body.v2.p2 .nf-k.n-tech:not(.on):before{background:var(--n-tech)}body.v2.p2 .nf-k.n-prod:not(.on):before{background:var(--n-prod)}body.v2.p2 .nf-k.n-ind:not(.on):before{background:var(--n-ind)}body.v2.p2 .nf-k.n-pol:not(.on):before{background:var(--n-pol)}body.v2.p2 .nf-k.n-talent:not(.on):before{background:var(--n-talent)}body.v2.p2 .nf-k.n-oth:not(.on):before{background:var(--ink-faint)}
body.v2.p2 .nf-all:before,body.v2.p2 .nf-par:before{display:none}
body.v2.p2 .nf-foot{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--edge);padding:12px 0 14px;font-size:12px;color:var(--ink-faint)}
body.v2.p2 .nf-clr{border:0;background:none;color:var(--blue);font:500 12.5px "Noto Sans SC",sans-serif;cursor:pointer}
body.v2.p2 .nf{margin:26px 0 34px}
body.v2.p2 .nf em{font-style:normal}
body.v2.p2 .nf-and{display:block;width:max-content}
body.v2.p2 .nf{margin:26px 0 34px}
body.v2.p2 .nf em{font-style:normal}
body.v2.p2 .nf-and{display:block;width:max-content}
body.v2.p2 .p-nw{white-space:nowrap}
body.v2.p2 .mod.an.p-an{padding:0}

/* ===== tags are labels only ===== */
body.v2.p2 .dept-row button,body.v2.p2 .dept-row button:hover{cursor:default;pointer-events:none}
/* ===== tracking fade only when it scrolls ===== */
body.v2.p2 .p-win:after{display:none}
body.v2.p2 .p-win.p-scroll:after{display:block}
/* ===== toc follows the filter ===== */
body.v2.p2 .p-tocl a.f-off{display:none}
/* ===== dark theme ===== */
[data-theme=dark] body.v2.p2 .p-win,[data-theme=dark] body.v2.p2 .p-quotes .qwho,[data-theme=dark] body.v2.p2 .p-pc .pc-side{background:#18213A}
[data-theme=dark] body.v2.p2 .p-win:after{background:linear-gradient(rgba(24,33,58,0),#18213A)}
[data-theme=dark] body.v2.p2 .p-who small{color:#8C98B4}
[data-theme=dark] body.v2.p2 .p-p+.p-p{border-top-color:rgba(160,180,230,.14)}
[data-theme=dark] body.v2.p2 a.src.sd{background:rgba(140,170,240,.16);color:#9DB6F2}
[data-theme=dark] body.v2.p2 .p-bm{background:#3A5BC7}
[data-theme=dark] body.v2.p2 .nf-pill{background:rgba(140,170,240,.16);color:#9DB6F2}
/* ===== narrow screens ===== */
@media (max-width:920px){
  body.v2.p2 .p-head{padding:20px 22px 16px}
  body.v2.p2 .p-sig .mod-main{padding:0 22px 22px}
  body.v2.p2 .p-ahead{padding:18px 22px 14px}
  body.v2.p2 .p-an .p-bdi>.txt{padding:16px 22px 22px}
  body.v2.p2 .p-p{grid-template-columns:1fr;gap:2px}
  body.v2.p2 .p-wh{padding:14px 16px 4px}body.v2.p2 .p-sc{padding:0 16px 14px}
  body.v2.p2 .p-quotes .mod.q{grid-template-columns:1fr}
  body.v2.p2 .p-quotes .qwho{padding:14px 18px 6px}
  body.v2.p2 .p-quotes blockquote{padding:4px 18px 16px}
  body.v2.p2 .p-figs,body.v2.p2 .p-an .p-figs2{flex-direction:column;align-items:center}
  body.v2.p2 .p-figs a.fig:not(:only-child),body.v2.p2 .p-an .p-figs2 a.fig:not(:only-child){flex:none;width:100%;max-width:620px}
  body.v2.p2 .p-toc{width:min(86vw,320px)}
  body.v2.p2.p-tocopen .p-bm{right:min(86vw,320px)}
  body.v2.p2 .nf-g{grid-template-columns:1fr;gap:6px}
  body.v2.p2 .nf-row{grid-template-columns:1fr;gap:8px}
  body.v2.p2 .nf-and{margin-left:0}
  body.v2.p2 .nf-panel{padding:6px 16px 0}
}
@media (max-width:920px){
  body.v2.p2 .p-head,body.v2.p2 .p-ahead{position:relative}
  body.v2.p2 .p-head .mod-hd{padding-right:30px}
  body.v2.p2 .p-head .mod-hd .hr{display:none}
  body.v2.p2 .p-head .p-chev,body.v2.p2 .p-ahead .p-chev{position:absolute;right:12px;top:16px;margin:0}
  body.v2.p2 .p-bm{top:auto;bottom:88px;padding:12px 0 14px;width:26px}
}
@media (max-width:920px){
  body.v2.p2 .p-sh h2{white-space:nowrap}
  body.v2.p2 .p-sh .en{display:none}
}
/* ===== density (10-13 round 2): smaller type, tighter cards ===== */
body.v2.p2 h1.mast-title{font-size:32px}
body.v2.p2 .section-head h2{font-size:19px}
body.v2.p2 .mod-hd .ghost{font-size:18px}
body.v2.p2 .mod h3{font-size:17px;line-height:1.55}
body.v2.p2 .mod h3 .dek{font-size:14.5px;margin-top:1px}
body.v2.p2 .txt p{font-size:14.5px;line-height:1.85}
body.v2.p2 .p-sig .txt p{margin:0 0 12px}
body.v2.p2 .mod.pc .txt p,body.v2.p2 .mod.an .txt p{font-size:14px;line-height:1.85}
body.v2.p2 .mod.an h3{font-size:16px}
body.v2.p2 .mk-hd h3{font-size:15.5px}
body.v2.p2 .mk-list li{font-size:14px;line-height:1.8;padding:13px 0}
body.v2.p2 .p-head{padding:18px 38px 14px}
body.v2.p2 .p-head .mod-hd{margin-bottom:8px}
body.v2.p2 .p-meta{font-size:11.5px;margin-top:4px}
body.v2.p2 .p-meta em{font-size:12px}
body.v2.p2 .p-sig .mod-main{padding:0 38px 24px}
body.v2.p2 .p-sig .txt{margin-top:18px}
body.v2.p2 .p-ahead{padding:18px 38px 14px}
body.v2.p2 .p-an .p-bdi>.txt{padding:16px 38px 22px}
body.v2.p2 .p-chev{width:24px;height:24px}
body.v2.p2 .mod.p-card:not(.open){margin-bottom:10px}
body.v2.p2 .p-wh{padding:13px 20px 4px}
body.v2.p2 .p-sc{padding:0 20px 14px;max-height:270px}
body.v2.p2 .p-p{grid-template-columns:180px minmax(0,1fr);gap:16px;padding:10px 0}
body.v2.p2 .p-who b{font-size:13px}
body.v2.p2 .p-who small{font-size:11.5px}
body.v2.p2 .p-say{font-size:13.5px;line-height:1.8}
body.v2.p2 .p-quotes .mod.q{grid-template-columns:220px minmax(0,1fr)}
body.v2.p2 .p-quotes .qwho{padding:14px 20px 12px 26px}
body.v2.p2 .p-quotes .qwho .nm{font-size:13px}
body.v2.p2 .p-quotes .qwho .role{font-size:11.5px;margin:1px 0 6px}
body.v2.p2 .p-quotes blockquote{padding:14px 26px 12px;font-size:14px;line-height:1.8}
body.v2.p2 .dept-row .tg button{font-size:11.5px}
/* tags: the second (field) group has no grey capsule, only coloured dots */
body.v2.p2 .dept-row .tg-n{background:none;box-shadow:none}
body.v2.p2 .dept-row.sm .tg-n{box-shadow:none}
body.v2.p2 .dept-row .tg-n button{padding-left:4px;padding-right:6px}
body.v2.p2 .dept-row .tg-n button+button{box-shadow:none;padding-left:6px}

/* ===== round 3 (10-13): title-only cards, tag style 1, aligned filter ===== */
body.v2.p2 .p-head{display:grid;grid-template-columns:34px minmax(0,1fr) 24px;gap:10px;align-items:center;padding:16px 30px 16px 34px}
body.v2.p2 .p-no{font:600 16px/1 "IBM Plex Mono",monospace;color:var(--blue);letter-spacing:-.02em}
body.v2.p2 .p-head h3{margin:0}
body.v2.p2 .p-head .p-chev{margin:0}
body.v2.p2 .p-sig .mod-main{padding:0 38px 24px 78px}
body.v2.p2 .p-tagrow{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0;padding-top:16px}
body.v2.p2 .p-tagrow .dept-row{margin:0}
body.v2.p2 .p-date{margin-left:auto;font:12px "IBM Plex Mono",monospace;letter-spacing:.04em;color:var(--ink-faint)}
body.v2.p2 .p-sig .txt{margin-top:12px}
body.v2.p2 .p-ahead{display:grid;grid-template-columns:minmax(0,1fr) 24px;gap:10px;align-items:center;padding:16px 30px 16px 38px}
body.v2.p2 .p-ahead h3{margin:0}
body.v2.p2 .p-an .an-hd.p-tagrow{padding-top:0;margin-bottom:10px}
body.v2.p2 .p-an .an-src{font-weight:600}
/* tag style 1: small tinted blocks, colour by department family; fields in one neutral outline */
body.v2.p2 .dept-row{gap:6px}
body.v2.p2 .dept-row .tsep{display:none}
body.v2.p2 .dept-row .tg,body.v2.p2 .dept-row.sm .tg{background:none!important;box-shadow:none!important;border-radius:0;overflow:visible;display:inline-flex;gap:6px}
body.v2.p2 .dept-row .tg button,body.v2.p2 .dept-row .tg button+button{display:inline-flex;align-items:center;gap:5px;height:22px;padding:0 8px!important;border-radius:5px;box-shadow:none!important;font-size:11.5px;font-weight:500;line-height:1}
body.v2.p2 .dept-row .tg button::before{display:none}
body.v2.p2 .dept-row .tg button i{font:500 10px "IBM Plex Mono",monospace;opacity:.7}
body.v2.p2 .dept-row .g-core button{background:#E8EFF8;color:#1F4E8C}
body.v2.p2 .dept-row .g-s button{background:#E6F2EA;color:#25653F}
body.v2.p2 .dept-row .g-ss button{background:#FBEFE3;color:#9A5418}
body.v2.p2 .dept-row .g-oth button{background:#F1F2F4;color:#585E6B}
body.v2.p2 .dept-row .tg-n button{background:transparent;color:#585E6B;box-shadow:inset 0 0 0 1px rgba(16,24,40,.14)!important}
[data-theme=dark] body.v2.p2 .dept-row .g-core button{background:rgba(127,174,230,.14);color:#9CC0EE}
[data-theme=dark] body.v2.p2 .dept-row .g-s button{background:rgba(124,195,155,.14);color:#93D0AE}
[data-theme=dark] body.v2.p2 .dept-row .g-ss button{background:rgba(227,160,102,.14);color:#EBB487}
[data-theme=dark] body.v2.p2 .dept-row .tg-n button{color:#A9AFBA;box-shadow:inset 0 0 0 1px rgba(255,255,255,.16)!important}
/* filter panel: label | all | options, both rows aligned */
body.v2.p2 .nf-row{grid-template-columns:44px 64px minmax(0,1fr);gap:12px;padding:16px 0}
body.v2.p2 .nf-row+.nf-row{border-top:1px solid var(--edge)}
body.v2.p2 .nf-and,body.v2.p2 .nf-foot{display:none}
body.v2.p2 .nf-panel{padding:4px 26px}
body.v2.p2 .nf-g{grid-template-columns:96px minmax(0,1fr);gap:10px}
body.v2.p2 .nf-g:last-child{margin-bottom:0}
body.v2.p2 .nf-par{width:96px;justify-content:space-between}
body.v2.p2 .nf-k:before{display:none}
body.v2.p2 .nf-par.z{opacity:.38;cursor:default}
body.v2.p2 .nf-clr{border:0;background:none;padding:0 4px;font:500 12.5px "Noto Sans SC",sans-serif;color:var(--blue);cursor:pointer}
@media (max-width:920px){
  body.v2.p2 .p-head{padding:14px 16px 14px 18px;grid-template-columns:28px minmax(0,1fr) 22px}
  body.v2.p2 .p-head .p-chev{position:static}
  body.v2.p2 .p-sig .mod-main{padding:0 18px 20px}
  body.v2.p2 .p-ahead{padding:14px 16px 14px 18px}
  body.v2.p2 .p-ahead .p-chev{position:static}
  body.v2.p2 .nf-row{grid-template-columns:1fr}
}

/* ===== round 4 (10-13) ===== */
/* field tags: every tag keeps its outline (the 2nd one used to lose it) */
body.v2.p2 .dept-row .tg-n button,body.v2.p2 .dept-row .tg-n button+button,body.v2.p2 .dept-row.sm .tg-n button+button{box-shadow:inset 0 0 0 1px rgba(16,24,40,.14)!important}
[data-theme=dark] body.v2.p2 .dept-row .tg-n button,[data-theme=dark] body.v2.p2 .dept-row .tg-n button+button{box-shadow:inset 0 0 0 1px rgba(255,255,255,.16)!important}
/* tags wrap instead of running past the edge */
body.v2.p2 .dept-row,body.v2.p2 .dept-row .tg,body.v2.p2 .dept-row.sm .tg{flex-wrap:wrap;white-space:normal;max-width:100%}
body.v2.p2 .dept-row .tg button{white-space:nowrap}
/* tracking: same type size as the story, slimmer name column */
body.v2.p2 .p-p{grid-template-columns:118px minmax(0,1fr);gap:14px}
body.v2.p2 .p-who b{font-size:14px}
body.v2.p2 .p-say{font-size:14.5px;line-height:1.85}
body.v2.p2 .p-wh{padding:13px 18px 4px}
body.v2.p2 .p-sc{padding:0 18px 14px}
/* insights: one card per person, tags at the bottom-right of each quote */
body.v2.p2 .p-quotes{background:none;box-shadow:none;border-radius:0;overflow:visible;margin-bottom:24px}
body.v2.p2 .p-person{display:grid;grid-template-columns:190px minmax(0,1fr);margin:0 0 10px;overflow:hidden;border-radius:14px}
body.v2.p2 .p-person.f-off{display:none}
body.v2.p2 .p-pwho{background:#F4F7FD;padding:16px 18px 14px 26px}
body.v2.p2 .p-pwho b{display:block;font-size:14px;font-weight:500;color:var(--ink);line-height:1.5}
body.v2.p2 .p-pwho small{display:block;font-size:11.5px;color:var(--ink-faint);line-height:1.5;margin-top:2px}
body.v2.p2 .p-plist .mod.q{display:block;margin:0;box-shadow:none;border-radius:0;background:none;padding:14px 24px 10px;transform:none!important}
body.v2.p2 .p-plist .mod.q+.mod.q{border-top:1px solid var(--edge)}
body.v2.p2 .p-plist blockquote{padding:0;margin:0;font-size:14px;line-height:1.8}
body.v2.p2 .p-qtags{display:flex;justify-content:flex-end;margin-top:6px}
body.v2.p2 .p-qtags .dept-row{justify-content:flex-end}
[data-theme=dark] body.v2.p2 .p-pwho{background:#18213A}
@media (max-width:920px){
  body.v2.p2 .p-person{grid-template-columns:1fr}
  body.v2.p2 .p-pwho{padding:12px 18px 8px}
  body.v2.p2 .p-plist .mod.q{padding:12px 18px 10px}
  body.v2.p2 .p-p{grid-template-columns:1fr;gap:2px}
}
/* market groups fold like cards */
body.v2.p2 .mod.mk.p-mk{padding:0}
body.v2.p2 .p-mk .mk-hd{display:flex;align-items:center;gap:10px;padding:16px 30px 16px 34px;margin:0;border:0;cursor:pointer}
body.v2.p2 .p-mk .mk-hd .p-chev{margin-left:auto}
body.v2.p2 .p-mk.open .mk-hd .p-chev{transform:rotate(180deg);color:var(--blue)}
body.v2.p2 .p-mk .mk-list{padding:0 34px 10px;margin:0;border-top:1px solid var(--edge)}
body.v2.p2 .p-mk .mk-hd{box-shadow:none}
/* ===== round 5: podcast as a voice inside Frontier Insights ===== */
body.v2.p2 .p-pod .p-pwho b+small+b{margin-top:10px}
body.v2.p2 .p-podk{display:inline-block;margin-top:10px;font:500 11px "IBM Plex Mono",monospace;color:var(--blue);letter-spacing:.04em}
body.v2.p2 .p-podq{padding:14px 24px 10px}
body.v2.p2 .p-podq h3{font-family:"Noto Sans SC",sans-serif;font-weight:600;font-size:14.5px;line-height:1.6;margin:0 0 6px;color:var(--ink)}
body.v2.p2 .p-podq .txt{margin:0}
body.v2.p2 .p-podq .txt p{font-size:14px;line-height:1.8;margin:0 0 8px}
body.v2.p2 .p-podq .note{color:var(--ink-faint)}
@media (max-width:920px){body.v2.p2 .p-podq{padding:12px 18px 10px}}
/* collapsed modules stack tightly */
body.v2.p2 .p-sh.shut{margin-bottom:0}
body.v2.p2 .p-sec.shut+.p-sh{margin-top:22px}
body.v2.p2 .p-sec.shut .p-seci{padding:0}
/* ===== round 6 (10-13): one grid, one type scale, one palette ===== */
/* grid: every card has 34px inner left / 30px inner right; numbered titles start 44px later */
body.v2.p2{--g-core:#1F4E8C;--g-s:#25653F;--g-ss:#9A5418;--p-tint:#F4F7FD}
[data-theme=dark] body.v2.p2{--g-core:#9CC0EE;--g-s:#93D0AE;--g-ss:#EBB487;--p-tint:#18213A}
body.v2.p2 .p-head{padding:16px 30px 16px 34px}
body.v2.p2 .p-sig .mod-main{padding:0 30px 24px 78px}
body.v2.p2 .p-ahead{grid-template-columns:minmax(0,1fr) 24px;padding:16px 30px 16px 34px}
body.v2.p2 .p-an .p-bdi>.txt{padding:16px 30px 22px 34px}
body.v2.p2 .p-mk .mk-hd{padding:16px 30px 16px 34px}
body.v2.p2 .p-mk .mk-list{padding:0 30px 8px 34px}
body.v2.p2 .p-pwho{padding:16px 18px 14px 34px;background:var(--p-tint)}
body.v2.p2 .p-plist .mod.q,body.v2.p2 .p-podq{padding:14px 30px 10px 24px}
body.v2.p2 .p-win,body.v2.p2 .p-quotes .qwho,body.v2.p2 .p-pc .pc-side{background:var(--p-tint)}
body.v2.p2 .p-win:after{background:linear-gradient(transparent,var(--p-tint))}
/* section heads: title on the 34px line, chevron sits in the gutter, right items on the 30px line */
body.v2.p2 .section-head.p-sh{position:relative;padding-left:34px;padding-right:30px}
body.v2.p2 .p-sh .p-schev{position:absolute;left:4px;top:50%;margin:-12px 0 0}
body.v2.p2 .p-sh.shut .p-schev{transform:rotate(-90deg)}
body.v2.p2 .p-sh-all{margin-left:16px}
/* type scale: 32 / 19 / 17 / 14.5 / 12.5 / 11.5 */
body.v2.p2 .txt p,body.v2.p2 .mod.an .txt p,body.v2.p2 .mk-list li,body.v2.p2 .p-plist blockquote,body.v2.p2 .p-podq .txt p,body.v2.p2 .p-say{font-size:14.5px;line-height:1.85}
body.v2.p2 .mod.an h3,body.v2.p2 .mk-hd h3{font-size:17px;line-height:1.55}
body.v2.p2 .p-podq h3{font-size:14.5px;font-weight:600}
body.v2.p2 .mk-list li b.nm,body.v2.p2 .mk-list li .nm{font-weight:600}
body.v2.p2 .p-pwho b,body.v2.p2 .p-who b{font-size:14.5px;font-weight:600}
body.v2.p2 .p-pwho small,body.v2.p2 .p-who small{font-size:12.5px;color:var(--ink-faint)}
body.v2.p2 .p-wh span{font-size:12.5px;color:var(--ink-soft)}
body.v2.p2 .p-date{font-size:12px}
body.v2.p2 .an-hd .an-src{font-size:12.5px}
body.v2.p2 .mk-hd .n,body.v2.p2 .section-head .count{font-size:12px}
/* collapsed cards: quiet hover, visible focus */
body.v2.p2 .p-hit{transition:background .2s}
body.v2.p2 .p-card:not(.open) .p-hit:hover{background:#FAFBFD}
[data-theme=dark] body.v2.p2 .p-card:not(.open) .p-hit:hover{background:rgba(255,255,255,.03)}
body.v2.p2 .p-hit:focus-visible,body.v2.p2 .p-sh:focus-visible{outline:2px solid var(--blue);outline-offset:-2px;border-radius:14px}
body.v2.p2 .p-hit:focus:not(:focus-visible),body.v2.p2 .p-sh:focus:not(:focus-visible){outline:none}
/* an open long card keeps its title bar in view while reading */
body.v2.p2 .p-card{overflow:clip}
body.v2.p2 .p-card.open>.p-head,body.v2.p2 .p-card.open>.p-ahead{position:sticky;top:48px;z-index:4;background:var(--card);box-shadow:0 1px 0 var(--edge)}
body.v2.p2.peek .p-card.open>.p-head,body.v2.p2.peek .p-card.open>.p-ahead{top:48px}
@media (max-width:920px){
  body.v2.p2 .p-head,body.v2.p2 .p-ahead,body.v2.p2 .p-mk .mk-hd{padding:14px 16px 14px 18px}
  body.v2.p2 .p-sig .mod-main{padding:0 16px 20px 18px}
  body.v2.p2 .p-an .p-bdi>.txt{padding:14px 16px 20px 18px}
  body.v2.p2 .p-mk .mk-list{padding:0 16px 8px 18px}
  body.v2.p2 .p-pwho{padding:12px 16px 8px 18px}
  body.v2.p2 .p-plist .mod.q,body.v2.p2 .p-podq{padding:12px 16px 10px 18px}
  body.v2.p2 .section-head.p-sh{padding-left:30px;padding-right:4px}
  body.v2.p2 .p-sh .p-schev{left:0}
}
body.v2.p2 .section-head.p-sh{padding-left:32px;padding-right:28px}
body.v2.p2 .p-ahead .p-chev,body.v2.p2 .p-mk .mk-hd .p-chev{margin:0}
body.v2.p2 .p-mk .mk-hd .p-chev{margin-left:auto}
body.v2.p2 .p-seci,body.v2.p2 .p-bdi{overflow:clip}
@media (max-width:920px){body.v2.p2 .mod h3,body.v2.p2 .mod.an h3,body.v2.p2 .mk-hd h3{font-size:15.5px}}

/* ===== search (v6.11) ===== */
body.v2.p2 .sq-box{position:relative;flex:0 1 340px;min-width:200px}
body.v2.p2 .sq-field{display:flex;align-items:center;gap:8px;height:34px;padding:0 10px 0 13px;border-radius:999px;background:var(--card);box-shadow:var(--shadow-sm);color:var(--ink-faint);cursor:text;transition:box-shadow .2s,color .2s}
body.v2.p2 .sq-field svg{width:14px;height:14px;flex:none}
body.v2.p2 .sq-field input{flex:1;min-width:0;height:100%;border:0;outline:0;background:none;font:13.5px "Noto Sans SC",sans-serif;color:var(--ink);-webkit-appearance:none;appearance:none}
body.v2.p2 .sq-field input::placeholder{color:var(--ink-faint)}
body.v2.p2 .sq-field input::-webkit-search-cancel-button{display:none}
body.v2.p2 .sq-field kbd{font:500 11px "IBM Plex Mono",monospace;color:var(--ink-faint);border:1px solid var(--edge2);border-radius:5px;padding:0 6px;line-height:18px}
body.v2.p2 .sq-x{display:none;width:20px;height:20px;border:0;border-radius:50%;background:rgba(16,24,40,.06);color:var(--ink-soft);font-size:13px;line-height:20px;cursor:pointer;padding:0}
body.v2.p2 .sq-box.has .sq-x{display:block}
body.v2.p2 .sq-box.has kbd{display:none}
body.v2.p2 .sq-field:focus-within{box-shadow:0 0 0 1.5px var(--blue);color:var(--blue)}
body.v2.p2 .sq-pop{position:absolute;left:0;right:0;top:40px;z-index:30;display:none;background:var(--card);border-radius:12px;box-shadow:var(--shadow-sm),0 14px 30px -12px rgba(16,24,40,.25);padding:6px}
body.v2.p2 .sq-box.pop .sq-pop{display:block}
body.v2.p2 .sq-all{display:flex;justify-content:space-between;align-items:center;gap:10px;width:100%;border:0;background:none;border-radius:8px;padding:9px 10px;font:13px "Noto Sans SC",sans-serif;color:var(--ink);cursor:pointer;text-align:left}
body.v2.p2 .sq-all:hover{background:var(--rail);color:var(--blue)}
body.v2.p2 .sq-all-n{font:500 11.5px "IBM Plex Mono",monospace;color:var(--ink-faint);white-space:nowrap}
body.v2.p2 mark.sq{background:#DCE6FB;color:inherit;border-radius:3px;padding:0 1px;box-shadow:0 0 0 1px #DCE6FB}
body.v2.p2 .q-off{display:none!important}
body.v2.p2 .sq-n{position:absolute;right:62px;top:50%;margin-top:-9px;font:600 11px/18px "IBM Plex Mono",monospace;color:var(--blue);background:rgba(1,52,170,.08);border-radius:999px;padding:0 7px}
body.v2.p2 .p-card:not(.open)>.p-head,body.v2.p2 .p-card:not(.open)>.p-ahead{position:relative}
body.v2.p2 .p-card.open .sq-n{display:none}
/* global search */
body.v2.p2 .gs-btn{display:inline-flex;align-items:center;gap:8px;height:30px;padding:0 8px 0 11px;margin-right:12px;border:1px solid var(--edge2);border-radius:999px;background:var(--card);color:var(--ink-faint);font:13px "Noto Sans SC",sans-serif;cursor:pointer;transition:border-color .2s,color .2s}
body.v2.p2 .gs-btn svg{width:13px;height:13px}
body.v2.p2 .gs-btn:hover{border-color:var(--blue);color:var(--blue)}
body.v2.p2 .gs-btn kbd,body.v2.p2 .gs-field kbd{font:500 10.5px "IBM Plex Mono",monospace;color:var(--ink-faint);border:1px solid var(--edge2);border-radius:5px;padding:0 5px;line-height:17px}
body.v2.p2 .gs-ov{position:fixed;inset:0;z-index:300;display:none;align-items:flex-start;justify-content:center;padding-top:12vh;background:rgba(15,20,32,.28);backdrop-filter:blur(3px)}
body.v2.p2 .gs-ov.on{display:flex;animation:gsin .18s ease}
@keyframes gsin{from{opacity:0}to{opacity:1}}
body.v2.p2 .gs-pan{width:min(640px,92vw);max-height:70vh;display:flex;flex-direction:column;background:var(--card);border-radius:16px;box-shadow:0 24px 60px -18px rgba(16,24,40,.45),0 0 0 1px var(--edge);overflow:hidden;animation:gsup .22s cubic-bezier(.2,.7,.2,1)}
@keyframes gsup{from{transform:translateY(-8px)}to{transform:none}}
body.v2.p2 .gs-field{display:flex;align-items:center;gap:10px;padding:0 18px;height:56px;border-bottom:1px solid var(--edge);color:var(--blue)}
body.v2.p2 .gs-field svg{width:17px;height:17px;flex:none}
body.v2.p2 .gs-field input{flex:1;min-width:0;border:0;outline:0;background:none;font:16px "Noto Sans SC",sans-serif;color:var(--ink);-webkit-appearance:none;appearance:none}
body.v2.p2 .gs-field input::-webkit-search-cancel-button{display:none}
body.v2.p2 .gs-meta{padding:10px 20px 4px;font-size:12px;color:var(--ink-faint)}
body.v2.p2 .gs-meta b{font:600 12.5px "IBM Plex Mono",monospace;color:var(--ink)}
body.v2.p2 .gs-list{overflow-y:auto;padding:0 10px 12px;scrollbar-width:thin}
body.v2.p2 .gs-d{position:sticky;top:0;background:var(--card);padding:12px 10px 6px;font:600 12px "Noto Sans SC",sans-serif;color:var(--ink);z-index:1}
body.v2.p2 .gs-d i{font-style:normal;font-weight:500;font-size:11px;color:var(--blue);background:rgba(1,52,170,.08);border-radius:999px;padding:1px 7px;margin-left:8px}
body.v2.p2 .gs-r{display:grid;grid-template-columns:64px minmax(0,1fr);column-gap:10px;padding:8px 10px;border-radius:10px;color:var(--body);border:0}
body.v2.p2 .gs-r em{grid-row:1/3;font-style:normal;font-size:11.5px;color:var(--ink-faint);line-height:1.7}
body.v2.p2 .gs-r .t{font-size:14px;line-height:1.6;color:var(--ink);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
body.v2.p2 .gs-r .s{grid-column:2;font-size:12.5px;line-height:1.6;color:var(--ink-soft);display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}
body.v2.p2 .gs-r:hover,body.v2.p2 .gs-r.on{background:var(--rail)}
body.v2.p2 .gs-r.on{box-shadow:inset 2px 0 0 var(--blue)}
body.gs-lock{overflow:hidden}
@media (max-width:920px){body.v2.p2 .gs-btn span,body.v2.p2 .gs-btn kbd{display:none}body.v2.p2 .gs-btn{padding:0 8px;margin-right:6px}body.v2.p2 .gs-ov{padding-top:8vh}}
body.v2.p2 .sq-empty{display:none;padding:28px 34px;margin:0 0 24px;text-align:left}
body.v2.p2 .sq-empty.on{display:block}
body.v2.p2 .sq-empty p{margin:0 0 14px;font-size:14.5px;color:var(--ink)}
body.v2.p2 .sq-empty div{display:flex;gap:10px}
body.v2.p2 .sq-empty button{height:32px;padding:0 14px;border-radius:999px;border:1px solid var(--edge2);background:var(--card);font:13px "Noto Sans SC",sans-serif;color:var(--ink);cursor:pointer}
body.v2.p2 .sq-empty .sq-e-all{background:var(--blue);border-color:var(--blue);color:#fff}
body.v2.p2 .sq-empty button:hover{border-color:var(--blue)}
[data-theme=dark] body.v2.p2 mark.sq{background:rgba(120,150,230,.32);box-shadow:none}
[data-theme=dark] body.v2.p2 .gs-ov{background:rgba(0,0,0,.5)}
@media (max-width:920px){body.v2.p2 .sq-box{flex:1 1 100%;order:3}body.v2.p2 .sq-field kbd{display:none}}
@media (max-width:520px){body.v2.p2 .topbar{gap:6px}body.v2.p2 .topbar .gs-btn,body.v2.p2 .topbar .lab-link{margin-right:0}body.v2.p2 .topbar .tabs:empty{display:none}}
/* ===== audit fixes (v6.11.2) ===== */
body.v2.p2 .p-scrim{display:none}
@media (max-width:920px){body.v2.p2.p-tocopen .p-scrim{display:block;position:fixed;inset:48px 0 0 0;z-index:59;background:rgba(15,20,32,.28)}}
/* ===== phone (v6.12.4) ===== */
@media (max-width:920px){
  body.v2.p2 .sidebar{background:var(--card);width:min(300px,84vw);border-right:0;z-index:58}
  body.v2.p2.side-open .sidebar{box-shadow:0 12px 40px rgba(15,23,42,.24)}
  body.v2.p2 .p-scrim{position:fixed;left:0;right:0;top:48px;bottom:0;z-index:57;background:rgba(15,23,42,.32);opacity:0;pointer-events:none;transition:opacity .25s}
  body.v2.p2.side-open .p-scrim{opacity:1;pointer-events:auto}
  body.v2.p2.side-open .p-bm{opacity:0;pointer-events:none}
  html.p-lock,html.p-lock body{overflow:hidden}
  body.v2.p2 .p-mnav{display:flex;flex-direction:column;gap:2px;padding:2px 0 14px;margin:0 0 16px;border-bottom:1px solid var(--edge)}
  body.v2.p2 .p-mnav a{display:block;padding:11px 12px;border:0;border-radius:10px;font:600 14.5px/1.3 "Noto Sans SC",sans-serif;color:var(--ink)}
  body.v2.p2 .p-mnav a.active{background:var(--blue-ghost);color:var(--blue)}
  body.v2.p2 .p-sc{max-height:none;overflow:visible}
  body.v2.p2 .p-win.p-scroll:after{display:none}
  body.v2.p2 .section-head{margin-top:44px}
  body.v2.p2 .nf+.section-head,body.v2.p2 #signals{margin-top:30px}
}
@media (min-width:921px){body.v2.p2 .p-mnav,body.v2.p2 .p-scrim{display:none}}
@media (max-width:600px){body.v2.p2 .topbar .tabs{display:none}}
/* touch: no hover tip, bigger hit areas that do not change the layout */
@media (hover:none),(pointer:coarse){
  body.v2.p2 a.src.sd .l{display:none}
  body.v2.p2 a.src.sd::after{content:"";position:absolute;left:-8px;right:-8px;top:-9px;bottom:-9px}
  body.v2.p2 .p-sh-all{position:relative}
  body.v2.p2 .p-sh-all::after{content:"";position:absolute;left:-8px;right:-8px;top:-13px;bottom:-13px}
}
/* ===== v3 daily (10-20 on): group lines, short-item card, folded opinions ===== */
body.v2.p2 .grp-line{display:flex;align-items:center;gap:10px;margin:34px 2px 14px}
body.v2.p2 .p-seci>.grp:first-child .grp-line{margin-top:4px}
body.v2.p2 .grp-line b{font:600 14px/1.2 "Noto Sans SC",sans-serif;color:var(--blue)}   /* user 10-20: group names in blue */
body.v2.p2 .grp-line span{font:500 11.5px/1 "IBM Plex Mono",monospace;color:var(--ink-faint)}
body.v2.p2 .grp-line::after{content:"";flex:1;height:1px;background:var(--edge2)}
body.v2.p2 .mod.mk0{margin:0 0 20px}
body.v2.p2 .mk0 .mk-list{padding:4px 30px 6px 34px}
body.v2.p2 .mod.pq{margin:0 0 20px;overflow:hidden}
body.v2.p2 .pq-hd{display:flex;align-items:baseline;gap:14px;padding:18px 30px 18px 34px;cursor:pointer}
body.v2.p2 .pq-hd b{flex:none;font:900 15.5px/1.4 "Noto Serif SC",serif;color:var(--ink)}
body.v2.p2 .pq-who{flex:1;min-width:0;font-size:13px;line-height:1.5;color:var(--ink-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
body.v2.p2 .pq-n{flex:none;font:500 12px/1 "IBM Plex Mono",monospace;color:var(--blue)}
body.v2.p2 .pq-hd::after{content:"";flex:none;width:7px;height:7px;margin-left:4px;border-right:1.6px solid var(--ink-faint);border-bottom:1.6px solid var(--ink-faint);transform:translateY(-3px) rotate(45deg);transition:transform .25s}
body.v2.p2 .pq:not(.shut) .pq-hd::after{transform:translateY(1px) rotate(-135deg)}
body.v2.p2 .pq-hd:hover b{color:var(--blue)}
body.v2.p2 .pq.shut>.quotes{display:none}
body.v2.p2 .pq>.quotes{border-top:1px solid var(--edge);margin:0;padding:0}
body.v2.p2 .pq .p-person{box-shadow:none;border-radius:0;margin:0;background:none}
body.v2.p2 .pq .p-person+.p-person{border-top:1px solid var(--edge)}
body.v2.p2 .g-off{display:none!important}
body.v2.p2 .p-tocl .t0{padding:12px 12px 4px;font:500 11.5px/1.3 "Noto Sans SC",sans-serif;color:var(--ink-faint);letter-spacing:.04em}
@media (max-width:920px){
  body.v2.p2 .mk0 .mk-list{padding:4px 18px 6px 18px}
  body.v2.p2 .pq-hd{padding:16px 18px;gap:10px}
  body.v2.p2 .pq-who{white-space:normal}
  body.v2.p2 .p-sh:has(.count[data-v3]){flex-wrap:wrap;row-gap:6px}
  body.v2.p2 .p-sh .count[data-v3]{order:10;flex-basis:100%;margin-left:0;font-size:11.5px}
  body.v2.p2 .p-sh:has(.count[data-v3]) .p-sh-all{order:5;margin-left:auto}
}

body.v2.p2 .gs-btn{white-space:nowrap;flex-shrink:0}
@media (max-width:1180px){body.v2.p2 .lab-link.pub .t{display:none}}
/* v3 podcast cards (10-21): original English title under the Chinese one */
body.v2.p2 .mod.pc .pc-en{margin:4px 0 10px;font-size:12.5px;line-height:1.6;color:#7A86A0;font-style:italic}
/* figure captions (upstream HTML figcaption, 10-22) */
body.v2.p2 .figcap{max-width:620px;margin:-12px auto 22px;font-size:12px;line-height:1.7;color:#7A86A0;text-align:center}
/* phone menu scrim was never shown (display stayed none since v6.12.4), so a tap outside the menu hit the page instead of closing it (10-23) */
@media (max-width:920px){body.v2.p2.side-open .p-scrim{display:block}}
