/* ==================================================================

*   Ceevee Media Queries
*   url: styleshout.com
*   03-18-2014

/* ================================================================== */


/* screenwidth less than 1024px
--------------------------------------------------------------------- */
@media only screen and (max-width: 1024px) {

    /* header styles
   ------------------------------------------------------------------ */
   header .banner-text h1 {
      font: 80px/1.1em 'opensans-bold', sans-serif;
      letter-spacing: -1px;
      margin: 0 auto 12px auto;
   }

}

/* screenwidth less than 900px
--------------------------------------------------------------------- */
@media only screen and (max-width: 900px) {

    /* header styles
   ------------------------------------------------------------------ */
   header .banner { padding-bottom: 12px; }
   header .banner-text h1 {
      font: 78px/1.1em 'opensans-bold', sans-serif;
      letter-spacing: -1px;      
   }
   header .banner-text h3 {
      font: 17px/1.9em 'librebaskerville-regular', serif;
      width: 80%;
   }
   header .banner-text hr {
      width: 65%;
      margin: 12px auto;
   }
   /* nav-wrap */
   #nav-wrap {
      font: 11px 'opensans-bold', sans-serif;
      letter-spacing: 1.5px;
   }


   /* About Section
   ------------------------------------------------------------------- */
   #about .profile-pic {
      width: 114px;
      height: 114px;
      margin-left: 12px;
   }
   #about .contact-details { width: 50%; }
   #about .download { width: 50%; }

   /* Resume Section
   ------------------------------------------------------------------- */
   #resume h1 { font: 16px/24px 'opensans-bold', sans-serif; }
   #resume .main-col { padding-right: 5%; }   

   /* Testimonials Section
   ------------------------------------------------------------------- */
   #testimonials .header-col h1:before {
      font-size: 66px;
      line-height: 66px;
   }
   #testimonials blockquote p {
      font-size: 22px;
      line-height: 46px;      
   }

    /* Call to Action Section
   ------------------------------------------------------------------- */
   #call-to-action .header-col h1:before {
      font-size: 66px;
      line-height: 66px;
   }

   /* Contact Section
   ------------------------------------------------------------------- */
   #contact .section-head { margin-bottom: 30px; }
   #contact .header-col h1:before {
      font-size: 66px;
      line-height: 66px;
   }
   #contact .section-head p.lead { font: 17px/33px opensans-light, sans-serif; }


}

/* mobile wide/smaller tablets
---------------------------------------------------------------------- */

