/* =========================================================================
   CADA Lab — Center for Applied Data Science and Artificial Intelligence
   Faculty of Data Science and AI, College of Technology, NEU
   -------------------------------------------------------------------------
   Typography : Roboto (300/400/500/700) + Roboto Mono (400/500)
   Theme      : light by default, dark via prefers-color-scheme or
                [data-theme="dark"] on <html>
   ========================================================================= */

/* -------------------------------------------------------------------------
   1. Design tokens
   ---------------------------------------------------------------------- */
:root{
  /* --- typefaces ------------------------------------------------------ */
  --font-sans:"Roboto","Helvetica Neue",Arial,"Segoe UI",sans-serif;
  --font-mono:"Roboto Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;

  /* --- type scale ----------------------------------------------------- */
  --fs-display:clamp(31px,4.3vw,54px);
  --fs-h2:19px;      /* section headings in the left rail          */
  --fs-h3:17.5px;    /* card headings                              */
  --fs-name:20px;    /* people names                               */
  --fs-lede:18px;    /* section opening paragraph                  */
  --fs-body:15px;    /* running text                               */
  --fs-sm:13.5px;    /* meta, captions, table cells                */
  --fs-xs:12.5px;    /* dense meta                                 */
  --fs-label:10.5px; /* mono uppercase labels                      */
  --fs-metric:38px;  /* hero statistics                            */

  --lh-tight:1.12;
  --lh-snug:1.35;
  --lh-body:1.68;

  --ls-display:-.028em;
  --ls-label:.15em;

  /* --- light palette --------------------------------------------------- */
  --paper:#F6F7F9;
  --surface:#FFFFFF;
  --surface-2:#EDF0F5;
  --ink:#0F1926;
  --ink-2:#3E4A5E;
  --ink-3:#6B7688;
  --rule:#DBE1E9;
  --rule-strong:#BAC4D1;
  --blue:#1B4FA8;
  --blue-bright:#2E7BD6;
  --blue-wash:#E7EEF9;
  --ochre:#A9660F;
  --ochre-wash:#F6EEE0;

  /* --- the hero / contact band is dark in both themes ------------------ */
  --hero-bg:#0B1420;
  --hero-ink:#EDF2F8;
  --hero-body:#C6D2E0;
  --hero-muted:#93A4B9;
  --hero-rule:#1E2C3E;
  --hero-accent:#5FA8E8;

  --maxw:1180px;
  --gutter:28px;

  --logo:url("../img/logo.jpg");
}

@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --paper:#0B1119;
    --surface:#101923;
    --surface-2:#16212E;
    --ink:#E7EDF5;
    --ink-2:#AEBCCD;
    --ink-3:#7C8CA1;
    --rule:#202D3C;
    --rule-strong:#31404F;
    --blue:#79ADF2;
    --blue-bright:#9BC6F8;
    --blue-wash:#132234;
    --ochre:#DBA254;
    --ochre-wash:#241C10;
    --hero-bg:#070D15;
    --hero-rule:#1B2634;
  }
}

:root[data-theme="dark"]{
  --paper:#0B1119;
  --surface:#101923;
  --surface-2:#16212E;
  --ink:#E7EDF5;
  --ink-2:#AEBCCD;
  --ink-3:#7C8CA1;
  --rule:#202D3C;
  --rule-strong:#31404F;
  --blue:#79ADF2;
  --blue-bright:#9BC6F8;
  --blue-wash:#132234;
  --ochre:#DBA254;
  --ochre-wash:#241C10;
  --hero-bg:#070D15;
  --hero-rule:#1B2634;
}

/* -------------------------------------------------------------------------
   2. Base
   ---------------------------------------------------------------------- */
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:var(--font-sans);
  font-size:var(--fs-body);
  font-weight:400;
  line-height:var(--lh-body);
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}
img{max-width:100%;display:block}
h1,h2,h3,h4{margin:0;font-weight:500;line-height:var(--lh-snug);text-wrap:balance}
p{margin:0}
ul{margin:0;padding:0;list-style:none}
a{
  color:var(--blue);
  text-decoration:none;
  border-bottom:1px solid color-mix(in srgb,var(--blue) 32%,transparent);
}
a:hover{border-bottom-color:var(--blue)}
a:focus-visible,button:focus-visible{outline:2px solid var(--blue-bright);outline-offset:3px;border-radius:2px}

