/**
 * NBGR — Nusantara Border Governance Review
 * Main stylesheet — extracted from "Sovereign Gateway" design
 */

/* ============================================================
   GOOGLE FONTS
   ============================================================ */
@import url('https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,400;0,500;0,600;0,700;0,800;1,400&family=Merriweather:ital,wght@0,400;0,700;0,900;1,400&display=swap');

/* ============================================================
   DESIGN TOKENS
   ============================================================ */
:root {
    /* Navy palette */
    --nbgr-navy:          #223658;
    --nbgr-navy-dark:     #15243a;
    --nbgr-navy-mid:      #1a2c47;
    --nbgr-navy-light:    #2e497a;
    --nbgr-navy-bg:       #16263f;
    --nbgr-navy-card:     #16263f;
    --nbgr-navy-border:   #2c456c;

    /* Gold palette */
    --nbgr-gold:          #C3A24E;
    --nbgr-gold-light:    #d8bd7e;
    --nbgr-gold-muted:    #b08d3a;

    /* Accent */
    --nbgr-teal:          #6fb39e;
    --nbgr-forest:        #143b2c;

    /* Cream / surface */
    --nbgr-cream:         #f7f4ec;
    --nbgr-cream-mid:     #f4f2ea;
    --nbgr-cream-border:  #e2ddcd;
    --nbgr-cream-border2: #e6e1d3;

    /* Text on light */
    --nbgr-text:          #1c2a40;
    --nbgr-text-mid:      #454f63;
    --nbgr-text-muted:    #5e6678;
    --nbgr-text-light:    #6e7890;
    --nbgr-text-faint:    #8fa3c2;

    /* Text on dark */
    --nbgr-on-dark:       #c5d0e2;
    --nbgr-on-dark-mid:   #c7d2e4;
    --nbgr-on-dark-muted: #9fb0cc;

    /* Typography */
    --nbgr-font-sans:  'Montserrat', system-ui, sans-serif;
    --nbgr-font-serif: 'Merriweather', Georgia, serif;

    /* Layout */
    --nbgr-max-width: 1240px;
    --nbgr-gutter:    28px;
}

/* ============================================================
   RESET / BASE
   ============================================================ */
*, *::before, *::after { box-sizing: border-box; }

html, body {
    margin: 0;
    padding: 0;
}

body {
    font-family: var(--nbgr-font-sans);
    color: var(--nbgr-text);
    background: #fff;
    -webkit-font-smoothing: antialiased;
}

a {
    color: inherit;
    text-decoration: none;
}

ul {
    list-style: none;
    margin: 0;
    padding: 0;
}

input { font-family: inherit; }

::selection {
    background: var(--nbgr-gold);
    color: var(--nbgr-navy-dark);
}

/* ============================================================
   STRUCTURAL PAGE WRAPPER
   ============================================================ */
.pkp_structure_page {
    min-height: 100vh;
    display: flex;
    flex-direction: column;
}

.pkp_structure_content {
    flex: 1;
}

.pkp_structure_main {
    /* No padding here — each section handles its own */
}

/* ============================================================
   SKIP LINKS (a11y) — OJS generates <nav class="cmp_skip_to_content">
   ============================================================ */
.pkp_screen_reader {
    position: absolute !important;
    left: -9999px !important;
    top: auto !important;
    width: 1px !important;
    height: 1px !important;
    overflow: hidden !important;
}

.cmp_skip_to_content {
    position: absolute;
    top: 0;
    left: 0;
    z-index: 9999;
}

.cmp_skip_to_content a {
    position: absolute;
    left: -9999px;
    top: auto;
    width: 1px;
    height: 1px;
    overflow: hidden;
    white-space: nowrap;
}

.cmp_skip_to_content a:focus {
    position: fixed;
    top: 0;
    left: 0;
    width: auto;
    height: auto;
    padding: 10px 18px;
    background: var(--nbgr-gold);
    color: var(--nbgr-navy-dark);
    font-weight: 700;
    font-size: 13px;
    text-decoration: none;
    z-index: 9999;
    clip: auto;
}

/* ============================================================
   HEADER — institutional strip
   ============================================================ */
.pkp_structure_head {
    background: #fff;
}

.nbgr-institutional {
    background: var(--nbgr-navy-dark);
    border-top: 3px solid var(--nbgr-gold);
    color: var(--nbgr-on-dark);
}

.nbgr-institutional__inner {
    max-width: var(--nbgr-max-width);
    margin: 0 auto;
    padding: 0 var(--nbgr-gutter);
    height: 40px;
    display: flex;
    align-items: center;
    font-size: 11px;
    letter-spacing: .05em;
}

.nbgr-institutional__publisher {
    text-transform: uppercase;
    font-weight: 600;
    color: #aebbd1;
}

.nbgr-institutional__right {
    margin-left: auto;
    display: flex;
    align-items: center;
    align-self: stretch;       /* fill 40px strip so child anchors can reach its bottom edge */
    gap: 0;
}

.nbgr-utility-sep {
    height: 13px;
    width: 1px;
    background: #2c456c;
    margin: 0 14px;
    flex-shrink: 0;
}

/* ── Language dropdown ── */
.nbgr-lang {
    position: relative;
    align-self: stretch;       /* fill the 40px strip so menu/triangle anchor to its bottom edge */
    display: flex;
    align-items: center;
}

.nbgr-lang__trigger {
    display: flex;
    align-items: center;
    gap: 5px;
    background: transparent;
    border: none;
    cursor: pointer;
    color: var(--nbgr-on-dark-muted);
    font-size: 11px;
    font-weight: 600;
    font-family: inherit;
    letter-spacing: .04em;
    padding: 0 2px;
    transition: color .15s;
}

