.course-shell{display:grid;grid-template-columns:236px minmax(0,768px);gap:44px;max-width:1100px;margin:0 auto;padding:26px 24px 60px;justify-content:center}.course-main{min-width:0}.course-shell.solo{grid-template-columns:minmax(0,860px)}.course-toc{position:sticky;top:70px;align-self:start;max-height:calc(100vh - 92px);overflow:auto;border:2px solid var(--ink);border-radius:14px;box-shadow:3px 3px 0 var(--ink);background:var(--bg-paper);padding:14px 8px 14px 10px}.toc-head{font-family:Fraunces,serif;font-weight:700;font-size:14px;color:var(--ink);margin:0 0 8px;padding-left:8px}.toc-group{font-family:Fraunces,serif;font-weight:700;font-size:11.5px;color:var(--red);letter-spacing:.03em;margin:14px 0 4px;padding:0 8px}.toc-group:first-of-type{margin-top:2px}.toc-link{display:block;font-size:12.5px;line-height:1.4;color:var(--ink-soft);text-decoration:none;padding:5px 9px;border-left:2px solid transparent;border-radius:0 7px 7px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:background .1s,color .1s}.toc-link:hover{background:var(--bg-panel);color:var(--ink)}.toc-link.active{color:var(--red);font-weight:700;border-left-color:var(--red);background:var(--bg-panel)}.toc-fab{display:none;position:fixed;right:16px;bottom:18px;z-index:55;font:inherit;font-size:14px;font-weight:700;color:#fff;background:var(--red);border:2px solid var(--ink);border-radius:999px;padding:10px 16px;cursor:pointer;box-shadow:3px 3px 0 var(--ink)}.crumb{font-size:13px;color:var(--ink-mute);margin-bottom:18px}.crumb a{color:var(--ink-mute)}.course-hero{margin-bottom:26px}.hero-tags{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}.course-hero h1{font-size:clamp(28px,4.4vw,40px);line-height:1.16;margin-bottom:10px;text-wrap:balance}.hero-sub{font-size:16px;color:var(--ink-soft);line-height:1.7;max-width:62ch;text-wrap:pretty}.course-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:18px;padding:14px 18px;border:2px solid var(--ink);border-radius:12px;box-shadow:3px 3px 0 var(--ink)}.course-meta>span{font-size:14px;color:var(--ink-soft)}.unlock-cta{margin-left:auto;font-size:14px;font-weight:700;padding:9px 18px;background:var(--red);color:#fff;border:2px solid var(--red);border-radius:999px;transition:transform .12s ease,box-shadow .12s ease}.unlock-cta:hover{transform:translate(-1px,-1px);box-shadow:3px 3px 0 var(--ink);color:#fff}.block-h{font-size:18px;margin-bottom:14px}.muted-sub{font-size:13px;color:var(--ink-mute);font-weight:400}.outcome-card{padding:18px 20px;margin-bottom:26px}.outcome-list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px}.outcome-list li{font-size:14.5px;color:var(--ink-soft);line-height:1.6;padding-left:24px;position:relative;text-wrap:pretty}.outcome-list .tick{position:absolute;left:0;top:0;color:var(--red);font-weight:700}.stage-label{display:inline-block;font-family:Fraunces,serif;font-weight:700;font-size:14px;color:var(--red);letter-spacing:.04em;margin:0 0 8px;padding-left:2px;border-bottom:2px solid var(--red)}.lesson-list{list-style:none;margin:0 0 6px;padding:0;border:2px solid var(--ink);border-radius:12px;overflow:hidden}.lesson-list li{display:flex;align-items:center;gap:14px;padding:12px 16px;background:var(--bg-paper)}.lesson-list li.free{background:var(--bg-panel)}.lesson-list li+li{border-top:1.5px solid var(--hair)}.lesson-list .ln{font-family:JetBrains Mono,monospace;font-size:13px;color:var(--ink-mute);flex:none;width:22px}.lesson-list .lt{font-size:15px;flex:1;line-height:1.45}.lesson-list .lk{flex:none;color:var(--ink-mute);font-size:13px}.dl-btn{display:inline-flex;flex-direction:column;gap:2px;text-decoration:none;color:var(--ink);border:2px solid var(--ink);border-radius:10px;padding:9px 14px;background:var(--bg-paper);transition:transform .12s ease,box-shadow .12s ease}.dl-btn:hover{transform:translate(-1px,-1px);box-shadow:3px 3px 0 var(--ink)}.part-cards{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:8px 0 34px}.part-card{display:flex;flex-direction:column;text-decoration:none;color:var(--ink);border:2.5px solid var(--ink);border-radius:16px;background:var(--bg-paper);box-shadow:5px 5px 0 var(--ink);padding:22px 22px 20px;position:relative;overflow:hidden;transition:transform .14s ease,box-shadow .14s ease}.part-card:hover{transform:translate(-2px,-2px);box-shadow:7px 7px 0 var(--ink)}.part-card .tag{align-self:flex-start;font-size:12px;font-weight:700;border-radius:999px;padding:3px 11px;margin-bottom:12px}.part-card.free .tag{color:var(--blue);border:2px solid var(--blue)}.part-card.paid .tag{color:#fff;background:var(--red);border:2px solid var(--red)}.part-card h3{font-size:21px;margin:0 0 6px}.part-card p{font-size:13.5px;color:var(--ink-soft);line-height:1.65;margin:0 0 14px;flex:1}.part-card .go{font-size:14px;font-weight:700;color:var(--red)}.part-card .meta-line{font-size:12px;color:var(--ink-mute);margin:0 0 10px}.reader-cta{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:44px 0 0;padding:24px 26px;border:2.5px dashed var(--ink);border-radius:16px;background:linear-gradient(180deg,transparent,var(--bg-panel))}.reader-cta h3{font-size:19px;margin:0}.reader-cta p{font-size:14px;color:var(--ink-soft);line-height:1.7;margin:0}.reader-cta a{font-size:15px;font-weight:700;text-decoration:none;color:#fff;background:var(--red);border:2px solid var(--red);border-radius:999px;padding:11px 24px;margin-top:4px;transition:transform .12s ease,box-shadow .12s ease}.reader-cta a:hover{transform:translate(-1px,-1px);box-shadow:3px 3px 0 var(--ink);color:#fff}.course-body{max-width:100%;line-height:1.85}.course-body>h2{font-size:23px;margin:44px 0 14px;padding:16px 0 0 16px;position:relative;border-top:2px solid var(--hair);scroll-margin-top:78px;text-wrap:balance}.course-body>h2:before{content:"";position:absolute;left:0;top:20px;width:5px;height:22px;background:var(--red);border-radius:2px}.course-body h3{font-size:17px;margin:26px 0 8px;color:var(--ink);scroll-margin-top:78px;text-wrap:balance}.course-body h4{font-size:15px;margin:20px 0 6px;color:var(--ink);font-weight:700}.course-body h4 .en{font-family:JetBrains Mono,monospace;font-size:12px;color:var(--ink-mute);font-weight:400;margin-left:6px}.course-body p{margin:0 0 13px;color:var(--ink-soft);text-wrap:pretty}.course-body ul,.course-body ol{margin:0 0 14px;padding-left:22px;color:var(--ink-soft)}.course-body li{margin:5px 0;line-height:1.75}.course-body strong{color:var(--ink)}.course-body code{background:var(--bg-panel);border:1px solid var(--hair);border-radius:5px;padding:1px 6px;font-size:.9em;font-family:JetBrains Mono,monospace}.course-body .prompt{font-family:JetBrains Mono,LXGW WenKai,monospace;font-size:13px;line-height:1.75;background:var(--bg-panel);border:1.5px solid var(--ink);border-left:4px solid var(--blue);border-radius:8px;padding:12px 15px;margin:10px 0 18px;white-space:pre-wrap;word-break:break-word;color:var(--ink)}.course-body .prompt-label{font-size:12px;color:var(--ink-mute);margin:0 0 4px}.course-body .lead{font-size:17px;color:var(--ink);background:var(--bg-panel);border-left:4px solid var(--red);padding:14px 18px;border-radius:0 8px 8px 0;line-height:1.8;margin:0 0 18px;text-wrap:pretty}.course-body figure{margin:22px 0}.course-body figure img{width:100%;border:2px solid var(--ink);border-radius:10px;display:block;box-shadow:3px 3px 0 var(--ink)}.course-body figure video{width:100%;border:2px solid var(--ink);border-radius:10px;display:block;box-shadow:3px 3px 0 var(--ink);background:#111;-o-object-fit:cover;object-fit:cover}.course-body figcaption{font-size:12.5px;color:var(--ink-mute);margin-top:9px;line-height:1.6;text-align:center}.course-body figure.vid-demo{max-width:520px;margin:18px auto}.course-body .move-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:16px;margin:16px 0 22px}.course-body .move-grid>p{grid-column:1 / -1}.course-body .move-card{border:2px solid var(--ink);border-radius:12px;background:var(--bg-paper);box-shadow:3px 3px 0 var(--ink);padding:14px 16px;margin:0}.course-body .move-card h4{margin:0 0 8px}.course-body .move-card figure.vid-demo{max-width:100%;margin:0 0 10px}.course-body .move-card figure.vid-demo video{box-shadow:2px 2px 0 var(--ink)}.course-body .move-card p{font-size:12.5px;line-height:1.65;margin:0 0 7px}.course-body .move-card p:last-child{margin-bottom:0}.course-body .grid33{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:22px 0}.course-body .grid33>div{border:1.5px solid var(--ink);border-radius:8px;padding:10px 12px;font-size:12.5px;line-height:1.5;background:var(--bg-paper)}.course-body .grid33 b{display:block;color:var(--red);font-size:11.5px;letter-spacing:.04em;margin-bottom:4px}.course-body .img-grid{display:grid;gap:12px;margin:22px 0}.course-body .img-grid-2{grid-template-columns:repeat(2,1fr)}.course-body .img-grid-3{grid-template-columns:repeat(3,1fr)}.course-body .img-grid figure{margin:0}.course-body .img-grid figure img,.course-body .img-grid figure video{box-shadow:2px 2px 0 var(--ink)}@media(max-width:600px){.course-body .img-grid-3{grid-template-columns:repeat(2,1fr)}}.course-body .callout{background:var(--bg-panel);border:1.5px solid var(--ink);border-radius:10px;padding:15px 17px;margin:20px 0}.course-body .callout.warn{border-color:var(--red);background:#fff8f6}.course-body .callout.end{border-style:dashed}.course-body .callout>strong{display:flex;align-items:baseline;gap:8px;margin-bottom:8px;font-size:14.5px;color:var(--ink);letter-spacing:.01em}.course-body .callout>strong:before{content:"";flex:none;align-self:center;width:8px;height:8px;border-radius:2px;background:var(--blue);transform:rotate(45deg)}.course-body .callout.warn>strong:before{background:var(--red)}.course-body .callout p:last-child,.course-body .callout ul:last-child,.course-body .callout ol:last-child{margin-bottom:0}.course-body .pull{font-family:LXGW WenKai,serif;font-size:clamp(20px,2.6vw,24px);font-weight:700;line-height:1.5;color:var(--ink);border-left:4px solid var(--red);padding:4px 0 4px 20px;margin:26px 0;text-wrap:pretty}.course-body .pull cite{display:block;font-size:13px;color:var(--ink-mute);font-weight:400;font-style:normal;margin-top:10px}.course-body .wall{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px;margin:22px 0;padding-left:0;list-style:none}.course-body .wall>li,.course-body .wall>div{border:1.5px solid var(--ink);border-radius:10px;padding:14px 16px;background:var(--bg-paper);font-size:14px;line-height:1.6;margin:0}.course-body .wall b,.course-body .wall strong{color:var(--red);display:block;margin-bottom:4px}.course-body .term-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(212px,1fr));gap:14px;margin:22px 0 26px;padding:0;list-style:none}.course-body .term-grid>li{margin:0;display:flex;flex-direction:column;border:2px solid var(--ink);border-radius:14px;background:var(--bg-paper);box-shadow:3px 3px 0 var(--ink);padding:13px 15px 14px}.course-body .term-grid .thead{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px;padding-bottom:9px;border-bottom:1.5px dashed var(--hair)}.course-body .term-grid .tl{display:inline-flex;align-items:center;gap:7px}.course-body .term-grid .tno{font-family:JetBrains Mono,monospace;font-weight:700;font-size:13.5px;color:var(--ink)}.course-body .term-grid .ten{font-family:JetBrains Mono,monospace;font-size:11.5px;letter-spacing:.02em;color:var(--ink-mute);text-align:right}.course-body .term-grid .tflag{font-size:11px;font-weight:700;color:var(--green-ink);background:var(--green-fill);border:1.5px solid var(--green);border-radius:999px;padding:0 9px;line-height:1.6}.course-body .term-grid strong{display:block;color:var(--ink);font-weight:700;font-family:LXGW WenKai,Fraunces,serif;font-size:21px;line-height:1.2;margin:0 0 6px}.course-body .term-grid p{margin:0;font-size:13px;color:var(--ink-soft);line-height:1.66}.course-body .term-grid>li.key{background:var(--green-fill);border-color:var(--green);box-shadow:3px 3px 0 var(--green)}.course-body .term-grid>li.key .thead{border-bottom-color:var(--green)}.course-body .term-grid>li.key .tno{color:var(--green-ink)}.course-body .term-grid>li.key strong{color:var(--green-ink)}.course-body .flow{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:22px 0;padding-left:0;list-style:none}.course-body .flow>*{border:1.5px solid var(--ink);border-radius:9px;padding:7px 13px;font-size:13.5px;background:var(--bg-paper);margin:0}.course-body .flow .arr{border:none;color:var(--ink-mute);padding:0 2px;background:none}.course-body .steps{counter-reset:stp;list-style:none;padding:0;margin:22px 0;border:2px solid var(--ink);border-radius:12px;overflow:hidden}.course-body .steps>li{position:relative;padding:13px 16px 13px 52px;margin:0;line-height:1.7;background:var(--bg-paper)}.course-body .steps>li+li{border-top:1.5px solid var(--hair)}.course-body .steps>li:before{counter-increment:stp;content:counter(stp,decimal-leading-zero);position:absolute;left:14px;top:13px;font-family:JetBrains Mono,monospace;font-size:13px;font-weight:700;color:var(--red)}.course-body table{width:100%;border-collapse:collapse;margin:22px 0;font-size:14px}.course-body th,.course-body td{border:1px solid var(--hair);padding:9px 13px;text-align:left;vertical-align:top;line-height:1.6}.course-body th{background:var(--bg-panel);font-weight:700;color:var(--ink)}.course-body tr:nth-child(2n) td{background:#fcfcfb}.course-body td img{box-shadow:none!important;border-width:1.5px!important}.course-body .stage-divider{display:flex;align-items:center;gap:16px;margin:56px 0 8px;padding-top:26px;border-top:3px double var(--ink);scroll-margin-top:78px}.course-body .stage-divider .zi{font-family:Fraunces,serif;font-size:clamp(34px,5vw,52px);font-weight:700;color:var(--red);line-height:.9;flex:none}.course-body .stage-divider .meta b{font-size:18px;display:block;color:var(--ink);margin-bottom:3px}.course-body .stage-divider .meta span{font-size:13px;color:var(--ink-mute)}.course-body .note{font-size:13.5px;color:var(--ink-mute);border-left:3px solid var(--hair);padding:4px 0 4px 14px;margin:16px 0;line-height:1.7}.lock-gate{border:2px dashed var(--ink);border-radius:14px;padding:32px 24px;text-align:center;background:linear-gradient(180deg,transparent,var(--bg-panel));margin-top:22px;display:flex;flex-direction:column;align-items:center}.lock-icon{font-size:34px;margin-bottom:12px}.lock-form{display:flex;gap:8px;width:100%;max-width:360px}.lock-form input{flex:1;font:inherit;font-size:15px;padding:11px 14px;border:2px solid var(--ink);border-radius:10px;background:var(--bg-paper);color:var(--ink)}.lock-form input:focus{outline:none;border-color:var(--red)}.lock-form button{font:inherit;font-weight:700;font-size:15px;padding:11px 22px;cursor:pointer;border:2px solid var(--red);border-radius:10px;background:var(--red);color:#fff;transition:transform .12s ease,box-shadow .12s ease}.lock-form button:hover{transform:translate(-1px,-1px);box-shadow:3px 3px 0 var(--ink)}@media(max-width:1024px){.course-shell{grid-template-columns:minmax(0,1fr);gap:0;max-width:800px}.course-toc{position:fixed;top:0;left:0;bottom:0;width:286px;max-width:84vw;z-index:60;max-height:none;border-radius:0;border:none;border-right:2px solid var(--ink);box-shadow:none;transform:translate(-103%);transition:transform .22s ease;padding:18px 12px}.course-toc.open{transform:translate(0);box-shadow:6px 0 24px #0000002e}.toc-fab{display:inline-flex;align-items:center}}@media(max-width:700px){.part-cards{grid-template-columns:1fr}}@media(max-width:600px){.course-shell{padding:18px 16px 60px}.course-meta{flex-wrap:wrap}.unlock-cta{margin-left:0;width:100%;text-align:center;margin-top:4px}.course-body .grid33{grid-template-columns:1fr 1fr}.course-body .stage-divider .zi{font-size:36px}}
