/* Ryan Learning Lab — local assets, no external font or analytics dependency. */
:root{--ryan-ink:#18243d;--ryan-muted:#657189;--ryan-paper:#f4f6fb;--ryan-card:#fff;--ryan-line:#e1e6f0;--ryan-accent:#6654dc;--link-color:#6654dc!important;--link-hover:#398678!important;--bg-color:#f4f6fb!important;--text-color:#18243d!important}
[data-theme="dark"]{--ryan-ink:#e5eaf7;--ryan-muted:#a1acc4;--ryan-paper:#101625;--ryan-card:#182133;--ryan-line:#2b354c;--bg-color:#101625!important;--text-color:#e5eaf7!important;--text-secondary:#a1acc4!important;--link-color:#b3a7ff!important}
html{scroll-behavior:smooth;scroll-padding-top:30px}body{background:var(--ryan-paper);color:var(--ryan-ink);font-family:Inter,"Segoe UI","Microsoft YaHei",sans-serif;overflow-x:clip}.container{max-width:1160px;padding-left:28px;padding-right:28px}.header{padding:27px 0 24px;margin-bottom:14px}.nav{justify-content:space-between;gap:18px}.nav-left .logo-text{font-weight:850;font-size:22px;letter-spacing:-.7px;color:var(--ryan-ink)}.nav-left .logo-text:before{content:"R";display:inline-grid;place-items:center;width:34px;height:34px;border-radius:11px;margin-right:10px;background:linear-gradient(135deg,#7462e7,#39ad96);color:#fff;font-size:22px}.nav-link,.nav-center>a{font-size:14px}.header .nav-center{gap:24px}.theme-toggle{border-radius:12px}a:focus-visible,button:focus-visible{outline:3px solid #8b7be9;outline-offset:5px}
.ryan-home{margin:0 0 38px}.ryan-hero{isolation:isolate;position:relative;overflow:hidden;display:grid;grid-template-columns:1.25fr 1fr;align-items:center;gap:28px;padding:56px 48px;border-radius:30px;color:#eef1ff;background:#131b32;box-shadow:0 22px 55px #17264c16;min-height:380px}.ryan-hero:before{content:"";position:absolute;z-index:-2;inset:-50%;background:radial-gradient(ellipse at 72% 45%,#7655d758,transparent 38%),radial-gradient(ellipse at 30% 80%,#2fa69230,transparent 37%);animation:ryan-aurora 19s ease-in-out infinite alternate}.ryan-hero:after{content:"";position:absolute;inset:0;z-index:-1;opacity:.17;background-image:linear-gradient(#b1b9e82a 1px,transparent 1px),linear-gradient(90deg,#b1b9e82a 1px,transparent 1px);background-size:34px 34px;mask-image:linear-gradient(120deg,transparent,#000)}.ryan-glow{pointer-events:none;position:absolute;inset:0;z-index:-1;background:radial-gradient(380px circle at var(--px,65%) var(--py,35%),#96baff13,transparent 75%)}.ryan-eyebrow{display:flex;align-items:center;gap:8px;color:#acb9d6;font:600 11px/1.5 ui-monospace,monospace;letter-spacing:2.4px;text-transform:uppercase}.ryan-live-dot{width:6px;height:6px;border-radius:50%;background:#63dec1;box-shadow:0 0 12px #63dec17a}.ryan-hero h1{font-family:inherit;font-size:clamp(31px,4vw,47px);font-weight:850;line-height:1.35;letter-spacing:-1.5px;margin:21px 0 17px;color:#fff}.ryan-hero h1 em{font-style:normal;background:linear-gradient(90deg,#b8acf9,#75e3cd);background-clip:text;-webkit-background-clip:text;color:transparent}.ryan-hero p{font-size:14px;line-height:1.95;color:#b3bfd9;max-width:440px;margin:0 0 25px}.ryan-actions{display:flex;gap:12px;flex-wrap:wrap}.ryan-btn{display:inline-flex;align-items:center;gap:15px;padding:11px 19px;border-radius:10px;text-decoration:none!important;font-size:13px;font-weight:650;transition:transform .2s,background .2s}.ryan-btn-primary{background:#d4f8e8;color:#143c37!important}.ryan-btn-primary:hover{transform:translateY(-3px);background:#e2fff3}.ryan-btn-secondary{border:1px solid #53617d;color:#e7edff!important}.ryan-btn-secondary:hover{background:#ffffff0d;transform:translateY(-3px)}.ryan-stats{display:flex;gap:18px;align-items:center;margin-top:30px;color:#93a3c5;font-size:11px}.ryan-stats b{color:#d6e2fa;font-weight:600}.ryan-motion-toggle{position:absolute;right:20px;bottom:14px;border:0;background:none;color:#94a1c0;font-size:10px;cursor:pointer;padding:4px 8px}.ryan-motion-toggle:hover{color:#fff}
.ryan-terminal{position:relative;border:1px solid #8492ce38;background:#0d152bd9;border-radius:17px;box-shadow:0 24px 60px #0004;transform:rotate(2deg);animation:ryan-float 7s ease-in-out infinite}.ryan-terminal-top{display:flex;align-items:center;gap:5px;padding:14px 17px;border-bottom:1px solid #8192c31c;font:10px ui-monospace,monospace;color:#7e91b8}.ryan-terminal-top i{height:6px;width:6px;border-radius:50%;display:block;background:#f298a0}.ryan-terminal-top i:nth-child(2){background:#e9c679}.ryan-terminal-top i:nth-child(3){background:#70cfb4}.ryan-terminal-top span{margin-left:12px}.ryan-terminal pre{padding:23px 25px;margin:0;background:none!important;color:#c5d0ec;font:12px/2 ui-monospace,"Consolas",monospace;overflow:auto;white-space:pre}.ryan-terminal .kw{color:#b5a4fb}.ryan-terminal .val{color:#76d4bc}.ryan-terminal .comment{color:#647b9c}.ryan-terminal-result{display:flex;align-items:center;gap:8px;padding:13px 20px;border-top:1px solid #8192c31c;color:#87d7bf;font:11px/1.5 ui-monospace,monospace}.ryan-cursor{height:12px;width:6px;background:#87d7bf;animation:ryan-blink 1.4s steps(1) infinite}.ryan-orbit{position:absolute;right:-12px;top:-21px;padding:8px 12px;border:1px solid #a1b4e940;border-radius:10px;background:#25314b;color:#becbfa;font:10px ui-monospace,monospace;transform:rotate(-6deg)}
.ryan-section-head{display:flex;justify-content:space-between;align-items:flex-end;margin:35px 0 17px;gap:16px}.ryan-kicker{font:600 10px/1.5 ui-monospace,monospace;letter-spacing:2px;color:var(--ryan-muted);margin-bottom:5px}.ryan-section-head h2{font-size:21px;letter-spacing:-.5px;margin:0;color:var(--ryan-ink);font-weight:750}.ryan-section-head p{font-size:12px;color:var(--ryan-muted);margin:0;line-height:1.7}.ryan-map{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}.ryan-path{position:relative;padding:21px 17px 20px;background:var(--ryan-card);border:1px solid var(--ryan-line);border-radius:17px;text-decoration:none!important;color:var(--ryan-ink)!important;transition:transform .24s,box-shadow .24s,border-color .24s;overflow:hidden}.ryan-path:after{content:"↗";position:absolute;right:15px;top:17px;color:var(--ryan-muted);font-size:15px}.ryan-path:hover{transform:translateY(-6px);box-shadow:0 12px 26px #38456d10;border-color:#8e83dd}.ryan-icon{display:grid;place-items:center;width:34px;height:34px;border-radius:11px;background:var(--tile-bg,#efeafd);color:var(--tile-ink,#7260cf);font:700 15px ui-monospace,monospace;margin-bottom:20px}.ryan-path h3{font-size:14px;font-weight:750;margin:0 0 8px;color:var(--ryan-ink)}.ryan-path p{font-size:11px;line-height:1.8;color:var(--ryan-muted);margin:0}.ryan-path small{display:block;margin-top:14px;font:9px ui-monospace,monospace;letter-spacing:1px;color:var(--ryan-muted)}
.ryan-start{display:grid;grid-template-columns:1.1fr 1fr 1fr;gap:14px}.ryan-start-card{display:block;padding:23px 24px;border:1px solid var(--ryan-line);border-radius:17px;background:var(--ryan-card);text-decoration:none!important;transition:transform .24s,border-color .24s}.ryan-start-card:hover{transform:translateY(-4px);border-color:#8e83dd}.ryan-start-card:first-child{background:linear-gradient(115deg,#e7f5ed,#f2f7ee);border-color:#d2e8db}[data-theme="dark"] .ryan-start-card:first-child{background:linear-gradient(115deg,#203c38,#25352f);border-color:#335d50}.ryan-tag{font-size:9px;color:var(--ryan-muted);letter-spacing:1px}.ryan-start-card h3{font-size:16px;line-height:1.6;color:var(--ryan-ink);margin:11px 0 8px}.ryan-start-card p{font-size:12px;color:var(--ryan-muted);line-height:1.8;margin:0}.ryan-start-card strong{display:block;font-size:12px;font-weight:600;margin-top:18px;color:var(--link-color)}.ryan-reading-note{font-size:11px!important;color:var(--ryan-muted);padding:14px 0 0;margin:0;line-height:1.8}
.post-list-text{display:grid;grid-template-columns:1fr 1fr;gap:17px;margin-bottom:32px}.post-list-text .post-item{background:var(--ryan-card);border:1px solid var(--ryan-line);padding:24px;border-radius:17px;margin:0;transition:transform .25s,box-shadow .25s,border-color .25s;min-width:0}.post-list-text .post-item:hover{transform:translateY(-4px);box-shadow:0 10px 25px #34405f0b;border-color:#b9b1e3}.post-list-text .post-header-line{display:block;margin-bottom:9px}.post-list-text .post-meta{font:10px ui-monospace,monospace;letter-spacing:.7px;margin-bottom:12px;color:var(--ryan-muted)}.post-list-text .post-title{font-family:inherit;font-size:16px;line-height:1.65;font-weight:700}.post-list-text .post-title a{color:var(--ryan-ink)}.post-list-text .post-excerpt{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;font-family:inherit;font-size:12px;line-height:1.9;margin:12px 0 0;color:var(--ryan-muted)}.post-list .post-item.hidden{display:none}.pinned-posts{margin-top:20px}.pagination{margin:25px 0 60px}.pagination-btn{border-radius:10px}.post-container{max-width:850px;margin:auto}.post-detail{background:var(--ryan-card);padding:35px 45px;border:1px solid var(--ryan-line);border-radius:22px}.post-detail .post-title{font-family:inherit;font-size:clamp(23px,3vw,32px);line-height:1.5;font-weight:780;color:var(--ryan-ink)}.post-content{font-family:inherit;font-size:15px;line-height:1.95;color:var(--ryan-ink);overflow-wrap:anywhere}.post-content h2{font-size:20px;padding-top:20px}.post-content h3{font-size:17px}.post-content pre{overflow-x:auto;max-width:100%;border-radius:12px;padding:20px}.post-content table{display:block;max-width:100%;overflow:auto;border-collapse:collapse;font-size:13px}.post-content td,.post-content th{padding:10px 13px;border-color:var(--ryan-line)}.post-content a{color:var(--link-color);text-decoration:underline;text-underline-offset:3px}.post-content blockquote{border-left:3px solid #9b8ce4;background:#8070d809;border-radius:0 10px 10px 0}.footer{font-size:11px;color:var(--ryan-muted);padding-bottom:35px}.jyf-fhdb{border-radius:12px}
@keyframes ryan-aurora{to{transform:translate(5%,-3%) rotate(8deg)}}@keyframes ryan-float{0%,100%{transform:translateY(0) rotate(2deg)}50%{transform:translateY(-8px) rotate(1deg)}}@keyframes ryan-blink{50%{opacity:0}}@keyframes ryan-enter{from{opacity:.3;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.ryan-motion .ryan-reveal{animation:ryan-enter .6s both}.ryan-motion-off .ryan-hero:before,.ryan-motion-off .ryan-terminal,.ryan-motion-off .ryan-cursor{animation:none!important}.ryan-motion-off *{scroll-behavior:auto!important}
@media(min-width:769px){.post-container+.post-toc{font-size:12px}}@media(max-width:960px){.ryan-hero{padding:40px 31px;gap:20px}.ryan-terminal pre{font-size:10px;padding:20px}.ryan-map{grid-template-columns:repeat(3,minmax(0,1fr))}.ryan-start{grid-template-columns:1fr 1fr}.ryan-start-card:first-child{grid-column:1/-1}.header .nav-center{gap:14px}.ryan-path p{font-size:12px}}
@media(max-width:768px){.container{padding-left:20px;padding-right:20px}.header{padding:20px 0 17px;margin-bottom:8px}.nav{gap:10px}.nav-left .logo-text{font-size:18px}.nav-left .logo-text:before{width:29px;height:29px;font-size:19px;border-radius:9px}.ryan-hero{grid-template-columns:1fr;border-radius:23px;padding:31px 25px 42px;gap:28px;min-height:0}.ryan-hero h1{font-size:35px;letter-spacing:-1px;margin-top:18px}.ryan-hero p{font-size:13px}.ryan-eyebrow{font-size:9px;letter-spacing:2px}.ryan-terminal{max-width:440px;width:100%;box-sizing:border-box;transform:none}.ryan-terminal pre{font-size:11px;padding:18px 21px}.ryan-orbit{right:4px;top:-13px}.ryan-stats{gap:12px;font-size:10px;margin-top:23px}.ryan-section-head{margin-top:27px;align-items:flex-start;flex-direction:column;gap:7px}.ryan-section-head h2{font-size:20px}.ryan-map{grid-template-columns:1fr 1fr;gap:10px}.ryan-path{padding:20px 17px}.ryan-path:last-child{grid-column:1/-1;display:grid;grid-template-columns:45px 1fr;align-items:center;column-gap:12px}.ryan-path:last-child .ryan-icon{grid-row:1/4;margin:0}.ryan-path:last-child h3,.ryan-path:last-child p,.ryan-path:last-child small{grid-column:2}.ryan-path:last-child small{margin-top:6px}.ryan-start{grid-template-columns:1fr}.ryan-start-card{padding:21px}.ryan-start-card:first-child{grid-column:auto}.post-list-text{grid-template-columns:1fr;gap:12px}.post-list-text .post-item{padding:22px}.post-list-text .post-title{font-size:16px}.post-detail{padding:25px 21px;border-radius:18px}.post-content{font-size:14px}.post-title-wrapper{gap:8px}.post-upvote-btn{flex-shrink:0}.ryan-actions{gap:9px}.ryan-btn{padding:10px 15px;font-size:12px}.ryan-motion-toggle{right:14px;bottom:10px}.post-list-text .post-meta{min-width:0}.post-toc{max-width:100%}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.ryan-hero:before,.ryan-terminal,.ryan-cursor,.ryan-reveal{animation:none!important}.ryan-btn,.ryan-path,.ryan-start-card,.post-item{transition:none!important;transform:none!important}}

@media(min-width:769px){.header .nav-left,.header .nav-right{position:static;flex-shrink:0}.header .nav-center{margin-left:auto;margin-right:auto}.header .nav{flex-wrap:nowrap}.header .nav-left .logo{gap:0}}
