
@import url('https://fonts.googleapis.com/css2?family=Red+Hat+Display:ital,wght@0,300..900;1,300..900&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@100..900&family=Red+Hat+Display:ital,wght@0,300..900;1,300..900&display=swap');

:root {
    --charcoal: #212121;
    --light: #f5f2f2;

    --bone: #ebe8e0;
    --bone-light: #e3e3d4;
    --bone-dark: #bdbfab;
    --bone-darker: #4f5c54;

    --red: #ed693b;
    --lightred: #f4e1d4; 

    --blue: #99d9d9;
    --lightblue: #e8efef; 

    --green: #00a64f;
    --lightgreen: #f5f9ed; 

    --gold: #dbbf4a;
    --lightgold: #ffeb9e; 
    --lightergold: #fffef2; 

    --lightest: #fafafa; 

    --standardwidth: 800px; 
    --border-radius: 0; 
    
    font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
} 


/* pgae colours */
.home, 
.admin{
    --pageaccent: var(--bone);
}
.about{
    --pageaccent: var(--gold);
    --pagecolour: var(--lightergold); 
    --cards: var(--lightgold); 
}
.network{
    --pageaccent: var(--green);
    --pagecolour: var(--lightgreen); 
}
.impact{
    --pageaccent: var(--blue);
    --pagecolour: var(--lightblue); 
}
.contact{
    --pageaccent: var(--red);
    --pagecolour: var(--lightred); 
}


body{
    margin: 0; 
    max-width: 1920px;
    background-color: #fff;
    color: #000; 
    font-family: 'inter', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
}
table{
    width: 100%; 
    border-collapse: collapse;
}
td, th{
    padding: 0.5rem;
    vertical-align: top;
}
form input, textarea, select {
    font-family: system-ui;
	font-size: 1rem;
	padding: 7px;
	background-color: #fff;
	border: 2px solid var(--green);
	max-width: 100%;
    color: var(--charcoal); 

}
img {
	max-width: 100%;
}
h1, .logo{
    font-family: 'Red Hat Display';
    font-weight: 600;
}
h2, h3, h4{
    font-weight: 600;
}
header{
    border-bottom: 1px solid var(--bone);
    display: grid;
    grid-template-columns: auto auto;
}
header img{
    display: block; 
}
nav{
    margin: auto;
    width: -moz-available; 
    width: -webkit-fill-available;
    max-width: var(--standardwidth); 
}
nav ul{
    list-style: none;
    display: flex;
    margin: auto;
    padding-inline-start: 0;
}
nav ul li{
    display: grid;
    flex: 1 1 auto; 
    margin: 0;
}
nav ul li a{
    display: grid;
    justify-content: center ;
    align-items: center;
    text-decoration: none;
    color: #000; 
    line-height: 86px; /* #MagicNumbers */
    transition: background-color 0.4s;
    padding: 0 2rem;
}
nav ul li a:hover{
    background-color: var(--bone);
}
.logo a{
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 1rem; 
    font-size: 1.3rem;
    letter-spacing: 0.05rem;
    text-decoration: none;
    color: #000;
}
footer{
    background-color: #fff;
    border-top: 1px solid var(--bone);
}
footer > div{
    margin: auto;
    max-width: var(--standardwidth);
    padding: 0 2rem;
    display: flex;
    flex-wrap: wrap;
}
footer a{
    text-decoration: none;
    color: #000; 
    line-height: 60px;
    padding: 0 1rem;
    transition: background-color 0.4s;
    min-width: max-content;
}
footer a:hover{
    background-color: var(--bone);
}
footer a:first-of-type{
    margin-right: auto;
}
.logo {
    display: flex;
    align-content: center;
}
.logo img{
    width: 50px;
}
.search{
    display: grid;
    justify-content: right;
    align-items: center;
    padding: 0 1rem; 
}
.search img{
    width: 30px;
    display: none;
}



