/* ==========================================================================
   SOCFELL Candidate Portal — Contemporary Design
   Matching Harvard SOF site: full-width color bands, no logos
   ========================================================================== */

/* --------------------------------------------------------------------------
   Reset & Base
   -------------------------------------------------------------------------- */
*, *::before, *::after {
    box-sizing: border-box;
}

html, body {
    margin: 0;
    padding: 0;
    width: 100%;
    min-height: 100vh;
}

body {
    font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    font-size: 16px;
    line-height: 1.6;
    color: #1e1e1e;
    background-color: #fff;
    display: flex;
    flex-direction: column;
}

#Form {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
    width: 100%;
    margin: 0;
    padding: 0;
}

h1, h2, h3, h4, h5, h6 {
    font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
    margin: 0;
}

a {
    color: #a51c30;
    transition: color 0.2s ease;
}

a:hover {
    color: #7b272b;
}

img {
    max-width: 100%;
}

/* --------------------------------------------------------------------------
   Band System — every horizontal section is a full-width band
   -------------------------------------------------------------------------- */
.band-inner {
    max-width: 1200px;
    margin: 0 auto;
    padding-left: 2rem;
    padding-right: 2rem;
}

/* --------------------------------------------------------------------------
   Top Bar — thin crimson strip with "HARVARD UNIVERSITY"
   -------------------------------------------------------------------------- */
.band-top {
    background-color: #a51c30;
    padding: 0.25rem 0;
}

.band-top a {
    color: #fff;
    font-size: 0.6875rem;
    font-weight: 400;
    letter-spacing: 0.08em;
    text-decoration: none;
    text-transform: uppercase;
}

.band-top a:hover {
    color: rgba(255,255,255,0.8);
}

/* --------------------------------------------------------------------------
   Header — dark charcoal band with "Society of Fellows"
   -------------------------------------------------------------------------- */
.band-header {
    background-color: #2B416E;
    padding: 1rem 0;
}

.band-header-inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.band-header h1 {
    font-size: 1.625rem;
    font-weight: 400;
    margin: 0;
    color: #fff;
}

.header-link {
    color: rgba(255,255,255,0.8);
    font-size: 0.8125rem;
    text-decoration: none;
    white-space: nowrap;
}

.header-link:hover {
    color: #fff;
}

/* --------------------------------------------------------------------------
   Nav Bar — maroon with menu links
   -------------------------------------------------------------------------- */
.band-nav {
    background-color: #a51c30;
    padding: 0.25rem 0;
}

/* Menu rendered by menu.ascx as <div id="site-nav"><ul>...</ul></div> */
#site-nav,
#site-nav-portal {
    margin: 0;
    padding: 0;
}

#site-nav ul,
#site-nav-portal ul {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
}

#site-nav li,
#site-nav-portal li {
    display: inline-block;
}

#site-nav a,
#site-nav-portal a {
    display: block;
    padding: 0.3rem 0.75rem;
    color: #fff;
    text-decoration: none;
    font-family: "Inter", sans-serif;
    font-size: 0.9375rem;
    transition: background-color 0.15s ease, color 0.15s ease;
}

#site-nav a:hover,
#site-nav-portal a:hover {
    background-color: #fff;
    color: #a51c30;
}

#site-nav-portal li {
    font-size: 0.875rem;
    font-family: "Inter", sans-serif;
    color: rgba(255,255,255,0.45);
    padding: 0.5rem 0;
    display: none;
}

/* Only show list items that contain links */
#site-nav-portal li:has(a) {
    display: inline-block;
}

#site-nav-portal li.nav-sep {
    display: inline-flex !important;
    align-items: center;
    color: rgba(255,255,255,0.25);
    padding: 0 0.375rem;
    font-size: 0.875rem;
}

#site-nav-portal li.nav-break {
    display: block !important;
    width: 100%;
    height: 0;
    padding: 0;
    margin: -0.125rem 0 0 0;
}

#site-nav-portal li:first-child,
#site-nav li:first-child {
    padding-left: 0;
}

@media (max-width: 768px) {
    #site-nav ul,
    #site-nav-portal ul {
        flex-direction: column;
    }

    #site-nav a,
    #site-nav-portal a {
        padding: 0.375rem 0;
        font-size: 0.875rem;
    }

    #site-nav-portal li.nav-sep {
        display: none !important;
    }

    #site-nav-portal li.nav-break {
        display: none !important;
    }
}

/* --------------------------------------------------------------------------
   Page Title Bar — light gray band
   -------------------------------------------------------------------------- */
.band-title {
    background-color: #F3F3F4;
    padding: 1.25rem 0;
    border-bottom: 1px solid #e0dfdb;
}

