@font-face{font-family:"Portal Inter";src:url("assets/fonts/InterVariable.woff2") format("woff2");font-style:normal;font-weight:100 900;font-display:swap}
@font-face{font-family:"Portal Inter";src:url("assets/fonts/InterVariable-Italic.woff2") format("woff2");font-style:italic;font-weight:100 900;font-display:swap}
@font-face{font-family:"Portal Han UI";src:url("assets/fonts/PortalHanUI.woff2") format("woff2");font-style:normal;font-weight:250 900;font-display:swap}
@font-face{font-family:"Portal Han Full";src:url("assets/fonts/SourceHanSansCN-VF.woff2") format("woff2");font-style:normal;font-weight:250 900;font-display:swap;unicode-range:U+20-7E,U+A0-103,U+110-113,U+11A-11B,U+128-12B,U+143-144,U+147-148,U+14C-14F,U+152-153,U+168-16D,U+192,U+1A0-1A1,U+1AF-1B0,U+1CD-1DC,U+1F8-1F9,U+251,U+261,U+2BB,U+2C7,U+2C9-2CB,U+2D9,U+2EA-2EB,U+300-301,U+304,U+307,U+30C,U+391-3A1,U+3A3-3A9,U+3B1-3C9,U+401,U+410-44F,U+451,U+1E3E-1E3F,U+1EA0-1EF9,U+2002-2003,U+2010-2016,U+2018-201A,U+201C-201E,U+2020-2022,U+2025-2027,U+2030,U+2032-2033,U+2035,U+2039-203C,U+2042,U+2047-2049,U+2051,U+2074,U+20A9,U+20AB-20AC,U+20DD-20DE,U+2100,U+2103,U+2105,U+2109-210A,U+210F,U+2113,U+2116,U+2121-2122,U+2126-2127,U+212B,U+212E,U+2135,U+213B,U+2160-216B,U+2170-217B,U+2190-2199,U+21B8-21B9,U+21C4-21C6,U+21CB-21CC,U+21D0,U+21D2,U+21D4,U+21E6-21E9,U+21F5,U+2200,U+2202-2203,U+2205-220B,U+220F,U+2211-2213,U+2215,U+221A,U+221D-2220,U+2223,U+2225-222E,U+2234-2237,U+223D,U+2243,U+2245,U+2248,U+224C,U+2252,U+2260-2262,U+2264-2267,U+226A-226B,U+226E-226F,U+2272-2273,U+2276-2277,U+2282-2287,U+228A-228B,U+2295-2299,U+22A0,U+22A5,U+22BF,U+22DA-22DB,U+22EF,U+2305-2307,U+2312,U+2318,U+2329-232A,U+23B0-23B1,U+23BE-23CC,U+23CE,U+23DA-23DB,U+2423,U+2460-25AB,U+25B1-25B3,U+25B6-25B7,U+25BC-25BD,U+25C0-25C1,U+25C6-25CC,U+25CE-25D3,U+25E2-25E6,U+25EF,U+2600-2603,U+2605-2606,U+2609,U+260E-260F,U+2616-2617,U+261C-261F,U+262F,U+2640-2642,U+2660-266F,U+2672-267D,U+26A0,U+26BD-26BE,U+2702,U+2713,U+271A,U+273D,U+273F-2740,U+2756,U+2776-2793,U+27A1,U+2934-2935,U+29BF,U+29FA-29FB,U+2B05-2B07,U+2B1A,U+2B95,U+2E3A-2E3B,U+2E80-2E99,U+2E9B-2EF3,U+2F00-2FD5,U+2FF0-303F,U+3041-3096,U+3099-30FF,U+3105-312F,U+3131-3163,U+3165-318E,U+3190-31E5,U+31EF-321E,U+3220-332B,U+332D-4DBF,U+4E00-9FFF,U+F900-F903,U+F905-F906,U+F90B-F90C,U+F915,U+F917-F91A,U+F921,U+F92C-F92D,U+F92F,U+F931-F935,U+F937-F93A,U+F943,U+F947-F94A,U+F94E,U+F952-F953,U+F95E,U+F962-F967,U+F96E,U+F972,U+F974,U+F976,U+F979-F97B,U+F97E-F980,U+F984-F985,U+F98A-F98C,U+F98E,U+F993,U+F995,U+F998,U+F9AE,U+F9B3,U+F9B7,U+F9BB,U+F9BD-F9BE,U+F9C0,U+F9C5-F9C6,U+F9D0,U+F9D8-F9D9,U+F9DC-F9E0,U+F9E2-F9E4,U+F9E7,U+F9E9,U+F9F1,U+F9F4-F9F5,U+F9FA,U+F9FD,U+F9FF,U+FA02,U+FA05-FA08,U+FA0A,U+FA0C-FA0F,U+FA11,U+FA13-FA14,U+FA18,U+FA1F-FA21,U+FA23-FA24,U+FA27-FA29,U+FA2F,U+FA33-FA35,U+FA37-FA38,U+FA3A,U+FA47,U+FA49,U+FA4B,U+FA5D-FA5E,U+FB00-FB04,U+FE00-FE01,U+FE10-FE19,U+FE30-FE52,U+FE54-FE66,U+FE68-FE6B,U+FF01-FF9F,U+FFA1-FFBE,U+FFC2-FFC7,U+FFCA-FFCF,U+FFD2-FFD7,U+FFDA-FFDC,U+FFE0-FFE6,U+FFE8-FFEE,U+1F100-1F10C,U+1F110-1F16C,U+1F170-1F1AC,U+1F200-1F202,U+1F210-1F23B,U+1F240-1F248,U+1F250-1F251,U+20087,U+20089,U+200CC,U+20164,U+20628,U+20676,U+20CD0,U+2139A,U+21413,U+215D7,U+2298F,U+235CB,U+23C97-23C98,U+23E23,U+241FE,U+2420E,U+248E9,U+249DB,U+24A01,U+24A7D,U+24AC9,U+25532,U+25562,U+255A8,U+25AD7,U+25ED7,U+26221,U+2648D,U+26676,U+2677C,U+26B5C,U+26C21,U+278B2,U+27EAF,U+27FB7,U+27FF9,U+28408,U+28678,U+28695,U+287E0,U+28B49,U+28C47,U+28C4F,U+28C51,U+28C54,U+28E0F,U+28E99,U+2967F,U+29810,U+29F7E,U+29F83,U+29F8C,U+2A7DD,U+2A8FB,U+2A917,U+2AA30,U+2AA36,U+2AA58,U+2AFA2,U+2B127-2B128,U+2B137-2B138,U+2B1ED,U+2B300,U+2B363,U+2B36F,U+2B372,U+2B37D,U+2B404,U+2B410,U+2B413,U+2B461,U+2B4E7,U+2B4EF,U+2B4F6,U+2B4F9,U+2B50D-2B50E,U+2B536,U+2B5AE-2B5AF,U+2B5B3,U+2B5E7,U+2B5F4,U+2B61C-2B61D,U+2B626-2B628,U+2B62A,U+2B62C,U+2B695-2B696,U+2B6AD,U+2B6ED,U+2B7A9,U+2B7C5,U+2B7E6,U+2B7F9,U+2B7FC,U+2B806,U+2B80A,U+2B81C,U+2B8B8,U+2BAC7,U+2BB5F,U+2BB62,U+2BB7C,U+2BB83,U+2BC1B,U+2BD77,U+2BD87,U+2BDF7,U+2BE29,U+2C029-2C02A,U+2C0A9,U+2C0CA,U+2C1D5,U+2C1D9,U+2C1F9,U+2C27C,U+2C288,U+2C2A4,U+2C317,U+2C35B,U+2C361,U+2C364,U+2C488,U+2C494,U+2C497,U+2C542,U+2C613,U+2C618,U+2C621,U+2C629,U+2C62B-2C62D,U+2C62F,U+2C642,U+2C64A-2C64B,U+2C72C,U+2C72F,U+2C79F,U+2C7C1,U+2C7FD,U+2C8D9,U+2C8DE,U+2C8E1,U+2C8F3,U+2C907,U+2C90A,U+2C91D,U+2CA02,U+2CA0E,U+2CA7D,U+2CAA9,U+2CB29,U+2CB2D-2CB2E,U+2CB31,U+2CB38-2CB39,U+2CB3B,U+2CB3F,U+2CB41,U+2CB4A,U+2CB4E,U+2CB5A-2CB5B,U+2CB64,U+2CB69,U+2CB6C,U+2CB6F,U+2CB73,U+2CB76,U+2CB78,U+2CB7C,U+2CBB1,U+2CBBF-2CBC0,U+2CBCE,U+2CC56,U+2CC5F,U+2CCF5-2CCF6,U+2CCFD,U+2CCFF,U+2CD02-2CD03,U+2CD0A,U+2CD8B,U+2CD8D,U+2CD8F-2CD90,U+2CD9F-2CDA0,U+2CDA8,U+2CDAD-2CDAE,U+2CDD5,U+2CE18,U+2CE1A,U+2CE23,U+2CE26,U+2CE2A,U+2CE7C,U+2CE88,U+2CE93,U+2D544,U+2F878,U+2F884,U+2F8B6}
@font-face{font-family:"Portal Plex Mono";src:url("assets/fonts/IBMPlexMono-Regular.woff2") format("woff2");font-style:normal;font-weight:400;font-display:swap}
@font-face{font-family:"Portal Plex Mono";src:url("assets/fonts/IBMPlexMono-Medium.woff2") format("woff2");font-style:normal;font-weight:500;font-display:swap}
@font-face{font-family:"Portal Plex Mono";src:url("assets/fonts/IBMPlexMono-SemiBold.woff2") format("woff2");font-style:normal;font-weight:600 900;font-display:swap}
@font-face{font-family:"Portal Plex Mono";src:url("assets/fonts/IBMPlexMono-Italic.woff2") format("woff2");font-style:italic;font-weight:400;font-display:swap}

