/* ═══════════════════════════════════════════════════════════════
   南黎之风 · NANLI — 个人主页 v9 双主题双语样式系统
   夜间：深空黑 #05080F + 电光青 #3BD8FF + 霓虹粉 #FF5C9D（航天控制台 × 赛博朋克）
   白昼：Apple 式浅色 #FBFBFD / #1D1D1F（对标 Apple 官网的留白与精度）
   字体：楷体 display（书法血统保留）/ 系统无衬线 body / 等宽 mono 元数据
   纪律：奢侈极简的留白节奏 + 单一强调色纪律——青色为主、粉色点缀 ≤2/屏
   ═══════════════════════════════════════════════════════════════ */

@font-face{font-family:"NL Seal";src:url(data:font/ttf;base64,AAEAAAALAIAAAwAwT1MvMswBJD0AABN4AAAAVmNtYXD9cdw3AAAT0AAAAExnYXNw//8AAwAAFZAAAAAIZ2x5ZjO0FusAAAC8AAASJGhlYWTnjAh2AAATDAAAADZoaGVhKA//jwAAE1QAAAAkaG10eBwkAzIAABNEAAAADmxvY2EH1gzpAAATAAAAAAxtYXhwAB8IWQAAEuAAAAAgbmFtZRjLMr4AABQcAAABUnBvc3T/mgAyAAAVcAAAACAAAQHD/Y0OPAwBAQMAAAUGJScEJyYnJjc3Nic2JycmNzY3NjcXMjc2NzY3NzIxNjc2NzY3Njc2NzY3Njc2NzY3Jjc2JyY3NicmJyYHBgcGFxYXBhcXFgcWAwYHBgcGJSInJic3Jic0NSY3NjcmNzY1AicmNyY3NjU2JycmJyYHBwYHBgcHBhcWAwMHFgMCFxYXBhcWBwYHBgcnJyYnJicmJyYnJicmNzYnNicmNzY3NzY3Jjc2JyYnJicmBwcGBwYTEgcWFxYXFhcGFxYXFwQXFhcTBgcGBwYnMicGJycGJyYnBicmIwYHBhcWFxY3Nhc2FxY3Fjc3NhcWNzY3Nhc2FxY3NjcWNzc2FzY3NzY3JicmDTCy/v6I/v90hXYmDg8ECyAhKBUSF2cRDUYHBwcoBwYIBDF5YkSkRyQfAQEIBAICBB0EAwwSEQcaBQQKF242aBMTMhQDByAVFgwnLEMSKAEGif7pIiI1AgMiAgUCAQIJBwIYAgIIIQwNAxs+GBkhKSkDAwEoIhgHMwcIECQDAwMFDg4WEgcGFQwQ3057NDEPCgYBAxIGDAIBCx0EBQcCAwYEBgEGBiYDAhBAIR9VPwwGAgEhDwcHHwYGDGAdZiUBUJRSSgUCEwwYT5onWkphPYWtKTE+hzodORYKAWrFQ7ZbNS1mXjs9UVg9MTNWUxYrI1Kgoh9xTJvq/VBCNx0eBQUmqB64RQkIFQUGHjhhZi8ic6a5d1sFCAECAgIBDwMBBAcjHQE9tF3MBQkECAIGS+YjHB9BPRtz08dQuXY2MQkMddsgPDpbXU833/7YUY4FFckCAxtlaDJxESQPEQYGO44hFgEGT2JhTHd6DVRGVx0OEwIFAQEhHRkXHsv+rP6jJMH+xP7SUnRjJEtBFRMJBQJgKUZVMUMlYxwUKzFCoHY8XK6jNxMRryghDnF3QwMEMgoFCVZGPFj+3f7IpVXO13IUFJ+fMIgyyGQ4OP7vcE8GCh4BARAEBAYEAQEOCgQUOBgYgRgIAQEFCAQEFCMbHhAWGRQUAQISIQgIAQMjKQsNAgUBNjwHBoJKDgAABAL4/SQNHAxrAFkAlgDgAYUAAAEWMzI3NxYHBgcGFxcWBwYHBhcUFxYXNicmNSY3NDc2NxY3Njc2MzYTBzY3JgciIwcGBxYHBgcGBwYnJicjEScmBwYHBhcUFRUGBwYnJicnJicmIwYHFxYXFwE2JyYnJicmNzY3Njc0NzYnJicmJycHBwIHBgcXFhcUFxYXFgMGFxYXBhcWFRYHBgcUFxYXNjc3Jjc2NzYBAyYnBhcWFxcWBxYHBgcGDwIDBhcUBwcUFwYXFhcWBwYVFAcWNzY3NjM2Nzc1Jjc2NzYnJic3NicmJxM0NzYnJic2JyYnJjc2AQYvAiYnBicmJyc1NjMWNzY3Mjc2JyYnJicnBxUmJyYnEjc2NzYnJicGBwcGBwYHJyY1AyYnJiMGFRIXFhcUFxYXFhUGBwcmBwYHBgcGFxY3Njc2FxYXFjc2NzYXFhcUFxcWBwYHBicnJg8CJgcGBwciJwcWMzYXFhcWNzY3FhUUFxYHBgcGFxYXFjc2NzY3Azc2FxYXFhc2FxYXFjc2NzYnJgVgLuoSErwgBgEBBAYGIAgDBRQDAR9heAcBFAMBEBBAbztKZjauBgECAxdKAwQ0DBAIPSAzRwl7agkKFDwkJwUEYAQMhGg5HxA4GDQYDFcFBCIGFAd0BDEYIz5KQB4PIxISSDQKAgQYSDAgGKIeEgZUFiZYMwVCHhAMBxEoAwEEDAUHNCoSBHgIFAwGDiT3kIg6XmAZBg1EGBhcFwUIGDATAUgGBigMEBQLBQwSBiAEC0sKDDAEJCAEHAcBBAwOBgxABAYCBEhEJAoCBDQOAwcUBwEFWDBSMxsyLjAdDQoIGHinXCQVCSMUCAUPCBSAICuRfh5UzAxkSBkMJ4hURB0fJUOEHKgQIDhYWIyoFDBAFgEBE2E8km0nIjAUDAwgPAsNFxQLCihLIClMNBgUNwkkCAEDGToVJBUQA0SENECQHBAQNFxCfBYYZ0QjGiwIFAcEDRgiEB48NB0bCBgkNCA4GR8QGCVYEBMsJQ4NVAw2CgiJAQwqcw8QNCgcJD8RFDcuBQZWBkrIBwevQAgFQBgMFAwUIGwBMAFcgTMDEAgYZHY/Q18FMAYBAQGMXBgGAQFO/wYFMEAwICsYLcA9EwgcMBwtk2z2vMjMYWOafoCwVGAkMDZyS0YODU4eBBQo/lCoW1H0MiZrzX5CkP7Iu3BBLCJnBQYsIg0NHxEGEgjkEEB9QE/qBmYBHF0TNUwTFHA2KsfGJSZmThcB/kxIMBxQLAgYSIE7SH5ORcNUIDsLAQMIH5kfAS51HCFUOxsWoBwZCgkCmCCISDYLC0eRIyl4PxD6rSwMCwkXCQQnEhsXAZAEBgIEDCAkFRcMFAQQCA4GBmYBONgjsYNeMCcMwJwYgGkLYBYqAWQcMDgmNv5tzRwwRa9QDQgHLAwQKA0ECxAMGFQcBQECBAEBAhgMBQsYEggSE14PODMICSQIBAgICgIcDAULFARIXDgNAwQYCAQMDVsoEDRiN0N8USccCB4RHQwgAghIEA8HDggIHAUBAggMBQcYVEIAAAQDhP0wDlgMaACeAMIBkAGhAAABAiEHJi8CJjc2NyQlNjc3NicmJyYnIicmJyQhIwYHBgcGBwYHAhcUFRQXEgcGBxYHBgcHFQYXFhcXNjc2NxM2JyYnNi8CJjc2NzY3NjcmNzY3NzY3NjcWNzYzMhc2FxY3NjcWFxYXEwYHFA8CBicmLwIFBjEGBxYXFjc2NzczFjc2NzYXFhc2FxYXFxYXFhcWNzY3Njc0NyYnJgEyNzYXFhc3NjcmBwYHByYPAgYnJyIHBhcXFhcWNzY3NhcyAyYnJicnNicmJyYnJg8CBhcXFhcwFxYXBgcHBgcHBgcGBwcGBwYXFhcWFxY3NjcyNzY3Njc2MxYHBgcGBxUGBwYXFhcWFxYXFhc2FxYzMzY3Njc2NzY3Njc2NycmIwcGAwYHBgcGJycmJycmNzY3Fjc2NTQ3NzYnNDUmJyYnJgcGBwcjFAcGByIHBgciJyY1NzYnJyMnJicmNzY3Njc2NzY3NhcyMxY3BBcWFxYHBgcGIwYnJicnJgcGBxQXFhcWNzY3Njc2JyYnJyYlJAEWBwYHBhUWNzY3Nhc2NSYHDbyk/fzkLfuMXCRsEh4BvwGh3zEEHAoDByBcPDwgCP7U/chgIqZvMVywIAyoBBAMDAstBBEMFxgIDgkRKGgwIBQsCAcDBggdGQY0CwIDKAwEEDQ2GzeMJa8pE1TtERKMNDCERDMWEyJ6byUIBg5cRBDFhRQSJwH+kDysJAaCtI0SERsBGzwTFjQnEw5unj5GTGRgU0EoNgsLLgYIDFQq+8YMeDAkDw2IVh4b1h0iRDRnZw5aOhx82AgSFggISIpTZ1RQHHgOWj0zMAgXDxpLDTQmDhgQEBMGBwj0lBKGJDexdCAwDEULGyVEFwsiEChHfhYZCCBsVE4qMS9IGQkWSwWgkAwFBAsCEiqiPxkYcgkJFF5mRScIRClDIn5qBjwYFCDRj0xwRDhATScSEjgcEwkUKxAJFNRgBAxcJxk8QyAhMwFITQcjMSs5IxEQKAgEBQMsCAQoMxkwbAww2NU7IW8EBDwYAU+NCAxPEAIFGQM1XA8QmDgwFhaUWyFoZzMyGDBQEwQJGMD+cP7c+qQIGQ0WOA45DxIqHpROWgXQARgIDgYMJHJmEhIiNl7iLH5hIB17RUgoCDAUDAwsDGQQCP6M2wIDLGD+wt7cwCg1KCtUJBsRCgYISeupJwF0R0UdGyAeFgQqOAkJHWMcIGB3PEGkJUsODhgDAQwkGAgNBQo0JB1X/vAmDkUrJBBQEQMEDwEwGEfZlmpIDAEDCCAKAwcUFAoSLA8GDxAXkYIaFAUBAhFLJCA0DAwD+CQQDwYLEAZCcBcDBgwQCw4DFAcFRBQgIAgQCAgFCwgC+s4KbkMRDCMaEAsdJxgFAxAQJCEJChCjxUYSCCUjIAwoCV0OJhbMi0U0GCg4DQIFCAaKih4cNkwcHnEXEFb2QEQsLAxIWioLDRgDAR2jbScLlWMlIkI1T1AQCGj/ADmraScwEw4ICywcNhogEBQLFVAU/IKLBANIXCIqDBMJEBg2NjJORD4GHBAYFBMGAwQICEhbLTRsGBgkK41IBAYGJU8ECBVLCw1Agx0FCWAcDgYQZWM7IRgnEyIQKEKjJSpoih4Y/jgkJhQWMiYYBwEEBga9h2aKAAUDDP00DtgMPAGVAaoBwQHMAd0AAAEAJyY3Nj8CMjc2NzYnJicmNzQ3JgcGBwYDBgcHFAcHBh8CBwYHBgcHBgcmLwIGJycmJyYnByInNic0NSY3Njc2NxcWFxYXNic0JyYnJicnJicnJicmNzY3NjEWNzY3NzQ3NicmJyYnAgcHBjEiJzYnJicmNzQ3JicmBwYHBgcGBwYHBhcWFxYVNjcUFxYVFhcyNxYVBwYHAQYHBwYXFjc2PwI2NzY3NxYVBgcGFxcWFxYXBgciByYHBg8CAgMWBwYHBhcWFzI3NjcSNzYnJicmNzY3Nic0JzY3Njc2NzY3JgcGBwcGByc2NzY3NzI3NhcWFxYDBgcVFgcGBwYXERYVBgcWBwYHBhcWFxY3Njc2NzYDJicmNTYnJic2JyYnJjc2NzYXFhcWMxYHFAcWFxYXFwYXFhcWBwYHFjcyMzYzNjc2NzYxAyY3Njc0JyYnJic0MzY3Njc3Njc2NzYXFh8DAwYHBgcGFxQ3MjM2NzYTEjc2FxYXFxMWBwYHBgcGBwYHBhcWFxY3Njc2NwATEAEGJyYnJicnJjc0NzYXFhcWBwYHFAE2NzY1JyYnJgcHBgcGFxQXFhcWFxcWBQYDFBcWFzc2NyYFFBcWFxYXNjc0NQEmByIHBg3c/nSQIEsmQ0sBRlIrGQwJBQoMAwEkJgUFeeNmRhQKAgQcEBAQET8uunQIBC+VHEgcPycOEDYSWAwQdAQIBwMGGDhgJkowSGgHASF/BTMIIY9cHAgoLBYqJERRKi08KBAKBAoTdTB8TBAkNAwJBQoMAgJHrUBTJClwQCONjAwIHwsSFKM9OBBmrhw4RAQpV/6kHBhQEjYYHQ0OGwFlg3BkNCQHCRgNDAMEHTsRtywUbHQ9PzcBkh4EIw8WMBEGETs1EjJECAQCAgQYCQQPGAMBGmosGBJmQBBKPhcVaCEfFCwMBwm5AgFSQQkIMAYBASwIAQMMDBAICAwIAwUIAwMGGCMTFg8hLA0EBwgEEAgMIAYBAQgMBQc0fA8RNER3DQJaBg4JAQQcDRMkDAULF0ECAhAEVh8CAQhgLAkBAiAICAgQMGEDEgYIS3l7iTwXDQQUDwHcMBwOVkgYagMDEChbmXJiEBINDQxEDBAKFjo2KEQlh5YeCAgsPCAkRBgBRsr3TCA1GR4yIlQIBwFsaE8RGAcDCgI4BkYwqBJONCwTCwoUAwEFC1BEOCD9gMtxNBQY4EETHwF7fC9BLylHBf7YFBsHCh0FZAGA/JCQSUtPAWQ9ExAjEhckGgMDNAkBAlf+/3JGkAcNBDCpW5RgQzli0pgICEOVHBQwDw4GCR4GEBA6uwMEdD8bDjYWXCGHZhI6XgQEQ2UDKwY9V0AcEDwpFQ4MIDQbMUAwoEw+GxtTNf6udjQINCxYLDg4Mw4Pdj4oGwwZSQc6YldpHB0KDQ0DRmIxuygUkAwIEU8cRgb+nCAYlDYqDA4GDB8BIqKRLxCuJikXOD8tCAhAFAMNBBRMKUM7Af8A/pBcw1Jr554/NBAGHgEwTDMpHRssQiQqQzEGBhoGBhIkkGFDZB8MHaQoDBRCskwghwEsCQEClf6tHyGQJ1oOEUIe/pAgQCgQJGojLzgkFxEQBQMIBhahAR9KUjD8WEsjHmXWHB10WyQdNAkBAghyeQkIbPC1JwQ4jkJUnXgsJ0AECBuYBgdAAiRNPwgIAassLCQ4OAYCBkIgRMS4MAwgER9sFwH+fEAYMZt+WlwEBAh+AW4BDYsEEgwWEP5khGRANDScczEsYGxgGAwgCwUQGwUBIgJeAeMFZRgXCxYhB7gwHAICbAQGYkBzNUAQ9/ALLR4mtAZCMBAKCQ0ZHAMEEBARe2QmMmz+kCIGBAjwTFRpHYtdDFg6DgVeCAkBNAwCAgYAAQAAAAUIWAAZAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAABjwPXBkcJEgABAAAAAQAAq7SInV8PPPUAARAAAAAAAL09c3AAAAAAvX07jf2w/MAQDA+8AAAACAACAAAAAAAABu0AiBAAAcMDiwDnAawAAAABAAAMVvzNALgQAP2+8r8dQQABAAAAAAAAAAAAAAAAAAAAAgABCAABkAAFAAgKZgszAAACPQpmCzMAAAeuAMwEJAAAAgAGCQAAAAAAAAAAAAAIAAAAAAAAAAAAAABQZkVkAEBOS57ODFb8zQC4DFYDMwAAAAEAAAAAAAAAAAACAAAAAwAAABQAAwABAAAAFAAEADgAAAAKAAgAAgACTktTV5ions7//wAATktTV5ions7//7G2rKtnW2E2AAEAAAAAAAAAAAAAAAAABwBaAAMAAQQJAAAAeAAAAAMAAQQJAAEACAB4AAMAAQQJAAIADACAAAMAAQQJAAMAPgCMAAMAAQQJAAQADgDKAAMAAQQJAAUAIADYAAMAAQQJAAYACAB4AEMAcgBlAGEAdABlAGQAIABiAHkAIABDAE0ARQBYACAAdwBpAHQAaAAgAEYAbwBuAHQARgBvAHIAZwBlACAAMQAuADAAIAAoAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABmAG8AcgBnAGUALgBzAGYALgBuAGUAdAApAEUAQgBBAFMATQBlAGQAaQB1AG0ARgBvAG4AdABGAG8AcgBnAGUAIAA6ACAAaABXAKsAqgCHAOMAVwAgADoAIAAyADMALQA4AC0AMgAwADAANABoAFcAqwCqAIcA4wBXAFYAZQByAHMAaQBvAG4AIAAwADAAMQAuADAAMAAwACAAAAADAAAAAAAA/5cAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf//AAI=) format("truetype");font-display:swap}

/* 篆体印章字体：全字庫說文解字（政府开放数据授权），子集化至 南黎之風 4 字 */
:root{
  --bg:#05080F;
  --bg-2:#0A1220;
  --surface:rgba(146,180,255,.055);
  --surface-2:rgba(146,180,255,.10);
  --ink:#F0F5FC;
  --ink-muted:rgba(222,233,250,.66);
  --ink-faint:rgba(208,222,248,.52);
  --line:rgba(158,196,255,.16);
  --line-soft:rgba(158,196,255,.08);
  --accent:#3BD8FF;
  --accent-strong:#8FE9FF;
  --on-accent:#04121C;
  --accent-soft:rgba(59,216,255,.11);
  --pink:#FF5C9D;
  --pink-soft:rgba(255,92,157,.12);
  --glow:0 0 22px rgba(59,216,255,.30);
  --glow-strong:0 0 36px rgba(59,216,255,.46);
  --text-glow:0 0 30px rgba(59,216,255,.22);
  --shadow:0 18px 50px rgba(0,0,0,.45);
  --star-opacity:.55;
  --grid-opacity:.5;
  --nav-bg:rgba(5,9,16,.8);
  --menu-panel:rgba(6,11,22,.6);
  --menu-dim:rgba(3,6,12,.38);
  --col:1440px;
  --pad:clamp(22px,4vw,64px);
  color-scheme:dark;
  --font-kai:"Kaiti SC","STKaiti","KaiTi","楷体","DFKai-SB","Noto Serif SC",serif;
  --font-sans:"SimSun","Songti SC","NSimSun","Noto Serif CJK SC",serif;
  --font-mono:"Cascadia Mono","JetBrains Mono","SF Mono","Fira Code",Consolas,ui-monospace,"Courier New",monospace;
  --ease:cubic-bezier(.16,1,.3,1);
  --ease-ui:cubic-bezier(.2,0,0,1);
}
[data-theme="light"]{
  --bg:#FBFBFD;
  --bg-2:#F5F5F7;
  --surface:#FFFFFF;
  --surface-2:#FFFFFF;
  --ink:#1D1D1F;
  --ink-muted:#515154;
  --ink-faint:#6E6E73;
  --line:rgba(0,0,0,.14);
  --line-soft:rgba(0,0,0,.08);
  --accent:#0284C7;
  --accent-strong:#0369A1;
  --on-accent:#FFFFFF;
  --accent-soft:rgba(2,132,199,.08);
  --pink:#DB2777;
  --pink-soft:rgba(219,39,119,.09);
  --glow:0 6px 24px rgba(2,132,199,.16);
  --glow-strong:0 10px 36px rgba(2,132,199,.24);
  --text-glow:none;
  --shadow:0 16px 40px rgba(0,0,0,.08);
  --star-opacity:.16;
  --grid-opacity:.32;
  --nav-bg:rgba(251,251,253,.8);
  --menu-panel:rgba(251,251,253,.7);
  --menu-dim:rgba(20,22,26,.22);
  color-scheme:light;
}
html[data-lang="en"]{
  --font-kai:"Palatino Linotype","Palatino","Book Antiqua",Georgia,"Times New Roman",serif;
  --font-sans:"Times New Roman",Times,serif;
}
.ht-en{display:none}
html[data-lang="en"] .ht-zh{display:none}
html[data-lang="en"] .ht-en{display:block}
html[data-lang="en"] .seal-zh{display:none}
html[data-lang="zh"] .seal-en{display:none}
html[data-lang="en"] .sec-title{letter-spacing:-0.015em;line-height:1.16}
html[data-lang="en"] .hero h1{letter-spacing:.06em}
html[data-lang="en"] .qm{letter-spacing:0}
html[data-lang="en"] .tile h3{letter-spacing:.01em}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
html,body{overflow-x:clip}
body{
  background:var(--bg);
  color:var(--ink);
  font-family:var(--font-sans);
  font-size:16px;line-height:1.65;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  transition:background-color .35s ease,color .35s ease;
}
::selection{background:var(--accent);color:var(--on-accent)}
a{color:inherit}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}
img{max-width:100%;display:block}
.wrap{width:100%;max-width:var(--col);margin:0 auto;padding:0 clamp(24px,5vw,84px);position:relative;z-index:2}
section{scroll-margin-top:84px;position:relative}
.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ── 颗粒噪点（两主题通用，弱化存在感） ─────────────── */
.grain{
  position:fixed;inset:0;z-index:1;pointer-events:none;opacity:.04;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='1'/%3E%3C/svg%3E");
}

/* ── 顶栏导航 ─────────────────────────────────────── */
.nav{
  position:sticky;top:0;z-index:60;
  width:100%;margin:0;
  background:var(--nav-bg);
  border-bottom:1px solid var(--line);
  transition:background-color .35s ease,border-color .35s ease;
}
.nav-inner{
  display:flex;align-items:center;justify-content:space-between;gap:16px;
  height:50px;max-width:var(--col);margin:0 auto;padding:0 var(--pad);
}
.nav .brand{font-family:var(--font-kai);font-size:21px;letter-spacing:.04em;color:var(--ink);text-decoration:none;display:flex;align-items:center;gap:9px;line-height:1;transition:color 160ms var(--ease-ui)}
.nav .brand .mark{flex:none}
.nav .brand:hover{color:var(--accent)}
.nav .brand em{font-family:var(--font-mono);font-style:normal;font-size:10.5px;letter-spacing:.22em;color:var(--accent);text-transform:uppercase}
.nav ul{list-style:none;display:flex;gap:34px;align-items:center}
.nav ul a{font-size:14px;font-weight:400;letter-spacing:.06em;color:var(--ink-muted);text-decoration:none;transition:color 160ms var(--ease-ui)}
.nav ul a:hover{color:var(--accent)}
.nav ul a .en{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint);margin-left:5px}
.nav-right{display:flex;align-items:center;gap:12px}
.nav .cta{
  font-family:var(--font-kai);font-size:13px;font-weight:400;letter-spacing:.12em;color:var(--on-accent);
  background:var(--accent);border:1px solid var(--accent);
  padding:6px 26px;border-radius:999px;text-decoration:none;
  box-shadow:var(--glow);
  transition:filter 160ms var(--ease-ui),transform 160ms var(--ease-ui),box-shadow 160ms var(--ease-ui);
}
.nav .cta:hover{filter:brightness(1.08);box-shadow:var(--glow-strong)}
.nav .cta:active{transform:scale(.97)}
.theme-toggle{
  width:36px;height:36px;border-radius:50%;cursor:pointer;
  background:transparent;border:1px solid var(--line);color:var(--ink-muted);
  display:flex;align-items:center;justify-content:center;
  transition:border-color 160ms var(--ease-ui),color 160ms var(--ease-ui),transform 160ms var(--ease-ui);
}
.theme-toggle:hover{border-color:var(--accent);color:var(--accent);transform:rotate(12deg)}
.lang-toggle{
  height:36px;padding:0 12px;border-radius:999px;cursor:pointer;
  background:transparent;border:1px solid var(--line);color:var(--ink-muted);
  font-family:var(--font-sans);font-size:12px;font-weight:600;
  transition:border-color 160ms var(--ease-ui),color 160ms var(--ease-ui);
}
.lang-toggle:hover{border-color:var(--accent);color:var(--accent)}
.theme-toggle svg{display:none}
[data-theme="dark"] .tt-sun{display:block}
[data-theme="light"] .tt-moon{display:block}
.nav-burger{
  display:none;background:none;border:1px solid var(--line);border-radius:999px;
  width:38px;height:38px;cursor:pointer;position:relative;
  transition:border-color 200ms var(--ease-ui),transform 300ms var(--ease);
}
.nav-burger:hover{border-color:var(--accent)}
.nav-burger:active{transform:scale(.94)}
.nav-burger span{
  position:absolute;left:11px;right:11px;height:1.6px;border-radius:1px;background:var(--ink);
  transition:transform 420ms var(--ease);
}
.nav-burger span:nth-child(1){top:14px}
.nav-burger span:nth-child(2){top:19px}
.nav-burger span:nth-child(3){top:24px}
.nav-burger[aria-expanded="true"] span:nth-child(1){transform:translateY(5px) rotate(45deg)}
.nav-burger[aria-expanded="true"] span:nth-child(2){transform:scaleX(0)}
.nav-burger[aria-expanded="true"] span:nth-child(3){transform:translateY(-5px) rotate(-45deg)}

