/* =============================================================================
 * IBNLP — "Ink, Paper & Brass" editorial design system  (shared by all 3 apps)
 * -----------------------------------------------------------------------------
 * Load AFTER Bootstrap so the overrides below win. Pair with the fonts:
 *   Libre Caslon Display / Libre Caslon Text  (serif display)
 *   Public Sans                                (body & interface)
 * ========================================================================== */

:root{
  --paper:#F7F3EA;--raised:#FCFAF4;--sunk:#EFE8D8;
  --ink:#1B1A17;--ink-soft:#46433B;--muted:#6E695C;
  --navy:#14243D;--navy-2:#213A5E;--navy-hover:#0E1B30;
  --brass:#9C7A33;--brass-bright:#C9A75E;--brass-soft:#EBE0C6;
  --line:#E2DBC9;--line-2:#D3CAB4;
  --valid:#2E6146;--valid-bg:#E3ECE4;--valid-line:#C5D8C8;
  --expired:#9A3B2C;--expired-bg:#F2E2DC;--expired-line:#E3C8BF;
  --warn:#8A6A22;--warn-bg:#F1E8D0;--warn-line:#E3D3A6;
  --navy-bg:#E5EAF1;--navy-bg-line:#CDD8E6;
}

*{box-sizing:border-box}
body{
  margin:0;background:var(--paper);color:var(--ink);
  font-family:'Public Sans',system-ui,-apple-system,'Segoe UI',Tahoma,sans-serif;
  line-height:1.55;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  min-height:100vh;display:flex;flex-direction:column;
}

/* ---- Typography ---------------------------------------------------------- */
.display{font-family:'Libre Caslon Display','Libre Caslon Text',Georgia,serif;font-weight:400;letter-spacing:.004em;color:var(--navy);line-height:1.1;}
.serif{font-family:'Libre Caslon Text',Georgia,serif;}
h1,h2,h3,h4,h5{font-family:'Libre Caslon Display','Libre Caslon Text',Georgia,serif;font-weight:400;color:var(--navy);letter-spacing:.004em;line-height:1.12;}
h6{font-family:'Public Sans',sans-serif;font-weight:700;color:var(--navy);}
a{color:var(--navy);text-decoration:none;}
a:hover{color:var(--brass);}
.muted,.text-muted{color:var(--muted)!important;}
.eyebrow{font-weight:600;font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--brass);}
.eyebrow-muted{color:var(--muted);}
.hair{height:1px;background:var(--line);border:0;width:100%;}
.hair-brass{height:2px;width:44px;background:var(--brass);border:0;}
hr{border-top:1px solid var(--line);opacity:1;}
.label{font-weight:600;font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);}

/* ---- Layout shell -------------------------------------------------------- */
.ibnlp-main{flex:1;width:100%;}
.wrap{max-width:1120px;width:100%;margin:0 auto;padding:0 40px;}
.wrap-narrow{max-width:960px;}
body>.container,.ibnlp-main>.container{padding-top:34px;padding-bottom:8px;}

