/* COLORS */
:root{
    --bright: #FAFAFA;
    --white: #F0F0F0;
    --grey: #E6E6E6;
    --black: #3E363F;
    --red: #842029;
    --pink: #f8d7da;

    --green-gradient: linear-gradient(210deg, #009900, #0d503c);
    --red-gradient: linear-gradient(210deg, var(--red), var(--black));
    --box-shadow: rgba(0, 0, 0, 0.05) 0px 6px 24px 0px, rgba(0, 0, 0, 0.08) 0px 0px 0px 1px;
}



/* TYPOGRAPHY */
@font-face {
    font-family: 'Overpass';
    src: url('/assets/fonts/Overpass-Variable.ttf') format('truetype-variations');
    font-weight: 100 900;
    font-style: normal;
}
@font-face {
    font-family: 'Overpass';
    src: url('/assets/fonts/Overpass-Italic-Variable.ttf') format('truetype-variations');
    font-weight: 100 900;
    font-style: italic;
}
@font-face {
    font-family: 'MsMadi';
    src: url('/assets/fonts/MsMadi-Regular.ttf') format('truetype-variations');
    font-weight: 400;
    font-style: normal;
}
html {font-size: 100%;}
body {
    font-family: 'Overpass', 'Helvetica', sans-serif;
    letter-spacing: -0.02rem;
    font-weight: 400;
    font-style: normal;
    color:var(--black);
}
h1, h2, h3 {
    margin: 1rem 0px 1rem 0px;
    font-weight: 700;
    line-height: 1.2;
    text-align: center;
    font-family: 'Overpass', 'Helvetica', sans-serif;
}
h1 {font-size: 3rem;}
h2 {font-size: 2.75rem;}
h3 {font-size: 1.8rem;}
a{
    color:var(--black);
    text-decoration-thickness: 1px;
    text-underline-offset: 2px;
}
a:hover {opacity: 0.8;}
p {
    font-size: 1.1rem;
    margin-top:0px;
    margin-bottom: 1rem;
}



/* BUTTONS */
button {
    font-size: 1rem;
    padding: 0.5rem 1rem 0.4rem 1rem;
    border: none;
    background-color: var(--bright);
    box-shadow: var(--box-shadow);
    color: var(--black);
    font-weight: 700;
    cursor: pointer;
    font-family: 'Overpass', 'Helvetica', sans-serif;
    letter-spacing: -0.02rem;
}
button:hover, button:focus {
    background: var(--green-gradient);
    color: var(--bright);
}
button span{
    margin-left: 0.5rem;
    vertical-align: middle;
    font-size: 120%;
}
button.red:hover, button.red:focus {
    background: var(--red-gradient);
}



/* LAYOUT */
body{
    background-color: var(--grey);
    color: var(--black);
    margin: 0px;
}
main{
    width:100%;
}
#banner{
    text-align: center;
    height: auto;
    color: var(--white);
    background: var(--green-gradient);
    padding: 15vh 1rem 25vh 1rem;
}
#banner img{
    max-width: 70%;
}
#banner h1{
    margin: 0px;
    font-size: 5rem;
}
#banner p{
    font-size: 3rem;
    margin: auto;
}
.section{
    max-width: 1000px;
    margin: auto;
    padding: 5rem;
}
#banner .section{
    max-width: 800px;
    padding: 0px;
}
#problem-statement{
    float: right;
    font-size: 1.7rem;
    width: calc(89% - 400px);
    margin-top: 5rem;
    font-weight: 500;
}
#features {
    display: flex;
    flex-wrap: wrap;
    gap: 3rem;
    margin-top: 3rem;
}
#features > div {
    flex: 1 1 calc(50% - 3rem); /* two per row */
    box-sizing: border-box;
}
#features h3{
    text-align: left;
    margin-top:0px;
}
#flowchart {
    display: flex;
    gap: 2px;
    margin-top:3rem;
}
#flowchart > div {
    font-size: 1.2rem;
    flex: 1;
    box-sizing: border-box;
    box-shadow: var(--box-shadow);
    padding: 2rem 3rem;
    background-color: var(--white);
}
#flowchart .arrow {
    flex: 0 0 auto;
    box-shadow: none;
    font-size: 3rem;
    padding: 0.5rem;
    margin: auto;
    background-color: var(--grey);
}
label{
    font-weight: 500;
    font-size: 1.2rem;
    margin-top: 2rem;
    display: block;
    line-height: 1.3;
    width: 100%
}
input, textarea, select{
    width: 100%;
    box-sizing: border-box;
    font-family: 'Overpass', 'Helvetica', sans-serif;
    font-weight: 250;
    padding: 0.5rem;
    background-color: var(--bright);
    box-shadow: var(--box-shadow);
    border: none;
    margin-top: 0.25rem;
    font-size: 1rem;
}
#contact-form, #report-form, #register-form{
    margin-left: calc(20% - 5rem);
    background-color: var(--white);
    box-shadow: var(--box-shadow);
    padding: 4rem 5rem;
    max-width: 60%;
    margin-top:5rem;
}
#contact h2, #report h2{
    text-align: left;
    margin-bottom: 1.5rem;
}
.section:last-of-type{
    padding-top: 0px;
}