/* 移动端抽屉菜单：右侧玻璃面板 + 左侧可点击关闭区域 */
.menu{
  position:fixed;inset:0;z-index:55;
  visibility:hidden;opacity:0;
  transition:opacity 380ms var(--ease-ui),visibility 0s linear 380ms;
}
.menu.open{
  visibility:visible;opacity:1;
  transition:opacity 380ms var(--ease-ui);
}
.menu-backdrop{
  position:absolute;inset:0;background:var(--menu-dim);
  opacity:0;transition:opacity 320ms var(--ease-ui);cursor:pointer;
}
.menu.open .menu-backdrop{opacity:1}
.menu-panel{
  position:absolute;top:0;right:0;bottom:0;width:min(82vw,360px);
  background:var(--menu-panel);
  -webkit-backdrop-filter:blur(28px) saturate(160%);backdrop-filter:blur(28px) saturate(160%);
  border-left:1px solid var(--line);
  padding:76px 30px 28px;
  display:flex;flex-direction:column;gap:4px;
  overflow-y:auto;overscroll-behavior:contain;
  transform:translateX(103%);
  transition:transform 460ms var(--ease);
  box-shadow:-24px 0 60px rgba(0,0,0,.35);
}
.menu.open .menu-panel{transform:none}
.menu-close{
  position:absolute;top:14px;right:16px;width:36px;height:36px;border-radius:50%;
  background:transparent;border:1px solid var(--line);color:var(--ink-muted);cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  transition:border-color 160ms var(--ease-ui),color 160ms var(--ease-ui),transform 200ms var(--ease-ui);
}
.menu-close:hover{border-color:var(--accent);color:var(--accent);transform:rotate(90deg)}
.menu a{
  font-family:var(--font-kai);font-size:30px;color:var(--ink);text-decoration:none;
  padding:13px 0;border-bottom:1px solid var(--border-soft);
  opacity:0;transform:translateX(26px);
  transition:opacity 340ms var(--ease),transform 400ms var(--ease);
  transition-delay:calc(120ms + var(--i,0)*55ms);
}
.menu.open .menu-panel a{opacity:1;transform:none}
.menu .menu-foot{margin-top:auto;font-family:var(--font-mono);font-size:10.5px;color:var(--ink-faint);letter-spacing:.1em;padding-top:18px}