section h1{
    font-size: 3rem; 
    text-wrap: pretty;
}
section > div{
    margin: auto;
    max-width: var(--standardwidth); 
    text-align: center;
}
section:first-of-type{
    padding: 1rem 1rem 0 1rem;
    background-color: #fff;
}
section:first-of-type div{
    max-width: 700px;
}
section:first-of-type > div img{
    margin: auto; 
    display: block;
}
section:first-of-type > div h1{
    text-align: center;
}
section.bone{
    background-color: var(--light);
}
section.bone > div.maintext{
    background-color: var(--bone);
    /* border-radius: 0 0 var(--border-radius) var(--border-radius); */
}
section .maintext{
    padding: 2rem; 
    line-height: 1.6;
}
section .maintext p, 
section .maintext h3{
    max-width: 450px;
    margin: 1.5rem auto;
}
.button{
    margin: 2rem auto;
    border: 0; 
    font-family: inherit;
    text-transform: uppercase;
    display: block;
    width: fit-content;
    text-align: center;
}
.button a, 
.main .button a{
    padding: 1rem;
    color: #fff; 
    text-decoration: none;
    display: block;
    background-color: #000;
    transition: background-color 0.4s;
}
.button a:hover{
    background-color: var(--bone-darker);
}
.buttoncontainer.alignleft .button{
    margin: 2rem 0; 
}
.cards{
    display: grid;
    gap: 2rem;
    padding: 2rem 0; 
    max-width: var(--standardwidth); 
    margin: auto;
}
.cards > .card{
    background-color: #fff;
    display: grid;
    border-radius: var(--border-radius);
    padding: 0.5rem; 
    text-align: center;
    gap: 0.05rem;
}
.card h4, 
.talk h4{
    font-size: 1rem;
    margin-block: 1rem;
}
.cards img{
    width: 80px; 
}
.team .cards > .card{
    text-align: unset;
}
.team .cards img{
    width: unset; 
    display: block;
    margin: auto; 
}
.talk{
    max-width: 300px;
    text-align: center;
    padding: 2rem; 
}
#nav > a{
    display: none;
}
.pagegrid{
    display: grid;
}
.pagegrid .blob{
    min-height: 250px; 
    background-size: cover;
    background-position: center center;
}
.heading, 
.quote, 
.main, 
.span2, 
.faqs, 
.articles .articletitle, 
.articles .article{
    padding: 1rem;

}
.heading{
    background-color: var(--pagecolour);    
}
.heading h4{
    text-transform: uppercase;
    max-width: 600px;
}
.heading h1{
    max-width: 600px;
    text-wrap: pretty;
}
.main p, 
.span2 p
.articles p,
.main h3{
    line-height: 1.7;
    max-width: 600px;
    text-wrap: pretty;
}
.team p{
    line-height: 1.7;
}
.main a{
    color: var(--charcoal); 
}
.span2 .card{
    background-color: var(--cards);
}
details{
    max-width: 800px;
    /* margin: auto;  */
  }
  
summary {
    padding: .5rem 1.3rem .5rem 0;
    list-style: none;
    display: flex;
    justify-content: space-between;  
    transition: height 1s ease;
}
summary, 
details{
    margin-block-end: 1rem;
}
summary::-webkit-details-marker {
display: none;
}

summary:after{
content: "\002B";
}

details[open] summary {
    border-bottom: 1px solid var(--bone);
    margin-bottom: .5rem;
}

details[open] summary:after{
content: "\00D7";
}
  
  details[open] div{
    padding: .5rem 1rem .5rem 0;
  }
.boxes{
    display: grid;
    gap: 1rem;
}
.boxes > div{
    padding: 1rem; 
    text-align: center;
    background-color: var(--pagecolour);
}
.readmore, 
.readless{
    display: none;
}
.article:nth-of-type(2n+1){
    background-color: var(--light);
}
.quotemark{
    color: var(--pageaccent);
    font-size: 3rem; 
    font-family: Georgia, 'Times New Roman', Times, serif;
}
.closequote{
    color: var(--pageaccent);
    font-family: Georgia, 'Times New Roman', Times, serif;
}
.span2.centred > p{
    max-width: 600px;
    margin:auto;
    line-height: 1.7;
}
.span2.centred h4{
    max-width: 800px;
    margin: 2rem  auto;
    font-size: 1.5rem;
    font-weight: 400;
    line-height: 1.7;
    text-wrap: pretty;
}
.quote.readmorenews{
    text-align: center;
}
.grecaptcha-badge{
    z-index: 20;
}
.oops {
	font-size: 250px;
	float: right;
	line-height: 250px;
	color:#000;
}
.contactform{
	transition: 0.5s;
}
.contactform div{
    padding: 0.5rem;
}
.contactform input[type=submit],
.contactform input[type=button],
.contactform input[type=text],
.contactform input[type=email],
.contactform input[type=date],
.contactform input[type=tel],
.contactform textarea,
.contactform label
{
    font-size: 16px;
	border: 2px solid var(--green); 

}
.contactform * + p{
    margin-top: 0; 
}
.contactform label {
    display:block;
    margin-bottom: 10px;
}
.contactform label > span{
    display: inline-block;
}
.contactform input[type=text],
.contactform input[type=email],
.contactform input[type=tel],
.contactform input[type=password],
.contactform input[type=date],
.contactform input[type=number]
{
    background: transparent;
    outline: none;
    padding: 10px;
}
.contactform textarea{
    padding: 10px;
    background: transparent;
    outline: none;
    overflow: hidden;
    resize:none;
    min-height:100px;
}

