:root {
  --nav-offset:    98px;
  --page-side-gap: 120px;
  --byu-blue:      #002e5d;
  --nav-text:      #002e5d;
  --border:        #d4dee2;
  --tabshade:      #f3f5f7;
  --titlinespacer: #0047ba;
  --parentlink:    #C1CAD7;
  --surface:       #ffffff;
  --page:          #ffffff;
  --link:          #295ca3;
  --red:           #c32222;
  --org:           #ad6200;
  --grn:           #066f29;
  --blu:           #3373cc;
  --pnk:           #be00cc;
  --com:           #446b7e;
  --blk:           #000000;
  --wht:           #ffffff;
}

red { color: var(--red); }        /* wrap text in <red>...</red> to color it red */
org { color: var(--org); }
grn { color: var(--grn); }
blu { color: var(--blu); }
pnk { color: var(--pnk); }
com { color: var(--com); }

/****************** Syntax highlighting (github-specific chroma keys)*/ 
/* Generated using: hugo gen chromastyles --style=github then edited */

.chroma { background-color:#f3f5f7;-webkit-text-size-adjust:none; }    /* PreWrapper */               
.chroma .err { color:#f6f8fa;background-color:#82071e }                /* Error */                    
.chroma .lnlinks { outline:none;text-decoration:none;color:inherit }   /* LineLink */                 
.chroma .lntd { vertical-align:top;padding:0;margin:0;border:0; }      /* LineTableTD */              
.chroma .lntable { border-spacing:0;padding:0;margin:0;border:0; }     /* LineTable */                
.chroma .hl { background-color:#dedede }                               /* LineHighlight */            
.chroma .lnt { white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f }       /* LineNumbersTable */         
.chroma .ln { white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f }        /* LineNumbers */              
.chroma .line { display:flex; }    /* Line */                     
.chroma .k   { color: var(--red); }     /* Keyword */                  
.chroma .kc  { color: var(--red); }     /* KeywordConstant */          
.chroma .kd  { color: var(--red); }     /* KeywordDeclaration */       
.chroma .kn  { color: var(--red); }     /* KeywordNamespace */         
.chroma .kp  { color: var(--red); }     /* KeywordPseudo */            
.chroma .kr  { color: var(--red); }     /* KeywordReserved */          
.chroma .kt  { color: var(--red); }     /* KeywordType */              
.chroma .na  { color: var(--blk); }     /* NameAttribute */            
.chroma .nc  { color: var(--blk); }     /* NameClass */                
.chroma .no  { color: var(--blu); }     /* NameConstant */             
.chroma .nd  { color: var(--blu); }     /* NameDecorator */            
.chroma .ni  { color: var(--pnk); }     /* NameEntity */               
.chroma .nl  { color: var(--red); font-weight:bold }      /* NameLabel */                
.chroma .nn  { color: var(--blk); }     /* NameNamespace */            
.chroma .nx  { color: var(--blk); }     /* NameOther */                
.chroma .nt  { color: var(--blk); }     /* NameTag */                  
.chroma .nb  { color: var(--pnk); }     /* NameBuiltin */              
.chroma .bp  { color: var(--com); }     /* NameBuiltinPseudo */        
.chroma .nv  { color: var(--org); }     /* NameVariable */             
.chroma .vc  { color: var(--org); }     /* NameVariableClass */        
.chroma .vg  { color: var(--org); }     /* NameVariableGlobal */       
.chroma .vi  { color: var(--org); }     /* NameVariableInstance */     
.chroma .vm  { color: var(--org); }     /* NameVariableMagic */        
.chroma .nf  { color: var(--pnk); }     /* NameFunction */             
.chroma .fm  { color: var(--pnk); }     /* NameFunctionMagic */        
.chroma .s   { color: var(--blu); }     /* LiteralString */            
.chroma .sa  { color: var(--blu); }     /* LiteralStringAffix */       
.chroma .sb  { color: var(--blu); }     /* LiteralStringBacktick */    
.chroma .sc  { color: var(--blu); }     /* LiteralStringChar */        
.chroma .dl  { color: var(--blu); }     /* LiteralStringDelimiter */   
.chroma .sd  { color: var(--blu); }     /* LiteralStringDoc */         
.chroma .s2  { color: var(--blu); }     /* LiteralStringDouble */      
.chroma .se  { color: var(--blu); }     /* LiteralStringEscape */      
.chroma .sh  { color: var(--blu); }     /* LiteralStringHeredoc */     
.chroma .si  { color: var(--blu); }     /* LiteralStringInterpol */    
.chroma .sx  { color: var(--blu); }     /* LiteralStringOther */       
.chroma .sr  { color: var(--blu); }     /* LiteralStringRegex */       
.chroma .s1  { color: var(--blu); }     /* LiteralStringSingle */      
.chroma .ss  { color: var(--blu); }     /* LiteralStringSymbol */      
.chroma .m   { color: var(--blu); }     /* LiteralNumber */            
.chroma .mb  { color: var(--blu); }     /* LiteralNumberBin */         
.chroma .mf  { color: var(--blu); }     /* LiteralNumberFloat */       
.chroma .mh  { color: var(--blu); }     /* LiteralNumberHex */         
.chroma .mi  { color: var(--blu); }     /* LiteralNumberInteger */     
.chroma .il  { color: var(--blu); }     /* LiteralNumberIntegerLong */ 
.chroma .mo  { color: var(--blu); }     /* LiteralNumberOct */         
.chroma .o   { color: var(--blu); }     /* Operator */                 
.chroma .ow  { color: var(--blu); }     /* OperatorWord */             
.chroma .p   { color: var(--red); }     /* Punctuation */              
.chroma .c   { color: var(--com); font-style:italic; }     /* Comment */                  
.chroma .ch  { color: var(--com); font-style:italic; }     /* CommentHashbang */          
.chroma .cm  { color: var(--com); font-style:italic; }     /* CommentMultiline */         
.chroma .c1  { color: var(--com); font-style:italic; }     /* CommentSingle */            
.chroma .cs  { color: var(--com); font-style:italic; }     /* CommentSpecial */           
.chroma .cp  { color: var(--com); font-style:italic; }     /* CommentPreproc */           
.chroma .cpf { color: var(--com); font-style:italic; }     /* CommentPreprocFile */       
.chroma .ge  { color: var(--red); }     /* GenericEmph */              
.chroma .go  { color: var(--blk); }     /* GenericOutput */            
.chroma .w   { color: var(--wht); }     /* TextWhitespace */           
.chroma .gd  { color: var(--red);background-color:#ffebe9 }   /* GenericDeleted */           
.chroma .gi  { color: var(--grn);background-color:#dafbe1 }   /* GenericInserted */          
.chroma .gl  { text-decoration:underline }                /* GenericUnderline */         

/*******************/ 

* {
  box-sizing: border-box;
}

html,
body {
  margin: 0;
  min-height: 100%;
  background: var(--page);
  color: var(--nav-text);
  font-family: "IBM Plex Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
}

a {
  color: var(--link);
  text-decoration: none;
}

li {
    margin-bottom: 0.3rem;
}
li:last-child {
    margin-bottom: 0;
}


table {
  border-collapse: collapse;
}

th,
td {
  padding: 0.5rem 0.75rem;
  border: 1px solid var(--border);
}

tbody tr:nth-child(even) {
  background-color: var(--tabshade);
}

.container {
  width: min(1120px, calc(100% - 32px));
  margin: 0 auto;
}

.top-bar {
  background: var(--byu-blue);
  color: var(--page);
}

.top-bar-inner {
  min-height: 88px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 14px 0;
}

.brand-group {
  display: flex;
  align-items: center;
  gap: 18px;
}

.brand-mark {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
}

.brand-mark img {
  display: block;
  width: auto;
  height: 20px;
}

.site-titles {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding-left: 18px;
  position: relative;
}

.site-titles::before {
  content: "";
  position: absolute;
  left: 0;
  top: 50%;
  width: 1px;
  height: 64px;
  background: var(--titlinespacer);
  transform: translateY(-50%);
}

.parent-link {
  font-size: 0.95rem;
  letter-spacing: 0.08em;
  color: var(--parentlink);
}

.parent-link-short {
  display: none;
}

.site-title {
  font-size: 1.55rem;
  line-height: 1.2;
  color: var(--page);
}

.site-title-short {
  display: none;
}

.menu-toggle {
  display: none;
  width: 46px;
  height: 46px;
  border: 1px solid rgba(255, 255, 255, 0.28);
  border-radius: 4px;
  background: transparent;
  padding: 0;
  cursor: pointer;
}

.menu-toggle span {
  display: block;
  width: 20px;
  height: 2px;
  margin: 5px auto;
  background: var(--page);
  transition: transform 0.2s ease, opacity 0.2s ease;
}

.menu-toggle[aria-expanded="true"] span:nth-child(1) {
  transform: translateY(7px) rotate(45deg);
}

.menu-toggle[aria-expanded="true"] span:nth-child(2) {
  opacity: 0;
}

.menu-toggle[aria-expanded="true"] span:nth-child(3) {
  transform: translateY(-7px) rotate(-45deg);
}

.mobile-menu {
  display: none;
  background: var(--surface);
  border-top: 1px solid rgba(215, 221, 229, 0.9);
  box-shadow: 0 8px 24px rgba(15, 23, 42, 0.08);
}

.mobile-menu-inner {
  display: flex;
  flex-direction: column;
  padding: 10px 0 16px;
}

.mobile-menu-inner a {
  color: var(--byu-blue);
  padding: 12px 0;
  border-bottom: 1px solid var(--border);
}

.mobile-menu-inner a:last-child {
  border-bottom: 0;
}

.mobile-menu.is-open {
  display: block;
}

.main-nav {
  background: var(--surface);
  border-bottom: 1px solid var(--border);
  box-shadow: 0 1px 0 rgba(15, 23, 42, 0.03);
}

.nav-inner {
  min-height: 40px;
  display: flex;
  align-items: center;
  gap: 18px;
  overflow-x: auto;
  padding-left: var(--nav-offset);
}

.nav-inner a {
  position: relative;
  padding: 2px 0 2px;
  white-space: nowrap;
  font-size: 0.95rem;
  color: var(--byu-blue);
}

.nav-inner a::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -1px;
  height: 3px;
  background: transparent;
  transition: background-color 0.2s ease;
}

.nav-inner a:hover::after,
.nav-inner a:focus-visible::after {
  background: var(--byu-blue);
}

.blank-page {
  /*min-height: calc(100vh - 144px);*/
  min-height: calc(60vh - 144px);
  width: min(1120px, calc(100% - var(--page-side-gap)));
  margin: 0 auto;
  font-size: 0.95rem; /*16px;*/
  padding-top: 40px;
}

.research-list {
  display: grid;
  row-gap: 0;
}

.research-entry {
  padding-bottom: 16px;
  margin-bottom: 32px;
  border-bottom: 1px solid var(--border);
}

.research-entry:last-child {
  padding-bottom: 0;
  margin-bottom: 0;
  border-bottom: 0;
}

.research-entry img {
  display: block;
  width: 250px;
  max-width: 100%;
  height: auto;
  border-radius: 12px;
}

.header-image {
  width: min(1120px, calc(100% - var(--page-side-gap)));
  margin: 0 auto;
  padding: 40px 0 0px 0;
}

.header-image img {
  display: block;
  width: 100%;
  height: auto;
}

.site-footer {
  width: min(1120px, calc(100% - var(--page-side-gap)));
  margin: 0 auto;
  padding: 24px 0 40px;
  font-size: 0.95rem;
  color: var(--nav-text);
  /*border-top: 1px solid var(--byu-blue);*/
}

.site-footer-inner {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 24px;
}

.site-footer-icons {
  display: flex;
  align-items: center;
  gap: 16px;
}

.site-footer-icons a {
  color: var(--byu-blue);
  font-size: 1.2rem;
}

.site-footer-icons a:hover,
.site-footer-icons a:focus-visible {
  color: var(--titlinespacer);
}

.youtube {
    max-width:250px;
    width: 100%;
}

@media (max-width: 700px) {
  .top-bar-inner {
    min-height: auto;
    align-items: center;
  }

  .brand-group {
    min-width: 0;
  }

  .site-title {
    font-size: 1.15rem;
  }

  .parent-link-full {
    display: none;
  }

  .parent-link-short {
    display: inline;
  }

  .site-title-full {
    display: none;
  }

  .site-title-short {
    display: inline;
  }

  .main-nav {
    display: none;
  }

  .menu-toggle {
    display: block;
    flex: 0 0 auto;
  }

  .site-titles {
    min-width: 0;
  }

  .site-title,
  .parent-link {
    white-space: normal;
  }

  .site-footer-inner {
    grid-template-columns: 1fr;
    gap: 16px;
  }

  .site-footer-spacer {
    display: none;
  }

  .site-footer-icons {
    justify-content: center;
  }
}
