/* Frederick Senya — personal site : classy academic style */
:root{
  --ink:#1f2328; --ink-soft:#3c4148; --muted:#6b7178;
  --line:#e3e6ea; --bg:#ffffff; --band:#eceef0;
  --accent:#3a6ea5; --accent-dark:#2b5680; --maxw:1080px;
}
*{box-sizing:border-box;}
html{scroll-behavior:smooth;background:var(--bg);}
body{margin:0;color:var(--ink);background:transparent;
  font-family:"Source Serif 4","Georgia",serif;font-size:18px;line-height:1.65;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;}
h1,h2,h3,h4,.display{font-family:"Playfair Display","Georgia",serif;color:var(--ink);font-weight:600;line-height:1.15;}
a{color:var(--accent);text-decoration:none;}
a:hover{color:var(--accent-dark);text-decoration:underline;}
img{max-width:100%;display:block;}

.site-header{border-bottom:1px solid var(--line);position:sticky;top:0;z-index:40;
  background:rgba(255,255,255,0.92);backdrop-filter:saturate(180%) blur(6px);}
.nav{max-width:var(--maxw);margin:0 auto;padding:14px 22px;display:flex;align-items:center;gap:18px;}
.brand{display:flex;align-items:center;gap:12px;font-family:"Playfair Display",serif;font-weight:600;font-size:1.15rem;color:var(--ink);white-space:nowrap;}
.brand .mono{width:34px;height:34px;border:1.5px solid var(--ink);border-radius:6px;display:grid;place-items:center;font-family:"Playfair Display",serif;font-size:.95rem;letter-spacing:.5px;color:var(--ink);}
.nav-links{margin-left:auto;display:flex;flex-wrap:wrap;gap:20px;align-items:center;font-family:"Source Serif 4",serif;font-size:.98rem;}
.nav-links a{color:var(--ink-soft);}
.nav-links a:hover{color:var(--accent);text-decoration:none;}
.nav-links a.active{color:var(--ink);font-weight:600;border-bottom:2px solid var(--accent);padding-bottom:2px;}