.contactform textarea:focus,
.contactform input[type=text]:focus,
.contactform input[type=email]:focus,
.contactform input[type=email] :focus
{
    border: 2px solid var(--green);
}

.contactform input[type=submit],
.contactform input[type=button]{
    background: #000;
    border: none;
    padding: 8px 10px 8px 10px;
    color: #fff;
}
.contactform input[type=submit]:hover,
.contactform input[type=button]:hover{
background: var(--pageaccent);
}
.contactform input:not([type="submit"]),
.contactform textarea {
    border: 2px solid var(--bone);

}
.contactform:focus-within input:not([type="submit"]):invalid,
.contactform:focus-within textarea:invalid {
	border: 2px solid red !important;

}
.contactform:focus-within input:not([type="submit"]):valid,
.contactform:focus-within textarea:valid {
	border: 2px solid green !important;

}
.contactform:focus-within input[type="radio"]:invalid{
	outline: 2px solid red;
    outline-offset: 2px;
}
.contactform div:nth-of-type(4n+3), 
.contactform div:nth-of-type(4n+4){
    background-color: var(--evenlighter);
}
.contactform > div{
    position: relative;
}
.contactform > div:has(textarea:required)::after, 
.contactform > div:has(input:required)::after, 
.contactform > div:has(select:required)::after{
    content: "\002A";
    color: #800; 
    font-size: 2rem;
    inset: 0 1rem auto auto; 
    position: absolute;
}
/* .contactform > div:has(textarea:required)::after{
    inset: 0 -1rem auto auto; 
} */
#loginbox {
	padding: 3rem 1rem;
    display: grid;
    justify-content: center;
}
.admin tr:nth-of-type(2n) td {
	background-color: var(--lightest);
}
.admin{
    padding: 2rem; 
    display: grid;
    justify-content: center;
    line-height: 1.7;
}
.admin > div{
    max-width: 1200px;
    margin: auto; 
}
.admin a{
    color: var(--blue); 
}
.admin td, 
.admin td *
{
overflow-wrap: break-word;
word-wrap: break-word;
-ms-word-break: break-all;
word-break: break-all;
word-break: break-word;
/* -ms-hyphens: auto;
-moz-hyphens: auto;
-webkit-hyphens: auto;
hyphens: auto; */
}







/* desktop only */

