/* Astor Academy v4 layer (see DESIGN-v4.md). Loaded after base/course/landing css. */
:root{--fg-2:#c9c9c4;--fg-3:#94969a;--halo:0 0 .9em rgba(13,14,15,.92),0 0 .25em rgba(13,14,15,.8)}
/* 1 · focus: soften the texture behind the reading column. No panel: a feathered blur + dim, edges invisible */
.field::after{content:"";position:absolute;inset:0;pointer-events:none;
  -webkit-backdrop-filter:blur(7px) brightness(.66) saturate(.75);backdrop-filter:blur(7px) brightness(.66) saturate(.75);
  -webkit-mask:radial-gradient(70% 120% at 50% 50%,#000 30%,rgba(0,0,0,.55) 62%,transparent 92%);mask:radial-gradient(70% 120% at 50% 50%,#000 30%,rgba(0,0,0,.55) 62%,transparent 92%)}
.course-page .field::after{-webkit-mask:linear-gradient(90deg,transparent 4%,#000 24%,#000 78%,rgba(0,0,0,.4) 96%);mask:linear-gradient(90deg,transparent 4%,#000 24%,#000 78%,rgba(0,0,0,.4) 96%)}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){.field::after{background:rgba(13,14,15,.4)}}
.bp,.era-hook,.lb,.story-in,.paras,.tag,.c-hook,.c-subtitle,dd,.x{text-shadow:var(--halo)}
.bp,.lb p,.story-in p{color:var(--fg-2)}
/* flash on precise landing */
.flash{animation:v4flash 1.6s var(--ease)}
@keyframes v4flash{0%{box-shadow:-14px 0 0 -12px var(--tq),inset 0 0 0 0 transparent;background:linear-gradient(90deg,color-mix(in srgb,var(--tq) 16%,transparent),transparent 70%)}100%{box-shadow:none;background:transparent}}
/* 7 · nav: back + breadcrumb */
.v4-back{all:unset;cursor:pointer;color:var(--fg-3);white-space:nowrap;max-width:26ch;font-size:.74rem;overflow:hidden;text-overflow:ellipsis;transition:color .2s}
.v4-back:hover,.v4-back:focus-visible{color:var(--fg)}.v4-back:hover span[aria-hidden]{color:var(--tq)}
.v4-back[hidden]{display:none}
.v4-left{display:flex;align-items:baseline;gap:1rem;min-width:0;overflow:hidden}
.v4-left .crumb{white-space:nowrap}
.v4-crumb-era{color:var(--fg-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:22ch;margin-left:.4em;transition:color .3s}
.v4-crumb-era:hover{color:var(--accent)}
.v4-s-btn{all:unset;cursor:pointer;color:var(--fg-2);margin-right:1.1rem}
.v4-s-btn kbd{font:inherit;border-bottom:1px solid var(--rule-2);padding:0 .25em;margin-left:.2em}
/* 2 · search: full-screen focus, text on hairlines, no box */
.v4-search{position:fixed;inset:0;z-index:60;background:rgba(10,11,12,.82);-webkit-backdrop-filter:blur(14px) saturate(.7);backdrop-filter:blur(14px) saturate(.7);opacity:0;transition:opacity .18s}
.v4-search.on{opacity:1}
.v4-s-in{max-width:52rem;margin:0 auto;padding:clamp(4rem,12vh,8rem) var(--gutter) 2rem;height:100%;display:flex;flex-direction:column}
.v4-s-q{display:flex;align-items:baseline;gap:.8rem;border-bottom:1px solid var(--rule-2);padding-bottom:.6rem;position:relative}
.v4-s-q::after{content:"";position:absolute;left:0;bottom:-1px;height:1px;width:100%;background:linear-gradient(90deg,var(--tq),var(--em) 40%,transparent);transform-origin:left;transform:scaleX(0);transition:transform .6s var(--ease)}
.v4-search.on .v4-s-q::after{transform:scaleX(1)}
.v4-s-q input{all:unset;flex:1;font:300 clamp(1.4rem,3.4vw,2.2rem)/1.2 var(--sans);color:var(--fg);caret-color:var(--tq)}
.v4-s-q input::placeholder{color:var(--fg-4)}
.v4-s-q kbd{font:inherit}
.v4-s-q input::-webkit-search-cancel-button,.ask4 input::-webkit-search-cancel-button{display:none}
.v4-s-scope{margin:.7rem 0 .2rem;min-height:1.2em}.v4-s-scope button{all:unset;cursor:pointer;color:var(--fg-2)}
.v4-s-res{overflow:auto;flex:1;margin-right:-1rem;padding-right:1rem;scrollbar-width:thin;scrollbar-color:var(--rule-2) transparent}
.v4-s-res section{margin-top:1.3rem}
.v4-s-res h3{color:var(--fg-3);font-weight:400;letter-spacing:.08em;text-transform:uppercase;font-size:.68rem;margin-bottom:.3rem}
.v4-s-res a{display:grid;grid-template-columns:1fr auto;column-gap:1rem;padding:.55rem 0 .6rem .9rem;border-top:1px solid var(--rule);position:relative;transition:padding .25s var(--ease)}
.v4-s-res a::before{content:"";position:absolute;left:0;top:.95rem;width:3px;height:3px;background:var(--c)}
.v4-s-res a .t{font-size:1.05rem;color:var(--fg)}.v4-s-res a .m{color:var(--fg-3);text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:26ch;align-self:center}
.v4-s-res a .x{grid-column:1/-1;color:var(--fg-3);font-size:.88rem;line-height:1.5;margin-top:.1rem}
.v4-s-res a .go{position:absolute;right:0;bottom:.6rem;color:var(--tq);opacity:0;transition:opacity .2s}
.v4-s-res a.sel,.v4-s-res a:hover{padding-left:1.4rem}.v4-s-res a.sel::before,.v4-s-res a:hover::before{width:.9rem;height:1px;top:1.1rem;background:var(--tq)}
.v4-s-res a.sel .go,.v4-s-res a:hover .go{opacity:1}.v4-s-res a.sel .t{color:#fff}
.v4-s-res mark{background:none;color:var(--fg);box-shadow:inset 0 -.32em 0 color-mix(in srgb,var(--em) 38%,transparent)}
.v4-try{line-height:2.1}.v4-try button{all:unset;cursor:pointer;color:var(--fg-2);margin-right:1rem;font-family:var(--mono);font-size:.82rem}.v4-try button::before{content:"> ";color:var(--fg-4)}
.v4-s-help{margin-top:1rem;border-top:1px solid var(--rule);padding-top:.6rem}
.v4-search.loading .v4-s-res::before{content:"indexing…";font:.78rem var(--mono);color:var(--fg-3)}
html.v4-searching{overflow:hidden}
/* 6 · rabbit hole links + preview */
a.v4-xl{color:inherit;background:linear-gradient(var(--rule-2),var(--rule-2)) 0 100%/100% 1px no-repeat;transition:background .35s var(--ease),color .2s}
a.v4-xl:hover,a.v4-xl:focus-visible{color:var(--fg);background:linear-gradient(var(--c),var(--c)) 0 100%/100% 1px no-repeat}
a.v4-xl.cross::after{content:"";display:inline-block;width:.32em;height:.32em;margin:0 0 .5em .12em;background:var(--c);opacity:.85;vertical-align:baseline}
.v4-pv{position:fixed;z-index:50;display:grid;grid-template-columns:5.5rem 1fr;gap:.9rem;padding:.9rem 0 .7rem;background:linear-gradient(180deg,var(--bg-2),var(--bg) 70%);border-top:1px solid var(--c);box-shadow:0 30px 60px -20px #000;opacity:0;transform:translateY(-4px);transition:opacity .18s,transform .25s var(--ease);cursor:pointer}
.v4-pv.on{opacity:1;transform:none}.v4-pv.noimg{grid-template-columns:1fr;padding-left:.2rem}
.v4-pv img{width:5.5rem;height:6.6rem;object-fit:cover;filter:grayscale(.35) contrast(1.05);margin-left:.2rem}
.v4-pv .n{font-size:1.05rem;color:var(--fg)}.v4-pv .m{color:var(--fg-3);margin:.1rem 0 .35rem}
.v4-pv .x{font-size:.86rem;line-height:1.5;color:var(--fg-2);padding-right:.8rem}
.v4-pv .f{margin-top:.5rem;color:var(--fg-3);font-size:.68rem;display:flex;gap:.4em;align-items:center}.v4-pv .f .go{margin-left:auto;margin-right:.8rem;color:var(--tq)}
.v4-from{margin-top:1rem;color:var(--fg-3)}.v4-from a,.v4-from button{all:unset;cursor:pointer;color:var(--fg-2)}
/* 3 · the cap */
.v4-cap{position:fixed;right:clamp(.8rem,2.4vw,1.8rem);bottom:clamp(.8rem,2.4vw,1.6rem);z-index:30;display:flex;flex-direction:row-reverse;align-items:flex-end;gap:1rem;--c:var(--accent)}
.v4-cap-b{all:unset;cursor:pointer;width:52px;height:52px;perspective:400px;flex:none;border-radius:50%}
.v4-cap-b:focus-visible{outline:1px solid var(--tq);outline-offset:4px}
.v4-cap-3d{display:block;width:100%;height:100%;position:relative;transform-style:preserve-3d;transition:transform .2s}
.v4-cap svg{position:absolute;inset:0;width:100%;height:100%;backface-visibility:hidden;overflow:visible}
.v4-cap svg path{fill:#141617;stroke:color-mix(in srgb,var(--c) 70%,var(--fg-4));stroke-width:.8}
.v4-cap svg circle{fill:none;stroke:var(--rule-2);stroke-width:.6;stroke-dasharray:1.2 1.6}
.v4-cap svg text{fill:var(--fg-2);font:500 7.6px var(--mono);text-anchor:middle;letter-spacing:.06em;text-transform:uppercase}
.v4-cap svg.bk{transform:rotateY(180deg)}.v4-cap svg.bk path{fill:#101213;stroke:var(--tq)}.v4-cap svg.bk text{fill:var(--em);font-size:9px}
.v4-cap.open .v4-cap-3d{transform:rotateY(180deg)}
.v4-cap.spin .v4-cap-3d{animation:v4spin .62s var(--ease)}
.v4-cap.open.spin .v4-cap-3d{animation:v4spin2 .62s var(--ease)}
@keyframes v4spin{0%{transform:rotateY(180deg) translateY(0)}45%{transform:rotateY(500deg) translateY(-16px) scale(1.08)}100%{transform:rotateY(720deg)}}
@keyframes v4spin2{0%{transform:rotateY(0)}45%{transform:rotateY(320deg) translateY(-16px) scale(1.08)}100%{transform:rotateY(540deg)}}
.v4-cap:hover .v4-cap-3d{transform:rotateY(18deg) rotateX(8deg)}.v4-cap.open:hover .v4-cap-3d{transform:rotateY(198deg) rotateX(8deg)}
.v4-cap.nudge .v4-cap-3d{animation:v4nudge 1.2s var(--ease) 2}
@keyframes v4nudge{30%{transform:rotate(-14deg)}60%{transform:rotate(9deg)}}
.v4-cap-f{max-width:min(24rem,calc(100vw - 6rem));padding:.2rem 0 .1rem;text-shadow:var(--halo);position:relative}
.v4-cap-f::before{content:"";position:absolute;inset:-2.2rem -2rem -1.6rem -2.6rem;z-index:-1;background:radial-gradient(closest-side,rgba(13,14,15,.985) 55%,rgba(13,14,15,.85) 78%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);-webkit-mask:radial-gradient(closest-side,#000 70%,transparent);mask:radial-gradient(closest-side,#000 70%,transparent);pointer-events:none}
.v4-cap-f .k{color:var(--c);font-size:.66rem;letter-spacing:.06em}
.v4-cap-f .t{font-size:1.02rem;line-height:1.45;color:var(--fg);margin:.35rem 0 .45rem}
.v4-cap-f .t.in{animation:v4rise .5s var(--ease)}@keyframes v4rise{from{opacity:0;transform:translateY(6px)}}
.v4-cap-f .a{display:flex;gap:1rem;color:var(--fg-3)}.v4-cap-f .a button,.v4-cap-f .a a{all:unset;cursor:pointer;color:var(--fg-2)}.v4-cap-f .a a.go{color:var(--tq)}.v4-cap-f .a .off{color:var(--fg-4);margin-left:auto}
.v4-cap-f [hidden]{display:none}
@media (max-width:640px){.v4-cap{left:.8rem;right:.8rem;justify-content:flex-start}.v4-cap-b{width:44px;height:44px}.v4-cap-f{max-width:none;flex:1}.v4-s-res a .m{display:none}.v4-crumb-era,.v4-back .lbl .dim{display:none}}
@media (prefers-reduced-motion:reduce){.v4-cap .v4-cap-3d{transition:none}.flash{animation:none;box-shadow:-14px 0 0 -12px var(--tq)}}
@media print{.v4-cap,.v4-search,.v4-pv{display:none!important}}

@media (max-width:1500px){.course-page .v4-back .lbl .dim{display:none}}
@media (max-width:1100px){.v4-crumb-era{display:none}}
.thread{grid-column:2;color:var(--fg-2);font-size:1.02rem;line-height:1.55;max-width:34rem;margin:0 0 1.1rem;padding-left:1.4rem;position:relative;text-shadow:var(--halo)}
.thread span{position:absolute;left:0;top:.1rem;color:var(--tq)}
.spine{margin-top:1.2rem;color:var(--fg-2);border-left:1px solid var(--em);padding-left:1rem;max-width:34rem}.spine p+p{margin-top:.5rem}
.v4-read{grid-column:2;margin:.8rem 0;color:var(--fg-3)}.v4-read a{color:var(--fg-2)}.v4-read a:hover{color:var(--tq)}
.v4-zoomable{cursor:zoom-in}
.v4-lb{position:fixed;inset:0;z-index:80;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.9rem;background:rgba(9,10,11,0);-webkit-backdrop-filter:blur(0);backdrop-filter:blur(0);transition:background .32s var(--ease),backdrop-filter .32s var(--ease);cursor:zoom-out}
.v4-lb.on{background:rgba(9,10,11,.9);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}
.v4-lb-st img,.v4-lb-st video{display:block;object-fit:contain;transition:transform .34s var(--ease),opacity .12s;will-change:transform;box-shadow:0 40px 90px -30px #000}
.v4-lb-st video{cursor:auto;background:#000}
.v4-lb-c{max-width:min(46rem,92vw);text-align:center;color:var(--fg-3);font-size:.7rem;line-height:1.6;opacity:0;transform:translateY(6px);transition:opacity .3s .12s,transform .3s .12s var(--ease)}
.v4-lb.on .v4-lb-c{opacity:1;transform:none}.v4-lb-c span{display:block;color:var(--fg-2);font-family:var(--sans);font-size:.88rem;margin-bottom:.2rem}.v4-lb-c a{color:var(--fg-2);background:linear-gradient(var(--rule-2),var(--rule-2)) 0 100%/100% 1px no-repeat}.v4-lb-c a:hover{color:var(--tq)}
.v4-lb-x{all:unset;position:absolute;top:1rem;right:1.2rem;font:300 1.9rem/1 var(--sans);color:var(--fg-3);cursor:pointer;padding:.3rem .5rem;opacity:0;transition:opacity .3s,color .2s}.v4-lb.on .v4-lb-x{opacity:1}.v4-lb-x:hover,.v4-lb-x:focus-visible{color:var(--tq)}
html.v4-lbopen{overflow:hidden}
.v4-lb[hidden],.v4-pv[hidden],.v4-search[hidden]{display:none!important}
/* v4.1 descender fix: big display titles keep g/y/p/j inside any mask/clip box */
.intro h1,.era-title,.sec-title,.h-hero,.h-hero .line,.h-hero .wipe,.c-title,.c-subtitle,.subtitle{line-height:1.08;padding-bottom:.16em;margin-bottom:-.06em;overflow:visible}
.intro h1.wipe,.h-hero .wipe,.era-title.wipe,.c-title.wipe{padding-bottom:.2em}
.h-hero .line{overflow:visible!important}
@media (max-width:640px){body:not(.course-page) .v4-back{display:none}.bar .rank{white-space:nowrap}}

/* flash cards */
.v4-fc{position:fixed;inset:0;z-index:62;background:rgba(10,11,12,.86);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);opacity:0;transition:opacity .18s}.v4-fc.on{opacity:1}.v4-fc[hidden]{display:none!important}
.v4-fc-in{max-width:40rem;margin:0 auto;padding:clamp(3.5rem,10vh,7rem) var(--gutter) 2rem;display:flex;flex-direction:column;gap:1.2rem}
.v4-fc header{display:flex;gap:1.2rem;align-items:baseline;color:var(--fg-3);border-bottom:1px solid var(--rule);padding-bottom:.6rem;flex-wrap:wrap}
.v4-fc header .sc{margin-left:auto}.v4-fc header .sc b{color:var(--em);font-weight:500}
.v4-fc header .ez{cursor:pointer;display:flex;gap:.35rem;align-items:center}.v4-fc header .ez input{accent-color:#14a7a0}
.v4-fc header .x{all:unset;cursor:pointer;color:var(--fg-3)}.v4-fc header .x:hover{color:var(--tq)}
.v4-fc .card{perspective:1400px;min-height:12rem}
.v4-fc .fc3{position:relative;min-height:12rem;transform-style:preserve-3d;transition:transform .6s var(--ease)}
.v4-fc .card.flip .fc3{transform:rotateX(180deg)}
.v4-fc .fr,.v4-fc .bk{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;padding:1.1rem 0 1rem 1.2rem;border-left:1px solid var(--rule-2)}
.v4-fc .bk{transform:rotateX(180deg)}
.v4-fc .card.ok .bk{border-left-color:var(--em)}.v4-fc .card.no .bk{border-left-color:var(--fg-4)}
.v4-fc .k{color:var(--fg-4);font-size:.64rem;letter-spacing:.1em;text-transform:uppercase;margin-bottom:.6rem}
.v4-fc .d{font:300 clamp(1.1rem,2.6vw,1.45rem)/1.5 var(--sans);color:var(--fg)}
.v4-fc .t{font:200 clamp(2rem,6vw,3.4rem)/1.15 var(--sans);letter-spacing:-.03em;color:var(--fg);padding-bottom:.12em}
.v4-fc .card.ok .t{text-shadow:0 0 24px color-mix(in srgb,var(--em) 40%,transparent)}
.v4-fc .fb{font:.72rem var(--mono);color:var(--fg-3);margin-top:.6rem}.v4-fc .card.ok .fb{color:var(--em)}
.v4-fc .ans{display:flex;gap:.8rem;align-items:baseline;border-bottom:1px solid var(--rule-2);padding-bottom:.5rem;position:relative}
.v4-fc .ans::after{content:"";position:absolute;left:0;bottom:-1px;height:1px;width:30%;background:linear-gradient(90deg,var(--tq),var(--em),transparent)}
.v4-fc .ans input{all:unset;flex:1;font:300 1.35rem/1.3 var(--sans);color:var(--fg);caret-color:var(--tq)}.v4-fc .ans button{all:unset;cursor:pointer;color:var(--fg-2)}
.v4-fc.easy .ans{display:none}
.v4-fc .mc{list-style:none;padding:0;display:none;grid-template-columns:1fr 1fr;gap:.2rem 1.6rem}.v4-fc.easy .mc{display:grid}
.v4-fc .mc button{all:unset;cursor:pointer;display:flex;gap:.7rem;align-items:baseline;width:100%;padding:.55rem 0;border-top:1px solid var(--rule);color:var(--fg-2);transition:color .2s,padding .25s var(--ease)}
.v4-fc .mc button span{color:var(--fg-4);font-size:.7rem}.v4-fc .mc button:hover{color:var(--fg);padding-left:.4rem}
.v4-fc .mc button.right{color:var(--em);border-top-color:var(--em)}.v4-fc .mc button.wrong{color:var(--fg-4);text-decoration:line-through}
.v4-fc .ft{display:flex;gap:1.2rem;color:var(--fg-3)}.v4-fc .ft .hint{color:var(--tq);margin-right:auto}.v4-fc .ft a,.v4-fc .ft button{all:unset;cursor:pointer;color:var(--fg-2)}.v4-fc .ft a:hover,.v4-fc .ft button:hover{color:var(--tq)}
.v4-fc-go{grid-column:2;margin:-1.2rem 0 1.6rem}.v4-fc-go button{all:unset;cursor:pointer;color:var(--tq)}
@media (max-width:640px){.v4-fc .mc{grid-template-columns:1fr}.v4-fc header .sc{margin-left:0;width:100%;order:3}.v4-fc .card,.v4-fc .fc3{min-height:14rem}}
@media (prefers-reduced-motion:reduce){.v4-fc .fc3{transition:none}}
.v4-fc .fr{position:relative;min-height:12rem}
/* phone header: one compact block, solid ground, content starts below it */
@media (max-width:640px){
 .course-page .bar{background:var(--bg);padding:.6rem var(--gutter) .5rem;row-gap:.35rem;box-shadow:0 10px 18px -10px var(--bg)}
 .course-page .bar .tools{display:flex;flex-wrap:nowrap;overflow-x:auto;white-space:nowrap;gap:.9rem;scrollbar-width:none;font-size:.72rem}
 .course-page .bar .tools::-webkit-scrollbar{display:none}
 .course-page .bar .tools>*{margin:0!important;flex:none}
 .course-page .titlebtn .sub,.course-page .titlebtn [aria-hidden]{display:none}
 .course-page main{padding-top:calc(var(--barh,6rem) + .4rem)!important}
 .course-page .sheet[id],.course-page .who,.course-page dt{scroll-margin-top:calc(var(--barh,6rem) + .6rem)}
}
.toc li a{grid-template-columns:1fr!important}
@media (max-width:640px){.course-page .bar .tools{justify-self:stretch;justify-content:flex-start;grid-column:1/-1;min-width:0}}
.glance-ix{grid-column:2/4;list-style:none;padding:0;columns:2 16rem;column-gap:2.4rem;margin:.4rem 0 0}
.glance-ix li{break-inside:avoid}.glance-ix a{display:block;padding:.32rem 0;border-top:1px solid var(--rule);color:var(--fg-2);font-size:.98rem;transition:color var(--t-fast,120ms),transform var(--t-base,170ms) var(--e-out,ease)}
.glance-ix a:hover{color:var(--fg);transform:translateX(2px)}
@media (max-width:640px){.glance-ix{columns:1;grid-column:2}}
/* ===== v4.3 course bar: opaque, compact, centred; one hairline that doubles as progress ===== */
.course-page .bar.v43{display:block;padding:0;z-index:70;background:rgba(12,13,14,.96);-webkit-backdrop-filter:blur(14px) saturate(.8);backdrop-filter:blur(14px) saturate(.8);box-shadow:0 1px 0 var(--rule),0 14px 22px -14px rgba(0,0,0,.9)}
.course-page .bar.v43 .b-old{display:none!important}
.b-in{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,auto) minmax(0,1fr);align-items:center;gap:1.2rem;max-width:72rem;margin:0 auto;padding:.7rem var(--gutter);height:2.9rem}
.b-l{display:flex;align-items:center;gap:.55rem;min-width:0;font-size:.74rem}
.b-l .v4-back{max-width:none;font-size:.74rem}.b-l .v4-back .lbl{display:none}
.b-mark{color:var(--fg)}.b-sep{color:var(--fg-4)}.b-crumb{color:var(--fg-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.b-crumb:hover,.b-mark:hover{color:var(--fg)}
.b-c{all:unset;cursor:pointer;display:flex;align-items:baseline;gap:.5rem;min-width:0;max-width:34rem;justify-self:center;font-size:.9rem;white-space:nowrap}
.b-c .tt{color:var(--fg)}.b-c .cur{color:var(--fg-3);overflow:hidden;text-overflow:ellipsis;transition:color var(--t-fast,120ms)}.b-c:hover .cur{color:var(--fg)}
.b-r{justify-self:end;display:flex!important;gap:1.05rem;align-items:center;color:var(--fg-2);font-size:.72rem;position:relative}
.b-r>button,.b-more>button{all:unset;cursor:pointer;color:var(--fg-2)}.b-r>button:hover,.b-more>button:hover{color:var(--fg)}
.b-more{position:relative}.b-menu{position:absolute;right:0;top:calc(100% + .9rem);min-width:10rem;display:flex;flex-direction:column;background:rgba(12,13,14,.98);box-shadow:0 1px 0 var(--rule) inset,0 20px 40px -16px #000;padding:.4rem 0;opacity:0;transform:translateY(-3px);transition:opacity var(--t-base,170ms) var(--e-out,ease),transform var(--t-base,170ms) var(--e-out,ease)}
.b-menu.on{opacity:1;transform:none}.b-menu[hidden]{display:none}
.b-menu a,.b-menu .rk{padding:.4rem .9rem;color:var(--fg-2)}.b-menu a:hover{color:var(--fg);background:rgba(231,230,226,.03)}.b-menu .rk{border-top:1px solid var(--rule);margin-top:.3rem;color:var(--fg-3)}
.b-prog{position:absolute;left:0;right:0;bottom:-1px;height:1px;background:linear-gradient(90deg,var(--tq),var(--em));transform-origin:left;transform:scaleX(0);opacity:.75;pointer-events:none}
.course-page .progress,.course-page .chrono,.course-page .rail{display:none!important}
.course-page main{padding-top:calc(var(--barh,2.9rem) + .5rem)}
.course-page .sheet[id],.course-page .who,.course-page dt{scroll-margin-top:calc(var(--barh,2.9rem) + 1rem)}
.b-ix{all:unset;cursor:pointer;display:none;flex-direction:column;gap:3px;width:16px;padding:4px 0}.b-ix i{height:1px;background:var(--fg-2);transition:transform var(--t-base,170ms) var(--e-out,ease),opacity var(--t-fast,120ms)}
body.ix-sheet .b-ix i:nth-child(1){transform:translateY(4px) rotate(45deg)}body.ix-sheet .b-ix i:nth-child(2){opacity:0}body.ix-sheet .b-ix i:nth-child(3){transform:translateY(-4px) rotate(-45deg)}
/* accordion index */
.v4-ix{position:fixed;z-index:40;left:0;top:calc(var(--barh,2.9rem) + 1.2rem);bottom:1rem;width:calc((100vw - 61rem)/2 - 1.5rem);max-width:16rem;padding:0 .4rem 0 var(--gutter);overflow:auto;scrollbar-width:none;font-size:.8rem}
.v4-ix::-webkit-scrollbar{display:none}
.v4-ix .h{font-size:.64rem;letter-spacing:.1em;text-transform:uppercase;margin-bottom:.5rem}
.v4-ix ul,.v4-ix ol{list-style:none;padding:0;margin:0}
.v4-ix .ct{all:unset;cursor:pointer;display:flex;justify-content:space-between;align-items:center;width:100%;padding:.32rem 0;color:var(--fg-3);transition:color var(--t-fast,120ms)}
.v4-ix .ct:hover,.v4-ix li.here>.ct{color:var(--fg)}.v4-ix li.here>.ct span{box-shadow:inset 0 -1px 0 color-mix(in srgb,var(--c) 60%,transparent)}
.v4-ix .ct svg{width:9px;height:9px;fill:none;stroke:currentColor;stroke-width:1;opacity:.6;transition:transform var(--t-base,170ms) var(--e-out,ease)}
.v4-ix li.open>.ct svg{transform:rotate(90deg)}
.v4-ix .eb{display:grid;grid-template-rows:0fr;opacity:0;transition:grid-template-rows var(--t-slow,280ms) var(--e-out,ease),opacity var(--t-base,170ms)}
.v4-ix li.open>.eb{grid-template-rows:1fr;opacity:1}.v4-ix .eb>ol{overflow:hidden}
.v4-ix .eb a{display:block;padding:.2rem 0 .2rem .8rem;color:var(--fg-3);border-left:1px solid var(--rule);line-height:1.35;transition:color var(--t-fast,120ms),border-color var(--t-fast,120ms)}
.v4-ix .eb a:hover{color:var(--fg)}.v4-ix .eb a.on{color:var(--fg);border-left-color:var(--tq)}
.v4-ix .ft{display:flex;flex-wrap:wrap;gap:.3rem .9rem;margin-top:1rem;padding-top:.6rem;border-top:1px solid var(--rule);font-size:.66rem}.v4-ix .ft a{color:var(--fg-3)}.v4-ix .ft a:hover{color:var(--tq)}
@media (max-width:1399px){.v4-ix{max-width:none;left:0;top:var(--barh,2.9rem);bottom:0;width:min(22rem,86vw);padding:1rem var(--gutter);background:rgba(12,13,14,.98);box-shadow:1px 0 0 var(--rule);transform:translateX(-102%);opacity:0;transition:transform var(--t-slow,280ms) var(--e-out,ease),opacity var(--t-base,170ms);z-index:65}
 body.ix-sheet .v4-ix{transform:none;opacity:1}.b-ix{display:flex}}
@media (max-width:640px){.b-in{grid-template-columns:auto minmax(0,1fr) auto;gap:.7rem;padding:.55rem var(--gutter);height:2.7rem}.b-crumb,.b-sep,.b-l .v4-back{display:none}.b-c{font-size:.82rem;justify-self:start}.b-c .tt,.b-c .dot{display:none}
 .b-r{gap:.75rem;overflow-x:auto;max-width:44vw;scrollbar-width:none}.b-r::-webkit-scrollbar{display:none}.b-r>button,.b-more>button{flex:none}.v4-ix{width:100vw}}
@media (prefers-reduced-motion:reduce){.v4-ix .eb,.v4-ix{transition:none}}
@media (max-width:640px){.course-page .bar.v43 .b-in>.b-r{grid-column:3!important;grid-row:1!important;width:auto!important;padding:0!important;border:0!important;margin:0!important}.course-page .bar.v43 .b-in>*{grid-row:1}.v4-ix{background:#0c0d0e}}
.b-c{overflow:hidden}.b-c .cur{min-width:0;display:block}
@media (max-width:640px){.b-r{max-width:46vw;-webkit-mask:linear-gradient(90deg,#000 85%,transparent);mask:linear-gradient(90deg,#000 85%,transparent);padding-right:1rem!important}}
@media (max-width:640px){.b-c{width:100%;justify-self:stretch}}
@media (max-width:640px){.course-page .bar.v43 .b-in{display:flex}.b-l{flex:none}.course-page .bar.v43 .b-c{flex:1 1 0;min-width:0;width:auto}.course-page .bar.v43 .b-r{flex:0 1 auto;min-width:0}}
/* v6.1 cap: tip text opens optional depth inline */
.v4-cap-f .t{cursor:pointer}
.v4-cap-f .more{margin:.5rem 0 .2rem;padding-left:.7rem;box-shadow:inset 1px 0 0 var(--c);font-size:.84rem;line-height:1.5;color:var(--fg-2);animation:capm .26s var(--e-out,ease)}
.v4-cap-f .more .ctx{font-size:.62rem;letter-spacing:.05em;margin:0 0 .35rem}.v4-cap-f .more .rel{margin:0 0 .4rem}.v4-cap-f .more .mono{font-size:.66rem;margin:.5rem 0 0}
@keyframes capm{from{opacity:0;transform:translateY(-3px)}}
/* v6.1: the v4 focus layer (backdrop blur 7px + brightness .66 over the whole field) flattened the moving background to near-black; removed. Text keeps its halo for separation. */
.field::after{content:none!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
/* v6.1 flash card flip fix: one face at a time, nothing overlaps */
.v4-fc .card{perspective:1400px;height:15rem;min-height:0;position:relative}
.v4-fc .fc3{position:relative;height:100%;min-height:0;transform-style:preserve-3d;-webkit-transform-style:preserve-3d;transition:transform .6s var(--ease)}
.v4-fc .card.flip .fc3{transform:rotateX(180deg)}
.v4-fc .fc3>.fr,.v4-fc .fc3>.bk{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:flex-start;overflow:auto;backface-visibility:hidden;-webkit-backface-visibility:hidden;transition:visibility 0s linear .3s}
.v4-fc .fc3>.fr{transform:rotateX(0deg);visibility:visible}
.v4-fc .fc3>.bk,.v4-fc .fc3>.bk:hover{transform:rotateX(180deg)!important;visibility:hidden}
.v4-fc .card.flip .fc3>.fr{visibility:hidden}.v4-fc .card.flip .fc3>.bk{visibility:visible}
.v4-fc .fc3 .k{margin:0 0 .7rem}.v4-fc .fc3 .d{margin:0;max-width:34rem}
.v4-fc .fc3 .t{margin:0;overflow-wrap:anywhere}
.v4-fc .fc3 .fb{margin:auto 0 0;padding-top:.8rem;min-height:1.2em;letter-spacing:.06em}
@media (max-width:640px){.v4-fc .card{height:17rem}.v4-fc .fc3 .t{font-size:2.2rem}}
@media (prefers-reduced-motion:reduce){.v4-fc .fc3,.v4-fc .fc3>*{transition:none}}