:root{
  --font-ui:"Portal Inter","Portal MiSans","Portal Han UI","Portal Han Full",-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;
  --font-code:"Portal Plex Mono","Portal Han UI","Portal Han Full",ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;
  --type-strong:#2e2938;--type-ink:#413a4c;--type-secondary:#696173;--type-muted:#84798e;
  --type-ui:14px;--type-reading:17px;--type-meta:12px;
}
body.experience{font-family:var(--font-ui);font-size:var(--type-ui);font-weight:400;line-height:1.65;color:var(--type-ink);font-optical-sizing:auto;font-synthesis:none}
body.experience :is(.lx-root,.mm-root,.ps-studio,.cv-code,.cv-toolbar,.ci-open-button){font-family:var(--font-ui)}
body.experience :is(button,input,select,textarea){font-family:inherit}
body.experience :is(h1,h2,h3,h4,h5,h6){font-weight:600!important;letter-spacing:0}
body.experience :is(strong,b){font-weight:600}
body.experience:not(.presentation) .page-topbar h1{font-size:28px!important;line-height:1.35!important;font-weight:600!important;letter-spacing:-.015em!important;color:var(--type-strong)!important}
body.experience:not(.presentation) .topbar-sub{font-size:14px!important;line-height:1.65!important;color:var(--type-secondary)!important}
body.experience:not(.presentation) .site-dock nav button{font-size:14px!important;font-weight:500!important}
body.experience :is(.topbar-actions .btn,.ci-open-button,.us-trigger,.lx-search-input){font-size:13px!important;font-weight:500}
body.experience .us-trigger{color:var(--type-secondary)!important}
body.experience :is(.lx-inspector,.mm-inspector,.dw-workspace,.ew-root,.cr-reader,.cp-practice){font-variant-numeric:lining-nums}
body.experience :is(.lx-overview-stats dd,.mm-metrics,.lx-year-label,.lx-year-count,.lx-row-meta,.dw-result-count){font-variant-numeric:lining-nums tabular-nums}