@media only screen and (max-width: 767px) {

   /* mobile navigation
   -------------------------------------------------------------------- */
   #nav-wrap {
      font: 12px 'opensans-bold', sans-serif;
      background: transparent !important;
      letter-spacing: 1.5px;  
      width: auto;
      position: fixed;
      top: 0;
      right: 0;
   }
   #nav-wrap > a {
	   width: 48px;
		height: 48px;
		text-align: left;
		background-color: #CC5200;
		position: relative;
      border: none;
      float: right;

      font: 0/0 a;
      text-shadow: none;
      color: transparent;

      position: relative;
      top: 0px;
      right: 10px;
   }

	#nav-wrap > a:before,
   #nav-wrap > a:after {
	   position: absolute;
		border: 2px solid #fff;
		top: 35%;
		left: 25%;
		right: 25%;
		content: '';
	}
   #nav-wrap > a:after { top: 60%; }

   /* toggle buttons */
	#nav-wrap:not( :target ) > a:first-of-type,
	#nav-wrap:target > a:last-of-type  {
	   display: block;
	}

   /* hide menu panel */
   #nav-wrap ul#nav {
      height: auto;
		display: none;
      clear: both;
      width: auto; 
      float: right;     

      position: relative;
      top: 12px;
      right: 0;
   }

   /* display menu panels */
	#nav-wrap:target > ul#nav	{
	   display: block;
      padding: 30px 20px 48px 20px;
      background: #1f2024;
      margin: 0 30px;
      clear: both;
   }

   ul#nav li {
      display: block;
      height: auto;      
      margin: 0 auto; 
      padding: 0 4%;           
      text-align: left;
      border-bottom: 1px solid #2D2E34;
      border-bottom-style: dotted; 
   }
  
   ul#nav li a {  
      display: block;    
      margin: 0;
      padding: 0;      
      margin: 12px 0; 
      line-height: 16px; /* reset line-height from 48px */
      border: none;
   }  


   /* Header Styles
   -------------------------------------------------------------------- */
   header .banner {
      padding-bottom: 12px;
      padding-top: 6px;
   }
   header .banner-text h1 { font: 68px/1.1em 'opensans-bold', sans-serif; }
   header .banner-text h3 {
      font: 16px/1.9em 'librebaskerville-regular', serif;
      width: 85%;
   }
   header .banner-text hr {
      width: 80%;
      margin: 18px auto;
   }

   /* header social links */
   header .social {
      margin: 18px 0 24px 0;
      font-size: 24px;
      line-height: 36px;      
   }
   header .social li { margin: 0 10px; }

    /* scrolldown link */
   header .scrolldown { display: none; }


   /* About Section
   -------------------------------------------------------------------- */
   #about .profile-pic {
      display: block;
      width: 90px;
      height: 90px;
      margin: 0 auto 20px auto;
   }
   #about .download .button {
      width: 100%;
      text-align: center;
      padding: 15px 20px;
   }
   #about .main-col { padding-right: 30px; }


   /* Resume Section
   --------------------------------------------------------------------- */
   #resume .header-col {
      padding-top: 0;
      margin-bottom: 48px;
      text-align: center;
   }
   #resume h1 { letter-spacing: 3px; }
   #resume .main-col { padding-right: 30px; }
   #resume h3, #resume .info { text-align: center; }
      
   .bars { width: 100%; }


   /* Call To Action Section
   /* ----------------------------------------------------------------- */
   #call-to-action { text-align: center; }
   #call-to-action h1 {
      font: 16px/24px 'opensans-bold', sans-serif;
      text-align: center;
      margin-bottom: 30px;
      text-shadow: 0px 1px 3px rgba(0, 0, 0, 1);
   }
   #call-to-action h1 span { display: block; }
   #call-to-action .header-col h1:before { content: none; }
   #call-to-action p { font-size: 15px; }


   /* Portfolio Section
   /* ----------------------------------------------------------------- */
   #portfolio-wrapper .columns { margin-bottom: 40px; }
   .popup-modal {	max-width: 85%; }


   /* Testimonials Section
   ----------------------------------------------------------------------- */
   #testimonials .text-container { text-align: center; }
   #testimonials h1 {
      font: 16px/24px 'opensans-bold', sans-serif;
      text-align: center;
      margin-bottom: 30px;
      text-shadow: 0px 1px 3px rgba(0, 0, 0, 1);
   }
   #testimonials h1 span { display: block; }
   #testimonials .header-col h1:before { content: none; }
   #testimonials blockquote { padding-bottom: 24px; }
   #testimonials blockquote p {
      font-size: 20px;
      line-height: 42px;      
   }

   /* Control Nav */
   .flex-control-nav {
      text-align: center;
      margin-left: -30px;
   }


   /* contact Section
   ----------------------------------------------------------------------- */
   #contact { padding-bottom: 66px; }
   #contact .section-head { margin-bottom: 12px; }
   #contact .section-head h1 {
      font: 16px/24px 'opensans-bold', sans-serif;            
      text-align: center;   
      margin-bottom: 30px;
      text-shadow: 0px 1px 3px rgba(0, 0, 0, 1);
   }  
   #contact h1 span { display: block; }
   #contact .header-col { padding-top: 0; }
   #contact .header-col h1:before { content: none;	}
   #contact .section-head p.lead { text-align: center;}

   /* form */
   #contact label {
      float: none;
      width: 100%;
   }
   #contact input,
   #contact textarea,
   #contact select {
     	margin-bottom: 6px;    	
      width: 100%;
   }
   #contact button.submit { margin: 30px 0 24px 0; }
   #message-warning, #message-success {
      width: 100%;
      margin-left: 0;
   }


   /* footer
   ------------------------------------------------------------------------ */
  
   /* copyright */
   footer .copyright li:before { content: none; }
   footer .copyright li { margin-right: 12px; }

   /* social links */
   footer .social-links { font-size: 22px; }
   footer .social-links li { margin-left: 18px; }

   /* Go To Top Button */
   #go-top { margin-left: -22px; }
   #go-top a {
   	width: 54px;
   	height: 54px;
      font-size: 18px;
      line-height: 54px;
   }


}

/* mobile narrow
  -------------------------------------------------------------------------- */