/* REPORT AND REGISTER PAGES */
#report-form, #register-form{
    margin-top: 3rem;
}
#report-form h1, #register-form h1{
    font-size: 2.5rem;
    text-align: left;
    margin-bottom: 1.5rem;
    margin-top: 0px;
}
#report-form h2, #register-form h2{
    font-size: 1.75rem;
    text-align: left;
    margin-bottom: 0rem;
    margin-top: 2.5rem;
}
#report-form hr, #register-form hr{
    margin-top: 2rem;
    margin-bottom: 1rem;
}
#report-form input[type=file]{
    cursor: pointer;
}
#report-form .expanding-field-container, #register-form .expanding-field-container{
    display: flex;
    flex-wrap: nowrap;
}
#report-form .double-field-container, #register-form .double-field-container{
    display: flex;
    flex-wrap: nowrap;
    gap: 1.5rem;
}
#report-form .show-help-text, #register-form .show-help-text{
    font-size: 0.8rem;
    box-shadow: var(--box-shadow);
    padding: 0.25rem 0.3rem;
    cursor: pointer;
    background-color: var(--bright);
    border-radius: 0.25rem;
    font-weight: 400;
    margin-left: 0.5rem;
    margin-bottom: 0.4rem;
    margin-top: auto;
    height: fit-content;
    min-width: fit-content;
}
#report-form .help-text, #register-form .help-text{
    margin-bottom: 3rem;
    margin-top: 1rem;
}
input[type="file"]::file-selector-button {
    border: 1px solid var(--black);
    padding: 0.2rem 0.3rem;
    cursor: pointer;
    background-color: var(--bright);
    border-radius: 0.25rem;
    font-weight: 500;
    display: none;
}
input[type="file"]::file-selector-button:hover {
    background: var(--green-gradient);
    color: var(--white);
}
#report-form .hidden, #register-form .hidden{
    display: none;
}
.section.align-left{
    text-align: left;
    max-width: 800px;
    padding-top: 2rem;
}
.section.align-left h2{
    text-align: left;
    margin-top: 3rem;
    font-size: 2rem;
}
#banner.condensed{
    padding-bottom: 15vh;
    text-align: left;
}
#banner.full-height{
    padding-bottom: 15vh;
    min-height: 70vh;
}
#pre-report-faq{
    display: none;
}
#hide-pre-report-faq{
    margin-top: 2rem;
}
#form-error{
    color: var(--red);
    margin-left: 0.5rem;
    font-weight: 700;
}
.error-field{
    border: 0.25rem solid var(--red);
}
input[type="checkbox"]{
    width: initial;
    float: left;
    margin-right: 0.5rem;
    width: 1rem;
    height: 1rem;
    margin-top: .15rem;
    accent-color: var(--black);
    cursor: pointer;
}
#register-form #cost-confirmation p{
    margin-bottom: .5rem;
    margin-top: 2rem;
    font-size: 1.2rem;
}
#register-form #cost-confirmation label{
    margin-top: 0px;
    margin-bottom: 1.5rem;
}
#post-register h1{
    text-align: left;
    margin-bottom: 2rem;
}
#post-register p{
    font-size: 2rem;
}