/* Indexes and compact controls share one readable UI hierarchy. */
body.experience .lx-row-text h3{font-size:15px!important;font-weight:500!important;line-height:1.5;color:var(--type-ink)}
body.experience .lx-row-text .lx-row-subtitle{font-size:13px;line-height:1.6;color:var(--type-secondary)}
body.experience :is(.lx-row-meta,.lx-row-meta .lx-row-biblio,.lx-count,.dw-entry-meta,.dw-reading-meta,.ew-reading-context){font-size:12px;color:var(--type-muted)}
body.experience :is(.lx-inspector-kicker,.lx-preview-meta,.lx-overview-range,.dw-entry-secondary){font-size:12px;color:var(--type-secondary)}
body.experience .lx-overview-heading h2{font-size:23px;font-weight:600;color:var(--type-strong)}
body.experience .lx-overview-heading p{font-size:14px;line-height:1.7;color:var(--type-secondary)}
body.experience .lx-overview-stats dt{font-size:12px;color:var(--type-muted)}
body.experience .lx-overview-stats dd{font-size:26px;font-weight:500}
body.experience :is(.lx-overview-topics h3,.lx-timeline-heading h3){font-size:14px;color:var(--type-secondary)}
body.experience :is(.lx-timeline-heading>span,.lx-year-count,.lx-year-label,.lx-zoom-value){font-size:12px;color:var(--type-muted)}
body.experience :is(.dw-entry h4,.mm-directory h4){font-size:15px;font-weight:500}
body.experience :is(.ftoc-title,.ftoc-scroll .ew-outline-item strong,.dw-outline button,.cw-outline button){font-size:13px!important;font-weight:500!important}
body.experience :is(.ftoc-scroll .ew-outline-item>span,.rw-control,.cv-code .cv-count){font-size:12px!important}
body.experience :is(.lx-svg,.mm-graph svg) text{font-family:var(--font-ui);font-weight:500}
body.experience .lx-topic-label-name{fill:#695c78;font-weight:400}
body.experience .lx-topic-label-count{fill:#8a7c98;font-weight:400}
body.experience .lx-topic-annotation.lx-topic-hover .lx-topic-label-name,
body.experience .lx-topic-annotation[aria-pressed="true"] .lx-topic-label-name{fill:var(--lx-topic)}

/* Reading uses the same family with a larger measure and calmer rhythm. */
body.experience :is(.dw-article,.cr-content,.ew-reader .evidence-source-body,.mm-lesson-fragment,.mm-prose){font-family:var(--font-ui);font-size:var(--type-reading);font-weight:400;line-height:1.85;color:var(--type-ink)}
body.experience :is(.dw-article,.cr-content,.ew-reader .evidence-source-body,.mm-lesson-fragment,.mm-prose) :is(p,li){font-size:inherit!important;line-height:1.85;color:inherit}
body.experience :is(.dw-article,.cr-content,.ew-reader .evidence-source-body,.mm-lesson-fragment) h2{font-size:24px!important;line-height:1.45!important;color:var(--type-strong)}
body.experience :is(.dw-article,.cr-content,.ew-reader .evidence-source-body,.mm-lesson-fragment) h3{font-size:20px!important;line-height:1.5;color:var(--type-strong)}
body.experience :is(.dw-article,.cr-content,.ew-reader .evidence-source-body,.mm-lesson-fragment) h4{font-size:18px!important;line-height:1.5;color:var(--type-strong)}
body.experience :is(.dw-article,.cr-content,.ew-reader .evidence-source-body,.mm-lesson-fragment) :is(th,td){font-size:14px!important;line-height:1.7;color:var(--type-ink)}
body.experience :is(.dw-article figcaption,.cr-content figcaption,.ew-claim-reference,.footnotes){font-size:12px!important;line-height:1.7;color:var(--type-muted)}
body.experience :is(.dw-article,.cr-content,.ew-reader .evidence-source-body) .footnotes p{font-size:13px!important}
body.experience :is(.dw-reading-head h1,.cw-course-head h2){font-size:28px!important;font-weight:600!important;line-height:1.4;letter-spacing:-.01em}
body.experience :is(.dw-reading-original,.cw-summary,.cp-summary){font-size:15px;line-height:1.8;color:var(--type-secondary)}

/* Code keeps its own family; KaTeX's individual math faces remain intact. */
body.experience :is(code,pre,.cv-code .cv-title,.cv-source,.cv-source code,.cr-script,.cr-code-file>summary,.ce-source){font-family:var(--font-code)!important}
body.experience :is(.cv-source,.cv-source code,.cr-script,.cr-script code,pre,pre code){font-size:14px!important;line-height:1.7!important;font-variant-ligatures:none}
body.experience :is(.cv-code .cv-title,.cr-code-file>summary){font-size:13px!important;font-weight:500}

@media(max-width:760px){
  body.experience:not(.presentation) .page-topbar h1{font-size:25px!important}
  body.experience :is(.dw-reading-head h1,.cw-course-head h2){font-size:25px!important}
  body.experience :is(.dw-article,.cr-content,.ew-reader .evidence-source-body,.mm-lesson-fragment,.mm-prose){font-size:16px}
  body.experience .lx-overview-heading h2{font-size:22px}
  body.experience .lx-overview-stats dt{font-size:11px}
  body.experience .lx-overview-stats dd{font-size:24px}
}