.wrap{max-width:var(--maxw);margin:0 auto;padding:0 var(--gutter)}
.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}
.eyebrow{
  font-family:var(--font-mono);
  font-size:var(--fs-label);
  font-weight:500;
  letter-spacing:var(--ls-label);
  text-transform:uppercase;
  color:var(--ink-3);
}
.skip{
  position:absolute;left:-9999px;top:0;background:var(--surface);color:var(--ink);
  padding:10px 16px;z-index:100;border:1px solid var(--rule-strong);
}
.skip:focus{left:12px;top:12px}

/* -------------------------------------------------------------------------
   3. CADA lock-up — windowed out of the supplied logo sheet (1026x383)
   ---------------------------------------------------------------------- */
.logo{
  display:block;
  background-image:var(--logo);
  background-repeat:no-repeat;
  background-color:#fff;
}
.logo-plate{
  display:inline-block;
  line-height:0;
  background:#fff;
  border:1px solid var(--rule-strong);
  border-radius:3px;
  padding:5px 9px;
}
.logo-sm{width:124px;height:28px;background-size:205.2px auto;background-position:-40px -31px}
.logo-lg{width:217px;height:49px;background-size:359.1px auto;background-position:-70px -54.25px}
.contact .logo-plate{border-color:rgba(255,255,255,.14)}

/* -------------------------------------------------------------------------
   4. Top bar
   ---------------------------------------------------------------------- */
.topbar{
  position:sticky;top:0;z-index:40;
  background:color-mix(in srgb,var(--paper) 88%,transparent);
  backdrop-filter:saturate(180%) blur(10px);
  -webkit-backdrop-filter:saturate(180%) blur(10px);
  border-bottom:1px solid var(--rule);
}
.topbar-in{display:flex;align-items:center;gap:24px;height:58px}
.brandmark{display:flex;align-items:center;gap:12px;flex:0 0 auto;border-bottom:none}
.brandmark:hover{border-bottom:none}
.brandmark .s{font-size:var(--fs-xs);color:var(--ink-3);letter-spacing:.005em;line-height:1.3}
@media (max-width:600px){.brandmark .s{display:none}}
.navlinks{display:flex;gap:20px;margin-left:auto;flex-wrap:wrap}
.navlinks a{
  font-family:var(--font-mono);
  font-size:11px;
  font-weight:500;
  letter-spacing:.1em;
  text-transform:uppercase;
  color:var(--ink-2);
  border-bottom:none;
  padding:4px 0;
}
.navlinks a:hover{color:var(--blue)}
@media (max-width:920px){.navlinks{display:none}}

/* -------------------------------------------------------------------------
   5. Hero
   ---------------------------------------------------------------------- */
.hero{
  position:relative;
  background:var(--hero-bg);
  color:var(--hero-ink);
  overflow:hidden;
  border-bottom:1px solid var(--hero-rule);
}
#routes{position:absolute;inset:0;width:100%;height:100%;display:block}
.hero-in{position:relative;z-index:2;padding:84px 0 0}
.hero-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,.8fr);gap:60px;align-items:end}
@media (max-width:920px){.hero-grid{grid-template-columns:1fr;gap:36px}.hero-in{padding-top:52px}}

.hero .kicker{
  font-family:var(--font-mono);
  font-size:var(--fs-label);
  font-weight:500;
  letter-spacing:var(--ls-label);
  text-transform:uppercase;
  color:var(--hero-muted);
}
.hero h1{
  margin:20px 0 0;
  font-size:var(--fs-display);
  font-weight:300;
  letter-spacing:var(--ls-display);
  line-height:var(--lh-tight);
  color:var(--hero-ink);
}
.hero h1 b{font-weight:400;color:var(--hero-accent)}
.hero-lede{
  margin-top:24px;
  max-width:58ch;
  color:var(--hero-body);
  font-size:16.5px;
  line-height:1.7;
  font-weight:300;
}
.hero-tag{margin-top:26px;display:flex;flex-wrap:wrap;gap:8px}
.hero-tag span{
  font-family:var(--font-mono);
  font-size:10px;
  font-weight:500;
  letter-spacing:.13em;
  text-transform:uppercase;
  color:#A9BCD1;
  border:1px solid var(--hero-rule);
  border-radius:2px;
  padding:6px 10px;
  background:rgba(255,255,255,.02);
}

.hero-card{border:1px solid var(--hero-rule);background:rgba(255,255,255,.028);padding:22px 22px 18px}
.hero-card .eyebrow{color:var(--hero-muted)}
.hero-card dl{margin:16px 0 0;display:grid;gap:11px}
.hero-card .row{
  display:flex;justify-content:space-between;gap:16px;align-items:baseline;
  border-bottom:1px dotted var(--hero-rule);padding-bottom:10px;
}
.hero-card .row:last-child{border-bottom:none;padding-bottom:0}
.hero-card dt{color:var(--hero-muted);font-size:var(--fs-sm)}
.hero-card dd{
  margin:0;font-family:var(--font-mono);font-size:12.5px;font-weight:400;
  color:var(--hero-ink);font-variant-numeric:tabular-nums;text-align:right;
}