.nbgr-lang__trigger:hover { color: #e7ecf4; }

.nbgr-lang__globe {
    width: 14px;
    height: 14px;
    flex-shrink: 0;
}

.nbgr-lang__caret {
    width: 12px;
    height: 12px;
    flex-shrink: 0;
    opacity: .6;
}

.nbgr-lang__current { letter-spacing: .06em; }

/* Single locale — show as non-interactive indicator */
.nbgr-lang--single .nbgr-lang__trigger {
    cursor: default;
    pointer-events: none;
}

.nbgr-lang__menu {
    display: none;
    flex-direction: column;
    gap: 3px;                 /* breathing room between items */
    position: absolute;
    top: calc(100% + 8px);    /* gap = triangle height, tip touches parent's bottom edge */
    left: 50%;                /* centered on parent */
    right: auto;
    transform: translateX(-50%);
    min-width: 170px;
    background: #fff;
    border-radius: 8px;
    border-top: 2px solid var(--nbgr-gold);
    box-shadow: 0 10px 30px rgba(0,0,0,.22);
    z-index: 2000;
    padding: 7px;
    list-style: none;
    margin: 0;
}

/* Transparent full-width bridge keeps hover alive across the gap */
.nbgr-lang__menu::before {
    content: '';
    position: absolute;
    bottom: 100%;
    left: 0;
    right: 0;
    height: 10px;
}

/* Visible triangle "bridge" centered above the menu, pointing at the parent */
.nbgr-lang__menu::after {
    content: '';
    position: absolute;
    bottom: 100%;
    left: 50%;
    transform: translateX(-50%);
    border: 8px solid transparent;
    border-bottom-color: var(--nbgr-gold);
}

.nbgr-lang:hover .nbgr-lang__menu,
.nbgr-lang__trigger:focus + .nbgr-lang__menu,
.nbgr-lang__menu:hover {
    display: flex;
}

.nbgr-lang__option {
    display: block;
    padding: 8px 14px;
    font-size: 12.5px;
    color: var(--nbgr-text-mid);
    border-radius: 6px;       /* inset rounded hover */
    transition: background .12s, color .12s;
    cursor: pointer;
}

a.nbgr-lang__option:hover {
    background: var(--nbgr-cream);
    color: var(--nbgr-navy);
    text-decoration: none;
}

.nbgr-lang__option--active {
    color: var(--nbgr-navy);
    font-weight: 700;
    background: var(--nbgr-cream-mid);
}

/* ── User nav in institutional strip ── */
.nbgr-user-nav {
    display: flex;
    align-items: center;
    align-self: stretch;       /* fill the 40px strip so menu/triangle anchor to its bottom edge */
}

.nbgr-user-nav .pkp_navigation_user {
    display: flex;
    align-items: center;
    height: 100%;
    margin: 0;
    padding: 0;
    list-style: none;
    gap: 0;
}

.nbgr-user-nav .pkp_navigation_user > li {
    position: relative;
    display: flex;
    align-items: center;
    height: 100%;
}

.nbgr-user-nav .pkp_navigation_user > li > a,
.nbgr-user-nav .pkp_navigation_user > li > [data-toggle="dropdown"] {
    font-size: 11px;
    font-weight: 600;
    color: var(--nbgr-on-dark-muted);
    padding: 0 8px;
    transition: color .15s;
    display: flex;
    align-items: center;
    gap: 4px;
    cursor: pointer;
    background: transparent;
    border: none;
    font-family: inherit;
    letter-spacing: .04em;
}

.nbgr-user-nav .pkp_navigation_user > li > a:hover,
.nbgr-user-nav .pkp_navigation_user > li > [data-toggle="dropdown"]:hover {
    color: #e7ecf4;
    text-decoration: none;
}

/* User nav sub-menu — OJS renders a plain nested <ul>, not .dropdown-menu */
.nbgr-user-nav .pkp_navigation_user > li > ul,
.nbgr-user-nav .dropdown-menu {
    display: none;
    flex-direction: column;
    gap: 3px;                 /* breathing room between items */
    position: absolute;
    top: calc(100% + 8px);    /* gap = triangle height, tip touches parent's bottom edge */
    left: 50%;                /* centered on parent */
    right: auto;
    transform: translateX(-50%);
    min-width: 190px;
    background: #fff;
    border-radius: 8px;
    box-shadow: 0 10px 30px rgba(0,0,0,.22);
    border-top: 2px solid var(--nbgr-gold);
    z-index: 2000;
    padding: 7px;
    list-style: none;
    margin: 0;
}

/* Show: CSS hover OR Bootstrap JS adds .show class */
.nbgr-user-nav .pkp_navigation_user > li:hover > ul,
.nbgr-user-nav .pkp_navigation_user > li:hover > .dropdown-menu,
.nbgr-user-nav .dropdown-menu.show {
    display: flex;
}

/* Transparent full-width bridge keeps hover alive across the gap */
.nbgr-user-nav .pkp_navigation_user > li > ul::before,
.nbgr-user-nav .dropdown-menu::before {
    content: '';
    position: absolute;
    bottom: 100%;
    left: 0;
    right: 0;
    height: 10px;
}

/* Visible triangle "bridge" centered above the menu, pointing at the parent */
.nbgr-user-nav .pkp_navigation_user > li > ul::after,
.nbgr-user-nav .dropdown-menu::after {
    content: '';
    position: absolute;
    bottom: 100%;
    left: 50%;
    transform: translateX(-50%);
    border: 8px solid transparent;
    border-bottom-color: var(--nbgr-gold);
}

.nbgr-user-nav .pkp_navigation_user > li > ul li,
.nbgr-user-nav .dropdown-menu li {
    display: block;
    width: 100%;
}

.nbgr-user-nav .pkp_navigation_user > li > ul a,
.nbgr-user-nav .dropdown-menu a {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    padding: 8px 14px;
    font-size: 12.5px;
    font-weight: 500;
    color: var(--nbgr-text-mid);
    white-space: nowrap;
    border-radius: 6px;       /* inset rounded hover */
    transition: background .12s, color .12s;
}

.nbgr-user-nav .pkp_navigation_user > li > ul a:hover,
.nbgr-user-nav .dropdown-menu a:hover {
    background: var(--nbgr-cream);
    color: var(--nbgr-navy);
    text-decoration: none;
}

/* Notification count → pill badge (e.g. unread tasks next to Dashboard) */
.nbgr-user-nav .task_count {
    flex-shrink: 0;
    min-width: 19px;
    height: 19px;
    line-height: 19px;
    padding: 0 6px;
    border-radius: 10px;
    background: var(--nbgr-gold);
    color: var(--nbgr-navy-dark);
    font-size: 10.5px;
    font-weight: 700;
    text-align: center;
}

/* Hide the badge when there is nothing unread (count renders as 0) */
.nbgr-user-nav .task_count:empty {
    display: none;
}

/* Narrow screens: user nav sits in the right corner, so a centered dropdown
   overflows the viewport. Right-align the menu and shift the triangle right. */
@media (max-width: 1200px) {
    .nbgr-user-nav .pkp_navigation_user > li > ul,
    .nbgr-user-nav .dropdown-menu {
        left: auto;
        right: 0;
        transform: none;
    }
    .nbgr-user-nav .pkp_navigation_user > li > ul::after,
    .nbgr-user-nav .dropdown-menu::after {
        left: auto;
        right: 16px;
        transform: none;
    }
}

/* ============================================================
   HEADER — masthead
   ============================================================ */
.pkp_head_wrapper {
    background: #fff;
    border-bottom: 1px solid var(--nbgr-cream-border2);
}

.pkp_head_inner {
    max-width: var(--nbgr-max-width);
    margin: 0 auto;
    padding: 18px var(--nbgr-gutter);
    display: flex;
    align-items: center;
    gap: 18px;
}

.pkp_site_name_wrapper { flex-shrink: 0; }

.pkp_site_name a,
.pkp_site_name a.is_img,
.pkp_site_name a.is_text {
    display: flex;
    align-items: center;
    gap: 15px;
    text-decoration: none;
}

.pkp_site_name img {
    height: 54px;
    width: auto;
}

.nbgr-site-name-text { display: block; }

.nbgr-site-name-abbr {
    display: block;
    font-weight: 800;
    font-size: 24px;
    letter-spacing: .02em;
    color: var(--nbgr-navy);
    line-height: 1;
}

.nbgr-site-name-full {
    display: block;
    font-size: 10.5px;
    letter-spacing: .13em;
    text-transform: uppercase;
    color: var(--nbgr-text-light);
    margin-top: 5px;
    font-weight: 600;
}

.nbgr-head-actions {
    margin-left: auto;
    display: flex;
    align-items: center;
    gap: 14px;
}

/* Header search */
.pkp_search.cmp_form {
    display: flex;
    align-items: center;
    background: var(--nbgr-cream-mid);
    border: 1px solid var(--nbgr-cream-border);
    border-radius: 4px;
    padding: 9px 13px;
    width: 252px;
}

.pkp_search .search_icon {
    color: var(--nbgr-gold-muted);
    font-size: 14px;
    flex-shrink: 0;
}

.pkp_search .search_input {
    border: none;
    background: transparent;
    outline: none;
    font-size: 12.5px;
    color: var(--nbgr-text);
    margin-left: 9px;
    width: 100%;
}

/* Submit CTA in header */
.pkp_button.submit_manuscript {
    background: var(--nbgr-navy);
    color: #fff;
    font-size: 12.5px;
    font-weight: 700;
    padding: 11px 18px;
    border-radius: 4px;
    letter-spacing: .02em;
    transition: background .15s;
    white-space: nowrap;
}

.pkp_button.submit_manuscript:hover { background: var(--nbgr-navy-light); }

/* ============================================================
   HEADER — primary navigation
   ============================================================ */
.pkp_site_nav_menu {
    background: var(--nbgr-navy);
    position: sticky;
    top: 0;
    z-index: 1030;
    box-shadow: 0 3px 14px rgba(0,0,0,.16);
}

.pkp_navigation_primary_row {
    background: var(--nbgr-navy);
    position: sticky;
    top: 0;
    z-index: 40;
    box-shadow: 0 2px 14px rgba(34,54,88,.15);
}

.pkp_navigation_primary_wrapper {
    max-width: var(--nbgr-max-width);
    margin: 0 auto;
    padding: 0 var(--nbgr-gutter);
    display: flex;
    align-items: center;
    height: 50px;
}

.pkp_navigation_primary {
    display: flex;
    align-items: center;
    background: transparent;
}

.pkp_navigation_primary li {
    height: 50px;
    display: flex;
    position: relative;
}

.pkp_navigation_primary li a {
    font-size: 12.5px;
    font-weight: 600;
    letter-spacing: .03em;
    color: #cdd7e8;
    padding: 0 17px;
    height: 50px;
    display: flex;
    align-items: center;
    border-bottom: 3px solid transparent;
    transition: color .15s, border-color .15s;
}

.pkp_navigation_primary li a:hover,
.pkp_navigation_primary li.active a {
    color: #fff;
    border-bottom-color: var(--nbgr-gold);
    text-decoration: none;
}

/* Open access badge */
.nbgr-oa-badge {
    margin-left: auto;
    display: flex;
    align-items: center;
    gap: 7px;
    color: var(--nbgr-on-dark-muted);
    font-size: 11px;
    letter-spacing: .06em;
}

.nbgr-oa-dot {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--nbgr-teal);
    display: inline-block;
    flex-shrink: 0;
}

