/* ===== Model library v2 (catalog + model pages), on top of lab-shared.css ===== */
.mc-hero{padding-bottom:48px;}
.mc-h1{max-width:18ch;}
.mc-lede{max-width:60ch;margin-top:18px;}
.mc-stats{display:flex;gap:40px;margin-top:32px;}
.mc-stats div{display:flex;flex-direction:column;}
.mc-stats b{font-family:var(--mono);font-weight:400;font-size:32px;line-height:40px;letter-spacing:-.02em;color:var(--ink);}
.mc-stats span{font-size:13px;color:var(--muted);}
.mc-body{padding-top:48px;}
.mc-layout{display:grid;grid-template-columns:248px minmax(0,1fr);gap:40px;align-items:start;}
.mc-rail{position:sticky;top:84px;display:flex;flex-direction:column;gap:14px;max-height:calc(100vh - 100px);overflow:auto;padding-bottom:12px;}
.mc-search{display:flex;align-items:center;gap:8px;height:40px;padding:0 12px;border:1px solid var(--border-control);border-radius:var(--radius-control);background:var(--bg);}
.mc-search svg{width:16px;height:16px;color:var(--muted);flex:0 0 16px;}
.mc-search input{border:0;outline:0;font:inherit;font-size:14px;color:var(--ink);width:100%;background:transparent;}
.mc-seg{display:flex;padding:3px;border-radius:999px;background:var(--surface);border:1px solid var(--hairline);gap:2px;}
.mc-seg button{flex:1;border:0;background:transparent;font:inherit;font-size:12px;color:var(--muted);padding:6px 6px;border-radius:999px;cursor:pointer;white-space:nowrap;}
.mc-seg button.is-on{background:var(--bg);color:var(--ink);box-shadow:0 0 0 1px var(--hairline);}
.mc-rl{font-size:12px;color:var(--muted);margin:6px 0 -6px 10px;}
.mc-rcs{display:flex;flex-direction:column;gap:1px;}
.mc-rc{display:flex;align-items:center;gap:10px;height:34px;padding:0 10px;border:0;background:transparent;border-radius:var(--radius-control);font:inherit;font-size:13px;color:var(--ink-body);cursor:pointer;text-align:left;}
.mc-rc:hover{background:var(--surface);}
.mc-rc.is-on{background:var(--navy-tint);color:var(--ink);font-weight:500;}
.mc-rci svg{width:16px;height:16px;color:var(--muted);display:block;}
.mc-rc.is-on .mc-rci svg{color:var(--navy-600);}
.mc-rcn{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--faint);}
.mc-bar{display:flex;align-items:center;justify-content:space-between;padding-bottom:14px;border-bottom:1px solid var(--hairline);font-size:13px;color:var(--muted);}
.mc-sort{display:inline-flex;align-items:center;gap:8px;}
.mc-sort select{font:inherit;font-size:13px;color:var(--ink);border:1px solid var(--border-control);border-radius:var(--radius-control);padding:6px 10px;background:var(--bg);}
.mc-cat{padding-top:28px;}
.mc-cat[hidden]{display:none;}
.mc-cath{display:flex;align-items:baseline;gap:10px;font-family:var(--font);font-size:16px;font-weight:600;letter-spacing:-.01em;color:var(--ink);margin:0 0 14px;}
.mc-cath span{font-family:var(--mono);font-size:12px;font-weight:400;color:var(--faint);}
.mc-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;}
.mc-card{display:grid;grid-template-columns:36px minmax(0,1fr);grid-template-rows:auto auto;column-gap:12px;row-gap:8px;padding:14px;border:1px solid var(--hairline);border-radius:var(--radius-card);background:var(--bg);text-decoration:none;text-align:left;font:inherit;cursor:pointer;transition:border-color .2s ease,box-shadow .2s ease;}
.mc-card:hover{border-color:var(--border-control);box-shadow:0 1px 2px color-mix(in srgb,var(--navy) 6%,transparent),0 8px 24px -16px color-mix(in srgb,var(--navy) 30%,transparent);}
.mc-card[hidden]{display:none;}
.mc-ico{width:36px;height:36px;border-radius:10px;background:var(--navy-tint);color:var(--navy-600);display:inline-flex;align-items:center;justify-content:center;flex:0 0 36px;}
.mc-ico svg{width:18px;height:18px;}
.mc-card.is-dev .mc-ico{background:var(--surface);color:var(--muted);}
.mc-ct{display:flex;flex-direction:column;align-items:flex-start;gap:4px;min-width:0;}
.mc-ct b{font-size:14px;font-weight:600;color:var(--ink);}
.mc-st{display:inline-flex;align-items:center;gap:5px;font-size:11px;line-height:16px;padding:1px 8px;border-radius:999px;white-space:nowrap;}
.mc-st::before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor;}
.mc-st--ok{color:var(--success-text);background:var(--success-tint);}
.mc-st--dev{color:var(--muted);background:var(--surface);}
.mc-feat{grid-column:1 / -1;font-size:12px;line-height:17px;color:var(--muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.mc-card.is-dev .mc-ct b{color:var(--ink-body);}
.mc-empty{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:40px 0;font-size:14px;color:var(--muted);}
.mc-empty b{font-size:16px;color:var(--ink);}
.mc-empty .btn{margin-top:8px;}
/* drawer */
.mc-ov{position:fixed;inset:0;z-index:80;background:color-mix(in srgb,var(--navy) 22%,transparent);opacity:0;transition:opacity .25s ease;}
.mc-ov.is-open{opacity:1;}
.mc-dr{position:fixed;top:0;right:0;bottom:0;z-index:81;width:min(460px,100vw);background:var(--bg);border-left:1px solid var(--hairline);box-shadow:-24px 0 48px -24px color-mix(in srgb,var(--navy) 30%,transparent);transform:translateX(100%);transition:transform .3s cubic-bezier(.22,1,.36,1);display:flex;flex-direction:column;}
.mc-dr.is-open{transform:none;}
.mc-drh{display:flex;align-items:flex-start;gap:12px;padding:22px 24px 18px;border-bottom:1px solid var(--hairline);}
.mc-drh h2{margin:0;font-family:var(--font-display);font-weight:400;font-size:26px;line-height:32px;color:var(--ink);}
.mc-drh p{margin:4px 0 0;font-size:13px;color:var(--muted);display:flex;align-items:center;gap:8px;}
.mc-x{margin-left:auto;width:32px;height:32px;border-radius:var(--radius-control);border:1px solid var(--hairline);background:var(--bg);color:var(--muted);cursor:pointer;display:flex;align-items:center;justify-content:center;flex:0 0 32px;}
.mc-x svg{width:16px;height:16px;}
.mc-drb{flex:1;overflow:auto;padding:4px 24px 24px;}
.mc-blk{padding:18px 0;border-bottom:1px solid var(--hairline);}
.mc-blk:last-child{border-bottom:0;}
.mc-bl{font-size:12px;color:var(--muted);margin-bottom:10px;}
.mc-chips{display:flex;flex-wrap:wrap;gap:6px;}
.mc-chips span{font-size:12px;line-height:16px;padding:5px 10px;border-radius:999px;background:var(--navy-tint);color:var(--navy-600);}
.mc-chips.is-in span{background:var(--surface);color:var(--ink-body);border:1px solid var(--hairline);}
.mc-chips.is-out span{background:transparent;color:var(--muted);border:1px dashed var(--border-control);}
.mc-ep{display:flex;align-items:center;gap:8px;padding:10px 12px;border:1px solid var(--hairline);border-radius:var(--radius-control);background:var(--surface);font-family:var(--mono);font-size:12px;color:var(--ink);}
.mc-ep b{font-weight:400;font-size:11px;color:#fff;background:var(--navy);border-radius:5px;padding:2px 7px;}
.mc-ep button{margin-left:auto;border:0;background:transparent;font:inherit;font-family:var(--font);font-size:12px;color:var(--navy-600);cursor:pointer;}
.mc-note{font-size:13px;line-height:19px;color:var(--ink-body);display:flex;gap:10px;align-items:flex-start;}
.mc-note svg{width:16px;height:16px;color:var(--navy-600);flex:0 0 16px;margin-top:2px;}
.mc-rel{display:flex;flex-wrap:wrap;gap:6px;}
.mc-rel a,.mc-rel span{font-size:12px;padding:5px 10px;border-radius:999px;border:1px solid var(--hairline);color:var(--ink);text-decoration:none;}
.mc-rel span{color:var(--muted);}
.mc-drf{display:flex;gap:8px;padding:16px 24px;border-top:1px solid var(--hairline);}
.mc-drf .btn{flex:1;justify-content:center;}
body.mc-lock{overflow:hidden;}
@media(max-width:1100px){.mc-cards{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(max-width:860px){.mc-layout{grid-template-columns:minmax(0,1fr);gap:20px;}.mc-rail{position:static;max-height:none;overflow:visible;}.mc-rcs{flex-direction:row;overflow-x:auto;gap:6px;padding-bottom:4px;}.mc-rc{flex:0 0 auto;border:1px solid var(--hairline);}.mc-rl{display:none;}.mc-stats{gap:24px;}}
@media(max-width:560px){.mc-cards{grid-template-columns:minmax(0,1fr);}.mc-stats b{font-size:26px;}}

/* ----- model page ----- */
.mp-hero{padding-top:28px;}
.mp-crumb{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--muted);margin-bottom:44px;}
.mp-crumb a{color:var(--muted);text-decoration:none;} .mp-crumb a:hover{color:var(--ink);}
.mp-crumb [aria-current]{color:var(--ink);}
.mp-hgrid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:56px;align-items:center;}
.mp-h1{max-width:none;}
.mp-lede{color:var(--ink);max-width:52ch;margin-top:18px;}
.mp-meta{display:flex;align-items:center;gap:12px;margin-top:22px;flex-wrap:wrap;}
.mp-ep{display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:12px;color:var(--ink);padding:5px 10px 5px 6px;border:1px solid var(--hairline);border-radius:var(--radius-control);background:var(--surface);}
.mp-ep b{font-weight:400;font-size:11px;color:#fff;background:var(--navy);border-radius:5px;padding:1px 6px;}
.mp-cta{margin-top:26px;display:flex;gap:10px;flex-wrap:wrap;}
.mp-viz{background:var(--bg);border:1px solid var(--hairline);border-radius:var(--radius-panel);padding:20px 22px;box-shadow:0 0 0 8px var(--surface),var(--shadow-frame);margin:8px;}
.mp-vh{display:flex;align-items:center;gap:12px;padding-bottom:14px;border-bottom:1px solid var(--hairline);margin-bottom:6px;}
.mp-vh b{display:block;font-size:14px;color:var(--ink);} .mp-vh div span{display:block;font-size:12px;color:var(--muted);}
.mp-vs{margin-left:auto;font-family:var(--mono);font-size:22px;color:var(--ink);}
.mp-vr{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) 40px;align-items:center;gap:12px;padding:9px 0;font-size:13px;color:var(--ink-body);}
.mp-vb{height:6px;border-radius:999px;background:var(--wash);overflow:hidden;}
.mp-vb i{display:block;height:100%;background:var(--navy);border-radius:inherit;transform-origin:left;animation:mpBar .9s cubic-bezier(.22,1,.36,1) both;animation-delay:calc(.15s + var(--i)*.08s);}
.mp-vr.is-low .mp-vb i{background:var(--navy-300);}
.mp-vr b{font-family:var(--mono);font-weight:400;font-size:12px;color:var(--ink);text-align:right;}
@keyframes mpBar{from{transform:scaleX(0);}to{transform:none;}}
.mp-vf{margin-top:8px;padding-top:12px;border-top:1px solid var(--hairline);font-size:12px;color:var(--muted);}
.mp-feats{list-style:none;margin:36px 0 0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:1px solid var(--hairline);}
.mp-feats li{display:flex;align-items:baseline;gap:14px;padding:18px 18px 18px 0;border-bottom:1px solid var(--hairline);font-size:15px;color:var(--ink);}
.mp-feats li span{font-family:var(--mono);font-size:12px;color:var(--faint);}
.mp-scope{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:48px;margin-top:28px;}
.mp-scope h3{font-family:var(--font);font-size:13px;font-weight:500;color:var(--muted);margin:0 0 10px;}
.mp-scope ul{list-style:none;margin:0;padding:0;}
.mp-scope li{display:flex;align-items:center;gap:10px;padding:11px 0;border-bottom:1px solid var(--hairline);font-size:15px;color:var(--ink);}
.mp-scope li::before{content:"";width:16px;height:16px;flex:0 0 16px;background:no-repeat center/16px url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%232F7A45' stroke-width='2.2'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E");}
.mp-scope ul.is-out li{color:var(--muted);}
.mp-scope ul.is-out li::before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238F96A3' stroke-width='2'%3E%3Cpath d='M6 12h12'/%3E%3C/svg%3E");}
.mp-out{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:48px;align-items:center;}
.mp-out .lede{margin:16px 0 22px;}
.mp-code{border-radius:var(--radius-card);}
.mp-codeh{display:flex;align-items:center;gap:8px;padding:10px 16px;border-bottom:1px solid var(--hairline);font-family:var(--mono);font-size:12px;color:var(--ink);}
.mp-codeh b{font-weight:400;font-size:11px;color:#fff;background:var(--navy);border-radius:5px;padding:1px 6px;}
.mp-codeh span{margin-left:auto;color:var(--success-text);font-size:11px;}
.mp-code .k{color:var(--navy-600);} .mp-code .s{color:#2E5B9A;} .mp-code .n{color:var(--ink);}
.mp-use{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:28px;}
.mp-use a{display:flex;flex-direction:column;gap:8px;padding:22px;border:1px solid var(--hairline);border-radius:var(--radius-card);text-decoration:none;transition:border-color .2s ease;}
.mp-use a:hover{border-color:var(--border-control);}
.mp-use span{font-size:12px;color:var(--muted);}
.mp-use b{font-size:16px;font-weight:600;color:var(--ink);}
.mp-use p{margin:0;font-size:14px;line-height:1.55;color:var(--muted);}
.mp-caps{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 48px;margin-top:20px;}
.mp-caps div{padding:22px 0;border-bottom:1px solid var(--hairline);}
.mp-caps h3{font-family:var(--font);letter-spacing:-.01em;margin:0 0 8px;font-size:16px;font-weight:600;color:var(--ink);}
.mp-caps p{margin:0;font-size:14px;line-height:1.6;color:var(--muted);}
.mp-relh{font-size:28px;}
.mp-rel{display:flex;flex-wrap:wrap;gap:10px;margin-top:20px;}
.mp-rel a,.mp-rel>span{display:inline-flex;align-items:center;gap:10px;padding:8px 14px 8px 8px;border:1px solid var(--hairline);border-radius:999px;font-size:14px;color:var(--ink);text-decoration:none;}
.mp-rel .mc-ico{width:28px;height:28px;flex:0 0 28px;border-radius:999px;} .mp-rel .mc-ico svg{width:15px;height:15px;}
.mp-rel>span{color:var(--muted);} .mp-rel em{font-style:normal;font-size:11px;color:var(--faint);}
.mp-pager{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:32px;}
.mp-pager a{display:flex;flex-direction:column;gap:4px;padding:18px 20px;border:1px solid var(--hairline);border-radius:var(--radius-card);text-decoration:none;font-size:16px;color:var(--ink);}
.mp-pager a span{font-size:12px;color:var(--muted);}
.mp-pager a.nx{text-align:right;}
@media(max-width:980px){.mp-hgrid,.mp-out{grid-template-columns:minmax(0,1fr);gap:32px;}.mp-use{grid-template-columns:minmax(0,1fr);}.mp-feats{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(max-width:640px){.mp-scope,.mp-caps{grid-template-columns:minmax(0,1fr);gap:24px;}.mp-feats{grid-template-columns:minmax(0,1fr);}.mp-pager{grid-template-columns:minmax(0,1fr);}.mp-crumb{margin-bottom:28px;}}
@media(prefers-reduced-motion:reduce){.mp-vb i{animation:none;}.mc-dr,.mc-ov{transition:none;}}

/* ----- model page v3: reading layout ----- */
.mp3{padding-top:64px;}
.mp3-grid{display:grid;grid-template-columns:200px minmax(0,720px);gap:64px;justify-content:start;}
.mp3-toc{position:sticky;top:96px;align-self:start;display:flex;flex-direction:column;gap:2px;}
.mp3-toc span{font-size:12px;color:var(--muted);margin:0 0 8px 12px;}
.mp3-toc a{font-size:14px;line-height:20px;color:var(--muted);text-decoration:none;padding:6px 12px;border-left:2px solid var(--hairline);}
.mp3-toc a:hover{color:var(--ink);}
.mp3-toc a.is-on{color:var(--ink);border-left-color:var(--navy);}
.mp3-art>section{padding:0 0 56px;margin-bottom:56px;border-bottom:1px solid var(--hairline);scroll-margin-top:96px;}
.mp3-art>section:last-child{border-bottom:0;margin-bottom:0;padding-bottom:0;}
.mp3-art h2{font-family:var(--font-display);font-weight:400;font-size:30px;line-height:36px;letter-spacing:-.01em;color:var(--ink);margin:0 0 12px;}
.mp3-art>section>p{font-size:16px;line-height:26px;color:var(--ink-body);margin:0 0 24px;max-width:62ch;}
.mp3-scope{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:28px;}
.mp3-scope h3{font-family:var(--font);font-size:13px;font-weight:500;color:var(--muted);margin:0 0 10px;}
.mp3-scope .mc-chips span{font-size:14px;line-height:20px;padding:6px 12px;}
.mp3-feats{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:28px;border-top:1px solid var(--hairline);}
.mp3-feats li{display:flex;align-items:baseline;gap:14px;padding:14px 0;border-bottom:1px solid var(--hairline);font-size:16px;color:var(--ink);}
.mp3-feats li span{font-family:var(--mono);font-size:12px;color:var(--faint);}
.mp3-use{display:flex;flex-direction:column;border-top:1px solid var(--hairline);}
.mp3-use a{display:grid;grid-template-columns:200px minmax(0,1fr) 20px;align-items:center;gap:16px;padding:18px 0;border-bottom:1px solid var(--hairline);text-decoration:none;}
.mp3-use a::after{content:"→";color:var(--muted);transition:transform .2s ease;}
.mp3-use a:hover::after{transform:translateX(3px);color:var(--ink);}
.mp3-use span{font-size:13px;color:var(--muted);}
.mp3-use b{font-size:16px;font-weight:500;color:var(--ink);}
.mp3-caps{margin:0;display:flex;flex-direction:column;border-top:1px solid var(--hairline);}
.mp3-caps div{display:grid;grid-template-columns:240px minmax(0,1fr);gap:24px;padding:18px 0;border-bottom:1px solid var(--hairline);}
.mp3-caps dt{font-size:15px;font-weight:600;color:var(--ink);}
.mp3-caps dd{margin:0;font-size:15px;line-height:24px;color:var(--ink-body);}
.mp3-art .faqlist{border-top:1px solid var(--hairline);}
.mp3-art .mp-rel{margin-top:4px;}
.mp-rel a.is-dev{color:var(--muted);}
.mp-rel a.is-dev em{font-style:normal;font-size:11px;color:var(--faint);}
.mp3-early{display:inline-flex;align-items:center;font-size:12px;line-height:16px;color:var(--navy-600);background:var(--navy-tint);border-radius:999px;padding:4px 10px;}
.mp3-vdev{margin-left:auto;font-size:11px;color:var(--muted);background:var(--surface);border:1px solid var(--hairline);border-radius:999px;padding:2px 8px;}
.mp-viz.is-dev .mp-vb i{background:var(--navy-300);}
@media(max-width:980px){.mp3-grid{grid-template-columns:minmax(0,1fr);gap:0;}.mp3-toc{display:none;}}
@media(max-width:640px){.mp3-scope,.mp3-feats{grid-template-columns:minmax(0,1fr);}.mp3-use a{grid-template-columns:minmax(0,1fr) 20px;}.mp3-use span{grid-column:1 / -1;}.mp3-caps div{grid-template-columns:minmax(0,1fr);gap:6px;}.mp3-art h2{font-size:26px;line-height:32px;}}
.mp3-feats li.mp3-more{color:var(--muted);font-size:15px;}
.mp3-feats li.mp3-more span{color:var(--navy-600);}

.mc-cta{display:flex;gap:12px;flex-wrap:wrap;margin-top:28px;}

/* mobile: categories as a dropdown instead of a sideways-scrolling row */
.mc-catsel{display:none;}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;}
@media(max-width:860px){
  .mc-rcs{display:none;}
  .mc-catsel{display:block;position:relative;}
  .mc-catsel select{width:100%;appearance:none;-webkit-appearance:none;font:inherit;font-size:15px;color:var(--ink);background:var(--bg);border:1px solid var(--border-control);border-radius:var(--radius-control);padding:12px 40px 12px 14px;}
  .mc-catsel::after{content:"";position:absolute;right:16px;top:50%;width:8px;height:8px;border-right:1.6px solid var(--muted);border-bottom:1.6px solid var(--muted);transform:translateY(-70%) rotate(45deg);pointer-events:none;}
}