/* ---- Top bar / masthead -------------------------------------------------- */
.topbar{background:var(--navy);color:#fff;border-bottom:2px solid var(--brass);}
.topbar .topbar-in{max-width:1120px;margin:0 auto;padding:0 40px;min-height:66px;display:flex;align-items:center;gap:0;flex-wrap:wrap;}
.brand{display:flex;align-items:center;gap:12px;text-decoration:none;padding:12px 0;}
.brand:hover{color:#fff;}
.seal{flex:none;}
.wordmark{font-family:'Libre Caslon Display',serif;font-size:20px;color:#fff;letter-spacing:.02em;line-height:1.05;}
.brand-sub{color:#93A6C2;font-size:11px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;}
.topnav{display:flex;gap:26px;margin-left:38px;flex-wrap:wrap;}
.navlink{font-weight:500;font-size:14px;color:#C4D0E1;text-decoration:none;padding:6px 0;border-bottom:2px solid transparent;white-space:nowrap;}
.navlink:hover{color:#fff;}
.navlink.active{color:#fff;border-color:var(--brass-bright);}
.topbar-right{margin-left:auto;display:flex;align-items:center;gap:20px;}
.toplink{color:#C4D0E1;font-size:13.5px;font-weight:500;text-decoration:none;display:inline-flex;align-items:center;gap:7px;white-space:nowrap;}
.toplink:hover{color:#fff;}

/* ---- Footer -------------------------------------------------------------- */
.foot{background:var(--navy);color:#9DB0C9;margin-top:auto;}
.foot .foot-in{max-width:1120px;margin:0 auto;padding:20px 40px;display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;font-size:13px;}
.foot a{color:#C4D0E1;}
.foot strong,.foot .fw{font-family:'Libre Caslon Display',serif;color:#fff;font-weight:400;font-size:15px;}

/* ---- Cards (design + Bootstrap + legacy class names) --------------------- */
.card,.card-p,.card-c,.card-admin{
  background:var(--raised);border:1px solid var(--line);border-radius:5px;
  box-shadow:0 1px 0 rgba(20,36,61,.02),0 16px 32px -20px rgba(20,36,61,.30);
}
.card .card-header,.card-c .card-header,.card-admin .card-header{
  background:transparent;border-bottom:1px solid var(--line);border-radius:5px 5px 0 0;
  font-family:'Libre Caslon Display',serif;font-weight:400;color:var(--navy);font-size:18px;padding:16px 18px;
}
.card .card-body{padding:26px 28px;}
.card-brasscap{height:4px;background:var(--brass);border-radius:5px 5px 0 0;}
.pad{padding:26px 28px;}

/* ---- Buttons ------------------------------------------------------------- */
.btn{font-family:'Public Sans',sans-serif;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:600;font-size:14px;border-radius:4px;padding:11px 20px;border:1px solid transparent;cursor:pointer;text-decoration:none;line-height:1;transition:background .15s,border-color .15s,color .15s;}
.btn:active{transform:translateY(1px);}
.btn-primary,.btn-primary2,.btn-login,.btn-go{background:var(--navy);color:#fff;border-color:var(--navy);}
.btn-primary:hover,.btn-primary2:hover,.btn-login:hover,.btn-go:hover{background:var(--navy-hover);color:#fff;}
.btn-ghost,.btn-outline-secondary,.btn-outline-primary{background:transparent;color:var(--navy);border-color:var(--line-2);}
.btn-ghost:hover,.btn-outline-secondary:hover,.btn-outline-primary:hover{background:var(--sunk);color:var(--navy);border-color:var(--line-2);}
.btn-warning,.btn-outline-warning{background:var(--brass);color:#fff;border-color:var(--brass);}
.btn-warning:hover,.btn-outline-warning:hover{background:#83672a;color:#fff;}
.btn-danger,.btn-outline-danger{background:transparent;color:var(--expired);border-color:var(--expired-line);}
.btn-danger:hover,.btn-outline-danger:hover{background:var(--expired-bg);color:var(--expired);}
.btn-success{background:var(--valid);color:#fff;border-color:var(--valid);}
.btn-sm{padding:8px 14px;font-size:13px;}
.text-white{color:#fff!important;}

/* ---- Tabs (Bootstrap nav-pills + design .tab) ---------------------------- */
.nav-pills{gap:8px;}
.nav-pills .nav-link,.tab{
  font-family:'Public Sans',sans-serif;font-weight:600;font-size:13.5px;color:var(--ink-soft);
  background:var(--raised);border:1px solid var(--line);border-radius:4px;padding:9px 15px;display:inline-flex;align-items:center;gap:7px;text-decoration:none;
}
.nav-pills .nav-link:hover,.tab:hover{background:var(--sunk);color:var(--navy);}
.nav-pills .nav-link.active,.tab.active{background:var(--navy);color:#fff;border-color:var(--navy);}

/* ---- Forms --------------------------------------------------------------- */
.field,.form-control,.form-select,textarea.form-control{
  width:100%;font-family:'Public Sans',sans-serif;font-size:15px;color:var(--ink);
  background:#fff;border:1px solid var(--line-2);border-radius:4px;padding:11px 13px;
}
.field::placeholder,.form-control::placeholder{color:#A69F8E;}
.field:focus,.form-control:focus,.form-select:focus{outline:none;border-color:var(--navy);box-shadow:0 0 0 3px rgba(20,36,61,.14);}
.form-select{background-position:right .7rem center;}
.form-select-sm,.form-control-sm{font-size:13px;padding:8px 11px;}
.form-label{font-weight:600;font-size:13px;color:var(--ink-soft);margin-bottom:.35rem;}
.form-check-input:checked{background-color:var(--navy);border-color:var(--navy);}
.form-check-input:focus{border-color:var(--navy);box-shadow:0 0 0 3px rgba(20,36,61,.14);}

/* ---- Pills / badges ------------------------------------------------------ */
.pill,.badge{display:inline-flex;align-items:center;gap:6px;font-weight:600;font-size:11.5px;letter-spacing:.05em;text-transform:uppercase;padding:5px 10px;border-radius:4px;border:1px solid transparent;}
.pill-cat,.badge-lvl{background:var(--navy-bg);color:#22405F;border-color:var(--navy-bg-line);}
.pill-lvl{background:var(--brass-soft);color:#7A5D21;border-color:#E0D0A6;}
.pill-valid,.badge.text-bg-success{background:var(--valid-bg)!important;color:var(--valid)!important;border-color:var(--valid-line);}
.pill-expired,.badge.text-bg-danger{background:var(--expired-bg)!important;color:var(--expired)!important;border-color:var(--expired-line);}
.pill-warn,.badge.text-bg-warning{background:var(--warn-bg)!important;color:var(--warn)!important;border-color:var(--warn-line);}
.pill-muted,.badge.text-bg-secondary,.badge.text-bg-light{background:var(--sunk)!important;color:var(--muted)!important;border-color:var(--line-2);}
.pill-yes{background:var(--valid-bg);color:var(--valid);border-color:var(--valid-line);}
.badge.text-bg-dark{background:var(--navy)!important;color:#fff!important;border-color:var(--navy);}
.badge.text-bg-info{background:var(--navy-bg)!important;color:#22405F!important;border-color:var(--navy-bg-line);}

/* ---- Tables (design table.t + Bootstrap .table) -------------------------- */
table.t,table.table{width:100%;border-collapse:collapse;font-size:14.5px;}
table.t th,table.table thead th{font-family:'Public Sans',sans-serif;font-weight:600;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);text-align:left;padding:13px 16px;border:0;border-bottom:2px solid var(--line-2);background:transparent;}
table.t td,table.table tbody td{padding:14px 16px;border-bottom:1px solid var(--line);color:var(--ink-soft);vertical-align:middle;}
table.t tr:last-child td{border-bottom:0;}
.table-striped tbody tr:nth-child(even),table.t tbody tr:nth-child(even){background:rgba(20,36,61,.018);}
.table-hover tbody tr:hover{background:rgba(20,36,61,.04);}

/* ---- Detail rows (membership) ------------------------------------------- */
.drow{display:flex;flex-direction:column;gap:3px;padding:12px 0;border-bottom:1px solid var(--line);}
.dkey{font-weight:600;font-size:11px;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);}
.dval{font-size:15px;color:var(--ink);}

/* ---- Icon buttons (table actions) --------------------------------------- */
.iconbtn{display:inline-grid;place-items:center;width:32px;height:32px;border-radius:4px;border:1px solid var(--line-2);background:#fff;color:var(--navy);cursor:pointer;text-decoration:none;}
.iconbtn:hover{background:var(--sunk);color:var(--navy);}
.iconbtn.warn{border-color:var(--warn-line);color:var(--warn);background:var(--warn-bg);}

/* ---- Alerts -------------------------------------------------------------- */
.alert{border-radius:5px;border:1px solid var(--line);padding:14px 16px;font-size:14px;}
.alert-success{background:var(--valid-bg);border-color:var(--valid-line);color:var(--valid);}
.alert-danger{background:var(--expired-bg);border-color:var(--expired-line);color:var(--expired);}
.alert-warning{background:var(--warn-bg);border-color:var(--warn-line);color:#6f5518;}
.alert-info{background:var(--navy-bg);border-color:var(--navy-bg-line);color:#22405F;}
.alert-link{font-weight:700;}

/* ---- Centered auth card -------------------------------------------------- */
.auth-wrap{flex:1;display:flex;align-items:center;justify-content:center;padding:2.5rem 1rem;}
.auth-card{width:100%;max-width:430px;background:var(--raised);border:1px solid var(--line);border-radius:6px;box-shadow:0 1px 0 rgba(20,36,61,.02),0 22px 46px -22px rgba(20,36,61,.42);padding:40px 38px;}
.auth-card .seal-wrap{display:flex;justify-content:center;margin-bottom:14px;}
.auth-card h1{font-size:26px;text-align:center;margin:0;}
.auth-sub{color:var(--muted);text-align:center;margin:.35rem 0 1.7rem;}
.page-foot{text-align:center;color:#8a8574;font-size:12.5px;padding:1.3rem;}

/* ---- Search hero (public directory) ------------------------------------- */
.hero{max-width:820px;width:100%;margin:0 auto;padding:56px 40px 0;text-align:center;}
.search-row{display:flex;gap:10px;max-width:620px;margin:0 auto;}
.search-box{position:relative;flex:1;}
.search-box .search-ic{position:absolute;left:16px;top:50%;transform:translateY(-50%);color:#8C8676;}
.search-box input{width:100%;font-family:'Public Sans',sans-serif;font-size:16px;color:var(--ink);background:#fff;border:1px solid var(--line-2);border-radius:4px;padding:14px 16px 14px 46px;}
.search-box input:focus{outline:none;border-color:var(--navy);box-shadow:0 0 0 3px rgba(20,36,61,.14);}

/* ---- Cred / mono box ----------------------------------------------------- */
.cred-box{font-family:ui-monospace,'SF Mono',Menlo,monospace;font-size:13px;color:var(--ink);background:#fff;border:1px solid var(--warn-line);border-radius:4px;padding:8px 12px;}

/* ---- Responsive ---------------------------------------------------------- */
@media (max-width:820px){
  .wrap,.topbar .topbar-in,.foot .foot-in,.hero{padding-left:16px;padding-right:16px;}
  .topbar .topbar-in{min-height:0;padding-top:10px;padding-bottom:10px;}
  .topnav{margin-left:0;width:100%;gap:16px;order:3;}
  .topbar-right{margin-left:auto;}
  .card .card-body,.pad{padding:20px 18px;}
  .hero{padding-top:32px;}
  .search-row{flex-direction:column;}
  h1.display,.display{line-height:1.14;}
}
