.blog-shell{width:min(1120px,calc(100% - 48px));margin:0 auto;padding:60px 0 110px;color:#f5f5f7}.blog-hero{padding:50px 0 60px;border-bottom:1px solid rgba(255,255,255,.12)}.blog-hero span,.blog-count{color:#99c8ff;font-size:13px;letter-spacing:.08em}.blog-hero h1{font-size:clamp(40px,6vw,76px);line-height:1.15;letter-spacing:-.04em;margin:18px 0}.blog-hero p{color:#b6b6bd;font-size:18px;line-height:1.8}.blog-count{margin:32px 0 18px}.blog-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.blog-card{display:flex;flex-direction:column;overflow:hidden;min-width:0;border:1px solid rgba(255,255,255,.14);border-radius:22px;color:#f5f5f7;text-decoration:none;background:linear-gradient(145deg,rgba(255,255,255,.065),rgba(255,255,255,.02));transition:border-color .2s,transform .2s}.blog-card:hover{border-color:#84b5ff;transform:translateY(-3px)}.blog-card:focus-visible,.blog-bottom a:focus-visible,.blog-crumb a:focus-visible{outline:3px solid #95bdff;outline-offset:4px}.blog-card>img,.blog-card-art{width:100%;height:auto;aspect-ratio:16/9;object-fit:cover;background:#111b25}.blog-card-art{display:flex;align-items:flex-end;padding:24px;box-sizing:border-box;color:#9ec7f4;background:linear-gradient(135deg,#10212e,#171724);font-size:12px;letter-spacing:.16em}.blog-card>div{padding:24px;display:flex;flex-direction:column;flex:1}.blog-card h2{font-size:20px;line-height:1.5;margin:0 0 14px}.blog-card p{color:#b6b6bd;font-size:15px;line-height:1.8;margin:0 0 22px}.blog-card div>span{color:#a9caff;margin-top:auto}.blog-crumb{margin-bottom:35px}.blog-crumb a,.blog-bottom a{color:#a9caff;text-decoration:none}.blog-post{max-width:850px;margin:0 auto;color:#d2d2d7;overflow-wrap:anywhere}.blog-post h1{font-size:clamp(32px,4vw,52px);line-height:1.3;color:#f5f5f7;margin:28px 0}.blog-post h2{font-size:clamp(24px,3vw,32px);line-height:1.4;color:#f5f5f7;margin:52px 0 20px}.blog-post h3{font-size:21px;line-height:1.5;color:#f5f5f7;margin:32px 0 15px}.blog-post p,.blog-post li{font-size:16px;line-height:1.9;margin:0 0 16px}.blog-post a{color:#91c4ff}.blog-post img{display:block;max-width:100%;height:auto;border-radius:16px;margin:24px auto}.blog-post ul,.blog-post ol{padding-left:1.5em;margin:18px 0 25px}.blog-post strong{color:#f5f5f7}.blog-post blockquote{margin:25px 0;padding:16px 24px;border-left:3px solid #84b5ff;background:rgba(125,180,255,.07)}.blog-post details{border:1px solid rgba(255,255,255,.14);border-radius:16px;padding:18px 22px;margin:22px 0}.blog-post summary{cursor:pointer}.blog-post table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;margin:24px 0}.blog-post th,.blog-post td{border:1px solid rgba(255,255,255,.16);padding:12px;min-width:110px;text-align:left}.blog-post hr{border:0;border-top:1px solid rgba(255,255,255,.14);margin:36px 0}.blog-post pre{overflow-x:auto;padding:18px;border-radius:12px;background:#141922}.blog-post svg{width:16px;height:16px;vertical-align:middle}.blog-bottom{display:flex;justify-content:space-between;gap:20px;margin:60px auto 0;max-width:850px}.blog-post [hidden]{display:none}@media(max-width:820px){.blog-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:540px){.blog-shell{width:calc(100% - 32px);padding:30px 0 70px}.blog-hero{padding:35px 0 45px}.blog-grid{grid-template-columns:1fr}.blog-card>div{padding:20px}.blog-post p,.blog-post li{font-size:16px}.blog-post h1{font-size:32px}.blog-bottom{flex-wrap:wrap}}@media(prefers-reduced-motion:reduce){.blog-card{transition:none}.blog-card:hover{transform:none}}

body.tutorial-apple .blog-shell>.article-heading{min-height:180px;padding:32px 40px;margin-bottom:30px}
@media(max-width:540px){body.tutorial-apple .blog-shell>.article-heading{min-height:150px;padding:28px 20px}}

body.tutorial-apple .blog-post table{min-width:0;width:100%;max-width:100%;overflow-x:auto}

.blog-source-qr{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-top:54px;padding:28px;border:1px solid rgba(255,255,255,.14);border-radius:22px;background:rgba(255,255,255,.035)}
.blog-source-qr h2{font-size:22px;line-height:1.5;margin:0 0 14px}.blog-source-qr p{color:#b6b6bd;line-height:1.8;margin:6px 0}.blog-source-qr img{width:160px;height:160px;object-fit:contain;background:#fff;border-radius:12px;flex:none}
@media(max-width:540px){.blog-source-qr{align-items:flex-start;flex-direction:column}.blog-source-qr img{width:140px;height:140px}}

body.tutorial-apple .blog-post details{background:#0e0e0e;color:#d2d2d7;padding:0}
body.tutorial-apple .blog-post details summary{color:#f5f5f7}
body.tutorial-apple .blog-post details a{color:#91c4ff}
body.tutorial-apple .blog-post details>:not(summary){margin-left:24px;margin-right:24px}
body.tutorial-apple .blog-post details summary::after{box-sizing:border-box;background:transparent;border:1px solid #86868b;color:#86868b}

body.tutorial-apple .blog-post article>details a{display:block;padding:4px 0;line-height:1.6}
body.tutorial-apple .blog-post details summary::after{width:25px;height:25px;display:grid;place-items:center;border-radius:50%;flex:none}

/* Blog-only full-bleed violet PRO Threads tunnel; poster stays visible until WebGL is ready. */
body.tutorial-apple .blog-shell>.intro{width:100%;max-width:none}
body.tutorial-apple .blog-shell>.intro>.tutorial-threads{left:50%;right:auto;width:100vw;transform:translateX(-50%);background:#08030f;mask-image:linear-gradient(90deg,transparent 0%,#000 14%,#000 86%,transparent 100%),linear-gradient(to bottom,transparent 0%,#000 26%,#000 67%,transparent 100%);mask-composite:intersect}
body.tutorial-apple .blog-shell>.intro>.tutorial-threads::after{background:linear-gradient(90deg,rgba(4,1,10,.88) 0%,rgba(5,1,12,.65) 35%,rgba(5,1,12,.16) 100%)}
body.tutorial-apple .blog-shell .tutorial-threads .tutorial-poster{filter:hue-rotate(55deg) saturate(1.1)}
@media(max-width:820px){body.tutorial-apple .blog-shell>.intro>.tutorial-threads{mask-image:linear-gradient(90deg,transparent 0%,#000 12%,#000 88%,transparent 100%),linear-gradient(to bottom,transparent 0%,#000 24%,#000 65%,transparent 100%);mask-composite:intersect}body.tutorial-apple .blog-shell>.intro>.tutorial-threads::after{background:linear-gradient(90deg,rgba(4,1,10,.82),rgba(5,1,12,.28))}}

/* Article-only full-bleed tunnel: same violet renderer and fade as blog index. */
body.tutorial-apple .blog-shell>.article-heading>.tutorial-threads{left:50%;right:auto;width:100vw;transform:translateX(-50%);background:#08030f;mask-image:linear-gradient(90deg,transparent 0%,#000 14%,#000 86%,transparent 100%),linear-gradient(to bottom,transparent 0%,#000 26%,#000 67%,transparent 100%);mask-composite:intersect}
body.tutorial-apple .blog-shell>.article-heading>.tutorial-threads::after{background:linear-gradient(90deg,rgba(4,1,10,.88) 0%,rgba(5,1,12,.65) 35%,rgba(5,1,12,.16) 100%)}
@media(max-width:820px){body.tutorial-apple .blog-shell>.article-heading>.tutorial-threads{mask-image:linear-gradient(90deg,transparent 0%,#000 12%,#000 88%,transparent 100%),linear-gradient(to bottom,transparent 0%,#000 24%,#000 65%,transparent 100%);mask-composite:intersect}body.tutorial-apple .blog-shell>.article-heading>.tutorial-threads::after{background:linear-gradient(90deg,rgba(4,1,10,.82),rgba(5,1,12,.28))}}