.metrics{position:relative;z-index:2;margin-top:62px;border-top:1px solid var(--hero-rule);display:grid;grid-template-columns:repeat(5,1fr)}
@media (max-width:920px){.metrics{grid-template-columns:repeat(2,1fr);margin-top:44px}}
.metric{padding:22px 20px 26px;border-right:1px solid var(--hero-rule)}
.metric:last-child{border-right:none}
@media (max-width:920px){
  .metric{border-bottom:1px solid var(--hero-rule)}
  .metric:nth-child(2n){border-right:none}
}
.metric .n{
  font-size:var(--fs-metric);font-weight:300;line-height:1;
  letter-spacing:-.02em;color:var(--hero-accent);font-variant-numeric:tabular-nums;
}
.metric .l{margin-top:10px;font-size:var(--fs-xs);color:var(--hero-muted);line-height:1.5}

/* -------------------------------------------------------------------------
   6. Section scaffolding
   ---------------------------------------------------------------------- */
section.band{border-bottom:1px solid var(--rule);padding:72px 0}
section.band.tint{background:var(--surface)}
.sec{display:grid;grid-template-columns:176px minmax(0,1fr);gap:52px;align-items:start}
@media (max-width:920px){.sec{grid-template-columns:1fr;gap:24px}}
.sec-label{position:sticky;top:82px}
.sec-label .n{
  display:block;margin-bottom:8px;
  font-family:var(--font-mono);font-size:11px;font-weight:500;
  letter-spacing:.13em;color:var(--ochre);
}
.sec-label h2{font-size:var(--fs-h2);font-weight:500;letter-spacing:-.006em;color:var(--ink)}
.sec-label .hint{margin-top:10px;font-size:var(--fs-xs);color:var(--ink-3);line-height:1.55}
@media (max-width:920px){.sec-label{position:static}.sec-label .hint{display:none}}

.lede{font-size:var(--fs-lede);font-weight:300;line-height:1.58;color:var(--ink);max-width:62ch}
.body-col{max-width:68ch}
.body-col p{color:var(--ink-2)}
.body-col p+p{margin-top:16px}

/* -------------------------------------------------------------------------
   7. Research directions
   ---------------------------------------------------------------------- */
.dirs{
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;
  background:var(--rule);border:1px solid var(--rule);margin-top:26px;
}
@media (max-width:760px){.dirs{grid-template-columns:1fr}}
.dir{background:var(--surface);padding:24px;display:flex;flex-direction:column;gap:12px}
section.band.tint .dir{background:var(--paper)}
.dir .code{font-family:var(--font-mono);font-size:10px;font-weight:500;letter-spacing:.14em;color:var(--ochre)}
.dir h3{font-size:var(--fs-h3);font-weight:500;letter-spacing:-.004em}
.dir p{font-size:14px;color:var(--ink-2);line-height:1.62}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:auto;padding-top:8px}
.chips span{
  font-family:var(--font-mono);font-size:10.5px;letter-spacing:.02em;
  color:var(--blue);background:var(--blue-wash);padding:4px 8px;border-radius:2px;
}
.dir .lead{font-size:var(--fs-xs);color:var(--ink-3)}

/* -------------------------------------------------------------------------
   8. People
   ---------------------------------------------------------------------- */
.people{display:grid;gap:1px;background:var(--rule);border:1px solid var(--rule);margin-top:26px}
.person{background:var(--surface);padding:26px;display:grid;grid-template-columns:236px minmax(0,1fr);gap:36px}
section.band.tint .person{background:var(--paper)}
@media (max-width:860px){.person{grid-template-columns:1fr;gap:16px}}
.p-id .role{
  font-family:var(--font-mono);font-size:var(--fs-label);font-weight:500;
  letter-spacing:.13em;text-transform:uppercase;color:var(--ochre);
}
.p-id h3{margin-top:10px;font-size:var(--fs-name);font-weight:500;letter-spacing:-.012em;line-height:1.28}
.p-id .title{margin-top:8px;font-size:var(--fs-sm);color:var(--ink-2);line-height:1.55}
.p-id .mail{
  display:inline-block;margin-top:14px;
  font-family:var(--font-mono);font-size:12.5px;color:var(--blue);
  border-bottom:1px solid color-mix(in srgb,var(--blue) 30%,transparent);word-break:break-all;
}
.p-body p{font-size:14.5px;color:var(--ink-2);line-height:1.66}
.p-body p+p{margin-top:12px}
.facts{margin-top:16px;display:grid;gap:8px}
.facts li{
  display:grid;grid-template-columns:120px minmax(0,1fr);gap:14px;align-items:baseline;
  font-size:var(--fs-sm);border-top:1px dotted var(--rule-strong);padding-top:8px;
}
@media (max-width:560px){.facts li{grid-template-columns:1fr;gap:2px}}
.facts .k{
  font-family:var(--font-mono);font-size:10px;font-weight:500;letter-spacing:.11em;
  text-transform:uppercase;color:var(--ink-3);
}
.facts .v{color:var(--ink-2);line-height:1.55}

