/* BIRD Library — private-wealth editorial theme
   Fraunces (display serif) + DM Sans (UI). Navy #16265C / red #C8202E on ivory paper. */

:root{
  --ink:#16265C;          /* navy */
  --ink-2:#24344d;
  --red:#C8202E;          /* house red */
  --red-ink:#A81020;
  --paper:#F5F1E9;        /* ivory */
  --card:#ffffff;
  --line:#E7E0D2;         /* warm hairline */
  --muted:#8A8072;
  --muted-2:#B4AC9C;
  --good:#1F7A4D;
  --gold:#C89A3E;
  --shadow-sm:0 1px 2px rgba(22,38,92,.05), 0 6px 20px rgba(22,38,92,.06);
  --shadow-md:0 10px 40px rgba(22,38,92,.12);
  --serif:'Fraunces',Georgia,serif;
  --sans:'DM Sans',system-ui,sans-serif;
  --radius:16px;
}

*{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;}
body{
  margin:0;
  font-family:var(--sans);
  color:var(--ink);
  background:var(--paper);
  background-image:
    radial-gradient(900px 500px at 12% -8%, rgba(200,32,46,.05), transparent 60%),
    radial-gradient(1000px 620px at 108% 4%, rgba(22,38,92,.06), transparent 55%);
  background-attachment:fixed;
  line-height:1.5;
  -webkit-font-smoothing:antialiased;
}
a{color:var(--ink);}

/* ---------- top bar ---------- */
.topbar{
  position:sticky; top:0; z-index:20;
  display:flex; justify-content:space-between; align-items:center;
  gap:1rem; padding:14px clamp(16px,4vw,40px);
  background:rgba(245,241,233,.82);
  backdrop-filter:saturate(140%) blur(10px);
  border-bottom:1px solid var(--line);
}
.brand{
  font-family:var(--serif);
  font-weight:600; font-size:1.15rem; letter-spacing:.2px;
  color:var(--ink); text-decoration:none; display:inline-flex; align-items:center; gap:.5ch;
}
.brand::before{
  content:""; width:9px; height:9px; border-radius:50%;
  background:var(--red); box-shadow:0 0 0 4px rgba(200,32,46,.14);
}
.who{font-size:.85rem; color:var(--muted);}
.who a{color:var(--red); font-weight:600; text-decoration:none;}
.who a:hover{text-decoration:underline;}