/* Mobile nav toggle (hidden by default on desktop) */
.pkp_site_nav_toggle { display: none; }

/* The old user nav wrapper inside <nav> is not used in NBGR — user nav is in the institutional strip */
.pkp_navigation_user_wrapper { display: none; }

/* ── Primary nav sub-menu dropdown ── */

/* Sub-menus hidden by default (Bootstrap dropdown pattern + plain ul) */
.pkp_navigation_primary .dropdown-menu,
.pkp_navigation_primary li ul {
    display: none;
    flex-direction: column;
    gap: 3px;                 /* breathing room between items */
    position: absolute;
    top: calc(100% + 8px);    /* gap = triangle height, tip touches parent's bottom edge */
    left: 50%;                /* centered on parent */
    transform: translateX(-50%);
    z-index: 1000;
    min-width: 210px;
    margin: 0;
    padding: 7px;
    background: #fff;
    border-radius: 8px;
    box-shadow: 0 10px 30px rgba(0,0,0,.22);
    list-style: none;
    border-top: 2px solid var(--nbgr-gold);
}

/* Transparent full-width bridge keeps hover alive across the gap */
.pkp_navigation_primary .dropdown-menu::before,
.pkp_navigation_primary li ul::before {
    content: '';
    position: absolute;
    bottom: 100%;
    left: 0;
    right: 0;
    height: 10px;
}

/* Visible triangle "bridge" centered above the menu, pointing at the parent */
.pkp_navigation_primary .dropdown-menu::after,
.pkp_navigation_primary li ul::after {
    content: '';
    position: absolute;
    bottom: 100%;
    left: 50%;
    transform: translateX(-50%);
    border: 8px solid transparent;
    border-bottom-color: var(--nbgr-gold);
}

/* Show on hover (CSS) AND when Bootstrap JS adds .show class */
.pkp_navigation_primary li:hover > .dropdown-menu,
.pkp_navigation_primary li:hover > ul,
.pkp_navigation_primary [data-toggle="dropdown"]:hover + .dropdown-menu,
.pkp_navigation_primary .dropdown-menu.show {
    display: flex;
}

/* Reset the global flex/height li+a rules so dropdown rows behave like a list */
.pkp_navigation_primary .dropdown-menu li,
.pkp_navigation_primary li ul li {
    display: block;
    width: 100%;
    height: auto;
    position: static;
}

/* Dropdown item links */
.pkp_navigation_primary .dropdown-menu a,
.pkp_navigation_primary li ul a {
    display: block;
    width: 100%;
    padding: 9px 16px;
    height: auto;             /* override the 50px masthead-link height */
    font-size: 12.5px;
    font-weight: 500;
    color: var(--nbgr-text-mid);
    border-bottom: none;
    border-radius: 6px;       /* inset rounded hover */
    transition: background .12s, color .12s;
    letter-spacing: .01em;
}

.pkp_navigation_primary .dropdown-menu a:hover,
.pkp_navigation_primary li ul a:hover {
    background: var(--nbgr-cream);
    color: var(--nbgr-navy);
    text-decoration: none;
    border-bottom: none;
}

/* Caret on items with sub-menus */
.pkp_navigation_primary [aria-haspopup]::after {
    content: "";
    display: inline-block;
    width: 0;
    height: 0;
    margin-left: 5px;
    border-top: 4px solid currentColor;
    border-right: 4px solid transparent;
    border-left: 4px solid transparent;
    vertical-align: middle;
    opacity: .7;
}

/* ============================================================
   HERO — current issue feature
   ============================================================ */
.homepage_hero {
    position: relative;
    background: linear-gradient(135deg, var(--nbgr-navy) 0%, var(--nbgr-navy-mid) 55%, var(--nbgr-forest) 125%);
    color: #fff;
    overflow: hidden;
}

.homepage_hero__dot-grid {
    position: absolute;
    inset: 0;
    background-image: radial-gradient(rgba(195,162,78,.12) 1px, transparent 1.5px);
    background-size: 26px 26px;
    opacity: .6;
    pointer-events: none;
}

.homepage_hero__ring1,
.homepage_hero__ring2 {
    position: absolute;
    border-radius: 50%;
    pointer-events: none;
}

.homepage_hero__ring1 {
    top: -80px; right: -60px;
    width: 520px; height: 520px;
    border: 1px solid rgba(255,255,255,.063);
}

.homepage_hero__ring2 {
    top: 30px; right: 120px;
    width: 360px; height: 360px;
    border: 1px solid rgba(195,162,78,.094);
}

.homepage_hero__inner {
    position: relative;
    max-width: var(--nbgr-max-width);
    margin: 0 auto;
    padding: 64px var(--nbgr-gutter) 70px;
    display: grid;
    grid-template-columns: 1.15fr .85fr;
    gap: 56px;
    align-items: center;
}

.homepage_hero__eyebrow {
    display: flex;
    align-items: center;
    gap: 13px;
    margin-bottom: 22px;
}

.homepage_hero__rule {
    height: 2px;
    width: 42px;
    background: var(--nbgr-gold);
    flex-shrink: 0;
}

.homepage_hero__issue-label {
    font-size: 11.5px;
    letter-spacing: .2em;
    text-transform: uppercase;
    color: var(--nbgr-gold-light);
    font-weight: 600;
}

.homepage_hero__title {
    font-family: var(--nbgr-font-serif);
    font-weight: 900;
    font-size: 46px;
    line-height: 1.13;
    letter-spacing: -.01em;
    margin: 0 0 22px;
}

