/* roulang page: index */
:root{--bg:#080b16;--panel:#11172a;--panel2:#171f36;--line:#293451;--text:#f5f7ff;--muted:#9da8c4;--gold:#f5b83d;--cyan:#55d6e8;--red:#ff6379;--radius:20px;--shadow:0 18px 60px #0007}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text);font-family:"Noto Sans SC","Microsoft YaHei",sans-serif;line-height:1.8}a{color:inherit;text-decoration:none;transition:.25s}img{max-width:100%;display:block}button,.btn{transition:.25s}.container{max-width:1180px;margin:auto;padding:0 22px}
.navbar{background:#080b16dd;border-bottom:1px solid #ffffff12;backdrop-filter:blur(16px);padding:18px 0}.brand{font-weight:900;letter-spacing:.5px;font-size:20px}.brand i{color:var(--gold);font-style:normal}.nav-link{color:var(--muted)!important;margin-left:20px}.nav-link:hover,.nav-link.active{color:var(--text)!important}.nav-cta{border:1px solid var(--gold);color:var(--gold);border-radius:40px;padding:8px 18px!important}.nav-cta:hover{background:var(--gold);color:#10131d!important}
.hero{min-height:680px;position:relative;background:linear-gradient(90deg,#080b16f5 10%,#080b1688 60%,#080b1630),url('/assets/images/1d9c3ad44d18ca03.png') center/cover;display:flex;align-items:center}.hero:after{content:"";position:absolute;inset:auto 0 0;height:180px;background:linear-gradient(transparent,var(--bg))}.hero-content{position:relative;z-index:1;max-width:760px;padding:90px 0}.eyebrow,.tag{color:var(--gold);font-size:13px;letter-spacing:2px;text-transform:uppercase;font-weight:800}.hero h1{font-size:clamp(40px,6vw,76px);line-height:1.12;margin:18px 0 25px;font-weight:900}.hero p{font-size:18px;color:#d1d8ed;max-width:700px}.btn-main{background:var(--gold);color:#111522;border:0;border-radius:12px;padding:13px 25px;font-weight:800}.btn-main:hover{background:#ffd06b;transform:translateY(-2px)}.btn-ghost{border:1px solid #ffffff35;color:var(--text);border-radius:12px;padding:12px 23px}.btn-ghost:hover{border-color:var(--cyan);color:var(--cyan)}.play{display:inline-flex;align-items:center;gap:10px;color:#fff;margin-left:18px}.play span{width:42px;height:42px;border:1px solid var(--cyan);border-radius:50%;display:grid;place-items:center;color:var(--cyan)}
section{padding:92px 0;border-bottom:1px solid #ffffff0a}.section-head{max-width:710px;margin-bottom:38px}.section-head h2{font-size:clamp(28px,4vw,46px);line-height:1.2;margin:10px 0 15px;font-weight:900}.section-head p{color:var(--muted);margin:0}.dark{background:#0d1222}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:26px;box-shadow:0 8px 30px #0002;height:100%;transition:.3s}.card:hover{transform:translateY(-6px);border-color:#55d6e855;box-shadow:var(--shadow)}.card h3{font-size:21px;margin:14px 0 10px}.card p{color:var(--muted);font-size:15px;margin:0}.icon{font-size:28px;color:var(--cyan)}.feature{display:grid;grid-template-columns:1.05fr .95fr;gap:48px;align-items:center}.feature img{border-radius:var(--radius);border:1px solid var(--line);box-shadow:var(--shadow)}.list{list-style:none;padding:0;margin:0}.list li{padding:15px 0;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:20px}.list small{color:var(--muted)}.price{font-size:35px;color:var(--gold);font-weight:900}.price small{font-size:13px;color:var(--muted);font-weight:400}.rank{display:flex;align-items:center;gap:16px}.rank strong{font-size:22px;color:var(--gold);width:30px}.cover{height:210px;object-fit:cover;width:100%;border-radius:14px;margin-bottom:20px}.quote{font-size:17px;color:#e6eaff}.author{color:var(--muted);font-size:14px;margin-top:18px}.notice{padding:22px 25px;border-left:3px solid var(--gold);background:#171d31;border-radius:0 14px 14px 0}.cta{background:linear-gradient(115deg,#172645,#101626);text-align:center;border:1px solid #55d6e833}.cta p{max-width:700px;margin:12px auto 28px;color:var(--muted)}footer{padding:45px 0;background:#060812;color:var(--muted)}footer .brand{color:var(--text)}footer a:hover{color:var(--gold)}.footer-row{display:flex;justify-content:space-between;gap:25px;align-items:center}.focus{outline:3px solid #55d6e866;outline-offset:3px}
@media(max-width:992px){.grid{grid-template-columns:repeat(2,1fr)}.feature{grid-template-columns:1fr;gap:28px}}
@media(max-width:768px){.navbar .container{padding:0 16px}.nav-link{margin-left:0}.hero{min-height:620px}.hero-content{padding:65px 0}.hero p{font-size:16px}.grid{grid-template-columns:1fr}.feature{display:flex;flex-direction:column}.footer-row{flex-direction:column;align-items:flex-start}section{padding:65px 0}}
@media(max-width:520px){.hero h1{font-size:40px}.hero .btn{width:100%;margin:5px 0}.play{margin:14px 0 0 8px}.card{padding:21px}.list li{display:block}.list li span{display:block;margin-bottom:4px}}

/* roulang page: category1 */
:root{--bg:#080b16;--panel:#11172a;--panel2:#171f36;--line:#293451;--text:#f5f7ff;--muted:#9da8c4;--gold:#f5b83d;--cyan:#55d6e8;--red:#ff6379;--radius:20px;--shadow:0 18px 60px #0007}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:30px}body{margin:0;background:var(--bg);color:var(--text);font-family:"Noto Sans SC","Microsoft YaHei",sans-serif;line-height:1.8}a{color:inherit;text-decoration:none;transition:.25s}img{max-width:100%;display:block}button,.btn{transition:.25s}button,input{font:inherit}a:focus-visible,button:focus-visible,summary:focus-visible{outline:3px solid var(--cyan);outline-offset:5px}a:active,.btn:active{transform:translateY(1px)}.container{max-width:1180px;margin:auto;padding:0 22px}
.navbar{background:#080b16dd;border-bottom:1px solid #ffffff12;backdrop-filter:blur(16px);padding:18px 0}.brand{font-weight:900;letter-spacing:.5px;font-size:20px;white-space:nowrap}.brand span{color:var(--cyan)}.brand i{color:var(--gold);font-style:normal}.nav-link{color:var(--muted)!important;margin-left:20px}.nav-link:hover,.nav-link.active{color:var(--text)!important}.nav-cta{border:1px solid var(--gold);border-radius:40px;padding:8px 18px!important}.nav-cta.active{background:#f5b83d12;color:var(--gold)!important}.nav-cta:hover{background:var(--gold);color:#10131d!important}.navbar-toggler:focus{box-shadow:0 0 0 2px var(--cyan)}
h1,h2,h3{font-weight:800;line-height:1.35}p{margin:0 0 18px}.muted{color:var(--muted)}.eyebrow,.tag{color:var(--gold);font-size:13px;letter-spacing:2px;font-weight:800}.btn-main{background:var(--gold);color:#111522;border:0;border-radius:12px;padding:13px 25px;font-weight:800}.btn-main:hover{background:#ffd06b;color:#111522;transform:translateY(-2px)}.btn-ghost{border:1px solid #ffffff35;color:var(--text);border-radius:12px;padding:12px 23px}.btn-ghost:hover{border-color:var(--cyan);color:var(--cyan)}section{padding:80px 0;border-bottom:1px solid #ffffff0a}.section-head{max-width:710px;margin-bottom:34px}.section-head h2{font-size:clamp(27px,3.4vw,40px);margin:10px 0 15px}.section-head p{color:var(--muted);margin:0}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.card{color:var(--text);background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:26px;box-shadow:0 8px 30px #0002;height:100%;transition:.3s}.card:hover{transform:translateY(-5px);border-color:#55d6e855;box-shadow:var(--shadow)}.card h3{font-size:21px;margin:16px 0 12px}.card p{color:var(--muted);font-size:15px;margin:0}.feature{display:grid;grid-template-columns:1.05fr .95fr;gap:48px;align-items:center}.feature img{border-radius:var(--radius);border:1px solid var(--line);box-shadow:var(--shadow)}.list{list-style:none;padding:0;margin:0}.list li{padding:17px 0;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:20px}.list small{color:var(--muted)}.badge{font-size:12px;font-weight:500;background:#55d6e810;border:1px solid #55d6e833;color:var(--cyan);padding:7px 10px;border-radius:6px}
.channel-hero{position:relative;background:linear-gradient(90deg,#080b16f7,#080b16d9),url('/assets/images/1d9c3ad44d18ca03.png') center/cover;padding:62px 0 74px}.breadcrumb-line{font-size:13px;color:var(--muted);margin-bottom:38px;display:flex;gap:14px}.breadcrumb-line a:hover{color:var(--gold)}.hero-layout{display:grid;grid-template-columns:1.15fr .85fr;gap:55px;align-items:center}.channel-hero h1{font-size:clamp(35px,4.4vw,57px);letter-spacing:-1px;margin:16px 0 23px}.channel-hero h1 em{font-style:normal;color:var(--gold)}.hero-summary{font-size:17px;color:#c4cee4;max-width:630px}.hero-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:28px}.console{border:1px solid var(--line);border-radius:var(--radius);background:#0b101eee;box-shadow:var(--shadow);overflow:hidden}.console-bar{padding:16px 21px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;font-size:13px;color:var(--muted)}.console-bar b{color:var(--cyan);font-weight:500}.console pre{padding:25px 22px;margin:0;color:#dae3f7;font:14px/2.1 ui-monospace,SFMono-Regular,Consolas,monospace;white-space:pre-wrap;overflow-wrap:anywhere}.code-key{color:var(--cyan)}.code-val{color:var(--gold)}.console-note{border-top:1px solid var(--line);padding:14px 22px;font-size:12px;color:var(--muted);margin:0}.number{font:700 26px/1.2 monospace;color:var(--cyan)}.alternate{background:#0c1120}.scenario-row{display:grid;grid-template-columns:180px 1fr 210px;gap:28px;padding:25px 0;border-top:1px solid var(--line);align-items:center}.scenario-row h3{font-size:19px;margin:0}.scenario-row p{color:var(--muted);margin:0;font-size:15px}.scenario-row>span{font-size:13px;color:var(--gold)}
.demo-panel{padding:25px;border:1px solid var(--line);background:var(--panel);border-radius:var(--radius)}.demo-title{display:flex;justify-content:space-between;align-items:center;gap:15px;padding-bottom:20px}.state-line{display:grid;grid-template-columns:90px 1fr;gap:16px;padding:17px 0;border-top:1px solid var(--line);font-size:14px}.state-line span{color:var(--muted)}.state-line strong{font-weight:500}.notice{padding:15px 18px;background:#f5b83d0b;border-left:3px solid var(--gold);font-size:13px;color:#c9cfe0;margin-top:22px}.source-card{display:flex;flex-direction:column}.source-card .btn{margin-top:24px;align-self:flex-start}.source-card p{flex-grow:1}.download-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:22px}.ticket-intro{border-left:3px solid var(--gold);padding-left:25px}.ticket-intro h2{font-size:36px}.ticket-intro p{color:var(--muted)}details{border-bottom:1px solid var(--line);padding:19px 0}summary{cursor:pointer;font-weight:700;font-size:17px}summary:hover{color:var(--gold)}details p{color:var(--muted);font-size:15px;margin:14px 0 0}details[open] summary{color:var(--cyan)}.article-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:26px}.article{overflow:hidden;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel)}.article-image{overflow:hidden;position:relative}.article-image:after{content:"";position:absolute;inset:0;background:linear-gradient(transparent 60%,#11172a99)}.article img{width:100%;height:220px;object-fit:cover;transition:transform .4s}.article:hover img{transform:scale(1.035)}.article-body{padding:26px}.article h3{font-size:22px;margin:13px 0}.article p{color:var(--muted);font-size:15px;margin:0}.cta{background:linear-gradient(115deg,#172645,#101626);text-align:center;border:1px solid #55d6e833}.cta h2{font-size:clamp(27px,4vw,40px)}.cta p{max-width:700px;margin:12px auto 28px;color:var(--muted)}footer{padding:45px 0;background:#060812;color:var(--muted)}footer .brand{color:var(--text)}footer a:hover{color:var(--gold)}.footer-row{display:flex;justify-content:space-between;gap:25px;align-items:center}
@media(max-width:1024px){.hero-layout{gap:30px;grid-template-columns:1fr 1fr}.feature{gap:30px}.scenario-row{grid-template-columns:150px 1fr 150px}.nav-link{margin-left:0}.navbar-collapse{padding-top:15px}.nav-cta{display:inline-block;align-self:flex-start}.grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:768px){section{padding:58px 0}.navbar .container{padding:0 16px}.hero-layout,.feature{grid-template-columns:1fr}.channel-hero{padding:35px 0 55px}.breadcrumb-line{margin-bottom:25px}.channel-hero h1{font-size:40px}.console{margin-top:6px}.scenario-row{grid-template-columns:1fr;gap:10px}.grid,.download-grid,.article-grid{grid-template-columns:1fr}.footer-row{flex-direction:column;align-items:flex-start}.article img{height:240px}.ticket-intro h2{font-size:30px}}
@media(max-width:520px){.container{padding:0 18px}.brand{font-size:17px}.channel-hero h1{font-size:34px}.hero-summary{font-size:15px}.hero-actions .btn{width:100%}.card{padding:21px}.console pre{font-size:12px;padding:20px 16px}.console-bar{padding:14px 16px}.list li{display:block}.list li span{display:block;margin-bottom:4px}.demo-title{align-items:flex-start;flex-direction:column}.state-line{grid-template-columns:72px 1fr;gap:10px}.article img{height:190px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important}}

/* roulang: framework shim */
/* 覆盖 Bootstrap 等对 a/btn 的全局默认，避免导航出现下划线/蓝链 */
.site-header a,.site-header a:hover,.navbar a,.navbar a:hover,.nav-links a,.nav-links a:hover,header nav a,header nav a:hover{text-decoration:none}
.site-header .btn,.navbar .btn,.nav-cta{text-decoration:none}