/* ── 侧边锚点（星位导航） ─────────────────────────── */
.dotnav{
  position:fixed;right:26px;top:50%;transform:translateY(-50%);z-index:50;
  display:flex;flex-direction:column;gap:2px;
}
.dotnav a{
  position:relative;display:flex;align-items:center;justify-content:flex-end;
  width:30px;height:30px;border-radius:4px;text-decoration:none;
}
.dotnav a::before{
  content:"";width:8px;height:8px;border:1px solid var(--ink-faint);
  background:var(--bg);border-radius:50%;transition:all 200ms var(--ease-ui);
}
.dotnav a:hover::before,.dotnav a.active::before{border-color:var(--accent);background:var(--accent);box-shadow:var(--glow)}

/* ── 章节骨架 ─────────────────────────────────────── */
.sec{position:relative;padding-top:130px;padding-bottom:130px}
.sec-head{max-width:880px;margin-bottom:64px}
.sec-no{
  font-family:var(--font-mono);font-size:11px;letter-spacing:.24em;color:var(--accent);
  text-transform:uppercase;display:flex;align-items:center;gap:14px;margin-bottom:22px;
}
.sec-no::after{content:"";height:1px;width:56px;background:linear-gradient(90deg,var(--accent),transparent)}
.sec-title{
  font-family:var(--font-kai);font-weight:400;
  font-size:clamp(36px,4.6vw,56px);line-height:1.18;letter-spacing:.02em;
  margin-bottom:18px;text-shadow:var(--text-glow);
}
.sec-deck{font-size:17px;color:var(--ink-muted);max-width:52ch;line-height:1.7}
.sec-deck b{color:var(--accent-strong);font-weight:500}

