.pub-shelf{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:1.75rem 1rem;gap:1.75rem 1rem;margin:0;padding:0;list-style:none}@media (min-width:640px){.pub-shelf{grid-template-columns:repeat(3,minmax(0,1fr));gap:2rem 1.5rem}}@media (min-width:1024px){.pub-shelf{grid-template-columns:repeat(5,minmax(0,1fr))}}.pub-shelf__item{display:flex;flex-direction:column;min-width:0}.pub-shelf__cover{display:block;width:100%;margin:0 0 .9rem;padding:0;border:0;background:none;cursor:pointer;text-align:inherit}.pub-shelf__frame{position:relative;display:block;aspect-ratio:210/297;padding:.55rem;border:1px solid color-mix(in srgb,var(--text-heading,#0f172a) 55%,transparent);border-radius:2px;background:var(--card-bg,#fff);box-shadow:.45rem .45rem 0 color-mix(in srgb,var(--text-heading,#0f172a) 12%,transparent);transition:transform .2s ease,box-shadow .2s ease}.pub-shelf__cover:focus-visible .pub-shelf__frame,.pub-shelf__cover:hover .pub-shelf__frame{transform:translate(-2px,-2px);box-shadow:.6rem .6rem 0 color-mix(in srgb,var(--th-p,var(--primary-700,#0d9488)) 25%,transparent)}.pub-shelf__cover:focus-visible{outline:none}.pub-shelf__cover:focus-visible .pub-shelf__frame{outline:2px solid var(--th-p,var(--primary-700,#0d9488));outline-offset:3px}.pub-shelf__frame img{display:block;width:100%;height:100%;object-fit:contain;background:var(--surface-1,#f8fafc)}.pub-shelf__blank{display:flex;flex-direction:column;justify-content:space-between;height:100%;padding:.9rem .8rem;background:var(--th-p,var(--primary-700,#0d9488));color:#fff}.pub-shelf__blank-kind{font-size:.62rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;opacity:.85}.pub-shelf__blank-title{font-size:clamp(.85rem,1.6vw,1.05rem);font-weight:700;line-height:1.25;overflow-wrap:anywhere}.pub-shelf__blank-year{font-size:1.4rem;font-weight:800;opacity:.9}.pub-shelf__meta{display:flex;flex-wrap:wrap;gap:.2rem .6rem;margin:0 0 .35rem;color:var(--text-muted,#64748b);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.68rem;letter-spacing:.08em;text-transform:uppercase}.pub-shelf__kind{color:var(--th-p,var(--primary-700,#0d9488))}.pub-shelf__title{margin:0;color:var(--text-heading,#0f172a);font-size:clamp(.95rem,1.5vw,1.12rem);font-weight:600;line-height:1.3;overflow-wrap:anywhere}.pub-shelf__subtitle{margin:.25rem 0 0;color:var(--text-muted,#64748b);font-size:.8rem;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.pub-shelf__isbn{margin:.4rem 0 0;color:var(--text-muted,#64748b);font-size:.72rem;letter-spacing:.02em}.pub-shelf__links{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem .9rem;margin:.7rem 0 0}.pub-shelf__link{padding:0 0 .2rem;border:0;border-bottom:1px solid;background:none;color:var(--text-heading,#0f172a);font:inherit;font-size:.7rem;font-weight:700;letter-spacing:.08em;text-decoration:none;text-transform:uppercase;cursor:pointer}.pub-shelf__link--quiet{color:var(--text-muted,#64748b)}.pub-shelf__link:focus-visible,.pub-shelf__link:hover{color:var(--th-p,var(--primary-700,#0d9488))}.pub-shelf__badge{padding:.1rem .4rem;border:1px solid var(--eyebrow-border,rgb(13 148 136/.3));border-radius:2px;background:var(--eyebrow-bg,rgb(13 148 136/.08));color:var(--th-p,var(--primary-700,#0d9488));font-size:.65rem;font-weight:700}.home-shelf{padding:clamp(2.5rem,6vw,4.5rem) 0;background:var(--surface-1,#f8fafc)}.home-shelf__header{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:.75rem 1.5rem;margin-bottom:1.75rem;padding-bottom:1rem;border-bottom:1px solid color-mix(in srgb,var(--text-heading,#0f172a) 70%,transparent)}.home-shelf__eyebrow{display:inline-flex;align-items:center;gap:.6rem;margin:0 0 .35rem;color:var(--text-heading,#0f172a);font-size:.72rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase}.home-shelf__eyebrow:before{content:"";width:1.5rem;height:2px;background:var(--th-p,var(--primary-700,#0d9488))}.home-shelf__title{margin:0;color:var(--text-heading,#0f172a);font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;letter-spacing:-.02em;line-height:1.05}.home-shelf__lead{margin:.6rem 0 0;max-width:42rem;color:var(--text-muted,#64748b)}.home-shelf__all{display:inline-flex;align-items:center;gap:1.5rem;padding:0 0 .45rem;border-bottom:1px solid var(--text-heading,#0f172a);color:var(--text-heading,#0f172a);font-size:.75rem;font-weight:700;letter-spacing:.1em;text-decoration:none;text-transform:uppercase}.home-shelf__all:focus-visible,.home-shelf__all:hover{color:var(--th-p,var(--primary-700,#0d9488));border-color:currentColor}.shelf-page{padding:clamp(2rem,5vw,3.5rem) 0 clamp(3rem,6vw,4.5rem)}.shelf-page__years{display:flex;flex-wrap:wrap;gap:.4rem;margin:0 0 1.75rem;padding:0;list-style:none}.shelf-page__year{display:inline-block;padding:.35rem .8rem;border:1px solid var(--border-subtle,#e2e8f0);border-radius:2px;color:var(--text-body,#334155);font-size:.85rem;font-weight:600;text-decoration:none}.shelf-page__year[aria-current=page]{border-color:var(--th-p,var(--primary-700,#0d9488));background:var(--th-p,var(--primary-700,#0d9488));color:#fff}.shelf-page__empty{margin:0;padding:2rem 1rem;border:1px dashed var(--border-subtle,#e2e8f0);border-radius:2px;color:var(--text-muted,#64748b);text-align:center}.pub-viewer{position:fixed;inset:0;z-index:1300;display:flex;align-items:center;justify-content:center;padding:1rem}.pub-viewer__backdrop{position:absolute;inset:0;background:rgb(15 23 42/.62)}.pub-viewer__panel{position:relative;display:flex;flex-direction:column;width:min(72rem,calc(100vw - 2rem));height:min(94vh,60rem);border-radius:2px;background:#fff;color:#0f172a;box-shadow:0 24px 48px rgb(15 23 42/.25);overflow:hidden}.pub-viewer__head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.6rem 1rem;padding:.75rem 1rem;border-bottom:1px solid #e2e8f0}.pub-viewer__heading{min-width:0;flex:1 1 16rem}.pub-viewer__kind{margin:0;color:#64748b;font-size:.7rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.pub-viewer__title{margin:.15rem 0 0;font-size:1rem;font-weight:700;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pub-viewer__actions{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem}.pub-viewer__btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;min-height:2.25rem;padding:0 .85rem;border:1px solid #cbd5e1;border-radius:2px;background:#fff;color:#0f172a;font:inherit;font-size:.85rem;font-weight:600;text-decoration:none;cursor:pointer}.pub-viewer__btn:focus-visible,.pub-viewer__btn:hover{border-color:#0f172a}.pub-viewer__btn--primary{border-color:var(--th-p,var(--primary-700,#0d9488));background:var(--th-p,var(--primary-700,#0d9488));color:#fff}.pub-viewer__btn--primary:focus-visible,.pub-viewer__btn--primary:hover{border-color:var(--th-p,var(--primary-700,#0d9488));filter:brightness(.92)}.pub-viewer__body{position:relative;flex:1 1 auto;min-height:0;background:#f1f5f9}.pub-viewer__frame{display:block;width:100%;height:100%;border:0}.pub-viewer__fallback{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;height:100%;padding:1.5rem;overflow:auto;text-align:center}.pub-viewer__fallback p{margin:0;max-width:30rem;color:#334155}.pub-viewer__fallback-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:.5rem}.pub-viewer__cover{max-width:min(14rem,60vw);max-height:45vh;border:1px solid #cbd5e1;border-radius:2px;object-fit:contain}@media (max-width:639px){.pub-viewer{padding:0}.pub-viewer__panel{width:100vw;height:100dvh}.pub-viewer__btn-text{display:none}}