.homepage_hero__description {
    font-size: 16px;
    line-height: 1.7;
    color: #c7d2e4;
    max-width: 520px;
    margin: 0 0 32px;
}

.homepage_hero__actions {
    display: flex;
    gap: 14px;
    flex-wrap: wrap;
}

.homepage_hero__cta-primary {
    background: var(--nbgr-gold);
    color: var(--nbgr-navy-dark);
    font-weight: 700;
    font-size: 14px;
    padding: 14px 26px;
    border-radius: 3px;
    letter-spacing: .02em;
    transition: background .15s;
}

.homepage_hero__cta-primary:hover { background: var(--nbgr-gold-light); }

.homepage_hero__cta-secondary {
    border: 1px solid rgba(255,255,255,.267);
    color: #fff;
    font-weight: 600;
    font-size: 14px;
    padding: 14px 24px;
    border-radius: 3px;
    letter-spacing: .02em;
    transition: background .15s;
}

.homepage_hero__cta-secondary:hover { background: rgba(255,255,255,.08); }

/* Hero cover */
.homepage_hero__cover-wrap {
    position: relative;
    justify-self: center;
}

.homepage_hero__cover-frame {
    position: absolute;
    inset: -14px;
    border: 1px solid rgba(195,162,78,.25);
    border-radius: 3px;
    pointer-events: none;
}

.homepage_hero__cover-wrap .obj_issue_cover {
    display: block;
    width: 316px;
    max-width: 100%;
    height: auto;
    border: 3px solid var(--nbgr-gold);
    box-shadow: 0 30px 70px rgba(0,0,0,.4);
    position: relative;
}

.homepage_hero__cover-date {
    position: absolute;
    bottom: -2px; right: -2px;
    background: var(--nbgr-gold);
    color: var(--nbgr-navy-dark);
    font-size: 10px;
    font-weight: 700;
    letter-spacing: .08em;
    padding: 6px 11px;
    text-transform: uppercase;
}

/* ============================================================
   CURRENT ISSUE TOC
   ============================================================ */
.obj_issue_toc {
    background: var(--nbgr-cream);
}

.nbgr-toc__inner {
    max-width: var(--nbgr-max-width);
    margin: 0 auto;
    padding: 62px var(--nbgr-gutter);
}

.nbgr-toc__header {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    margin-bottom: 34px;
    flex-wrap: wrap;
    gap: 14px;
}

.nbgr-toc__eyebrow {
    font-size: 11.5px;
    letter-spacing: .2em;
    text-transform: uppercase;
    color: var(--nbgr-gold-muted);
    font-weight: 700;
}

.obj_issue_toc .heading {
    font-family: var(--nbgr-font-serif);
    font-weight: 900;
    font-size: 30px;
    color: var(--nbgr-navy);
    margin: 12px 0 0;
}

.nbgr-toc__view-all {
    font-size: 13px;
    font-weight: 700;
    color: #3b629a;
    letter-spacing: .02em;
    transition: color .15s;
}

.nbgr-toc__view-all:hover { color: var(--nbgr-navy); }

/* Section within TOC */
.obj_issue_toc .section {
    margin-bottom: 30px;
}

.nbgr-section-header {
    display: flex;
    align-items: center;
    gap: 16px;
    margin-bottom: 16px;
}

.nbgr-section-header h3,
.nbgr-section-header h4 {
    font-family: var(--nbgr-font-serif);
    font-weight: 900;
    font-size: 17px;
    color: var(--nbgr-navy);
    margin: 0;
    letter-spacing: .01em;
    white-space: nowrap;
}

.nbgr-section-rule {
    flex: 1;
    height: 2px;
    background: linear-gradient(90deg, var(--nbgr-gold), var(--nbgr-cream-border2));
}

/* Article list grid */
.obj_issue_toc .cmp_article_list.articles {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 18px;
}

/* ============================================================
   ARTICLE SUMMARY CARD
   ============================================================ */
.obj_article_summary {
    background: #fff;
    border: 1px solid var(--nbgr-cream-border2);
    border-top: 3px solid var(--nbgr-gold);
    border-radius: 2px;
    padding: 24px;
    height: 100%;
    display: flex;
    flex-direction: column;
    transition: box-shadow .18s, transform .18s;
}

.obj_article_summary:hover {
    box-shadow: 0 18px 40px rgba(34,54,88,.12);
    transform: translateY(-3px);
}

.nbgr-article-section-label {
    font-size: 10.5px;
    letter-spacing: .16em;
    text-transform: uppercase;
    color: var(--nbgr-gold-muted);
    font-weight: 700;
    margin-bottom: 12px;
}

.obj_article_summary .title {
    margin: 0 0 12px;
}

.obj_article_summary .title a {
    font-family: var(--nbgr-font-serif);
    font-weight: 700;
    font-size: 17.5px;
    line-height: 1.36;
    color: var(--nbgr-text);
    transition: color .15s;
}

.obj_article_summary .title a:hover { color: #3b629a; }

.obj_article_summary .subtitle {
    display: block;
    font-size: 14px;
    margin-top: 4px;
}

.obj_article_summary .abstract {
    font-size: 12.5px;
    line-height: 1.6;
    color: var(--nbgr-text-muted);
    margin: 0;
}

.obj_article_summary .meta {
    margin-bottom: 16px;
}

.nbgr-article-footer {
    margin-top: auto;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding-top: 14px;
    border-top: 1px solid #eee6d4;
}

.obj_article_summary .authors {
    font-size: 12px;
    color: var(--nbgr-text-light);
    font-weight: 600;
}

.obj_article_summary .pages { display: none; }

.obj_article_summary .galleys_links {
    display: flex;
    gap: 6px;
    flex-shrink: 0;
}

.obj_galley_link {
    font-size: 10.5px;
    font-weight: 700;
    padding: 5px 9px;
    border-radius: 3px;
    transition: background .15s, border-color .15s, color .15s;
}

.obj_galley_link.pdf {
    background: var(--nbgr-navy);
    color: #fff;
}

.obj_galley_link.pdf:hover { background: var(--nbgr-navy-light); }

.obj_galley_link.html,
.obj_galley_link:not(.pdf) {
    border: 1px solid #cdc6b3;
    color: var(--nbgr-text-muted);
    background: transparent;
}

.obj_galley_link.html:hover,
.obj_galley_link:not(.pdf):hover {
    border-color: var(--nbgr-navy);
    color: var(--nbgr-navy);
}

/* ============================================================
   EDITORIAL / ABOUT SECTION
   ============================================================ */
.homepage_about {
    background: #fff;
}

.nbgr-about__inner {
    max-width: var(--nbgr-max-width);
    margin: 0 auto;
    padding: 64px var(--nbgr-gutter);
    display: grid;
    grid-template-columns: 1.4fr 1fr;
    gap: 54px;
}

.nbgr-about__eyebrow {
    font-size: 11.5px;
    letter-spacing: .2em;
    text-transform: uppercase;
    color: var(--nbgr-gold-muted);
    font-weight: 700;
    margin-bottom: 14px;
}

.nbgr-editor-block {
    display: flex;
    gap: 22px;
    align-items: flex-start;
}

.nbgr-editor-avatar {
    flex-shrink: 0;
    width: 78px;
    height: 78px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--nbgr-navy), #3b629a);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--nbgr-gold-light);
    font-family: var(--nbgr-font-serif);
    font-weight: 900;
    font-size: 26px;
    border: 2px solid var(--nbgr-gold);
}