/* ---------- admin sub-nav ---------- */
.adminnav{
  position:sticky; top:57px; z-index:19;
  display:flex; gap:2px; align-items:center; flex-wrap:wrap;
  padding:8px clamp(16px,4vw,40px);
  background:var(--ink);
}
.adminnav a{
  color:#cfd8ea; text-decoration:none; padding:7px 15px; border-radius:8px;
  font-size:.9rem; font-weight:500; transition:background .15s,color .15s;
}
.adminnav a:hover{background:rgba(255,255,255,.10); color:#fff;}
.adminnav a.right{margin-left:auto; color:#f2b8b8;}

/* ---------- layout ---------- */
.container{max-width:1040px; margin:0 auto; padding:clamp(20px,4vw,44px) clamp(16px,4vw,40px) 64px;}
h1{font-family:var(--serif); font-weight:600; font-size:clamp(1.7rem,3.6vw,2.5rem); letter-spacing:-.01em; margin:0 0 .5rem;}
h1 em{color:var(--red); font-style:normal;}
h2{font-family:var(--serif); font-weight:600;}

/* ---------- buttons ---------- */
.btn, .login-card button, form.stack button, button[type=submit]{
  display:inline-flex; align-items:center; justify-content:center; gap:.5ch;
  font-family:var(--sans); font-size:.95rem; font-weight:600;
  padding:12px 20px; border:1px solid var(--ink); border-radius:10px;
  background:var(--ink); color:#fff; text-decoration:none; cursor:pointer;
  transition:transform .12s ease, box-shadow .18s ease, background .18s;
  box-shadow:0 2px 0 rgba(22,38,92,.18);
}
.btn:hover, .login-card button:hover, form.stack button:hover, button[type=submit]:hover{
  background:#0f1c45; transform:translateY(-1px); box-shadow:0 6px 18px rgba(22,38,92,.22);
}
.btn.ghost{background:#fff; color:var(--ink); border-color:var(--line); box-shadow:none;}
.btn.ghost:hover{border-color:var(--ink); background:#fff;}
.btn.danger{background:#fff; color:var(--red); border-color:var(--line); box-shadow:none;}
.btn.danger:hover{background:var(--red); border-color:var(--red); color:#fff;}
.btn.disabled, .btn:disabled{background:var(--muted-2); border-color:var(--muted-2); color:#fff; cursor:not-allowed; box-shadow:none; transform:none;}

/* ---------- login (navy editorial hero) ---------- */
.login-card{
  max-width:440px; margin:min(12vh,90px) auto 0; padding:40px 36px 34px;
  color:#eef1f7; text-align:left; position:relative; overflow:hidden;
  border-radius:22px;
  background:
    radial-gradient(120% 120% at 100% 0%, rgba(200,32,46,.28), transparent 45%),
    linear-gradient(160deg,#1b2c63,#0e1a3f 70%);
  box-shadow:var(--shadow-md);
  animation:rise .6s cubic-bezier(.2,.7,.2,1) both;
}
.login-card::after{
  content:"&"; position:absolute; right:-8px; bottom:-46px;
  font-family:var(--serif); font-size:230px; line-height:1; color:rgba(255,255,255,.05);
  pointer-events:none;
}
.login-card h1{color:#fff; font-size:2rem; margin-bottom:.4rem;}
.login-card h1::after{content:""; display:block; width:52px; height:3px; background:var(--red); border-radius:2px; margin-top:14px;}
.login-card input{
  width:100%; margin-top:22px; padding:15px 16px; font-size:1.15rem;
  letter-spacing:3px; text-transform:uppercase; text-align:center;
  border:1px solid rgba(255,255,255,.22); border-radius:12px;
  background:rgba(255,255,255,.06); color:#fff; font-family:var(--sans);
}
.login-card input::placeholder{color:rgba(255,255,255,.4); letter-spacing:1px;}
.login-card input:focus{outline:none; border-color:var(--red); background:rgba(255,255,255,.1);}
.login-card button{width:100%; margin-top:16px; padding:14px; background:var(--red); border-color:var(--red); box-shadow:0 2px 0 rgba(168,16,32,.5);}
.login-card button:hover{background:var(--red-ink);}
.login-card .hint{color:rgba(255,255,255,.55); font-size:.82rem; margin-top:18px;}
.login-card .error{background:rgba(200,32,46,.2); border:1px solid rgba(255,120,120,.4); color:#ffd9d9; padding:10px 12px; border-radius:9px; margin-top:16px; font-size:.88rem;}

/* generic error (admin) */
.error{color:var(--red); font-weight:500;}

/* ---------- bookshelf ---------- */
.filters{display:flex; gap:8px; flex-wrap:wrap; margin:18px 0 26px;}
.chip{
  border:1px solid var(--line); background:#fff; color:var(--ink);
  border-radius:999px; padding:8px 18px; cursor:pointer; font-family:var(--sans);
  font-size:.85rem; font-weight:500; transition:all .15s;
}
.chip:hover{border-color:var(--ink);}
.chip.active{background:var(--ink); color:#fff; border-color:var(--ink);}

.grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(190px,1fr)); gap:22px;}
.card{
  background:var(--card); border:1px solid var(--line); border-radius:var(--radius);
  overflow:hidden; box-shadow:var(--shadow-sm);
  transition:transform .18s ease, box-shadow .22s ease, border-color .2s;
  animation:rise .5s cubic-bezier(.2,.7,.2,1) both;
}
.card:hover{transform:translateY(-4px); box-shadow:var(--shadow-md); border-color:#d8cfbc;}
.cover{
  position:relative; aspect-ratio:3/4; display:flex; align-items:center; justify-content:center;
  background:linear-gradient(150deg,#1b2c63,#0e1a3f); overflow:hidden;
}
.cover::before{content:""; position:absolute; inset:0; background:radial-gradient(80% 60% at 100% 0,rgba(200,32,46,.35),transparent 55%);}
.cover.locked{filter:grayscale(.6) brightness(.85);}
.cover img{width:100%; height:100%; object-fit:cover;}
.cover .thumb{position:absolute; inset:0; object-fit:cover; object-position:top center; background:#fff;}
.cover-fade{position:absolute; left:0; right:0; bottom:0; height:42%;
  background:linear-gradient(to top, rgba(14,26,63,.30), transparent); pointer-events:none;}
.cover-title{
  position:relative; padding:18px; font-family:var(--serif); font-weight:600;
  font-size:1.05rem; text-align:center; color:#fff; line-height:1.25;
}
.badge{
  position:absolute; top:10px; right:10px; background:var(--red); color:#fff;
  font-size:.68rem; font-weight:600; letter-spacing:.04em; text-transform:uppercase;
  padding:4px 10px; border-radius:999px;
}
.card-body{padding:14px 15px 16px;}
.card-body h3{margin:0 0 2px; font-family:var(--serif); font-weight:600; font-size:1.05rem; line-height:1.2;}
.cat{color:var(--red); font-size:.72rem; font-weight:600; letter-spacing:.06em; text-transform:uppercase; margin:0 0 10px;}
.bar{height:6px; background:#eee7d8; border-radius:3px; overflow:hidden; margin-bottom:12px;}
.bar span{display:block; height:100%; background:linear-gradient(90deg,var(--good),#2e9c63); border-radius:3px;}
.card-body .btn{width:100%; padding:10px;}

/* ---------- reader ---------- */
.reader{max-width:820px; margin:0 auto;}
.reader-top{
  display:flex; justify-content:space-between; align-items:center; gap:1rem;
  padding:6px 2px 16px; font-size:.9rem;
}
.reader-top a{color:var(--muted); text-decoration:none; font-weight:500;}
.reader-top a:hover{color:var(--ink);}
.reader-top .title{font-family:var(--serif); font-weight:600; font-size:1.05rem; color:var(--ink);}
.reader-top .counter{color:var(--muted); font-variant-numeric:tabular-nums;}
.page-wrap{position:relative; display:flex; align-items:center; justify-content:center;}
.page-wrap img{
  max-width:100%; height:auto; border-radius:10px;
  box-shadow:0 12px 44px rgba(22,38,92,.18); border:1px solid var(--line);
  user-select:none; -webkit-user-drag:none;
}
.nav{
  position:absolute; top:50%; transform:translateY(-50%);
  width:48px; height:48px; border-radius:50%; border:0; cursor:pointer;
  font-size:26px; line-height:1; color:#fff; background:rgba(22,38,92,.82);
  box-shadow:0 4px 14px rgba(0,0,0,.2); transition:background .15s, transform .12s;
}
.nav:hover{background:var(--ink); transform:translateY(-50%) scale(1.05);}
#prev{left:8px;} #next{right:8px;}
.endcard{
  text-align:center; padding:30px 24px; margin-top:22px;
  background:var(--card); border:1px solid var(--line); border-radius:var(--radius);
  box-shadow:var(--shadow-sm);
}
.endcard h2{margin:.2rem 0 .6rem;}
.endcard .btn{margin:6px;}

/* ---------- forms (login-code + admin) ---------- */
form.stack{
  background:var(--card); border:1px solid var(--line); border-radius:var(--radius);
  padding:22px 22px 24px; box-shadow:var(--shadow-sm); max-width:620px; margin-bottom:28px;
}
form.stack label{display:block; margin:14px 0 5px; font-size:.82rem; font-weight:600; letter-spacing:.02em; color:var(--muted);}
form.stack label:first-child{margin-top:0;}
form.stack input, form.stack select, form.stack textarea{
  width:100%; padding:11px 13px; font-family:var(--sans); font-size:.98rem; color:var(--ink);
  background:#fdfcf9; border:1px solid var(--line); border-radius:10px;
}
form.stack input:focus, form.stack select:focus, form.stack textarea:focus{outline:none; border-color:var(--ink); box-shadow:0 0 0 3px rgba(22,38,92,.1);}
form.stack textarea{min-height:120px; resize:vertical; font-family:ui-monospace,SFMono-Regular,Menlo,monospace; font-size:.86rem;}
form.stack input[type=file]{padding:9px; background:#fff; cursor:pointer;}
form.stack button{margin-top:18px;}

/* quiz builder (admin) */
.qblock{background:#fdfcf9; border:1px solid var(--line); border-radius:12px; padding:16px 18px; margin:0 0 14px; box-shadow:var(--shadow-sm);}
.qhead{display:flex; justify-content:space-between; align-items:center; gap:10px; margin-bottom:8px;}
.qnum{font-family:var(--serif); font-weight:600; font-size:1.05rem; color:var(--ink);}
.qtext{width:100%; padding:11px 13px; font-size:1rem; border:1px solid var(--line); border-radius:10px; background:#fff; margin-bottom:10px;}
.qtext:focus{outline:none; border-color:var(--ink); box-shadow:0 0 0 3px rgba(22,38,92,.1);}
.opts{margin:2px 0 6px;}
.opt-row{display:flex; align-items:center; gap:10px; margin:7px 0;}
.opt-row input[type=radio]{width:18px; height:18px; accent-color:var(--good); flex:none; cursor:pointer;}
.opt-row .opt-text{flex:1; padding:9px 12px; border:1px solid var(--line); border-radius:9px; background:#fff; font-size:.95rem;}
.opt-row .opt-text:focus{outline:none; border-color:var(--ink);}
.linkbtn{background:none; border:0; color:var(--red); cursor:pointer; font-size:.85rem; font-weight:600; padding:4px 2px;}
.linkbtn:hover{text-decoration:underline;}
.opt-hint{color:var(--muted); font-size:.78rem; margin:6px 0 0;}

/* quiz questions (member-facing) */
fieldset{border:1px solid var(--line); border-radius:12px; padding:16px 18px; margin:0 0 16px; background:#fdfcf9;}
legend{font-family:var(--serif); font-weight:600; font-size:1.05rem; padding:0 8px;}
fieldset label{display:flex; align-items:center; gap:10px; margin:8px 0; font-weight:500; color:var(--ink); cursor:pointer;}
fieldset label input{width:auto; accent-color:var(--red);}

/* ---------- tables (admin members/booklets) ---------- */
.admin-table{
  width:100%; border-collapse:separate; border-spacing:0; background:var(--card);
  border:1px solid var(--line); border-radius:var(--radius); overflow:hidden;
  box-shadow:var(--shadow-sm); font-size:.92rem;
}
.admin-table th{
  text-align:left; padding:12px 14px; background:#fbf8f2; color:var(--muted);
  font-size:.72rem; font-weight:700; letter-spacing:.06em; text-transform:uppercase;
  border-bottom:1px solid var(--line);
}
.admin-table td{padding:13px 14px; border-bottom:1px solid #f0ebe0; vertical-align:middle;}
.admin-table tr:last-child td{border-bottom:0;}
.admin-table code{
  background:#f4efe4; border:1px solid var(--line); border-radius:6px;
  padding:3px 8px; font-family:ui-monospace,Menlo,monospace; font-size:.85rem;
  color:var(--red-ink); font-weight:600; letter-spacing:.5px;
}
.admin-table .btn{padding:7px 13px; font-size:.85rem;}
.admin-table form{display:inline;}

/* dashboard tiles */
.dash-actions{display:flex; gap:14px; flex-wrap:wrap; margin-top:10px;}
.dash-actions .btn{padding:16px 22px;}

/* new-code callout */
.code-callout{
  background:linear-gradient(150deg,#1b2c63,#0e1a3f); color:#fff; border-radius:14px;
  padding:18px 20px; margin:0 0 22px; box-shadow:var(--shadow-sm);
}
.code-callout .code{font-family:ui-monospace,Menlo,monospace; font-size:1.5rem; font-weight:700; letter-spacing:3px; color:#fff; display:block; margin-top:6px;}
.code-callout small{color:rgba(255,255,255,.6);}

@keyframes rise{from{opacity:0; transform:translateY(14px);} to{opacity:1; transform:translateY(0);}}
@media (prefers-reduced-motion:reduce){*{animation:none !important; transition:none !important;}}

@media (max-width:560px){
  .adminnav{top:53px;}
  .login-card{margin-top:6vh; padding:30px 22px;}
  .grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:16px;}
}

/* Shown when no booklets are published yet. */
.empty-shelf{max-width:520px;margin:48px auto;padding:40px 32px;text-align:center;
  background:#fff;border:1px solid #e4e2e2;border-radius:14px}
.empty-shelf h2{margin:0 0 10px;font-size:20px;color:#050608}
.empty-shelf p{margin:0;font-size:15px;line-height:1.65;color:#63605f}

