/* One public header, including access and document pages. */
.public-header {
  position:sticky; top:0; z-index:50; background:var(--bg); border-bottom:1px solid var(--line);
  --brand-wordmark-color:var(--ink); --brand-icon-color:var(--ink); --brand-ai-color:var(--mint);
  font:400 16px/1.6 Geist,system-ui,sans-serif; color:var(--ink);
}
.public-header * { box-sizing:border-box; }
.public-header .nav-bar {
  width:min(1440px,calc(100% - 96px)); height:92px; min-height:92px; margin:auto;
  padding:0; display:flex; align-items:center; justify-content:space-between; gap:32px;
}
.public-header .brand { display:inline-flex; align-items:center; gap:10px; width:auto; max-width:none; flex-shrink:0; --logo-height:34px; }
.public-header .brand-icon-img { width:34px; height:34px; }
.public-header .brand-wordmark-shell { width:auto; }
.public-header .brand-wordmark-svg { width:auto; height:34px; }
.public-header a { text-decoration:none; color:inherit; }
.public-header :focus-visible { outline:3px solid var(--mint); outline-offset:4px; }
.public-header .nav-links,.public-header .nav-actions { display:flex; align-items:center; gap:28px; margin:0; padding:0; border:0; background:none; }
.public-header .nav-links a,.public-header .login-link { font:400 1rem/1.6 Geist,system-ui,sans-serif; color:var(--muted); }
.public-header .nav-links a:hover,.public-header .login-link:hover { color:var(--ink); }
.public-header .btn {
  display:inline-flex; align-items:center; justify-content:center; gap:28px;
  min-height:54px; padding:14px 24px; border:1px solid transparent; border-radius:8px;
  font:600 1rem/1.6 Geist,system-ui,sans-serif; background:var(--mint); color:var(--mint-ink,#fff); box-shadow:none;
}
.public-header .btn:hover { background:var(--ink); color:var(--bg); }
html[data-theme="dark"] .public-header .btn { color:#211835; }
html[data-theme="high-contrast"] .public-header .btn { color:#000; }
.public-header .theme-toggle {
  display:inline-flex; align-items:center; gap:7px; min-height:44px; padding:7px 11px;
  border:1px solid var(--line); border-radius:999px; background:var(--panel,var(--surface)); color:var(--ink);
  font:600 .88rem/1 Geist,system-ui,sans-serif; cursor:pointer;
}
.public-header .theme-toggle:hover { background:var(--surface-raised,var(--panel-2)); }
.public-header .mobile-toggle {
  display:none; flex-shrink:0; width:44px; height:44px; background:none;
  border:1px solid var(--line); border-radius:8px; align-items:center; justify-content:center; flex-direction:column; gap:4px; cursor:pointer;
}
.public-header .mobile-toggle>span:not(.sr-only) { width:18px; height:2px; background:var(--ink); }
.public-header .sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
.public-header .mobile-menu { display:none; padding:12px 16px 18px; background:var(--panel,var(--surface)); border-top:1px solid var(--line); color:var(--ink); max-height:calc(100dvh - 92px); overflow-y:auto; }
.public-header .mobile-menu.is-open { display:grid; gap:12px; }
.public-header .mobile-menu a { display:flex; align-items:center; min-height:44px; padding:10px; }
.public-header .mobile-menu a:hover { background:var(--surface-raised,var(--panel-2)); }
.public-header .mobile-menu .theme-toggle { width:100%; justify-content:center; }
.public-header .reading-progress { position:absolute; bottom:-1px; left:0; width:100%; height:2px; background:var(--mint); transform:scaleX(var(--reading,0)); transform-origin:left; }
@media(max-width:1400px) {
  .public-header .nav-links { display:none; }
  .public-header .mobile-toggle { display:flex; }
  .public-header .nav-actions { margin-left:auto; gap:16px; }
}
@media(max-width:1000px) { .public-header .login-link { display:none; } .public-header .nav-bar { gap:16px; } }
@media(max-width:800px) { .public-header .nav-actions { display:none; } }
@media(max-width:600px) {
  .public-header .nav-bar { width:calc(100% - 32px); height:76px; min-height:76px; }
  .public-header .nav-actions { display:none; }
  .public-header .brand-icon-img { width:26px; height:26px; }
  .public-header .brand-wordmark-svg { height:26px; }
  .public-header .mobile-menu { max-height:calc(100dvh - 76px); }
}
@media(forced-colors:active) {
  .public-header { background:Canvas; color:CanvasText; border-color:CanvasText; }
  .public-header .btn,.public-header .theme-toggle,.public-header .mobile-toggle { background:ButtonFace; color:ButtonText; border:1px solid ButtonText; }
}
