/* Journal geometry: shared by the release and future autopublisher cards. */
.sp-main:has(> .hub-cards) { max-width:1240px; padding:20px 24px 40px; }
.sp-main .hub-intro { margin:16px 0 24px; }
.sp-main .hub-intro h1 { margin:0 0 10px; font-size:clamp(26px,3vw,36px); line-height:1.2; }
.sp-main .hub-intro p { max-width:900px; margin:0; color:var(--ink2); font-size:16px; line-height:1.5; }
.sp-main .hub-category-title { margin:0 0 14px; font-size:24px; scroll-margin-top:100px; }
.sp-main .hub-cards { display:grid; grid-template-columns:minmax(0,1fr); grid-auto-rows:1fr; gap:16px; margin:0; padding:0; list-style:none; }
.hub-cards > .hub-card { min-width:0; padding:0; border:1px solid var(--line); border-radius:8px; background:var(--surface-solid); box-shadow:none; overflow:visible; }
.hub-cards .hub-card-link { box-sizing:border-box; display:grid; grid-template-columns:96px minmax(0,1fr); gap:12px; height:100%; padding:14px; border-radius:8px; color:var(--ink); font:inherit; text-decoration:none; }
.hub-cards .hub-card-image { display:block; width:96px; height:96px; overflow:hidden; border-radius:6px; }
.hub-cards .hub-card-image img { display:block; width:100%; height:100%; max-width:none; object-fit:cover; object-position:center; }
.hub-cards .hub-card-body { display:flex; flex-direction:column; min-width:0; }
.hub-cards .hub-card-title { display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:3; line-clamp:3; overflow:hidden; overflow-wrap:anywhere; height:3.9em; min-height:3.9em; margin:0; font:600 16px/1.3 var(--sans); }
.hub-cards .hub-card-description { display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; line-clamp:2; overflow:hidden; overflow-wrap:anywhere; white-space:normal; height:2.8em; min-height:2.8em; margin:8px 0 12px; color:var(--ink2); font:14px/1.4 var(--sans); }
.hub-cards .hub-card-meta { display:block; margin:auto 0 0; color:var(--muted); font:12px/1.4 var(--sans); }
.hub-cards .hub-card-link:hover .hub-card-title { color:var(--blue); text-decoration:underline; }
.hub-cards .hub-card-link:focus-visible, .sp-main .hub-categories a:focus-visible { outline:3px solid var(--blue); outline-offset:3px; }
.sp-main .hub-categories { display:flex; flex-wrap:wrap; gap:8px; margin:0 0 12px; }
.sp-main .hub-categories a { box-sizing:border-box; display:flex; align-items:center; justify-content:center; min-width:0; max-width:100%; height:64px; padding:8px 12px; border:1px solid var(--line); border-radius:20px; background:var(--surface-solid); color:var(--ink); font:13px/1.2 var(--sans); text-align:center; overflow-wrap:anywhere; text-decoration:none; }
.sp-main .hub-categories a[aria-current] { border-color:var(--blue); box-shadow:inset 0 0 0 1px var(--blue); color:var(--blue); font-weight:700; }
.sp-main .hub-categories a:hover { text-decoration:underline; }
.sp-main .hub-categories a:only-child { height:36px; }
.sp-main .hub-soon { margin:0 0 24px; color:var(--muted); font:13px/1.5 var(--sans); overflow-wrap:anywhere; }
.sp-main .hub-cards + .hub-category-title { margin-top:28px; }
@media(min-width:760px) { .sp-main .hub-cards { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(min-width:1180px) { .sp-main .hub-cards { grid-template-columns:repeat(3,minmax(0,1fr)); } }
@media(min-width:600px) { .sp-main .hub-categories a { height:36px; } }
@media(max-width:599px) { .sp-main:has(> .hub-cards) { padding:16px 16px 32px; } }
@media(max-width:359px) { .hub-cards .hub-card-link { grid-template-columns:72px minmax(0,1fr); gap:10px; padding:12px; } .hub-cards .hub-card-image { width:72px; height:72px; } }
@media(max-width:359px) { body:has(.hub-cards) .topbar { gap:6px; padding-inline:10px; } body:has(.hub-cards) .topbar .brand { gap:6px; } }
/* 18.10 owner: compact cards as before — no reserved empty lines, rows sized by content */
.sp-main .hub-cards { grid-auto-rows:auto; gap:14px; }
.hub-cards .hub-card-link { padding:12px; gap:12px; }
.hub-cards .hub-card-title { height:auto; min-height:0; }
.hub-cards .hub-card-description { height:auto; min-height:0; margin:6px 0 8px; }
.hub-cards .hub-card-description { -webkit-line-clamp:1; line-clamp:1; }
/* 18.10 owner v2: every card identical — fixed height, image as a full-height vertical rectangle */
.hub-cards > .hub-card { height:132px; overflow:hidden; }
.hub-cards .hub-card-link { grid-template-columns:104px minmax(0,1fr); gap:14px; padding:0 14px 0 0; align-items:stretch; }
.hub-cards .hub-card-image { width:104px; height:100%; border-radius:8px 0 0 8px; }
.hub-cards .hub-card-body { padding:12px 0 10px; }
.hub-cards .hub-card-title { font-size:15px; line-height:1.25; -webkit-line-clamp:3; line-clamp:3; }
.hub-cards .hub-card-description { font-size:13px; line-height:1.35; margin:4px 0 0; -webkit-line-clamp:1; line-clamp:1; }
.hub-cards .hub-card-meta { margin-top:auto; }
@media(max-width:359px) { .hub-cards .hub-card-link { grid-template-columns:84px minmax(0,1fr); padding:0 12px 0 0; } .hub-cards .hub-card-image { width:84px; height:100%; } }
@media(max-width:759px) { .hub-cards > .hub-card { height:150px; } }
/* 18.10 owner v3: image inset with a small margin and rounded corners on every card */
.hub-cards .hub-card-link { padding:8px 14px 8px 8px; }
.hub-cards .hub-card-image { width:100px; height:100%; border-radius:8px; }
.hub-cards .hub-card-link { grid-template-columns:100px minmax(0,1fr); }
.hub-cards .hub-card-body { padding:4px 0 2px; }
@media(max-width:359px) { .hub-cards .hub-card-link { grid-template-columns:80px minmax(0,1fr); padding:8px 12px 8px 8px; } .hub-cards .hub-card-image { width:80px; } }