/* -------------------------------------------------------------------------
   9. Row lists, publications
   ---------------------------------------------------------------------- */
.rows{border-top:1px solid var(--rule);margin-top:26px}
.row-item{
  display:grid;grid-template-columns:124px minmax(0,1fr);gap:28px;align-items:start;
  padding:16px 0;border-bottom:1px solid var(--rule);
}
@media (max-width:640px){.row-item{grid-template-columns:1fr;gap:6px}}
.row-item .when{
  font-family:var(--font-mono);font-size:12px;color:var(--ochre);
  font-variant-numeric:tabular-nums;padding-top:3px;
}
.row-item .what strong{display:block;font-size:14.5px;font-weight:500;color:var(--ink);line-height:1.45}
.row-item .what p{margin-top:5px;font-size:14px;color:var(--ink-2);line-height:1.6}

.pubs{border-top:1px solid var(--rule);margin-top:26px}
.pub{display:grid;grid-template-columns:60px minmax(0,1fr);gap:22px;padding:15px 0;border-bottom:1px solid var(--rule)}
@media (max-width:640px){.pub{grid-template-columns:1fr;gap:5px}}
.pub .yr{
  font-family:var(--font-mono);font-size:12px;color:var(--ink-3);
  font-variant-numeric:tabular-nums;padding-top:4px;
}
.pub .t{font-size:14.5px;font-weight:500;color:var(--ink);line-height:1.5}
.pub .a{margin-top:5px;font-size:13px;color:var(--ink-3);line-height:1.5}
.pub .v{margin-top:3px;font-size:13px;color:var(--blue);line-height:1.5}

/* -------------------------------------------------------------------------
   10. Panels, chips, students
   ---------------------------------------------------------------------- */
.cols2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:34px}
@media (max-width:760px){.cols2{grid-template-columns:1fr;gap:26px}}

.panel{border:1px solid var(--rule);background:var(--surface);padding:22px 24px 24px}
section.band.tint .panel{background:var(--paper)}
.panel .eyebrow{display:block;margin-bottom:10px}
.panel h3{font-size:var(--fs-h3);font-weight:500;margin-bottom:2px}
.ticks{display:grid;gap:9px;margin-top:14px}
.ticks li{position:relative;padding-left:20px;font-size:14px;color:var(--ink-2);line-height:1.55}
.ticks li::before{
  content:"";position:absolute;left:2px;top:8px;width:7px;height:7px;
  border-left:1.5px solid var(--ochre);border-bottom:1.5px solid var(--ochre);
  transform:rotate(-45deg);
}