/* ── HERO：航天控制台 · 干净醒目 ──────────────────── */
.hero{
  min-height:100vh;min-height:100svh;position:relative;overflow:hidden;
  display:flex;flex-direction:column;justify-content:center;padding:120px 0 90px;
}
.hero-bg{position:absolute;inset:0;pointer-events:none;perspective:1200px;z-index:0}
.hb-nebula{position:absolute;inset:-10%;
  background:
    radial-gradient(42% 34% at 22% 26%, var(--accent-soft), transparent 62%),
    radial-gradient(38% 30% at 80% 68%, var(--pink-soft), transparent 64%),
    radial-gradient(52% 42% at 62% 6%, rgba(122,142,255,.06), transparent 66%);
}
.hb-stars{position:absolute;inset:0;opacity:var(--star-opacity);
  background-image:
    radial-gradient(1.2px 1.2px at 11% 21%, rgba(255,255,255,.95) 50%, transparent 52%),
    radial-gradient(1px 1px at 27% 64%, rgba(255,255,255,.8) 50%, transparent 52%),
    radial-gradient(1.4px 1.4px at 38% 12%, rgba(190,230,255,.9) 50%, transparent 52%),
    radial-gradient(1px 1px at 52% 42%, rgba(255,255,255,.7) 50%, transparent 52%),
    radial-gradient(1.2px 1.2px at 64% 78%, rgba(255,214,235,.85) 50%, transparent 52%),
    radial-gradient(1px 1px at 72% 18%, rgba(255,255,255,.8) 50%, transparent 52%),
    radial-gradient(1.5px 1.5px at 83% 52%, rgba(160,225,255,.9) 50%, transparent 52%),
    radial-gradient(1px 1px at 91% 33%, rgba(255,255,255,.75) 50%, transparent 52%),
    radial-gradient(1.2px 1.2px at 45% 88%, rgba(255,255,255,.7) 50%, transparent 52%),
    radial-gradient(1px 1px at 8% 78%, rgba(255,255,255,.65) 50%, transparent 52%),
    radial-gradient(1.3px 1.3px at 95% 84%, rgba(190,230,255,.8) 50%, transparent 52%),
    radial-gradient(1px 1px at 60% 5%, rgba(255,255,255,.7) 50%, transparent 52%);
}
.hb-grid{
  position:absolute;left:-14%;right:-14%;bottom:-28%;height:66%;
  opacity:var(--grid-opacity);
  transform:perspective(760px) rotateX(64deg);transform-origin:50% 0;
  background-image:linear-gradient(var(--line-soft) 1px,transparent 1px),linear-gradient(90deg,var(--line-soft) 1px,transparent 1px);
  background-size:54px 54px;
  -webkit-mask-image:linear-gradient(180deg,transparent 0,#000 28%,#000 70%,transparent 100%);
  mask-image:linear-gradient(180deg,transparent 0,#000 28%,#000 70%,transparent 100%);
  animation:gridMove 13s linear infinite;
}
@keyframes gridMove{to{background-position:0 54px,0 0}}
#trisolaris{position:absolute;inset:0;width:100%;height:100%;display:block}

.hero-inner{position:relative;z-index:2;text-align:center}
.eyebrow{
  display:inline-flex;align-items:center;gap:10px;
  font-family:var(--font-mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;
  color:var(--ink-muted);border:1px solid var(--line);border-radius:999px;
  padding:7px 14px;margin-bottom:36px;background:var(--surface);
}
.eyebrow .dot{width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:var(--glow);animation:pulse 2.6s ease-in-out infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.35}}
.hero-name{display:flex;align-items:flex-end;justify-content:center;gap:22px;flex-wrap:wrap}
.hero h1{
  font-family:var(--font-kai);font-weight:400;
  font-size:clamp(58px,10vw,132px);line-height:1.06;letter-spacing:.05em;
  margin:0;text-shadow:var(--text-glow);
}
.hero h1 .char{display:inline-block;opacity:0;transform:translateY(28px);filter:blur(7px);animation:rise .9s var(--ease) forwards}
.hero h1 .char:nth-child(1){animation-delay:.05s}
.hero h1 .char:nth-child(2){animation-delay:.17s}
.hero h1 .char:nth-child(3){animation-delay:.29s}
.hero h1 .char:nth-child(4){animation-delay:.41s}
@keyframes rise{to{opacity:1;transform:none;filter:none}}
.seal{
  flex:none;position:relative;width:64px;height:64px;margin-bottom:10px;
  border:1.5px solid var(--accent);color:var(--accent);background:transparent;
  font-family:var(--font-kai);
  display:grid;place-items:center;
  border-radius:6px;
  box-shadow:0 0 18px rgba(59,216,255,.22),inset 0 0 14px rgba(59,216,255,.10);
  transform:rotate(-5deg);
  opacity:0;animation:stamp .5s var(--ease-ui) .55s forwards;
}
.seal-zh{grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;padding:5px;font-size:19px;line-height:1;font-family:"NL Seal","汉仪篆书繁","方正篆体","Kaiti SC","STKaiti","KaiTi",serif}
.seal-zh span{display:flex;align-items:center;justify-content:center}
.seal-en{display:flex;border-radius:50%;width:56px;height:56px}
.seal-en .n{font-size:26px}
.seal-en .sub{position:absolute;bottom:7px;left:0;right:0;text-align:center;font-family:var(--font-mono);font-size:7.5px;letter-spacing:.18em;opacity:.8}
.seal-en::before{content:"";position:absolute;inset:4px;border:1px solid currentColor;opacity:.45;border-radius:50%}
[data-theme="light"] .seal{box-shadow:0 6px 18px rgba(2,132,199,.18),inset 0 0 10px rgba(2,132,199,.07)}
@keyframes stamp{0%{opacity:0;transform:rotate(-5deg) scale(1.6)}60%{opacity:1;transform:rotate(-5deg) scale(.94)}100%{opacity:1;transform:rotate(-5deg) scale(1)}}
.hero .pinyin{font-family:var(--font-mono);font-size:11px;letter-spacing:.3em;color:var(--ink-faint);text-transform:uppercase;margin-top:16px}
.hero .deck{
  font-family:var(--font-kai);font-size:clamp(22px,2.6vw,30px);color:var(--accent-strong);
  letter-spacing:.04em;margin:30px 0 14px;text-shadow:var(--text-glow);
}
.hero .lede{font-size:16.5px;color:var(--ink-muted);max-width:54ch;line-height:1.75;margin:0 auto 12px}
.hero .en-line{font-family:var(--font-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:44px}
.hero .actions{display:flex;gap:14px;align-items:center;justify-content:center;flex-wrap:wrap;margin-bottom:38px}
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  font-family:var(--font-sans);font-size:14px;font-weight:600;text-decoration:none;
  padding:10px 36px;border-radius:999px;cursor:pointer;border:1px solid transparent;
  transition:transform 160ms var(--ease-ui),filter 160ms var(--ease-ui),border-color 160ms var(--ease-ui),color 160ms var(--ease-ui),box-shadow 160ms var(--ease-ui);
}
.btn:active{transform:scale(.98)}
.btn-primary{background:var(--accent);color:var(--on-accent);border-color:var(--accent);box-shadow:var(--glow)}
.btn-primary:hover{filter:brightness(1.08);box-shadow:var(--glow-strong);transform:translateY(-1px)}
.btn-primary svg{stroke:var(--on-accent)}
.btn-ghost{background:transparent;color:var(--ink);border-color:var(--line)}
.btn-ghost:hover{border-color:var(--accent);color:var(--accent)}
.hero .meta-row{
  font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;color:var(--ink-faint);
  display:flex;gap:8px;flex-wrap:wrap;align-items:center;justify-content:center;
}
.hero .meta-row a{color:var(--ink-faint);text-decoration:none;border-bottom:1px dashed var(--line);transition:color 160ms var(--ease-ui),border-color 160ms var(--ease-ui)}
.hero .meta-row a:hover{color:var(--accent);border-color:var(--accent)}
.scroll-cue{
  position:absolute;bottom:26px;left:50%;transform:translateX(-50%);
  display:flex;flex-direction:column;align-items:center;gap:8px;
  font-family:var(--font-mono);font-size:9.5px;letter-spacing:.3em;text-transform:uppercase;color:var(--ink-faint);
  z-index:2;
}
.scroll-cue::after{content:"";width:1px;height:44px;background:linear-gradient(180deg,var(--accent),transparent);animation:cue 2.2s ease-in-out infinite;transform-origin:top}
@keyframes cue{0%{transform:scaleY(0)}45%{transform:scaleY(1)}100%{transform:scaleY(1);opacity:0}}
[data-mx-layer]{will-change:transform}

/* ── 通用部件 ─────────────────────────────────────── */
.hr{height:1px;border:none;background:linear-gradient(90deg,var(--line),transparent 85%)}
.chip{
  display:inline-block;font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;
  padding:3px 9px;border-radius:999px;margin:0 6px 6px 0;white-space:nowrap;
}
.chip-cyan{background:var(--accent-soft);color:var(--accent-strong);border:1px solid rgba(59,216,255,.3)}
[data-theme="light"] .chip-cyan{border-color:rgba(2,132,199,.28)}
.chip-pink{background:var(--pink-soft);color:var(--pink);border:1px solid rgba(255,92,157,.32)}
[data-theme="light"] .chip-pink{border-color:rgba(219,39,119,.26)}
.chip-ink{background:var(--surface);color:var(--ink-muted);border:1px solid var(--line)}
.chip-soon{background:transparent;color:var(--ink-faint);border:1px dashed var(--line)}
.mono-label{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-faint)}

/* ── 作品画廊（Apple ProductTileGallery 式横向滚动） ── */
.gallery{position:relative}
.g-topline{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:22px}
.g-hint{font-family:var(--font-mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-faint)}
.g-ctrl{display:flex;align-items:center;gap:10px}
.g-btn{
  width:40px;height:40px;border-radius:50%;cursor:pointer;
  background:var(--surface);border:1px solid var(--line);color:var(--ink);
  display:flex;align-items:center;justify-content:center;
  transition:border-color 160ms var(--ease-ui),color 160ms var(--ease-ui),box-shadow 160ms var(--ease-ui),transform 160ms var(--ease-ui),opacity 160ms var(--ease-ui);
}
.g-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent);box-shadow:var(--glow);transform:translateY(-1px)}
.g-btn:disabled{opacity:.32;cursor:default}
.g-viewport{
  overflow:hidden;margin:10px calc(-1 * var(--pad)) 24px;cursor:grab;
}
.g-viewport.dragging{cursor:grabbing}
.g-track{
  display:flex;gap:20px;padding:10px 0 24px;
  will-change:transform;touch-action:pan-y;
}
.g-track.slide{transition:transform 620ms cubic-bezier(.32,.72,0,1)}
.g-track.glide{transition:transform 1750ms cubic-bezier(.66,.05,.25,.99)}
.g-track::-webkit-scrollbar{display:none}
.tile{
  flex:0 0 clamp(400px,40vw,600px);scroll-snap-align:start;
  position:relative;overflow:hidden;
  display:flex;flex-direction:column;gap:12px;
  background:var(--surface);border:1px solid var(--line);border-radius:18px;
  padding:36px 40px;
  transition:border-color 220ms var(--ease-ui),transform 220ms var(--ease-ui),box-shadow 220ms var(--ease-ui);
  transform-style:preserve-3d;
}
.tile:hover{border-color:rgba(59,216,255,.45);box-shadow:var(--shadow)}
[data-theme="light"] .tile:hover{border-color:rgba(2,132,199,.4)}
.tile .sheen{
  position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(115deg,transparent 32%,rgba(255,255,255,.07) 46%,transparent 60%);
  transform:translateX(-130%);transition:transform .9s var(--ease);
}
.tile:hover .sheen{transform:translateX(130%)}
.tile .w-no{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.2em;color:var(--ink-faint);text-transform:uppercase}
.tile h3{font-family:var(--font-kai);font-weight:400;font-size:27px;letter-spacing:.03em;line-height:1.25}
.tile p{font-size:13.8px;color:var(--ink-muted);line-height:1.75;flex:1}
.tile p b{color:var(--ink);font-weight:500}
.tile .role{font-family:var(--font-mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint)}
.tile .links{display:flex;gap:18px;flex-wrap:wrap;margin-top:6px}
.tile .links a{
  font-family:var(--font-mono);font-size:11.5px;letter-spacing:.05em;color:var(--accent);text-decoration:none;
  display:inline-flex;align-items:center;gap:5px;padding:3px 0;
}
.tile .links a:hover{color:var(--accent-strong)}
.tile .links a svg{transition:transform 180ms var(--ease-ui)}
.tile .links a:hover svg{transform:translate(2px,-2px)}