.band-title h2 {
    font-size: 1.625rem;
    font-weight: 600;
    color: #1e1e1e;
}

/* --------------------------------------------------------------------------
   Content Area — white, takes remaining vertical space
   -------------------------------------------------------------------------- */
.band-content {
    flex: 1;
    background-color: #fff;
    padding: 2rem 0 3rem;
    text-align: left;
}

/* --------------------------------------------------------------------------
   Footer — dark band
   -------------------------------------------------------------------------- */
.band-footer {
    background-color: #1e1e1e;
    padding: 0.875rem 0;
    color: rgba(255,255,255,0.7);
    font-size: 0.8125rem;
}

.band-footer a {
    color: #fff;
    text-decoration: none;
}

.band-footer a:hover {
    color: #c8c8c8;
}

.band-footer .sep {
    margin: 0 0.5rem;
    color: rgba(255,255,255,0.3);
}

/* ==========================================================================
   FORM COMPONENTS
   ========================================================================== */

/* --------------------------------------------------------------------------
   Page Navigation (Prev / Next within application)
   -------------------------------------------------------------------------- */
#page-nav {
    margin-bottom: 1.5rem;
    padding: 0.75rem 0;
    border-bottom: 2px solid #e5e5e3;
}

#page-nav .row {
    display: flex;
    justify-content: space-between;
    width: 100%;
}

/* Override Bootstrap's `.row > *` width:100% so previous/next sit on opposite ends */
#page-nav .row > * {
    width: auto;
    max-width: none;
    padding-left: 0;
    padding-right: 0;
}

#page-nav a {
    color: #a51c30;
    text-decoration: none;
    font-weight: 600;
    font-size: 0.875rem;
    text-transform: uppercase;
    letter-spacing: 0.025em;
}

#page-nav a:hover {
    color: #7b272b;
    text-decoration: underline;
}

/* --------------------------------------------------------------------------
   Application Form Container
   -------------------------------------------------------------------------- */
#application {
    background: #fff;
    border: 1px solid #e5e5e3;
    border-radius: 4px;
    padding: 2rem;
    margin-bottom: 1.5rem;
    max-width: 800px;
}

/* --------------------------------------------------------------------------
   Form Rows (legacy .row2 layout)
   -------------------------------------------------------------------------- */
.row2 {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    padding: 0.5rem 0;
    border-bottom: 1px solid #f0f0ee;
}

.row2:last-child {
    border-bottom: none;
}

.row2 .label {
    flex: 0 0 200px;
    max-width: 200px;
    font-weight: 600;
    font-size: 0.875rem;
    color: #4a4a4a;
    text-align: right;
    padding-right: 1.25rem;
    padding-top: 0.5rem;
}

.row2 .data {
    flex: 1;
    min-width: 0;
}

@media (max-width: 767px) {
    .row2 {
        flex-direction: column;
        align-items: flex-start;
    }

    .row2 .label {
        flex: none;
        max-width: 100%;
        text-align: left;
        padding-right: 0;
        padding-bottom: 0.25rem;
        font-size: 0.8125rem;
    }
}

/* --------------------------------------------------------------------------
   Form Inputs
   -------------------------------------------------------------------------- */
#application input[type="text"],
#application input[type="email"],
#application input[type="password"],
#application select,
#application textarea {
    display: inline-block;
    padding: 0.5rem 0.75rem;
    font-size: 0.9375rem;
    font-family: inherit;
    line-height: 1.5;
    color: #1e1e1e;
    background-color: #fff;
    border: 1px solid #c8c8c6;
    border-radius: 3px;
    transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
    box-sizing: border-box;
}

#application input[type="text"]:focus,
#application select:focus,
#application textarea:focus {
    border-color: #a51c30;
    outline: 0;
    box-shadow: 0 0 0 0.2rem rgba(165, 28, 48, 0.15);
}

#application textarea {
    width: 100%;
    resize: vertical;
}

/* Legacy width classes — inputs and sublabels share these proportions */
#application .max          { width: 100%; max-width: 380px; box-sizing: border-box; }
#application .threequarters { width: 100%; max-width: 280px; box-sizing: border-box; }
#application .half         { width: 48%; max-width: 340px; box-sizing: border-box; }
#application .quarter      { width: 24%; max-width: 100px; box-sizing: border-box; }
#application .third        { width: 32%; max-width: 140px; box-sizing: border-box; }
#application .sixth        { width: 16%; max-width: 120px; box-sizing: border-box; }

@media (max-width: 767px) {
    #application .max,
    #application .threequarters,
    #application .half,
    #application .quarter,
    #application .third,
    #application .sixth {
        width: 100%;
        max-width: 100%;
        margin-bottom: 0.5rem;
    }
}

