@charset "UTF-8";
/* IJPR shared base styles. Loaded by every page; edit here to change the whole site.
   Load order: ijpr-core.css, then the page's own small <style>, then ijpr-responsive.css. */
/* Self-hosted fonts (Latin subset). Size-matched fallbacks keep the layout still while the web fonts load. */
@font-face{font-family:'Fraunces';font-style:normal;font-weight:400 700;font-display:swap;src:url(../ijpr_fonts_2026/fraunces-latin.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Fraunces';font-style:italic;font-weight:400 700;font-display:swap;src:url(../ijpr_fonts_2026/fraunces-italic-latin.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Inter';font-style:normal;font-weight:400 700;font-display:swap;src:url(../ijpr_fonts_2026/inter-latin.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url(../ijpr_fonts_2026/ibmplexmono-400-latin.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;src:url(../ijpr_fonts_2026/ibmplexmono-500-latin.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Fraunces Fallback';src:local('Georgia');size-adjust:82%;ascent-override:118%;descent-override:31%;line-gap-override:0%}
@font-face{font-family:'Inter Fallback';src:local('Arial'),local('Helvetica');size-adjust:105%;ascent-override:92%;descent-override:23%;line-gap-override:0%}
@font-face{font-family:'IBM Plex Mono Fallback';src:local('Courier New');size-adjust:100%;ascent-override:103%;descent-override:28%;line-gap-override:0%}
:root{--paper:#F4F5F0;--paper-alt:#EAEBE2;--ink:#16211D;--ink-soft:#54655C;--ink-faint:#5A655B;--teal:#0F5E56;--teal-dark:#0A423C;--teal-pale:#DEEAE7;--rust:#A64B1B;--line:#D3D6C9;--line-strong:#B7BBAC;--serif:'Fraunces','Fraunces Fallback',Georgia,serif;--sans:'Inter','Inter Fallback',Arial,sans-serif;--mono:'IBM Plex Mono','IBM Plex Mono Fallback','Courier New',monospace}
:root[data-theme="dark"]{--paper:#15191A;--paper-alt:#1E2422;--ink:#ECEFEA;--ink-soft:#AEB7B0;--ink-faint:#88938D;--rust:#E07A45;--line:#333B37;--line-strong:#454F49}
@media (prefers-color-scheme:dark){:root:not([data-theme]){--paper:#15191A;--paper-alt:#1E2422;--ink:#ECEFEA;--ink-soft:#AEB7B0;--ink-faint:#88938D;--rust:#E07A45;--teal:#4FBBA9;--teal-dark:#61A398;--teal-pale:#14332D;--line:#333B37;--line-strong:#454F49}}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{background:var(--paper);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;line-height:1.5;transition:background .25s ease,color .25s ease}
a{color:inherit;text-decoration:none}
ul{list-style:none}
.wrap{max-width:1220px;margin:0 auto;padding:0 32px}
img,svg{max-width:100%}
.skip-link{position:absolute;left:-9999px;top:0;background:var(--teal-dark);color:#fff;padding:10px 16px;z-index:999;font-family:var(--mono);font-size:12px}
.skip-link:focus{left:12px;top:12px}
a:focus-visible,button:focus-visible{outline:2px solid var(--teal);outline-offset:2px}
.utility-bar{background:var(--ink);color:var(--paper)}
.utility-bar .wrap{display:flex;align-items:center;justify-content:space-between;height:38px;font-family:var(--mono);font-size:12px;letter-spacing:0.03em;flex-wrap:wrap;gap:8px}
.utility-bar .u-left{display:flex;gap:18px;color:var(--paper);opacity:0.85}
.utility-bar .u-left a:hover{color:var(--paper)}
.utility-bar .u-right{display:flex;gap:14px;align-items:center}
.utility-bar .u-right a{color:var(--paper);opacity:0.85}
.utility-bar .u-right a:hover{opacity:1}
.utility-bar .icons{display:flex;gap:12px}
.utility-bar .icons svg{width:13px;height:13px}
.masthead{border-bottom:1px solid var(--line-strong);background:var(--paper)}
.masthead .wrap{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding-top:30px;padding-bottom:22px;gap:16px}
.masthead .side{font-family:var(--mono);font-size:12px;color:var(--ink-soft);letter-spacing:0.03em}
.masthead .side.right{text-align:right}
.masthead .side .iss{display:block;color:var(--ink-faint);margin-top:3px}
.masthead .brand{text-align:center}
.masthead .brand .mark{font-family:var(--serif);font-weight:700;font-size:34px;letter-spacing:0.005em;line-height:1.1;color:var(--ink);white-space:nowrap}
.masthead .brand .mark span{color:var(--teal);font-style:italic;font-weight:500}
.masthead .brand .tag{margin-top:7px;font-family:var(--mono);font-size:12px;letter-spacing:0.1em;text-transform:uppercase;color:var(--ink-soft)}
.trust-row{display:flex;gap:9px;justify-content:center;margin-top:14px;flex-wrap:wrap}
.trust-pill{font-family:var(--mono);font-size:12px;letter-spacing:0.04em;border:1px solid var(--line-strong);color:var(--ink-soft);padding:3px 9px;border-radius:20px;background:var(--paper-alt)}
.trust-pill.oa{background:var(--teal-pale);border-color:var(--teal);color:var(--teal-dark);font-weight:600}
a.trust-pill:hover{border-color:var(--teal);color:var(--teal-dark)}
nav.primary{background:var(--paper);border-bottom:1px solid var(--line-strong);position:sticky;top:0;z-index:50;backdrop-filter:blur(6px)}
nav.primary .wrap{display:flex;align-items:center;justify-content:center;gap:34px;height:50px;flex-wrap:wrap}
nav.primary a{font-size:13px;font-weight:500;letter-spacing:0.02em;color:var(--ink-soft);position:relative;padding:4px 0}
nav.primary a.current{color:var(--ink)}
nav.primary a:hover{color:var(--ink)}
.nav-item{position:relative;display:flex;align-items:center}
.nav-item > a::after{content:'▾';font-size:9px;margin-left:5px;color:var(--ink-faint);position:relative;top:-1px}
.dropdown{position:absolute;top:100%;left:0;background:var(--paper);border:1px solid var(--line-strong);border-top:2px solid var(--teal);border-radius:0 0 8px 8px;min-width:250px;padding:6px 0;box-shadow:0 16px 32px rgba(0,0,0,0.14);opacity:0;visibility:hidden;transform:translateY(-4px);transition:opacity .16s ease,transform .16s ease,visibility .16s;z-index:60}
.nav-item:hover .dropdown, .nav-item:focus-within .dropdown, .nav-item.open .dropdown{opacity:1;visibility:visible;transform:translateY(0)}
.dropdown a{display:block;padding:10px 18px;font-size:12.5px;font-weight:400;color:var(--ink-soft);white-space:normal;line-height:1.4;border-left:2px solid transparent;transition:background .15s ease,color .15s ease,border-color .15s ease}
.dropdown a:hover{background:var(--paper-alt);color:var(--teal-dark);border-left-color:var(--teal)}
.breadcrumb-bar{background:var(--paper-alt);border-bottom:1px solid var(--line)}
.breadcrumb{display:flex;flex-wrap:wrap;align-items:center;gap:8px;height:42px;font-family:var(--mono);font-size:12px;color:var(--ink-faint)}
.breadcrumb li{display:flex;align-items:center;gap:8px}
.breadcrumb li:not(:last-child)::after{content:'/';color:var(--line-strong)}
.breadcrumb a{color:var(--ink-soft)}
.breadcrumb a:hover{color:var(--teal-dark);text-decoration:underline}
.breadcrumb li[aria-current="page"]{color:var(--ink)}
.page-hero{padding:44px 0 40px;border-bottom:1px solid var(--line-strong)}
.eyebrow{font-family:var(--mono);font-size:12px;letter-spacing:0.1em;text-transform:uppercase;color:var(--rust);display:flex;align-items:center;gap:10px;margin-bottom:14px}
.eyebrow::before{content:'';width:16px;height:1px;background:var(--rust)}
.page-hero .lede{font-size:15px;color:var(--ink-soft);line-height:1.6;max-width:64ch}
.page-layout{display:grid;grid-template-columns:1fr 300px;gap:56px;padding:48px 0 64px;align-items:start}
.page-side{display:flex;flex-direction:column;gap:34px;min-width:0}
