/* Generated by build.py from: style.css, ui.css, motion.css, motion-blocks.css, visuals/visuals.css, mobile.css, visuals/home-sky.css, visuals/taiwan.css, visuals/alliances.css, visuals/opportunities.css, visuals/insights.css, visuals/programmes.css — edit the sources, not this file. */
/* ---- style.css ---- */
/* FONT:BEGIN (generated by fonts.py) */
@font-face{font-family:'TINAI Serif';src:url('assets/serif-600-a.woff2') format('woff2');font-style:normal;font-weight:600;font-display:swap;unicode-range:U+20-7E, U+2013, U+2019, U+203A, U+2192, U+3001-3002, U+300C-300D, U+4E00, U+4E0B, U+4E0D, U+4E16, U+4E3B, U+4E4B, U+4EBA, U+4ECB, U+4EE3, U+4EE5, U+4EF6, U+4EFD, U+4F01, U+4F38, U+4F3A, U+4F4D, U+4F55, U+4F5C, U+4F7F, U+4F86, U+4F8B, U+4F9B, U+503C, U+5065, U+50CF, U+50F9, U+512A, U+5148-5149, U+5165, U+5167, U+516C-516D, U+5171, U+51FA, U+5206, U+5217, U+5225, U+5230, U+5247, U+524D, U+5275, U+529B, U+52A0, U+52D5, U+52D9, U+52E2, U+5316-5317, U+534A, U+539F, U+53EF-53F0, U+53F8, U+5408, U+540C-540D, U+5411, U+544A, U+5546, U+55AE, U+5668, U+570B, U+5716, U+5728, U+5730, U+578B, U+57F9-57FA, U+5831, U+5916, U+5927, U+5A92, U+5B78, U+5B89, U+5BB6, U+5BB9, U+5BC6, U+5BDF, U+5BE6, U+5BF8, U+5C01, U+5C08, U+5C0B, U+5C0E, U+5C46, U+5C55, U+5C64, U+5DE1, U+5DE5, U+5DF2, U+5E73-5E74, U+5E8F, U+5EA6, U+5EB7, U+5EF6, U+5F9E, U+606F, U+610F, U+611F, U+61C9, U+6210, U+624B, U+627E, U+6280, U+6295, U+63D0, U+641C, U+64C7, U+64DA, U+653F, U+6563, U+6574, U+6578, U+6587, U+6599, U+65B0, U+65B9, U+65BC, U+660E, U+667A, U+6700, U+6703, U+6708-6709, U+670D, U+679C, U+6848, U+689D, U+696D, U+69CB, U+6A5F, U+6AA2, U+6B0A, U+6B3E, U+6B65, U+6B77, U+6BB5, U+6C42, U+6C7A, U+6CBB, U+6D1E, U+6D3B, U+6D88, U+6DF1, U+6E2C, U+6E90, U+6E96, U+7063, U+70BA, U+7121, U+7126, U+7167, U+71B1, U+73ED, U+7406, U+7522, U+7528, U+7533, U+754C, U+7565, U+756B, U+767B-767C, U+7684, U+76DF, U+7814, U+78BA, U+7919, U+793A, U+79A6, U+79C1, U+7A0B, U+7A31, U+7A76, U+7ACB, U+7AD9, U+7B2C, U+7B56, U+7C21, U+7CBE, U+7CFB, U+7D39, U+7D44, U+7D50, U+7D61, U+7D71, U+7DB2, U+7E54, U+805A, U+806F, U+8072, U+80A1, U+80B2, U+80FD, U+81FA, U+8207, U+843D, U+85CD, U+8655, U+8853, U+88DD, U+88FD, U+8996, U+89E3, U+8A02, U+8A08, U+8A0A, U+8A2D, U+8A66, U+8A8D, U+8AAA, U+8AB2, U+8ABF, U+8ACB, U+8B58, U+8B70, U+8B93, U+8CC7, U+8D70, U+8DA8, U+8ECA, U+8F38, U+9001, U+9023, U+9032, U+9078, U+90E8, U+93C8, U+958B, U+9593, U+95B1, U+95DC, U+9632, U+9650, U+9662, U+968A, U+968E, U+969B-969C, U+96B1, U+96D9, U+96F6, U+9700, U+9762, U+9801, U+984C, U+99D5, U+9A45, U+9AD4, U+9EDE, U+FF01, U+FF08-FF09, U+FF0C-FF0D, U+FF0F, U+FF1A-FF1B, U+FF1F, U+FF5C}
@font-face{font-family:'TINAI Serif';src:url('assets/serif-600-b.woff2') format('woff2');font-style:normal;font-weight:600;font-display:swap;unicode-range:U+A9, U+B0, U+B7, U+D7, U+2014, U+2018, U+201C-201D, U+2026, U+2190-2191, U+2197, U+300A-300B, U+300E-300F, U+3014-3015, U+30FB, U+4E09-4E0A, U+4E26, U+4E2D, U+4E32, U+4E45, U+4E86, U+4E8B-4E8C, U+4E94, U+4E9E, U+4EA4, U+4EAB-4EAC, U+4EC0, U+4ED5-4ED6, U+4EFB, U+4F30, U+4F34, U+4F3C, U+4F48, U+4F50, U+4F5F-4F60, U+4F73, U+4F9D, U+4FC2, U+4FDD, U+4FE1, U+4FEE, U+500B, U+500D, U+5011, U+5019, U+5049, U+504F, U+505A, U+5075, U+5099, U+5143, U+5146, U+514B, U+5168-5169, U+5176-5177, U+518D, U+51A0, U+51C6, U+51CC, U+51E1, U+51F0-51F1, U+521D, U+5229-522A, U+5236, U+5238, U+528D, U+52A9, U+52D2, U+52DD, U+5340, U+5343, U+5347, U+5354, U+5357, U+535A, U+5361, U+5370, U+53C3, U+53CA-53CB, U+53D6, U+53E1, U+53E3, U+53EC, U+5404, U+5409, U+5426, U+5448, U+547C-547D, U+54C1, U+54E1, U+54EA, U+5510, U+552E, U+554F, U+555F, U+5609, U+56DB, U+56DE, U+570D, U+5712-5713, U+5718, U+571F, U+57CE, U+57DF, U+57F7, U+5834, U+5851, U+586B, U+5883, U+58C7, U+58D3, U+58EB, U+591A, U+5925, U+5947, U+597D, U+5982, U+59AE, U+59C6, U+59CB, U+59D4, U+5A01, U+5B50, U+5B57-5B58, U+5B87, U+5B8C, U+5B97-5B98, U+5B9A, U+5B9C, U+5BA2, U+5BCC, U+5BE9, U+5BEB, U+5BF6, U+5C0D, U+5C0F, U+5C1A, U+5C40, U+5C45, U+5C4B, U+5C6C, U+5C71, U+5CB3, U+5CF6, U+5DA0, U+5DDD, U+5E02-5E03, U+5E0C, U+5E1D, U+5E2B, U+5E36, U+5E38, U+5E8A, U+5E9C, U+5EE0, U+5EE3, U+5EF7, U+5EFA, U+5F0F, U+5F15, U+5F18, U+5F37, U+5F48, U+5F70-5F71, U+5F85, U+5F8B-5F8C, U+5F91, U+5F97, U+5FA9, U+5FAE, U+5FB7, U+5FC3, U+5FC5, U+5FF5, U+601D, U+6021, U+6027, U+6046, U+6069, U+60A8, U+60C5, U+60DF-60E0, U+60F3, U+611B, U+614B, U+6167, U+6176, U+6211, U+6216, U+6236, U+6240, U+624D-624E, U+627F, U+62D3, U+62DB, U+6307, U+6377, U+6388, U+6398, U+63A2, U+63A5, U+63A7-63A8, U+63DA, U+63ED, U+63F4, U+6458, U+64A4, U+64F4, U+651D, U+652F, U+6539, U+6545, U+6548, U+65AF, U+65B7, U+65BD, U+65E5, U+65FA, U+6606-6607, U+662F, U+6642, U+665F, U+6668, U+666E-666F, U+6676, U+6689, U+6698, U+66DC, U+66E6, U+66F4, U+66F8, U+66FC, U+671F, U+672A, U+672C, U+6750, U+6770-6771, U+677F, U+6790, U+6797, U+67B6, U+67E5, U+67EF, U+6838-6839, U+683C, U+68B0, U+6975, U+6977, U+6982, U+69AE, U+6A19, U+6A21, U+6A61, U+6ABB, U+6B21, U+6B23, U+6B46, U+6B50, U+6B63, U+6B8A, U+6BD4, U+6C34, U+6C38, U+6C60, U+6C6F, U+6C7D, U+6C83, U+6C90, U+6CC1, U+6CD5, U+6CF0, U+6D0B, U+6D3D-6D3E, U+6D41, U+6D69, U+6D77, U+6DE8, U+6E38, U+6EAF, U+6F6E, U+6FDF, U+6FEB, U+6FFE, U+700F, U+701A, U+7136, U+71AF, U+71DF, U+7247-7248, U+7269, U+7279, U+72C0, U+72FC, U+7387, U+738B, U+73FE, U+7403, U+742E, U+7452, U+745E, U+74B0, U+751F, U+7530-7531, U+7559, U+75DB, U+7642, U+767E, U+76CA, U+76E1, U+76E3-76E4, U+76EE, U+76F8, U+770B, U+771F, U+773C, U+777F, U+779F, U+77E5, U+77FD, U+78A9, U+790E, U+793E, U+7955, U+798F, U+7998, U+79BE, U+79D1, U+79DF, U+79FB, U+7A05, U+7A3F, U+7A4D-7A4E, U+7A69, U+7A81, U+7A97, U+7AA9, U+7AE0, U+7AEF, U+7B08, U+7B19, U+7B49, U+7B4C, U+7BA1, U+7BC0, U+7BC4, U+7BE9, U+7C3D, U+7C72, U+7D00, U+7D04-7D05, U+7D0D, U+7D18, U+7D1A, U+7D22, U+7D2F, U+7D72, U+7D93, U+7DA0, U+7DAD, U+7DB1, U+7DDA, U+7DE3, U+7DE8, U+7DEF, U+7E3D-7E3E, U+7E6B, U+7E7C, U+7E8C, U+7F3A, U+7F6E, U+7F72, U+7F8A, U+7F8E, U+7FA4, U+7FA9, U+7FD2, U+7FD4, U+8010, U+8056, U+805E, U+8077, U+80CC, U+8105, U+8108, U+81A0, U+81E8, U+81EA, U+8208-8209, U+822A, U+822C, U+8272, U+827E, U+82D1, U+82F1, U+8302, U+8343, U+8349, U+83EF, U+840A, U+8463, U+8490, U+856D, U+85A6, U+85E5, U+864E, U+878D, U+884C, U+885B, U+885D, U+8868, U+88DC, U+88E1, U+8907, U+8981, U+8986, U+898B, U+898F, U+89BD, U+89C0, U+89D2, U+89F8, U+8A00, U+8A13, U+8A18, U+8A2A, U+8A3A, U+8A55, U+8A62, U+8A6E, U+8A71, U+8A73, U+8AC7, U+8AD6, U+8B1B, U+8B49, U+8B77, U+8B80, U+8B8A, U+8C61, U+8CA1, U+8CA8, U+8CAC, U+8CBB, U+8CD3, U+8CEA, U+8CFC, U+8D77, U+8D85, U+8D8A, U+8DB3, U+8DE8, U+8DEF, U+8E64, U+8E8D, U+8F03, U+8F14, U+8F1B, U+8F1D, U+8F2A, U+8F2F, U+8F44, U+8F49, U+8FA6, U+8FA8, U+8FC5, U+8FD1, U+8FFD, U+9014, U+9019-901A, U+901F-9020, U+904B, U+904E, U+9053-9054, U+9069, U+908A, U+9091, U+90C1, U+90FD, U+914D, U+9192, U+91AB, U+91C7, U+91CD, U+91CF, U+91D1, U+921E, U+9226, U+929C, U+92B3, U+92B7, U+92B9, U+92D0, U+92D2, U+92EE, U+92FC, U+9304, U+9329, U+935B, U+9396, U+93B0, U+93E1, U+9433, U+9435, U+943F, U+9444, U+947D, U+9577, U+9580, U+9644, U+9664, U+966A, U+9677, U+9686, U+96AA, U+96C4-96C6, U+96F2, U+96FB, U+9708, U+9732, U+9752, U+9756, U+97CC, U+97FF, U+9805, U+9810, U+9818, U+982D, U+9853, U+9858, U+985E, U+98A8, U+994B, U+99B3, U+99F1, U+9A0F, U+9A57, U+9A5F, U+9AD8, U+9D3B, U+9D6C, U+9E97, U+9E9F, U+9EBC, U+9F0E, U+9F8D, U+FF0B}
html:not(.tf){--serif:'Songti TC',Georgia,serif}
/* FONT:END */
:root{--navy:#0A263F;--ink:#0A263F;--paper:#fff;--muted:#b7c6cd;--brand:#40D6B3;--brand-hover:#64e0c4;--brand-text:#08755e;--brand-deep:#075448;--line:#ffffff2c;--serif:'TINAI Serif','Songti TC',Georgia,serif;--sans:Arial,'Helvetica Neue','PingFang TC','Noto Sans TC',sans-serif;--gutter:clamp(24px,5.6vw,84px);--story-gap:24px;--ease:cubic-bezier(.22,.61,.36,1)}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:105px}body{margin:0;background:var(--navy);color:white;font:16px/1.65 var(--sans);-webkit-font-smoothing:antialiased}body:has(dialog[open]){overflow:hidden}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit}a{color:inherit;text-decoration:none}img{display:block;width:100%;height:auto}button{border:0}a,button{touch-action:manipulation}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid var(--brand);outline-offset:5px}h1,h2,h3,p{margin-top:0}p{line-height:1.75}h1,h2{font-family:var(--serif);font-weight:600}html[lang=en] h1,html[lang=en] h2{font-family:Georgia,'Times New Roman',serif;font-weight:400}h3{line-height:1.4}button span[aria-hidden],a span[aria-hidden]{display:inline-block}.wrap{width:min(1456px,calc(100% - var(--gutter)*2));margin-inline:auto}.eyebrow{display:block;font:500 13px/1.4 var(--sans);letter-spacing:.025em;margin-bottom:16px}.light{background:var(--paper);color:var(--ink)}.skip{position:fixed;top:-90px;left:20px;padding:12px;background:white;color:var(--ink);z-index:100}.skip:focus{top:10px}
/* Compact masthead, directly informed by McKinsey's current homepage. */
.site-header{position:relative;z-index:20;display:flex;align-items:center;gap:24px;min-height:104px;padding:20px 2.5vw 18px;background:var(--navy)}.brand{flex-shrink:0;width:170px}.brand img{width:100%;height:auto}.icon-button{background:none;width:36px;height:44px;display:grid;place-content:center;padding:6px;flex-shrink:0}.menu-trigger{gap:5px;width:29px;margin-right:4px}.menu-trigger span{height:2px;background:currentColor;width:23px}.desktop-nav{display:flex;gap:clamp(18px,2vw,32px);margin-left:auto;align-items:center;white-space:nowrap}.desktop-nav a{font-size:14px;line-height:1.3;padding:13px 0;position:relative}.desktop-nav a:after{content:'';position:absolute;bottom:4px;left:0;right:0;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .3s}.desktop-nav a:hover:after{transform:scaleX(1)}.header-tools{display:flex;align-items:center;gap:16px;margin-left:8px}.language{font-size:12px;padding:12px 2px}.search-trigger span{width:22px;height:22px;border:1.5px solid currentColor;border-radius:50%;position:relative}.search-trigger span:after{content:'';position:absolute;bottom:-5px;right:-5px;width:10px;height:1.5px;background:currentColor;transform:rotate(48deg)}
/* The opening is an editorial composition, not a stack of full-screen slides. */
.opening{padding-top:44px;padding-bottom:108px}.opening-grid{display:grid;grid-template-columns:1.34fr 1fr;gap:var(--story-gap);align-items:start}.opening-left,.opening-right{min-width:0}.opening-right,.story-column{display:flex;flex-direction:column;gap:var(--story-gap)}.story-column-offset{padding-top:54px}.lead{min-height:260px;padding:0 44px 34px 0}.lead h1{font-size:clamp(40px,3.7vw,58px);line-height:1.26;letter-spacing:-.025em;margin:0 0 25px}.lead-bottom{display:flex;gap:38px;align-items:center}.lead p{font-size:16px;line-height:1.7;max-width:450px;margin:0}.circle-arrow{display:grid;place-items:center;border-radius:50%;height:64px;width:64px;flex:0 0 64px;background:#ffffff24;font-size:40px;line-height:1;transition:background .3s,transform .3s}.circle-arrow:hover{background:var(--brand);transform:translateX(4px)}.lead-stories{display:grid;grid-template-columns:1fr 1fr;gap:var(--story-gap);align-items:start}.story-card{display:block;position:relative;isolation:isolate;overflow:hidden;min-width:0;transition:transform .6s var(--ease);background:#092435}.story-card img{position:absolute;inset:0;height:100%;object-fit:cover;z-index:-2;transition:transform 1.2s var(--ease)}.story-card:after{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(transparent 20%,#0315222b 40%,#021421e8 100%)}.story-card:hover img{transform:scale(1.05)}.card-copy{position:absolute;bottom:26px;left:24px;right:24px}.card-copy .eyebrow{font-size:12px;margin-bottom:12px}.card-copy h2{font:600 23px/1.48 var(--sans);letter-spacing:-.02em;margin:0}html[lang=en] .card-copy h2{font:600 23px/1.35 var(--sans)}.card-copy h2 span{padding-left:5px;transition:transform .3s}.story-card:hover h2 span{transform:translateX(5px)}.people-card{height:420px}.digital-card{height:330px}.health-card{height:420px}.people-card img{object-position:65% center}.silicon-card{height:325px}.silicon-card img{object-position:70% center}.cover-story{position:relative;display:block;isolation:isolate;overflow:hidden;background:#1c6985;min-height:680px}.cover-story img{position:absolute;inset:0;height:100%;object-fit:cover;object-position:60% top;z-index:-2;animation:cover-drift 22s ease-in-out infinite alternate;transition:transform 1.2s}.cover-story:after{content:'';position:absolute;inset:0;background:linear-gradient(#0523327d 0%,#061e2a08 47%,#031728b0 100%);z-index:-1}.cover-top{padding:30px 30px 0}.cover-top .eyebrow{margin-bottom:16px}.cover-top h2{font-family:var(--sans);font-size:clamp(24px,2.8vw,38px);font-weight:400;line-height:1.35;letter-spacing:-.025em}html[lang=en] .cover-top h2{font-family:var(--sans);font-size:36px;font-weight:400;line-height:1.25}.white-button,.dark-button{display:inline-flex;align-items:center;justify-content:space-between;gap:25px;padding:13px 23px;min-height:50px;font-size:15px;font-weight:500;line-height:1.45;transition:background .2s,color .2s}.white-button{background:white;color:var(--navy)}.white-button:hover{background:#dce8ee}.dark-button{background:var(--navy);color:white}.dark-button:hover{background:var(--brand)}.cover-story>.white-button{position:absolute;bottom:30px;left:30px}.text-link{padding:0;background:none;color:inherit;align-items:center;gap:22px;min-height:44px;display:inline-flex;font-size:15px}.text-link:hover{text-decoration:underline;text-underline-offset:6px}
@keyframes cover-drift{from{transform:scale(1)}to{transform:scale(1.045)}}
/* Alternating expertise, feature, geography, and collaboration sections. */
.industry-section{padding:104px 0 110px}.section-intro{display:grid;grid-template-columns:1.35fr 1fr;gap:18px 70px;align-items:end;margin-bottom:56px}.section-intro>.eyebrow{grid-column:1/-1;margin-bottom:0}.section-intro h2{font-size:42px;line-height:1.42;margin:0;letter-spacing:-.02em}.section-intro p{font-size:17px;margin:0;max-width:440px}.industries-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px;align-items:start}.industry-item{border-bottom:1px solid #d8dce0;scroll-margin-top:30px}.industry-item summary{list-style:none;position:relative;cursor:pointer;padding-bottom:24px}.industry-item summary::-webkit-details-marker{display:none}.industry-item summary img{aspect-ratio:1.5;object-fit:cover;margin-bottom:24px;transition:filter .3s}.industry-item summary:hover img{filter:brightness(1.08)}.industry-number{font-size:11px;color:#65717a}.industry-item h3{font-size:23px;margin:10px 25px 10px 0;letter-spacing:-.02em}.industry-item summary p{font-size:14px;line-height:1.6;color:#53606a;margin:0;min-height:46px}.industry-plus{position:absolute;right:0;top:calc((100vw - var(--gutter)*2 - 72px)/6 + 46px);font-size:25px;line-height:1}.industry-item[open] .industry-plus{transform:rotate(45deg)}.industry-description{padding-bottom:25px;animation:arrive .35s var(--ease)}.industry-description p{font-size:15px;line-height:1.8}.industry-description button{background:none;border-bottom:1px solid var(--brand);padding:0 0 5px;color:var(--brand-hover);text-align:left;font-size:14px}
.insight-feature{position:relative;isolation:isolate;overflow:hidden;min-height:570px;display:flex;align-items:center}.feature-photo{position:absolute;inset:0;height:100%;object-fit:cover;object-position:center;z-index:-2}.insight-feature:after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#041522e8 5%,#0415227a 52%,transparent);z-index:-1}.feature-copy{padding-block:90px;max-width:520px}.feature-copy h2{font-size:46px;line-height:1.4;letter-spacing:-.025em;margin-bottom:28px}.feature-copy p{font-size:18px;margin-bottom:32px;color:#e0e8ec}.image-note{position:absolute;bottom:18px;right:24px;font-size:9px;letter-spacing:.03em;color:#c1d0d5}.taiwan-section{padding-block:105px 120px}.section-heading{max-width:760px;margin-bottom:58px}.section-heading h2{font-size:48px;line-height:1.35;margin-bottom:23px;letter-spacing:-.025em}.section-heading p{font-size:18px;line-height:1.8;margin:0;color:#d3dfe5}.geography-grid{display:grid;grid-template-columns:1fr 1.12fr;gap:70px;align-items:stretch}.land-visual{position:relative;min-height:560px;background:#08141f;overflow:hidden}.land-visual>img,.land-visual>picture>img{width:100%;height:100%;position:absolute;inset:0;object-fit:contain;padding:32px 36px 40px}.coordinates{position:absolute;left:25px;top:28px;font:500 10px/1.8 var(--sans);letter-spacing:.09em;color:#c2d2d9}.land-visual .image-note{font-size:9px}.geography-story{padding-top:15px;position:relative}.geography-story>h3{font:600 33px/1.4 var(--serif);margin-bottom:16px}html[lang=en] .geography-story>h3{font-family:Georgia,serif;font-weight:400}.geography-story>p{max-width:450px;font-size:17px;color:#cfdae0;margin-bottom:0}.earth-frame{position:relative;aspect-ratio:1.3;height:390px;width:100%;pointer-events:none}.earth-frame canvas{position:absolute;inset:0;width:100%;height:100%;display:block}.earth-frame .story-earth-fallback{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;clip-path:circle(37.8% at 49.96% 49.97%)}.earth-ready .story-earth-fallback{opacity:0}.geography-story>.text-link{margin-top:14px}.opportunity-section{background:linear-gradient(108deg,var(--navy) 0%,var(--brand-deep) 60%,#08755e 100%);padding:95px 0 102px}.opportunity-section .section-heading{max-width:770px}.paths-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2px;background:#ffffff2b}.path{background:#062444cc;padding:32px 28px;position:relative;min-height:300px;text-align:left;transition:background .25s}.path:hover{background:#031a32}.path h3{font-size:25px;margin-bottom:20px}.path p{color:#d0dce8;font-size:16px;margin-bottom:0;max-width:360px}.program-section{padding:100px 0}.program-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:74px;align-items:center}.program-image{height:560px;overflow:hidden}.program-image img{height:100%;object-fit:cover;object-position:60% center}.program-copy h2{font-size:42px;line-height:1.4;letter-spacing:-.02em;margin-bottom:25px}.program-copy p{max-width:450px;font-size:17px}.program-copy ul{padding:0;list-style:none;display:flex;gap:6px 20px;flex-wrap:wrap;color:#52616c;font-size:13px;margin-top:28px}.closing{padding-block:105px 100px}.closing h2{font-size:48px;line-height:1.35;letter-spacing:-.025em;margin-bottom:32px;max-width:740px}.site-footer{border-top:1px solid var(--line);padding-top:45px;padding-bottom:28px}.footer-top{display:flex;align-items:start;gap:36px}.footer-top p{font-size:17px;margin-bottom:8px}.footer-top small{color:var(--muted);font-size:12px}.site-footer>nav{display:flex;gap:18px 34px;flex-wrap:wrap;padding-block:38px;font-size:14px}.footer-bottom{display:flex;gap:28px;align-items:center;border-top:1px solid var(--line);padding-top:22px;font-size:11px;color:#c9d6dc}.footer-bottom button{background:none;padding:5px 0;font-size:11px}.footer-bottom>a:last-child{margin-left:auto;font-size:24px}
.carousel{position:absolute;inset:0;z-index:-2;overflow:hidden;background:#0b273c}.carousel-viewport,.carousel-track{height:100%;width:100%}.carousel-viewport{overflow:hidden}.carousel-track{display:flex;transition:transform .75s var(--ease);will-change:transform}.carousel-slide{flex:0 0 100%;height:100%;margin:0;position:relative}.carousel-image{width:100%;height:100%;object-fit:cover}.carousel-controls{position:absolute;z-index:4;display:flex;align-items:center;gap:11px}.carousel-arrow{display:grid;place-items:center;width:42px;height:42px;border:1px solid #ffffff80;border-radius:50%;background:#061d2dcc;color:white;font-size:20px;line-height:1;transition:background .2s,border-color .2s,color .2s,transform .2s}.carousel-arrow:hover,.carousel-arrow:focus-visible{background:var(--brand);border-color:var(--brand);color:var(--ink);transform:translateY(-2px)}.carousel-dots{display:flex;align-items:center;gap:7px}.carousel-dot{width:8px;height:8px;border:1px solid #ffffffb8;border-radius:50%;padding:0;background:transparent}.carousel-dot[aria-pressed=true]{background:var(--brand);border-color:var(--brand);transform:scale(1.25)}.cover-carousel .carousel-image{object-position:60% top}.cover-carousel .carousel-controls{right:30px;bottom:30px}.cover-story:after,.insight-feature:after{pointer-events:none}.cover-top,.cover-story>.white-button{position:relative;z-index:3}.cover-story>.white-button{position:absolute}.feature-carousel .carousel-image{object-position:center}.feature-carousel .carousel-controls{right:clamp(24px,5.6vw,84px);bottom:30px}.site-menu{overflow:auto}.site-menu .dialog-bar{position:sticky;top:0;background:var(--navy);z-index:2;padding-top:4px}.menu-grid section{border-top:1px solid var(--line);padding-top:18px}.menu-grid section h2{letter-spacing:-.02em}.menu-grid section>a{min-height:38px;align-items:center}.menu-grid section>a>span{transition:opacity .2s,transform .2s}.menu-grid section>a:hover>span{transform:translateX(4px)}
/* Membership entry uses the same column gap as the image stack. */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.membership-card{background:#2a404e;padding:38px clamp(22px,2.5vw,42px);text-align:center;min-width:0;width:100%}.membership-card h2,html[lang=en] .membership-card h2{font:400 clamp(23px,1.9vw,30px)/1.45 var(--sans);margin:0 0 14px}.membership-card>p{font-size:14px;line-height:1.65;color:#e3ebf0;margin:0 auto 22px;max-width:370px}.member-modes{display:flex;justify-content:center;gap:22px;margin-bottom:20px}.member-modes button{background:none;padding:7px 0;border-bottom:2px solid transparent;font-size:14px;color:#cbd8e0}.member-modes button[aria-pressed=true]{color:#fff;border-color:var(--brand)}.member-email-row{display:flex;background:white;min-height:56px}.member-email-row input{border:0;min-width:0;flex:1;width:100%;padding:15px 18px;background:white;color:var(--ink);border-radius:0;font-size:15px}.member-email-row button{width:58px;flex-shrink:0;background:var(--brand);color:#fff;font-size:28px;line-height:1}.member-email-row button:hover{background:var(--brand-hover)}.membership-card>small{display:block;font-size:11px;line-height:1.6;color:#bfced8;margin-top:18px}.member-dialog{width:min(580px,calc(100% - 32px));max-height:calc(100dvh - 48px);padding:30px 38px 38px}.member-dialog h2{font:600 30px/1.4 var(--sans)}.member-address{overflow-wrap:anywhere;color:#526570;font-size:16px}.member-application label{display:block;font-size:14px;margin:20px 0}.member-application input{display:block;width:100%;min-height:48px;padding:10px 12px;border:1px solid #b8c8d1;margin-top:8px;background:white;color:var(--ink);border-radius:0}.member-dialog>small{display:block;margin-top:18px;color:#536773;font-size:12px}.member-status{background:#eaf2f6;padding:18px;color:var(--ink);font-size:15px;margin:22px 0 0}[hidden]{display:none!important}
/* Navigation, search, and collaboration stay local and keyboard accessible. */
dialog{border:0;max-width:none;padding:0;color:var(--ink);background:white;overscroll-behavior:contain}dialog::backdrop{background:#02121de0;backdrop-filter:blur(6px)}.dialog-bar{display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:1px solid #c9d5dd;padding-bottom:20px;margin-bottom:32px;font-size:15px}.dialog-bar>span{font-weight:600}.close-button{font-size:32px;line-height:1}.site-menu{width:100%;height:100dvh;max-height:none;margin:0;background:var(--navy);color:white;padding:30px var(--gutter) 60px}.site-menu .dialog-bar{border-color:var(--line)}.menu-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:42px 60px;margin-bottom:40px}.menu-grid section h2{font:600 23px/1.4 var(--sans);margin-bottom:18px}.menu-grid section>a{display:flex;justify-content:space-between;gap:10px;color:#c5d4dc;font-size:14px;padding:7px 0}.menu-grid section>a:hover{color:white}.menu-grid section>a>span{opacity:0}.menu-grid section>a:hover>span{opacity:1}.search-dialog,.cooperate-dialog{width:min(700px,calc(100% - 32px));max-height:calc(100dvh - 48px);padding:30px 42px 42px}.search-field{display:block}.search-field>span{display:block;font-size:13px;margin-bottom:12px}.search-field input{border:0;border-bottom:2px solid var(--navy);width:100%;font-size:25px;padding:12px 0;background:white;color:var(--ink);border-radius:0}.search-field input::placeholder{color:#687985}.search-dialog #search-results{padding-top:22px}.search-result{display:flex;justify-content:space-between;padding:12px 0;border-bottom:1px solid #e0e5e8;font-size:16px}.search-result:hover{color:var(--brand)}.cooperate-dialog h2{font-size:34px;line-height:1.4;letter-spacing:-.02em;margin-bottom:20px}.cooperate-dialog>p{font-size:16px;color:#40525d}.choices{display:grid;gap:8px;margin:26px 0}.choice{padding:17px 18px;border:1px solid #d5e0e5;background:white;color:#061e2d;display:flex;align-items:center;justify-content:space-between;text-align:left}.choice[aria-pressed=true]{background:#062538;color:white;border-color:#062538}.choice-description{min-height:60px}.cooperate-dialog>.dark-button{margin-top:12px}
.reveal{transition:opacity .7s var(--ease),transform .9s var(--ease)}.reveal.is-pending{opacity:0;transform:translateY(28px)}@keyframes arrive{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.motion-paused *, .motion-paused *:before,.motion-paused *:after{animation-play-state:paused!important;transition:none!important}.motion-paused .reveal{opacity:1;transform:none}
@media(min-width:1700px){.lead{min-height:300px}.people-card{height:470px}.silicon-card{height:365px}.story-column-offset{padding-top:60px}.digital-card{height:350px}.health-card{height:450px}.cover-story{min-height:770px}.card-copy h2{font-size:27px}.industry-plus{top:260px}}
.site-footer[data-site-shell="footer"] .footer-top>div{display:flex;flex-direction:column;align-items:flex-start;gap:9px}.association-link{display:inline-flex;align-items:center;gap:10px;margin-top:8px;color:var(--brand);font-size:12px}.association-link:hover{color:#fff}.footer-links{display:flex;justify-content:flex-end;padding-bottom:28px}.footer-social{display:flex;align-items:center;gap:18px;flex-wrap:wrap}.footer-social>.eyebrow{margin:0;color:var(--muted);font-size:10px}.social-links{display:flex;gap:8px;flex-wrap:wrap}.social-link{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:8px 12px;border:1px solid var(--line);color:#e4edf0;font-size:11px;transition:background .2s,color .2s,border-color .2s}.social-link:hover,.social-link:focus-visible{background:var(--brand);border-color:var(--brand);color:var(--ink)}
@media(max-width:1190px){.site-header{gap:18px}.desktop-nav{gap:18px}.desktop-nav a{font-size:13px}.brand{width:146px}.header-tools{gap:12px}.lead{padding-right:15px;min-height:260px}.lead h1{font-size:42px}.lead-bottom{gap:22px}.lead p{font-size:15px}.circle-arrow{height:54px;width:54px;flex-basis:54px;font-size:34px}.card-copy{left:20px;right:20px;bottom:22px}.card-copy h2,html[lang=en] .card-copy h2{font-size:21px}.cover-top{padding:26px}.cover-top h2,html[lang=en] .cover-top h2{font-size:29px}.industries-grid{gap:18px}.industry-item h3{font-size:20px}.geography-grid{gap:40px}.program-grid{gap:48px}}
@media(max-width:1000px){.desktop-nav{display:none}.site-header{min-height:88px;padding:17px 24px;gap:24px}.brand{width:164px}.header-tools{margin-left:auto;gap:24px}.opening{padding-top:30px}.opening{--story-gap:18px}.opening-grid{grid-template-columns:1.15fr 1fr}.lead{min-height:270px}.lead h1{font-size:36px}.lead-bottom{gap:14px}.lead p{font-size:14px}.circle-arrow{height:43px;width:43px;flex-basis:43px;font-size:28px}.people-card{height:340px}.silicon-card{height:270px}.digital-card{height:275px}.health-card{height:330px}.story-column-offset{padding-top:40px}.card-copy{left:16px;right:16px;bottom:20px}.card-copy h2,html[lang=en] .card-copy h2{font-size:18px}.cover-story{min-height:610px}.cover-top{padding:24px}.cover-top h2,html[lang=en] .cover-top h2{font-size:27px}.section-intro{gap:20px 40px}.section-intro h2{font-size:35px}.section-intro p{font-size:16px}.industries-grid{grid-template-columns:repeat(2,1fr);gap:35px 28px}.industry-plus{top:calc((100vw - var(--gutter)*2 - 28px)/3 + 46px)}.section-heading h2{font-size:42px}.geography-grid{gap:25px}.land-visual{min-height:470px}.geography-story>h3{font-size:27px}.earth-frame{height:330px}.path{padding:28px 22px}.path h3{font-size:22px}.path p{font-size:15px}.program-image{height:500px}.program-copy h2{font-size:36px}.menu-grid{gap:32px}.feature-copy{max-width:480px}}
@media(max-width:700px){html{scroll-padding-top:25px}.site-header{min-height:78px;padding:14px 20px;gap:20px}.brand{width:142px}.header-tools{gap:16px}.menu-trigger{margin-right:0}.opening{padding-top:26px;padding-bottom:68px}.opening{--story-gap:16px}.opening-grid{display:flex;flex-direction:column;gap:24px;align-items:stretch}.opening-left,.opening-right{display:contents}.membership-card{order:3}.lead{order:0;padding:0;min-height:0;margin-bottom:12px}.lead h1{font-size:38px;line-height:1.3;margin-bottom:22px}.lead p{font-size:16px;line-height:1.75;max-width:440px}.lead-bottom{gap:24px;align-items:center}.circle-arrow{width:48px;height:48px;flex-basis:48px;font-size:31px}.cover-story{order:1;min-height:530px}.cover-top h2,html[lang=en] .cover-top h2{font-size:30px}.cover-story>.white-button{left:24px;bottom:24px}.lead-stories{order:2;gap:var(--story-gap);width:100%}.story-column-offset{padding-top:35px}.people-card{height:330px}.silicon-card{height:250px}.digital-card{height:270px}.health-card{height:330px}.card-copy h2,html[lang=en] .card-copy h2{font-size:19px}.card-copy .eyebrow{font-size:10px}.industry-section{padding:67px 0}.section-intro{display:block;margin-bottom:35px}.section-intro>.eyebrow{margin-bottom:18px}.section-intro h2{font-size:32px;line-height:1.4;margin-bottom:22px}.section-intro p{max-width:490px;font-size:16px}.industries-grid{gap:28px 18px}.industry-item h3{font-size:19px;margin-right:20px}.industry-item summary img{margin-bottom:17px}.industry-number{font-size:10px}.industry-item summary p{font-size:12px;min-height:43px}.industry-plus{top:calc((100vw - 66px)/3 + 38px);font-size:23px}.industry-description p{font-size:14px}.insight-feature{min-height:520px}.insight-feature:after{background:linear-gradient(90deg,#031522e8,#03152277)}.feature-copy{padding-block:70px;max-width:420px}.feature-copy h2{font-size:35px}.feature-copy p{font-size:17px;max-width:360px}.taiwan-section{padding-block:67px}.section-heading{margin-bottom:35px}.section-heading h2{font-size:35px}.section-heading p{font-size:17px}.geography-grid{grid-template-columns:1fr;gap:38px}.land-visual{min-height:470px;max-height:620px;aspect-ratio:.9}.geography-story{padding-top:0}.geography-story>h3{font-size:30px}.earth-frame{height:auto;aspect-ratio:1.2;max-height:430px}.opportunity-section{padding:68px 0}.paths-grid{grid-template-columns:1fr;gap:1px}.path{min-height:0;padding:28px}.path p{max-width:none}.program-section{padding:64px 0}.program-grid{grid-template-columns:1fr;gap:35px}.program-image{height:360px}.program-copy h2{font-size:34px}.program-copy p{font-size:17px}.closing{padding-block:67px}.closing h2{font-size:35px}.footer-top{flex-direction:column;gap:25px}.footer-top p{font-size:16px}.site-footer>nav{gap:12px 25px;font-size:13px}.footer-bottom{gap:20px;flex-wrap:wrap}.menu-grid{grid-template-columns:1fr 1fr;gap:35px 28px}.menu-grid section h2{font-size:20px}.menu-grid section>a{font-size:13px}.search-dialog,.cooperate-dialog{padding:24px}.dialog-bar{font-size:13px}.cooperate-dialog h2{font-size:28px}.search-field input{font-size:20px}}
@media(max-width:380px){.site-header{gap:14px}.brand{width:130px}.header-tools{gap:10px}.lead h1{font-size:33px}.lead p{font-size:15px}.circle-arrow{display:none}.card-copy h2,html[lang=en] .card-copy h2{font-size:17px}.people-card{height:285px}.silicon-card{height:250px}.industry-item h3{font-size:17px}.industry-item summary p{font-size:11px}.menu-grid{grid-template-columns:1fr}.footer-bottom{gap:16px}}

/* Round 08 shared header mega menu and the single-cell Taiwan modes. */
.site-header{overflow:visible}.desktop-nav{height:64px}.header-menu{position:static;height:64px}.header-menu>summary{list-style:none;display:flex;align-items:center;gap:8px;height:64px;padding:13px 0;cursor:pointer;font-size:14px;line-height:1.3}.header-menu>summary::-webkit-details-marker{display:none}.header-menu>summary>span{font-size:16px;color:var(--brand);opacity:.9;transition:transform .2s}.header-menu[open]>summary{color:var(--brand)}.header-menu[open]>summary>span{transform:rotate(45deg)}.header-menu-panel{position:absolute;z-index:30;left:0;right:0;top:100%;display:grid;grid-template-columns:minmax(210px,.7fr) minmax(0,1.6fr);gap:35px;padding:32px clamp(24px,5vw,80px) 38px;background:#fff;color:var(--ink);border-top:3px solid var(--brand);box-shadow:0 22px 50px #00131f35}.header-menu-lead{padding-right:28px;border-right:1px solid var(--line)}.header-menu-lead .eyebrow{display:block;margin-bottom:18px;color:var(--ink-muted);font-size:10px}.header-menu-title{display:flex;justify-content:space-between;gap:18px;font:600 25px/1.25 var(--sans);color:var(--navy)}.header-menu-lead p{max-width:250px;margin-top:20px;color:var(--ink-muted);font-size:13px;line-height:1.8}.header-menu-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 26px}.header-menu-link{display:grid;grid-template-columns:25px minmax(0,1fr) 16px;align-items:center;gap:9px;min-height:60px;border-top:1px solid var(--line);color:var(--ink);font-size:13px}.header-menu-link>span{color:var(--brand);font-size:10px}.header-menu-link>strong{font-weight:500;line-height:1.45}.header-menu-link:hover{color:var(--brand)}.header-menu-link>span:last-child{color:currentColor}.taiwan-focus-card{background:#062538;color:white;padding:38px clamp(24px,5vw,70px) 48px;border-top:3px solid var(--brand);box-shadow:0 20px 55px #00131f25}.taiwan-focus-nav{display:flex;align-items:center;justify-content:space-between;padding-bottom:24px;border-bottom:1px solid #b4c8d340}.taiwan-focus-nav .eyebrow{color:#b9d8e8}.taiwan-focus-note{font-size:10px;letter-spacing:1.5px;color:#a5c7d4}.taiwan-focus-mode{border-bottom:1px solid #b4c8d340}.taiwan-focus-mode>summary{list-style:none;display:flex;justify-content:space-between;align-items:center;gap:15px;padding:24px 0;cursor:pointer;font:600 17px/1.4 var(--sans);color:#fff}.taiwan-focus-mode>summary::-webkit-details-marker{display:none}.taiwan-focus-mode>summary>span{color:var(--brand);font-size:23px}.taiwan-focus-mode[open]>summary>span{transform:rotate(45deg)}.taiwan-focus-panel{padding:10px 0 34px}.taiwan-focus-panel .section-heading{color:#fff;margin-bottom:38px}.taiwan-focus-panel .section-heading h2{color:#fff}.taiwan-focus-panel .section-heading p{color:#c6d7df}.taiwan-focus-panel .eyebrow{color:#9fd6e7}.taiwan-focus-panel .geography-grid{margin-top:10px}.taiwan-focus-panel .geography-story>h3,.taiwan-focus-panel .geography-story>p{color:#fff}.taiwan-focus-panel .text-link{color:#fff}.taiwan-activity-panel{padding-top:18px}.taiwan-activity-meta{display:flex;flex-wrap:wrap;gap:9px;margin:6px 0 30px}.taiwan-activity-meta span{padding:8px 11px;border:1px solid #8cb9c655;border-radius:99px;color:#c8e4eb;font-size:10px;letter-spacing:.7px}.taiwan-activity-panel .white-button{display:inline-flex}
@media(max-width:1000px){.header-menu{height:auto}.header-menu>summary{height:54px}.header-menu-panel{position:static;display:block;padding:18px 0 25px;background:transparent;color:white;border-top:0;border-bottom:1px solid var(--line);box-shadow:none}.header-menu-lead{padding:0 0 16px;border-right:0;border-bottom:1px solid #ffffff2c}.header-menu-lead .eyebrow{color:#b9d8e8}.header-menu-title{color:white;font-size:20px}.header-menu-lead p{color:#c5d7df}.header-menu-grid{display:block}.header-menu-link{border-top:1px solid #ffffff24;color:#d7e6ec;min-height:52px}.header-menu-link:hover{color:white}.taiwan-focus-card{padding-inline:24px}.taiwan-focus-panel .geography-grid{grid-template-columns:1fr}.taiwan-focus-panel .land-visual{min-height:390px}.taiwan-focus-panel .geography-story{padding-top:20px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.reveal.is-pending{opacity:1;transform:none}}

/* Release layout refinements: an editorial blue field, readable navigation, and aligned stories. */
.opportunity-section{background:#0a263f}
.header-menu-panel{white-space:normal;align-items:start}
.header-menu-lead,.header-menu-grid,.header-menu-link{min-width:0}
.header-menu-lead p{max-width:340px;white-space:normal;overflow-wrap:break-word;color:#526574;font-size:15px;line-height:1.6}
.header-menu-lead .eyebrow{color:#526574}
.header-menu-title{display:block;white-space:normal;font-size:clamp(24px,2.1vw,32px)}
.header-menu-link{grid-template-columns:28px minmax(0,1fr);gap:12px;min-height:66px;padding:12px 0;white-space:normal}
.header-menu-link strong{min-width:0;overflow-wrap:break-word;font-size:15px;line-height:1.45}
.cover-story:after{background:linear-gradient(180deg,#031d32dc 0%,#031d3288 30%,#031d3200 66%,#031728bd 100%)}
.cover-top{max-width:min(82%,440px)}
.cover-carousel .carousel-slide:nth-child(2) .carousel-image{object-position:40% top}
@media(min-width:1001px){
  .header-menu-panel{grid-template-columns:minmax(250px,.42fr) minmax(0,1fr);gap:clamp(34px,4vw,70px);padding-block:38px 44px}
  .header-menu-lead{padding-right:clamp(24px,3vw,46px)}
  .header-menu-grid{gap:0 clamp(24px,3vw,48px)}
}
@media(max-width:1000px){
  .header-menu-lead p{color:#c5d7df}
  .story-column-offset{padding-top:0}
  .people-card,.silicon-card{height:340px}
  .digital-card,.health-card{height:330px}
}
@media(max-width:700px){
  .people-card,.silicon-card{height:330px}
  .digital-card,.health-card{height:300px}
  .cover-top{max-width:88%}
}
@media(max-width:380px){
  .people-card,.silicon-card{height:285px}
  .digital-card,.health-card{height:290px}
}

/* Brand colors sampled from retained TINAI SVG, 2026-09-23. */
.circle-arrow{background:#ffffff24;color:white;border:1px solid #ffffff42}
.circle-arrow:hover,.member-email-row button:hover{background:var(--brand-hover);color:var(--ink)}
.member-email-row button{background:var(--brand);color:var(--ink)}
.dark-button:hover{background:var(--brand);color:var(--ink)}
.search-result:hover{color:var(--brand-text)}
.choice[aria-pressed=true]{background:var(--brand);color:var(--ink);border-color:var(--brand)}

/* Approved imageboard imagery in the opportunities section only. */
.opportunity-section .paths-grid{gap:16px;background:none}
.opportunity-section .path{min-height:390px;padding:0 0 26px;background:#12334a;overflow:hidden;display:flex;flex-direction:column;align-items:flex-start}
.opportunity-section .path:hover{background:#173b52}
.opportunity-section .path>img,.opportunity-section .path>picture>img{width:100%;height:185px;object-fit:cover;margin-bottom:23px}
.opportunity-section .path>.eyebrow,.opportunity-section .path>h3,.opportunity-section .path>p{margin-left:26px;margin-right:26px}
@media(max-width:700px){.opportunity-section .path{min-height:0}.opportunity-section .path>img,.opportunity-section .path>picture>img{height:200px}}

/* Local prototype: utility-first hamburger menu and a light opportunities field. */
.site-menu .menu-topbar{display:grid;grid-template-columns:minmax(145px,190px) minmax(0,1fr) auto;align-items:center;gap:24px;border:0;padding:8px 0 24px;margin-bottom:24px}
.site-menu .menu-brand{display:block;width:min(190px,100%)}
.site-menu .menu-brand img{width:100%;height:auto}
.site-menu .menu-actions{display:flex;align-items:center;justify-content:flex-end;gap:clamp(18px,2.4vw,38px)}
.site-menu .menu-cooperate{min-height:46px;padding:10px 20px;background:#fff;color:var(--navy);white-space:nowrap;font-weight:600}
.site-menu .menu-cooperate:hover{background:var(--brand)}
.site-menu .menu-search{display:inline-flex;align-items:center;gap:11px;min-height:44px;padding:4px 0;background:transparent;color:#fff;white-space:nowrap}
.site-menu .menu-search-icon{display:inline-block;width:17px;height:17px;border:2px solid currentColor;border-radius:50%;position:relative}
.site-menu .menu-search-icon:after{content:'';position:absolute;width:8px;height:2px;background:currentColor;right:-6px;bottom:-3px;transform:rotate(48deg)}
.site-menu .menu-language{display:inline-flex;align-items:center;min-height:44px;white-space:nowrap;font-size:15px}
.site-menu .menu-grid section{border-top:0;padding-top:0}
.site-menu .menu-grid{margin-bottom:0}
.opportunity-section{background:#f3f6f5;color:var(--ink)}
.opportunity-section .section-heading p{color:#455d69}
.opportunity-section .path{color:#fff}
@media(max-width:700px){
 .site-menu{padding:20px 24px 40px}
 .site-menu .menu-topbar{grid-template-columns:minmax(0,1fr) auto;gap:16px 12px;padding:0 0 20px;margin-bottom:22px}
 .site-menu .menu-brand{grid-column:1;grid-row:1;width:155px;max-width:100%}
 .site-menu .menu-topbar>.close-button{grid-column:2;grid-row:1}
 .site-menu .menu-actions{grid-column:1/-1;grid-row:2;justify-content:space-between;gap:12px}
 .site-menu .menu-cooperate{min-height:42px;padding:8px 13px;font-size:13px}
 .site-menu .menu-search,.site-menu .menu-language{font-size:13px}
 .site-menu .menu-grid{gap:30px 24px}
}
@media(max-width:480px){.site-menu .menu-grid{grid-template-columns:1fr}}

/* The city cover crossfades whole photographs, so a neighboring slide never peeks in. */
.cover-carousel .carousel-track{position:relative;display:block;transition:none;will-change:auto}
.cover-carousel .carousel-slide{position:absolute;inset:0;width:100%;height:100%;opacity:0;pointer-events:none;transition:opacity .55s ease}
.cover-carousel .carousel-slide[aria-hidden="false"]{opacity:1;z-index:1}
.cover-carousel .carousel-image{z-index:0}

/* The left headline leads; the destination links read without index numbers. */
.header-menu-lead{display:flex;flex-direction:column;justify-content:center}
.header-menu-title{font-size:clamp(36px,3.1vw,48px);line-height:1.18;font-weight:600}
.header-menu-lead p{margin-top:24px;max-width:360px}
.header-menu-link{display:flex;align-items:center;min-height:70px;padding:13px 0}
.header-menu-link strong{font-size:18px;font-weight:500;line-height:1.35}
.header-menu-link:hover{color:var(--brand-text)}
@media(min-width:1001px){
 .header-menu-panel{grid-template-columns:minmax(300px,.5fr) minmax(0,1fr)}
 .desktop-nav .header-menu-title{font-size:clamp(38px,3.4vw,52px);line-height:1.14;letter-spacing:-.035em;padding:0}
 .desktop-nav .header-menu-lead p{font-size:clamp(17px,1.3vw,20px);line-height:1.55}
 .desktop-nav .header-menu-link strong{font-size:clamp(16px,1.1vw,18px)}
 .desktop-nav .header-menu-panel a::after{display:none}
}

/* On small screens the opening action is a labeled button below the copy. */
.circle-arrow .lead-cta-label{display:none}
.circle-arrow .lead-cta-arrow{line-height:1}
@media(max-width:700px){
 .site-header{gap:12px}
 .menu-trigger{width:44px;min-width:44px;height:44px;margin-right:0}
 .search-trigger{width:44px;height:44px}
 .header-tools{gap:6px}
 .header-tools .language{display:grid;place-items:center;min-width:44px;min-height:44px;padding:0}
 .lead-bottom{display:block}
 .lead-bottom p{margin-bottom:22px}
 .circle-arrow{display:inline-flex;align-items:center;justify-content:space-between;gap:24px;width:min(100%,310px);height:54px;padding:0 20px;border:0;border-radius:0;background:var(--brand);color:var(--ink);font-size:16px;font-weight:600;line-height:1.25}
 .circle-arrow .lead-cta-label{display:inline}
 .circle-arrow .lead-cta-arrow{font-size:27px;font-weight:400}
}
@media(max-width:380px){.circle-arrow{display:inline-flex}}

/* Keep the actual social brand marks legible and equally sized at every breakpoint. */
.social-links{gap:10px}
.social-link{width:46px;height:46px;min-height:46px;padding:0;border-radius:50%}
.social-link img{display:block;width:20px;height:20px;object-fit:contain;filter:brightness(0) invert(1)}
.social-link:hover img,.social-link:focus-visible img{filter:brightness(0)}

/* Use the brand color for calls to action and solid controls over photographs. */
.white-button:hover,.white-button:focus-visible{background:var(--brand);color:var(--ink)}
.feature-carousel .carousel-arrow{background:var(--navy);border-color:var(--navy);color:#fff}
.feature-carousel .carousel-arrow:hover,.feature-carousel .carousel-arrow:focus-visible{background:var(--brand);border-color:var(--brand);color:var(--ink)}
.feature-carousel .carousel-dot{background:#fff;border-color:#fff;opacity:1}
.feature-carousel .carousel-dot[aria-pressed=true]{background:var(--brand);border-color:var(--brand)}

/* V2 navigation: one utility row, a deliberate editorial lead, then the site map. */
.site-menu{padding:0;background:var(--navy)}
.site-menu .menu-shell{width:min(1480px,calc(100% - clamp(48px,7vw,128px)));min-height:100dvh;margin-inline:auto;padding:30px 0 70px}
.site-menu .menu-topbar{display:grid;grid-template-columns:minmax(145px,190px) minmax(0,1fr) 48px;align-items:center;gap:22px;margin:0;padding:0;background:var(--navy);border:0}
.site-menu .menu-actions{display:flex;justify-content:flex-end;align-items:center;gap:10px}
.site-menu .menu-search,.site-menu .menu-language,.site-menu .menu-topbar>.close-button{min-height:48px;background:#17384f;color:#fff;transition:background .2s,color .2s}
.site-menu .menu-search{min-width:170px;justify-content:flex-start;padding:0 20px;font-size:15px}
.site-menu .menu-language{display:grid;place-items:center;min-width:64px;padding:0 12px;font-size:14px}
.site-menu .menu-cooperate{display:inline-flex;align-items:center;justify-content:space-between;gap:20px;min-height:48px;padding:0 20px;background:var(--brand);color:var(--ink);font-size:15px;font-weight:600}
.site-menu .menu-cooperate:hover,.site-menu .menu-cooperate:focus-visible{background:var(--brand-hover)}
.site-menu .menu-search:hover,.site-menu .menu-language:hover,.site-menu .menu-topbar>.close-button:hover{background:#24516a;color:#fff}
.site-menu .menu-topbar>.close-button{width:48px;height:48px;padding:0;font-size:27px}
.site-menu .menu-content{display:grid;grid-template-columns:minmax(280px,.64fr) minmax(0,1.36fr);align-items:start;gap:clamp(38px,5vw,90px);padding-top:clamp(54px,6vw,90px)}
.site-menu .menu-intro{min-height:350px;padding:clamp(30px,3vw,48px);background:#15374e}
.site-menu .menu-kicker{display:block;margin-bottom:32px;color:var(--brand);font-size:11px;font-weight:600;letter-spacing:.12em}
.site-menu .menu-intro h2{margin:0 0 26px;color:#fff;font:600 clamp(36px,3vw,48px)/1.16 var(--serif);letter-spacing:-.025em}
html[lang=en] .site-menu .menu-intro h2{font-family:Georgia,'Times New Roman',serif;font-weight:400}
.site-menu .menu-intro p{max-width:330px;margin:0;color:#cedce4;font-size:16px;line-height:1.7}
.site-menu .menu-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:44px clamp(36px,4vw,70px);margin:0}
.site-menu .menu-section{min-width:0;padding:0;border:0}
.site-menu .menu-section h3{margin:0 0 14px;color:#fff;font:600 21px/1.3 var(--sans);letter-spacing:-.015em}
.site-menu .menu-section h3 a{color:inherit}
.site-menu .menu-section h3 a:hover,.site-menu .menu-section h3 a:focus-visible{color:var(--brand)}
.site-menu .menu-section>a{display:block;min-height:36px;padding:5px 0;color:#c7d7e0;font-size:15px;line-height:1.5}
.site-menu .menu-section>a:hover,.site-menu .menu-section>a:focus-visible{color:var(--brand)}
@media(max-width:900px){
 .site-menu .menu-topbar{grid-template-columns:minmax(0,1fr) 48px;gap:22px 16px}
 .site-menu .menu-brand{grid-column:1;grid-row:1}
 .site-menu .menu-topbar>.close-button{grid-column:2;grid-row:1}
 .site-menu .menu-actions{grid-column:1/-1;grid-row:2;justify-content:flex-start}
 .site-menu .menu-content{grid-template-columns:1fr;gap:38px;padding-top:44px}
 .site-menu .menu-intro{min-height:0;padding:32px}
 .site-menu .menu-kicker{margin-bottom:16px}
 .site-menu .menu-intro h2{margin-bottom:12px}
 .site-menu .menu-intro p{max-width:570px}
}
@media(max-width:650px){
 .site-menu .menu-shell{width:calc(100% - 40px);padding:20px 0 48px}
 .site-menu .menu-topbar{gap:18px 10px}
 .site-menu .menu-brand{width:155px}
 .site-menu .menu-actions{display:grid;grid-template-columns:minmax(0,1fr) 56px;gap:8px;width:100%}
 .site-menu .menu-search{grid-column:1;min-width:0}
 .site-menu .menu-language{grid-column:2;min-width:0}
 .site-menu .menu-cooperate{grid-column:1/-1;width:100%;min-height:48px}
 .site-menu .menu-content{gap:30px;padding-top:30px}
 .site-menu .menu-intro{padding:26px 24px}
 .site-menu .menu-intro h2{font-size:34px}
 .site-menu .menu-intro p{font-size:14px}
 .site-menu .menu-grid{grid-template-columns:1fr;gap:30px}
 .site-menu .menu-section h3{font-size:21px}
 .site-menu .menu-section>a{min-height:40px;font-size:15px}
}

/* On phones, the city image leads; the title and actions form a clear lower panel. */
@media(max-width:700px){
 .cover-story{min-height:620px}
 .cover-top{position:absolute;inset:auto 22px 103px;max-width:none;padding:0 0 18px;border-bottom:1px solid #ffffffa8}
 .cover-top .eyebrow{margin-bottom:10px}
 .cover-top h2,html[lang=en] .cover-top h2{max-width:100%;margin:0;font-size:clamp(26px,6vw,30px);line-height:1.3}
 .cover-story>.white-button{left:22px;bottom:24px;min-height:48px;padding:9px 15px;font-size:13px}
 .cover-carousel .carousel-controls{right:22px;bottom:30px;gap:7px}
 .cover-carousel .carousel-arrow{width:36px;height:36px;font-size:18px}
 .cover-carousel .carousel-dots{gap:5px}
 .cover-carousel .carousel-dot{width:7px;height:7px}
}
@media(max-width:340px){
 .cover-story>.white-button{padding-inline:11px;font-size:12px}
 .cover-carousel .carousel-controls{right:16px;gap:5px}
 .cover-carousel .carousel-arrow{width:32px;height:32px}
}
/* The globe has a transparent edge; the navy stage remains visible around it. */
.earth-frame{overflow:hidden;isolation:isolate}
.earth-frame::before{content:"";position:absolute;inset:10% 18%;border-radius:50%;background:radial-gradient(circle,#39799b21 0%,#39799b08 62%,transparent 76%);filter:blur(15px)}
.earth-frame canvas{z-index:1}
.earth-frame .story-earth-fallback{clip-path:circle(36.8% at 49.96% 49.97%)}
.earth-frame.earth-ready .story-earth-fallback{visibility:hidden}

/* 新創週 event map (sitegen/startup_week.py): home entry banner + programmes/startup-week masthead; HTML text only */
.event-map{position:relative;margin:34px 0 8px;padding:36px clamp(20px,3.4vw,44px) 30px;border:1px solid #40d6b355;background:radial-gradient(120% 90% at 100% 0,#40d6b324,transparent 55%),linear-gradient(#ffffff09 1px,transparent 1px) 0 0/28px 28px,linear-gradient(90deg,#ffffff09 1px,transparent 1px) 0 0/28px 28px,#041c2c;color:#fff;overflow:hidden}
.event-map::before{content:"";position:absolute;left:0;top:0;width:64px;height:3px;background:var(--brand)}
.event-map-head{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:28px 40px;align-items:center}
.event-map-copy .eyebrow{color:var(--brand)}
.event-map-copy h1,.event-map-copy h2{display:flex;flex-wrap:wrap;gap:0 .9em;margin:12px 0 10px;font:700 clamp(28px,3vw,42px)/1.2 var(--sans);letter-spacing:1px;color:#fff}
.event-map-copy p{color:var(--brand-hover);font-size:clamp(15px,1.4vw,19px);font-weight:600;line-height:1.5}
.event-map-needs{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;list-style:none;margin:0;padding:0}
.event-map-needs li{display:grid;justify-items:center;gap:6px;padding:14px 4px 12px;border:1px solid #b4c8d333;background:#0a2a3fcc;text-align:center}
.event-map-needs svg,.event-map-tag svg{fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.event-map-needs svg{width:40px;height:40px;padding:8px;border:1px solid var(--brand);border-radius:50%;color:var(--brand);box-shadow:0 0 18px #40d6b333}
.event-map-needs strong{font-size:15px;color:#fff}
.event-map-needs span{font-size:12px;color:var(--muted);line-height:1.35}
.event-map-stop{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin-bottom:10px}
.event-map-stop h3{font:700 20px/1.3 var(--sans);color:#fff}
.event-map-tag{display:inline-flex;align-items:center;gap:5px;padding:3px 8px;border:1px solid var(--brand);color:var(--brand);font-size:12px;font-weight:600}
.event-map-tag svg{width:15px;height:15px}
.event-map-foot{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px 24px;margin-top:24px}
.event-map-foot p{color:var(--muted);font-size:12px}
.sw-c-online{--line:#5cc8f0}.sw-c-red{--line:#ff6f6f}.sw-c-blue{--line:#4d9fff}.sw-c-green{--line:#40d6b3}.sw-c-brown{--line:#e2b75a}
.sw-stops{display:flex;flex-wrap:wrap;gap:8px;list-style:none;margin:26px 0 0;padding:20px 0 0;border-top:1px solid #b4c8d333}
.sw-stops a{display:inline-flex;align-items:center;gap:7px;padding:6px 11px;border:1px solid #b4c8d340;background:#062538;color:#dbe7ec;font-size:13px}
.sw-stops a:hover{border-color:var(--brand);color:#fff}
.sw-dot{width:10px;height:10px;border:2px solid var(--line);border-radius:50%;background:#041c2c}
.sw-hero{padding-bottom:36px}.sw-hero .event-map{margin:22px 0 0}
.sw-lines{display:grid;grid-template-columns:1fr 1.3fr 1.15fr 1fr 1fr;gap:18px;margin-top:32px}
.sw-line-name{display:flex;align-items:center;gap:8px;margin-bottom:12px;font:600 13px/1.4 var(--sans);letter-spacing:1px;color:var(--line)}
.sw-line-name::before{content:"";width:22px;height:4px;background:var(--line)}
.sw-line ol{list-style:none;margin:0;padding:0 0 0 18px;border-left:3px solid var(--line);display:grid;gap:16px}
.sw-station{position:relative;padding:14px 14px 12px;border:1px solid #b4c8d333;border-top:2px solid var(--line);background:#062538e6;scroll-margin-top:90px}
.sw-station::before{content:"";position:absolute;left:-29px;top:16px;width:13px;height:13px;border:3px solid var(--line);border-radius:50%;background:#041c2c}
.sw-station:target{box-shadow:0 0 0 2px var(--brand)}
.sw-transfer{padding:2px 7px;border:1px dashed var(--line);color:var(--line);font-size:12px}
.sw-badge{margin:0 0 6px;padding:5px 8px;background:#ffffff10;border-left:3px solid var(--line);font-size:12px;line-height:1.45;color:#fff}
.sw-group{margin:10px 0 6px;color:var(--line);font-size:13px;font-weight:700}
.sw-group::before{content:"● "}
.sw-station ul{list-style:none;margin:0;padding:0;display:grid;gap:7px}
.sw-station li{display:flex;flex-wrap:wrap;gap:2px 7px;font-size:13px;line-height:1.5;color:#dbe7ec}
.sw-station li time{color:var(--brand);font-size:12px;font-weight:600}
.sw-station li b{font-size:12px;font-weight:600;color:var(--muted)}
.sw-station li span{flex:1 1 100%}
.sw-ev{display:flex;flex-wrap:wrap;gap:2px 7px;width:100%;color:inherit}
.sw-ev span{text-decoration:underline;text-decoration-color:#40d6b366;text-underline-offset:3px}
.sw-ev:hover span{color:#fff;text-decoration-color:var(--brand)}
.sw-ev i{font-style:normal;color:var(--brand)}
.sw-station li em{margin-left:6px;padding:0 6px;border:1px dashed #e9c46a99;color:#f1d58a;font-style:normal;font-size:12px;white-space:nowrap}
.sw-map-foot{margin-top:22px;color:var(--muted);font-size:12px}
.sw-map-foot a{color:var(--brand);text-decoration:underline;text-underline-offset:3px}
.ui-ev-feature{position:relative;padding-left:20px;padding-right:20px;background:#062538;color:#fff;border-left:4px solid var(--brand)}
.ui-ev-feature time,.ui-ev-feature .ui-ev-date span,.ui-ev-feature .ui-ev-form{color:var(--brand)}
.ui-ev-feature h3 a{color:#fff}.ui-ev-feature h3 a::after{content:"";position:absolute;inset:0}
.ui-ev-feature p{color:#c8dbe2}
@media(max-width:1100px){.sw-lines{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:1000px){.event-map-head{grid-template-columns:1fr}}
@media(max-width:700px){.event-map{margin-top:24px;padding:26px 16px 22px}.sw-hero .event-map{margin-left:-8px;margin-right:-8px}
.event-map-needs{grid-template-columns:repeat(3,minmax(0,1fr))}
.event-map-needs li{padding:12px 4px 10px}
.sw-lines{grid-template-columns:1fr}
.event-map-foot .white-button{width:100%}}

/* Startup Week calendar (startup_week.cal_html): month grid on desktop, day-by-day list of days with sessions below 900px */
.sw-hero .sw-cal{margin-top:28px}
.sw-cal-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 20px}
.sw-cal-head h2{font:700 clamp(22px,2.2vw,30px)/1.25 var(--sans);letter-spacing:1px;color:#fff}
.sw-cal-head p{color:var(--muted);font-size:14px}
.sw-cal-dow,.sw-cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;list-style:none;margin:0;padding:0}
.sw-cal-dow{margin-top:22px}
.sw-cal-dow li{padding:6px 8px;color:var(--brand);font-size:12px;font-weight:700;letter-spacing:1px}
.sw-cal-grid{margin-top:6px}
.sw-cal-day{min-height:96px;padding:8px 8px 10px;border:1px solid #b4c8d333;border-top:2px solid #40d6b399;background:#062538e6}
.sw-cal-day.is-empty{border-top-color:#b4c8d333;background:#06253866}
.sw-cal-day.is-out{opacity:.45}
.sw-cal-day h3{display:flex;justify-content:space-between;align-items:baseline;gap:6px;margin-bottom:6px}
.sw-cal-n{font:700 20px/1 var(--sans);color:#fff}
.sw-cal-label{display:none}
.sw-cal-day h3 small{color:var(--muted);font-size:12px;font-weight:600}
.sw-cal-day ul{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.sw-cal-day li{font-size:12px;line-height:1.45;color:#dbe7ec}
.sw-cal-day li>*{display:inline}
.sw-cal-day .sw-ev{display:block}
.sw-cal-day .sw-dot{display:inline-block;width:8px;height:8px;margin-right:5px;vertical-align:1px}
.sw-cal-day time{margin-right:5px;color:var(--brand);font-weight:600}
.sw-cal-day b{margin-right:5px;color:var(--muted);font-weight:600}
.sw-cal-day small{display:none}
.sw-cal-day em{display:inline-block;margin-top:2px;padding:0 5px;border:1px dashed #e9c46a99;color:#f1d58a;font-style:normal;font-size:11px}
.sw-cal-day .sw-ev:hover span{color:#fff}
@media(max-width:900px){.sw-cal-dow{display:none}
.sw-cal-grid{display:block;margin-top:14px}
.sw-cal-day{min-height:0;margin-bottom:8px;padding:12px 14px}
.sw-cal-day.is-empty,.sw-cal-day.is-out{display:none}
.sw-cal-n{display:none}.sw-cal-label{display:inline;font:700 16px/1.3 var(--sans);color:#fff}
.sw-cal-day ul{gap:10px}
.sw-cal-day li{font-size:14px}
.sw-cal-day small{display:block;margin-top:2px;color:var(--muted);font-size:12px}}

/* Startup Week key visual, poster download and map filters (總會 originals 2026-10-29; files in assets/startup-week/) */
.sw-kv{display:block;margin:18px 0 0}
.sw-kv img{display:block;width:100%;height:auto}
.sw-home-kv{display:block;margin:14px 0 0;border:1px solid #40d6b355;overflow:hidden}.sw-home-kv img{display:block;width:100%;height:auto;transition:transform .4s}.sw-home-kv:hover img{transform:scale(1.015)}.sw-home-kv:focus-visible{outline:2px solid var(--brand);outline-offset:3px}
.sw-download{display:inline-flex;align-items:center;gap:10px;min-height:44px;margin-top:16px;padding:9px 16px;border:1px solid var(--brand);color:var(--brand);font-size:14px;font-weight:600;transition:background .2s,color .2s}
.sw-download:hover{background:var(--brand);color:var(--ink)}
.sw-need{display:grid;justify-items:center;gap:6px;width:100%;height:100%;padding:14px 4px 12px;border:0;background:none;color:inherit;font:inherit;text-align:center;cursor:pointer}
.event-map-needs li:has(.sw-need){padding:0;transition:border-color .2s,background .2s}
.event-map-needs li:has(.sw-need:hover){border-color:var(--brand)}
.event-map-needs li:has(.sw-need[aria-pressed="true"]){border-color:var(--brand);background:#0f4a52}
.sw-need[aria-pressed="true"] svg{background:var(--brand);color:var(--ink)}
.sw-filters{display:flex;flex-wrap:wrap;align-items:center;gap:12px 18px;margin-top:26px;padding-top:20px;border-top:1px solid #b4c8d333}
.sw-filters[hidden]{display:none}
.sw-filter-lines{display:flex;flex-wrap:wrap;gap:8px}
.sw-line-btn,.sw-filter-reset{display:inline-flex;align-items:center;gap:7px;min-height:40px;padding:6px 12px;border:1px solid #b4c8d340;background:#062538;color:#dbe7ec;font:inherit;font-size:13px;cursor:pointer}
.sw-line-btn:hover,.sw-filter-reset:hover{border-color:var(--brand);color:#fff}
.sw-line-btn[aria-pressed="true"]{border-color:var(--brand);background:#0f4a52;color:#fff}
.sw-filter-status{margin:0;color:var(--muted);font-size:13px}
.sw-filter-reset{border-style:dashed}
.sw-filters~.sw-lines{margin-top:22px}
.sw-line[hidden],.sw-station[hidden]{display:none}
/* Map fold: collapsed to --fold with a fade into the map background; the button sits on the fade */
.sw-fold{--fold:700px;position:relative;scroll-margin-top:96px}
.sw-fold.is-folded{max-height:var(--fold);overflow:hidden}
.sw-fold.is-folded::after{content:"";position:absolute;inset:auto 0 0;height:220px;background:linear-gradient(#041c2c00,#041c2ccc 55%,#041c2c);pointer-events:none}
.sw-more{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;gap:8px;min-height:44px;margin:18px auto 0;padding:10px 22px;border:1px solid var(--brand);background:#062538;color:var(--brand);font:inherit;font-size:14px;font-weight:600;cursor:pointer}
.sw-fold.is-folded+.sw-more{margin-top:-30px}
.sw-more:hover{background:var(--brand);color:var(--ink)}
.sw-more[hidden]{display:none}
@media(max-width:700px){.sw-need{padding:12px 4px 10px}.sw-download{width:100%;justify-content:space-between}.sw-fold{--fold:900px}.sw-more{width:100%}}
/* Home cover slide 1 = Startup Week KV (designer's 4:5, sized for the cover box): fills the box, text stays inside the centered safe area;
   no cover text or tint on top while it shows. Very narrow phones show the whole image instead (title would be clipped). */
.cover-carousel .cover-kv{background:linear-gradient(#a3dbfc 50%,#3aa8d9 50%)}
.cover-kv-link{position:absolute;inset:0;display:block}
.cover-carousel .cover-kv .carousel-image{object-fit:cover;object-position:center;animation:none}
@media(max-width:340px){.cover-carousel .cover-kv .carousel-image{object-fit:contain}}
.cover-carousel .cover-kv[aria-hidden="false"]{pointer-events:auto}
.cover-story:after,.cover-story .home-sky,.cover-top{transition:opacity .55s ease,visibility .55s}
.cover-story>.white-button{transition:opacity .55s ease,visibility .55s,background .2s,color .2s}
.cover-story:has(.cover-kv[aria-hidden="false"]):after,.cover-story:has(.cover-kv[aria-hidden="false"]) .home-sky{opacity:0}
.cover-story:has(.cover-kv[aria-hidden="false"]) .cover-top,.cover-story:has(.cover-kv[aria-hidden="false"])>.white-button{opacity:0;visibility:hidden}
/* Header 新創週 link (總監 2026-10-31): hidden unless <html> has .sw-nav (sw_nav_gate, Taipei date inside the event window).
   Desktop: first item left of 聚焦臺灣, same type as the menu items. Menu dialog: first group, a plain link (no accordion). */
.header-sw,.site-menu .menu-sw{display:none}
.sw-nav .header-sw{display:flex;align-items:center;height:64px;color:var(--brand)}
.sw-nav .site-menu .menu-sw{display:block}
.site-menu .menu-sw h3 a{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:48px;color:var(--brand)}
/* 立足臺灣 two columns (總監 2026-10-31 跑版): the 390px earth sat at the top while the 560px satellite card hung below the story heading.
   Desktop: earth frame as tall as the card, both columns centered. */
@media(min-width:1001px){.taiwan-focus-panel .geography-grid{align-items:center}.taiwan-focus-panel .earth-frame{height:560px;aspect-ratio:auto}}
/* Carousel controls (總監 2026-10-31 優化): the pause glyph ❚❚ rendered as a white box on some fonts, and solid dark buttons sat heavy on the light KV.
   Pause/play drawn in CSS (icon follows aria-pressed), frosted translucent buttons, dots as short bars with the current one longer. */
.carousel-toggle-icon{display:block;width:11px;height:12px;box-sizing:border-box;border-inline:3.5px solid currentColor}
.carousel-toggle[aria-pressed=true] .carousel-toggle-icon{width:12px;margin-left:2px;border:0;background:currentColor;clip-path:polygon(0 0,100% 50%,0 100%)}
.carousel:is(.cover-carousel,.feature-carousel) .carousel-arrow{border-color:#ffffff4d;background:#061d2d99;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 6px 18px #00131f33;color:#fff}
.carousel:is(.cover-carousel,.feature-carousel) .carousel-arrow:hover,.carousel:is(.cover-carousel,.feature-carousel) .carousel-arrow:focus-visible{background:var(--brand);border-color:var(--brand);color:var(--ink)}
.carousel:is(.cover-carousel,.feature-carousel) .carousel-arrow:focus-visible{outline:2px solid #fff;outline-offset:2px}
.carousel:is(.cover-carousel,.feature-carousel) .carousel-dots{padding-inline:4px}
.carousel:is(.cover-carousel,.feature-carousel) .carousel-dot{width:8px;height:4px;border:0;border-radius:2px;background:#ffffffb3;box-shadow:0 0 0 1px #061d2d33;opacity:1;transform:none;transition:width .3s,background .3s}
.carousel:is(.cover-carousel,.feature-carousel) .carousel-dot[aria-pressed=true]{width:24px;background:var(--brand);transform:none}
.carousel:is(.cover-carousel,.feature-carousel) .carousel-dot:focus-visible{outline:2px solid #fff;outline-offset:4px}
@media(prefers-reduced-motion:reduce){.carousel .carousel-dot{transition:none}}
/* Cover carousel: the whole carousel sat at z-index -2, under the tint (:after) and home-sky, so from slide 2 on the controls were dimmed.
   The carousel box no longer makes a stacking layer: slides stay at -2, the controls rise above the tint. */
.cover-story>.cover-carousel{z-index:auto;background:none}
.cover-carousel>.carousel-viewport{position:absolute;inset:0;z-index:-2;background:#0b273c}
/* Phone: controls and the 探索臺灣 button do not fit on one row and the cover title fills the space above it; controls go to the top of the card. */
@media(max-width:700px){.cover-carousel .carousel-controls{top:20px;left:20px;right:auto;bottom:auto}.carousel:is(.cover-carousel,.feature-carousel) .carousel-dots{gap:10px}}
/* 新創週 view tabs (總監 2026-10-31): 地點 / 行事曆. Selected tab carries a background, no accent bar. */
.sw-tabs{display:flex;gap:4px;margin:30px 0 26px;border-bottom:1px solid #b4c8d340}
.sw-tabs[hidden]{display:none}
.sw-tab{display:inline-flex;align-items:center;gap:9px;min-height:48px;padding:10px 24px;border:1px solid transparent;border-bottom:0;background:transparent;color:#c6d7df;font:inherit;font-size:16px;font-weight:600;cursor:pointer;transition:background .2s,color .2s}
.sw-tab svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.sw-tab:hover{color:#fff;background:#ffffff0d}
.sw-tab[aria-selected=true]{background:#0f4a52;border-color:#b4c8d340;color:#fff}
.sw-tab[aria-selected=true] svg{color:var(--brand)}
.sw-tab:focus-visible{outline:2px solid var(--brand);outline-offset:-2px}
.sw-panel[hidden]{display:none}
@media(max-width:700px){.sw-tabs{margin:22px 0 18px}.sw-tab{flex:1;justify-content:center;padding-inline:12px}}
/* The tab bar already draws the divider above the line filters */
#sw-panel-map>.sw-filters{margin-top:0;padding-top:0;border-top:0}
/* Home Why Taiwan: linked heading/earth, CTA and sub-page entry cards (CTL-20261031-077) */
.taiwan-focus-panel .tw-heading-link{color:inherit}.taiwan-focus-panel .tw-heading-link:hover{color:var(--brand)}a.earth-frame{display:block;cursor:pointer}a.earth-frame:focus-visible,.tw-page:focus-visible{outline:2px solid var(--brand);outline-offset:3px}.tw-cta{display:inline-flex;margin-top:24px}
.tw-pages{list-style:none;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin:44px 0 0;padding:0}.tw-pages>li{min-width:0}.tw-page{position:relative;display:flex;flex-direction:column;height:100%;border:1px solid #b4c8d340;background:#ffffff08;color:#fff;transition:border-color .2s,background .2s}.tw-page:hover{border-color:var(--brand);background:#ffffff12}.tw-page picture,.tw-page img{display:block;width:100%;aspect-ratio:16/10;object-fit:cover}.tw-page h3{margin:18px 20px 8px;font:600 17px/1.45 var(--sans);color:#fff}.tw-page p{margin:0 20px 50px;color:#c6d7df;font-size:14px;line-height:1.75}.tw-page-arrow{position:absolute;right:20px;bottom:16px;color:var(--brand);font-size:20px}
@media(max-width:700px){.tw-pages{grid-template-columns:1fr;gap:14px;margin-top:32px}.tw-cta{width:100%;justify-content:center}}

/* ---- ui.css ---- */
/* TINAI UI system — Round09 inner pages.
   Builds on Round08 style.css tokens (--navy, --brand, --serif, --sans, --gutter, --ease).
   Only `ui-*` classes live here; register new components on ui-system.html first. */
:root{
 --tint:#F2F6F8;--ink-2:#4A5F6E;--rule:#D6E0E6;
 --fs-display:clamp(36px,4.6vw,60px);--fs-h2:clamp(28px,3vw,40px);--fs-h3:20px;--fs-body:17px;--fs-small:13px;
 --sp-section:clamp(64px,8vw,112px);--sp-block:clamp(32px,4vw,56px);--radius:2px;
}
.ui-page{background:var(--paper);color:var(--ink)}
.ui-page h1,.ui-page h2{letter-spacing:-.02em}
.ui-page p{font-size:var(--fs-body);line-height:1.8}

/* Hero */
.ui-hero{background:var(--navy);color:#fff;padding:28px 0 0}
.ui-breadcrumb ol{list-style:none;margin:0 0 36px;padding:0;display:flex;flex-wrap:wrap;gap:6px 0;font-size:var(--fs-small);color:var(--muted)}
.ui-breadcrumb li+li:before{content:'/';margin:0 10px;opacity:.5}
.ui-breadcrumb a:hover{color:#fff;text-decoration:underline;text-underline-offset:4px}
.ui-hero-grid{display:grid;grid-template-columns:1fr 1.05fr;gap:clamp(32px,5vw,80px);align-items:end}
.ui-hero-copy{padding-bottom:clamp(40px,5vw,72px)}
.ui-hero-copy h1{font-size:var(--fs-display);line-height:1.2;margin:0 0 24px}
.ui-hero-copy p{color:#d3dfe5;max-width:560px;margin:0 0 28px}
.ui-hero-media{aspect-ratio:16/10;overflow:hidden;align-self:stretch}
.ui-hero-media img{width:100%;height:100%;object-fit:cover}
.ui-draft{display:inline-block;font-size:12px;letter-spacing:.03em;border:1px solid #ffffff4d;padding:5px 10px;color:#d3dfe5}

/* Sub-navigation within an L1 */
.ui-subnav{position:sticky;top:0;z-index:15;background:#fff;border-bottom:1px solid var(--rule);color:var(--ink)}
.ui-subnav-track{display:flex;gap:28px;overflow-x:auto;scrollbar-width:none}
.ui-subnav-track::-webkit-scrollbar{display:none}
.ui-subnav a{flex-shrink:0;padding:18px 0 16px;font-size:14px;border-bottom:2px solid transparent;color:var(--ink-2)}
.ui-subnav a:hover{color:var(--ink)}
.ui-subnav a[aria-current=page]{color:var(--ink);border-color:var(--brand);font-weight:600}

/* Sections */
.ui-section{padding:var(--sp-section) 0 0}
.ui-section:last-child{padding-bottom:var(--sp-section)}
.ui-section-tight{padding-top:var(--sp-block)}
.ui-tint{background:var(--tint);padding-bottom:var(--sp-section);margin-top:var(--sp-section);padding-top:var(--sp-section)}
.ui-tint+.ui-section,.ui-dark+.ui-section,.ui-cta+.ui-section{padding-top:var(--sp-section)}
.ui-tint+.ui-tint{margin-top:0;padding-top:0}
.ui-dark{background:var(--navy);color:#fff;padding-bottom:var(--sp-section);margin-top:var(--sp-section)}
.ui-block-head{display:grid;grid-template-columns:1fr 1fr;gap:12px 64px;align-items:end;margin-bottom:var(--sp-block)}
.ui-block-head h2{font-size:var(--fs-h2);line-height:1.35;margin:0}
.ui-block-head p{margin:0;color:var(--ink-2);max-width:520px}
.ui-dark .ui-block-head p{color:#d3dfe5}
.ui-intro{display:grid;grid-template-columns:1fr 1.25fr;gap:24px 64px;border-top:1px solid var(--rule);padding-top:36px}
.ui-intro h2{font-size:var(--fs-h2);line-height:1.35;margin:0}
.ui-intro p:last-child{margin-bottom:0}

/* Cards */
.ui-grid{display:grid;gap:24px}
.ui-grid-2{grid-template-columns:repeat(2,1fr)}.ui-grid-3{grid-template-columns:repeat(3,1fr)}
.ui-card{display:flex;flex-direction:column;background:#fff;border:1px solid var(--rule);border-radius:var(--radius);transition:border-color .2s,box-shadow .3s,transform .3s var(--ease)}
.ui-tint .ui-card{border-color:transparent}
a.ui-card:hover,a.ui-card:focus-visible{border-color:var(--brand);box-shadow:0 0 0 1px #40d6b359,0 6px 26px #40d6b340;transform:translateY(-3px)}
@media (forced-colors:active){a.ui-card:hover,a.ui-card:focus-visible{border-color:Highlight}}
.ui-card-media{aspect-ratio:16/10;overflow:hidden}
.ui-card-media img{height:100%;object-fit:cover;transition:transform .6s var(--ease)}
a.ui-card:hover .ui-card-media img{transform:scale(1.03)}
.ui-card-body{padding:24px 24px 28px;display:flex;flex-direction:column;gap:10px;flex:1}
.ui-card-body h3{font-size:var(--fs-h3);margin:0}
.ui-card-body p{font-size:15px;line-height:1.7;margin:0;color:var(--ink-2)}
.ui-arrow{margin-top:auto;padding-top:8px;font-size:20px;color:var(--brand-text)}
.ui-tag{display:inline-block;align-self:flex-start;font-size:12px;letter-spacing:.02em;color:var(--brand-text);background:#40d6b31f;padding:3px 8px}

/* Stats */
.ui-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));border-top:1px solid #ffffff3a}
.ui-stat{padding:28px 24px 8px 0;display:flex;flex-direction:column;gap:6px}
.ui-stat strong{font:600 clamp(40px,4vw,56px)/1.1 var(--serif);color:var(--brand)}
.ui-stat span{font-size:15px}.ui-stat small{color:var(--muted);font-size:12px}
.ui-source{font-size:var(--fs-small)!important;color:var(--muted);margin:32px 0 0}

/* Feature */
.ui-feature{display:grid;grid-template-columns:1.1fr 1fr;gap:clamp(32px,5vw,80px);align-items:center}
.ui-feature-reverse .ui-feature-media{order:2}
.ui-feature-media{aspect-ratio:4/3;overflow:hidden}
.ui-feature-media img{height:100%;object-fit:cover}
.ui-feature-copy h2{font-size:var(--fs-h2);line-height:1.35;margin-bottom:20px}

/* Buttons */
.ui-button{display:inline-flex;align-items:center;gap:20px;min-height:50px;padding:13px 23px;background:var(--navy);color:#fff;font-size:15px;font-weight:500;margin-top:12px;transition:background .2s}
.ui-button:hover{background:var(--brand-deep)}
.ui-button-light{background:#fff;color:var(--navy)}.ui-button-light:hover{background:var(--brand);color:var(--navy)}
.ui-text-link{display:inline-flex;align-items:center;gap:14px;min-height:44px;font-size:15px}
.ui-text-link:hover{text-decoration:underline;text-underline-offset:6px}

/* Steps */
.ui-steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:0;border-top:1px solid var(--navy)}
.ui-steps li{padding:24px 28px 8px 0}
.ui-step-n{font:600 14px/1 var(--sans);color:var(--brand-text);letter-spacing:.05em}
.ui-steps h3{font-size:var(--fs-h3);margin:16px 0 8px}
.ui-steps p{font-size:15px;color:var(--ink-2);margin:0}
.ui-steps-contact{margin:24px 0 0;font-size:var(--fs-body);font-weight:600}
.ui-steps-contact a{color:var(--navy);text-decoration:underline;text-underline-offset:3px}

/* Directory */
.ui-chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:28px}
.ui-chip{min-height:40px;padding:8px 16px;border:1px solid var(--rule);background:#fff;color:var(--ink);font-size:14px;border-radius:999px}
.ui-chip:hover{border-color:var(--navy)}
.ui-chip[aria-pressed=true]{background:var(--navy);border-color:var(--navy);color:#fff}
.ui-dir-list{display:grid;grid-template-columns:repeat(3,1fr);gap:0;border-top:1px solid var(--rule)}
.ui-dir-item{padding:24px 24px 28px 0;border-bottom:1px solid var(--rule);display:flex;flex-direction:column;gap:8px}
.ui-dir-item[hidden]{display:none}
a.ui-dir-item:hover h3{text-decoration:underline;text-underline-offset:5px}
.ui-dir-meta{font-size:var(--fs-small);color:var(--ink-2)}
.ui-dir-item h3{font-size:18px;margin:0}
.ui-dir-item p{font-size:15px;line-height:1.7;margin:0;color:var(--ink-2)}
.ui-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:auto;padding-top:6px}
.ui-empty{color:var(--ink-2)}

/* List */
.ui-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--navy)}
.ui-list a,.ui-list li>div{display:grid;grid-template-columns:120px 1fr auto 24px;gap:24px;align-items:baseline;padding:22px 0;border-bottom:1px solid var(--rule)}
.ui-list a:hover .ui-list-title{text-decoration:underline;text-underline-offset:5px}
.ui-list time{font-size:14px;color:var(--ink-2);font-variant-numeric:tabular-nums}
.ui-list-title{font-size:18px;font-weight:500}
.ui-list-meta{font-size:var(--fs-small);color:var(--ink-2)}
.ui-list .ui-arrow{padding:0}

/* Form */
.ui-form-wrap{max-width:980px}
.ui-form{display:grid;grid-template-columns:1fr 1fr;gap:20px 24px;background:#fff;padding:clamp(24px,4vw,48px)}
.ui-field{display:flex;flex-direction:column;gap:8px}
.ui-field-wide{grid-column:1/-1}
.ui-field label{font-size:14px;font-weight:500}
.ui-req{color:var(--brand-text)}
.ui-field input,.ui-field select,.ui-field textarea{font:inherit;font-size:16px;padding:12px 14px;border:1px solid #9fb2bd;border-radius:var(--radius);background:#fff;color:var(--ink);min-height:48px}
.ui-field input:focus-visible,.ui-field select:focus-visible,.ui-field textarea:focus-visible{outline:3px solid var(--brand);outline-offset:1px;border-color:var(--navy)}
.ui-check{display:flex;gap:12px;align-items:flex-start;font-size:15px}
.ui-check input{flex:none;width:24px;height:24px;margin:1px 0 0;accent-color:var(--navy)}
.ui-form-foot{grid-column:1/-1;display:flex;justify-content:space-between;align-items:center;gap:24px;flex-wrap:wrap;border-top:1px solid var(--rule);padding-top:20px}
.ui-form-note{font-size:var(--fs-small)!important;color:var(--ink-2);margin:0;max-width:520px}
.ui-form-foot .ui-button{margin:0}
.ui-form-status{grid-column:1/-1;margin:0;padding:14px 16px;background:#40d6b326;border-left:3px solid var(--brand-text)}

/* FAQ */
.ui-faq{display:grid;grid-template-columns:1fr 1.6fr;gap:24px 64px}
.ui-faq .ui-block-head{display:block}
.ui-faq-item{border-bottom:1px solid var(--rule)}
.ui-faq-item:first-child{border-top:1px solid var(--navy)}
.ui-faq-item summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;gap:16px;padding:20px 0;font-size:17px;font-weight:500}
.ui-faq-item summary::-webkit-details-marker{display:none}
.ui-faq-item[open] summary span{transform:rotate(45deg)}
.ui-faq-item summary span{transition:transform .2s}
.ui-faq-item p{margin:0 0 20px;color:var(--ink-2)}

/* Article (L3) */
.ui-article{display:grid;grid-template-columns:280px 1fr;gap:clamp(32px,6vw,96px)}
.ui-meta{margin:0;border-top:1px solid var(--navy);position:sticky;top:80px}
.ui-meta div{padding:14px 0;border-bottom:1px solid var(--rule)}
.ui-meta dt{font-size:12px;color:var(--ink-2);margin-bottom:4px}
.ui-meta dd{margin:0;font-size:15px}
.ui-prose{max-width:720px}
.ui-prose h2{font-size:28px;line-height:1.4;margin:40px 0 16px}
.ui-prose h2:first-child{margin-top:0}

/* Notice / CTA */
.ui-notice{border-left:3px solid var(--brand-text);background:var(--tint);padding:24px 28px}
.ui-tint .ui-notice{background:#fff}
.ui-notice h2{font:600 15px/1.5 var(--sans);letter-spacing:0;margin:0 0 6px}
.ui-notice p{font-size:14px!important;line-height:1.75;margin:0;color:var(--ink-2)}
.ui-cta{background:var(--navy);color:#fff;padding:var(--sp-section) 0;margin-top:var(--sp-section)}
.ui-cta h2{font-size:var(--fs-h2);line-height:1.35;margin:0 0 16px;max-width:760px}
.ui-cta p{color:#d3dfe5;max-width:620px}
.ui-cta-actions{display:flex;flex-wrap:wrap;gap:16px 32px;align-items:center;margin-top:16px}
.ui-cta+.ui-section:last-child,.ui-cta:last-child{margin-bottom:0}

/* UI system page */
.ui-swatches{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:20px}
.ui-swatch{display:flex;flex-direction:column;gap:4px;font-size:13px}
.ui-swatch span{height:72px;border:1px solid var(--rule)}
.ui-swatch code{color:var(--ink-2)}.ui-swatch small{color:var(--ink-2)}
.ui-type p{margin:0 0 16px}
.ui-t-d{font:600 56px/1.2 var(--serif)}.ui-t-h2{font:600 40px/1.35 var(--serif)}.ui-t-h3{font-size:20px!important;font-weight:600}.ui-t-s{font-size:13px!important;letter-spacing:.04em;color:var(--ink-2)}

/* Header current L1 */
.header-menu summary[aria-current]{color:var(--brand)}

@media(max-width:1000px){
 .ui-hero-grid,.ui-feature,.ui-intro,.ui-block-head,.ui-faq,.ui-article{grid-template-columns:1fr}
 .ui-hero-copy{padding-bottom:0}
 .ui-hero-media{margin:0 calc(var(--gutter)*-1)}
 .ui-feature-reverse .ui-feature-media{order:0}
 .ui-grid-3,.ui-dir-list{grid-template-columns:repeat(2,1fr)}
 .ui-meta{position:static}
}
@media(max-width:700px){
 .ui-grid-2,.ui-grid-3,.ui-dir-list,.ui-form{grid-template-columns:1fr}
 .ui-list a{grid-template-columns:1fr 24px;gap:4px 16px}
 .ui-list time,.ui-list-meta{grid-column:1}
 .ui-list .ui-arrow{grid-column:2;grid-row:1/4;align-self:center}
 .ui-t-d{font-size:40px}.ui-t-h2{font-size:30px}
}
@media(prefers-reduced-motion:reduce){.ui-card,.ui-card-media img{transition:none}}

/* Round09 fixes: keep form fields and the home land visual inside narrow viewports. */
.ui-field{min-width:0}.ui-field select,.ui-field input,.ui-field textarea{width:100%;max-width:100%}
.geography-grid>*{min-width:0}.land-visual{max-width:100%}
@media(max-width:700px){.land-visual{min-height:0}}

/* UI system page: motion tokens */
.ui-motion-tokens{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:0;border-top:1px solid var(--navy);margin-bottom:32px}
.ui-motion-tokens div{display:grid;gap:4px;padding:18px 20px 18px 0;border-bottom:1px solid var(--rule);font-size:14px}
.ui-motion-tokens code{color:var(--ink-2)}.ui-motion-tokens span{color:var(--ink-2)}
.ui-motion-tokens i{display:block;height:6px;background:var(--rule);position:relative;overflow:hidden;margin-top:8px}
.ui-motion-tokens i:after{content:'';position:absolute;left:0;top:0;bottom:0;width:var(--w,100%);background:var(--brand)}
.ui-motion-tokens div:hover i:after{animation:ui-token var(--d) var(--m-ease-out,cubic-bezier(.16,1,.3,1)) 1}
.ui-motion-tokens .ui-curve{display:block;width:100%;height:44px;margin-top:8px;color:var(--brand-text,#08755e);border-bottom:1px solid var(--rule)}
@keyframes ui-token{from{transform:translateX(-100%)}to{transform:translateX(0)}}
.ui-motion-layers{max-width:900px}.ui-motion-layers strong{color:var(--brand-text)}

/* Footer — McKinsey-style: statement + actions, full sitemap, brand row, quiet legal line. */
.tinai-footer{background:#051C2C;color:#fff;padding:clamp(64px,8vw,112px) 0 32px}
.tf-lead{display:grid;grid-template-columns:1.3fr 1fr;gap:48px 80px;align-items:end;padding-bottom:clamp(48px,6vw,80px);border-bottom:1px solid #ffffff26}
.tf-statement{font:600 clamp(30px,3.4vw,48px)/1.3 var(--serif);letter-spacing:-.02em;margin:0}
html[lang=en] .tf-statement{font-family:Georgia,'Times New Roman',serif;font-weight:400}
.tf-actions{display:grid;gap:28px}
.tf-contact{display:inline-flex;align-items:center;justify-content:space-between;gap:24px;justify-self:start;min-height:52px;padding:14px 24px;background:var(--brand);color:var(--navy);font-size:15px;font-weight:600;transition:background var(--m-fast,.18s),box-shadow var(--m-mid,.32s)}
.tf-contact:hover,.tf-contact:focus-visible{background:var(--brand-hover);box-shadow:0 0 0 1px #40d6b359,0 6px 26px #40d6b340}
.tf-contact span{transition:transform var(--m-mid,.32s) var(--m-ease,ease)}.tf-contact:hover span{transform:translateX(6px)}
.tf-subscribe{display:grid;gap:6px;max-width:460px}
.tf-subscribe label{font-size:15px;font-weight:600}
.tf-subscribe>p{margin:0;font-size:13px;color:#b7c6cd}
.tf-field{display:flex;margin-top:8px;border-bottom:1px solid #ffffff80;transition:border-color var(--m-fast,.18s)}
.tf-field:focus-within{border-color:var(--brand);box-shadow:0 1px 0 var(--brand)}
.tf-field input{flex:1;min-width:0;background:none;border:0;color:#fff;font:inherit;font-size:16px;padding:12px 0}
.tf-field input::placeholder{color:#8ea3ae}
.tf-field input:focus-visible{outline:none}
.tf-field button{background:none;color:#fff;font-size:22px;width:48px;min-height:48px}
.tf-field button:hover{color:var(--brand)}
.tf-subscribe .ui-form-status{background:#40d6b326;color:#fff;font-size:13px;padding:10px 12px;margin-top:8px}
.tf-sitemap{display:grid;grid-template-columns:repeat(6,1fr);gap:40px 32px;padding:clamp(48px,6vw,72px) 0;border-bottom:1px solid #ffffff26}
.tf-col h2{font:600 15px/1.4 var(--sans);letter-spacing:0;margin:0 0 18px}
.tf-col h2 a:hover{color:var(--brand)}
.tf-col ul{list-style:none;margin:0;padding:0;display:grid;gap:12px}
.tf-col li a{font-size:14px;line-height:1.5;color:#b7c6cd;transition:color var(--m-fast,.18s)}
.tf-col li a:hover{color:#fff;text-decoration:underline;text-underline-offset:4px}
.tf-brand{display:flex;align-items:center;gap:20px 32px;flex-wrap:wrap;padding:36px 0}
.tf-logo{width:150px;flex-shrink:0}.tf-logo img{width:100%;height:auto}
.tf-org{display:grid;gap:2px;padding-left:32px;border-left:1px solid #ffffff33}
.tf-org strong{font-size:15px;font-weight:500}.tf-org span{font-size:12px;color:#b7c6cd}
.tf-assoc{font-size:13px;color:var(--brand)}.tf-assoc:hover{color:#fff}
.tf-social{display:flex;gap:6px;margin-left:auto}
.tinai-footer .social-link{width:40px;height:40px;min-height:40px;padding:0;border:0;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:none;transition:background var(--m-fast,.18s)}
.tinai-footer .social-link img{width:18px;height:18px;filter:brightness(0) invert(1);opacity:.8}
.tinai-footer .social-link:hover{background:#ffffff1f}.tinai-footer .social-link:hover img{opacity:1}
.tf-legal{display:flex;flex-wrap:wrap;align-items:center;gap:10px 24px;padding-top:24px;border-top:1px solid #ffffff26;font-size:12px;color:#8ea3ae}
/* 24px tap areas for the small footer and language links, drawn by a transparent box so nothing moves (WCAG 2.5.8) */
.tf-col h2 a,.tf-assoc,.tf-legal a,.header-tools .language{position:relative}
.tf-col h2 a:after,.tf-assoc:after,.tf-legal a:after,.header-tools .language:after{content:'';position:absolute;inset:-4px -2px}
.tf-legal a:hover,.tf-legal button:hover{color:#fff}
.tf-legal button{background:none;padding:6px 0;font-size:12px;color:inherit}
.tf-draft{border:1px solid #ffffff33;padding:3px 8px}
.tf-top{margin-left:auto;color:#fff}
@media(max-width:1000px){
 .tf-lead{grid-template-columns:1fr}
 .tf-sitemap{grid-template-columns:repeat(3,1fr)}
 .tf-social{margin-left:0;width:100%}
}
@media(max-width:600px){
 .tf-sitemap{grid-template-columns:repeat(2,1fr);gap:36px 20px}
 .tf-org{padding-left:0;border-left:0}
 .tf-top{margin-left:0}
}
.tf-org em{font-style:normal;font-size:12px;color:#d3dfe5;letter-spacing:.01em}

/* Content flags: placeholder copy is always labelled. */
.ui-flags{display:flex;gap:8px;margin-bottom:16px}
.ui-flag{display:inline-block;font-size:12px;font-weight:600;letter-spacing:.03em;padding:4px 10px;border:1px dashed currentColor}
.ui-flag-sample{color:#8a5a00;background:#fff4dc}
.ui-flag-pending{color:#8a2b2b;background:#fdecec}
.ui-dark .ui-flag-sample,.ui-cta .ui-flag-sample{background:#ffffff14;color:#ffd48a}

/* Sitemap block */
.ui-sitemap,.ui-sitemap ul{list-style:none;margin:0;padding:0}
.ui-sitemap>li{margin-bottom:40px}
.ui-sitemap>li>a{font:600 var(--fs-h3)/1.4 var(--sans)}
.ui-sitemap>li>ul{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:28px 32px;margin-top:20px;border-top:1px solid var(--navy);padding-top:24px}
.ui-sitemap>li>ul>li>a{font-weight:600}
.ui-sitemap ul ul{margin-top:10px;display:grid;gap:8px;padding-left:14px;border-left:1px solid var(--rule)}
.ui-sitemap ul ul a{font-size:15px;color:var(--ink-2)}
.ui-sitemap ul ul ul a{font-size:13px}
.ui-sitemap a:hover{color:var(--brand-text);text-decoration:underline;text-underline-offset:4px}

/* Search block */
.ui-search{max-width:820px}
.ui-search label{display:block;font-weight:600;margin-bottom:8px}
.ui-search input{width:100%;font:inherit;font-size:20px;padding:14px 0;border:0;border-bottom:2px solid var(--navy);background:none;color:var(--ink)}
.ui-search input:focus-visible{outline:none;border-color:var(--brand-text);box-shadow:0 2px 0 var(--brand-text)}
.ui-search-results{margin-top:24px;display:grid}
.ui-search-results a{display:flex;justify-content:space-between;gap:16px;padding:16px 0;border-bottom:1px solid var(--rule);font-size:17px}
.ui-search-results a:hover{color:var(--brand-text)}
.ui-search-results small{color:var(--ink-2)}

/* Legal long-form */
.ui-legal aside nav h2{font:600 13px/1.4 var(--sans);letter-spacing:.04em;color:var(--ink-2);margin:0 0 10px}
.ui-legal aside ol{margin:0;padding-left:20px;display:grid;gap:8px;font-size:14px}
.ui-legal aside a:hover{color:var(--brand-text)}
.ui-legal-updated{font-size:13px!important;color:var(--ink-2);margin:0 0 20px}
.ui-legal .ui-prose section{scroll-margin-top:80px}
.ui-legal .ui-prose h2{font-size:22px}
/* Long (English) titles must wrap instead of widening the hero grid. */
.ui-hero-grid>*,.ui-article>*,.ui-feature>*,.ui-intro>*{min-width:0}
.ui-hero-copy h1{overflow-wrap:break-word;text-wrap:balance}
@media(min-width:1001px){.ui-hero-media{width:100%;aspect-ratio:auto;min-height:380px;position:relative}.ui-hero-media>img,.ui-hero-media>picture>img{position:absolute;inset:0}}
/* Index numbers removed (Owner 2026-09-25): steps keep their sequence through the connecting rule only. */
.ui-steps h3{margin-top:0}
/* Home industries without index numbers: title and ＋ share one row. */
.industry-item summary{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:16px}
.industry-item summary img{grid-column:1/-1}
.industry-item summary h3{grid-column:1;margin:0 0 10px}
.industry-item .industry-plus{position:static;grid-column:2;grid-row:2;align-self:start;margin-top:2px}
.industry-item summary p{grid-column:1/-1}


/* Full-text search results (search.js) */
.search-hit,.search-result{display:block}
.search-hit{padding:18px 0;border-bottom:1px solid var(--rule)}
.search-hit-head{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap;font-size:18px;font-weight:600}
.search-hit-section{font-size:12px;color:var(--ink-2);font-weight:400}
.search-hit-snippet{display:block;margin-top:6px;font-size:14px;line-height:1.7;color:var(--ink-2)}
.search-count{font-size:13px;color:var(--ink-2);margin:0 0 8px}
.search-hit mark,.search-result mark{background:#40d6b340;color:inherit;padding:0 2px}
.search-hit:hover .search-hit-head,.search-hit[aria-selected=true] .search-hit-head{color:var(--brand-text)}
.search-hit .ui-flag{font-size:11px;padding:1px 6px}
.industry-item summary h3{min-width:0;overflow-wrap:break-word}
.industries-grid>*{min-width:0}

/* No section may widen the page (parallax/scale motion included); clip keeps sticky elements working. */
.ui-page>section,.ui-page>.ui-cta,.ui-home-extra>section{overflow-x:clip}


/* Content flags sit on their own full-width row; in two-column blocks they must not take the left column. */
.ui-flags{grid-column:1/-1;align-self:start;align-items:flex-start;flex-wrap:wrap}
.ui-flag{align-self:flex-start}
/* Tablet (701–1000px, one column): compact hero like phones so content starts in the first screen. */
@media(min-width:701px) and (max-width:1000px){.ui-hero-media{aspect-ratio:auto;height:320px;position:relative}.ui-hero-media>img,.ui-hero-media>picture>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}}
/* Stat values that are not figures (e.g. 〔待 Owner 提供〕) use a text size instead of the numeral size. */
.ui-stat-text strong{font-size:clamp(18px,1.6vw,22px);line-height:1.4}

/* Company directory (company-directory block): scoped to .ui-codir */
.ui-codir .ui-chips{margin-bottom:20px}
.ui-codir-bar{display:grid;grid-template-columns:minmax(0,280px) minmax(0,1fr);gap:16px 24px;margin-bottom:16px}
.ui-codir-field{display:grid;gap:6px;min-width:0;font-size:var(--fs-small);color:var(--ink-2)}
.ui-codir-field select,.ui-codir-field input{width:100%;max-width:100%;min-height:44px;font:inherit;font-size:16px;color:var(--ink);background:#fff;border:1px solid var(--rule);padding:8px 12px;border-radius:0}
.ui-codir-field :is(select,input):focus-visible{outline:2px solid var(--navy);outline-offset:1px}
.ui-codir-count{font-size:var(--fs-small);color:var(--ink-2);margin:0 0 12px}
.ui-codir-list{list-style:none;margin:0;padding:0}
.ui-codir-list .ui-dir-item{min-width:0}
.ui-codir-list .ui-dir-item:focus{outline:2px solid var(--navy);outline-offset:-2px}
.ui-codir-alt{font-size:13px;color:var(--ink-2);margin-top:-4px}
.ui-codir .ui-empty{padding:24px 0}
.ui-codir-reset{font:inherit;color:var(--brand-text);background:none;border:0;padding:0;text-decoration:underline;text-underline-offset:4px;cursor:pointer}
.ui-codir-foot{display:flex;justify-content:center;margin-top:24px}
.ui-codir-more[hidden]{display:none}
@media(max-width:700px){.ui-codir-bar{grid-template-columns:1fr}}
.ui-codir-list h3 a{color:inherit}.ui-codir-list h3 a:hover{text-decoration:underline;text-underline-offset:5px}
.ui-codir-list h3 a span{color:var(--brand-text)}
.ui-co-link{color:var(--brand-text);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}.ui-co-link:hover{color:var(--ink)}
.ui-card h3 .ui-co-link{color:inherit;text-decoration:none}.ui-card h3 .ui-co-link:hover{text-decoration:underline}
/* a11y: text links on light surfaces need a focus ring darker than --brand (1.4.11). */
:is(.ui-co-link,.ui-card h3 a,.ui-codir-list h3 a):focus-visible{outline:2px solid var(--brand-text);outline-offset:3px;text-decoration:underline}
:is(.ui-dark,.ui-cta) :is(.ui-co-link,.ui-card h3 a):focus-visible{outline-color:var(--brand)}
/* a11y: focus ring on light surfaces uses --brand-text (≥3:1 on white/tint); dark islands keep --brand. Added rules only; legacy a:focus-visible untouched. */
:is(.light,.opportunity-section,.ui-subnav,.ui-page .ui-section:not(.ui-dark),.header-menu-panel,.search-dialog,.cooperate-dialog,.member-dialog) :is(a,button,input,select,textarea,summary):focus-visible{outline-color:var(--brand-text)}
:is(.ui-dark,.ui-cta,.membership-card) :is(a,button,input,select,textarea,summary):focus-visible{outline-color:var(--brand)}
/* a11y: inline form errors + summary */
.ui-form-req-note{margin:0;font-size:var(--fs-small,13px);color:var(--ink-2,#44525c)}
.ui-field-error{margin:0;font-size:14px;line-height:1.5;color:#a4262c}
.ui-field-error::before{content:'! ';font-weight:700}
.ui-field [aria-invalid=true],.member-application [aria-invalid=true]{border-color:#a4262c;box-shadow:inset 0 0 0 1px #a4262c}
.ui-check+.ui-field-error{grid-column:1/-1;margin-top:-12px}
.ui-form-errors{grid-column:1/-1;padding:14px 16px;border-left:3px solid #a4262c;background:#fdecec;color:var(--ink)}
.ui-form-errors:focus-visible{outline:2px solid var(--brand-text);outline-offset:2px}
.ui-form-errors p{margin:0 0 6px;font-weight:600}.ui-form-errors ul{margin:0;padding-left:20px}.ui-form-errors a{color:#8a1f24;text-decoration:underline}
.tf-subscribe .ui-field-error,.membership-card .ui-field-error{color:#ffb4ab;margin-top:6px;text-align:left}
.member-application .ui-field-error{margin:-12px 0 16px}
/* R09 en QA: non-link list rows (li>div) stack on phones like linked rows */
@media(max-width:700px){.ui-list li>div{grid-template-columns:1fr;gap:4px 16px}}
/* company profile pages (yellow-pages entry, no images): scoped to main.co-yp */
.co-yp .co-yp-hero{padding-bottom:clamp(32px,4vw,56px)}
.co-yp .co-yp-hero .ui-hero-copy{padding-bottom:0;max-width:760px}
.co-yp .co-yp-hero .ui-hero-copy h1{font-size:clamp(28px,3.4vw,44px);margin-bottom:16px}
.co-yp .co-yp-hero .ui-hero-copy p{margin-bottom:16px}
.co-yp .co-yp-sec{padding-top:clamp(24px,3vw,40px);padding-bottom:clamp(24px,3vw,40px);border-top:1px solid var(--rule)}
.co-yp .co-yp-sec .ui-block-head{display:block;margin-bottom:16px}
.co-yp .co-yp-sec .ui-block-head h2{font-size:clamp(20px,2vw,24px);margin:0}
.co-yp .co-yp-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:clamp(24px,4vw,64px)}
.co-yp .co-yp-list li{padding:12px 0;border-bottom:1px solid var(--rule);min-width:0}
.co-yp .co-yp-list a{font-weight:600;color:var(--navy);text-decoration:underline;text-underline-offset:3px;overflow-wrap:anywhere}
.co-yp .co-yp-list p{margin:4px 0 0;font-size:14px;line-height:1.6;color:var(--ink-2)}
@media(max-width:700px){.co-yp .co-yp-list{grid-template-columns:1fr}}

/* Sitemap: member company index (legal/sitemap, 2026-09-29) */
.ui-sitemap-co h2{font:600 var(--fs-h3)/1.4 var(--sans);margin:0 0 8px}
.ui-sitemap-co>.wrap>p{color:var(--ink-2);margin:0 0 24px;max-width:60ch}
.ui-sitemap-co-group{border-top:1px solid var(--navy);padding-top:16px;margin-bottom:32px}
.ui-sitemap-co-group h3{font-size:16px;font-weight:600;margin:0 0 12px}
.ui-sitemap-co-count{font-weight:400;color:var(--ink-2);font-size:13px;margin-left:6px}
.ui-sitemap-co-group ul{list-style:none;margin:0;padding:0;columns:4 200px;column-gap:32px}
.ui-sitemap-co-group li{break-inside:avoid;padding:3px 0;font-size:14px;line-height:1.5}
.ui-sitemap-co-group a{color:var(--ink-2)}
.ui-sitemap-co-group a:hover{color:var(--brand-text);text-decoration:underline;text-underline-offset:4px}
@media (max-width:600px){.ui-sitemap-co-group ul{columns:1}}

/* Windows high-contrast (forced-colors): box-shadow focus cues are removed there, so give inputs a real outline (a11y review 2026-10-12) */
@media (forced-colors:active){
.tf-field input:focus-visible,.ui-search input:focus-visible{outline:2px solid Highlight;outline-offset:2px}
.carousel-dot[aria-pressed=true]{background:Highlight;border-color:Highlight}
}

/* Migrated-image blocks (logo wall, portrait grid, diagram figure) — old-site migration 2026-10-12 */
.ui-logos{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px}
.ui-logos li{display:flex;flex-direction:column;align-items:center;gap:8px;padding:18px 12px 14px;background:#fff;border:1px solid var(--rule,#d8dce0);text-align:center}
.ui-logo-img{display:flex;align-items:center;justify-content:center;width:100%;height:72px}
.ui-logo-img img{width:auto;height:56px;max-width:100%;object-fit:contain}
.ui-logo-name{font-size:13px;line-height:1.4;color:var(--ink-2,#44525c)}
.ui-people{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:18px}
.ui-people figure{margin:0}
.ui-people img{width:100%;aspect-ratio:378/412;object-fit:cover}
.ui-people figcaption{margin-top:8px;font-size:14px;line-height:1.5}
.ui-people figcaption span{display:block;color:var(--ink-2,#44525c);font-size:13px}
.ui-figure{margin:0}
.ui-figure img{width:100%;height:auto;border:1px solid var(--rule,#d8dce0);background:#fff}
.ui-figure figcaption{margin-top:10px;font-size:14px;color:var(--ink-2,#44525c)}
.ui-dir-thumb{margin-bottom:12px;overflow:hidden;background:#eef2f4}
.ui-dir-thumb img{width:100%;height:auto;aspect-ratio:900/560;object-fit:cover;display:block}
.ui-poster{max-width:560px;margin-inline:auto}
.ui-feature-media,.ui-card-media{position:relative}
.ui-media-note{position:absolute;left:0;bottom:0;right:0;padding:6px 12px;font-size:12px;line-height:1.4;color:#fff;background:linear-gradient(transparent,#000a)}

/* Mega menu (2026-10-13): linked panel title, equal one-line second-level links, right-hand featured rail */
@media(min-width:1001px){
.header-menu-panel{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(300px,1fr);gap:0 48px;align-items:start;max-height:calc(100vh - 80px);overflow-y:auto;overscroll-behavior:contain}
.header-menu-main .header-menu-title{display:inline-flex;align-items:center;gap:12px;font:600 26px/1.25 var(--sans);color:var(--navy);margin-bottom:18px}
.header-menu-title span{color:var(--brand-text);transition:transform var(--m-mid,.32s) var(--m-ease,ease)}
.header-menu-title:hover span{transform:translateX(6px)}
.header-menu-l2{list-style:none;margin:0;padding:0;columns:2 220px;column-gap:32px}
.header-menu-l2 li{break-inside:avoid}
.header-menu-l2 .header-menu-link{display:block;min-height:0;padding:13px 0;border-top:1px solid var(--line);font-size:16px}
.header-menu-featured{border-left:1px solid var(--line);padding-left:36px;min-width:0}
.header-menu-featured h3{margin:0 0 14px;font:600 13px/1.4 var(--sans);letter-spacing:.04em;color:var(--ink-muted,#526574)}
.header-menu-featured ul{list-style:none;margin:0;padding:0;display:grid;gap:14px}
.header-menu-card{display:grid;grid-template-columns:96px minmax(0,1fr);gap:14px;align-items:center;color:var(--ink)}
.header-menu-card .hm-thumb{display:block;width:96px;height:64px;overflow:hidden;background:#e6edf1}
.header-menu-card .hm-thumb img{width:100%;height:100%;object-fit:cover}
.header-menu-card small{display:block;margin-bottom:2px;color:var(--brand-text);font-size:12px;font-weight:600}
.header-menu-card strong{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:14px;font-weight:500;line-height:1.45}
.header-menu-card:hover strong{color:var(--brand-text)}
.header-menu-all{display:inline-block;margin-top:16px;color:var(--brand-text);font-size:14px;font-weight:600}
.header-menu-all span{display:inline-block;transition:transform var(--m-mid,.32s) var(--m-ease,ease)}.header-menu-all:hover span{transform:translateX(6px)}
}
@media(max-width:1000px){.header-menu-featured{display:none}.header-menu-l2{list-style:none;margin:0;padding:0}.header-menu-title span{display:none}}
/* open-menu focus ring: thinner and tighter than the global 3px/5px ring (still a visible 2px indicator) */
.header-menu>summary:focus-visible{outline:2px solid var(--brand);outline-offset:-2px;border-radius:2px}

/* Learner quotes carousel (programmes/incubation): reuses the home carousel script, restyled for a light section */
.carousel.ui-quotes{position:relative;inset:auto;z-index:auto;background:none;overflow:hidden;padding:4px 0 0}
.ui-quotes .carousel-viewport,.ui-quotes .carousel-track{height:auto}
.ui-quotes .carousel-slide{height:auto;position:relative;margin:0;padding:6px 2px 4px;display:flex;flex-direction:column;justify-content:space-between;gap:22px}
.ui-quotes blockquote{margin:0;position:relative;padding-left:46px}
.ui-quotes blockquote:before{content:'“';position:absolute;left:0;top:-10px;font:600 64px/1 var(--serif);color:var(--brand-text)}
.ui-quotes blockquote p{margin:0;font:400 clamp(20px,2.3vw,28px)/1.65 var(--serif);color:var(--navy)}
.ui-quotes figcaption{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;padding-left:46px;font-size:14px;color:var(--ink-2)}
.ui-quotes figcaption strong{color:var(--navy);font-size:15px}
.ui-quotes .carousel-controls{position:static;margin-top:26px;padding-left:46px;justify-content:flex-start}
.ui-quotes .carousel-arrow{background:#fff;border-color:var(--navy);color:var(--navy)}
.ui-quotes .carousel-arrow:hover,.ui-quotes .carousel-arrow:focus-visible{background:var(--brand);border-color:var(--brand);color:var(--navy)}
.ui-quotes .carousel-dot{background:transparent;border-color:var(--navy)}
.ui-quotes .carousel-dot[aria-pressed=true]{background:var(--navy);border-color:var(--navy)}
@media(max-width:700px){.ui-quotes blockquote,.ui-quotes figcaption,.ui-quotes .carousel-controls{padding-left:0}.ui-quotes blockquote{padding-top:38px}.ui-quotes blockquote:before{top:-6px}}

/* Member company logos (directory cards and profile pages) */
.ui-co-logo-box{display:flex;align-items:center;justify-content:flex-start;height:52px;margin-bottom:14px}
.ui-co-logo{display:block;width:auto;height:48px;max-width:170px;object-fit:contain;object-position:left center}
.co-yp-logo-box{display:inline-flex;align-items:center;justify-content:center;margin-bottom:18px;padding:10px 16px;background:#fff;border-radius:4px}
.co-yp-logo{display:block;width:auto;height:64px;max-width:220px;object-fit:contain}
/* Events calendar (programmes/calendar, block type "events") */
.ui-ev-list{border-top:1px solid var(--navy)}
.ui-ev{display:grid;grid-template-columns:132px 1fr;gap:28px;padding:28px 0;border-bottom:1px solid var(--rule)}
.ui-ev:focus{outline:none}.ui-ev:target,.ui-ev:focus{box-shadow:inset 4px 0 0 var(--brand);background:linear-gradient(90deg,#40d6b314,transparent 60%)}
.ui-ev[hidden]{display:none}
.ui-ev-date{display:flex;flex-direction:column;gap:4px}
.ui-ev-date time,.ui-ev-tbd{font-size:26px;line-height:1.1;font-weight:600;color:var(--navy);font-variant-numeric:tabular-nums}
.ui-ev-tbd{font-size:18px}
.ui-ev-date span{font-size:14px;color:var(--ink-2)}
.ui-ev-body{min-width:0;display:flex;flex-direction:column;gap:12px}
.ui-ev-body .ui-tags{margin:0;padding:0;align-items:center}
.ui-ev-form{font-size:13px;color:var(--ink-2)}
.ui-ev-body h3{font-size:20px;line-height:1.45;margin:0}
.ui-ev-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 28px;margin:0}
.ui-ev-facts div{display:flex;gap:10px;font-size:15px;line-height:1.6}
.ui-ev-facts dt{flex:none;width:4.5em;color:var(--ink-2)}
html[lang=en] .ui-ev-facts dt{width:6.6em}
.ui-ev-facts dd{margin:0;min-width:0;overflow-wrap:anywhere}
.ui-ev-body p{font-size:15px;line-height:1.75;margin:0;color:var(--ink-2);max-width:760px}
.ui-ev-more{border-top:1px solid var(--rule)}
.ui-ev-more summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;min-height:44px;font-size:15px;font-weight:500;color:var(--navy)}
.ui-ev-more summary::-webkit-details-marker{display:none}
.ui-ev-more summary span{transition:transform .2s}
.ui-ev-more[open] summary span{transform:rotate(45deg)}
.ui-ev-more h4{font-size:14px;margin:8px 0 4px;color:var(--ink-2)}
.ui-ev-more ul{margin:0 0 8px;padding-left:1.2em;font-size:15px;line-height:1.7}
@media(max-width:700px){
 .ui-ev{grid-template-columns:1fr;gap:10px;padding:22px 0}
 .ui-ev-date{flex-direction:row;align-items:baseline;gap:10px}
 .ui-ev-date time,.ui-ev-tbd{font-size:22px}
 .ui-ev-facts{grid-template-columns:1fr}
 .ui-ev-body h3{font-size:18px}
}
/* Block head without intro: the heading takes the full width instead of the left half (新創週場次 on one line, 總監 2026-10-31) */
.ui-block-head:not(:has(>p)){display:block}
/* Session card highlight (opened from the map or calendar): the brand bar touched the text. Cards get side padding pulled into the gutter,
   so text stays in line with the page and the bar sits 16px off it. */
.ui-ev.ui-ev{padding-inline:16px;margin-inline:-16px} /* doubled class: beats the .ui-dir-item padding in mobile.css */

/* ---- motion.css ---- */
/* TINAI motion system (Round09) — tokens + base layer.
   Rules: motion must carry meaning; one lead actor per view; shared timing; always stoppable. */
:root{
 --m-fast:180ms;      /* hover / press feedback */
 --m-mid:320ms;       /* component state change */
 --m-slow:600ms;      /* section entrance */
 --m-story:1400ms;    /* narrative sequences (counters, lines) */
 --m-stagger:70ms;    /* delay between siblings */
 --m-ease:var(--ease,cubic-bezier(.22,.61,.36,1));
 --m-ease-out:cubic-bezier(.16,1,.3,1);
 --m-rise:24px;
}

/* Cross-page fade (Chromium cross-document view transitions; ignored elsewhere). */
@view-transition{navigation:auto}
::view-transition-old(root),::view-transition-new(root){animation-duration:var(--m-mid)}

/* Scroll reveal: elements get .m-pending only when below the fold (see motion.js). */
.m-js .m-pending{opacity:0;transform:translateY(var(--m-rise))}
.m-js .ui-page :is(.ui-block-head,.ui-intro,.ui-card,.ui-stat,.ui-feature-media,.ui-feature-copy,.ui-steps li,.ui-dir-item,.ui-list li,.ui-faq-item,.ui-notice,.ui-cta .wrap,.ui-article,.ui-form,.ui-swatch,.ui-type){
 transition:opacity var(--m-slow) var(--m-ease-out) calc(var(--i,0)*var(--m-stagger)),transform var(--m-slow) var(--m-ease-out) calc(var(--i,0)*var(--m-stagger)),border-color var(--m-fast),background-color var(--m-fast)}

/* Hero entrance: copy rises, image settles from a slow push-in. */
.m-js .ui-hero-copy>*{opacity:0;transform:translateY(18px);transition:opacity var(--m-slow) var(--m-ease-out),transform var(--m-slow) var(--m-ease-out)}
.m-js .ui-hero-copy>:nth-child(2){transition-delay:80ms}.m-js .ui-hero-copy>:nth-child(3){transition-delay:160ms}.m-js .ui-hero-copy>:nth-child(4){transition-delay:240ms}
.m-loaded .ui-hero-copy>*{opacity:1;transform:none}
.m-js .ui-hero-media img{transform:scale(1.06);transition:transform 2.4s var(--m-ease-out)}
.m-loaded .ui-hero-media img{transform:scale(1)}

/* Sub-nav sliding indicator. */
.ui-subnav-track{position:relative}
.ui-subnav-track.has-bar a[aria-current=page]{border-color:transparent}
.ui-subnav-bar{position:absolute;left:0;bottom:0;height:2px;background:var(--brand);transition:transform var(--m-mid) var(--m-ease),width var(--m-mid) var(--m-ease);pointer-events:none}

/* Micro-interactions: arrows nudge, buttons respond. */
.ui-arrow,.ui-button span[aria-hidden],.ui-text-link span[aria-hidden],.white-button span[aria-hidden],.dark-button span[aria-hidden]{transition:transform var(--m-mid) var(--m-ease)}
a:hover>.ui-card-body .ui-arrow,a.ui-card:hover .ui-arrow,.ui-list a:hover .ui-arrow,.ui-button:hover span[aria-hidden],.ui-text-link:hover span[aria-hidden]{transform:translateX(6px)}
.ui-button:active,.ui-chip:active{transform:scale(.98)}
.ui-button,.ui-chip{transition:background var(--m-fast),color var(--m-fast),border-color var(--m-fast),transform var(--m-fast)}
.ui-list a,.ui-list li>div{transition:background var(--m-mid),padding var(--m-mid) var(--m-ease)}
.ui-list a:hover{background:linear-gradient(90deg,var(--tint),transparent);padding-left:12px}

/* Stop everything when motion is off (OS setting or footer pause). */
@media(prefers-reduced-motion:reduce){
 .m-js .m-pending,.m-js .ui-hero-copy>*{opacity:1!important;transform:none!important}
 .m-js .ui-hero-media img{transform:none!important}
 *,*::before,*::after{animation-duration:1ms!important;animation-iteration-count:1!important;transition-duration:1ms!important;scroll-behavior:auto!important}
 ::view-transition-old(root),::view-transition-new(root){animation:none}
}
.motion-paused .m-pending{opacity:1!important;transform:none!important}
.motion-paused .ui-hero-media img{transform:none!important;transition:none!important}
.motion-paused *{animation-play-state:paused!important}

/* ---- motion-blocks.css ---- */
/* TINAI narrative motion layer (Round09) — block-level effects driven by motion-blocks.js.
   Every rule resolves to the final static state when motion is off (reduced motion or .motion-paused). */
.ui-stat strong{font-variant-numeric:tabular-nums}

/* Steps: a brand line draws along the top rule; numbers light as it passes. */
.ui-steps{position:relative}
.m-js .ui-steps::before{content:"";position:absolute;left:0;right:0;top:-1px;height:2px;background:var(--brand);transform:scaleX(0);transform-origin:left;transition:transform var(--m-story) var(--m-ease)}
.m-js .ui-steps.m-drawn::before{transform:scaleX(1)}
.m-js .ui-steps .ui-step-n{transition:color var(--m-mid) calc(var(--i,0)*var(--m-story)/var(--n,1))}
.m-js .ui-steps.m-drawn .ui-step-n{color:var(--brand)}

/* List: each row's rule draws left to right as the row reveals. */
.m-js .ui-list li{position:relative}
.m-js .ui-list li>:is(a,div){border-bottom-color:transparent}
.m-js .ui-list li::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--rule);transform-origin:left;transition:transform var(--m-slow) var(--m-ease-out) calc(var(--i,0)*var(--m-stagger) + 120ms)}
.m-js .ui-list li.m-pending::after{transform:scaleX(0)}

/* Feature image: parallax shift set by JS (--py); slight scale hides the edges. */
.ui-feature-media img.m-para{transform:translateY(var(--py,0px)) scale(1.1);will-change:transform}

/* CTA: one slow brand sweep along the top edge. */
.ui-cta{position:relative;overflow:hidden}
.ui-cta::before{content:"";position:absolute;left:0;top:0;height:2px;width:40%;background:linear-gradient(90deg,transparent,var(--brand),transparent);transform:translateX(-100%);opacity:0;pointer-events:none}
.ui-cta.m-sweep::before{animation:m-sweep calc(var(--m-story)*2) var(--m-ease) forwards}
@keyframes m-sweep{0%{transform:translateX(-100%);opacity:1}100%{transform:translateX(260%);opacity:0}}

/* Off switch: final state, no transitions. */
@media (prefers-reduced-motion:reduce){.m-js .ui-steps::before,.m-js .ui-list li::after{transition:none!important;transform:none!important}.ui-cta::before{display:none}.ui-feature-media img.m-para{transform:none}}
.motion-paused .ui-steps::before,.motion-paused .ui-list li::after{transition:none!important;transform:none!important}
.motion-paused .ui-cta::before{display:none}.motion-paused .ui-feature-media img.m-para{transform:none}

/* ---- visuals/visuals.css ---- */
/* Shared slot for L1 lead visuals (owned by core). Each visual styles itself in visuals/<name>.css. */
.ui-hero-media{position:relative}
.ui-hero-visual{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.ui-hero-visual.is-interactive{pointer-events:auto}
.home-sky{position:absolute;inset:0;z-index:-1;pointer-events:none;overflow:hidden}

/* ---- mobile.css ---- */
/* mobile.css — Round09 mobile layer (≤700px). Loaded last; desktop untouched.
   Pairs with mobile.js (m-* classes/elements). */
@media(max-width:700px){
 /* 1. compact inner hero */
 .ui-hero{padding-top:14px}
 .ui-breadcrumb ol{margin-bottom:10px;align-items:center}
 .ui-breadcrumb li{display:inline-flex;align-items:center}
 .ui-hero-grid{gap:16px}
 .ui-hero-copy h1{font-size:clamp(26px,7.4vw,32px);margin-bottom:12px}
 .ui-hero-copy p{margin-bottom:14px;font-size:15px;line-height:1.65}
 .ui-hero-media{aspect-ratio:auto;height:190px;position:relative}
 .ui-hero-media img{height:190px}
 .ui-hero-visual{height:190px!important;max-height:190px;overflow:hidden}
 .ui-hero-visual>*{max-height:100%}
 /* 2. sub-nav edge fades */
 .ui-subnav{position:sticky}
 .ui-subnav .wrap,.ui-subnav-track{position:relative}
 .ui-subnav-track{gap:22px;scroll-padding-inline:24px;-webkit-mask-image:none;mask-image:none}
 .ui-subnav a{padding:14px 0 12px;min-height:44px;display:flex;align-items:center}
 .ui-subnav-track.m-fade-l{-webkit-mask-image:linear-gradient(90deg,transparent,#000 32px);mask-image:linear-gradient(90deg,transparent,#000 32px)}
 .ui-subnav-track.m-fade-r{-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 32px),transparent);mask-image:linear-gradient(90deg,#000 calc(100% - 32px),transparent)}
 .ui-subnav-track.m-fade-l.m-fade-r{-webkit-mask-image:linear-gradient(90deg,transparent,#000 32px,#000 calc(100% - 32px),transparent);mask-image:linear-gradient(90deg,transparent,#000 32px,#000 calc(100% - 32px),transparent)}
 /* 3 & 5. accordions (menu + footer) */
 .m-acc-btn{display:flex;width:100%;align-items:center;justify-content:space-between;gap:12px;min-height:48px;background:none;border:0;padding:0;color:inherit;font:inherit;text-align:left;cursor:pointer}
 .m-acc-btn:after{content:'+';font-size:22px;line-height:1;transition:transform var(--m-fast,.18s)}
 .m-acc-btn[aria-expanded=true]:after{transform:rotate(45deg)}
 .m-acc-btn:focus-visible{outline:2px solid currentColor;outline-offset:2px}
 .menu-grid:has(.m-acc){grid-template-columns:1fr;gap:0}
 .menu-section.m-acc,.sw-nav .menu-section.menu-sw{border-bottom:1px solid #ffffff26}
 .menu-section.menu-sw h3{margin:0}
 .menu-section.m-acc>h3{margin:0}
 .menu-section.m-acc>a{display:flex;align-items:center;min-height:44px;padding-left:12px}
 .menu-section.m-acc:not(.m-open)>a,.tf-col.m-acc:not(.m-open)>ul{display:none}
 .menu-section.m-acc.m-open{padding-bottom:12px}
 .menu-section .m-acc-link{display:flex;align-items:center;min-height:44px;padding-left:12px;font-weight:600}
 .tf-sitemap:has(.m-acc){grid-template-columns:1fr!important;gap:0!important}
 .tf-col.m-acc{border-bottom:1px solid #ffffff26}
 .tf-col.m-acc h2{margin:0}
 .tf-col.m-acc ul{padding:0 0 16px;gap:0}
 .tf-col.m-acc li a{display:flex;align-items:center;min-height:44px}
 /* 4. directories / lists */
 .m-sticky-chips{position:sticky;top:var(--m-subnav-h,0px);z-index:12;background:#fff;margin-inline:calc(var(--gutter,20px)*-1);padding:10px var(--gutter,20px);flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;box-shadow:0 1px 0 var(--rule)}
 .m-sticky-chips::-webkit-scrollbar{display:none}
 .m-sticky-chips .ui-chip{flex-shrink:0}
 .m-count{font-size:13px;color:var(--ink-2);margin:0 0 12px}
 .m-collapsed{display:none!important}
 .ui-ev{scroll-margin-top:calc(var(--m-subnav-h,0px) + 70px)} /* 新創週 map rows land below the sticky chips */
 .ui-section[id]{scroll-margin-top:calc(var(--m-subnav-h,0px) + 8px)} /* anchored sections (home join → #join) land below the sticky subnav */
 .m-more{display:flex;justify-content:center;align-items:center;width:100%;min-height:48px;margin-top:16px;border:1px solid var(--navy);background:#fff;color:var(--navy);font:500 15px/1 var(--sans,inherit);cursor:pointer}
 .m-more[hidden]{display:none}
 .ui-dir-list{grid-template-columns:1fr}
 .ui-dir-item{padding:18px 0 20px}
 /* 7. tap targets */
 .ui-breadcrumb a{display:inline-flex;align-items:center;min-height:44px}
 .ui-chip{min-height:44px}
 .ui-list a,.ui-list li>div{padding:16px 0;min-height:44px}
 .ui-list-title{font-size:17px;line-height:1.5}
 .tf-legal a,.tf-legal button{display:inline-flex;align-items:center;min-height:44px}
 input,select,textarea{font-size:16px!important}
 /* 6. back to top */
 .m-top{position:fixed;right:calc(16px + env(safe-area-inset-right));bottom:calc(16px + env(safe-area-inset-bottom));z-index:30;width:44px;height:44px;border-radius:50%;border:0;background:var(--navy);color:#fff;font-size:20px;box-shadow:0 4px 14px #0003;opacity:0;transform:translateY(12px);pointer-events:none;transition:opacity .2s,transform .2s}
 .m-top.m-show{opacity:1;transform:none;pointer-events:auto}
 .m-top:focus-visible{outline:2px solid var(--brand);outline-offset:3px}
 /* 8. lite visuals */
 .m-lite .ui-hero-visual *,.m-lite .home-sky *{animation-duration:0s!important;animation-iteration-count:1!important;filter:none!important;backdrop-filter:none!important}
 .m-lite .home-sky{overflow:hidden} /* no max-height: capping it cut the sky layer mid-cover (hard line, Owner 2026-09-29) */
}
@media(max-width:700px) and (prefers-reduced-motion:reduce){.m-top,.m-acc-btn:after{transition:none}}
.m-motion-off .m-top,.m-motion-off .m-acc-btn:after{transition:none}

/* Home cover on phones/tablets: keep Taipei 101 (about 60% across the photo) centered in the tall crop */
@media(max-width:1000px){.cover-carousel .carousel-slide:nth-child(2) .carousel-image{object-position:64% top}}

/* Touch targets (phones/tablets, 2026-10-12 mobile audit): 44px hit areas without changing the visible look of dots. */
@media(max-width:1000px),(pointer:coarse){
 .tinai-footer .social-link,.social-link{width:44px;height:44px;min-height:44px}
 .carousel-arrow,.cover-carousel .carousel-arrow{width:44px;height:44px;font-size:20px}
 .carousel-dots,.cover-carousel .carousel-dots{gap:16px}
 .carousel-dot{position:relative}
 .carousel-dot:after{content:'';position:absolute;inset:-10px -8px}  /* 4px-high bars still get a 24px tap target (WCAG 2.5.8) */
 .tf-assoc,.association-link{display:inline-flex;align-items:center;min-height:44px}
 .site-footer>nav a{display:inline-flex;align-items:center;min-height:44px}
}
/* Minimum text size on phones: nothing below 12px */
@media(max-width:700px){
 .card-copy .eyebrow,.eyebrow,.image-note,.land-visual .image-note,.industry-number,.taiwan-activity-meta span,.coordinates,.footer-social>.eyebrow,.footer-bottom,.footer-bottom button{font-size:12px}
 .industry-item summary p{font-size:12px}
}

/* Detail pages whose hero is the activity's own poster (portrait): show the whole poster, no cropping */
.ui-hero-media.ui-hero-poster{aspect-ratio:auto!important;height:auto!important;min-height:0!important;overflow:visible;position:static;align-self:start;margin:0;display:flex;justify-content:center}
.ui-hero-media.ui-hero-poster>img,.ui-hero-media.ui-hero-poster>picture>img{position:static!important;inset:auto;width:auto;max-width:100%;height:auto!important;max-height:80vh;object-fit:contain;background:#fff}
@media(max-width:1000px){.ui-hero-media.ui-hero-poster{margin:0}.ui-hero-media.ui-hero-poster>img,.ui-hero-media.ui-hero-poster>picture>img{width:100%;max-height:none;max-width:560px}}

/* Envato photos (X01-X05): keep the subject inside the hero crop */
.ui-hero-media img[src*="X01"]{object-position:82% 45%}
.ui-hero-media img[src*="X04"]{object-position:30% 50%}

/* desktop: keep the globe credit and map activity dates at 12px minimum */
.image-note,.land-visual .image-note,.coordinates,.taiwan-activity-meta span{font-size:12px}

/* Round09 375 audit: heading links in company cards were 22px tall; a transparent pseudo-element lifts the hit area to 30px (>=24px, WCAG 2.5.8) without changing the look. */
@media(max-width:700px){
 .ui-card h3 .ui-co-link,.ui-codir-list h3 a{position:relative}
 .ui-card h3 .ui-co-link:after,.ui-codir-list h3 a:after{content:'';position:absolute;inset:-4px 0}
}

/* ---- visuals/home-sky.css ---- */
/* visuals/home-sky.css — Round07 sky tech network, ported to Round09 cover */
.home-sky canvas{position:absolute;inset:0;width:100%;height:100%;display:block;mix-blend-mode:screen;opacity:.9}
.home-sky::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(6,20,30,.28),transparent 45%,rgba(6,20,30,.18))}

/* ---- visuals/taiwan.css ---- */
/* visuals/taiwan.css — Taiwan cluster map lead visual */
[data-visual=taiwan]{display:grid;place-items:center}
[data-visual=taiwan] .tw-scrim{position:absolute;inset:0;background:var(--navy,#0A263F);opacity:.7}
[data-visual=taiwan] .tw-svg{position:relative;width:100%;height:100%;overflow:visible}
.tw-island{fill:rgba(64,214,179,.06);stroke:var(--brand,#40D6B3);stroke-width:1.5;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:1}
.tw-link{stroke:rgba(255,255,255,.35);stroke-width:1;stroke-dasharray:1;stroke-dashoffset:1}
.tw-node{opacity:0}
.tw-dot{fill:var(--brand,#40D6B3)}
.tw-pulse{fill:none;stroke:var(--brand,#40D6B3);stroke-width:1;opacity:0;transform-box:fill-box;transform-origin:center}
.tw-label{fill:#fff;font-size:15px;font-weight:600}
.tw-sub{fill:rgba(255,255,255,.75);font-size:11px}
.tw-note{fill:rgba(255,255,255,.55);font-size:11px}
/* play */
.is-on .tw-island{animation:tw-draw var(--m-story,1400ms) var(--m-ease,ease) forwards}
.is-on .tw-node{animation:tw-in var(--m-slow,600ms) var(--m-ease-out,ease) forwards;animation-delay:calc(900ms + var(--i) * 450ms)}
.is-on .tw-link{animation:tw-draw var(--m-slow,600ms) var(--m-ease,ease) forwards;animation-delay:calc(2600ms + var(--d) * 200ms)}
.is-on .tw-pulse{animation:tw-pulse 3.6s ease-out infinite;animation-delay:calc(3600ms + var(--i) * 900ms)}
.is-paused *{animation-play-state:paused!important}
/* reduced / paused motion: final state */
.is-static .tw-island,.is-static .tw-link{animation:none;stroke-dashoffset:0}
.is-static .tw-node{animation:none;opacity:1}
.is-static .tw-pulse{animation:none;opacity:0}
@keyframes tw-draw{to{stroke-dashoffset:0}}
@keyframes tw-in{to{opacity:1}}
@keyframes tw-pulse{0%{opacity:.8;transform:scale(.35)}100%{opacity:0;transform:scale(1.6)}}

/* ---- visuals/alliances.css ---- */
/* visuals/alliances.css — alliance node network lead visual */
[data-visual=alliances]{background:rgba(10,38,63,.72)}
[data-visual=alliances] .al-svg{width:100%;height:100%;overflow:visible}
.al-link{stroke:rgba(255,255,255,.3);stroke-width:1;stroke-dasharray:1;stroke-dashoffset:1;transition:stroke var(--m-mid,320ms),stroke-width var(--m-mid,320ms),opacity var(--m-mid,320ms)}
.al-node,.al-topic{opacity:0}
.al-node{cursor:pointer;outline:none}
.al-node .al-dot{fill:var(--navy,#0A263F);stroke:var(--brand,#40D6B3);stroke-width:2;transition:fill var(--m-fast,180ms)}
.al-node text{fill:#fff;font-size:13px;font-weight:600;pointer-events:none}
.al-topic .al-dot{fill:var(--brand,#40D6B3)}
.al-topic text{fill:rgba(255,255,255,.8);font-size:12px}
.al-node:hover .al-dot,.al-node:focus-visible .al-dot{fill:var(--brand,#40D6B3)}
.al-node:hover text,.al-node:focus-visible text{fill:var(--navy,#0A263F)}
.al-node:focus-visible .al-dot{stroke:#fff;stroke-width:3}
.has-focus .al-link{opacity:.35}
.al-link.is-hl{stroke:var(--brand,#40D6B3);stroke-width:2;opacity:1}
/* play */
.is-on .al-node,.is-on .al-topic{animation:al-in var(--m-slow,600ms) var(--m-ease-out,ease) forwards;animation-delay:calc(200ms + var(--i) * var(--m-stagger,70ms) * 2)}
.is-on .al-link{animation:al-draw var(--m-story,1400ms) var(--m-ease,ease) forwards;animation-delay:calc(900ms + var(--d) * 60ms)}
.is-paused *{animation-play-state:paused!important}
.is-static .al-node,.is-static .al-topic{animation:none;opacity:1}
.is-static .al-link{animation:none;stroke-dashoffset:0}
@keyframes al-in{to{opacity:1}}
@keyframes al-draw{to{stroke-dashoffset:0}}

/* ---- visuals/opportunities.css ---- */
/* Opportunities lead visual: navy scrim + routing flow SVG. */
.ui-hero-visual[data-visual=opportunities]{background:linear-gradient(90deg,rgba(10,38,63,.88),rgba(10,38,63,.72));display:grid;place-items:center}
.vo-svg{width:100%;height:100%;max-height:100%}
.vo-path{fill:none;stroke:rgba(255,255,255,.18);stroke-width:1.2}
.vo-ring{fill:rgba(64,214,179,.08);stroke:rgba(64,214,179,.55);stroke-width:1.2}
.vo-core{fill:#40D6B3}
.vo-dot{fill:#40D6B3}
.vo-label{fill:#fff;font:600 14px/1 var(--font,system-ui,sans-serif);text-anchor:middle;letter-spacing:.04em}
.vo-lane{fill:rgba(255,255,255,.7);font:500 9.5px/1 var(--font,system-ui,sans-serif);text-anchor:middle}

/* ---- visuals/insights.css ---- */
/* Insights lead visual: Ken Burns on the photo + trend line in the lower third. */
.ui-hero-media:has([data-visual=insights]){overflow:hidden}
.ui-hero-media.vi-kb>img,.ui-hero-media.vi-kb>picture>img{animation:vi-kb 24s ease-in-out infinite alternate;transform-origin:60% 40%}
.ui-hero-media.vi-paused>img,.ui-hero-media.vi-paused>picture>img{animation-play-state:paused}
@keyframes vi-kb{from{transform:scale(1)}to{transform:scale(1.1) translate(-1.5%,-1%)}}
.ui-hero-visual[data-visual=insights]{background:linear-gradient(180deg,transparent 45%,rgba(10,38,63,.7))}
.vi-svg{position:absolute;inset:0;width:100%;height:100%}
.vi-grid{stroke:rgba(255,255,255,.12);stroke-width:1;vector-effect:non-scaling-stroke}
.vi-area{fill:rgba(64,214,179,.14);opacity:0;transition:opacity 1.2s ease 1.6s}
.vi-line{fill:none;stroke:#40D6B3;stroke-width:2.5;stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset 2.6s cubic-bezier(.4,0,.2,1) .3s}
.vi-pt{position:absolute;transform:translate(-50%,-50%);opacity:0;transition:opacity .6s ease;transition-delay:calc(1s + var(--i)*.7s)}
.vi-pt i{display:block;width:10px;height:10px;border-radius:50%;background:#40D6B3;box-shadow:0 0 0 4px rgba(64,214,179,.25)}
.vi-pt b{position:absolute;left:50%;bottom:16px;transform:translateX(-50%);white-space:nowrap;color:#fff;font:600 12px/1.2 var(--font,system-ui,sans-serif);background:rgba(10,38,63,.75);padding:3px 7px;border-radius:4px}
.is-live .vi-line,.is-static .vi-line{stroke-dashoffset:0}
.is-live .vi-area,.is-live .vi-pt,.is-static .vi-area,.is-static .vi-pt{opacity:1}
.is-static .vi-line,.is-static .vi-area,.is-static .vi-pt{transition:none}

/* ---- visuals/programmes.css ---- */
/* Programmes lead visual: dotted SVG globe with arcs from Taiwan. */
.ui-hero-visual[data-visual=programmes]{background:radial-gradient(circle at 50% 50%,rgba(10,38,63,.55),rgba(10,38,63,.85));display:grid;place-items:center}
.vp-svg{width:min(100%,100vh);height:100%;overflow:visible}
.vp-sphere{fill:rgba(10,38,63,.6);stroke:rgba(64,214,179,.35);stroke-width:1}
.vp-dot{fill:#9fe9d8}
.vp-arc{fill:none;stroke:#40D6B3;stroke-width:1.4;stroke-dasharray:1;stroke-linecap:round}
.vp-city{fill:#fff}
.vp-home{fill:#40D6B3;stroke:#fff;stroke-width:1.2}
.vp-lab{fill:#fff;font:500 9px/1 var(--font,system-ui,sans-serif);paint-order:stroke;stroke:rgba(10,38,63,.8);stroke-width:2.5px}
.vp-lab-home{font-weight:700;font-size:10px;fill:#40D6B3}