/* LOADING ANIMATION */
#loading {
    width: 2.5rem;
    aspect-ratio: 1;
    border-radius: 50%;
    background: 
        radial-gradient(farthest-side, var(--black) 94%,#0000) top/8px 8px no-repeat,
        conic-gradient(#0000 30%, var(--black));
        mask: radial-gradient(farthest-side,#0000 calc(100% - 8px),#000 0);
        -webkit-mask: radial-gradient(farthest-side,#0000 calc(100% - 8px),#000 0);
    animation: loading 1s infinite linear;
    margin-left: 0.5rem;
    vertical-align: bottom;
    display: none;
}
@keyframes loading{ 
  100%{transform: rotate(1turn)}
}



/* TERMS PAGE */
#terms-into{
    margin-top: 3rem;
}
#terms h2 span{
    font-weight: 500;
    margin-left: 0.1rem;
    font-style: italic;
    display: block;
    font-size: 0.9rem;
    line-height: 2;
}
#terms li{
    margin-top: 0.75rem;
}
#terms hr{
    margin-top: 3rem;
}
#terms p{
    line-height: 1.4;
}
#terms-signature{
    font-family: MsMadi;
    font-weight: 400;
    text-align: left;
    margin-top: 4rem;
    margin-bottom: .5rem;
    background-color: var(--bright);
    width: fit-content;
    padding: 0.25rem 0.5rem;
    box-shadow: var(--box-shadow);
    font-size: 2.75rem;
}



/* RN ERROR MOCKUP */
#rn-input{
    width:12rem;
    height:2rem;
    border: 1px solid var(--black);
    box-shadow: var(--box-shadow);
    background-color: var(--white);
    display: block;
    width: fit-content;
    height: fit-content;
    margin: auto;
    padding: 0.5rem 0.75rem;
    font-size: 1.75rem;
    color: var(--black);
    font-weight: 700;
    font-family: "Courier New", monospace;
}
#rn-input span{
    transition: opacity 0.2s ease;
}
#browser-mockup {
    border-top: 2em solid rgba(230, 230, 230, 0.7);
    box-shadow: 0 0.1em 1em 0 rgba(0, 0, 0, 0.4);
    position: relative;
    border-radius: 3px 3px 0 0;
    width: 400px;
    height: 15rem;
    padding: 1.5rem;
    display: inline-block;
    padding-top: 0.75rem;
}
#browser-mockup:after {
    display: block;
    position: absolute;
    content: '';
    top: -1.25em;
    right: 4em;
    width: 0.5em;
    height: 0.5em;
    border-radius: 50%;
    background-color: var(--black);
    box-shadow: 0 0 0 2px var(--black), 1.5em 0 0 2px var(--black), 3em 0 0 2px var(--black);
    opacity: 0.8;
}
#browser-mockup:before {
    display: block;
    position: absolute;
    content: '';
    top: -1.6em;
    right: 5.5em;
    width: calc(100% - 6em);
    height: 1.2em;
    border-radius: 2px;
    background-color: var(--white);
}
#browser-grid *{
    box-sizing:border-box;
}
#browser-grid{
    display:grid;
    gap:1rem;
    background-color: var(--grey);
    height:100%;
    grid-template-areas:'one one one one two two''three three four four two two''three three six seven seven seven''five five six seven seven seven';
    grid-template-rows: 2fr 1fr 1fr;
    grid-template-columns: 1fr 1fr 2fr 2fr 1fr 1fr;
}
.rn-error{
    width:100%;
    height:100%;
    display:grid;
    place-items:center;
    font-size:0.8rem;
    color: var(--red);
    box-shadow: var(--box-shadow);
    background-color: var(--pink);
    padding:0.5rem;
    border-radius: 0.5rem;
    text-align: center;
}
#rn-error-one{
    grid-area:one;
    font-size: 1.2rem;
    padding: 1.5rem 0rem 1.5rem 0rem;
    display: inline;
}
#rn-error-one img{
    vertical-align: bottom;
    height: 1.5rem;
    width: 1.5rem;
    margin-right: 0.5rem;
}
#rn-error-two{
    grid-area:two;
    align-content: space-evenly;
}
#rn-error-three{
    grid-area:three;
    font-size: 0.6rem;
}
#rn-error-four{
    grid-area:four;
}
#rn-error-five{
    grid-area:five;
}
#rn-error-six{
    grid-area:six;
}
#rn-error-seven{
    grid-area:seven;
    padding: 1rem 2rem 1rem 2rem;
}
#rn-error-seven img{
    margin-bottom: 0.25rem;
}



