:root { --ml-radius: .75rem; --ml-gap: 1rem; --ml-shadow: 0 6px 24px rgba(0,0,0,.08); } .ml-prose-container { display: grid; gap: var(--ml-gap); } .ml-card { background: var(--background, #fff); color: var(--foreground, #0a0a0a); border: 1px solid var(--border, rgba(0,0,0,.08)); border-radius: var(--ml-radius); padding: 1rem; box-shadow: var(--shadow, 0 1px 0 rgba(0,0,0,.02)); } /* general card/grid */ .ml-grid { display: grid; gap: var(--ml-gap); grid-template-columns: repeat(1, minmax(0,1fr)); } @media (min-width: 640px){ .ml-grid{ grid-template-columns: repeat(2, minmax(0,1fr)); } } @media (min-width: 1024px){ .ml-grid{ grid-template-columns: repeat(3, minmax(0,1fr)); } } /* libraries stacked (categories vertical, libraries 1 per row) */ .ml-stacked { display: grid; gap: 1.25rem; } .ml-section{ display:grid; gap:.5rem; } .ml-section h3{ margin:.25rem 0; font-size:1.05rem; font-weight:700; opacity:.85; display:flex; gap:.5rem; align-items:center; } .ml-card-item{ background: var(--card, var(--background, #fff)); border: 1px solid var(--border, rgba(0,0,0,.08)); border-radius: var(--ml-radius); padding: 1rem; transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease; cursor: pointer; } .ml-card-item:hover{ transform: translateY(-2px); box-shadow: var(--ml-shadow); border-color: var(--primary, #3b82f6); } .ml-card-head{ display:flex; align-items:flex-start; justify-content:space-between; gap:.75rem; margin-bottom:.5rem; } .ml-card-title{ font-weight: 650; font-size: 1rem; } .ml-card-sub{ font-size: .85rem; opacity: .7; } .ml-card-sample{ margin-top:.5rem; font-size:.92rem; line-height:1.5; opacity:.9; display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; } .ml-card-foot{ display:flex; justify-content:space-between; align-items:center; border-top:1px solid var(--border, rgba(0,0,0,.08)); padding-top:.5rem; margin-top:.75rem; font-size:.85rem; opacity:.8; } /* toolbar */ .ml-toolbar{ display:flex; gap:.75rem; align-items:center; justify-content:space-between; flex-wrap:wrap; } .ml-input-wrap{ position:relative; flex:1; min-width: 260px; } .ml-input-wrap input{ width:100%; padding:.6rem .9rem .6rem 2.2rem; border-radius:.6rem; border:1px solid var(--border, rgba(0,0,0,.12)); background: var(--muted, rgba(0,0,0,.02)); color: var(--foreground, #0a0a0a); outline:none; } .ml-input-wrap input:focus{ border-color: var(--primary, #3b82f6); box-shadow: 0 0 0 3px color-mix(in srgb, var(--primary, #3b82f6) 22%, transparent); background: var(--background, #fff); } .ml-icon{ position:absolute; left:.6rem; top:50%; transform:translateY(-50%); width:1.1rem; height:1.1rem; opacity:.6; } .ml-btn{ border:1px solid var(--border, rgba(0,0,0,.12)); background: var(--accent, var(--background, #fff)); color: var(--foreground, #0a0a0a); padding:.55rem .9rem; border-radius:.55rem; cursor:pointer; } .ml-btn.secondary{ background: var(--muted, rgba(0,0,0,.03)); } .ml-btn:hover{ border-color: var(--primary, #3b82f6); } /* stats/breadcrumb */ .ml-stats{ margin-top:.5rem; font-size:.9rem; opacity:.8; } .ml-crumb{ display:flex; align-items:center; gap:.75rem; } .ml-link{ background:none; border:none; color: var(--primary, #3b82f6); cursor:pointer; padding:.25rem .5rem; border-radius:.4rem; } .ml-link:hover{ text-decoration: underline; } .ml-crumb-title{ font-weight:600; opacity:.8; } /* states */ .ml-loading, .ml-error, .ml-empty{ display:grid; justify-items:center; gap:.5rem; padding:3rem 1rem; } .ml-spinner{ width:38px; height:38px; border-radius:999px; border:3px solid color-mix(in srgb, var(--foreground,#000) 12%, transparent); border-top-color: var(--primary,#3b82f6); animation: ml-spin 1s linear infinite; } @keyframes ml-spin{ to{ transform: rotate(360deg); } } .ml-muted{ opacity:.7; } .ml-error-icon{ font-size:1.4rem; } /* chips */ .ml-chip{ display:inline-block; padding:.25rem .55rem; border-radius:999px; font-size:.78rem; background: color-mix(in srgb, var(--primary,#3b82f6) 12%, transparent); color: var(--primary,#3b82f6); } .ml-chip.success{ background: color-mix(in srgb, #16a34a 14%, transparent); color: #16a34a; } .ml-chip.beta{ background: color-mix(in srgb, #f59e0b 14%, transparent); color: #b45309; } .ml-chip.contribute { background: color-mix(in srgb, #3b82f6 14%, transparent); color: #1d4ed8; } /* code/note */ .ml-code{ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace; background: var(--muted, rgba(0,0,0,.04)); border:1px solid var(--border, rgba(0,0,0,.08)); padding:.75rem; border-radius:.6rem; white-space:pre-wrap; } .ml-note{ background: color-mix(in srgb, #f59e0b 9%, transparent); border:1px solid color-mix(in srgb, #f59e0b 28%, transparent); padding:.75rem; border-radius:.6rem; } /* meta */ .ml-meta{ display:grid; grid-template-columns: repeat(1, minmax(0,1fr)); gap:.5rem; } @media (min-width: 640px){ .ml-meta{ grid-template-columns: repeat(2, minmax(0,1fr)); } } .ml-meta > div{ display:flex; justify-content:space-between; align-items:center; padding:.5rem .75rem; border:1px dashed var(--border, rgba(0,0,0,.12)); border-radius:.5rem; background: var(--background, #fff); } .ml-meta span{ opacity:.7; } .mono{ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; } /* modal */ .ml-modal{ padding:0; border:none; background: transparent; } .ml-modal[open]{ display:grid; align-items:center; justify-items:center; } .ml-modal::backdrop{ background: rgba(0,0,0,.45); } .ml-modal-card{ width:min(100%, 960px); max-height: 85vh; overflow:auto; background: var(--background, #fff); color: var(--foreground,#0a0a0a); border:1px solid var(--border, rgba(0,0,0,.1)); border-radius: var(--ml-radius); padding: 1rem; box-shadow: var(--ml-shadow); } .ml-modal-header{ display:flex; justify-content:space-between; align-items:center; gap:.75rem; margin-bottom:.5rem; } .ml-close{ border:none; background:none; font-size:1.1rem; cursor:pointer; opacity:.6; } .ml-close:hover{ opacity:1; } .ml-modal-section{ display:grid; gap:.35rem; margin-top:.75rem; } .ml-section-title{ font-weight:650; opacity:.85; } .ml-modal-footer{ display:flex; justify-content:flex-end; margin-top:1rem; } /* pagination */ .ml-pagination{ display:flex; justify-content:space-between; align-items:center; padding:.5rem .25rem; } .ml-page-controls{ display:flex; gap:.5rem; } .ml-page-info{ font-size:.9rem; opacity:.8; } [hidden] { display: none !important; }