.nbgr-editorial-title {
    font-family: var(--nbgr-font-serif);
    font-weight: 900;
    font-size: 25px;
    color: var(--nbgr-navy);
    line-height: 1.3;
    margin: 0 0 14px;
}

.nbgr-editorial-body {
    font-size: 15px;
    line-height: 1.75;
    color: var(--nbgr-text-mid);
    margin: 0 0 14px;
}

.nbgr-editorial-byline {
    font-size: 13px;
    color: var(--nbgr-text-light);
}

.nbgr-editorial-byline strong {
    font-weight: 700;
    color: var(--nbgr-navy);
}

.nbgr-editorial-link {
    display: inline-block;
    margin-top: 18px;
    font-size: 13px;
    font-weight: 700;
    color: #3b629a;
    transition: color .15s;
}

.nbgr-editorial-link:hover { color: var(--nbgr-navy); }

/* Why NBGR sidebar */
.nbgr-why {
    background: var(--nbgr-cream);
    border-left: 3px solid var(--nbgr-gold);
    padding: 30px 30px 28px;
}

.nbgr-why__title {
    font-family: var(--nbgr-font-serif);
    font-weight: 900;
    font-size: 19px;
    color: var(--nbgr-navy);
    margin: 0 0 18px;
}

.nbgr-why__item {
    display: flex;
    gap: 13px;
    padding: 13px 0;
    border-top: 1px solid var(--nbgr-cream-border2);
}

.nbgr-why__number {
    color: var(--nbgr-gold);
    font-weight: 900;
    font-family: var(--nbgr-font-serif);
    flex-shrink: 0;
}

.nbgr-why__head {
    font-weight: 700;
    font-size: 13.5px;
    color: var(--nbgr-navy);
    margin-bottom: 3px;
}

.nbgr-why__text {
    font-size: 12.5px;
    line-height: 1.55;
    color: var(--nbgr-text-muted);
}

/* ============================================================
   SEARCH + ARCHIVE SECTION
   ============================================================ */
.issues_archive {
    background: linear-gradient(135deg, var(--nbgr-navy) 0%, var(--nbgr-navy-mid) 60%, var(--nbgr-forest) 135%);
    color: #fff;
    position: relative;
    overflow: hidden;
}

.issues_archive__dot-grid {
    position: absolute;
    inset: 0;
    background-image: radial-gradient(rgba(195,162,78,.11) 1px, transparent 1.5px);
    background-size: 26px 26px;
    opacity: .55;
    pointer-events: none;
}

.issues_archive__inner {
    position: relative;
    max-width: var(--nbgr-max-width);
    margin: 0 auto;
    padding: 60px var(--nbgr-gutter) 64px;
}

.issues_archive__head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 20px;
    margin-bottom: 30px;
}

.issues_archive__headline-area { max-width: 560px; }

.issues_archive__eyebrow {
    display: flex;
    align-items: center;
    gap: 13px;
    margin-bottom: 16px;
}

.issues_archive__rule {
    height: 2px;
    width: 42px;
    background: var(--nbgr-gold);
    flex-shrink: 0;
}

.issues_archive__eyebrow-label {
    font-size: 11.5px;
    letter-spacing: .2em;
    text-transform: uppercase;
    color: var(--nbgr-gold-light);
    font-weight: 600;
}

.issues_archive__headline {
    font-family: var(--nbgr-font-serif);
    font-weight: 900;
    font-size: 32px;
    line-height: 1.15;
    margin: 0 0 14px;
}

.issues_archive__lead {
    font-size: 15px;
    line-height: 1.7;
    color: var(--nbgr-on-dark-mid);
    margin: 0;
}

/* Search form in archive */
.issues_archive .cmp_search {
    flex-shrink: 0;
    width: 420px;
    max-width: 100%;
    background: #fff;
    border-radius: 6px;
    display: flex;
    align-items: center;
    padding: 7px 7px 7px 16px;
    box-shadow: 0 20px 50px rgba(11,22,43,.33);
}

.issues_archive .cmp_search .search_icon {
    color: #9aabc6;
    font-size: 16px;
    flex-shrink: 0;
}

.issues_archive .cmp_search .search_input {
    border: none;
    outline: none;
    flex: 1;
    font-size: 13.5px;
    color: #2a3550;
    padding: 10px 12px;
    background: transparent;
    font-family: inherit;
}

.issues_archive .cmp_search .search_button {
    background: var(--nbgr-navy);
    color: #fff;
    font-weight: 700;
    font-size: 13px;
    padding: 11px 20px;
    border-radius: 4px;
    border: none;
    cursor: pointer;
    font-family: inherit;
    transition: background .15s;
    white-space: nowrap;
}

.issues_archive .cmp_search .search_button:hover {
    background: var(--nbgr-navy-light);
}

/* Keyword chips */
.nbgr-keyword-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin: 0 0 34px;
}

.nbgr-keyword-chip {
    display: inline-block;
    font-size: 12px;
    font-weight: 600;
    background: rgba(255,255,255,.071);
    border: 1px solid rgba(255,255,255,.18);
    color: #dbe6f2;
    padding: 7px 14px;
    border-radius: 20px;
    transition: background .15s;
}

.nbgr-keyword-chip:hover { background: rgba(255,255,255,.141); }

/* Volume heading */
.nbgr-volume-header {
    display: flex;
    align-items: center;
    gap: 16px;
    margin-bottom: 22px;
}

.nbgr-volume-title {
    font-family: var(--nbgr-font-serif);
    font-weight: 900;
    font-size: 19px;
    color: #fff;
    margin: 0;
    white-space: nowrap;
}

.nbgr-volume-title span {
    color: var(--nbgr-on-dark-muted);
    font-weight: 400;
}

.nbgr-volume-rule { flex: 1; height: 1px; background: rgba(255,255,255,.133); }

.nbgr-volume-all {
    font-size: 12.5px;
    font-weight: 700;
    color: var(--nbgr-gold-light);
    transition: color .15s;
    white-space: nowrap;
}

.nbgr-volume-all:hover { color: #fff; }

/* Issues list grid */
.issues_list {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 24px;
}

/* ============================================================
   ISSUE SUMMARY CARD (archive grid)
   ============================================================ */
.obj_issue_summary {
    display: flex;
    flex-direction: column;
    background: var(--nbgr-navy-card);
    border: 1px solid var(--nbgr-navy-border);
    border-radius: 3px;
    overflow: hidden;
    height: 100%;
    transition: box-shadow .18s, transform .18s, border-color .18s;
    text-decoration: none;
    color: inherit;
}

.obj_issue_summary:hover {
    box-shadow: 0 18px 44px rgba(0,0,0,.33);
    transform: translateY(-3px);
    border-color: rgba(195,162,78,.4);
}

.obj_issue_summary .cover {
    position: relative;
    height: 248px;
    overflow: hidden;
}

.obj_issue_summary .cover img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: top;
}

/* Placeholder cover for issues without image */
.nbgr-issue-placeholder {
    height: 100%;
    position: relative;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    padding: 22px 20px;
    color: #fff;
}

.nbgr-issue-placeholder__dot-bg {
    position: absolute;
    inset: 0;
    background-image: radial-gradient(rgba(195,162,78,.11) 1px, transparent 1.4px);
    background-size: 20px 20px;
    opacity: .6;
    pointer-events: none;
}

.nbgr-issue-placeholder__mark {
    position: relative;
    height: 34px;
    width: auto;
    filter: brightness(0) invert(1);
    opacity: .85;
}

.nbgr-issue-placeholder__bottom { position: relative; }