/* FOOTER */
footer{
    text-align: center;
    min-height: 10vh;
    background-color: var(--black);
    color: var(--white);
    padding-top: 3rem;
    padding-bottom: 1rem;
}
footer p{
    font-size: 1rem;
}
footer a{
    margin-left: 0.5rem;
    margin-right: 0.5rem;
    color: var(--white);
}
footer button{
    margin-left: 0.5rem;
    margin-right: 0.5rem;
    color: var(--white);
    font-size: 1rem;
    padding: 0px;
    border: none;
    background-color: var(--black);
    box-shadow: none;
    font-weight: inherit;
    cursor: pointer;
    font-family: 'Overpass', 'Helvetica', sans-serif;
    letter-spacing: -0.02rem;
    text-decoration: underline;
}
footer button:hover, footer button:focus{
    background: var(--black);
    opacity: 0.8;
}
#copyright-logo{
    vertical-align: -0.35rem;
    width: 6.5rem;
    margin: 0px;
    padding: 0px;
    display: inline;
}



/* MOBILE STRUCTURE */
@media only screen and (max-width: 1000px) {
    #banner p{
        font-size: 1.5rem;
    }
    #problem-statement{
        float: none;
        width: 100%;
    }
    #flowchart > div {
        padding: 1.5rem 1rem;
    }
    #flowchart .arrow {
        padding: 0.5rem;
    }
}
@media only screen and (max-width: 600px) {
    #browser-mockup{
        height: auto;
        width: calc(100% - 3rem);
    }
    #rn-error-one{
        font-size: 1rem;
    }
    #browser-grid{
        grid-template-areas:
            'one'
            'four';
        grid-template-rows: 1fr 1fr;
        grid-template-columns: 1fr;
        width: 100%;
        height: 100%;
    }
    .rn-error:not(#rn-error-one){
        display:none;
    }
    #flowchart{
        flex-direction: column;
        gap: 1rem;
    }
    #flowchart .arrow{
        display:none;
    }
    #features{
        flex-direction: column;
    }
    h1 {font-size: 2.5rem;}
    h2 {font-size: 2rem;}
    h3 {font-size: 1.5rem;}
    #contact-form, #report-form, #register-form{
        padding: 1rem;
        width: calc(100% - 1rem);
        max-width: 100%;
        margin: 0px;
    }
    .section{
        padding: 3rem;
    }
    #report-form .double-field-container, #register-form .double-field-container{
        display: flex;
        flex-wrap: wrap;
        gap: 0.5rem;
    }
}


/* PRINT STRUCTURE */
@media print{
    #register-form{
        margin: 0px;
        max-width: none;
    }
    .section.print-without-padding{
        padding: 0px;
        max-width: none;
    }
    #turnstile-container, #register-form-submit{
        display: none;
    }
    .print-page-break{
        break-after: page;
    }
    #terms hr{
        visibility: hidden;
    }
}