/* ==========================================================================
   Notebook — mobile mode: continuous-scroll reading; desktop mode: paged
   stage with a FlexAdmin-style toolbar (no table of contents).
   Both modes render from the same NOTEBOOK_PAGES data via the same
   renderPage() templates in notebook.js; the user-selectable view mode
   (body.view-mobile / body.view-desktop, set by chrome.js) decides which
   DOM chunk is visible.
   ========================================================================== */

.nb-progress-pill{
  position:sticky;top:calc(var(--header-h) + 10px);z-index:20;margin:0 0 14px;
  display:inline-flex;align-items:center;gap:10px;background:#fff;border:1px solid var(--line);
  border-radius:999px;padding:8px 16px;box-shadow:var(--shadow);font-size:.8rem;font-weight:700;color:var(--navy);
}
.nb-progress-pill .track{width:70px;height:5px;border-radius:3px;background:var(--bg-alt);overflow:hidden;}
.nb-progress-pill .track span{display:block;height:100%;background:linear-gradient(90deg,var(--teal),var(--blue));border-radius:3px;transition:width .2s;}

.nb-page{
  background:#fff;border:1px solid var(--line);border-radius:var(--radius-lg);
  padding:26px 20px;margin-bottom:16px;box-shadow:var(--shadow);scroll-margin-top:calc(var(--header-h) + 56px);
}
.nb-page-chapter-tag{font-size:.72rem;font-weight:700;color:var(--muted);margin-bottom:6px;}

/* templates with no card chrome (hero / chapter-divider / closing / qr) render full-bleed */
.nb-page.nb-flush{padding:0;overflow:hidden;border:none;box-shadow:none;background:transparent;}

