/* Keep the chalkboard style; give every shelf card the same reading rhythm. */
html{scrollbar-gutter:stable}
[data-page="apps"] .grid,[data-page="apps"] .grid.solo{grid-template-columns:repeat(4,minmax(0,1fr));align-items:stretch}
[data-page="apps"] .featured .grid.feat{grid-template-columns:repeat(5,minmax(0,1fr))}
[data-page="apps"] .card[data-layout="shelf"]{min-width:0;max-width:none;flex-direction:column}
[data-page="apps"] .card[data-layout="shelf"] .thumb{flex:none;width:100%;aspect-ratio:16/9;min-height:0;border-right:0;border-bottom:1px solid var(--line)}
[data-page="apps"] .card[data-layout="shelf"] .shelf-card-body{display:grid;grid-template-rows:48px 65px 26px 44px;gap:10px;padding:17px 18px 18px;flex:none;min-width:0}
[data-page="apps"] .card[data-layout="shelf"] h3{font:600 17px/1.4 var(--display);text-wrap:initial;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden}
[data-page="apps"] .card[data-layout="shelf"] .shelf-brief{font:400 13.5px/1.6 var(--sans);color:var(--ink-2);display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-clamp:3;overflow:hidden;word-break:keep-all}
.shelf-meta{display:flex;align-items:center;gap:7px;min-width:0;white-space:nowrap}
.shelf-audience,.shelf-status{font:500 11px/1.25 var(--sans);padding:5px 7px;border-radius:5px}
.shelf-audience{color:var(--ink-2);background:var(--surface-2)}
.shelf-status{color:var(--note-ink);background:var(--note-bg)}
.shelf-actions{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;padding:0;margin:0;align-items:stretch}
.shelf-actions .open,.shelf-local{height:44px;padding:0 10px;justify-content:center;font:600 13px/1.2 var(--sans);white-space:nowrap;min-width:0;display:flex;align-items:center;gap:5px}
.shelf-local{background:var(--surface-2);color:var(--muted);border-radius:8px}
.shelf-detail-trigger{height:44px;border:1px solid var(--line-2);background:var(--surface);color:var(--ink-2);border-radius:8px;padding:0 10px;font:500 12.5px/1 var(--sans);cursor:pointer;display:flex;align-items:center;gap:5px;white-space:nowrap}
.shelf-detail-trigger span{color:var(--accent);font-size:15px}
.shelf-detail-trigger:hover{border-color:var(--accent);background:var(--accent-soft)}
.shelf-modal-open{overflow:hidden}
.shelf-details{width:min(640px,calc(100vw - 32px));max-height:calc(100dvh - 32px);padding:0;background:var(--surface);color:var(--ink);border:1px solid var(--line-2);border-radius:14px;box-shadow:0 20px 70px rgba(0,0,0,.24);overflow:auto}
.shelf-details::backdrop{background:rgba(13,29,23,.5);backdrop-filter:blur(3px)}
.shelf-dialog-head{position:sticky;top:0;z-index:1;display:flex;justify-content:space-between;gap:18px;background:var(--surface);border-bottom:1px solid var(--line);padding:22px 24px 18px}
.shelf-dialog-head .label{color:var(--muted);font-family:var(--sans);letter-spacing:.04em}
.shelf-dialog-head h2{font:600 23px/1.4 var(--display);margin:8px 0 0;text-wrap:initial}
.shelf-dialog-head form{margin:0;flex:none}
.shelf-dialog-close{width:44px;height:44px;border:1px solid var(--line);border-radius:50%;background:var(--surface-2);color:var(--ink);font:400 25px/1 var(--sans);cursor:pointer}
.shelf-dialog-body{padding:20px 24px 24px;font-size:14px;line-height:1.8}
.shelf-dialog-body p{margin:0 0 18px}
.shelf-dialog-body h3{font:600 14px/1.5 var(--sans);margin:0 0 8px}
.shelf-dialog-body section{margin:22px 0}
.shelf-dialog-body ul{padding-left:20px;margin:0;display:grid;gap:9px}
.shelf-dialog-body a{color:var(--accent);text-underline-offset:3px;overflow-wrap:anywhere}
.shelf-dialog-body .shelf-detail-status{color:var(--muted);font-size:12px}
.shelf-detail-note{padding:14px 16px;border-radius:8px;background:var(--note-bg);color:var(--note-ink)}
.shelf-detail-note p{margin:0}
.shelf-dialog-actions{position:sticky;bottom:0;display:flex;flex-wrap:wrap;gap:10px;margin:0;padding:16px 24px;background:var(--surface);border-top:1px solid var(--line)}
.shelf-dialog-actions:empty{display:none}
.shelf-dialog-actions .open,.shelf-dialog-actions .copy-link{min-height:44px;justify-content:center}
@media(max-width:1179px){[data-page="apps"] .grid,[data-page="apps"] .grid.solo,[data-page="apps"] .featured .grid.feat{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:860px){[data-page="apps"] .grid,[data-page="apps"] .grid.solo,[data-page="apps"] .featured .grid.feat{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:580px){[data-page="apps"] .grid,[data-page="apps"] .grid.solo,[data-page="apps"] .featured .grid.feat{grid-template-columns:1fr}.shelf-dialog-head{padding:18px 18px 15px}.shelf-dialog-head h2{font-size:21px}.shelf-dialog-body{padding:18px}.shelf-dialog-actions{padding:14px 18px}}