.nbgr-issue-placeholder__vol {
    font-size: 10.5px;
    letter-spacing: .18em;
    text-transform: uppercase;
    color: var(--nbgr-gold-light);
    font-weight: 600;
    margin-bottom: 9px;
}

.nbgr-issue-placeholder__theme {
    font-family: var(--nbgr-font-serif);
    font-weight: 700;
    font-size: 18px;
    line-height: 1.3;
}

/* Issue status badge */
.nbgr-issue-badge {
    position: absolute;
    top: 12px; right: 12px;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: .06em;
    text-transform: uppercase;
    padding: 5px 10px;
    border-radius: 2px;
}

.nbgr-issue-badge--current {
    background: var(--nbgr-gold);
    color: var(--nbgr-navy-dark);
}

.nbgr-issue-badge--published {
    background: rgba(255,255,255,.9);
    color: var(--nbgr-navy);
}

/* Issue card body */
.obj_issue_summary .series {
    padding: 18px 20px 20px;
    flex: 1;
    display: flex;
    flex-direction: column;
}

.obj_issue_summary .published {
    font-size: 11px;
    letter-spacing: .04em;
    color: var(--nbgr-text-faint);
    font-weight: 700;
    margin-bottom: 7px;
}

.obj_issue_summary .title {
    font-size: 14px;
    font-weight: 600;
    line-height: 1.4;
    color: #e7ecf4;
    margin-bottom: 14px;
    flex: 1;
}

.nbgr-issue-footer {
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: 12px;
    color: var(--nbgr-text-faint);
    margin-top: auto;
}

.nbgr-issue-browse {
    color: var(--nbgr-gold-light);
    font-weight: 700;
}

/* ============================================================
   ANNOUNCEMENTS + SUBMIT BAND
   ============================================================ */
.pkp_announcements {
    background: var(--nbgr-navy);
    color: #fff;
}

.nbgr-announcements__inner {
    max-width: var(--nbgr-max-width);
    margin: 0 auto;
    padding: 54px var(--nbgr-gutter);
    display: grid;
    grid-template-columns: 1.3fr 1fr;
    gap: 54px;
    align-items: center;
}

.nbgr-announcements__eyebrow {
    font-size: 11.5px;
    letter-spacing: .2em;
    text-transform: uppercase;
    color: var(--nbgr-gold-light);
    font-weight: 700;
    margin-bottom: 20px;
}

.nbgr-announcements__list { margin: 0; }

.obj_announcement_summary {
    display: flex;
    gap: 18px;
    padding: 15px 0;
    border-top: 1px solid rgba(255,255,255,.122);
    align-items: baseline;
}

.obj_announcement_summary .date {
    flex-shrink: 0;
    font-size: 11px;
    color: var(--nbgr-text-faint);
    width: 96px;
    letter-spacing: .03em;
}

.obj_announcement_summary .title a,
.obj_announcement_summary .title {
    font-size: 14px;
    color: #e7ecf4;
    line-height: 1.45;
}

.obj_announcement_summary .title a:hover { color: var(--nbgr-gold-light); }

/* Submit sidebar */
.nbgr-submit-aside {
    background: linear-gradient(150deg, var(--nbgr-navy-mid), var(--nbgr-forest));
    border: 1px solid rgba(195,162,78,.25);
    border-radius: 4px;
    padding: 34px 32px;
    text-align: center;
}

.nbgr-submit-aside__title {
    font-family: var(--nbgr-font-serif);
    font-weight: 900;
    font-size: 23px;
    margin: 0 0 10px;
}

.nbgr-submit-aside__lead {
    font-size: 13.5px;
    color: var(--nbgr-on-dark-mid);
    line-height: 1.6;
    margin: 0 0 22px;
}

.nbgr-submit-aside__cta {
    display: block;
    background: var(--nbgr-gold);
    color: var(--nbgr-navy-dark);
    font-weight: 700;
    font-size: 14px;
    padding: 14px;
    border-radius: 3px;
    letter-spacing: .02em;
    transition: background .15s;
}

.nbgr-submit-aside__cta:hover { background: var(--nbgr-gold-light); }

/* ============================================================
   INDEXING BAR
   ============================================================ */
.nbgr-indexing {
    background: var(--nbgr-cream);
    border-top: 1px solid var(--nbgr-cream-border2);
}

.nbgr-indexing__inner {
    max-width: var(--nbgr-max-width);
    margin: 0 auto;
    padding: 34px var(--nbgr-gutter);
    display: flex;
    align-items: center;
    gap: 26px;
    flex-wrap: wrap;
}

.nbgr-indexing__label {
    font-size: 11px;
    letter-spacing: .16em;
    text-transform: uppercase;
    color: #8a7c5a;
    font-weight: 700;
    white-space: nowrap;
}

.nbgr-indexing__badges {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
}

.nbgr-indexing__badge {
    font-size: 12px;
    font-weight: 600;
    color: var(--nbgr-text-muted);
    background: #fff;
    border: 1px solid var(--nbgr-cream-border);
    padding: 8px 14px;
    border-radius: 3px;
}

/* ============================================================
   FOOTER
   ============================================================ */
.pkp_structure_footer_wrapper {
    background: var(--nbgr-navy-dark);
    color: #aebbd1;
    border-top: 2px solid var(--nbgr-gold);
}

.pkp_structure_footer {
    max-width: var(--nbgr-max-width);
    margin: 0 auto;
    padding: 54px var(--nbgr-gutter) 30px;
}

.nbgr-footer__grid {
    display: grid;
    grid-template-columns: 1.5fr 1fr 1fr 1fr;
    gap: 40px;
}

/* Footer brand column */
.pkp_footer_content { }

.nbgr-footer__brand {
    display: flex;
    align-items: center;
    gap: 13px;
    margin-bottom: 18px;
}

.nbgr-footer__mark {
    height: 42px;
    filter: brightness(0) invert(1);
    opacity: .9;
}

.nbgr-footer__brand-name {
    font-weight: 800;
    color: #fff;
    font-size: 17px;
}

.nbgr-footer__brand-sub {
    font-size: 10px;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: #7d8eaa;
    margin-top: 3px;
}

.nbgr-footer__desc {
    font-size: 12.5px;
    line-height: 1.7;
    color: #8fa0bb;
    margin: 0 0 16px;
    max-width: 300px;
}

.nbgr-footer__meta {
    font-size: 11.5px;
    color: #7d8eaa;
    line-height: 1.8;
}

/* Footer nav columns */
.nbgr-footer__nav-heading {
    font-size: 11px;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--nbgr-gold-light);
    font-weight: 700;
    margin-bottom: 16px;
}

.nbgr-footer__nav-list li a {
    display: block;
    font-size: 12.5px;
    color: var(--nbgr-on-dark-muted);
    padding: 6px 0;
    transition: color .15s;
}