.partners{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.partners span{
  font-size:var(--fs-sm);color:var(--ink-2);background:var(--surface);
  border:1px solid var(--rule-strong);border-radius:2px;padding:6px 11px;
}
section.band.tint .partners span{background:var(--paper)}

.pods{
  display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;
  background:var(--rule);border:1px solid var(--rule);margin-top:26px;
}
@media (max-width:860px){.pods{grid-template-columns:1fr}}
.pod{background:var(--surface);padding:20px}
section.band.tint .pod{background:var(--paper)}
.pod .k{
  font-family:var(--font-mono);font-size:10px;font-weight:500;letter-spacing:.12em;
  text-transform:uppercase;color:var(--ochre);
}
.pod h4{margin-top:9px;font-size:16px;font-weight:500}
.pod p{margin-top:7px;font-size:13.5px;color:var(--ink-2);line-height:1.58}

/* -------------------------------------------------------------------------
   10b. Verification band — key facts a reviewer needs to check
   ---------------------------------------------------------------------- */
.keyfact{
  margin-top:26px;
  padding:22px 24px 24px;
  background:var(--ochre-wash);
  border:1px solid var(--rule-strong);
  border-left:3px solid var(--ochre);
}
.keyfact .eyebrow{display:block;margin-bottom:10px;color:var(--ochre)}
.keyfact h3{font-size:19px;font-weight:500;letter-spacing:-.008em;line-height:1.36;color:var(--ink)}
.keyfact > p{margin-top:11px;font-size:14.5px;color:var(--ink-2);line-height:1.62;max-width:70ch}
.keyfact .roles{margin-top:16px;display:grid;gap:8px}
.keyfact .roles li{
  display:grid;grid-template-columns:158px minmax(0,1fr);gap:14px;align-items:baseline;
  font-size:14px;border-top:1px dotted var(--rule-strong);padding-top:8px;
}
@media (max-width:600px){.keyfact .roles li{grid-template-columns:1fr;gap:2px}}
.keyfact .roles .k{
  font-family:var(--font-mono);font-size:10px;font-weight:500;letter-spacing:.11em;
  text-transform:uppercase;color:var(--ochre);
}
.keyfact .roles .v{color:var(--ink-2);line-height:1.55}
.keyfact .roles .v .mono{font-size:13px;color:var(--ink)}

/* -------------------------------------------------------------------------
   11. Seat table / application note
   ---------------------------------------------------------------------- */
.tablewrap{overflow-x:auto}
.seat-table{width:100%;border-collapse:collapse;margin-top:4px;font-size:var(--fs-sm)}
.seat-table th,.seat-table td{text-align:left;padding:11px 14px 11px 0;border-bottom:1px solid var(--rule);vertical-align:top;line-height:1.5}
.seat-table th{
  font-family:var(--font-mono);font-size:10px;font-weight:500;letter-spacing:.12em;
  text-transform:uppercase;color:var(--ink-3);border-bottom:1px solid var(--rule-strong);
}
.seat-table td{color:var(--ink-2)}
.seat-table td.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--ink);white-space:nowrap}

.app-note{
  margin-top:22px;padding:18px 20px;
  background:var(--ochre-wash);border:1px solid var(--rule-strong);border-left:3px solid var(--ochre);
}
.app-note p{font-size:14px;color:var(--ink-2);line-height:1.62}
.app-note strong{color:var(--ink);font-weight:500}

/* -------------------------------------------------------------------------
   12. Contact + footer
   ---------------------------------------------------------------------- */
.contact{background:var(--hero-bg);color:var(--hero-ink);padding:68px 0 54px}
.contact h2{margin-top:10px;font-size:27px;font-weight:400;letter-spacing:-.018em;color:var(--hero-ink);line-height:1.25}
.contact .eyebrow{color:var(--hero-muted)}
.contact .addr{margin-top:14px;max-width:56ch;color:var(--hero-body);font-size:var(--fs-body);font-weight:300;line-height:1.7}
.contact-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:56px;margin-top:36px}
@media (max-width:860px){.contact-grid{grid-template-columns:1fr;gap:34px}}

.mails,.verify{border-top:1px solid var(--hero-rule);margin-top:12px}
.mails li{display:flex;justify-content:space-between;gap:18px;flex-wrap:wrap;padding:12px 0;border-bottom:1px solid var(--hero-rule)}
.mails .who{font-size:var(--fs-sm);color:var(--hero-ink);line-height:1.45}
.mails .who small{display:block;margin-top:3px;font-size:var(--fs-xs);color:var(--hero-muted)}
.mails a{
  font-family:var(--font-mono);font-size:12.5px;color:var(--hero-accent);
  border-bottom:1px solid rgba(95,168,232,.3);white-space:nowrap;
}
.mails a:hover,.verify a:hover{border-bottom-color:var(--hero-accent)}
.verify li{
  display:grid;grid-template-columns:130px minmax(0,1fr);gap:16px;
  padding:12px 0;border-bottom:1px solid var(--hero-rule);
  font-size:var(--fs-sm);color:var(--hero-body);line-height:1.55;
}
@media (max-width:560px){.verify li{grid-template-columns:1fr;gap:3px}}
.verify .k{
  font-family:var(--font-mono);font-size:10px;font-weight:500;letter-spacing:.11em;
  text-transform:uppercase;color:var(--hero-muted);padding-top:3px;
}
.verify a{color:var(--hero-accent);border-bottom:1px solid rgba(95,168,232,.3);word-break:break-word}

footer{background:var(--hero-bg);color:var(--hero-muted);padding:0 0 40px;font-size:var(--fs-xs)}
footer .fin{
  display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;
  border-top:1px solid var(--hero-rule);padding-top:20px;line-height:1.6;
}

/* -------------------------------------------------------------------------
   13. Motion
   ---------------------------------------------------------------------- */
@media (prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important;scroll-behavior:auto!important}
}