@media only screen and (max-width: 480px) {

   /* mobile navigation
   -------------------------------------------------------------------- */
   #nav-wrap ul#nav { width: auto; float: none; }

   /* header styles
   -------------------------------------------------------------------- */
   header .banner { padding-top: 24px; }
   header .banner-text h1 {
      font: 40px/1.1em 'opensans-bold', sans-serif;      
      margin: 0 auto 24px auto;
   }
   header .banner-text h3 {
      font: 14px/1.9em 'librebaskerville-regular', sans-serif;
      width: 90%;
   }
  
   /* header social links */
   header .social { font-size: 20px;}
   header .social li { margin: 0 6px; }

   /* footer
   ------------------------------------------------------------------------ */

   /* social links */
   footer .social-links { font-size: 20px; }
   footer .social-links li { margin-left: 14px; }   

}











/* =====================================================================
   2026 fixes — appended last so they win without !important.
   ===================================================================== */

/* Smooth anchor scrolling, previously done by jQuery in init.js. */
html {
   scroll-behavior: smooth;
}
@media (prefers-reduced-motion: reduce) {
   html {
      scroll-behavior: auto;
   }
}
#home,
#portfolio,
#resume,
#about,
#contact {
   scroll-margin-top: 60px;
}

/* The scroll cue was fixed to the viewport bottom, but the hero is only 78vh —
   so on any viewport taller than the hero it landed on top of the "Featured
   work" heading. Anchor it to the bottom of the hero instead. */
header .scrolldown {
   position: absolute;
   top: auto;
   bottom: 0;
   padding-bottom: 20px;
}

/* Grid cards stretched, but the card inside each link did not, so the second
   row came out ragged and the CTAs never lined up. */
.project-card-link {
   display: flex;
}
.project-card {
   display: flex;
   flex-direction: column;
   width: 100%;
}
.project-card-media {
   flex: 0 0 180px;
}
.project-card-body {
   display: flex;
   flex: 1 1 auto;
   flex-direction: column;
}
.project-card-cta {
   margin-top: auto;
   padding-top: 4px;
}

/* Overview and Context run the full twelve columns, which is ~135 characters
   per line on a wide desktop. Cap the measure. */
.summary-text {
   max-width: 72ch;
}

/* The hero link read as an unlabelled grey box next to the stat cards. */
.project-link {
   border: 1px solid rgba(255, 255, 255, 0.22);
}

/* Ceevee's stock hamburger is bright orange, which fights the navy palette. */
@media only screen and (max-width: 767px) {
   #nav-wrap > a {
      background-color: rgba(15, 23, 42, 0.92);
      border: 1px solid rgba(148, 163, 184, 0.35);
      border-radius: 10px;
      top: 12px;
      right: 16px;
   }
}

/* Ceevee's nav greys (#333 bar, #1f2024 mobile panel) and its purple current-link
   predate the navy/blue palette the rest of the site moved to. */
.opaque {
   background-color: rgba(15, 23, 42, 0.92);
   backdrop-filter: saturate(1.4) blur(8px);
   -webkit-backdrop-filter: saturate(1.4) blur(8px);
}
ul#nav li.current a {
   color: #60a5fa;
}
@media only screen and (max-width: 767px) {
   #nav-wrap:target > ul#nav {
      background: rgba(15, 23, 42, 0.97);
      border: 1px solid rgba(148, 163, 184, 0.22);
      border-radius: 14px;
      margin: 0 16px;
   }
   ul#nav li {
      border-bottom-color: rgba(148, 163, 184, 0.22);
   }

   /* The scrolled-bar blur has to go with the transparent background.
      `.opaque` is written for the desktop bar, which spans the viewport, so
      blurring its own backdrop is invisible. On mobile #nav-wrap is an
      auto-sized box in the top-right corner, and opening the menu grows it to
      cover a third of the screen — so the blur painted as a hard-edged
      rectangle over the page behind. Mobile already forces the background
      transparent; the filter belongs with it. */
   .opaque {
      backdrop-filter: none;
      -webkit-backdrop-filter: none;
   }

   /* Dim the page behind the open menu, so it reads as a menu rather than a
      card floating over live content. pointer-events stay off: the scrim is a
      pseudo-element with no dismiss handler of its own, and swallowing taps
      with nothing to close it would trap the reader. The X button closes. */
   #nav-wrap:target:before {
      content: '';
      position: fixed;
      inset: 0;
      z-index: -1;
      pointer-events: none;
      background: rgba(2, 6, 23, 0.72);
   }
}