/* --------------------------------------------------------------------------
   Sub-labels — widths must match their corresponding input classes
   -------------------------------------------------------------------------- */
.sublabel,
.sublabelhalf,
.sublabelquarter,
.sublabelmax,
.sublabelsixth {
    font-size: 0.75rem;
    color: #8a8a88;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    padding-top: 0.125rem;
    padding-bottom: 0.375rem;
    display: inline-block;
    box-sizing: border-box;
    vertical-align: top;
}

.sublabel        { width: 100%; max-width: 380px; }
.sublabelhalf    { width: 48%; max-width: 340px; }
.sublabelquarter { width: 24%; max-width: 100px; }
.sublabelmax     { width: 100%; max-width: 380px; }
.sublabelsixth   { width: 16%; max-width: 120px; }

/* --------------------------------------------------------------------------
   Headings within forms
   -------------------------------------------------------------------------- */
.heading {
    background-color: #2B416E;
    color: #fff;
    font-weight: 600;
    padding: 0.75rem 1rem;
    font-size: 0.875rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.sub-heading {
    background-color: #eceae6;
    color: #5a5a58;
    font-weight: 600;
    padding: 0.5rem 1rem;
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    border-bottom: 2px solid #d8d6d1;
}

.headinglabelsixth,
.headinglabelhalf {
    display: inline-block;
    font-weight: 600;
    font-size: 0.8125rem;
    color: #4a4a4a;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    box-sizing: border-box;
    vertical-align: bottom;
}

.headinglabelsixth { width: 16%; max-width: 120px; }
.headinglabelhalf  { width: 48%; max-width: 340px; }

/* --------------------------------------------------------------------------
   Buttons
   -------------------------------------------------------------------------- */
.formbutton,
input[type="submit"].formbutton,
input[type="submit"] {
    display: inline-block;
    padding: 0.625rem 2rem;
    font-size: 0.9375rem;
    font-weight: 600;
    color: #fff;
    background-color: #2B416E;
    border: none;
    border-radius: 3px;
    cursor: pointer;
    transition: background-color 0.2s ease;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin-top: 0.5rem;
}

.formbutton:hover,
input[type="submit"].formbutton:hover,
input[type="submit"]:hover {
    background-color: #1e3050;
}

.start {
    padding: 1rem 0;
}

/* --------------------------------------------------------------------------
   Login Form
   -------------------------------------------------------------------------- */
table.Login {
    display: block;
    max-width: 450px;
}

table.Login tbody {
    display: block;
}

table.Login tr {
    display: flex;
    align-items: center;
    margin-bottom: 0.5rem;
}

table.Login td {
    display: block;
    padding: 0;
}

td.LoginLabel {
    font-weight: 600;
    font-size: 0.9375rem;
    color: #4a4a4a;
    padding-right: 0.75rem;
    white-space: nowrap;
    text-align: right;
    min-width: 140px;
}

.LoginInput {
    display: inline-block;
    width: 260px;
    padding: 0.5rem 0.75rem;
    font-size: 1rem;
    font-family: inherit;
    border: 1px solid #c8c8c6;
    border-radius: 3px;
    box-sizing: border-box;
    transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
    vertical-align: middle;
}

.LoginInput:focus {
    border-color: #2B416E;
    outline: 0;
    box-shadow: 0 0 0 0.2rem rgba(43, 65, 110, 0.15);
}

.LoginError,
.Error {
    color: #a51c30;
    font-size: 0.875rem;
    padding: 0.25rem 0;
}

.LoginButton {
    vertical-align: middle;
}

.PasswordRecovery {
    padding-top: 0.25rem;
}

.PasswordRecovery a {
    color: #a51c30;
    font-size: 0.875rem;
}

/* --------------------------------------------------------------------------
   Standardized ASP.NET form tables (Login, ChangePassword, PasswordRecovery)
   -------------------------------------------------------------------------- */
.band-content table:not(.Login) {
    border-spacing: 0;
    border-collapse: collapse;
}

.band-content table:not(.Login) td {
    padding: 0.3rem 0.25rem;
    vertical-align: middle;
}

.band-content table td[align="right"] {
    font-weight: 600;
    font-size: 0.9375rem;
    color: #4a4a4a;
    padding-right: 0.75rem;
    white-space: nowrap;
    text-align: right;
}

.band-content table input[type="text"],
.band-content table input[type="password"] {
    display: inline-block;
    width: 260px;
    padding: 0.5rem 0.75rem;
    font-size: 1rem;
    font-family: inherit;
    border: 1px solid #c8c8c6;
    border-radius: 3px;
    box-sizing: border-box;
    transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
    vertical-align: middle;
}

.band-content table input[type="text"]:focus,
.band-content table input[type="password"]:focus {
    border-color: #2B416E;
    outline: 0;
    box-shadow: 0 0 0 0.2rem rgba(43, 65, 110, 0.15);
}

/* Standard button classes */
.ButtonLong,
.ButtonMedium,
.Button {
    display: inline-block;
    padding: 0.625rem 2rem;
    font-size: 0.9375rem;
    font-weight: 600;
    color: #fff;
    background-color: #2B416E;
    border: none;
    border-radius: 3px;
    cursor: pointer;
    transition: background-color 0.2s ease;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin-top: 0.5rem;
}

.ButtonLong:hover,
.ButtonMedium:hover,
.Button:hover {
    background-color: #1e3050;
}

/* --------------------------------------------------------------------------
   Application Table (programs home)
   -------------------------------------------------------------------------- */
.applicationTable {
    width: 100%;
    border-collapse: collapse;
    margin-bottom: 1.5rem;
    border: 1px solid #e5e5e3;
}

.applicationTable td,
.applicationTable th {
    padding: 0.75rem 1rem;
    text-align: left;
    border-bottom: 1px solid #e5e5e3;
}

.applicationTable .heading td,
.applicationTable .heading th {
    background-color: #2B416E;
    color: #fff;
    font-weight: 600;
    font-size: 0.875rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    border-bottom: none;
}

.applicationTable .sub-heading td,
.applicationTable .sub-heading th {
    background-color: #eceae6;
    color: #5a5a58;
    font-weight: 600;
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    border-bottom: 2px solid #d8d6d1;
}

/* --------------------------------------------------------------------------
   References
   -------------------------------------------------------------------------- */
.referenceHeader {
    font-weight: 600;
    font-size: 1rem;
    padding: 0.75rem 0;
    border-bottom: 2px solid #a51c30;
    margin-bottom: 0.75rem;
}

.referenceItem {
    padding: 0.75rem 0;
    border-bottom: 1px solid #f0f0ee;
}

.referenceButton {
    display: inline-block;
    padding: 0.375rem 1rem;
    font-size: 0.8125rem;
    font-weight: 600;
    color: #a51c30;
    background: transparent;
    border: 1px solid #a51c30;
    border-radius: 3px;
    cursor: pointer;
    transition: all 0.2s ease;
}

.referenceButton:hover {
    background-color: #a51c30;
    color: #fff;
}

/* --------------------------------------------------------------------------
   Misc
   -------------------------------------------------------------------------- */
.required {
    color: #a51c30;
    font-weight: 700;
}

.format {
    font-size: 0.8125rem;
    color: #8a8a88;
}

.desc {
    font-size: 0.875rem;
    color: #4a4a4a;
}

.instructions {
    font-size: 0.9375rem;
    line-height: 1.6;
    color: #4a4a4a;
    padding: 0.75rem 0;
}

.spacer {
    height: 1rem;
}

.errorMessage {
    color: #a51c30;
    font-weight: 600;
}

.hidden {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    border: 0;
}

/* --------------------------------------------------------------------------
   FAQ
   -------------------------------------------------------------------------- */
.faq-list {
    max-width: 820px;
    margin: 0.5rem 0 2rem;
}

.faq-item {
    padding: 1.25rem 0 1.5rem;
    border-bottom: 1px solid #e5e5e3;
}

.faq-item:first-child {
    padding-top: 0.25rem;
}

.faq-item:last-child {
    border-bottom: none;
}

.faq-item .question {
    position: relative;
    padding-left: 1rem;
    margin-bottom: 0.625rem;
    font-size: 1.0625rem;
    font-weight: 600;
    line-height: 1.4;
    color: #2B416E;
}

.faq-item .question::before {
    content: "";
    position: absolute;
    left: 0;
    top: 0.35em;
    bottom: 0.35em;
    width: 3px;
    background-color: #a51c30;
    border-radius: 2px;
}

.faq-item .answer {
    padding-left: 1rem;
    font-size: 0.9375rem;
    line-height: 1.65;
    color: #3a3a3a;
}

.faq-item .answer p {
    margin: 0 0 0.75rem;
}

.faq-item .answer p:last-child {
    margin-bottom: 0;
}

.faq-item .answer a {
    color: #a51c30;
    text-decoration: underline;
}

.faq-item .answer a:hover {
    color: #7b272b;
}

@media (max-width: 600px) {
    .faq-item .question {
        font-size: 1rem;
    }

    .faq-item .answer {
        font-size: 0.9rem;
    }
}

/* --------------------------------------------------------------------------
   Print
   -------------------------------------------------------------------------- */
@media print {
    .band-top,
    .band-nav,
    .band-footer,
    #page-nav {
        display: none !important;
    }

    #application {
        border: none;
        padding: 0;
    }
}