.nbgr-footer__nav-list li a:hover { color: #fff; }

/* Brand/copyright strip */
.pkp_brand_footer {
    margin-top: 40px;
    padding-top: 22px;
    border-top: 1px solid #26384f;
    display: flex;
    align-items: center;
    gap: 18px;
    flex-wrap: wrap;
    font-size: 11.5px;
    color: #7d8eaa;
}

.pkp_brand_footer a {
    color: #7d8eaa;
    transition: color .15s;
}

.pkp_brand_footer a:hover { color: #aebbd1; }

.pkp_brand_footer img {
    height: 20px;
    width: auto;
    opacity: .6;
    filter: brightness(0) invert(1);
}

.nbgr-footer__wcag {
    display: inline-flex;
    align-items: center;
    gap: 7px;
}

.nbgr-footer__wcag-dot {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--nbgr-teal);
    flex-shrink: 0;
}

.nbgr-footer__legal {
    margin-left: auto;
}

/* ============================================================
   PAGE — login / auth (userLogin.tpl)
   Split layout: navy brand panel + cream form card.
   ============================================================ */
.nbgr-auth {
    background:
        radial-gradient(circle at 18% 20%, rgba(195,162,78,.06), transparent 42%),
        var(--nbgr-cream);
    padding: 56px var(--nbgr-gutter) 80px;
}

.nbgr-auth__inner {
    max-width: 960px;
    margin: 0 auto;
    display: grid;
    grid-template-columns: 0.85fr 1fr;
    background: #fff;
    border: 1px solid var(--nbgr-cream-border);
    border-top: 3px solid var(--nbgr-gold);
    border-radius: 10px;
    overflow: hidden;
    box-shadow: 0 18px 50px rgba(21,36,58,.12);
}

/* --- Brand panel --- */
.nbgr-auth__brand {
    position: relative;
    background:
        radial-gradient(circle at 80% 12%, rgba(195,162,78,.18), transparent 55%),
        linear-gradient(160deg, var(--nbgr-navy) 0%, var(--nbgr-navy-dark) 100%);
    padding: 48px 38px;
    display: flex;
    align-items: center;
}

.nbgr-auth__brand::after {
    content: "";
    position: absolute;
    inset: 0;
    background-image:
        radial-gradient(rgba(255,255,255,.05) 1px, transparent 1px);
    background-size: 18px 18px;
    opacity: .5;
    pointer-events: none;
}

.nbgr-auth__brand-inner {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
}

.nbgr-auth__brand-acronym {
    font-family: var(--nbgr-font-serif);
    font-size: 52px;
    font-weight: 700;
    line-height: 1;
    color: var(--nbgr-gold);
    letter-spacing: .02em;
}

.nbgr-auth__brand-rule {
    width: 44px;
    height: 3px;
    background: var(--nbgr-gold);
    margin: 18px 0;
    border-radius: 2px;
}

.nbgr-auth__brand-name {
    font-family: var(--nbgr-font-serif);
    font-size: 19px;
    font-weight: 700;
    line-height: 1.35;
    color: var(--nbgr-on-dark);
}

.nbgr-auth__brand-tagline {
    margin-top: 14px;
    font-size: 11.5px;
    font-weight: 600;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: var(--nbgr-on-dark-muted);
    line-height: 1.5;
}

/* --- Form card --- */
.nbgr-auth__main {
    padding: 44px 46px 48px;
}

.nbgr-auth .cmp_breadcrumbs {
    margin-bottom: 18px;
    font-size: 12px;
}
.nbgr-auth .cmp_breadcrumbs ol {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px;
}
.nbgr-auth .cmp_breadcrumbs a { color: var(--nbgr-navy-light); }
.nbgr-auth .cmp_breadcrumbs a:hover { color: var(--nbgr-gold-muted); }
.nbgr-auth .cmp_breadcrumbs .separator { color: var(--nbgr-text-light); }
.nbgr-auth .cmp_breadcrumbs .current span { color: var(--nbgr-text-mid); }

.nbgr-auth__title {
    font-family: var(--nbgr-font-serif);
    font-size: 30px;
    font-weight: 700;
    color: var(--nbgr-navy);
    margin: 0 0 6px;
    line-height: 1.15;
}

.nbgr-auth__required-note {
    font-size: 12.5px;
    color: var(--nbgr-text-light);
    margin: 0 0 24px;
}

.nbgr-auth__intro {
    font-size: 14px;
    line-height: 1.6;
    color: var(--nbgr-text-mid);
    margin: 0 0 24px;
    max-width: 42ch;
}

.nbgr-auth__message {
    background: var(--nbgr-cream-mid);
    border-left: 3px solid var(--nbgr-gold);
    padding: 12px 14px;
    border-radius: 4px;
    font-size: 13.5px;
    color: var(--nbgr-text-mid);
    margin: 0 0 22px;
}

/* Error block (OJS .pkp_form_error) */
.nbgr-auth .pkp_form_error {
    background: #fbeded;
    border-left: 3px solid #c0392b;
    color: #8e2a20;
    padding: 12px 14px;
    border-radius: 4px;
    font-size: 13.5px;
    margin: 0 0 20px;
}

/* Fields */
.nbgr-auth .cmp_form .fields {
    border: none;
    margin: 0;
    padding: 0;
}

.nbgr-auth .username,
.nbgr-auth .password,
.nbgr-auth .email {
    margin-bottom: 18px;
}

.nbgr-auth .cmp_form label {
    display: block;
}

.nbgr-auth .cmp_form .label {
    display: block;
    font-size: 13px;
    font-weight: 600;
    color: var(--nbgr-text);
    margin-bottom: 7px;
    letter-spacing: .01em;
}

.nbgr-auth .cmp_form .required {
    color: var(--nbgr-gold-muted);
    margin-left: 2px;
}

.nbgr-auth .cmp_form input[type="text"],
.nbgr-auth .cmp_form input[type="email"],
.nbgr-auth .cmp_form input[type="password"],
.nbgr-auth .cmp_form select {
    width: 100%;
    box-sizing: border-box;
    padding: 11px 13px;
    font-size: 14px;
    font-family: var(--nbgr-font-sans);
    color: var(--nbgr-text);
    background: var(--nbgr-cream);
    border: 1px solid var(--nbgr-cream-border);
    border-radius: 6px;
    transition: border-color .15s, box-shadow .15s, background .15s;
}

.nbgr-auth .cmp_form select {
    height: 42px;
    cursor: pointer;
}

.nbgr-auth .cmp_form input[type="text"]:focus,
.nbgr-auth .cmp_form input[type="email"]:focus,
.nbgr-auth .cmp_form input[type="password"]:focus,
.nbgr-auth .cmp_form select:focus {
    outline: none;
    background: #fff;
    border-color: var(--nbgr-gold);
    box-shadow: 0 0 0 3px rgba(195,162,78,.18);
}

.nbgr-auth__forgot {
    display: inline-block;
    margin-top: 8px;
    font-size: 12.5px;
    color: var(--nbgr-navy-light);
}
.nbgr-auth__forgot:hover { color: var(--nbgr-gold-muted); }

/* Remember-me checkbox */
.nbgr-auth .remember.checkbox label {
    display: flex;
    align-items: center;
    gap: 9px;
    cursor: pointer;
}
.nbgr-auth .remember.checkbox .label {
    margin: 0;
    font-weight: 500;
    font-size: 13px;
    color: var(--nbgr-text-mid);
}
.nbgr-auth .remember.checkbox input[type="checkbox"] {
    width: 16px;
    height: 16px;
    accent-color: var(--nbgr-navy);
    flex-shrink: 0;
}

.nbgr-auth .recaptcha_wrapper,
.nbgr-auth .altcha_wrapper {
    border: none;
    padding: 0;
    margin: 0 0 20px;
}

/* Buttons / actions */
.nbgr-auth .buttons {
    display: flex;
    align-items: center;
    gap: 18px;
    flex-wrap: wrap;
    margin-top: 26px;
}

.nbgr-auth .buttons .submit {
    background: var(--nbgr-navy);
    color: #fff;
    font-family: var(--nbgr-font-sans);
    font-size: 14px;
    font-weight: 700;
    letter-spacing: .02em;
    padding: 12px 30px;
    border: none;
    border-radius: 6px;
    cursor: pointer;
    transition: background .15s, transform .05s;
}
.nbgr-auth .buttons .submit:hover { background: var(--nbgr-navy-light); }
.nbgr-auth .buttons .submit:active { transform: translateY(1px); }

.nbgr-auth .buttons .register,
.nbgr-auth .buttons .login {
    font-size: 13px;
    font-weight: 600;
    color: var(--nbgr-navy-light);
}
.nbgr-auth .buttons .register:hover,
.nbgr-auth .buttons .login:hover { color: var(--nbgr-gold-muted); }

/* ------------------------------------------------------------
   Register variant — full-width card + navy top-band + 2-col grid
   ------------------------------------------------------------ */
.nbgr-auth--register .nbgr-auth__inner {
    grid-template-columns: 1fr;
    max-width: 760px;
}

.nbgr-auth__topband {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 22px 46px;
    background:
        radial-gradient(circle at 92% 0%, rgba(195,162,78,.16), transparent 60%),
        linear-gradient(160deg, var(--nbgr-navy) 0%, var(--nbgr-navy-dark) 100%);
}

.nbgr-auth__topband-acronym {
    font-family: var(--nbgr-font-serif);
    font-size: 30px;
    font-weight: 700;
    line-height: 1;
    color: var(--nbgr-gold);
    letter-spacing: .02em;
    flex-shrink: 0;
}

.nbgr-auth__topband-rule {
    width: 1px;
    align-self: stretch;
    background: rgba(255,255,255,.18);
    flex-shrink: 0;
}

.nbgr-auth__topband-name {
    font-family: var(--nbgr-font-serif);
    font-size: 14.5px;
    font-weight: 700;
    line-height: 1.35;
    color: var(--nbgr-on-dark);
}

/* fieldset section headings (legends): user.profile / user.login etc. */
.nbgr-auth--register .cmp_form fieldset {
    border: none;
    margin: 0 0 26px;
    padding: 0;
}

.nbgr-auth--register .cmp_form fieldset > legend:not(.pkp_screen_reader) {
    display: block;
    width: 100%;
    font-family: var(--nbgr-font-sans);
    font-size: 12.5px;
    font-weight: 700;
    letter-spacing: .06em;
    text-transform: uppercase;
    color: var(--nbgr-navy);
    padding: 0 0 9px;
    margin-bottom: 18px;
    border-bottom: 1px solid var(--nbgr-cream-border);
}

/* Two-column field grid for the main identity + login fieldsets */
.nbgr-auth--register fieldset.identity > .fields,
.nbgr-auth--register fieldset.login > .fields {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px 18px;
    border: none;
    padding: 0;
}

.nbgr-auth--register fieldset.identity > .fields > div,
.nbgr-auth--register fieldset.login > .fields > div {
    margin: 0;
}

/* Items that should span the full row */
.nbgr-auth--register .identity .affiliation,
.nbgr-auth--register .identity .country {
    grid-column: 1 / -1;
}

/* Consent / reviewer opt-in checkboxes — no background, just spacing */
.nbgr-auth--register .cmp_form fieldset.consent,
.nbgr-auth--register .cmp_form fieldset.reviewer {
    background: none;
    border: none;
    padding: 0;
    margin: 0 0 14px;
}

.nbgr-auth--register .optin label {
    display: flex;
    align-items: flex-start;
    gap: 11px;
    font-size: 13px;
    line-height: 1.5;
    color: var(--nbgr-text-mid);
    cursor: pointer;
}

/* Space between successive opt-in rows (each wrapped in its own .fields) */
.nbgr-auth--register .consent .fields + .fields,
.nbgr-auth--register .reviewer .fields + .fields,
.nbgr-auth--register .optin label + label {
    margin-top: 14px;
}

.nbgr-auth--register .optin input[type="checkbox"],
.nbgr-auth--register .reviewer input[type="checkbox"] {
    width: 16px;
    height: 16px;
    margin-top: 1px;
    accent-color: var(--nbgr-navy);
    flex-shrink: 0;
}

.nbgr-auth--register .optin label a {
    color: var(--nbgr-navy-light);
    text-decoration: underline;
}
.nbgr-auth--register .optin label a:hover { color: var(--nbgr-gold-muted); }

.nbgr-auth--register .reviewer .optin label {
    margin-bottom: 10px;
}
.nbgr-auth--register .reviewer_interests { margin-top: 14px; }
.nbgr-auth--register .reviewer_interests .label {
    display: block;
    font-size: 13px;
    font-weight: 600;
    color: var(--nbgr-text);
    margin-bottom: 7px;
}

/* Form-level error summary (common/formErrors.tpl) */
.nbgr-auth #formErrors {
    background: #fbeded;
    border-left: 3px solid #c0392b;
    border-radius: 4px;
    padding: 12px 16px;
    margin: 0 0 22px;
}
.nbgr-auth #formErrors .pkp_form_error {
    display: block;
    font-weight: 700;
    color: #8e2a20;
    background: none;
    border: none;
    padding: 0;
    margin: 0 0 6px;
    font-size: 13.5px;
}
.nbgr-auth .pkp_form_error_list {
    margin: 0;
    padding-left: 18px;
    font-size: 13px;
}
.nbgr-auth .pkp_form_error_list a { color: #8e2a20; }

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width: 1024px) {
    .homepage_hero__inner {
        grid-template-columns: 1fr;
        text-align: center;
    }
    .homepage_hero__eyebrow { justify-content: center; }
    .homepage_hero__description { max-width: 100%; }
    .homepage_hero__actions { justify-content: center; }
    .homepage_hero__cover-wrap { justify-self: center; order: -1; }

    .nbgr-about__inner { grid-template-columns: 1fr; }
    .nbgr-footer__grid { grid-template-columns: 1fr 1fr; gap: 32px; }
    .obj_issue_toc .cmp_article_list.articles { grid-template-columns: repeat(2, 1fr); }

    .nbgr-auth__inner { grid-template-columns: 1fr; }
    .nbgr-auth__brand { padding: 36px 38px; }
    .nbgr-auth__brand-inner {
        flex-direction: row;
        align-items: center;
        flex-wrap: wrap;
        gap: 0 18px;
    }
    .nbgr-auth__brand-acronym { font-size: 40px; }
    .nbgr-auth__brand-rule { display: none; }
    .nbgr-auth__brand-tagline { width: 100%; margin-top: 10px; }
}