/* ── 作品卡背景图 ── */
/* 图层：整卡 cover 铺图；透明度由后台字段控制（内联 style 覆盖此默认值） */
.tile .tile-bg{
  position:absolute;inset:0;z-index:0;pointer-events:none;
  background-size:cover;background-position:center;background-repeat:no-repeat;
  opacity:.42;
}
/* 内容抬到图层之上；sheen 光泽保持最顶层 */
.tile.has-bg > *:not(.tile-bg):not(.tile-bg-scrim):not(.sheen){
  position:relative;z-index:1;
}
.tile.has-bg .sheen{z-index:2}

/* 主题色遮罩：透明度 ≤0.9 时由脚本挂上，保证下半部分文字可读；
   透明度 >0.9 时不挂载，整卡完全透明（由「文字颜色」保障可读性） */
.tile .tile-bg-scrim{
  position:absolute;inset:0;z-index:0;pointer-events:none;
  background:linear-gradient(180deg,
    rgba(5,8,15,0) 4%, rgba(5,8,15,.38) 52%, rgba(5,8,15,.92) 100%);
}
[data-theme="light"] .tile .tile-bg-scrim{
  background:linear-gradient(180deg,
    rgba(251,251,253,0) 4%, rgba(251,251,253,.45) 52%, rgba(251,251,253,.94) 100%);
}