/* ---- hero ---- */
.nb-hero{border-radius:var(--radius-lg);overflow:hidden;position:relative;color:#fff;padding:46px 24px;
  background:linear-gradient(180deg,var(--navy) 0%,#081733 100%);text-align:center;}
.nb-hero-bg{position:absolute;inset:0;background-size:cover;background-position:center;opacity:.18;mix-blend-mode:screen;}
.nb-hero-inner{position:relative;z-index:1;max-width:600px;margin:0 auto;}
.nb-hero .eyebrow{display:inline-flex;background:rgba(255,255,255,.09);border:1px solid rgba(255,255,255,.2);padding:7px 16px;border-radius:999px;font-size:.75rem;margin-bottom:16px;color:#cfe6ff;}
.nb-hero h1{font-size:clamp(1.4rem,4vw,2rem);font-weight:900;line-height:1.5;margin:0 0 10px;}
.nb-hero .eng{font-size:.9rem;color:#9fb3d1;margin-bottom:16px;}
.nb-hero p.lead{color:#dbe6f7;font-size:.9rem;line-height:1.9;margin-bottom:18px;}
.nb-hero-meta{display:flex;flex-direction:column;gap:8px;align-items:center;margin-bottom:18px;}
.nb-hero-meta span{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.16);padding:8px 16px;border-radius:12px;font-size:.8rem;color:#e7eefc;}
.nb-logo-row{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;align-items:center;}
.nb-logo-row img{height:24px;object-fit:contain;filter:brightness(0) invert(1);opacity:.85;}
.nb-logo-row img.logo-original{filter:none;opacity:1;}
.nb-logo-row .logo-color{background:#fff;border-radius:6px;padding:3px 7px;display:inline-flex;align-items:center;}
.nb-logo-row .logo-color img{filter:none;opacity:1;height:26px;}

/* ---- qr-card ---- */
.nb-qr{text-align:center;padding:34px 20px;}
.nb-qr img{width:min(260px,80%);margin:0 auto 18px;background:#fff;padding:14px;border-radius:20px;border:1px solid var(--line);box-shadow:var(--shadow);}
.nb-qr .note{color:var(--muted);font-size:.88rem;margin-bottom:10px;}
.nb-qr .link{font-weight:800;color:var(--navy);}

/* ---- profile-card ---- */
.nb-profile{display:flex;flex-direction:column;gap:18px;align-items:center;text-align:center;}
.nb-profile img{width:150px;height:150px;object-fit:cover;border-radius:50%;border:4px solid #fff;box-shadow:var(--shadow-lg);}
.nb-profile-name{font-size:1.2rem;font-weight:800;color:var(--navy);}
.nb-profile-role{color:var(--accent2);font-weight:600;font-size:.86rem;}
.nb-bio-block{width:100%;text-align:right;margin-top:6px;}
.nb-bio-block h5{color:var(--navy);font-size:.92rem;margin:0 0 10px;display:flex;align-items:center;gap:8px;}
.nb-bio-block h5::before{content:"";width:5px;height:16px;border-radius:3px;background:var(--accent);}
.nb-bio-block ul{list-style:none;margin:0 0 18px;padding:0;display:flex;flex-direction:column;gap:8px;}
.nb-bio-block li{background:var(--bg);border:1px solid var(--line);padding:10px 14px;border-radius:12px;font-size:.86rem;color:var(--ink);}

/* ---- stat-grid ---- */
.nb-stat-strip{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-bottom:16px;}
@media(min-width:520px){.nb-stat-strip{grid-template-columns:repeat(4,1fr);}}
.nb-stat-box{background:linear-gradient(160deg,var(--navy),var(--navy2));color:#fff;border-radius:14px;padding:14px;text-align:center;}
.nb-stat-box .num{font-size:1.15rem;font-weight:800;color:#7ff0da;}
.nb-stat-box .lbl{font-size:.72rem;color:#dfeaff;margin-top:4px;}
.nb-achieve{display:flex;flex-direction:column;gap:8px;margin-top:14px;}
.nb-achieve div{background:var(--bg);border-radius:10px;padding:10px 14px;font-size:.85rem;color:var(--ink);}

/* ---- poll-teaser ---- */
.nb-poll-teaser{text-align:center;padding:8px 4px;}
.nb-poll-teaser .icon{font-size:2.2rem;margin-bottom:10px;}
.nb-poll-teaser .q{background:var(--bg);border-radius:14px;padding:16px;font-weight:700;color:var(--navy);font-size:.92rem;margin:14px 0;}
.nb-poll-teaser .opts{display:flex;flex-direction:column;gap:6px;margin-bottom:16px;}
.nb-poll-teaser .opts span{background:#fff;border:1px solid var(--line);border-radius:10px;padding:8px 12px;font-size:.82rem;color:var(--muted);direction:ltr;text-align:center;}

/* ---- screenshot-card ---- */
.nb-screenshot-cards{margin-top:14px;}

/* ---- legal-callout ---- */
.nb-article{background:var(--bg);border-radius:14px;padding:14px 16px;margin-bottom:12px;}
.nb-article .tag{display:inline-block;background:var(--navy);color:#fff;font-weight:700;padding:4px 12px;border-radius:8px;font-size:.78rem;margin-bottom:8px;}
.nb-article h5{margin:0 0 6px;color:var(--navy);font-size:.92rem;}
.nb-article p{margin:0;font-size:.86rem;color:var(--ink);line-height:1.8;}

/* ---- assignment-block ---- */
.nb-assign-list{list-style:none;margin:0 0 18px;padding:0;display:flex;flex-direction:column;gap:8px;}
.nb-assign-list li{display:flex;gap:10px;background:var(--bg);border-radius:12px;padding:11px 14px;font-size:.87rem;}
.nb-case-study{background:linear-gradient(160deg,#fff,var(--bg-alt));border:1px solid var(--line);border-radius:16px;padding:16px;}
.nb-case-study .case-tag{display:inline-block;background:var(--red);color:#fff;font-size:.72rem;font-weight:700;padding:3px 10px;border-radius:8px;margin-bottom:8px;}
.nb-case-study p{font-size:.88rem;color:var(--ink);}
.nb-case-study .q{background:#fff;border:1px solid var(--line);border-radius:10px;padding:10px 12px;font-size:.85rem;margin-top:8px;}

/* ---- closing ---- */
.nb-closing{text-align:center;padding:44px 20px;border-radius:var(--radius-lg);color:#fff;
  background:linear-gradient(160deg,var(--navy),#081733);position:relative;overflow:hidden;}
.nb-closing-bg{position:absolute;inset:0;background-size:cover;background-position:center;opacity:.25;}
.nb-closing-inner{position:relative;z-index:1;}
.nb-closing h2{font-size:1.4rem;font-weight:900;margin-bottom:8px;}
.nb-closing .sub{color:#cfe6ff;font-size:.85rem;margin-bottom:18px;}

/* ==========================================================================
   View-mode switching (driven by chrome.js body classes — no TOC anywhere)
   ========================================================================== */
body.view-mobile .nb-desktop-only{display:none;}
body.view-desktop .nb-mobile-only{display:none;}

/* ---- desktop mode: paged stage + toolbar ---- */
.nb-desktop-only{max-width:880px;margin:0 auto;}
.nb-toolbar{
  position:sticky;top:calc(var(--header-height) + 14px);z-index:20;
  display:flex;align-items:center;justify-content:space-between;gap:14px;
  background:var(--surface-color);border:1px solid var(--line);border-radius:16px;
  padding:10px 14px;margin-bottom:18px;box-shadow:var(--shadow);
}
.nb-counter{
  display:inline-flex;align-items:center;gap:10px;
  font-size:.82rem;font-weight:700;color:var(--navy);white-space:nowrap;
}
.nb-counter .track{width:110px;height:5px;border-radius:3px;background:var(--bg-alt);overflow:hidden;}
.nb-counter .track span{display:block;height:100%;background:linear-gradient(90deg,var(--teal),var(--blue));border-radius:3px;transition:width .2s;}
.nb-stage{min-height:60vh;}
.nb-stage .nb-page{margin-bottom:0;animation:nb-page-in .25s ease;}
@keyframes nb-page-in{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:none;}}