@media only screen and ( min-width: 901px ) {
    .cards{
        grid-template-columns: 1fr 1fr 1fr;
        grid-auto-rows: auto auto auto;
    }
    .card{
        display: grid;
        position: relative;
        grid-row: span 3;
        grid-template-rows: subgrid;
    }
    .team .cards{
        grid-template-columns: 1fr 1fr;
        grid-auto-rows: auto auto auto auto;
        gap: 3rem;
    }
    .team .card{
        display: grid;
        grid-row: span 4;
        grid-template-rows: subgrid;
        gap: 1rem; 
    }
    .team .cards img{
        border-radius: var(--border-radius);
        width: unset;
    }
    .articles img{
        border-radius: var(--border-radius);
        width: 800px;
    }
    .main img{
        display: block;
        border-radius: var(--border-radius);
    }
    @supports selector(:has(*)) {
    .team .card .extrabit{
        display: none;
    }  
    .readless  {
        color: #000; 
        display: none;
        text-transform: uppercase;
        text-decoration: none;
    }
    .readmore{
        display: block;
        color: #000; 
        text-transform: uppercase;
        text-decoration: none;
    }
    .readmore::before{
        content: ' ';
        display: inline-block;
        border-bottom: 1px solid #000;
        border-right: 1px solid #000;
        height: 10px;
        width: 10px;
        transform: rotate(45deg);
        margin-inline-end: 1rem;
    }  
    .readless::before{
        content: ' ';
        display: inline-block;
        border-bottom: 1px solid #000;
        border-right: 1px solid #000;
        height: 10px;
        width: 10px;
        transform: rotate(225deg);
        margin-inline-end: 1rem;
    }  
    .card div:target + div > .extrabit{
        display: block;
        opacity: 0;
        animation: fadein 1s forwards;
    } 
    .contactform {
        display: grid;
        grid-template-columns: 1fr 1fr;
        max-width: 835px;
    }
    .contactform label > span{
        width: 250px;
    }
    .contactform input[type=text],
    .contactform input[type=email],
    .contactform input[type=tel],
    .contactform input[type=password],
    .contactform input[type=date],
    .contactform input[type=number]
    {
        width: 275px;
    }
    .contactform textarea{
        width: 275px;
    }
    .contactform input[type=submit],
    .contactform input[type=button]{
	width: 300px;
}
    

@keyframes fadein {
    from {
        opacity: 0;
      }
    
      to {
        opacity: 1;
      }

  }
    .card div:target + div + div .readmore{
            display: none;

    }
    .card div:target + div + div {
        .readless{
            display: block;
        }
        .readless::before{
            content: ' ';
            display: inline-block;
            border-bottom: 1px solid #000;
            border-right: 1px solid #000;
            height: 10px;
            width: 10px;
            transform: rotate(225deg);
            margin-inline-end: 1rem;
        } 
    }
    }

    .pagegrid{
        grid-template-columns: 390px auto; 
        gap: 1px;
        background-color: var(--bone);
    }
    .heading,
    .quote, 
    .main, 
    .span2, 
    .faqs, 
    .team, 
    .articles .articletitle,
    .articles .article{
        padding: 2rem; 
    }
    .quote blockquote{
        margin: 0 1rem 1rem 1rem;
        font-size: 1.5rem;
    }
    .quote .quotemark{
        font-size: 6rem;
        line-height: 4rem;
        margin: 0 1rem; 
    }
    .quote blockquote + p {
        text-align: left; 
        font-weight: 800;
        text-transform: uppercase;
        margin: 2rem 1rem; 
    }
    .quote img{
        width: 60px;
        margin-inline-start: 2rem;
    }
    .quote, 
    .main,
    .span2,  
    .faqs, 
    .team, 
    .articles{
        background-color: #fff;
    }
    .span2{
        grid-column: span 2;
    }
    .centred{
        text-align: center;
    }
    .centred > p{
        margin: auto; 
    }
    .faqs{
        grid-column: 2 / 3;
    }
    .boxes{
        grid-template-columns: 1fr 1fr 1fr;
    }
    .boxes > div{
        border-radius: var(--border-radius) ;
        padding: 2rem;
        display: grid;
        justify-content: center;
        align-items: center;
    }
    .alt, 
    p:has(cite){
        max-width: 800px;
        text-align: right;
        font-style: italic;
        font-size: 0.8em;
    }
} 



@media only screen and ( min-width: 1200px ) {
    :root{
        --standardwidth: 1024px; 
        --border-radius: 0.5rem;
    }
    header{
        grid-template-columns: 390px auto;
    }
    .logo{
        border-right: 1px solid var(--bone); 
    }
    nav{
        margin-inline: unset; 
        padding: 0 calc(10vw - 3rem);
        max-width: calc(800px + 5rem);
    }
    nav ul li a{
        border-right: 1px solid var(--bone); 
        position: relative;
    }
    nav ul li:first-child a{
        border-left: 1px solid var(--bone); 
    }
    nav ul li.active a::after{
        content: '';
        position: absolute;
        z-index: 1;
        inset: auto 0 0 0 ;
        background-color: var(--pageaccent);
        height: 1rem; 
        transition: background-color 0.4s;
    }
    nav ul li.active a:hover::after{
        background-color: #000;
    }
    .heading h4, 
    .heading h1,
    .main p, 
    .articles .articletitle h4, 
    .articles .article p, 
    .articles .article h2, 
    .buttoncontainer, 
    .main h3, 
    .team h4,
    .team p, 
    .boxes,
    .team .cards {
        max-width: 800px;
    }
    .team .cards{
        margin: unset;        
    }
    .heading, 
    .main, 
    .faqs, 
    .team{
        padding: 2rem 10vw;
    }
    .articles .articletitle, 
    .articles .article{
        padding: 1rem 10vw;
    }
    html, body {
        margin: 0;
        height: 100%;
    }
    body {
        display: grid;
        grid-template-columns: 1fr;
        grid-template-areas: "main" "footer";
        grid-template-rows: 1fr 61px;
    }
    main {
        grid-area: main;
    }
    footer {
        grid-area: footer;
    }
    .quote.coloured{
        background-color: var(--pagecolour);
    }
    .span2.centred .cards{
        gap: 3rem; 
    }
    .span2.centred .cards .card{
        padding: 1rem 2rem;
        line-height: 1.7;
    }

}