/* Contact — replaced the mailto form, whose only action was window.open(). */
.contact-panel {
   display: grid;
   grid-template-columns: 1fr;
   gap: 28px;
   padding: 28px;
   border-radius: 16px;
   background: rgba(30, 41, 59, 0.55);
   border: 1px solid rgba(148, 163, 184, 0.18);
}
@media only screen and (min-width: 900px) {
   .contact-panel {
      grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr);
      gap: 48px;
      padding: 36px 40px;
      align-items: start;
   }
   /* A hairline keeps the two halves reading as one card instead of two
      unrelated blocks floating in a wide box. */
   .contact-panel .contact-facts {
      padding-left: 24px;
      margin-left: -24px;
      border-left: 1px solid rgba(148, 163, 184, 0.18);
   }
}
.contact-label {
   display: block;
   font: 12px/16px 'opensans-semibold', sans-serif;
   letter-spacing: 0.16em;
   text-transform: uppercase;
   color: #6e7881;
   margin-bottom: 10px;
}
a.contact-email {
   display: inline-block;
   font: 22px/30px 'opensans-bold', sans-serif;
   color: #eaf6ff;
   word-break: break-word;
   text-decoration: none;
   border-bottom: 1px solid rgba(96, 165, 250, 0.5);
}
a.contact-email:hover {
   color: #60a5fa;
}
.contact-actions {
   display: flex;
   flex-wrap: wrap;
   gap: 12px;
   margin-top: 20px;
}
.contact-panel .button {
   margin: 0;
   display: inline-flex;
   align-items: center;
   gap: 8px;
}
.contact-panel .contact-copy {
   cursor: pointer;
}
.contact-copy-status {
   display: block;
   margin-top: 10px;
   min-height: 18px;
   font: 13px/18px 'opensans-regular', sans-serif;
   color: #6ee7b7;
}
.contact-facts {
   margin: 0;
   display: flex;
   flex-direction: column;
   gap: 18px;
}
.contact-fact dt {
   font: 12px/16px 'opensans-semibold', sans-serif;
   letter-spacing: 0.16em;
   text-transform: uppercase;
   color: #6e7881;
   margin-bottom: 4px;
}
.contact-fact dd {
   margin: 0;
   font: 15px/24px 'opensans-regular', sans-serif;
   color: #cbd5e1;
}
.contact-fact dd a {
   color: #cbd5e1;
}
.contact-fact dd a:hover {
   color: #60a5fa;
}
.contact-elsewhere {
   display: flex;
   flex-wrap: wrap;
   gap: 16px;
}

/* #contact a set the link colour, so the primary button rendered blue on blue. */
#contact .contact-cta,
#contact .contact-cta:hover,
#contact .contact-cta:focus {
   color: #fff;
}
#contact .contact-cta i {
   color: inherit;
}

/* Ceevee hid the "Get In Touch." heading (h1 span { display: none }) and replaced
   it with a 72px envelope glyph, which left the section with no visible — or
   accessible — heading. Restore the words in the same treatment #resume uses,
   which is sized for a two-column header, and drop the redundant glyph. */
#contact h1 {
   font: 18px/24px 'opensans-bold', sans-serif;
   text-transform: uppercase;
   letter-spacing: 1px;
}
#contact h1 span {
   display: inline;
}
#contact h1:before {
   content: none;
}

/* The heading used to sit in a 2-column gutter, so "Get In Touch." wrapped and
   the underline (a border on the span) only ran under the second line. It is a
   full-width stacked head now, with the rule drawn under the whole heading. */
#contact .contact-head {
   max-width: 760px;
}
#contact .contact-head h1 {
   display: block;
   margin: 0 0 18px 0;
   padding-bottom: 12px;
   position: relative;
}
#contact .contact-head h1:after {
   content: "";
   position: absolute;
   left: 0;
   bottom: 0;
   width: 56px;
   height: 3px;
   background: #3b82f6;
   border-radius: 2px;
}
#contact .contact-head p.lead {
   margin: 0;
   font: 17px/30px 'opensans-light', sans-serif;
   color: #cbd5e1;
}

@media only screen and (max-width: 767px) {
   /* The address wrapped mid-domain at 22px in a 302px panel. */
   a.contact-email {
      font-size: 17px;
      line-height: 26px;
   }
   .contact-actions .button {
      flex: 1 1 auto;
      justify-content: center;
   }
   /* The mobile rules centre the head, so centre its rule with it. */
   #contact .contact-head h1 {
      text-align: center;
      margin-bottom: 16px;
   }
   #contact .contact-head h1 span { display: inline; }
   #contact .contact-head h1:after {
      left: 50%;
      transform: translateX(-50%);
   }
   #contact .contact-head p.lead {
      text-align: center;
      font-size: 16px;
      line-height: 28px;
   }
}