@media (max-width: 768px) {
    :root { --nbgr-gutter: 16px; }

    .nbgr-head-actions { display: none; }
    .pkp_site_nav_toggle { display: block; }

    .homepage_hero__title { font-size: 32px; }
    .obj_issue_toc .cmp_article_list.articles { grid-template-columns: 1fr; }
    .issues_list { grid-template-columns: 1fr; }
    .issues_archive__head { flex-direction: column; align-items: flex-start; }
    .issues_archive .cmp_search { width: 100%; }
    .nbgr-announcements__inner { grid-template-columns: 1fr; }
    .nbgr-footer__grid { grid-template-columns: 1fr; }
    .pkp_brand_footer { flex-direction: column; align-items: flex-start; }
    .nbgr-footer__legal { margin-left: 0; }

    .nbgr-auth { padding: 32px var(--nbgr-gutter) 56px; }
    .nbgr-auth__main { padding: 32px 26px 36px; }
    .nbgr-auth__title { font-size: 25px; }
    .nbgr-auth .buttons { gap: 14px; }
    .nbgr-auth .buttons .submit { width: 100%; text-align: center; }

    .nbgr-auth__topband { padding: 18px 26px; }
    .nbgr-auth--register fieldset.identity > .fields,
    .nbgr-auth--register fieldset.login > .fields {
        grid-template-columns: 1fr;
    }
}
