article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block;}
audio,canvas,video{display:inline-block;}
audio:not([controls]){display:none;height:0;}
[hidden]{display:none;}
html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;}
body{margin:0;}
a:focus{outline:thin dotted;}
a:active,a:hover{outline:0;}
h1{font-size:2em;margin:0.67em 0;}
abbr[title]{border-bottom:1px dotted;}
b,strong{font-weight:bold;}
dfn{font-style:italic;}
hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0;}
mark{background:#ff0;color:#000;}
code,kbd,pre,samp{font-family:monospace, serif;font-size:1em;}
pre{white-space:pre-wrap;}
q{quotes:"\201C" "\201D" "\2018" "\2019";}
small{font-size:80%;}
sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline;}
sup{top:-0.5em;}
sub{bottom:-0.25em;}
img{border:0;}
svg:not(:root){overflow:hidden;}
figure{margin:0;}
fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em;}
legend{border:0;padding:0;}
button,input,select,textarea{font-family:inherit;font-size:100%;margin:0;}
button,input{line-height:normal;}
button,select{text-transform:none;}
button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;}
button[disabled],html input[disabled]{cursor:default;}
input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0;}
input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;}
input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none;}
button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0;}
textarea{overflow:auto;vertical-align:top;}
table{border-collapse:collapse;border-spacing:0;margin-bottom:1.5em;}
::-moz-selection{background-color:#dadada;color:#343434;text-shadow:none;}
::selection{background-color:#dadada;color:#343434;text-shadow:none;}
.all-caps{text-transform:uppercase;}
.pull-left{float:left;}
.pull-right{float:right;}
.clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";}
.clearfix:after{clear:both;}
.unstyled-list{list-style:none;margin-left:0;padding-left:0;}.unstyled-list li{list-style-type:none;}
@font-face{font-family:"Ampersand";src:local("Georgia"),local("Garamond"),local("Palatino"),local("Book Antiqua");unicode-range:U+270C;}@font-face{font-family:"Ampersand";src:local("Georgia");unicode-range:U+270C;}.ampersand-placeholder{font-family:Verdana,sans-serif;}
.breakword{word-wrap:break-word;}
.normal-wrap{word-wrap:normal;}
.inherit-wrap{word-wrap:auto;}
.drop-cap:first-letter{float:left;margin:inherit;padding:inherit;font-size:4em;font-family:inherit;line-height:1;text-indent:0;background:transparent;color:inherit;}
html{font:normal 112.5%/1.72 serif;}
body{word-wrap:normal;color:#24313b;background:#f6f4ef;}
.tera{font-size:117px;font-size:6.5rem;margin-bottom:0.25384615384615383rem;}
.giga{font-size:90px;font-size:5rem;margin-bottom:0.33rem;}
.mega{font-size:72px;font-size:4rem;margin-bottom:0.4125rem;}
.alpha{font-size:60px;font-size:3.3333333333333335rem;margin-bottom:0.495rem;}
.beta{font-size:48px;font-size:2.6666666666666665rem;margin-bottom:0.61875rem;}
.gamma{font-size:36px;font-size:2rem;margin-bottom:0.825rem;}
.delta{font-size:24px;font-size:1.3333333333333333rem;margin-bottom:1.2375rem;}
.epsilon{font-size:21px;font-size:1.1666666666666667rem;margin-bottom:1.4142857142857141rem;}
.zeta{font-size:18px;font-size:1rem;margin-bottom:1.65rem;}
h1{font-size:60px;font-size:3.3333333333333335rem;margin-bottom:0.495rem;text-rendering:optimizeLegibility;line-height:1;margin-top:0;}
h2{font-size:48px;font-size:2.6666666666666665rem;margin-bottom:0.61875rem;text-rendering:optimizeLegibility;line-height:1;margin-top:0;}
h3{font-size:36px;font-size:2rem;margin-bottom:0.825rem;text-rendering:optimizeLegibility;line-height:1;margin-top:0;}
h4{font-size:24px;font-size:1.3333333333333333rem;margin-bottom:1.2375rem;text-rendering:optimizeLegibility;line-height:1;margin-top:0;}
h5{font-size:21px;font-size:1.1666666666666667rem;margin-bottom:1.4142857142857141rem;text-rendering:optimizeLegibility;line-height:1;margin-top:0;}
h6{font-size:18px;font-size:1rem;margin-bottom:1.65rem;text-rendering:optimizeLegibility;line-height:1;margin-top:0;}
p{margin:0 0 1.5em;}p+p{text-indent:1.5em;margin-top:-1.5em;}
abbr,acronym,blockquote,code,dir,kbd,listing,plaintext,q,samp,tt,var,xmp{-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;-o-hyphens:none;hyphens:none;}
pre code{word-wrap:normal;white-space:-moz-pre-wrap;white-space:pre-wrap;}
pre{white-space:pre;}
code{white-space:pre;font-family:monospace;}
abbr{font-variant:small-caps;font-weight:400;text-transform:lowercase;color:#333332;}abbr:hover{cursor:help;}
h1,h2,h3,h4,h5,h6{color:#333332;}
.lining dt,.lining dd{display:inline;margin:0;}
.lining dt+dt:before,.lining dd+dt:before{content:"\A";white-space:pre;}
.lining dd+dd:before{content:", ";}
.lining dd:before{content:": ";margin-left:-0.2rem;}
.dictionary-style dt{display:inline;counter-reset:definitions;}.dictionary-style dt+dt:before{content:", ";margin-left:-0.2rem;}
.dictionary-style dd{display:block;counter-increment:definitions;}.dictionary-style dd:before{content:counter(definitions, decimal) ". ";}
.stats-tabs{padding:0;}.stats-tabs li{display:inline-block;margin:0 0.625rem 0 0;padding:0 0.625rem 0 0;border-right:0.125rem solid #cccccc;}.stats-tabs li:last-child{margin:0;padding:0;border:none;}
.stats-tabs li a{display:inline-block;font-size:1.5rem;font-weight:bold;}.stats-tabs li a b{display:block;margin:0.125rem 0 0 0;font-size:0.875rem;font-weight:normal;}
.cite{display:block;font-size:0.875em;text-align:right;}
.pull-quote{position:relative;padding:1em;}.pull-quote:before,.pull-quote:after{height:1em;opacity:0.15;position:absolute;font-size:4em;}
.pull-quote:before{content:'“';top:0em;left:0em;}
.pull-quote:after{content:'”';bottom:0em;right:0em;}
h1,h2,h3,h4,h5,h6{font-family:'Source Sans 3',sans-serif;font-weight:600;letter-spacing:-0.01em;color:#15222d;}
h6{font-weight:400;}
a{text-decoration:none;color:#1f4b6e;}a:visited{color:#365b77;}
a:hover{color:#133650;}
a:focus{outline:thin dotted;color:#1f4b6e;}
a:hover,a:active{outline:0;}
b,strong{font-weight:700;}
ul li{list-style-type:square;}
ol li{list-style-type:upper-roman;}
p>a,li>a,em>a,a>em,footer a{text-decoration:none;border-bottom:1px dotted #b3b3b1;}
p>a:hover,li>a:hover,em>a:hover,footer a:hover{text-decoration:none;border-bottom:1px solid #b3b3b1;}
figcaption{margin-top:0.75em;line-height:1.25;font-size:18px;font-size:1rem;margin-bottom:1.65rem;font-family:'PT Sans Narrow',sans-serif;counter-increment:captions;}figcaption:before{font-weight:700;text-transform:uppercase;content:"Figure " counter(captions) ": ";}
.notice{margin-top:1.5em;padding:.5em 1em;text-indent:0;font-size:90%;background-color:#ddd;border-left:10px solid #ccc;}
blockquote{font-style:italic;margin-left:0;padding-left:1em;border-left:10px solid #ccc;}blockquote p+p{text-indent:0;margin-top:0;}
.footnotes{font-size:90%;}
tt,code,kbd,samp,pre{font-family:Monaco,"Courier New","DejaVu Sans Mono","Bitstream Vera Sans Mono",monospace;}
p code{font-size:80%;white-space:nowrap;margin:0 2px;padding:0 5px;border:1px solid #e6e6e6;background-color:#f2f2f2;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
.highlight{background-color:#efefef;font-family:Monaco,"Courier New","DejaVu Sans Mono","Bitstream Vera Sans Mono",monospace;font-size:80%;color:#333332;margin-bottom:1.5em;}
.highlight pre{margin:0px;padding:1em;}
.hll{background-color:#ffffcc;}
.c{color:#999988;font-style:italic;}
.err{color:#a61717;background-color:#e3d2d2;}
.k{color:#000000;font-weight:bold;}
.o{color:#000000;font-weight:bold;}
.cm{color:#999988;font-style:italic;}
.cp{color:#999999;font-weight:bold;font-style:italic;}
.c1{color:#999988;font-style:italic;}
.cs{color:#999999;font-weight:bold;font-style:italic;}
.gd{color:#000000;background-color:#ffdddd;}
.ge{color:#000000;font-style:italic;}
.gr{color:#aa0000;}
.gh{color:#999999;}
.gi{color:#000000;background-color:#ddffdd;}
.go{color:#888888;}
.gp{color:#555555;}
.gs{font-weight:bold;}
.gu{color:#aaaaaa;}
.gt{color:#aa0000;}
.kc{color:#000000;font-weight:bold;}
.kd{color:#000000;font-weight:bold;}
.kn{color:#000000;font-weight:bold;}
.kp{color:#000000;font-weight:bold;}
.kr{color:#000000;font-weight:bold;}
.kt{color:#445588;font-weight:bold;}
.m{color:#009999;}
.s{color:#d01040;}
.na{color:#008080;}
.nb{color:#0086b3;}
.nc{color:#445588;font-weight:bold;}
.no{color:#008080;}
.nd{color:#3c5d5d;font-weight:bold;}
.ni{color:#800080;}
.ne{color:#990000;font-weight:bold;}
.nf{color:#990000;font-weight:bold;}
.nl{color:#990000;font-weight:bold;}
.nn{color:#555555;}
.nt{color:#000080;}
.nv{color:#008080;}
.ow{color:#000000;font-weight:bold;}
.w{color:#bbbbbb;}
.mf{color:#009999;}
.mh{color:#009999;}
.mi{color:#009999;}
.mo{color:#009999;}
.sb{color:#d01040;}
.sc{color:#d01040;}
.sd{color:#d01040;}
.s2{color:#d01040;}
.se{color:#d01040;}
.sh{color:#d01040;}
.si{color:#d01040;}
.sx{color:#d01040;}
.sr{color:#009926;}
.s1{color:#d01040;}
.ss{color:#990073;}
.bp{color:#999999;}
.vc{color:#008080;}
.vg{color:#008080;}
.vi{color:#008080;}
.il{color:#009999;}
.hidden{display:none;visibility:hidden;}
.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{position:static;clip:auto;height:auto;width:auto;margin:0;overflow:visible;}
.visible-phone{display:none !important;}
.visible-tablet{display:none !important;}
.hidden-desktop{display:none !important;}
/*@media (max-width:767px){.visible-phone{display:inherit !important;} .hidden-phone{display:none !important;} .hidden-desktop{display:inherit !important;} .visible-desktop{display:none !important;}}@media (min-width:768px) and (max-width:979px){.visible-tablet{display:inherit !important;} .hidden-tablet{display:none !important;} .hidden-desktop{display:inherit !important;} .visible-desktop{display:none !important ;}}hr{display:block;margin:1em 0;padding:0;height:1px;border:0;border-top:1px solid #ccc;border-bottom:1px solid #fff;}*/
/* Update in 28 Aug 2023 by Hanlin */
@media (max-width:1100px){.visible-phone{display:inherit !important;} .hidden-phone{display:none !important;} .hidden-desktop{display:inherit !important;} .visible-desktop{display:none !important;}}@media (min-width:1100px) and (max-width:1300px){.visible-tablet{display:inherit !important;} .hidden-tablet{display:none !important;} .hidden-desktop{display:inherit !important;} .visible-desktop{display:none !important ;}}hr{display:block;margin:1em 0;padding:0;height:1px;border:0;border-top:1px solid #ccc;border-bottom:1px solid #fff;}
article img{max-width:100%;height:auto;border-width:0;vertical-align:middle;-ms-interpolation-mode:bicubic;}
svg:not(:root){overflow:hidden;}
.half{margin:0 auto;width:100%;*zoom:1;}.half:before,.half:after{display:table;content:"";}
.half:after{clear:both;}
.half:before,.half:after{content:"";display:table;}
.half:after{clear:both;}
.half img{display:inline;float:left;width:50%;}
.half figcaption{display:inline;float:left;width:100%;}
.third{margin:0 auto;width:100%;*zoom:1;}.third:before,.third:after{display:table;content:"";}
.third:after{clear:both;}
.third:before,.third:after{content:"";display:table;}
.third:after{clear:both;}
.third img{display:inline;float:left;width:33.333333333333336%;}
.third figcaption{display:inline;float:left;width:100%;}
img.floatpic{float:right; margin-left:1em; width:33%;}
.btn{display:inline-block;*display:inline;*zoom:1;padding:12px 24px;margin-bottom:2em;line-height:1;text-align:center;text-transform:uppercase;vertical-align:middle;border:4px double #333332;-webkit-border-radius:50px;-moz-border-radius:50px;border-radius:50px;cursor:pointer;*margin-left:.3em;-webkit-transition:0.4s linear;-moz-transition:0.4s linear;-ms-transition:0.4s linear;-o-transition:0.4s linear;transition:0.4s linear;}.btn:visited{border:4px double #4e4e4e;}
.btn:hover{border:4px double #1a1a1a;}
.btn:first-child{*margin-left:0;}
.btn-inverse{border:4px double #ffffff;color:#ffffff;background-color:#000000;}.btn-inverse:visited{color:#ffffff;border-color:#ffffff;}
.btn-inverse:hover{color:#ffffff;border-color:#ffffff;}
.btn-small{font-size:60%;padding:6px 12px;}
.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);}
@font-face{font-family:'icomoon';src:url('../fonts/icomoon.eot');src:url('../fonts/icomoon.eot?#iefix') format('embedded-opentype'),url('../fonts/icomoon.woff') format('woff'),url('../fonts/icomoon.ttf') format('truetype'),url('../fonts/icomoon.svg#icomoon') format('svg');font-weight:normal;font-style:normal;}[data-icon]:before{font-family:'icomoon';content:attr(data-icon);speak:none;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;}
.icon-instagram,.icon-facebook,.icon-twitter,.icon-google-plus,.icon-feed,.icon-feed-2,.icon-linkedin,.icon-tumblr,.icon-lastfm,.icon-mail,.icon-github{font-family:'icomoon';speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;}
.icon-instagram:before{content:"\e004";}
.icon-facebook:before{content:"\e003";}
.icon-twitter:before{content:"\e007";}
.icon-google-plus:before{content:"\e00a";}
.icon-feed:before{content:"\e00b";}
.icon-feed-2:before{content:"\e00c";}
.icon-linkedin:before{content:"\e001";}
.icon-tumblr:before{content:"\e002";}
.icon-lastfm:before{content:"\e005";}
.icon-mail:before{content:"\e006";}
.icon-github:before{content:"\e000";}
form{margin:0 0 5px 0;}form fieldset{margin-bottom:5px;padding:0;border-width:0;}
form legend{display:block;width:100%;margin-bottom:10px;*margin-left:-7px;padding:0;color:#333332;border:0;border-bottom:1px solid #cccccc;white-space:normal;}
form p{margin-bottom:2.5px;}
form ul{list-style-type:none;margin:0 0 5px 0;padding:0;}
form br{display:none;}
label,input,button,select,textarea{vertical-align:baseline;*vertical-align:middle;}
input,button,select,textarea{font-family:'PT Serif',serif;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;}
label{display:block;margin-bottom:1.25px;font-weight:bold;color:#333332;cursor:pointer;}label input,label textarea,label select{display:block;}
input,textarea,select{display:inline-block;width:100%;padding:4px;margin-bottom:1.25px;background-color:#ffffff;border:1px solid #cccccc;color:#333332;}input:hover,textarea:hover,select:hover{border-color:#808080;}
.input-mini{width:60px;}
.input-small{width:90px;}
input[type="image"],input[type="checkbox"],input[type="radio"]{width:auto;height:auto;padding:0;margin:3px 0;*margin-top:0;line-height:normal;cursor:pointer;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border:0 \9;}
input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;padding:0;*width:13px;*height:13px;}
input[type="image"]{border:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
input[type="file"]{width:auto;padding:initial;line-height:initial;border:initial;background-color:transparent;background-color:initial;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
input[type="button"],input[type="reset"],input[type="submit"]{width:auto;height:auto;cursor:pointer;*overflow:visible;}
select,input[type="file"]{*margin-top:4px;}
select{width:auto;background-color:#ffffff;}
select[multiple],select[size]{height:auto;}
textarea{resize:vertical;height:auto;overflow:auto;vertical-align:top;}
input[type="hidden"]{display:none;}
.radio,.checkbox{padding-left:18px;font-weight:normal;}
.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-18px;}
.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle;}
.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px;}
input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{-webkit-opacity:0.5;-moz-opacity:0.5;opacity:0.5;cursor:not-allowed;}
input:focus,textarea:focus{border-color:#000000;outline:0;outline:thin dotted \9;}
input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus,select:focus{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
.help-block,.help-inline{color:#808080;}
.help-block{display:block;margin-bottom:1em;line-height:1em;}
.help-inline{display:inline-block;vertical-align:middle;padding-left:5px;}
.form-inline input,.form-inline textarea,.form-inline select{display:inline-block;margin-bottom:0;}
.form-inline label{display:inline-block;}
.form-inline .radio,.form-inline .checkbox,.form-inline .radio{padding-left:0;margin-bottom:0;vertical-align:middle;}
.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-left:0;margin-right:3px;}
.form-search input,.form-search textarea,.form-search select{display:inline-block;margin-bottom:0;}
.form-search .search-query{padding-left:14px;padding-right:14px;margin-bottom:0;-webkit-border-radius:14px;-moz-border-radius:14px;border-radius:14px;}
.form-search label{display:inline-block;}
.form-search .radio,.form-search .checkbox,.form-inline .radio{padding-left:0;margin-bottom:0;vertical-align:middle;}
.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"]{float:left;margin-left:0;margin-right:3px;}
html{background-color:#f6f4ef;font-family:'Source Serif 4',serif;font-color:#24313b;font-size:90%;}
.navigation-wrapper{margin:0 auto;width:100%;padding:2em 0 3em;font-family:'Source Sans 3',sans-serif;font-weight:600;text-transform:uppercase;}
.site-name{margin:0 auto;width:100%;display:inline;float:left;width:83.33333333333334%;margin-left:8.333333333333334%;margin-right:8.333333333333334%;margin-bottom:1em;}
.top-navigation{margin:0 auto;width:100%;display:inline;float:left;width:83.33333333333334%;margin-left:8.333333333333334%;margin-right:8.333333333333334%;margin-bottom:1em;}
.top-navigation ul{list-style:none;margin:0;padding:0;}
.top-navigation li{list-style-type:none;display:inline;margin-right:25px;}.top-navigation li a{decoration:none;border-bottom:0 solid transparent;-webkit-transition:all 0.2s;-moz-transition:all 0.2s;-ms-transition:all 0.2s;-o-transition:all 0.2s;transition:all 0.2s;}
.top-navigation-current{text-decoration: overline;color:#10283d;}
#main{counter-reset:captions;margin:0 auto;width:100%;*zoom:1;clear:both;margin-top:1em;}#main:before,#main:after{display:table;content:"";}
#main:after{clear:both;}
#main:before,#main:after{content:"";display:table;}
#main:after{clear:both;}

/* Update in 28 Aug 2023 by Hanlin */
.wide {
    width: 90% !important;
  }
#main article{margin:0 auto;width:100%;display:inline;float:left;width:90%;margin-left:8.333333333333334%;margin-right:8.333333333333334%;margin-bottom:2em;}
#index{margin:0 auto;width:100%;display:inline;float:left;width:90%;margin-left:8.333333333333334%;margin-right:8.333333333333334%;margin-bottom:2em;}#index article h2{font-size:24px;font-size:1.3333333333333333rem;margin-bottom:1.2375rem;margin-bottom:0;}
#index article p+p{text-indent:0;}

#index article p+p{text-indent:0;}
.image-wrap{position:relative;margin-bottom:2em;}.image-wrap:after{content:" ";display:block;position:absolute;bottom:-1px;left:8%;width:0;height:0;border:20px solid transparent;border-bottom-color:#ffffff;}
.image-wrap img{width:100%;height:auto;-ms-interpolation-mode:bicubic;}
.image-wrap .headline-wrap{position:absolute;bottom:25px;margin-left:8.333333333333334%;}.image-wrap .headline-wrap h1,.image-wrap .headline-wrap h2{color:#ffffff;text-shadow:0 1px 2px rgba(0, 0, 0, 0.25);}
.headline-wrap h1{font-size:48px;font-size:2.6666666666666665rem;margin-bottom:0.61875rem;}
.headline-wrap h2{font-size:24px;font-size:1.3333333333333333rem;margin-bottom:1.2375rem;text-transform:uppercase;}
.article-wrap h2{font-size:36px;font-size:2rem;margin-bottom:0.825rem;}
.article-wrap h3{font-size:24px;font-size:1.3333333333333333rem;margin-bottom:1.2375rem;}
.byline{clear:both;font-size:80%;}
.article-author-top h4,.article-author-bottom h4{margin-bottom:0.5em;}
.article-author-top p,.article-author-bottom p{font-size:80%;font-style:normal;color:#4e5f6c;}
.article-author-top a,.article-author-bottom a,.article-author-top a:hover,.article-author-bottom a:hover{border-bottom:0 solid transparent;}
.article-author-top img.bio-photo,.article-author-bottom img.bio-photo{-webkit-border-radius:100px;-moz-border-radius:100px;border-radius:100px;}
.article-author-top{display:none;}
.article-author-bottom .bio-photo{float:left;margin-right:25px;}
.toc{display:none;font-size:95%;-webkit-opacity:0.7;-moz-opacity:0.7;opacity:0.7;-webkit-transition:opacity 0.2s ease-in-out;-moz-transition:opacity 0.2s ease-in-out;-ms-transition:opacity 0.2s ease-in-out;-o-transition:opacity 0.2s ease-in-out;transition:opacity 0.2s ease-in-out;}.toc:hover{-webkit-opacity:1;-moz-opacity:1;opacity:1;}
.toc header{background:#1a1a1a;}
.toc h3{margin:0;padding:5px 10px;color:#ffffff;}.toc h3:hover{cursor:pointer;}
.toc ul{margin:2px 0 0;padding:0;background:#4d4d4d;line-height:1;}
.toc li{display:block;margin:0;padding:0;font-family:'PT Sans Narrow',sans-serif;border-bottom:1px solid #808080;}.toc li:last-child{border-bottom:0 solid transparent;}
.toc li a,.toc li a:hover{color:#ffffff;border-bottom:0 solid transparent;}
.toc li a{padding:10px;display:block;}
.toc li ul{margin:0;border-top:1px solid #808080;}
.image-grid{*zoom:1;list-style:none;margin:0 0 1em;padding:0;}.image-grid:before,.image-grid:after{display:table;content:"";}
.image-grid:after{clear:both;}
.image-grid:before,.image-grid:after{content:"";display:table;}
.image-grid:after{clear:both;}
.image-grid li{display:inline;float:left;width:50%;}
.recent-grid{*zoom:1;list-style:none;margin:1em 0;}.recent-grid:before,.recent-grid:after{display:table;content:"";}
.recent-grid:after{clear:both;}
.recent-grid:before,.recent-grid:after{content:"";display:table;}
.recent-grid:after{clear:both;}
.recent-grid li{display:inline;}.recent-grid li a{border-bottom:0 solid transparent;}.recent-grid li a:hover{border-bottom:0 solid transparent;}
.recent-grid img{width:19%;margin-bottom:1%;}
.holder{font-family:'PT Sans Narrow',sans-serif;}.holder a{cursor:pointer;margin:0 5px;}
.holder a.jp-previous{margin-left:0;margin-right:15px;}
.holder a.jp-next{margin-left:15px;margin-right:0;}
.holder a.jp-current{font-weight:bold;}
.holder a.jp-current,.holder a.jp-current:hover,.holder a.jp-disabled,.holder a.jp-disabled:hover{cursor:default;background:none;}
.holder span{margin:0 5px;}
.footer-wrap{margin:0 auto;width:100%;*zoom:1;clear:both;margin-top:1em;padding-top:2em;padding-bottom:3em;background-color:#13202b;}.footer-wrap:before,.footer-wrap:after{display:table;content:"";}
.footer-wrap:after{clear:both;}
.footer-wrap:before,.footer-wrap:after{content:"";display:table;}
.footer-wrap:after{clear:both;}
.footer-wrap a,.footer-wrap a:active,.footer-wrap a:visited,.footer-wrap p,.footer-wrap h4,.footer-wrap h5,.footer-wrap h6{color:#bfbfbf;}
.footer-wrap a{border-bottom:0 solid transparent;}.footer-wrap a:hover{color:#ffffff;border-bottom:0 solid transparent;}
.footer-wrap footer{display:inline;float:left;width:83.33333333333334%;margin-left:8.333333333333334%;margin-right:8.333333333333334%;}
.related-articles{display:inline;float:left;width:83.33333333333334%;margin-left:8.333333333333334%;margin-right:8.333333333333334%;}.related-articles h4{font-size:21px;font-size:1.1666666666666667rem;margin-bottom:1.4142857142857141rem;text-transform:uppercase;margin-bottom:0;}
.related-articles li{margin-bottom:0;color:#ffffff;}
.footer-icons li{display:inline-block;padding-right:5px;}.footer-icons li a{font-size:24px;font-size:1.3333333333333333rem;margin-bottom:1.2375rem;color:#9a9a9a;-webkit-transition:0.4s linear;-moz-transition:0.4s linear;-ms-transition:0.4s linear;-o-transition:0.4s linear;transition:0.4s linear;}.footer-icons li a:hover{text-decoration:none;border-bottom:none;}.footer-icons li a:hover .icon-twitter,.footer-icons li a:hover .icon-twitter-sign{color:#2aa9df;}
.footer-icons li a:hover .icon-facebook,.footer-icons li a:hover .icon-facebook-sign{color:#3a5a98;}
.footer-icons li a:hover .icon-instagram,.footer-icons li a:hover .icon-instagram-sign{color:#306088;}
.footer-icons li a:hover .icon-google-plus,.footer-icons li a:hover .icon-google-plus-sign{color:#b63324;}
.footer-icons li a:hover .icon-lastfm,.footer-icons li a:hover .icon-lastfm-sign{color:#d80049;}
.footer-icons li a:hover .icon-github{color:#4183c4;}
.chrome-frame{background:#000;margin:0 0 2em 0;padding:10px;text-align:center;color:#ffffff;}.chrome-frame a{color:#ffffff;border-bottom:1px dotted #ffffff;text-decoration:none;}.chrome-frame a:hover{border-bottom:1px solid #ffffff;}
.mfp-bg{top:0;left:0;width:100%;height:100%;z-index:502;overflow:hidden;position:fixed;background:#0b0b0b;opacity:0.8;filter:alpha(opacity=80);}
.mfp-wrap{top:0;left:0;width:100%;height:100%;z-index:503;position:fixed;outline:none !important;-webkit-backface-visibility:hidden;}
.mfp-container{text-align:center;position:absolute;width:100%;height:100%;left:0;top:0;padding:0 8px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}
.mfp-container:before{content:'';display:inline-block;height:100%;vertical-align:middle;}
.mfp-align-top .mfp-container:before{display:none;}
.mfp-content{position:relative;display:inline-block;vertical-align:middle;margin:0 auto;text-align:left;z-index:505;}
.mfp-inline-holder .mfp-content,.mfp-ajax-holder .mfp-content{width:100%;cursor:auto;}.mfp-inline-holder .mfp-content:after,.mfp-ajax-holder .mfp-content:after{content:'';display:block;width:auto;height:auto;position:absolute;left:0;top:0;bottom:0;right:0;z-index:-1;box-shadow:0 0 8px rgba(0, 0, 0, 0.6);}
.mfp-ajax-cur{cursor:progress;}
.mfp-zoom-out-cur,.mfp-zoom-out-cur .mfp-image-holder .mfp-close{cursor:-moz-zoom-out;cursor:-webkit-zoom-out;cursor:zoom-out;}
.mfp-zoom,.image-popup{cursor:pointer;cursor:-webkit-zoom-in;cursor:-moz-zoom-in;cursor:zoom-in;}
.mfp-auto-cursor .mfp-content{cursor:auto;}
.mfp-close,.mfp-arrow,.mfp-preloader,.mfp-counter{-webkit-user-select:none;-moz-user-select:none;user-select:none;}
.mfp-loading.mfp-figure{display:none;}
.mfp-hide{display:none !important;}
.mfp-preloader{color:#cccccc;position:absolute;top:50%;width:auto;text-align:center;margin-top:-0.8em;left:8px;right:8px;z-index:504;}
.mfp-preloader a{color:#cccccc;}
.mfp-preloader a:hover{color:white;}
.mfp-s-ready .mfp-preloader{display:none;}
.mfp-s-error .mfp-content{display:none;}
button.mfp-close,button.mfp-arrow{overflow:visible;cursor:pointer;border:0;-webkit-appearance:none;display:block;padding:0;z-index:506;}
button.mfp-close{background:transparent;}
button::-moz-focus-inner{padding:0;border:0;}
.mfp-close{width:44px;height:44px;line-height:44px;position:absolute;right:0;top:0;text-decoration:none;text-align:center;opacity:0.65;padding:0 0 18px 10px;color:white;font-style:normal;font-size:28px;font-family:Arial, Baskerville, monospace;}
.mfp-close:hover,.mfp-close:focus{opacity:1;}
.mfp-close:active{top:1px;}
.mfp-close-btn-in .mfp-close{color:#333333;}
.mfp-image-holder .mfp-close,.mfp-iframe-holder .mfp-close{color:white;right:-6px;text-align:right;padding-right:6px;width:100%;}
.mfp-counter{position:absolute;top:0;right:0;color:#cccccc;font-size:12px;line-height:18px;}
.mfp-arrow{text-indent:100%;white-space:nowrap;overflow:hidden;position:absolute;top:0;opacity:0.65;margin:0;top:50%;margin-top:-55px;padding:0;width:90px;height:110px;background-color:#000000;-webkit-transition:opacity 0.2s ease-in-out;-moz-transition:opacity 0.2s ease-in-out;-ms-transition:opacity 0.2s ease-in-out;-o-transition:opacity 0.2s ease-in-out;transition:opacity 0.2s ease-in-out;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);}
.mfp-arrow:active{margin-top:-54px;}
.mfp-arrow:hover,.mfp-arrow:focus{opacity:1;}
.mfp-arrow:before,.mfp-arrow:after,.mfp-arrow .mfp-b,.mfp-arrow .mfp-a{content:'';display:block;width:0;height:0;position:absolute;left:0;top:0;margin-top:35px;margin-left:35px;border:solid transparent;}
.mfp-arrow:after,.mfp-arrow .mfp-a{opacity:0.8;border-top-width:12px;border-bottom-width:12px;top:8px;}
.mfp-arrow:before,.mfp-arrow .mfp-b{border-top-width:20px;border-bottom-width:20px;}
.mfp-arrow-left{left:0;-webkit-border-top-right-radius:5px;-webkit-border-bottom-right-radius:5px;-webkit-border-bottom-left-radius:0;-webkit-border-top-left-radius:0;-moz-border-radius-topright:5px;-moz-border-radius-bottomright:5px;-moz-border-radius-bottomleft:0;-moz-border-radius-topleft:0;border-top-right-radius:5px;border-bottom-right-radius:5px;border-bottom-left-radius:0;border-top-left-radius:0;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;}
.mfp-arrow-left:after,.mfp-arrow-left .mfp-a{border-right:12px solid #fff;left:5px;}
.mfp-arrow-left:before,.mfp-arrow-left .mfp-b{border-right:20px solid #fff;}
.mfp-arrow-right{right:0;-webkit-border-top-right-radius:0;-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:5px;-webkit-border-top-left-radius:5px;-moz-border-radius-topright:0;-moz-border-radius-bottomright:0;-moz-border-radius-bottomleft:5px;-moz-border-radius-topleft:5px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:5px;border-top-left-radius:5px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;}
.mfp-arrow-right:after,.mfp-arrow-right .mfp-a{border-left:12px solid #fff;left:3px;}
.mfp-arrow-right:before,.mfp-arrow-right .mfp-b{border-left:20px solid #fff;}
.mfp-iframe-holder{padding-top:40px;padding-bottom:40px;}
.mfp-iframe-holder .mfp-content{line-height:0;width:100%;max-width:900px;}
.mfp-iframe-scaler{width:100%;height:0;overflow:hidden;padding-top:56.25%;}
.mfp-iframe-scaler iframe{position:absolute;display:block;top:0;left:0;width:100%;height:100%;box-shadow:0 0 8px rgba(0, 0, 0, 0.6);background:black;}
.mfp-iframe-holder .mfp-close{top:-40px;}
img.mfp-img{width:auto;max-width:100%;height:auto;display:block;line-height:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:40px 0 40px;margin:0 auto;}
.mfp-figure:after{content:'';position:absolute;left:0;top:40px;bottom:40px;display:block;right:0;width:auto;height:auto;z-index:-1;box-shadow:0 0 8px rgba(0, 0, 0, 0.6);}
.mfp-figure{line-height:0;}
.mfp-bottom-bar{margin-top:-36px;position:absolute;top:100%;left:0;width:100%;cursor:auto;}
.mfp-title{text-align:left;line-height:18px;color:#f3f3f3;}
.mfp-figure small{color:#bdbdbd;display:block;font-size:12px;line-height:14px;}
.mfp-image-holder .mfp-content{max-width:100%;}
.mfp-gallery .mfp-image-holder .mfp-figure{cursor:pointer;}
@media screen and (max-width:800px) and (orientation:landscape),screen and (max-height:300px){.mfp-img-mobile .mfp-image-holder{padding-left:0;padding-right:0;} .mfp-img-mobile img.mfp-img{padding:0;} .mfp-img-mobile .mfp-figure:after{top:0;bottom:0;} .mfp-img-mobile .mfp-bottom-bar{background:rgba(0, 0, 0, 0.6);bottom:0;margin:0;top:auto;padding:3px 5px;position:fixed;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} .mfp-img-mobile .mfp-bottom-bar:empty{padding:0;} .mfp-img-mobile .mfp-counter{right:5px;top:3px;} .mfp-img-mobile .mfp-close{top:0;right:0;width:35px;height:35px;line-height:35px;background:rgba(0, 0, 0, 0.6);position:fixed;text-align:center;padding:0;} .mfp-img-mobile .mfp-figure small{display:inline;margin-left:5px;}}@media all and (max-width:800px){.mfp-arrow{-webkit-transform:scale(0.75);transform:scale(0.75);} .mfp-arrow-left{-webkit-transform-origin:0;transform-origin:0;} .mfp-arrow-right{-webkit-transform-origin:100%;transform-origin:100%;} .mfp-container{padding-left:6px;padding-right:6px;}}.mfp-ie7 .mfp-img{padding:0;}
.mfp-ie7 .mfp-bottom-bar{width:600px;left:50%;margin-left:-300px;margin-top:5px;padding-bottom:5px;}
.mfp-ie7 .mfp-container{padding:0;}
.mfp-ie7 .mfp-content{padding-top:44px;}
.mfp-ie7 .mfp-close{top:0;right:0;padding-top:0;}
.mfp-fade .zoom-anim-dialog{opacity:0;-webkit-transition:all 0.2s ease-in-out;-moz-transition:all 0.2s ease-in-out;-ms-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;-webkit-transform:scale(0.8);-moz-transform:scale(0.8);-ms-transform:scale(0.8);-o-transform:scale(0.8);transform:scale(0.8);}
.mfp-fade.mfp-ready .zoom-anim-dialog{opacity:1;-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1);}
.mfp-fade.mfp-removing .zoom-anim-dialog{-webkit-transform:scale(0.8);-moz-transform:scale(0.8);-ms-transform:scale(0.8);-o-transform:scale(0.8);transform:scale(0.8);opacity:0;}
.mfp-fade.mfp-bg{opacity:0;-webkit-transition:opacity 0.3s ease-out;-moz-transition:opacity 0.3s ease-out;-ms-transition:opacity 0.3s ease-out;-o-transition:opacity 0.3s ease-out;transition:opacity 0.3s ease-out;}
.mfp-fade.mfp-ready.mfp-bg{opacity:0.8;}
.mfp-fade.mfp-removing.mfp-bg{opacity:0;}
@media print{*{background:transparent !important;color:black !important;box-shadow:none !important;text-shadow:none !important;filter:none !important;-ms-filter:none !important;position:static !important;} @page {margin:0.5cm;}h2,h3{orphans:3;widows:3;page-break-after:avoid;} p{orphans:3;widows:3;} pre,blockquote{border:1px solid #333;page-break-inside:avoid;padding:1em;} abbr[title]:after{content:" (" attr(title) ")";} a,a:visited{text-decoration:underline;} a[href]:after{content:" (" attr(href) ")";} a[href^="javascript:"]:after,a[href^="#"]:after{content:"";} img{max-width:100% !important;page-break-inside:avoid;} thead{display:table-header-group;} tr{page-break-inside:avoid;}}@media only screen and (min-width:30em){.image-grid li{width:33.333333%;}}@media only screen and (min-width:37.5em){html{font-size:95%;} .site-name{display:inline;float:left;width:16.666666666666668%;margin-left:4.166666666666667%;margin-right:4.166666666666667%;} .top-navigation{display:inline;float:left;width:75%;margin-left:0%;margin-right:0%;} .image-wrap .headline-wrap,.image-wrap:after{left:25%;} .image-wrap .headline-wrap{margin-left:0;} #main article{display:inline;float:left;width:50%;margin-left:0%;margin-right:0%;} #index{display:inline;float:left;width:50%;margin-left:0%;margin-right:0%;} .footer-wrap footer{display:inline;float:left;width:50%;margin-left:25%;margin-right:25%;} .article-author-top{display:block;display:inline;float:left;width:16.666666666666668%;margin-left:4.166666666666667%;margin-right:4.166666666666667%;} .article-author-bottom{display:none;} .toc{display:block;display:inline;float:left;width:16.666666666666668%;margin-left:4.166666666666667%;margin-right:4.166666666666667%;position:fixed;top:120px;right:0;-webkit-box-shadow:0 0 5px rgba(0, 0, 0, 0.5);-moz-box-shadow:0 0 5px rgba(0, 0, 0, 0.5);box-shadow:0 0 5px rgba(0, 0, 0, 0.5);} .image-grid li{width:25%;} .related-articles{display:inline;float:left;width:50%;margin-left:25%;margin-right:25%;}}@media only screen and (min-width:48em){html{font-size:100%;} .image-grid li{width:20%;}}@media only screen and (min-width:62em){html{font-size:112.5%;} .image-grid li{width:16.666666666%;}}@media only screen and (min-width:86.375em){.site-name{display:inline;float:left;width:12.5%;margin-left:16.666666666666668%;} .top-navigation{display:inline;float:left;width:66.66666666666667%;} .image-wrap:after{left:33.333333333%;} .image-wrap .headline-wrap{margin-left:8.333333333333334%;} #main article{display:inline;float:left;width:37.5%;} #index{display:inline;float:left;width:37.5%;} .related-articles{display:inline;float:left;width:37.5%;margin-left:33.333333333333336%;margin-right:29.166666666666668%;} .footer-wrap footer{display:inline;float:left;width:37.5%;margin-left:33.333333333333336%;margin-right:29.166666666666668%;} .article-author-top{display:inline;float:left;width:12.5%;margin-left:16.666666666666668%;}}@media (-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){}
/* legacy v1 styles removed */

/* Accessibility and readability refinements */
.article-wrap{max-width:42rem;}
.article-wrap p,.article-wrap li{font-size:1.01rem;line-height:1.82;color:#24313b;}
.article-wrap ul,.article-wrap ol{padding-left:1.2rem;}
.article-wrap li+li{margin-top:0.35rem;}
.hero-lead{font-size:1.12rem;color:#2a3d4a;line-height:1.78;}
.section-note{font-size:0.98rem;color:#455968;}
.feature-card p,.timeline-item p,.project-card p{color:#30424e;}
.project-card{min-height:15.5rem;padding:1.3em;}
.project-meta{font-size:0.82rem;color:#52697b;}
.project-tags{font-size:0.92rem;color:#3e5463;}
.tag-row span{padding:0.5em 0.95em;background:rgba(255,255,255,0.88);border-color:rgba(28,63,90,0.18);font-size:0.8rem;color:#23445b;}
a:focus-visible,.btn:focus-visible,.top-navigation a:focus-visible{outline:3px solid #8fb4d1;outline-offset:3px;border-radius:6px;}
@media only screen and (max-width:48em){.project-card{min-height:auto;} .article-wrap{max-width:none;}}

/* legacy v2 compact styles removed */

/* Wider desktop content area */
.article-wrap{max-width:64rem;}
@media only screen and (min-width:37.5em){
  #main article{width:72%;margin-left:0;margin-right:0;}
  .article-author-top{width:14%;margin-left:4.166666666666667%;margin-right:2.5%;}
}
@media only screen and (min-width:86.375em){
  #main article{width:68.75%;margin-left:0;margin-right:0;}
  .article-author-top{width:10.4166666667%;margin-left:8.3333333333%;margin-right:2.5%;}
  .footer-wrap footer{width:68.75%;margin-left:20.8333333333%;margin-right:10.4166666667%;}
}

/* =====================================================
   REDESIGN v3 — Chaoyu Fan Academic Portfolio
   (v3.1: contrast & visibility fixes applied)
   ===================================================== */

/* Reset article wrap */
.page .article-wrap{max-width:none;}

/* ---- HERO ---- */
.hero-v2{
  background:linear-gradient(145deg,#0c1e30 0%,#153350 50%,#0f2844 100%);
  border-radius:18px;
  padding:2.8rem 2.4rem 2.4rem;
  margin-bottom:2.2rem;
  position:relative;
  overflow:hidden;
}
.hero-v2::after{
  content:'';
  position:absolute;
  top:-80px;right:-60px;
  width:350px;height:350px;
  border-radius:50%;
  background:radial-gradient(circle,rgba(94,234,212,.07) 0%,transparent 65%);
  pointer-events:none;
}
.hero-eyebrow{
  display:inline-block;
  font-family:'Source Sans 3',sans-serif;
  font-size:.72rem;font-weight:700;
  letter-spacing:.2em;text-transform:uppercase;
  color:#5eead4;margin-bottom:.85rem;
}
.hero-name{
  font-size:2.6rem;font-weight:700;
  color:#fff;letter-spacing:-.025em;line-height:1.07;
  margin-bottom:.25em;
  font-family:'Source Sans 3',sans-serif;
}
/* FIX: raised from .4 → .78 (was ~2.5:1, now ~5:1) */
.hero-cn{
  font-size:.6em;color:rgba(255,255,255,.78);
  font-weight:400;margin-left:.35em;letter-spacing:.06em;
}
/* FIX: use .hero-v2 p to beat .article-wrap p specificity */
.hero-v2 p,.hero-sub{
  font-size:.97rem;color:rgba(255,255,255,.88) !important;
  line-height:1.72;max-width:44rem;margin-bottom:1.5rem;
  font-family:'Source Serif 4',serif;
}
.hero-sub+p,.hero-sub p+p{text-indent:0;margin-top:0;}
.hero-cta{display:flex;flex-wrap:wrap;gap:.6rem;margin-bottom:1.5rem;}
.btn-v2{
  display:inline-flex;align-items:center;
  font-family:'Source Sans 3',sans-serif;
  font-size:.82rem;font-weight:600;
  padding:.5em 1.2em;border-radius:8px;
  text-decoration:none !important;border-bottom:none !important;
  transition:background .18s,color .18s,border-color .18s;
  letter-spacing:.02em;
}
.btn-primary{background:#5eead4;color:#0c1e30;}
.btn-primary:hover{background:#99f6e4;color:#0c1e30;}
.btn-ghost{
  background:rgba(255,255,255,.08);
  color:rgba(255,255,255,.92);
  border:1.5px solid rgba(255,255,255,.3) !important;
}
.btn-ghost:hover{
  background:rgba(255,255,255,.15);color:#fff;
  border-color:rgba(255,255,255,.55) !important;
}
.hero-chips{display:flex;flex-wrap:wrap;gap:.4rem;}
/* FIX: raised from .58 → .85 (was ~2.8:1, now ~5.5:1) */
.hero-chip{
  display:inline-block;
  font-family:'Source Sans 3',sans-serif;
  font-size:.72rem;padding:.25em .7em;border-radius:6px;
  background:rgba(255,255,255,.09);
  border:1px solid rgba(255,255,255,.2);
  color:rgba(255,255,255,.85);
}

/* ---- SECTIONS ---- */
.blk-v2{margin:0 0 2rem;}
.blk-v2 p+p{text-indent:0;margin-top:0;}
/* FIX: darkened from #5c7a8e → #2e4f63 (was ~3.7:1, now ~5.5:1) */
.sh-v2{
  font-family:'Source Sans 3',sans-serif;
  font-size:.68rem;font-weight:700;
  letter-spacing:.22em;text-transform:uppercase;
  color:#2e4f63;margin-bottom:1rem;
  padding-bottom:.45rem;border-bottom:1.5px solid #dde5eb;
  display:flex;align-items:center;gap:.55rem;
}
.sh-v2::before{
  content:'';width:16px;height:3px;
  border-radius:2px;background:#2563eb;flex-shrink:0;
}
/* FIX: raised from .38 → .82 (was ~2.2:1, now ~5.3:1) */
.sh-dark{color:rgba(255,255,255,.82);border-bottom-color:rgba(255,255,255,.15);}
.sh-dark::before{background:#5eead4;}
/* FIX: darkened from #6a8294 → #3d5a6e (was ~3.5:1, now ~5.8:1) */
.sh-note{font-size:.88rem;color:#3d5a6e;margin:-.6rem 0 1rem;}
.sh-note a{color:#1d4ed8;border-bottom:1px dotted #6ea0e8;}
.sh-note a:hover{color:#1e3a8a;}

/* ---- RESEARCH INTERESTS ---- */
.ri-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.85rem;}
.ri-card{
  background:#fff;border:1px solid #e0e8ef;
  border-left:4px solid #ccc;
  border-radius:0 12px 12px 0;
  padding:1.1rem 1.05rem;
  box-shadow:0 1px 8px rgba(0,0,0,.04);
  transition:transform .18s,box-shadow .18s;
}
.ri-card:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(0,0,0,.08);}
.c-blue{border-left-color:#2563eb;}
.c-violet{border-left-color:#7c3aed;}
.c-teal{border-left-color:#0d9488;}
.ri-title{
  font-family:'Source Sans 3',sans-serif;
  font-size:.9rem;font-weight:700;
  color:#14202a;margin-bottom:.4rem;
}
/* ri-card p: #4a6578 on #fff ≈ 4.8:1 — passes, no change needed */
.ri-card p{font-size:.86rem;color:#4a6578;line-height:1.58;margin:0;}

/* ---- ABOUT ---- */
.about-grid{
  display:grid;grid-template-columns:1.6fr 1fr;
  gap:1.4rem;align-items:start;
}
.bio-p{font-size:.95rem;color:#243040;line-height:1.78;margin-bottom:.8rem;}
.bio-p+.bio-p{text-indent:0 !important;margin-top:0 !important;}
.facts-tbl{
  background:#fff;border:1px solid #e0e8ef;
  border-radius:12px;overflow:hidden;
  box-shadow:0 1px 8px rgba(0,0,0,.04);
}
.ft-row{
  display:grid;grid-template-columns:88px 1fr;
  gap:.4rem;padding:.58rem .9rem;
  border-bottom:1px solid #f0f5f8;align-items:baseline;
}
.ft-row:last-child{border-bottom:none;}
/* FIX: darkened from #8099ad → #3f6070 (was ~3.1:1, now ~5.5:1) */
.ft-k{
  font-family:'Source Sans 3',sans-serif;
  font-size:.66rem;font-weight:700;
  letter-spacing:.08em;text-transform:uppercase;color:#3f6070;
}
.ft-v{font-size:.87rem;color:#1c2e3c;}

/* ---- EDUCATION + INDUSTRY ---- */
.ee-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.8rem;}
.ee-sub{
  font-family:'Source Sans 3',sans-serif;
  font-size:.8rem;font-weight:700;
  color:#2e4a5e;margin-bottom:.7rem;letter-spacing:.04em;
}
.tl-entry{
  display:grid;grid-template-columns:76px 1fr;
  gap:.7rem;margin-bottom:1rem;
}
/* FIX: darkened from #6a88a0 → #2e4f63 (was ~3.4:1, now ~5.5:1) */
.tl-yr{
  font-family:'Source Sans 3',sans-serif;
  font-size:.68rem;font-weight:600;color:#2e4f63;
  text-align:right;padding-top:.22rem;line-height:1.4;
}
.tl-body{
  border-left:2px solid #dde8ef;
  padding-left:.85rem;position:relative;
}
.tl-body::before{
  content:'';position:absolute;
  left:-5px;top:5px;
  width:8px;height:8px;border-radius:50%;
  background:#2563eb;
  box-shadow:0 0 0 2.5px rgba(37,99,235,.18);
}
.tl-body strong{
  display:block;
  font-family:'Source Sans 3',sans-serif;
  font-size:.9rem;font-weight:700;color:#14202a;
  margin-bottom:.1rem;line-height:1.3;
}
/* tl-inst: #4a6578 on #f6f4ef ≈ 4.8:1 — passes */
.tl-inst{display:block;font-size:.82rem;color:#4a6578;margin-bottom:.08rem;}
/* FIX: darkened from #7a9aad → #3d6070 (was ~2.9:1, now ~5.4:1) */
.tl-note{display:block;font-size:.76rem;color:#3d6070;font-style:italic;}

/* ---- PROJECTS ---- */
.proj-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.9rem;}
.proj-card{
  display:flex;flex-direction:column;
  background:#fff;border:1px solid #e0e8ef;border-radius:12px;
  padding:1rem 1.05rem;
  text-decoration:none !important;border-bottom:none !important;
  color:inherit !important;
  box-shadow:0 1px 8px rgba(0,0,0,.04);
  transition:border-color .18s,box-shadow .18s,transform .18s;
}
.proj-card:hover{
  border-color:#93c5fd;
  box-shadow:0 5px 18px rgba(37,99,235,.1);
  transform:translateY(-2px);
}
.pc-top{
  display:flex;justify-content:space-between;
  align-items:center;margin-bottom:.55rem;
}
.pc-badge{
  font-family:'Source Sans 3',sans-serif;
  font-size:.66rem;font-weight:700;letter-spacing:.05em;
  padding:.18em .5em;border-radius:4px;
  background:#eff6ff;color:#1d4ed8;border:1px solid #bfdbfe;
}
.pc-badge-docs{background:#f5f3ff;color:#6d28d9;border-color:#ddd6fe;}
/* FIX: darkened from #8099ad → #3f6070 (was ~3.1:1, now ~5.5:1) */
.pc-when{font-family:'Source Sans 3',sans-serif;font-size:.71rem;color:#3f6070;}
.pc-name{
  font-family:'Source Sans 3',sans-serif;
  font-size:.9rem;font-weight:700;color:#14202a;
  margin-bottom:.3rem;transition:color .18s;
}
.proj-card:hover .pc-name{color:#1d4ed8;}
/* proj-card p: #4a6578 on #fff ≈ 4.8:1 — passes */
.proj-card p{
  font-size:.84rem;color:#4a6578;line-height:1.52;
  margin-bottom:.65rem;flex:1;
}
.proj-card p+p{text-indent:0;margin-top:0;}
.pc-tags{display:flex;flex-wrap:wrap;gap:.28rem;margin-top:auto;}
.pc-tags span{
  font-family:'Source Sans 3',sans-serif;
  font-size:.67rem;padding:.17em .48em;border-radius:4px;
  background:#f4f7f9;color:#2e4a5e;border:1px solid #dde4ea;
}

/* ---- CONTACT ---- */
.contact-v2{
  background:linear-gradient(135deg,#0c1e30 0%,#1b3a5c 100%);
  border-radius:16px;padding:1.8rem 2rem;margin-top:.2rem;
}
/* FIX: raised from .65 → .90 (was ~3.5:1, now ~6:1) */
.contact-v2 p{
  color:rgba(255,255,255,.90);font-size:.92rem;margin-bottom:1rem;
}
.contact-v2 p+p{text-indent:0;margin-top:0;}
.cl-grid{display:flex;flex-wrap:wrap;gap:.55rem;}
/* FIX: raised from .78 → .92 (was ~4.4:1, now ~6.2:1) */
.cl-btn{
  display:inline-flex;align-items:center;
  font-family:'Source Sans 3',sans-serif;font-size:.84rem;
  color:rgba(255,255,255,.92);
  background:rgba(255,255,255,.09);
  border:1px solid rgba(255,255,255,.22) !important;
  padding:.45em .95em;border-radius:8px;
  text-decoration:none !important;border-bottom:none !important;
  transition:background .18s,color .18s,border-color .18s;
}
.cl-btn:hover{
  background:rgba(255,255,255,.16);color:#fff;
  border-color:rgba(255,255,255,.4) !important;
}

/* ---- SIDEBAR (author-bio) ---- */
/* Hide sidebar on homepage — hero + about sections cover all the same info */
.page .article-author-top{display:none !important;}
/* Expand article to full usable width when sidebar is hidden */
@media only screen and (min-width:37.5em){
  .page #main article{width:86%;margin-left:7%;margin-right:7%;}
}
@media only screen and (min-width:86.375em){
  .page #main article{width:72%;margin-left:14%;margin-right:14%;}
}

/* ---- PUBLICATIONS ---- */
.pub-list{display:flex;flex-direction:column;gap:1rem;}
.pub-entry{
  display:flex;gap:1rem;align-items:flex-start;
  background:#fff;border:1px solid #e0e8ef;border-radius:12px;
  padding:1.1rem 1.2rem;
  box-shadow:0 1px 8px rgba(0,0,0,.04);
  transition:box-shadow .18s,transform .18s;
}
.pub-entry:hover{box-shadow:0 4px 18px rgba(0,0,0,.09);transform:translateY(-1px);}
.pub-badge{
  flex-shrink:0;margin-top:.12rem;
  font-family:'Source Sans 3',sans-serif;
  font-size:.62rem;font-weight:700;letter-spacing:.06em;
  padding:.22em .55em;border-radius:5px;white-space:nowrap;
  width:5.2rem;text-align:center;box-sizing:border-box;
}
.pub-badge-conf{background:#eff6ff;color:#1d4ed8;border:1px solid #bfdbfe;}
.pub-badge-jour{background:#f0fdf4;color:#166534;border:1px solid #bbf7d0;}
.pub-body{flex:1;min-width:0;}
.pub-title{
  font-family:'Source Sans 3',sans-serif;
  font-size:.92rem;font-weight:700;color:#14202a;
  margin-bottom:.28rem;line-height:1.4;
}
.pub-authors{font-size:.82rem;color:#3d5060;margin-bottom:.18rem;line-height:1.5;}
.pub-authors strong{color:#14202a;}
.pub-venue{font-size:.8rem;color:#2e4f63;font-style:italic;margin-bottom:.55rem;}
.pub-links{display:flex;gap:.4rem;}
.pub-link{
  font-family:'Source Sans 3',sans-serif;
  font-size:.72rem;font-weight:600;
  padding:.18em .7em;border-radius:5px;
  background:#eff6ff;color:#1d4ed8;
  border:1px solid #bfdbfe !important;
  text-decoration:none !important;border-bottom:none !important;
  transition:background .15s,color .15s;
}
.pub-link:hover{background:#dbeafe;color:#1e40af;}

/* ---- AWARDS ---- */
.award-list{display:flex;flex-direction:column;gap:.75rem;}
.award-entry{
  display:flex;align-items:flex-start;gap:.9rem;
  background:#fff;border:1px solid #e0e8ef;border-radius:12px;
  padding:.95rem 1.15rem;
  box-shadow:0 1px 8px rgba(0,0,0,.04);
}
.award-icon{font-size:1.4rem;flex-shrink:0;line-height:1;}
.award-body{flex:1;}
.award-name{
  font-family:'Source Sans 3',sans-serif;
  font-size:.9rem;font-weight:700;color:#14202a;margin-bottom:.2rem;
}
.award-meta{font-size:.8rem;color:#3d5060;}

/* ---- CV BUTTON ---- */
.btn-cv{
  background:rgba(94,234,212,.12) !important;
  color:#5eead4 !important;
  border:1.5px solid rgba(94,234,212,.4) !important;
}
.btn-cv:hover{background:rgba(94,234,212,.22) !important;color:#99f6e4 !important;}

/* ---- SUBPAGE BODY TEXT ---- */
/* Prevent theme p+p indent inside all redesign blocks */
.blk-v2 p,.blk-v2 p+p{text-indent:0 !important;margin-top:0;}
.page .article-wrap .blk-v2 p{color:#3d5060;font-size:.95rem;line-height:1.72;}
.page .article-wrap .blk-v2 p+p{text-indent:0 !important;margin-top:.5rem !important;}

/* ---- NAVIGATION REDESIGN ---- */
html{scroll-behavior:smooth;}

.navigation-wrapper{
  display:flex !important;
  align-items:center;
  justify-content:space-between;
  padding:0 7% !important;
  height:54px;
  background:#0c1e30;
  box-shadow:0 1px 0 rgba(255,255,255,.06);
  position:sticky;top:0;z-index:200;
  /* override float-based layout */
  width:100% !important;
  box-sizing:border-box;
}
/* kill the clearfix pseudo-elements that add vertical spacing */
.navigation-wrapper:before,.navigation-wrapper:after{display:none !important;}

.site-name{
  float:none !important;
  width:auto !important;
  margin:0 !important;
  margin-bottom:0 !important;
  font-family:'Source Sans 3',sans-serif;
  font-size:.78rem;font-weight:700;letter-spacing:.12em;
  text-transform:uppercase;
}
.site-name a{
  color:#fff !important;
  border-bottom:none !important;
  text-decoration:none !important;
  transition:color .18s;
}
.site-name a:hover{color:#5eead4 !important;}

.top-navigation{
  float:none !important;
  width:auto !important;
  margin:0 !important;
  margin-bottom:0 !important;
}
.top-navigation ul{
  list-style:none;margin:0;padding:0;
  display:flex;align-items:center;gap:1.6rem;
}
.top-navigation li{
  list-style-type:none !important;
  display:block !important;
  margin:0 !important;
}
.top-navigation li a{
  font-family:'Source Sans 3',sans-serif;
  font-size:.7rem;font-weight:600;letter-spacing:.1em;
  text-transform:uppercase;
  color:rgba(255,255,255,.68);
  text-decoration:none !important;
  border-bottom:none !important;
  padding-bottom:.15em;
  border-bottom:2px solid transparent !important;
  transition:color .18s,border-color .18s;
}
.top-navigation li a:hover{color:#fff !important;}
/* Active page: teal underline (replaces "overline") */
.top-navigation-current,.top-navigation-current:visited{
  color:#5eead4 !important;
  text-decoration:none !important;
  border-bottom:2px solid #5eead4 !important;
}

/* ---- ENTRY ANIMATIONS ---- */
@keyframes fadeRise{
  from{opacity:0;transform:translateY(14px);}
  to{opacity:1;transform:translateY(0);}
}
.hero-v2{animation:fadeRise .45s ease-out both;}
.blk-v2{animation:fadeRise .45s ease-out both;}
/* Stagger sections slightly */
.blk-v2:nth-of-type(2){animation-delay:.06s;}
.blk-v2:nth-of-type(3){animation-delay:.12s;}
.blk-v2:nth-of-type(4){animation-delay:.18s;}
.blk-v2:nth-of-type(5){animation-delay:.22s;}
.contact-v2{animation:fadeRise .45s .26s ease-out both;}

/* ---- RESPONSIVE ---- */
@media only screen and (max-width:48em){
  .hero-v2{padding:2rem 1.4rem;}
  .hero-name{font-size:2rem;}
  .ri-grid,.proj-grid{grid-template-columns:1fr;}
  .about-grid,.ee-grid{grid-template-columns:1fr;}
  .pub-entry{flex-direction:column;gap:.6rem;}
  .award-entry{flex-direction:column;gap:.5rem;}
  .navigation-wrapper{padding:0 5% !important;}
  .top-navigation ul{gap:.9rem;}
  .top-navigation li a{font-size:.62rem;}
}

/* =====================================================
   ENHANCEMENTS — polish pass
   ===================================================== */

/* 1. Cohesive accent: teal section-header bar matches nav/hero */
.sh-v2::before{background:#5eead4;}

/* 2. Tablet 2-column breakpoint for grids */
@media only screen and (max-width:62em) and (min-width:49em){
  .ri-grid{grid-template-columns:1fr 1fr;}
  .proj-grid{grid-template-columns:1fr 1fr;}
  .ee-grid{grid-template-columns:1fr;}
}

/* 3. Card hover: subtle background tint on top of lift */
.ri-card.c-blue:hover {background:rgba(37,99,235,.03);}
.ri-card.c-violet:hover{background:rgba(124,58,237,.03);}
.ri-card.c-teal:hover  {background:rgba(13,148,136,.03);}
.proj-card:hover{background:#f8fbff;}

/* 4. Fix nav active link: remove duplicate border-bottom transparent,
      keep only the teal underline from .top-navigation-current */
.top-navigation li a{border-bottom:none !important;}
.top-navigation-current,.top-navigation-current:visited{
  border-bottom:2px solid #5eead4 !important;
}

/* 5. JS-powered scroll reveal — elements start hidden once JS sets
      .js-loaded on <html>; each el gets .is-visible when entering viewport.
      Falls back to fully-visible if JS/IntersectionObserver is unavailable. */
.js-loaded .blk-v2,
.js-loaded .contact-v2{
  opacity:0;
  transform:translateY(12px);
  transition:opacity .48s ease, transform .48s ease;
  animation:none !important;
}
.js-loaded .hero-v2{
  opacity:0;
  transform:translateY(10px);
  transition:opacity .38s ease, transform .38s ease;
  animation:none !important;
}
.js-loaded .blk-v2.is-visible,
.js-loaded .hero-v2.is-visible,
.js-loaded .contact-v2.is-visible{
  opacity:1;
  transform:translateY(0);
}

/* =====================================================
   PASS 2 — visual refinements
   ===================================================== */

/* 1. Off-white page background — white cards gain depth against the ground */
html,body{background:#f1f3f6;}

/* 2. Hero name: Source Serif 4 for editorial weight against the dark hero */
.hero-name{font-family:'Source Serif 4',serif;font-size:2.85rem;letter-spacing:-.01em;}
@media only screen and (max-width:48em){.hero-name{font-size:1.95rem;}}

/* 3. Hero: subtle dot-grid texture baked into the background */
.hero-v2{
  background:
    radial-gradient(circle,rgba(255,255,255,.055) 1px,transparent 1px),
    linear-gradient(145deg,#0c1e30 0%,#153350 50%,#0f2844 100%);
  background-size:22px 22px, 100% 100%;
}

/* 4. Hero glow: larger, more atmospheric radius */
.hero-v2::after{
  width:520px;height:520px;top:-110px;right:-90px;
  background:radial-gradient(circle,rgba(94,234,212,.12) 0%,transparent 56%);
}

/* 5. Research cards: tinted backgrounds (color system fully expressed, not just borders) */
.ri-card.c-blue  {background:#f7fbff;}
.ri-card.c-violet{background:#f8f6ff;}
.ri-card.c-teal  {background:#f4faf9;}
.ri-card.c-blue:hover  {background:#eef5ff;transform:translateY(-3px);}
.ri-card.c-violet:hover{background:#f0eaff;transform:translateY(-3px);}
.ri-card.c-teal:hover  {background:#e7f7f5;transform:translateY(-3px);}

/* 6. Facts table: alternating row tint for scannability */
.ft-row:nth-child(even){background:#f6f9fc;}


/* 8. Scroll reveal: expo-out spring easing (more refined than generic ease) */
.js-loaded .blk-v2,
.js-loaded .contact-v2{
  transition:opacity .6s cubic-bezier(0.16,1,0.3,1),transform .6s cubic-bezier(0.16,1,0.3,1) !important;
}
.js-loaded .hero-v2{
  transition:opacity .5s cubic-bezier(0.16,1,0.3,1),transform .5s cubic-bezier(0.16,1,0.3,1) !important;
}

/* 9. Publication entries: colored left accent bar */
.pub-entry{border-left:3px solid #dde5ef;}
.pub-entry:hover{border-left-color:#2563eb;}

/* 10. Award entry: gold left accent */
.award-entry{border-left:3px solid #eab308;}

/* 11. Footer: match off-white page theme */
.footer-wrap{background:#e9ecf0;border-top:1px solid #d8dee6;}
.footer-wrap footer{font-size:.78rem;color:#4f6777;padding:.9rem 0;}
.footer-wrap footer a{color:#2e4f63;border-bottom:1px dotted #3d6070 !important;}
.footer-wrap footer a:hover{color:#1d4ed8;border-bottom-color:#1d4ed8 !important;}

/* 12. Ensure project cards remain white against off-white page */
.proj-card{background:#fff;}
.pub-entry{background:#fff;}
.award-entry{background:#fff;}

/* =====================================================
   PASS 3 — typographic identity, warmth, motion detail
   ===================================================== */

/* Warm parchment canvas — academic/editorial over cold corporate grey */
html,body{background:#f3efe9 !important;}
.footer-wrap{background:#e9e4dc !important;border-top-color:#d2ccc4 !important;}
.footer-wrap footer{color:#4e6070 !important;}

/* Text selection: brand-matched teal */
::selection{background:rgba(94,234,212,.3);color:#0c1e30;}
::-moz-selection{background:rgba(94,234,212,.3);color:#0c1e30;}

/* Font rendering */
body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}

/* Scroll progress bar — teal→blue gradient */
.scroll-progress{
  position:fixed;top:0;left:0;z-index:9999;
  height:2px;width:0%;
  background:linear-gradient(90deg,#5eead4 0%,#2563eb 100%);
  pointer-events:none;
}

/* Nav sliding underline indicator */
.nav-indicator{
  position:absolute;bottom:0;
  height:2px;background:#5eead4;border-radius:1px;
  pointer-events:none;
}

/* ---- HERO: Fraunces display font ---- */
/* Fraunces is a variable optical-size serif — literary authority,
   completely distinct from the generic sans used before */
.hero-name{
  font-family:'Fraunces',serif !important;
  font-size:3.5rem !important;
  font-weight:600;
  letter-spacing:-.03em;
  line-height:1.0;
  font-optical-sizing:auto;
}
.hero-cn{font-family:'Fraunces',serif !important;}
@media only screen and (max-width:48em){.hero-name{font-size:2.1rem !important;}}

/* ---- SECTION HEADERS: upgraded from 0.68rem labels to real headings ---- */
/* The single biggest UX failure was 0.68rem uppercase section headers —
   the page had no visual hierarchy. Fraunces 1.45rem fixes this. */
.sh-v2{
  font-family:'Fraunces',serif !important;
  font-size:1.45rem !important;
  font-weight:600 !important;
  letter-spacing:-.022em !important;
  text-transform:none !important;
  color:#0e1c28 !important;
  padding-bottom:.5rem !important;
  gap:.5rem !important;
  align-items:flex-start !important;
  margin-bottom:1.1rem !important;
}
/* Vertical bar accent — suits a taller heading better than horizontal pill */
.sh-v2::before{
  width:3px !important;
  height:1.1em !important;
  border-radius:2px !important;
  flex-shrink:0 !important;
  margin-top:.16em !important;
  background:#5eead4 !important;
}
.sh-dark{color:rgba(255,255,255,.96) !important;}
.sh-note{
  margin-top:-.4rem !important;
  margin-bottom:1rem !important;
}

/* ---- SUB-LABELS (Education / Industry) ---- */
.ee-sub{
  font-family:'Fraunces',serif !important;
  font-size:1.02rem !important;
  font-weight:500 !important;
  letter-spacing:-.01em !important;
  color:#1a2d3e !important;
  text-transform:none !important;
  margin-bottom:.8rem !important;
}

/* ---- CARD TITLES: Fraunces for identity ---- */
.ri-title{
  font-family:'Fraunces',serif !important;
  font-size:.98rem !important;
  font-weight:500 !important;
  letter-spacing:-.01em !important;
  color:#0e1c28 !important;
  margin-bottom:.45rem !important;
}
.pc-name{
  font-family:'Fraunces',serif !important;
  font-size:.96rem !important;
  font-weight:500 !important;
  letter-spacing:-.01em !important;
}

/* ---- WARM CARD SURFACES on parchment ---- */
.ri-card{background:#faf6f0 !important;}
.ri-card.c-blue  {background:#f5f9ff !important;}
.ri-card.c-violet{background:#f6f3ff !important;}
.ri-card.c-teal  {background:#f2f9f7 !important;}
.ri-card.c-blue:hover  {background:#eaf4ff !important;}
.ri-card.c-violet:hover{background:#ece6ff !important;}
.ri-card.c-teal:hover  {background:#e4f5f1 !important;}
.proj-card{background:#faf6f0 !important;}
.pub-entry{background:#faf6f0 !important;}
.award-entry{background:#faf6f0 !important;}
.facts-tbl{background:#faf6f0 !important;}

/* ---- TIMELINE: pulsing dot on current position (PhD only) ---- */
.tl-current .tl-body::before{
  background:#0d9488 !important;
  width:10px !important;height:10px !important;
  left:-6px !important;top:4px !important;
  box-shadow:0 0 0 2.5px rgba(13,148,136,.2) !important;
  animation:tl-pulse 2.6s ease infinite;
}
@keyframes tl-pulse{
  0%,100%{box-shadow:0 0 0 2.5px rgba(13,148,136,.18);}
  50%{box-shadow:0 0 0 7px rgba(13,148,136,.06);}
}

/* ---- PROJECT CARDS: directional arrow decoration ---- */
.proj-card::after{
  content:'↗';
  position:absolute;top:.85rem;right:.85rem;
  font-size:.82rem;color:#bccad6;
  line-height:1;
  transition:color .2s,transform .24s cubic-bezier(0.16,1,0.3,1);
}
.proj-card:hover::after{color:#1d4ed8;transform:translate(2px,-2px);}

/* Focus: teal outline matches brand */
a:focus-visible,button:focus-visible{
  outline:2px solid #5eead4;outline-offset:3px;border-radius:3px;
}

/* =====================================================
   DESIGN.MD ALIGNMENT LAYER (2026-04-05)
   Single source of truth overrides
   ===================================================== */

:root{
  --va-bg:#ffffff;
  --va-surface:#ffffff;
  --va-surface-soft:#f8fafc;
  --va-border:#d4d8de;
  --va-text:#111827;
  --va-text-secondary:#374151;
  --va-text-tertiary:#6b7280;
  --va-accent:#306cce;
  --va-accent-soft:#2554a0;
  --va-focus:#3b82f6;
  --va-radius-sm:6px;
  --va-radius-md:8px;
  --va-space-1:8px;
  --va-space-2:16px;
  --va-space-3:24px;
  --va-space-4:32px;
  --va-shadow-ambient:0 8px 24px rgba(15,23,42,.06);
}

html,body{
  background:var(--va-bg) !important;
  color:var(--va-text);
  font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,Helvetica,Arial,sans-serif !important;
  color-scheme:light;
}

h1,h2,h3,h4,h5,h6,
.hero-name,.sh-v2,.ee-sub,.ri-title,.pc-name,.pub-title,.award-name,.site-name,.top-navigation li a{
  font-family:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,Helvetica,Arial,sans-serif !important;
}

code,kbd,pre,samp{
  font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace !important;
}

a{color:var(--va-accent-soft);}
a:hover{color:var(--va-accent);}

.page .article-wrap,
.page .article-wrap p,
.page .article-wrap li,
.bio-p,
.ri-card p,
.proj-card p,
.pub-authors,
.award-meta{
  color:var(--va-text-secondary) !important;
}

/* Navigation */
.navigation-wrapper{
  background:var(--va-bg) !important;
  border-bottom:1px solid var(--va-border) !important;
  box-shadow:none !important;
  min-height:64px;
}
.site-name a{color:var(--va-text) !important;}
.site-name a:hover{color:var(--va-accent) !important;}
.top-navigation ul{gap:var(--va-space-2) !important;}
.top-navigation li a{
  color:var(--va-text-secondary) !important;
  min-height:44px;
  display:inline-flex;
  align-items:center;
  padding:12px 8px;
  font-size:.9rem !important;
  line-height:1.2;
}
.top-navigation li a:hover{color:var(--va-accent-soft) !important;}
.top-navigation-current,
.top-navigation-current:visited{
  color:var(--va-accent) !important;
  border-bottom:2px solid var(--va-accent) !important;
}
.nav-indicator{background:var(--va-accent) !important;}

/* Hero + sections */
.hero-v2,
.contact-v2,
.ri-card,
.proj-card,
.pub-entry,
.award-entry,
.facts-tbl{
  background:var(--va-surface) !important;
  border:1px solid var(--va-border) !important;
  border-radius:var(--va-radius-md) !important;
  box-shadow:var(--va-shadow-ambient) !important;
}
.hero-v2{
  background:linear-gradient(180deg,#ffffff 0%,#fbfffd 100%) !important;
  margin-bottom:2.6rem !important;
}
.contact-v2{
  background:linear-gradient(180deg,#f7fffb 0%,#f2fbf7 100%) !important;
}
.hero-v2,
.contact-v2{padding:var(--va-space-4) !important;}
.hero-v2::after{display:none !important;}
.hero-eyebrow,.pc-when,.ft-k,.tl-yr,.tl-note,.sh-note{color:var(--va-text-tertiary) !important;}
.hero-name{
  color:var(--va-text) !important;
  font-size:3rem !important;
  line-height:1.04 !important;
  letter-spacing:-.02em !important;
  font-weight:600 !important;
}
.hero-cn{color:var(--va-text-tertiary) !important;}
.hero-v2 p,.hero-sub{color:var(--va-text-secondary) !important;}
.hero-micro{
  margin:-.35rem 0 1.1rem !important;
}
.hero-micro code{
  background:var(--va-surface-soft) !important;
  color:var(--va-text-secondary) !important;
  border:1px solid var(--va-border);
  border-radius:6px;
  padding:.35em .55em;
  font-size:.82rem;
  white-space:normal;
}

.sh-v2{
  color:var(--va-text) !important;
  font-size:1.6rem !important;
  letter-spacing:-.02em !important;
  text-transform:none !important;
  border-bottom:1px solid var(--va-border) !important;
}
.sh-v2::before{background:var(--va-accent) !important;}

.ri-grid,.proj-grid{gap:var(--va-space-2) !important;}
.ri-card{border-left:1px solid var(--va-border) !important;}
.ri-card.c-blue,.ri-card.c-violet,.ri-card.c-teal{background:var(--va-surface) !important;}
.ri-card:hover,.proj-card:hover,.pub-entry:hover,.award-entry:hover{
  border-color:var(--va-accent) !important;
  box-shadow:none !important;
  transform:translateY(-1px);
}

.proj-card{
  color:var(--va-text) !important;
  position:relative;
}
.proj-card p{color:var(--va-text-secondary) !important;}
.proj-card::after{color:var(--va-text-tertiary) !important;}
.proj-card:hover::after{color:var(--va-accent) !important;}

.btn-v2{
  border-radius:var(--va-radius-sm) !important;
  min-height:44px;
  padding:12px 16px !important;
  font-family:Inter,system-ui,sans-serif !important;
}
.btn-primary{
  background:transparent !important;
  color:var(--va-text) !important;
  border:1px solid var(--va-border) !important;
}
.btn-primary:hover{
  background:rgba(0,0,0,.2) !important;
  color:var(--va-accent-soft) !important;
  border-color:var(--va-accent) !important;
}
.hero-cta .btn-primary{
  background:var(--va-accent) !important;
  color:#ffffff !important;
  border-color:var(--va-accent) !important;
}
.hero-cta .btn-primary:hover{
  background:var(--va-accent-soft) !important;
  color:#ffffff !important;
  border-color:var(--va-accent-soft) !important;
}
.btn-ghost,
.cl-btn,
.pub-link{
  background:transparent !important;
  color:var(--va-text) !important;
  border:1px solid var(--va-border) !important;
}
.btn-ghost:hover,
.cl-btn:hover,
.pub-link:hover{
  background:rgba(0,0,0,.2) !important;
  color:var(--va-accent-soft) !important;
  border-color:var(--va-accent) !important;
}

.pc-badge,
.pc-badge-docs,
.pc-tags span{
  background:var(--va-surface-soft) !important;
  color:var(--va-text-tertiary) !important;
  border:1px solid var(--va-border) !important;
}

.ft-row,
.tl-body,
.award-entry,
.pub-entry{border-color:var(--va-border) !important;}
.ft-row:nth-child(even){background:transparent !important;}
.tl-body::before,
.tl-current .tl-body::before{
  background:var(--va-accent) !important;
  box-shadow:0 0 0 3px rgba(0,217,146,.12) !important;
}

.footer-wrap{
  background:#f8fafc !important;
  border-top:1px solid var(--va-border) !important;
}
.footer-wrap footer,
.footer-wrap a,
.footer-wrap p{color:var(--va-text-tertiary) !important;}
.footer-wrap a:hover{color:var(--va-accent) !important;border-bottom-color:var(--va-accent) !important;}

.scroll-progress{background:var(--va-accent) !important;height:2px;}

a:focus-visible,
button:focus-visible,
.btn-v2:focus-visible,
.top-navigation li a:focus-visible{
  outline:2px solid var(--va-focus) !important;
  outline-offset:3px;
}

/* Motion should be subtle; respect reduced motion */
.hero-v2,.blk-v2,.contact-v2,.proj-card,.ri-card,.pub-entry,.award-entry{animation:none !important;}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none !important;transition:none !important;scroll-behavior:auto !important;}
}

@media only screen and (max-width:48em){
  .navigation-wrapper{
    height:auto;
    padding:8px 5% 10px !important;
    align-items:flex-start;
    gap:4px;
  }
  .top-navigation{
    width:100% !important;
    overflow-x:auto;
    -webkit-overflow-scrolling:touch;
  }
  .top-navigation ul{
    flex-wrap:nowrap;
    width:max-content;
    gap:8px !important;
    padding-bottom:2px;
  }
  .top-navigation li a{
    font-size:.82rem !important;
    padding:10px 10px;
  }
  .hero-v2,.contact-v2{padding:var(--va-space-3) !important;}
  .hero-name{font-size:2.1rem !important;}
}
