/* Library badges: works on the library (--bg/--panel) and reading-room (--ground/--surface) palettes. */
.badges-dialog [hidden]{display:none!important}
.badges-dialog{--b-bg:var(--ground,var(--bg,#141913));--b-panel:var(--surface,var(--panel,#1b2118));width:min(94vw,720px)}
.badges-dialog .dialog-head,.badges-dialog .dialog-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 20px;border-bottom:1px solid var(--rule);position:sticky;top:0;z-index:3;background:var(--b-bg)}
.badges-dialog h2{font:24px/1.15 Georgia,serif;font-weight:400;margin:2px 0 0}
.badges-dialog h3{font:19px/1.2 Georgia,serif;font-weight:400;margin:0}
.badges-dialog .eyebrow{font-size:9px;font-weight:600;letter-spacing:.17em;color:var(--accent);margin:0;text-transform:uppercase}
.badges-close{border:1px solid var(--rule);background:transparent;color:var(--ink);border-radius:2px;min-height:44px;padding:8px 14px;font:13px system-ui,-apple-system,sans-serif;white-space:nowrap;cursor:pointer}
.badges-close:hover{border-color:var(--accent)}
.badges-body{padding:20px;display:grid;gap:20px;font:14px/1.6 system-ui,-apple-system,sans-serif}
.badges-body p{margin:0}
.badges-account,.badges-code{display:grid;gap:12px;padding:16px;background:var(--b-panel);border:1px solid var(--rule)}
.badges-account>p,.badges-hint,.badges-or{color:var(--muted);font-size:13px}
.badges-identity{display:grid;gap:2px}
.badges-identity-label{font-size:8px;letter-spacing:.16em;color:var(--muted)}
.badges-identity strong{font-weight:500;overflow-wrap:anywhere}
.badges-action{display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:48px;padding:12px 20px;border:1px solid var(--rule);border-radius:2px;background:transparent;color:var(--ink);font:600 12px/1.4 system-ui,-apple-system,sans-serif;text-decoration:none;cursor:pointer;justify-self:start;max-width:100%}
.badges-action:hover{border-color:var(--accent);background:#ffffff08}
.badges-action.primary{background:var(--accent);border-color:var(--accent);color:#1c2015}
.badges-action.primary:hover{background:#e9c681}
.badges-action.discord{border-color:#5865f2aa}
.badges-action:disabled{opacity:.5;cursor:default}
.badges-signin{display:grid;gap:12px}
.badges-pin-form,.badges-code-form{display:grid;gap:8px}
.badges-pin-form label,.badges-code-form label{font-size:11px;font-weight:600;letter-spacing:.03em}
.badges-pin-form input,.badges-code-form input{width:100%;min-height:48px;padding:12px 14px;border:1px solid #686b5280;border-radius:2px;background:var(--b-bg);color:var(--ink);font:16px system-ui,-apple-system,sans-serif}
.badges-pin-form .badges-action{margin-top:4px}
.badges-code-form input{text-transform:uppercase;letter-spacing:.12em}
.badges-code-row{display:flex;gap:8px}.badges-code-row input{flex:1;min-width:0}.badges-code-row .badges-action{flex-shrink:0}
.badges-text-button{justify-self:start;border:0;background:none;color:var(--muted);text-decoration:underline;padding:8px 0;min-height:44px;font:12px system-ui,-apple-system,sans-serif;cursor:pointer}
.badges-status:empty,.badges-code-status:empty{display:none}
.badges-status,.badges-code-status{color:var(--muted);font-size:13px}
.badge-family{display:grid;gap:8px}
.badge-family-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;border-bottom:1px solid var(--rule);padding-bottom:6px}
.badge-family-head span{font-size:11px;color:var(--muted);letter-spacing:.08em;white-space:nowrap}
.badge-family ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:4px 16px}
.badge-item{display:flex;align-items:flex-start;gap:12px;padding:10px 0;min-width:0}
.badge-item.locked{opacity:.5}
.badge-art{flex-shrink:0;width:48px;height:48px;display:grid;place-items:center}
.badge-art img{width:48px;height:48px;object-fit:contain;display:block}
.badge-item.locked .badge-art img{filter:grayscale(.7)}
.badge-standin{position:relative;width:44px;height:44px;display:grid;place-items:center;font:17px/1 Georgia,serif;color:var(--tier);isolation:isolate}
.badge-standin::before{content:"";position:absolute;inset:7px;z-index:-1;transform:rotate(45deg);border:2px solid var(--tier);border-radius:5px;background:color-mix(in srgb,var(--tier) 16%,transparent)}
.badge-text{display:grid;gap:1px;min-width:0}
.badge-text strong{font:15px/1.3 Georgia,serif;font-weight:400;overflow-wrap:anywhere}
.badge-tier{font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:var(--tier)}
.badge-rule{font-size:12px;color:var(--muted);line-height:1.5}
.badge-progress{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--muted);margin-top:2px}
.badge-bar{flex:1;max-width:120px;height:3px;background:var(--rule);position:relative}
.badge-bar::after{content:"";position:absolute;inset:0 auto 0 0;width:var(--p);background:var(--accent)}
.badges-foot{display:grid;gap:8px;border-top:1px solid var(--rule);padding-top:16px;font-size:11px;color:var(--muted)}
.badges-foot a{color:var(--accent);font-size:13px;justify-self:start;min-height:32px;display:inline-flex;align-items:center}
.badges-dialog .sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
/* The Archives: questions about the book, inside the Badges dialog. */
.badges-archives{display:grid;gap:16px;padding:16px;background:var(--b-panel);border:1px solid var(--rule);border-top:2px solid var(--accent)}
.archives-head{display:grid;gap:6px}
.badges-dialog .archives-head h3{font-size:22px}
.archives-intro,.archives-note{color:var(--muted);font-size:13px}
.archives-progress{display:flex;align-items:center;gap:10px;margin-top:4px!important;font-size:11px;letter-spacing:.08em;color:var(--muted)}
.archives-progress .badge-bar{max-width:160px}
.archives-part{display:grid;gap:4px}
.archives-part h4{font:16px/1.3 Georgia,serif;font-weight:400;margin:0}
.archives-list{list-style:none;margin:0;padding:0;display:grid}
.archive-q{display:grid;gap:10px;padding:12px 0;border-bottom:1px solid var(--rule);min-width:0}
.archive-q:last-child{border-bottom:0}
.archive-q-prompt{font:15px/1.45 Georgia,serif;overflow-wrap:anywhere}
.archive-form{display:grid}
.archive-form input{width:100%;min-height:48px;padding:12px 14px;border:1px solid #686b5280;border-radius:2px;background:var(--b-bg);color:var(--ink);font:16px system-ui,-apple-system,sans-serif}
.archive-form input:focus-visible,.archive-option:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.archive-options{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:8px}
.archive-option{min-height:44px;padding:10px 14px;border:1px solid var(--rule);border-radius:2px;background:var(--b-bg);color:var(--ink);font:13px/1.4 system-ui,-apple-system,sans-serif;text-align:left;cursor:pointer;overflow-wrap:anywhere}
.archive-option:hover:not(:disabled){border-color:var(--accent)}
.archive-option:disabled{opacity:.5;cursor:default}
.archive-solved{display:flex;align-items:baseline;gap:10px;min-width:0}
.archive-check{color:var(--accent);font-size:15px}
.archive-solved strong{font:15px/1.4 Georgia,serif;font-weight:400;overflow-wrap:anywhere}
.archives-status{font-size:12px;color:var(--muted)}
.archives-status:empty{display:none}
.archives-status:focus{outline:none}
.archives-locked{display:flex;align-items:center;gap:8px;padding:8px 0 12px;font-size:10px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.archives-locked::before{content:"";width:6px;height:6px;flex-shrink:0;transform:rotate(45deg);border:1px solid var(--accent)}
.archives-part.locked h4{color:var(--muted)}
/* "Badges" in the library navigation, styled like its links. */
.site-header nav .nav-badges{border:0;background:none;padding:0;color:var(--muted);font:inherit;cursor:pointer;min-height:0}
.site-header nav .nav-badges:hover{color:var(--ink)}
/* Account page: the Rebel account row. */
.rebel-account .reader-identity{flex-wrap:wrap;margin-top:20px}
.rebel-account .reader-identity>div:not(.rebel-account-actions){flex:1;min-width:120px}
.rebel-account-actions{display:flex;flex-wrap:wrap;gap:8px;margin-left:auto}
.rebel-account-actions button{font-size:12px;min-height:44px;border-radius:2px}
#rebel-account-name{font-size:12px;font-weight:500;overflow-wrap:anywhere}
/* The new-badge toast. */
.badge-toasts{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:1000;display:grid;gap:8px;width:min(calc(100vw - 32px),420px);pointer-events:none}
.badge-toast{pointer-events:auto;display:flex;align-items:center;gap:12px;padding:10px 8px 10px 16px;background:var(--surface,var(--panel,#1b2118));color:var(--ink);border:1px solid var(--accent);border-left:4px solid var(--tier,var(--accent));border-radius:2px;box-shadow:0 12px 28px #000a;font:13px/1.45 system-ui,-apple-system,sans-serif;animation:badge-in .25s ease-out;touch-action:pan-y}
.badge-toast.leaving{opacity:0;transform:translateY(8px);transition:opacity .2s,transform .2s}
.badge-toast-mark{font-size:18px}
.badge-toast-text{flex:1;min-width:0;overflow-wrap:anywhere}
.badge-toast-text strong{font:15px Georgia,serif;font-weight:400}
.badge-toast-close{border:0;background:none;color:var(--muted);font-size:20px;min-width:44px;min-height:44px;padding:0;cursor:pointer}
@keyframes badge-in{from{opacity:0;transform:translateY(10px)}}
@media(max-width:480px){.badges-body{padding:16px;gap:16px}.badges-dialog .dialog-head,.badges-dialog .dialog-bar{padding:10px 16px}.badges-dialog h2{font-size:21px}.badges-account,.badges-code,.badges-archives{padding:14px}.badges-action{width:100%;justify-self:stretch}.badges-code-row .badges-action{width:auto}.badges-text-button{justify-self:start}}
@media(prefers-reduced-motion:reduce){.badge-toast{animation:none}.badge-toast.leaving{transition:none}}
.badge-recent{padding:12px;border:1px solid rgba(143,240,184,.45);border-radius:12px}
.badge-recent .badge-family-head h3{color:#8ff0b8}
.badge-recent-row{display:flex;gap:14px;overflow-x:auto;padding-bottom:4px}
.badge-recent-item{flex:0 0 96px;display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center;min-width:0}
.badge-recent-item strong{font-size:12px;line-height:1.25;overflow-wrap:anywhere}
.badge-when{font-size:11px;font-weight:700;color:var(--muted)}
.badge-when.new{color:#8ff0b8}
.badge-newtag{display:inline-block;margin-left:6px;padding:1px 5px;border-radius:6px;background:#8ff0b8;color:#0c0806;font-size:9px;font-weight:900;letter-spacing:.06em;vertical-align:middle}