.banner{position:relative;background:var(--band);overflow:hidden;border-bottom:1px solid var(--line);}
.banner::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:1;background:radial-gradient(46% 62% at 50% 48%, rgba(246,247,248,.85), rgba(236,238,240,0) 72%), linear-gradient(180deg,#eceef0 0%, rgba(236,238,240,0) 15%, rgba(236,238,240,0) 85%, #eceef0 100%);}
.banner .wave{position:absolute;inset:0;width:100%;height:100%;display:block;z-index:0;}
.banner .banner-inner{position:relative;z-index:2;max-width:var(--maxw);margin:0 auto;padding:52px 22px 46px;text-align:center;}
.banner h1.display{font-size:clamp(2.4rem,5.4vw,4rem);margin:0;letter-spacing:1px;text-shadow:0 1px 0 rgba(255,255,255,.6);}
.banner .subtitle{margin:12px auto 0;color:var(--ink-soft);font-size:1.04rem;letter-spacing:.3px;max-width:680px;font-family:"Source Serif 4",serif;}

.wrap{max-width:var(--maxw);margin:0 auto;padding:52px 22px;}
.section-title{font-size:1.9rem;margin:0 0 6px;}
.section-kicker{color:var(--accent);font-family:"Source Serif 4",serif;font-weight:600;text-transform:uppercase;letter-spacing:1.5px;font-size:.78rem;margin:0 0 10px;}
.lead{font-size:1.12rem;color:var(--ink-soft);}
hr.rule{border:0;border-top:1px solid var(--line);margin:40px 0;}

.intro{display:grid;grid-template-columns:300px 1fr;gap:44px;align-items:start;position:relative;}
.intro .photo{border:1px solid var(--line);border-radius:4px;overflow:hidden;box-shadow:0 10px 30px rgba(31,35,40,.08);}
.intro .bio p{margin:0 0 16px;text-align:justify;}
.intro .hexbg{position:absolute;right:-40px;top:-10px;width:420px;max-width:45%;opacity:.55;z-index:-1;pointer-events:none;}
.interests{list-style:none;padding:0;margin:8px 0 0;columns:2;column-gap:34px;}
.interests li{padding:6px 0 6px 20px;position:relative;break-inside:avoid;color:var(--ink-soft);}
.interests li::before{content:"";position:absolute;left:0;top:15px;width:7px;height:7px;background:var(--accent);border-radius:1px;transform:rotate(45deg);}

.cards{display:grid;grid-template-columns:1fr 1fr;gap:22px;}
.card{border:1px solid var(--line);border-radius:8px;padding:22px 24px;background:#fff;transition:box-shadow .18s ease,transform .18s ease;}
.card:hover{box-shadow:0 12px 30px rgba(31,35,40,.09);transform:translateY(-2px);}
.card h3{margin:0 0 8px;font-size:1.2rem;}
.card p{margin:0 0 12px;color:var(--ink-soft);font-size:.98rem;}
.card .tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px;}
.tag{font-family:"Source Serif 4",serif;font-size:.76rem;color:var(--accent-dark);background:rgba(58,110,165,.08);border:1px solid rgba(58,110,165,.18);padding:3px 9px;border-radius:20px;}

.pub{border-left:3px solid var(--accent);padding:4px 0 4px 18px;margin:0 0 26px;}
.pub .venue{color:var(--accent-dark);font-family:"Source Serif 4",serif;font-size:.76rem;text-transform:uppercase;letter-spacing:1px;}
.pub h3{margin:4px 0 6px;font-size:1.18rem;}
.pub .authors{color:var(--muted);font-size:.98rem;margin:0 0 6px;}
.pub .abs{color:var(--ink-soft);font-size:.98rem;margin:6px 0 0;}
.note{color:var(--muted);font-size:.85rem;font-style:italic;}

.timeline{position:relative;margin:0;padding:0 0 0 24px;list-style:none;border-left:2px solid var(--line);}
.timeline li{position:relative;margin:0 0 30px;}
.timeline li::before{content:"";position:absolute;left:-31px;top:6px;width:11px;height:11px;background:#fff;border:2px solid var(--accent);border-radius:50%;}
.timeline .when{color:var(--muted);font-size:.85rem;font-family:"Source Serif 4",serif;text-transform:uppercase;letter-spacing:1px;}
.timeline h3{margin:2px 0 2px;font-size:1.16rem;}
.timeline .org{color:var(--ink-soft);font-size:.98rem;margin:0 0 8px;}
.timeline ul{margin:6px 0 0;padding-left:18px;color:var(--ink-soft);font-size:.96rem;}
.timeline ul li{margin:0 0 4px;}

.skillgrid{display:grid;grid-template-columns:1fr 1fr;gap:24px;}
.skillbox{border:1px solid var(--line);border-radius:8px;padding:20px 22px;}
.skillbox h3{margin:0 0 10px;font-size:1.1rem;}
.chips{display:flex;flex-wrap:wrap;gap:8px;}
.chip{font-family:"Source Serif 4",serif;font-size:.9rem;color:var(--ink-soft);background:#f4f6f8;border:1px solid var(--line);padding:5px 12px;border-radius:6px;}

.btn{display:inline-block;font-family:"Source Serif 4",serif;font-size:.95rem;border:1px solid var(--accent);color:var(--accent-dark);padding:9px 18px;border-radius:6px;transition:background .15s ease,color .15s ease;}
.btn:hover{background:var(--accent);color:#fff;text-decoration:none;}

.site-footer{border-top:1px solid var(--line);margin-top:40px;background:#fafbfc;}
.footer-inner{max-width:var(--maxw);margin:0 auto;padding:30px 22px;display:flex;flex-wrap:wrap;gap:14px;align-items:center;justify-content:space-between;color:var(--muted);font-size:.9rem;font-family:"Source Serif 4",serif;}
.footer-inner a{color:var(--ink-soft);}
.social{display:flex;gap:16px;}

@media (max-width:820px){
  .intro{grid-template-columns:1fr;gap:26px;}
  .intro .photo{max-width:280px;margin:0 auto;}
  .interests{columns:1;}
  .cards,.skillgrid{grid-template-columns:1fr;}
  .nav-links{gap:12px;font-size:.9rem;}
  .intro .hexbg{display:none;}
}

/* ---- scroll-driven header darkening + banner fade ---- */
.site-header{transition:background-color .38s ease, border-color .38s ease, box-shadow .38s ease;}
.site-header .brand,.site-header .brand .mono,.site-header .nav-links a{transition:color .38s ease, border-color .38s ease;}
.site-header::before{content:"";position:absolute;inset:0;background:rgba(18,20,23,0.97);opacity:var(--dark,0);pointer-events:none;z-index:0;}
.site-header .nav{position:relative;z-index:1;}
.site-header.scrolled{border-bottom-color:rgba(255,255,255,0.08);}
.site-header.scrolled .brand{color:#fff;}
.site-header.scrolled .brand .mono{border-color:rgba(255,255,255,0.78);color:#fff;}
.site-header.scrolled .nav-links a{color:#cfd3d8;}
.site-header.scrolled .nav-links a:hover{color:#fff;}
.site-header.scrolled .nav-links a.active{color:#fff;border-bottom-color:var(--accent);}
.banner .banner-inner{will-change:opacity, transform;}

/* ---- decorative side background (metabolic-network motif) ---- */
.bg-deco{position:fixed;inset:0;z-index:-1;pointer-events:none;
  background-image:url("side.svg?v=9"),url("side-right.svg?v=9");
  background-position:left top,right top;
  background-size:300px 100%,300px 100%;
  background-repeat:no-repeat,no-repeat;}
@media (max-width:1200px){.bg-deco{display:none;}}

/* ---- home: tagline + contact under photo ---- */
.intro .left-col{display:flex;flex-direction:column;}
.tagline{font-family:"Source Serif 4",serif;font-style:italic;text-align:center;color:var(--ink-soft);font-size:1.04rem;line-height:1.45;margin:16px 6px 0;}
.contact-card{margin-top:14px;text-align:center;font-family:"Source Serif 4",serif;font-size:.96rem;}
.contact-card .c-email{display:inline-block;margin-bottom:7px;}
.contact-card .c-links{display:flex;gap:10px;justify-content:center;align-items:center;}
.contact-card .c-links span{color:#c2cad1;}

/* ---- fancy contact icon badges ---- */
.socials{display:flex;gap:12px;justify-content:center;align-items:center;margin-top:8px;}
.socials .social{width:42px;height:42px;border-radius:50%;border:1px solid var(--line);background:#fff;display:flex;align-items:center;justify-content:center;color:var(--ink-soft);transition:background .18s ease,color .18s ease,border-color .18s ease,transform .18s ease,box-shadow .18s ease;}
.socials .social:hover{background:var(--accent);border-color:var(--accent);color:#fff;transform:translateY(-3px);box-shadow:0 8px 18px rgba(58,110,165,.30);text-decoration:none;}
.socials .social svg{width:19px;height:19px;fill:currentColor;display:block;}
.contact-card .c-email{margin-top:12px;font-size:.9rem;color:var(--muted);}
.contact-card .c-email:hover{color:var(--accent);}

/* ---- Teaching page ---- */
.figure{margin:26px 0 0;border:1px solid var(--line);border-radius:10px;overflow:hidden;box-shadow:0 12px 30px rgba(31,35,40,.08);background:#fff;}
.figure img{width:100%;display:block;}
.figure figcaption{padding:10px 16px;color:var(--muted);font-size:.9rem;font-family:"Source Serif 4",serif;}
.course-list{display:flex;flex-wrap:wrap;gap:10px;margin-top:10px;}
.course{display:flex;flex-direction:column;gap:2px;border:1px solid var(--line);border-radius:8px;padding:10px 14px;background:#fff;color:var(--ink);transition:box-shadow .16s ease,transform .16s ease,border-color .16s ease;}
a.course:hover{border-color:var(--accent);box-shadow:0 8px 20px rgba(58,110,165,.16);transform:translateY(-2px);text-decoration:none;}
.course b{font-family:"Playfair Display",serif;font-weight:600;font-size:1.02rem;}
.course .num{color:var(--accent-dark);font-size:.76rem;letter-spacing:.5px;font-family:"Source Serif 4",serif;}
.rmp{display:grid;grid-template-columns:120px 1fr;gap:24px;align-items:center;border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:10px;padding:22px 26px;background:#fff;}
.rmp .score .big{font-family:"Playfair Display",serif;font-size:2.7rem;color:var(--ink);line-height:1;}
.rmp .score{text-align:center;}
.rmp .score .sub{color:var(--muted);font-size:.78rem;margin-top:4px;}
.rmp-stats{display:flex;flex-wrap:wrap;gap:8px;align-items:center;color:var(--ink-soft);font-family:"Source Serif 4",serif;font-size:.95rem;}
.rmp-stats .dot{color:#c2cad1;}
blockquote.rq{margin:10px 0 0;padding:0 0 0 14px;border-left:2px solid var(--line);color:var(--ink-soft);font-style:italic;font-size:.98rem;}
.split{display:grid;grid-template-columns:1fr 300px;gap:34px;align-items:start;}
ul.plain{margin:6px 0 0;padding-left:18px;color:var(--ink-soft);}
ul.plain li{margin:0 0 6px;}
.videoframe{position:relative;display:block;border-radius:10px;overflow:hidden;border:1px solid var(--line);box-shadow:0 12px 30px rgba(31,35,40,.10);}
.videoframe img{width:100%;display:block;transition:transform .3s ease,filter .3s ease;filter:brightness(.9);}
.videoframe:hover img{transform:scale(1.02);filter:brightness(.8);}
.videoframe .play{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;}
.videoframe .btn-play{width:74px;height:74px;border-radius:50%;background:rgba(255,255,255,.92);display:flex;align-items:center;justify-content:center;box-shadow:0 10px 28px rgba(0,0,0,.28);transition:transform .18s ease,background .18s ease;}
.videoframe:hover .btn-play{transform:scale(1.08);background:#fff;}
.videoframe .btn-play svg{width:30px;height:30px;fill:var(--accent-dark);margin-left:3px;}
@media (max-width:820px){.split{grid-template-columns:1fr;} .rmp{grid-template-columns:1fr;text-align:center;} }

/* ---- teaching hero smaller + video element ---- */
.figure.hero-fig{max-width:700px;margin-left:auto;margin-right:auto;}
video.videoframe{width:100%;max-width:600px;margin-left:auto;margin-right:auto;display:block;background:#000;height:auto;}

/* ---- Research page: link bar + interactive research areas ---- */
.linkbar{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px;}
.linkchip{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:22px;padding:8px 15px;font-family:"Source Serif 4",serif;font-size:.92rem;color:var(--ink-soft);background:#fff;transition:all .16s ease;}
.linkchip svg{width:16px;height:16px;fill:currentColor;}
.linkchip:hover{border-color:var(--accent);color:var(--accent-dark);box-shadow:0 6px 16px rgba(58,110,165,.16);text-decoration:none;transform:translateY(-1px);}
.areas{border-top:1px solid var(--line);}
.area{border-bottom:1px solid var(--line);}
.area>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:14px;padding:18px 34px 18px 4px;position:relative;transition:background .15s ease;}
.area>summary::-webkit-details-marker{display:none;}
.area>summary:hover{background:#fafbfc;}
.area .area-t{font-family:"Playfair Display",serif;font-weight:600;font-size:1.22rem;color:var(--ink);}
.area>summary:hover .area-t{color:var(--accent-dark);}
.area .area-k{color:var(--muted);font-size:.9rem;font-family:"Source Serif 4",serif;margin-left:auto;}
.area .chev{position:absolute;right:8px;top:50%;width:9px;height:9px;margin-top:-6px;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:rotate(-45deg);transition:transform .2s ease;}
.area[open] .chev{transform:rotate(45deg);}
.area[open]>summary .area-t{color:var(--accent-dark);}
.area .area-b{padding:0 4px 22px;}
.area .area-b p{margin:0 0 14px;color:var(--ink-soft);}
.area-links{display:flex;flex-wrap:wrap;gap:10px;}
.rlink{font-family:"Source Serif 4",serif;font-size:.86rem;color:var(--accent-dark);background:rgba(58,110,165,.08);border:1px solid rgba(58,110,165,.18);padding:5px 12px;border-radius:20px;transition:background .15s ease,color .15s ease;}
.rlink:hover{background:var(--accent);color:#fff;text-decoration:none;}
.pub h3 a{color:var(--ink);}
.pub h3 a:hover{color:var(--accent-dark);}
@media (max-width:640px){.area .area-k{display:none;}}

/* ---- home: What's New scrollable box ---- */
.whatsnew{margin-top:52px;}
.wn-title{font-family:"Playfair Display",serif;font-weight:600;font-size:1.5rem;font-variant:small-caps;letter-spacing:1.5px;margin:0 0 16px;}
.news-box{max-height:340px;overflow-y:auto;border:1px solid var(--line);border-radius:10px;padding:2px 22px;background:#fff;box-shadow:inset 0 -14px 14px -14px rgba(31,35,40,.06), inset 0 14px 14px -14px rgba(31,35,40,.06);}
.news-item{display:grid;grid-template-columns:118px 1fr;gap:20px;padding:16px 2px;border-bottom:1px solid var(--line);}
.news-item:last-child{border-bottom:none;}
.news-date{color:var(--accent-dark);font-family:"Source Serif 4",serif;font-weight:600;font-size:.9rem;white-space:nowrap;padding-top:1px;}
.news-text{color:var(--ink-soft);font-size:1rem;line-height:1.55;}
.news-box::-webkit-scrollbar{width:9px;}
.news-box::-webkit-scrollbar-track{background:transparent;}
.news-box::-webkit-scrollbar-thumb{background:#d3d9df;border-radius:6px;border:2px solid #fff;}
.news-box::-webkit-scrollbar-thumb:hover{background:#b9c1c9;}
.news-box{scrollbar-width:thin;scrollbar-color:#d3d9df transparent;}
@media (max-width:640px){.news-item{grid-template-columns:1fr;gap:4px;}}

/* ---- home headline: matching accent, more visible ---- */
.banner .subtitle.home-sub{color:var(--accent-dark);font-weight:500;}

/* ---- home: broad interests as pills + fun fact ---- */
.interests-lead{margin:22px 0 10px;font-weight:600;color:var(--ink);font-size:1.02rem;}
.interest-list{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 4px;}
.interest{display:inline-flex;align-items:center;gap:9px;font-family:"Source Serif 4",serif;font-size:.94rem;color:var(--accent-dark);background:rgba(58,110,165,.08);border:1px solid rgba(58,110,165,.20);padding:8px 14px;border-radius:22px;transition:background .16s ease,color .16s ease,transform .16s ease,box-shadow .16s ease;}
.interest::before{content:"";width:7px;height:7px;background:var(--accent);border-radius:1px;transform:rotate(45deg);flex:none;transition:background .16s ease;}
.interest:hover{background:var(--accent);color:#fff;transform:translateY(-2px);box-shadow:0 8px 18px rgba(58,110,165,.24);}
.interest:hover::before{background:#fff;}
.funfact{background:#f6f8fa;border-left:3px solid var(--accent);border-radius:0 8px 8px 0;padding:13px 18px;color:var(--ink-soft);}