/* ── 作品卡自定义文字颜色（后台「文字颜色」；留空时该规则不生效） ── */
.tile.has-fg .w-no,
.tile.has-fg h3,
.tile.has-fg p,
.tile.has-fg p b,
.tile.has-fg .role,
.tile.has-fg .links a{ color:var(--tile-fg); }
.tile.has-fg .links a:hover{ color:var(--tile-fg); opacity:.78; }

.tile-ip{
  background:linear-gradient(135deg,var(--accent-soft),var(--pink-soft));
  border:1px solid var(--line);
}
.tile-ip .soon-word{font-family:var(--font-kai);font-size:22px;color:var(--ink-faint);letter-spacing:.16em}
.tile-ip h3{font-size:30px}
.g-progress{
  margin-top:2px;width:180px;height:2px;background:var(--line-soft);border-radius:2px;overflow:hidden;
}
.g-progress i{display:block;height:100%;width:12%;background:var(--accent);border-radius:2px;box-shadow:var(--glow);transition:width .2s var(--ease-ui)}
.works-note{
  margin-top:34px;font-family:var(--font-mono);font-size:10.5px;letter-spacing:.1em;color:var(--ink-faint);line-height:1.9;
  border-top:1px dashed var(--line);padding-top:18px;
}

/* ── 定位 ────────────────────────────────────────── */
.identity-grid{display:grid;grid-template-columns:5fr 7fr;gap:56px;align-items:start}
.portrait-card{position:relative}
.portrait-frame{position:relative;border:1px solid var(--line);padding:14px;background:var(--surface);border-radius:4px}
.portrait-frame::before,.portrait-frame::after{content:"";position:absolute;width:22px;height:22px;pointer-events:none}
.portrait-frame::before{top:-1px;left:-1px;border-top:2px solid var(--accent);border-left:2px solid var(--accent)}
.portrait-frame::after{bottom:-1px;right:-1px;border-bottom:2px solid var(--accent);border-right:2px solid var(--accent)}
.portrait-frame img{width:100%;aspect-ratio:1/1;object-fit:cover;filter:saturate(.97) contrast(1.02)}
.portrait-cap{
  margin-top:14px;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;
  font-family:var(--font-mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint);
}
.trait-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}
.pair{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.pair > div{padding:20px 0 20px 20px}
.pair > div + div{border-left:1px solid var(--line);padding-left:24px}
.pair .track-label{
  font-family:var(--font-mono);font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--accent);
  display:flex;align-items:center;gap:8px;margin-bottom:14px;
}
.pair .track-label::before{content:"";width:14px;height:1px;background:var(--accent)}
.pair ul{list-style:none}
.pair li{font-size:14px;color:var(--ink-muted);line-height:1.6;padding:7px 0 7px 16px;position:relative;border-bottom:1px solid var(--line-soft)}
.pair li:last-child{border-bottom:none}
.pair li::before{content:"";position:absolute;left:0;top:15px;width:5px;height:5px;background:var(--accent);opacity:.5;border-radius:1px}
.pair li b{color:var(--ink);font-weight:500}
.merge-point{
  margin-top:26px;padding:22px 26px;border:1px solid var(--line);border-left:2px solid var(--accent);
  background:linear-gradient(120deg,var(--accent-soft),transparent 60%);
}
.merge-point .mono-label{margin-bottom:8px;display:block}
.merge-point p{font-size:14.5px;color:var(--ink-muted);line-height:1.7}
.merge-point p b{color:var(--ink);font-weight:500}
.meta-strip{
  margin-top:56px;display:flex;flex-wrap:wrap;gap:10px 34px;
  font-family:var(--font-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint);
  border-top:1px solid var(--line);padding-top:22px;
}
.meta-strip b{color:var(--accent-strong);font-weight:500}

/* ── 历程 ────────────────────────────────────────── */
.timeline{position:relative;padding-left:34px;max-width:760px}
.timeline::before{
  content:"";position:absolute;left:7px;top:6px;bottom:6px;width:1px;
  background:linear-gradient(180deg,var(--accent),var(--pink),transparent);
  transform:scaleY(0);transform-origin:top;transition:transform 1.5s var(--ease);
}
.timeline.drawn::before{transform:scaleY(1)}
.tl-flow{
  position:absolute;left:4.5px;top:0;width:6px;height:6px;border-radius:50%;
  background:var(--pink);box-shadow:0 0 12px rgba(255,92,157,.65);
  animation:tlFlow 7s var(--ease-ui) infinite;opacity:0;
}
.timeline.drawn .tl-flow{opacity:1}
@keyframes tlFlow{0%{top:2%;opacity:0}12%{opacity:1}88%{opacity:1}100%{top:96%;opacity:0}}
.tl-item{position:relative;padding:0 0 44px 22px}
.tl-item:last-child{padding-bottom:8px}
.tl-item::before{
  content:"";position:absolute;left:-33px;top:6px;width:9px;height:9px;border-radius:2px;
  background:var(--bg);border:1.5px solid var(--accent);box-shadow:var(--glow);
  transform:rotate(45deg);
}
.tl-item .tl-year{font-family:var(--font-mono);font-size:11.5px;letter-spacing:.2em;color:var(--accent-strong);text-transform:uppercase;display:block;margin-bottom:8px}
.tl-item h3{font-family:var(--font-kai);font-weight:400;font-size:21px;letter-spacing:.03em;margin-bottom:6px}
.tl-item p{font-size:14px;color:var(--ink-muted);line-height:1.7;max-width:56ch}
.tl-item p b{color:var(--ink);font-weight:500}
.honors{
  margin-top:34px;padding:18px 22px;border:1px solid var(--line);border-radius:8px;
  background:var(--accent-soft);
  font-family:var(--font-mono);font-size:10.5px;letter-spacing:.12em;line-height:2.1;color:var(--ink-muted);text-transform:uppercase;
}
.honors b{color:var(--accent-strong);font-weight:500}

