/* =========================================================
   JPSB — global styles (header, footer, search, shared tokens)
   Page-specific styles live in assets/css/pages/*.css
   ========================================================= */
:root{
  --ink:#0A1622; --ink2:#0F2036; --ink3:#0C1A2C;
  --brass:#B08D46; --brass-light:#E8CD8F; --brass-deep:#8A6526;
  --parchment:#F7F1E2; --parchment2:#EFE6CE; --card:#FBF7EC;
  --coral:#A8402A; --coral-tint:#EFDACF;
  --teal:#1B6459; --teal-tint:#DCEAE3;
  --plum:#5A3B63; --plum-tint:#E7DCE8;
  --muted:#6B6252; --muted-dark:#C3CBDB; --line:#DCD1AF;
}
*,*::before,*::after{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{margin:0;background:var(--parchment);color:var(--ink);font-family:"Inter",sans-serif;-webkit-font-smoothing:antialiased;}
img{max-width:100%;}
.skip-link{position:absolute;left:-9999px;top:0;z-index:999;background:var(--brass-light);color:var(--ink);padding:10px 16px;font-weight:600;}
.skip-link:focus{left:12px;top:12px;}
[id]{scroll-margin-top:20px;}

/* shared search form (modal + search page) */
.sform .q-wrap{position:relative;}
.sform .q-wrap svg{position:absolute;left:18px;top:50%;transform:translateY(-50%);width:18px;height:18px;color:var(--muted);pointer-events:none;}
.sform input[type=search], .sform input[type=text], .sform select{
  font-family:"Inter",sans-serif;font-size:16px;color:var(--ink);background:#fff;
  border:1px solid var(--line);border-radius:0;padding:12px 14px;width:100%;
  outline:none;transition:border-color .15s, box-shadow .15s;
}
.sform input[type=search]{padding:18px 18px 18px 50px;font-size:18px;}
.sform input:focus, .sform select:focus{border-color:var(--teal);box-shadow:0 0 0 3px rgba(27,100,89,.14);}
.sform select{appearance:none;-webkit-appearance:none;padding-right:34px;cursor:pointer;
  background:#fff url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%230A1622' stroke-width='3'><path d='M6 9l6 6 6-6'/></svg>") no-repeat right 12px center;}
.sform details{margin-top:24px;}
.sform summary{list-style:none;cursor:pointer;font-weight:600;font-size:16.5px;color:var(--teal);display:inline-flex;align-items:center;gap:8px;user-select:none;}
.sform summary::-webkit-details-marker{display:none;}
.sform summary::before{content:"";border:6px solid transparent;border-left:8px solid var(--teal);border-right:0;transition:transform .15s;}
.sform details[open] summary::before{transform:rotate(90deg);}
.sform .filters{margin-top:18px;padding:22px 24px;background:#F3EAD3;border:1px solid var(--line);display:grid;grid-template-columns:1fr 1fr;gap:22px 26px;}
.sform .fgroup label, .sform .fgroup .flabel{display:block;font-weight:700;font-size:15.5px;color:var(--ink);margin-bottom:10px;}
.sform .date-row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;}
.sform .date-row select{font-size:15.5px;padding:11px 30px 11px 12px;}
.sform .actions{display:flex;justify-content:flex-end;gap:12px;margin-top:26px;align-items:center;}
.sform .btn-primary{
  display:inline-flex;align-items:center;gap:10px;cursor:pointer;
  background:var(--ink2);color:#fff;border:0;padding:16px 28px;font-family:"Inter",sans-serif;font-weight:700;font-size:17px;
  transition:background .15s;
}
.sform .btn-primary:hover{background:var(--teal);}
.sform .btn-primary svg{width:16px;height:16px;}
.sform .btn-reset{font-size:14px;color:var(--muted);text-decoration:underline;text-underline-offset:3px;}
@media (max-width:640px){
  .sform .filters{grid-template-columns:1fr;padding:18px 16px;}
  .sform input[type=search]{font-size:16px;}
}

/* ---------------- search results page ---------------- */
.jpsb-search .crumb-bar{border-bottom:1px solid var(--line);background:var(--parchment2);}
.jpsb-search .crumb-inner{max-width:1400px;margin:0 auto;padding:14px 28px;font-family:"IBM Plex Mono",monospace;font-size:11.5px;letter-spacing:.04em;color:var(--muted);display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.jpsb-search a{text-decoration:none;}
.jpsb-search .crumb-inner a{color:var(--teal);}
.jpsb-search .crumb-sep{opacity:.5;}
.jpsb-search .page-head{position:relative;overflow:hidden;padding:56px 28px 40px;background:radial-gradient(700px 340px at 90% 0%,rgba(176,141,70,.14),transparent 60%),linear-gradient(160deg,var(--ink) 0%,var(--ink2) 60%,#08131F 100%);}
.jpsb-search .page-head-inner{max-width:1400px;margin:0 auto;}
.jpsb-search .eyebrow{display:inline-flex;align-items:center;gap:10px;font-family:"IBM Plex Mono",monospace;font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--brass-light);margin:0 0 16px;}
.jpsb-search .eyebrow::before{content:"";width:26px;height:1px;background:var(--brass-light);}
.jpsb-search .page-head h1{font-family:"Fraunces",serif;font-weight:560;font-style:italic;font-size:clamp(32px,4.4vw,50px);line-height:1.05;color:#F4F1E4;margin:0;}
.jpsb-search .page-head .sub{margin-top:14px;max-width:600px;color:var(--muted-dark);font-size:14.5px;line-height:1.6;}
.jpsb-search .wrap{max-width:1400px;margin:0 auto;padding:44px 28px 70px;}
.jpsb-search .search-panel{background:var(--card);border:1px solid var(--line);padding:26px 28px;margin-bottom:36px;}
.jpsb-search .result-meta{font-family:"IBM Plex Mono",monospace;font-size:12px;color:var(--muted);letter-spacing:.04em;margin:0 0 6px;padding-bottom:12px;border-bottom:1px solid var(--line);}
.jpsb-search .result-meta b{color:var(--ink);}
.jpsb-search .result{padding:20px 0;border-bottom:1px solid var(--line);display:grid;grid-template-columns:1fr auto;gap:8px 20px;}
.jpsb-search .result .title{font-weight:700;font-size:16px;line-height:1.4;}
.jpsb-search .result .title a{color:var(--teal);}
.jpsb-search .result .title a:hover{text-decoration:underline;}
.jpsb-search .result .authors{font-size:13.5px;color:var(--muted);line-height:1.55;grid-column:1;}
.jpsb-search .result .where{font-family:"IBM Plex Mono",monospace;font-size:11.5px;color:var(--brass-deep);grid-column:1;}
.jpsb-search .result .where a{color:var(--brass-deep);text-decoration:underline;text-underline-offset:2px;}
.jpsb-search .result .side{grid-column:2;grid-row:1 / span 3;display:flex;flex-direction:column;align-items:flex-end;gap:10px;}
.jpsb-search .badge{font-family:"IBM Plex Mono",monospace;font-size:10px;text-transform:uppercase;letter-spacing:.08em;padding:3px 8px;}
.jpsb-search .badge.editorial{background:var(--coral-tint);color:var(--coral);}
.jpsb-search .badge.review{background:#F1E6C9;color:var(--brass-deep);}
.jpsb-search .badge.original{background:var(--teal-tint);color:var(--teal);}
.jpsb-search .badge.case{background:var(--plum-tint);color:var(--plum);}
.jpsb-search .pdf-btn{display:inline-flex;align-items:center;gap:6px;font-family:"IBM Plex Mono",monospace;font-size:11px;color:var(--teal);border:1px solid var(--teal);padding:5px 12px;transition:.15s;}
.jpsb-search .pdf-btn:hover{background:var(--teal);color:#F4F1E4;}
.jpsb-search .pdf-btn svg{width:12px;height:12px;}
.jpsb-search mark{background:rgba(232,205,143,.6);color:inherit;padding:0 1px;}
.jpsb-search .empty{padding:40px 0;text-align:center;color:var(--muted);font-size:15px;line-height:1.7;}
.jpsb-search .empty b{display:block;font-family:"Fraunces",serif;font-style:italic;font-weight:560;font-size:22px;color:var(--ink);margin-bottom:6px;}
@media (max-width:640px){
  .jpsb-search .crumb-inner,.jpsb-search .page-head,.jpsb-search .wrap{padding-left:16px;padding-right:16px;}
  .jpsb-search .search-panel{padding:18px 16px;}
  .jpsb-search .result{grid-template-columns:1fr;}
  .jpsb-search .result .side{grid-column:1;grid-row:auto;flex-direction:row;align-items:center;}
}

/* empty issue notice (issues without a table of contents yet) */
.toc-empty{background:var(--card);border:1px solid var(--line);border-left:3px solid var(--brass);padding:22px 24px;font-size:15px;line-height:1.7;color:#3A3527;}
.toc-empty b{font-family:"Fraunces",serif;font-style:italic;font-weight:560;font-size:19px;color:var(--ink);display:block;margin-bottom:4px;}
.toc-empty a{color:var(--teal);font-weight:600;}

/* DOI line under authors (issue, home, search) */
.doi-line{display:block;margin-top:4px;font-family:"IBM Plex Mono",monospace;font-size:11px;letter-spacing:.02em;color:var(--muted);font-style:normal;}
.doi-line a{color:var(--teal) !important;font-weight:500;text-decoration:none;}
.doi-line a:hover{text-decoration:underline;}
.jpsb-search .result .where .doi-line{display:inline;margin:0 0 0 6px;}
.jpsb-search .result .where .doi-line::before{content:"\00B7  ";}
/* issue page extras */
.jpsb-issue .pdf-na{grid-column:1 / -1;font-family:"IBM Plex Mono",monospace;font-size:10.5px;color:var(--muted);letter-spacing:.03em;}
.jpsb-issue .issue-cover-card img{display:block;width:100%;max-width:220px;margin:0 auto;border:1px solid var(--line);box-shadow:0 12px 24px -10px rgba(0,0,0,.35);}

/* ---------- Cover and Contents cards (top of every issue page) ---------- */
.cc-section .cc-grid{display:grid;grid-template-columns:1fr 1fr;gap:30px;margin-top:18px;}
.cc-card{margin:0;background:#DCD1AD;border-radius:14px;padding:18px 18px 24px;display:flex;flex-direction:column;align-items:center;gap:22px;box-shadow:0 1px 0 rgba(255,255,255,.5) inset;}
.cc-frame{width:100%;aspect-ratio:630/813.6;border-radius:6px;overflow:hidden;background:#fff;box-shadow:0 0 0 1px rgba(0,0,0,.08),0 8px 18px -8px rgba(0,0,0,.35);container-type:inline-size;position:relative;}
.cc-frame img{display:block;width:100%;height:100%;object-fit:cover;}
.cc-card figcaption{display:flex;justify-content:center;}
.cc-btn{display:inline-flex;align-items:center;gap:9px;background:#6B6A4E;color:#fff !important;font-family:"Inter",sans-serif;font-weight:700;font-size:15px;padding:12px 24px;border-radius:6px;text-decoration:none;transition:background .15s ease, transform .15s ease;box-shadow:0 4px 10px -4px rgba(0,0,0,.35);}
.cc-btn:hover{background:#4F4E37;transform:translateY(-1px);}
.cc-btn svg{width:16px;height:16px;flex:0 0 auto;}
.cc-label{font-family:"IBM Plex Mono",monospace;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:#6B6252;padding:12px 0;}

/* drawn cover (issues without a cover image) */
.cc-drawn{position:absolute;inset:0;background:#8e8b73 url(../img/cover-template.jpg) center/100% 100% no-repeat;font-size:10.4cqw;}
.cc-strip{position:absolute;left:0;right:.9%;top:17.7%;height:2.7%;background:#dad9cc;font-family:Arial,"Helvetica Neue",Helvetica,sans-serif;font-weight:700;font-size:.21em;color:#111;white-space:nowrap;}
.cc-strip span{position:absolute;top:50%;transform:translateY(-50%);line-height:1;}
.cc-strip span::before{content:"\25CF";font-size:.8em;margin-right:.35em;}
.cc-strip span:nth-child(1){left:9.3%;}
.cc-strip span:nth-child(2){left:39%;}
.cc-strip span:nth-child(3){left:66%;}

/* drawn contents page (issues without a contents image) */
.cc-page{position:absolute;inset:0;display:flex;flex-direction:column;background:linear-gradient(#E9EBEC 0 25%,#fff 25%);font-family:Arial,"Helvetica Neue",Helvetica,sans-serif;color:#111;font-size:1.5cqw;}
.cc-page .cp-head{position:relative;padding:5.5% 8% 0;height:24%;}
.cc-page .cp-mark{position:absolute;left:8%;top:3%;font-family:Georgia,"Times New Roman",serif;font-weight:700;font-size:6.2em;color:#B9BDC2;letter-spacing:-.02em;line-height:1;}
.cc-page .cp-jt{position:relative;margin-top:7%;font-weight:700;font-size:2.3em;color:#333;padding-left:5%;}
.cc-page .cp-jn{position:relative;font-weight:700;font-size:3.1em;color:#fff;-webkit-text-stroke:.06em #444;padding-left:5%;line-height:1.1;}
.cc-page .cp-pub{position:relative;text-align:center;font-weight:700;font-size:1.8em;margin-top:2%;}
.cc-page .cp-bar{display:flex;align-items:center;gap:5%;background:#B4B6B8;height:2.6%;font-weight:700;font-size:1.5em;white-space:nowrap;overflow:hidden;}
.cc-page .cp-bar b{background:#5E6062;color:#fff;height:100%;display:flex;align-items:center;padding:0 3% 0 8%;font-size:1.25em;letter-spacing:.04em;}
.cc-page .cp-bar span::before{content:"\25CF";margin-right:.4em;font-size:.8em;}
.cc-page .cp-body{flex:1;padding:2.5% 8% 0 9%;overflow:hidden;}
.cc-page .cp-sec{background:#E6E7E8;font-weight:700;font-size:1.25em;padding:.35em .6em;margin:.9em 0 .5em;}
.cc-page .cp-sec:first-child{margin-top:0;}
.cc-page .cp-row{display:grid;grid-template-columns:1fr auto;gap:1em;margin:0 0 .45em 1.2em;position:relative;}
.cc-page .cp-row::before{content:"\25CF";position:absolute;left:-1.1em;top:0;font-size:.8em;}
.cc-page .cp-t{font-size:.95em;line-height:1.2;}
.cc-page .cp-a{font-size:.85em;font-style:italic;font-weight:700;line-height:1.2;color:#222;}
.cc-page .cp-n{font-size:.95em;}
.cc-page .cp-foot{border-top:.35em solid #B4B6B8;background:#E9EBEC;text-align:center;font-size:1.25em;line-height:1.5;padding:2.2% 4% 3%;}
@media (max-width:620px){
  .cc-section .cc-grid{grid-template-columns:1fr 1fr;gap:12px;}
  .cc-card{padding:10px 10px 14px;gap:12px;border-radius:10px;}
  .cc-btn{font-size:13px;padding:9px 14px;}
}
.cc-page.cp-dense .cp-body{font-size:.7em;}
.cc-page.cp-dense .cp-row{margin-bottom:.3em;}
.cc-btn{white-space:nowrap;}
@media (max-width:420px){ .cc-btn{font-size:12px;padding:8px 11px;gap:6px;} .cc-btn svg{width:13px;height:13px;} }
.cc-section .cc-entry{border-bottom:0;padding-bottom:4px;}
