/* Standalone product portal */
.entry-page{min-height:100vh;background:#f7f8fa;color:#242934}
.entry-wrap{width:min(1180px,calc(100% - 40px));margin:auto}
.entry-header{padding:58px 0 42px;background:#fff;border-bottom:1px solid #e5e7eb}
.entry-kicker{font-size:12px;color:#687386;letter-spacing:.8px;text-transform:uppercase}
.entry-header h1{font-size:36px;margin:12px 0 10px;letter-spacing:-.6px}
.entry-header>div>p{max-width:760px;color:#697386;line-height:1.8;margin:0}
.entry-meta{display:flex;flex-wrap:wrap;gap:28px;margin-top:28px}.entry-meta span{color:#7b8493;font-size:13px}.entry-meta b{color:#252b36;font-size:18px;margin-right:5px}
.entry-content{padding:38px 0 68px}.entry-content>section+section{margin-top:48px}
.entry-section-title{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:15px}.entry-section-title>div{display:flex;align-items:center;gap:10px}.entry-section-title>div>span{font-size:11px;color:#8b94a2}.entry-section-title h2{font-size:20px;margin:0}.entry-section-title>p{margin:0;color:#8b94a2;font-size:12px}
.entry-flow-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.entry-flow{display:grid;grid-template-columns:34px 1fr auto;gap:13px;align-items:center;padding:18px;background:#fff;border:1px solid #e1e5ea;border-radius:7px}.entry-flow:hover{border-color:#acb4c1}.entry-flow>b{font-size:11px;color:#9aa2af}.entry-flow h3{font-size:15px;margin:0}.entry-flow p{font-size:12px;color:#7c8593;margin:5px 0 0}.entry-flow>span{font-size:12px;color:#53637a}
.entry-page-grid{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid #dfe3e8;border-left:1px solid #dfe3e8}.entry-page-grid>a{display:grid;grid-template-columns:30px 1fr 18px;align-items:center;gap:10px;padding:15px;background:#fff;border-right:1px solid #dfe3e8;border-bottom:1px solid #dfe3e8}.entry-page-grid>a:hover{background:#fafbfc}.entry-page-grid>a>span{font-size:10px;color:#9aa2ae}.entry-page-grid b{display:block;font-size:14px}.entry-page-grid small{display:block;color:#8a929f;margin-top:4px;font-size:11px}.entry-page-grid strong{color:#8b94a2;font-weight:400}
.entry-doc-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.entry-doc-grid>a{padding:20px;background:#fff;border:1px solid #e1e5ea;border-radius:7px;min-height:180px}.entry-doc-grid>a:hover{border-color:#aeb7c3}.entry-doc-grid>a>span{display:inline-block;padding:4px 7px;background:#f0f2f5;border-radius:3px;color:#596679;font-size:10px;font-weight:800}.entry-doc-grid h3{font-size:16px;margin:18px 0 7px}.entry-doc-grid p{font-size:12px;color:#7b8492;line-height:1.65;margin:0}.entry-doc-grid b{display:block;margin-top:20px;color:#52627a;font-size:12px}
.entry-checklist{background:#fff;border:1px solid #e1e5ea;border-radius:7px}.entry-checklist>div{display:grid;grid-template-columns:26px 1fr auto;align-items:center;gap:10px;padding:13px 16px;border-top:1px solid #eceef1}.entry-checklist>div:first-child{border:0}.entry-checklist span{width:20px;height:20px;border-radius:50%;display:grid;place-items:center;border:1px solid #cbd1d9;color:#98a1ae;font-size:11px}.entry-checklist span.done{border-color:#7ca36c;background:#f1f8ee;color:#4e8a38}.entry-checklist p{margin:0;font-size:13px}.entry-checklist small{color:#9098a5;font-size:11px}.entry-footer{text-align:center;padding:22px;background:#fff;border-top:1px solid #e1e5ea;color:#9aa1ad;font-size:12px}
.portal-page{min-height:100vh;background:#f3f5f9;color:#202534}
.portal-wrap{width:min(1320px,calc(100% - 40px));margin:auto}
.portal-hero{padding:34px 0 62px;color:#fff;background:radial-gradient(circle at 78% 18%,rgba(255,130,80,.35),transparent 26%),linear-gradient(135deg,#1c2436,#292f45 60%,#3a2630)}
.portal-brand{display:flex;align-items:center;gap:13px}
.portal-brand strong{display:block;font-size:22px}
.portal-brand small{display:block;color:#aeb7ca;margin-top:4px}
.portal-badge{float:right;margin-top:-43px;border:1px solid rgba(255,255,255,.24);background:rgba(255,255,255,.08);padding:8px 13px;border-radius:18px;font-size:12px}
.portal-hero h1{font-size:46px;margin:70px 0 12px;letter-spacing:-1px}
.portal-hero p{max-width:760px;color:#c8cfdd;font-size:16px;line-height:1.8}
.portal-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:26px}
.portal-actions .btn.ghost{color:#fff;border-color:rgba(255,255,255,.24);background:rgba(255,255,255,.06)}
.portal-nav{position:sticky;top:0;z-index:30;background:#fff;border-bottom:1px solid #e2e5eb;box-shadow:0 4px 14px rgba(25,35,60,.05)}
.portal-nav .portal-wrap{display:flex;gap:30px;height:56px;align-items:center}
.portal-nav a{font-weight:700;font-size:14px}
.portal-nav a:hover{color:var(--brand)}
.portal-content{padding:42px 0 70px}
.portal-section{margin-top:54px;scroll-margin-top:76px}
.api-table-wrap{overflow:auto}
.api-spec-table{min-width:1100px}
.api-spec-table th:nth-child(1){width:65px}
.api-spec-table th:nth-child(2){width:280px}
.api-spec-table code{white-space:normal;line-height:1.65}
.api-example{background:#171c28;color:#dbe2f0;border-radius:12px;padding:20px;min-width:0;box-shadow:0 10px 26px rgba(18,24,40,.12)}
.api-example h3{margin:0 0 4px;color:#fff}
.api-example small{color:#8d98ad}
.api-example pre{overflow:auto;background:#0e121b;border:1px solid #2a3141;border-radius:8px;padding:13px;margin:14px 0 0;font-size:12px;line-height:1.6}
.api-example code{color:#c7e6ff}
.api-overview-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.api-overview-card{display:grid;grid-template-columns:38px 1fr 20px;align-items:center;gap:12px;padding:16px;border:1px solid #e2e5eb;border-radius:9px;background:#fafbfc;transition:.2s}
.api-overview-card:hover{border-color:#f2ad99;background:#fff7f3;transform:translateY(-2px)}
.api-overview-card>span{width:38px;height:38px;border-radius:9px;background:#fff0eb;color:var(--brand);display:grid;place-items:center;font-size:12px;font-weight:800}
.api-overview-card b{display:block}.api-overview-card small{display:block;color:#8b92a0;margin-top:4px}.api-overview-card>strong{color:var(--brand)}
.api-doc-cta{margin-top:18px}
.api-home-list{display:grid;gap:7px}
.api-home-row{display:grid;grid-template-columns:68px minmax(280px,1.5fr) minmax(180px,1fr) 70px 90px;align-items:center;gap:12px;padding:11px 13px;border:1px solid #e4e7ec;border-radius:7px;background:#fff;font-size:13px}
.api-home-row:hover{border-color:#efae9a;background:#fff8f5}
.api-home-row code{color:#34405a;overflow-wrap:anywhere}.api-home-row>strong{font-weight:600}.api-home-row>span:nth-last-child(2){color:#8a91a0}.api-home-row>b{color:var(--brand);font-size:12px;text-align:right}
.portal-footer{text-align:center;padding:24px;background:#202635;color:#98a2b7;font-size:13px}

/* Swagger-style API details */
.swagger-page{min-height:100vh;background:#f5f6f8;color:#28303d}
.swagger-header{padding:26px 0 30px;background:#fff;border-bottom:1px solid #e0e3e8}
.swagger-header>a,.swagger-header .portal-wrap>a{color:#697386;font-size:13px}
.swagger-header .portal-wrap>div{display:flex;align-items:center;gap:12px;margin-top:26px}
.swagger-header h1{font-size:31px;margin:0}.swagger-logo{width:48px;height:48px;border-radius:12px;background:#49a32b;color:#fff;display:grid;place-items:center;font-weight:900}.swagger-version{padding:4px 8px;border-radius:4px;background:#e9f5e4;color:#3d8f24;font-size:12px;font-weight:800}
.swagger-header p{margin:10px 0 0 60px;color:#7d8594}.swagger-header p code{color:#40506a}
.swagger-toolbar{position:sticky;top:0;z-index:30;background:#f0f2f5;border-bottom:1px solid #dfe3e8}
.swagger-toolbar .portal-wrap{height:62px;display:flex;align-items:center;gap:16px}.swagger-toolbar input{width:min(480px,70%);height:38px;border:1px solid #cdd3dc;border-radius:6px;background:#fff;padding:0 13px;outline:0}.swagger-toolbar input:focus{border-color:#499f30;box-shadow:0 0 0 3px rgba(73,159,48,.1)}.swagger-toolbar span{color:#7f8795;font-size:13px}
.swagger-content{padding:28px 0 70px}.swagger-tag{margin-bottom:24px;scroll-margin-top:78px}.swagger-tag>header{display:flex;align-items:center;justify-content:space-between;padding:15px 18px;background:#fff;border:1px solid #dce1e7;border-bottom:0;border-radius:8px 8px 0 0}.swagger-tag>header h2{margin:0;font-size:20px}.swagger-tag>header p{margin:3px 0 0;color:#89909d;font-size:12px}.swagger-tag>header>span{font-size:12px;color:#7d8592}
.swagger-operation{border:1px solid #b9cddd;border-top:0;background:rgba(97,175,254,.08)}.swagger-operation:first-child{border-top:1px solid #b9cddd}.swagger-operation:last-child{border-radius:0 0 8px 8px}.swagger-operation.post{border-color:#b4d7ac;background:rgba(73,204,144,.08)}.swagger-operation.put{border-color:#e7c99d;background:rgba(252,161,48,.08)}
.swagger-operation summary{list-style:none;display:grid;grid-template-columns:78px minmax(260px,1.2fr) minmax(180px,1fr) 28px 24px;align-items:center;gap:12px;padding:10px 14px;cursor:pointer}.swagger-operation summary::-webkit-details-marker{display:none}.swagger-operation summary>code{font-weight:700;color:#303a4c;overflow-wrap:anywhere}.swagger-operation summary>strong{font-size:13px;font-weight:500;color:#566174}.swagger-method{display:inline-flex;justify-content:center;padding:6px 8px;border-radius:4px;color:#fff;background:#61affe;font-size:12px;font-weight:900}.swagger-operation.post .swagger-method{background:#49cc90}.swagger-operation.put .swagger-method{background:#fca130}.swagger-lock{font-size:12px;filter:grayscale(1)}.swagger-chevron{transition:.2s}.swagger-operation[open] .swagger-chevron{transform:rotate(180deg)}
.swagger-body{padding:2px 16px 18px}.swagger-body>section{margin-top:14px;background:#fff;border:1px solid rgba(40,50,70,.13);border-radius:6px;overflow:hidden}.swagger-body h3{margin:0;padding:12px 14px;border-bottom:1px solid #e5e8ed;background:#fafbfc;font-size:14px}.swagger-body h3 small{margin-left:6px;color:#9aa1ad;font-weight:400}
.swagger-param-head,.swagger-param-row{display:grid;grid-template-columns:minmax(150px,.7fr) 110px minmax(260px,1.5fr);gap:14px;align-items:center;padding:10px 14px}.swagger-param-head{background:#f6f7f9;color:#8b92a0;font-size:11px;font-weight:700;text-transform:uppercase}.swagger-param-row{border-top:1px solid #edf0f3;font-size:13px}.swagger-param-row code{color:#31486e;font-weight:700;overflow-wrap:anywhere}.swagger-param-row>span:nth-child(2){color:#717b8c}.swagger-param-row em{font-style:normal;color:#5470a0;margin-right:8px}.swagger-param-row b{font-size:10px;color:#d04d32;background:#fff0eb;padding:2px 5px;border-radius:3px;margin-right:8px}.swagger-param-row small{display:block;margin-top:4px;color:#727b89}.swagger-empty{padding:18px;color:#9aa1ad}
.response-status{display:grid;grid-template-columns:64px 1fr auto;align-items:center;padding:12px 14px;background:#f7fbf6;border-bottom:1px solid #e2ece0}.response-status b{color:#398d27}.response-status span{font-size:13px}.response-status em{font-size:11px;color:#87907f;font-style:normal}.response-example{margin:12px;border:1px solid #e1e5ea;border-radius:5px}.response-example summary{padding:9px 11px;font-size:12px;cursor:pointer}.response-example pre{margin:0;padding:12px;background:#202532;color:#d7e4f4;overflow:auto;font-size:12px;line-height:1.6}

/* Visual API documentation */
.api-doc-page{min-height:100vh;background:#f3f5f9}
.api-doc-header{padding:28px 0 32px;background:linear-gradient(135deg,#171d2b,#273047);color:#fff}
.back-link{display:inline-block;color:#aeb8cc;font-size:13px;margin-bottom:28px}
.back-link:hover{color:#fff}
.api-title-row{display:flex;align-items:flex-end;justify-content:space-between;gap:30px}
.api-title-row h1{font-size:38px;margin:8px 0}
.api-title-row p{margin:0;color:#b8c0d0}
.api-summary{width:112px;height:88px;border:1px solid rgba(255,255,255,.18);border-radius:12px;background:rgba(255,255,255,.07);display:grid;place-content:center;text-align:center}
.api-summary b{font-size:28px;color:#ff8b69}.api-summary span{font-size:12px;color:#bac3d5}
.api-conventions{display:flex;flex-wrap:wrap;gap:10px;margin-top:24px}
.api-conventions span{padding:7px 11px;border-radius:6px;background:rgba(255,255,255,.07);color:#b8c0d0;font-size:12px}
.api-conventions code{color:#fff}
.api-domain-nav{position:sticky;top:0;z-index:30;background:#fff;border-bottom:1px solid #e2e5eb;box-shadow:0 4px 14px rgba(25,35,60,.05);overflow:auto}
.api-domain-nav .portal-wrap{display:flex;align-items:center;gap:8px;height:58px}
.api-domain-nav a{white-space:nowrap;padding:8px 12px;border-radius:18px;font-size:13px}
.api-domain-nav a:hover{background:#fff0eb;color:var(--brand)}
.api-domain-nav b{display:inline-grid;place-items:center;min-width:19px;height:19px;margin-left:5px;border-radius:10px;background:#edf0f5;color:#737b8c;font-size:11px}
.api-doc-content{padding:30px 0 70px}
.api-response-standard{display:flex;align-items:center;gap:18px;padding:18px 22px;border-radius:10px;background:#eaf1ff;border:1px solid #d4e2ff}
.api-response-standard div{margin-right:auto}.api-response-standard h3{margin:0 0 4px}.api-response-standard p{margin:0;color:#69758b;font-size:13px}
.api-response-standard code{background:#fff;padding:9px 12px;border-radius:6px;color:#315fae;font-size:12px}
.api-domain{margin-top:38px;scroll-margin-top:78px}
.api-domain-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:13px;color:#7b8190}
.api-domain-title>div{display:flex;align-items:center;gap:10px}.api-domain-title h2{margin:0;color:#252b38;font-size:22px}.domain-index{font-size:12px;color:var(--brand);font-weight:800}
.api-card-list{display:grid;gap:10px}
.api-doc-card{background:#fff;border:1px solid #e2e5eb;border-radius:10px;overflow:hidden;box-shadow:0 2px 7px rgba(25,35,60,.025)}
.api-doc-card[open]{border-color:#cfd5e0;box-shadow:0 8px 22px rgba(25,35,60,.06)}
.api-doc-card summary{list-style:none;display:grid;grid-template-columns:72px minmax(240px,1fr) minmax(160px,.7fr) 24px;align-items:center;gap:14px;padding:16px 18px;cursor:pointer}
.api-doc-card summary::-webkit-details-marker{display:none}
.api-doc-card summary>code{font-weight:700;color:#27334a;overflow-wrap:anywhere}
.api-doc-card summary>strong{font-size:13px;color:#737b8b;font-weight:500}
.method{display:inline-flex;width:62px;justify-content:center;padding:5px 8px;border-radius:5px;font-size:11px;font-weight:900;color:#fff}
.method.get{background:#1f9d6a}.method.post{background:#3978ee}.method.put{background:#e5872b}.method.delete{background:#d84d4d}
.expand-icon{transition:.2s;color:#8a91a0}.api-doc-card[open] .expand-icon{transform:rotate(180deg)}
.api-flow{display:grid;grid-template-columns:1fr 46px 1fr;align-items:stretch;gap:0;padding:0 18px 18px}
.request-block,.response-block{border:1px solid #e5e7ec;border-radius:9px;padding:16px;background:#fafbfc}
.request-block header,.response-block header{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.request-block header>span,.response-block header>span{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:#edf3ff;color:#3978ee;font-size:11px;font-weight:800}
.response-block header>span{background:#eaf8f1;color:#1f9d6a}
.request-block header b,.response-block header b{display:block}.request-block header small,.response-block header small{display:block;color:#989fac;margin-top:2px}
.field-chips{display:flex;flex-wrap:wrap;gap:7px}
.field-chip{padding:6px 9px;background:#fff;border:1px solid #dde1e8;border-radius:5px;color:#4f5869;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px}
.empty-field{color:#999;font-size:13px}.flow-arrow{display:grid;place-items:center;color:#a4aab6;font-size:22px}
.api-json-link{margin-top:44px;padding:28px 32px;border-radius:12px;background:linear-gradient(135deg,#fff3ed,#fff);border:1px solid #f2d9ce;display:flex;align-items:center;justify-content:space-between;gap:20px}
.api-json-link h2{margin:0 0 5px}.api-json-link p{margin:0;color:#737b8b}

/* The player remains visually dominant but no longer spans the entire viewport. */
.learning-shell{width:min(1440px,calc(100% - 32px));margin:24px auto 0;border-radius:12px 12px 0 0;overflow:hidden;min-height:0;box-shadow:0 14px 40px rgba(10,15,28,.18)}
.learning-tools{width:min(1440px,calc(100% - 32px));margin:0 auto 48px;border-radius:0 0 12px 12px;box-shadow:0 12px 30px rgba(30,40,70,.06)}
.player-layout{min-height:clamp(480px,38vw,650px)}

@media(max-width:760px){
  .entry-wrap{width:calc(100% - 24px)}.entry-header{padding:38px 0 30px}.entry-header h1{font-size:29px}.entry-meta{gap:14px}.entry-flow-grid,.entry-page-grid,.entry-doc-grid{grid-template-columns:1fr}.entry-page-grid{border-right:1px solid #dfe3e8}.entry-section-title{align-items:flex-start}.entry-section-title>p{display:none}.entry-checklist>div{grid-template-columns:26px 1fr}.entry-checklist small{display:none}
  .portal-wrap{width:calc(100% - 24px)}
  .portal-hero{padding-top:24px}
  .portal-badge{display:none}
  .portal-hero h1{font-size:32px;margin-top:46px}
  .portal-nav{overflow:auto}
  .portal-nav .portal-wrap{gap:20px}
  .portal-nav a{white-space:nowrap}
  .portal-content{padding-top:28px}
  .api-overview-cards{grid-template-columns:1fr}
  .learning-shell,.learning-tools{width:100%;margin-left:0;margin-right:0;border-radius:0}
  .api-title-row{align-items:flex-start}.api-title-row h1{font-size:30px}.api-summary{display:none}
  .api-response-standard{align-items:flex-start;flex-direction:column}.api-response-standard code{width:100%;overflow:auto}
  .api-doc-card summary{grid-template-columns:64px 1fr 22px}.api-doc-card summary>strong{display:none}
  .api-flow{grid-template-columns:1fr;padding:0 12px 12px}.flow-arrow{height:38px;transform:rotate(90deg)}
  .api-json-link{align-items:flex-start;flex-direction:column;padding:22px}
  .api-home-row{grid-template-columns:62px 1fr}.api-home-row>strong,.api-home-row>span:nth-last-child(2),.api-home-row>b{display:none}
  .swagger-header h1{font-size:25px}.swagger-header p{margin-left:0}.swagger-operation summary{grid-template-columns:64px 1fr 20px}.swagger-operation summary>strong,.swagger-lock{display:none}
  .swagger-param-head,.swagger-param-row{grid-template-columns:110px 76px 1fr;gap:8px;padding:9px}.swagger-body{padding:0 8px 10px}
}

.entry-section-title>div>span,.entry-flow>span,.entry-doc-grid b{color:var(--brand)}.entry-flow:hover,.entry-doc-grid>a:hover{border-color:var(--brand)}.entry-doc-grid>a>span{background:var(--brand-soft);color:var(--brand)}.entry-page-grid>a:hover{background:var(--brand-soft-2)}

.entry-footer small{display:inline-block;margin-top:6px;color:#9aa2ae;font-size:11px}

/* 讲义-视频锚点联动 */
.handout-block{margin-top:16px;border-top:1px solid #eee;padding-top:12px}
.handout-seg{display:flex;gap:12px;padding:8px 10px;border-radius:8px;cursor:pointer}
.handout-seg:hover{background:#f8f9fa}
.handout-seg.active{background:var(--brand-soft,#fff1ec);outline:1px solid var(--brand,#f15a37)}
.handout-seg small{color:var(--brand,#f15a37);font-weight:600;min-width:44px}
.handout-seg p{margin:0}
/* 答疑群二维码弹层 */
.qr-modal{position:fixed;inset:0;background:rgba(0,0,0,.45);display:flex;align-items:center;justify-content:center;z-index:99}
.qr-modal[hidden]{display:none}
.qr-box{background:#fff;border-radius:12px;padding:28px;text-align:center;max-width:300px}
.qr-fake{font-size:44px;letter-spacing:4px;line-height:1.2;border:8px solid #111;display:inline-block;padding:14px;margin:8px 0}
/* 答题页便捷工具与计算器 */
.answer-tools{margin-top:16px;border-top:1px dashed #ddd;padding-top:12px;display:flex;flex-direction:column;gap:8px}
.answer-tools h4{margin:0}
.tool-switch{display:flex;align-items:center;gap:6px;font-size:13px;cursor:pointer}
.calc-panel{margin-top:10px;border:1px solid #e5e5e5;border-radius:10px;padding:10px}
.calc-panel[hidden]{display:none}
#calcScreen{width:100%;text-align:right;margin-bottom:8px;padding:6px;border:1px solid #ddd;border-radius:6px}
.calc-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.calc-grid button{padding:8px 0;border:1px solid #ddd;border-radius:6px;background:#fff;cursor:pointer}
.calc-grid button:hover{background:var(--brand-soft,#fff1ec)}

/* 章节小测 / 结课考试：结果与解析 */
.exam-result-card{text-align:center;padding:44px 24px}
.exam-score{font-size:56px;font-weight:800;margin:10px 0 4px}
.exam-score small{font-size:16px;color:var(--muted);font-weight:400}
.result-actions{display:flex;gap:12px;justify-content:center;margin-top:22px;flex-wrap:wrap}
.review-row{display:flex;gap:12px;align-items:flex-start;padding:14px 0;border-bottom:1px solid var(--line);font-size:14px}
.review-row:last-child{border-bottom:none}
.review-row .rw-no{flex:0 0 26px;font-weight:700;color:var(--muted)}
.review-row p{margin:4px 0}
.review-row .tag{margin-left:auto;flex:0 0 auto}