/* ── 装备 ────────────────────────────────────────── */
.stack-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.stack-col{border:1px solid var(--line);border-radius:10px;background:var(--surface);padding:26px 26px 20px}
.stack-col .mono-label{margin-bottom:18px;display:flex;align-items:center;gap:10px}
.stack-col .mono-label::before{content:"";width:6px;height:6px;background:var(--accent);border-radius:1px;box-shadow:var(--glow)}
.stack-col ul{list-style:none}
.stack-col li{
  font-family:var(--font-mono);font-size:13px;letter-spacing:.04em;color:var(--ink-muted);
  padding:9px 0;border-top:1px solid var(--line-soft);display:flex;justify-content:space-between;align-items:center;gap:8px;
  transition:color 160ms var(--ease-ui),padding-left 160ms var(--ease-ui);
}
.stack-col li:hover{color:var(--accent);padding-left:6px}
.stack-col li:first-child{border-top:none}
.stack-col li .t{color:var(--ink-faint);font-size:10px;letter-spacing:.16em;text-transform:uppercase}
.coverage{margin-top:34px;display:flex;gap:8px;flex-wrap:wrap}
.coverage span{
  font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;color:var(--ink-muted);
  border:1px solid var(--line);border-radius:4px;padding:6px 12px;background:var(--surface);
  transition:border-color 160ms var(--ease-ui),color 160ms var(--ease-ui);
}
.coverage span:hover{border-color:var(--accent);color:var(--accent)}

/* ── 使命 ────────────────────────────────────────── */
.quote-block{padding:34px 0 8px}
.quote-block .qm{
  font-family:var(--font-kai);font-weight:400;
  font-size:clamp(34px,5vw,54px);line-height:1.3;letter-spacing:.03em;color:var(--ink);
  max-width:16em;margin:0;text-shadow:var(--text-glow);
}
.quote-block .qm .g{color:var(--accent-strong)}
.quote-block .qm .seal-mark{color:var(--pink)}
.mission-body{max-width:640px;margin-top:34px}
.mission-body p{font-size:16.5px;line-height:1.85;color:var(--ink-muted);margin-bottom:12px}
.mission-body p b{color:var(--ink);font-weight:500}
.mission-en{font-family:var(--font-mono);font-size:11px;letter-spacing:.22em;color:var(--accent);text-transform:uppercase;margin-top:20px}
.values{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:56px}
.value{border:1px solid var(--line);border-radius:10px;padding:24px 26px;background:var(--surface);position:relative;overflow:hidden}
.value::after{content:"";position:absolute;left:0;top:0;width:2px;height:100%;background:linear-gradient(180deg,var(--accent),transparent 70%);opacity:0;transition:opacity 220ms var(--ease-ui)}
.value:hover::after{opacity:1}
.value .v-no{font-family:var(--font-mono);font-size:10px;letter-spacing:.2em;color:var(--accent);display:block;margin-bottom:10px}
.value p{font-size:14px;color:var(--ink-muted);line-height:1.7}
.value p b{color:var(--ink);font-weight:500}
.startup-panel{
  margin-top:56px;border:1px solid var(--line);border-radius:10px;
  background:linear-gradient(130deg,var(--accent-soft),transparent 55%),var(--surface);
  padding:28px 30px;overflow:hidden;position:relative;
}
.startup-panel::after{content:"◆";position:absolute;right:18px;top:14px;color:var(--ink-faint);font-size:11px;opacity:.5}
.startup-panel .sp-title{display:flex;align-items:center;gap:10px;font-family:var(--font-kai);font-size:19px;letter-spacing:.04em;margin-bottom:16px}
.startup-panel .sp-title .dot{width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:var(--glow);animation:pulse 2.6s ease-in-out infinite}
.sp-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.sp-cell{font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;color:var(--ink-muted);line-height:1.8}
.sp-cell b{display:block;font-size:10px;letter-spacing:.2em;color:var(--ink-faint);text-transform:uppercase;font-weight:500}
.sp-cell .v{color:var(--accent-strong)}
.sp-note{margin-top:18px;font-size:14px;color:var(--ink-muted);border-top:1px solid var(--line-soft);padding-top:16px}
.sp-note b{color:var(--accent-strong);font-weight:500}
.interests{
  margin-top:46px;display:grid;grid-template-columns:repeat(4,1fr);gap:16px;border-top:1px solid var(--line);padding-top:30px;
}
.interest{font-family:var(--font-kai);font-size:19px;letter-spacing:.1em;color:var(--ink-muted);transition:color 200ms var(--ease-ui)}
.interest b{display:block;font-family:var(--font-mono);font-size:9.5px;letter-spacing:.24em;color:var(--ink-faint);text-transform:uppercase;font-weight:400;margin-bottom:8px}
.interest:hover{color:var(--accent)}
.interests-note{margin-top:18px;font-size:13.5px;color:var(--ink-faint);max-width:60ch}

/* ── 联系 ────────────────────────────────────────── */
.contact-mail{
  font-family:var(--font-kai);font-size:clamp(30px,4.4vw,52px);letter-spacing:.04em;color:var(--ink);
  text-decoration:none;display:inline-block;position:relative;margin:26px 0 40px;
  text-shadow:var(--text-glow);
}
.contact-mail::after{
  content:"";position:absolute;left:0;right:0;bottom:-6px;height:1px;
  background:var(--accent);box-shadow:var(--glow);
  transform:scaleX(.2);transform-origin:left;transition:transform 300ms var(--ease);
}
.contact-mail:hover::after{transform:scaleX(1)}
.contact-mail small{font-family:var(--font-mono);font-size:12px;letter-spacing:.06em;color:var(--ink-faint);margin-left:14px}
.channels{display:grid;grid-template-columns:1fr 1fr;gap:0;border-top:1px solid var(--line)}
.channel{
  display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:20px 6px;border-bottom:1px solid var(--line-soft);text-decoration:none;
  transition:padding-left 200ms var(--ease-ui);
}
.channel:nth-child(odd){border-right:1px solid var(--line-soft);padding-right:22px}
.channel:hover{padding-left:12px}
.channel .c-name{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-faint)}
.channel .c-val{font-family:var(--font-mono);font-size:13.5px;letter-spacing:.04em;color:var(--ink)}
.channel:hover .c-val{color:var(--accent)}
.channel.disabled{cursor:default;opacity:.5}
.channel.disabled:hover{padding-left:6px}
.channel .c-state{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-faint)}
.contact-close{margin-top:44px;font-size:15px;color:var(--ink-muted);max-width:48ch;line-height:1.8}

/* ── FOOTER ──────────────────────────────────────── */
footer{border-top:1px solid var(--line);padding:30px 0 34px;margin-top:40px}
.foot-row{display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap;align-items:center}
.foot-row span{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.12em;color:var(--ink-faint)}
.foot-row .foot-seal{display:inline-flex;align-items:center;gap:8px}
.foot-seal .mini-seal{
  width:18px;height:18px;border:1px solid var(--accent);color:var(--accent);border-radius:3px;
  font-family:var(--font-kai);font-size:6.5px;letter-spacing:.04em;line-height:1;display:inline-flex;align-items:center;justify-content:center;transform:rotate(-5deg);
}

/* ── 动效开关 ────────────────────────────────────── */
.motion-toggle{
  position:fixed;left:20px;bottom:20px;z-index:60;
  width:46px;height:26px;border-radius:999px;cursor:pointer;
  background:var(--menu-dim);border:1px solid var(--line);
  transition:border-color 200ms var(--ease-ui),background 220ms var(--ease-ui);
}
.motion-toggle:hover{border-color:var(--accent)}
.motion-toggle .knob{
  position:absolute;top:3px;left:4px;width:18px;height:18px;border-radius:50%;
  background:var(--accent);box-shadow:var(--glow);
  transition:left 240ms var(--ease),background 240ms var(--ease-ui),box-shadow 240ms var(--ease-ui);
}
.motion-toggle[aria-pressed="false"] .knob{left:24px;background:var(--ink-faint);box-shadow:none}
.motion-toggle:disabled{cursor:default;opacity:.6}
.motion-toggle:disabled:hover{border-color:var(--line)}