@media only screen and ( min-width: 1400px ) {

    .team .cards{
        gap: 3rem; 
    }
}





/* mobile  */

@media only screen and ( max-width: 900px ) {
header{
    grid-template-columns: auto 100px;
}
header .search{
    display: none;
}
#nav ul{
    display: none;
}
#nav:not( :target ) > a:first-of-type,
#nav:target > a:last-of-type
{
display: block;
}
#nav:target > a:last-of-type{
    background-image: url('images/close.svg');
    background-size: 60%;
}
#nav > a {
    width: 50px;
    height: 50px;
    text-align: center;
    text-indent: -9999px;
    margin: auto 1rem auto auto;
    background-image: url('images/lines.svg');
    background-repeat: no-repeat;
    background-size: 100%;
    background-position: center;
    position: relative;
    flex: 0 0 auto;

}
header:has(#nav:target) {
    grid-template-columns: 1fr;
    justify-content: center;
}
header:has(#nav:target) .logo{
    display: none;
}
header:has(#nav:target) nav > a{
    margin: auto; 
}
#nav:target > ul
    {
        display: block;
    grid-row: span 2;
    }
    #nav > ul a{
        background-color: var(--bone);
        line-height: 50px;
        border-bottom: 1px solid var(--bone-light);
    }
    #nav > ul a:hover{
        background-color: var(--bone-darker);
        color: var(--light); 
    }
    a[href^="mailto:"],
    h1,
    h2
{
  overflow-wrap: break-word;
  word-wrap: break-word;
  -ms-word-break: break-all;
  word-break: break-all;
  word-break: break-word;
  -ms-hyphens: auto;
  -moz-hyphens: auto;
  -webkit-hyphens: auto;
  hyphens: auto;
}
.pagegrid .blob{
    min-height: 300px;
}
.team > h4,
.team > p {
    padding: 0 0.5rem; 
}
section h1, 
.heading h1{
    font-size: 2.5rem;
}
.quote blockquote{
    margin: 0; 
}
} 



@media only screen and ( max-width: 350px ) {
    .logo a, 
    header, 
    #nav > a{
        flex-wrap: wrap;
        justify-content: center;
        text-align: center;
        margin: auto;
    }
    header{
        display: flex;
        position: relative;
    }
    header .search{
        display: none;
    }
    .logo{
        flex: 1 1 auto;
    }
    .logo a{
        padding: 1rem;
        width: -moz-available; 
        width: -webkit-fill-available;
    }
    section h1, 
    .heading h1{
        font-size: 2rem;
    }
}

@media only screen and ( min-width: 1200px ) {




/* scroll animations */

@media only screen and ( min-width: 1200px ) {
@supports(animation-timeline: view(y)) { 
    body{
        position: relative;
    }
    header{
        position: sticky; 
        top: 0; 
        z-index: 1;
        background-color: rgba(255,255,255,0.9);
        backdrop-filter: blur(4px);
    }

    nav ul li a{
        animation: lineheight linear both;
        animation-timeline: view(block);
        animation-range: 130vh 150vh;
    }
    .logo a{
        animation: size linear both;
        animation-timeline: view(block);
        animation-range: 130vh 150vh;
    }
    .logo a span,
    nav ul li.active a::after{
        animation: vizz linear both;
        animation-timeline: view(block);
        animation-range: 120vh 130vh;
    }
    .card {
        animation: fadepic linear both;
        animation-timeline: view(block);
        animation-range: cover 0% cover 30%;
    }

    @keyframes lineheight {
        from {
            line-height: 86px;
          }
        
          to {
            line-height: 30px;
          }
    
      }
      @keyframes size {
        from {
            transform: scale(1);
            padding: 1rem; 
          }
        
          to {
            transform: scale(0.5);
            padding: 0.1rem;
          }
    
      }
      @keyframes vizz {
        from {
            opacity: 1; 
          }
        
          to {
            opacity: 0;
          }
        
    
      }

      @keyframes fadepic {
        from {
            /* transform: scaleX(0); */
            opacity: 0; 
          }
        
          to {
            /* transform: scaleX(1); */
            opacity: 1;
          }
    
      }


}
}
}