/* ── 入场动效体系 ────────────────────────────────── */
.rv{opacity:0;transform:translateY(24px);transition:opacity .8s var(--ease),transform .8s var(--ease);transition-delay:calc(var(--i,0)*80ms)}
.rv-l{opacity:0;transform:translateX(-26px);transition:opacity .8s var(--ease),transform .8s var(--ease);transition-delay:calc(var(--i,0)*80ms)}
.rv-clip{opacity:0;transform:translateY(14px);clip-path:inset(0 100% 0 0);transition:opacity .6s ease,transform .95s var(--ease),clip-path .95s var(--ease);transition-delay:calc(var(--i,0)*80ms)}
.rv-line{opacity:0;transform:scaleX(.35);transform-origin:left;transition:opacity .6s var(--ease),transform .9s var(--ease);transition-delay:calc(var(--i,0)*80ms)}
.rv.is-in,.rv-l.is-in,.rv-line.is-in{opacity:1;transform:none}
.rv-clip.is-in{opacity:1;transform:none;clip-path:inset(0 0 0 0)}
.tile.rv{transition:opacity .8s var(--ease),transform .8s var(--ease),border-color 220ms var(--ease-ui),box-shadow 220ms var(--ease-ui)}
.chars span{display:inline-block;opacity:0;transform:translateY(.55em);filter:blur(6px);transition:opacity .6s var(--ease),transform .7s var(--ease),filter .7s var(--ease);transition-delay:calc(var(--i,0)*46ms)}
.is-in .chars span,.chars.is-in span{opacity:1;transform:none;filter:none}

/* ── 响应式 ──────────────────────────────────────── */
@media (max-width:1080px){.dotnav{display:none}}
@media (max-width:960px){
  .nav ul{display:none}
  .nav-burger{display:block}
  .identity-grid{grid-template-columns:1fr;gap:44px}
  .sp-grid{grid-template-columns:repeat(2,1fr)}
  .values{grid-template-columns:1fr}
  .channels{grid-template-columns:1fr}
  .channel:nth-child(odd){border-right:none;padding-right:6px}
  .hero{padding-top:110px}
  .sec{padding-top:100px;padding-bottom:100px}
  .nav .cta{display:none}
  .sec-head{margin-bottom:48px}
}
@media (max-width:720px){
  .wrap{padding:0 22px}
  .tile{padding:26px 24px;flex:0 0 84vw}
  .g-viewport{margin:10px -22px 24px}
  .pair{grid-template-columns:1fr}
  .pair > div + div{border-left:none;border-top:1px solid var(--line);padding-left:0}
  .stack-grid{grid-template-columns:1fr}
  .interests{grid-template-columns:repeat(2,1fr)}
  .hero h1{font-size:clamp(54px,17vw,84px)}
  .seal{width:58px;height:58px;font-size:16px}
  .seal-en{width:50px;height:50px}
  .hb-grid{opacity:calc(var(--grid-opacity)*.7)}
  .contact-mail small{display:block;margin:10px 0 0;font-size:11px}
  .foot-row{flex-direction:column;align-items:center;gap:8px}
  .g-btn{width:36px;height:36px}
  .sec-deck{font-size:15.5px}
  .channel{padding:16px 2px}
  .merge-point{padding:18px 20px}
  .startup-panel{padding:22px 20px}
  .quote-block .qm{font-size:clamp(26px,8vw,36px)}
}
@media (max-width:560px){
  .sec{padding-top:80px;padding-bottom:80px}
  .nav .brand{font-size:17px}
  .nav .brand .mark{width:17px;height:17px}
  .sp-grid{grid-template-columns:1fr}
  .hero .actions .btn{width:100%;justify-content:center}
  .tile{flex:0 0 88vw;padding:22px 20px}
  .g-viewport{margin:10px -20px 24px}
  .hero .lede{max-width:100%;font-size:15.5px}
  .channels .channel{padding:14px 2px;gap:10px}
  .channel .c-val{font-size:12.5px}
  .nav-inner{padding:0 18px}
  .g-hint{font-size:9px}
  .honors{padding:14px 16px;line-height:1.9}
  .meta-strip{gap:8px 20px}
}

.foot-links{display:inline-flex;flex-wrap:wrap;gap:4px 10px;align-items:center}
.foot-links a{white-space:nowrap;color:var(--ink-faint);text-decoration:none;transition:color 160ms var(--ease-ui)}
.foot-links a:hover{color:var(--accent)}
.foot-links .dot-sep{width:3px;height:3px;border-radius:50%;background:var(--ink-faint);display:inline-block;flex:none}
.foot-row .icp{border-bottom:1px dashed var(--line)}
.foot-row .icp:hover{color:var(--accent);border-color:var(--accent)}
@media (max-width:720px){
  .foot-links{justify-content:center}
  .foot-links .dot-sep{display:none}
}

/* ── 无障碍跳转与打印 ──────────────────────────── */
.skip{
  position:fixed;top:-56px;left:16px;z-index:100;
  background:var(--accent);color:var(--on-accent);
  font-size:13px;font-weight:600;text-decoration:none;
  padding:10px 16px;border-radius:8px;
  transition:top 200ms var(--ease-ui);
}
.skip:focus{top:12px}
@media print{
  .nav,.dotnav,.menu,.motion-toggle,.grain,.hero-bg,.scroll-cue,.g-ctrl{display:none!important}
  body{background:#fff;color:#000}
  .rv,.rv-l,.rv-clip,.rv-line{opacity:1!important;transform:none!important;clip-path:none!important}
  .chars span{opacity:1!important;transform:none!important;filter:none!important}
  .timeline::before{transform:scaleY(1)!important}
  .g-viewport{overflow:visible}
  .g-track{flex-wrap:wrap;transform:none!important}
  .tile{break-inside:avoid}
}

/* ── 动效关闭（用户开关）与系统减弱动效 ───────────── */
html[data-motion="off"] .hb-grid,
html[data-motion="off"] .eyebrow .dot,html[data-motion="off"] .scroll-cue::after,html[data-motion="off"] .tl-flow,
html[data-motion="off"] .startup-panel .sp-title .dot{animation:none!important}
html[data-motion="off"] .rv,html[data-motion="off"] .rv-l,html[data-motion="off"] .rv-clip,html[data-motion="off"] .rv-line{opacity:1!important;transform:none!important;clip-path:none!important;transition:none!important}
html[data-motion="off"] .chars span{opacity:1!important;transform:none!important;filter:none!important;transition:none!important}
html[data-motion="off"] .hero h1 .char{opacity:1!important;transform:none!important;filter:none!important;animation:none!important}
html[data-motion="off"] .seal{opacity:1!important;transform:rotate(-5deg)!important;animation:none!important}
html[data-motion="off"] .timeline::before{transform:scaleY(1)!important;transition:none!important}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .hb-grid,.eyebrow .dot,.scroll-cue::after,.tl-flow,.startup-panel .sp-title .dot{animation:none!important}
  .rv,.rv-l,.rv-clip,.rv-line{opacity:1!important;transform:none!important;clip-path:none!important;transition:none!important}
  .chars span{opacity:1!important;transform:none!important;filter:none!important;transition:none!important}
  .hero h1 .char{opacity:1!important;transform:none!important;filter:none!important;animation:none!important}
  .seal{opacity:1!important;transform:rotate(-5deg)!important;animation:none!important}
  .timeline::before{transform:scaleY(1)!important;transition:none!important}
}


/* ── 动效开关：文字 + 拨动开关组合（覆盖前序尺寸定义） ── */
.motion-toggle{
  display:flex;align-items:center;gap:9px;width:auto;height:auto;
  padding:8px 8px 8px 14px;
}
.mt-label{font-family:var(--font-sans);font-size:12px;font-weight:500;letter-spacing:.08em;color:var(--ink-muted);line-height:1}
.mt-switch{position:relative;width:34px;height:18px;border-radius:999px;background:rgba(148,178,255,.22);flex:none;transition:background 240ms var(--ease-ui)}
.motion-toggle .knob{top:2px;left:2px;width:14px;height:14px}
.motion-toggle[aria-pressed="false"] .knob{left:18px;background:var(--ink-faint);box-shadow:none}
.motion-toggle[aria-pressed="false"] .mt-switch{background:rgba(148,178,255,.1)}