/* /library/ : one film, one motif. The twenty-spine shelf (geo.ts) stands in the splash, drops into the register
   console, thins into the warp of the loom register, carries the reading route's weft, runs as fibre in the interlude,
   stands on the status staircase, twists into the programme's plies and ends as the closing swatch.
   Shared page rules, authored entrances, heading effects and the splash live here; blocks 2 to 4 in index-paper.css,
   blocks 5 to 8 in index-night.css. Pre-states only under :root[data-m-go]; the HTML is the composed end state. */
.lib-page{--lib-ink:var(--gft-night);--lib-soft:#35564e;--lib-rule:#0e4d4a40;--lib-acc:var(--gft-forest);--lib-gold-ink:#8a5a12;--lib-gold:#e3a948;--lib-deep:#0b3b38;overflow-x:clip}
.lib-page [hidden]{display:none!important}
.lib-page .gft-eyebrow{font-size:12px;letter-spacing:.14em}
.lib-note{font:12px/1.7 var(--gft-font-mono);color:var(--lib-soft);max-width:80ch}
.lib-page .gft-cite{font-size:12px;color:inherit}
.lib-kicker{font:12px/1.7 var(--gft-font-mono);text-transform:uppercase;letter-spacing:.12em}
.lib-page :is(a,button,input):focus-visible{outline:3px solid var(--gft-ochre);outline-offset:4px}
.lib-svg-note{fill:currentColor;font:600 15px var(--gft-font-mono);letter-spacing:.04em}
.lib-svg-gold{fill:#8a5a12;font:700 15px var(--gft-font-mono);letter-spacing:.04em}
.lib-svg-inv{fill:var(--gft-paper)}
.lib-status{display:inline-flex;align-items:center;gap:10px;font:12px/1.6 var(--gft-font-mono);color:var(--lib-soft);max-width:none}
.lib-status::before{content:'';width:8px;height:8px;border-radius:50%;background:var(--lib-acc);flex:none}
.lib-status--wait::before{background:var(--gft-ochre)}
[data-lib-paper][data-dim]:not(path){opacity:.15}

/* ---------- Authored entrances (partly visible from the first frame, settled by about 900 ms, run once) ---------- */
:root[data-m-go] :is([data-m=lib-slide-l],[data-m=lib-slide-r],[data-m=lib-fold],[data-m=lib-rise],[data-m=lib-wipe],[data-m=lib-drop],[data-m=lib-scan],[data-m=lib-fill],[data-m=lib-draw]):not([data-m-in]){opacity:.18}
:root[data-m-go] [data-m=lib-slide-l]:not([data-m-in]){transform:translateX(-72px)}
:root[data-m-go] [data-m=lib-slide-r]:not([data-m-in]){transform:translateX(72px)}
:root[data-m-go] [data-m=lib-fold]:not([data-m-in]){transform:perspective(700px) rotateX(-68deg);transform-origin:50% 0}
:root[data-m-go] [data-m=lib-rise]:not([data-m-in]){transform:translateY(56px) scaleY(.6);transform-origin:50% 100%}
:root[data-m-go] [data-m=lib-wipe]:not([data-m-in]){clip-path:inset(-4% 62% -4% -4%)}
:root[data-m-go] [data-m=lib-drop]:not([data-m-in]){transform:translateY(-44px)}
:root[data-m-go] [data-m=lib-scan]:not([data-m-in]){clip-path:inset(0 0 88% 0);filter:brightness(1.5)}
:root[data-m-go] [data-m=lib-fill]:not([data-m-in]){transform:translateY(28px);clip-path:inset(60% -4% -4% -4%)}
:root[data-m-go] [data-m=lib-draw]:not([data-m-in]){clip-path:inset(-4% 88% -4% -4%)}
:root[data-m-go] :is([data-m=lib-slide-l],[data-m=lib-slide-r],[data-m=lib-fold],[data-m=lib-rise],[data-m=lib-wipe],[data-m=lib-drop],[data-m=lib-scan],[data-m=lib-fill],[data-m=lib-draw])[data-m-in]{animation-duration:820ms;animation-timing-function:cubic-bezier(.16,1,.3,1);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] [data-m=lib-slide-l][data-m-in]{animation-name:lib-slide-l}
:root[data-m-go] [data-m=lib-slide-r][data-m-in]{animation-name:lib-slide-r}
:root[data-m-go] [data-m=lib-fold][data-m-in]{animation-name:lib-fold;transform-origin:50% 0}
:root[data-m-go] [data-m=lib-rise][data-m-in]{animation-name:lib-rise;transform-origin:50% 100%;animation-delay:calc(var(--i,0)*12ms);animation-duration:640ms}
:root[data-m-go] [data-m=lib-wipe][data-m-in]{animation-name:lib-wipe}
:root[data-m-go] [data-m=lib-drop][data-m-in]{animation-name:lib-drop}
:root[data-m-go] [data-m=lib-scan][data-m-in]{animation-name:lib-scan}
:root[data-m-go] [data-m=lib-fill][data-m-in]{animation-name:lib-fill}
:root[data-m-go] [data-m=lib-draw][data-m-in]{animation-name:lib-draw}
@keyframes lib-slide-l{from{opacity:.18;transform:translateX(-72px)}}
@keyframes lib-slide-r{from{opacity:.18;transform:translateX(72px)}}
@keyframes lib-fold{from{opacity:.18;transform:perspective(700px) rotateX(-68deg)}}
@keyframes lib-rise{from{opacity:.18;transform:translateY(56px) scaleY(.6)}}
@keyframes lib-wipe{from{opacity:.18;clip-path:inset(-4% 62% -4% -4%)}to{clip-path:inset(-4% -4% -4% -4%)}}
@keyframes lib-drop{from{opacity:.18;transform:translateY(-44px)}}
@keyframes lib-scan{from{opacity:.18;clip-path:inset(0 0 88% 0);filter:brightness(1.5)}to{clip-path:inset(0 0 0 0);filter:brightness(1)}}
@keyframes lib-fill{from{opacity:.18;transform:translateY(28px);clip-path:inset(60% -4% -4% -4%)}to{clip-path:inset(-4% -4% -4% -4%)}}
@keyframes lib-draw{from{opacity:.18;clip-path:inset(-4% 88% -4% -4%)}to{clip-path:inset(-4% -4% -4% -4%)}}

/* ---------- Heading effects: a second, smaller entrance on the heading itself (played once by client.ts) ---------- */
:root[data-m-go] [data-lib-fx]:not([data-lib-in]){opacity:.3}
:root[data-m-go] [data-lib-fx=rise]:not([data-lib-in]){transform:translateY(22px)}
:root[data-m-go] [data-lib-fx=skew]:not([data-lib-in]){transform:translateX(-16px) skewX(-6deg)}
:root[data-m-go] [data-lib-fx=wdth]:not([data-lib-in]){transform:scaleX(.88);transform-origin:0 50%}
:root[data-m-go] [data-lib-fx=drop]:not([data-lib-in]){transform:translateY(-18px)}
:root[data-m-go] [data-lib-fx=swing]:not([data-lib-in]){transform:perspective(700px) rotateX(32deg);transform-origin:50% 0}
:root[data-m-go] [data-lib-fx=zoom]:not([data-lib-in]){transform:scale(.92);transform-origin:0 100%}
:root[data-m-go] [data-lib-fx=track]:not([data-lib-in]){transform:translateX(28px) scaleX(1.08);transform-origin:0 50%}
:root[data-m-go] [data-lib-fx=blur]:not([data-lib-in]){filter:blur(8px)}
:root[data-m-go] [data-lib-fx][data-lib-in]{animation-duration:700ms;animation-timing-function:cubic-bezier(.16,1,.3,1);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] [data-lib-fx=rise][data-lib-in]{animation-name:lib-fx-rise}
:root[data-m-go] [data-lib-fx=skew][data-lib-in]{animation-name:lib-fx-skew}
:root[data-m-go] [data-lib-fx=wdth][data-lib-in]{animation-name:lib-fx-wdth;transform-origin:0 50%}
:root[data-m-go] [data-lib-fx=drop][data-lib-in]{animation-name:lib-fx-drop}
:root[data-m-go] [data-lib-fx=swing][data-lib-in]{animation-name:lib-fx-swing;transform-origin:50% 0}
:root[data-m-go] [data-lib-fx=zoom][data-lib-in]{animation-name:lib-fx-zoom;transform-origin:0 100%}
:root[data-m-go] [data-lib-fx=track][data-lib-in]{animation-name:lib-fx-track;transform-origin:0 50%}
:root[data-m-go] [data-lib-fx=blur][data-lib-in]{animation-name:lib-fx-blur}
@keyframes lib-fx-rise{from{opacity:.3;transform:translateY(22px)}}
@keyframes lib-fx-skew{from{opacity:.3;transform:translateX(-16px) skewX(-6deg)}}
@keyframes lib-fx-wdth{from{opacity:.3;transform:scaleX(.88)}}
@keyframes lib-fx-drop{from{opacity:.3;transform:translateY(-18px)}}
@keyframes lib-fx-swing{from{opacity:.3;transform:perspective(700px) rotateX(32deg)}}
@keyframes lib-fx-zoom{from{opacity:.3;transform:scale(.92)}}
@keyframes lib-fx-track{from{opacity:.3;transform:translateX(28px) scaleX(1.08)}}
@keyframes lib-fx-blur{from{opacity:.3;filter:blur(8px)}to{filter:blur(0)}}
/* The splash heading turns in (fx turn), in place of the kit's warp: one animation list on the element */
:root[data-m-go] .lib-page .gft-splash h1[data-m=warp][data-m-in]{animation-name:lib-fx-turn;transform-origin:0 100%}
@keyframes lib-fx-turn{from{opacity:.28;transform:translateY(18px) rotate(-3deg)}}

/* ---------- Block 1 · splash: twenty spines on one beam ---------- */
.lib-page .gft-splash__structure{inset:0;overflow:clip;pointer-events:none}
.lib-page .gft-splash__structure::after{background:linear-gradient(180deg,#072d2bd9 0%,#072d2bb8 44%,transparent 76%)}
.lib-page .gft-splash h1{max-width:none;white-space:nowrap;font-size:clamp(4rem,6.2vw,6.8rem)}
.lib-page .gft-splash__content{padding-top:56px;padding-bottom:clamp(160px,22svh,210px)}
.lib-page .gft-splash__lede{width:min(440px,100%);max-width:none;margin-top:20px}
.lib-page .gft-splash__actions{margin-top:22px}
.lib-page .gft-splash__bottom{position:relative;z-index:1;flex-shrink:0}
.lib-page .gft-splash__data,.lib-page .gft-splash__signal,.lib-page .gft-splash__caption,.lib-page .gft-splash__position,.lib-page .gft-splash__cue{font-size:12px}
.lib-page .gft-splash__data{display:none}
.lib-page .gft-splash__caption{color:#c3d6cb;max-width:34ch}
.lib-sx{position:absolute;inset:0;display:flex}
.lib-sx__stage{display:grid;grid-template-rows:minmax(0,1fr) auto auto auto;height:100%;padding-top:56px;padding-bottom:calc(var(--splash-strip-h,94px) + 4px)}
.lib-sx__fig{align-self:start;justify-self:end;width:min(480px,38%);position:relative;z-index:2;color:#e2ebe6;pointer-events:auto}
.lib-sx__num{font:850 clamp(4.2rem,8vw,8.2rem)/.9 var(--gft-font-display);letter-spacing:-.075em;color:var(--gft-sage);font-variant-numeric:tabular-nums;max-width:none}
.lib-sx__ruler{position:relative;height:20px;margin-top:10px;display:flex;justify-content:space-between;align-items:flex-end}
.lib-sx__rule{position:absolute;left:0;right:0;bottom:0;height:2px;background:#e3a948;transform-origin:0 50%}
.lib-sx__ruler b{display:block;width:2px;height:12px;background:#6bb68f}
.lib-sx__ruler b:nth-child(5n+2){height:18px;background:#e3a948}
.lib-sx__eq{font:600 14px/1.5 var(--gft-font-mono);margin-top:10px;color:#e2ebe6;max-width:none}
.lib-sx__eq strong{color:#e3a948}
.lib-sx__lab{font:12px/1.5 var(--gft-font-mono);letter-spacing:.06em;text-transform:uppercase;color:#cfe0d6;margin-top:4px;max-width:38ch}
.lib-sx__pills{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
.lib-sx__pill{min-height:32px;padding:4px 10px;border:1px solid #6bb68f88;border-radius:999px;background:#072d2bcc;color:#e2ebe6;font:600 12px var(--gft-font-mono);cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:background-color 220ms,color 220ms,border-color 220ms}
.lib-sx__pill b{color:#e3a948}
.lib-sx__pill[aria-pressed=true]{background:#e3a948;border-color:#e3a948;color:#072d2b}
.lib-sx__pill[aria-pressed=true] b{color:#072d2b}
.lib-sx__rack{--sw:calc(100cqw / 24 * .68);--weft:calc(22px + (100% - 22px) * .62);position:relative;height:clamp(220px,38svh,340px);container-type:inline-size;transform-origin:50% 100%;overflow-anchor:none}
.lib-sx__lattice{position:absolute;left:0;right:0;bottom:22px;height:100svh;pointer-events:none}
.lib-sx__lattice i{position:absolute;top:0;bottom:0;left:calc(var(--x) * 100cqw);width:1px;background:#6bb68f2e}
.lib-sx__under{position:absolute;left:-1%;right:-1%;bottom:var(--weft);height:3px;background:#a86b14}
.lib-sx__sp{position:absolute;left:calc(var(--x) * 100cqw - var(--sw) / 2);width:var(--sw);bottom:0;height:100%;pointer-events:auto;transition:transform 320ms cubic-bezier(.2,.8,.2,1),opacity 260ms}
.lib-sx__body{position:absolute;left:0;right:0;top:0;bottom:22px;background:linear-gradient(180deg,#1d6e66 0%,#0e4d4a 55%,#082f2d 100%);border:1px solid #8fc9a8cc;box-shadow:inset 3px 0 0 #6bb68f66;border-bottom:0;transform-origin:50% 100%}
.lib-sx__body u{position:absolute;left:-4px;right:-4px;bottom:62%;height:2px;background:#e2ebe6;text-decoration:none}
.lib-sx__dot{position:absolute;left:50%;bottom:14px;width:6px;height:6px;margin-left:-3px;border-radius:50%;background:#6bb68f}
.lib-sx__sp b{position:absolute;left:0;right:0;top:12px;font:600 12px var(--gft-font-mono);letter-spacing:.06em;color:#eef5f1;writing-mode:vertical-rl;transform:rotate(180deg);display:flex;align-items:center;justify-content:flex-end}
.lib-sx__sp:hover,.lib-sx__sp[data-on]{transform:translateY(-10px)}
.lib-sx__sp:hover .lib-sx__body,.lib-sx__sp[data-on] .lib-sx__body{border-color:#e3a948;background:linear-gradient(180deg,#2a7d6f 0%,#145852 60%,#0a3835 100%)}
.lib-sx__sp:hover b,.lib-sx__sp[data-on] b{color:#f0c46a;opacity:1}
.lib-sx[data-fam]:not([data-fam=""]) .lib-sx__sp{opacity:.28}
.lib-sx[data-fam="Industry"] .lib-sx__sp[data-fam="Industry"],.lib-sx[data-fam="Operations"] .lib-sx__sp[data-fam="Operations"],.lib-sx[data-fam="Intelligence"] .lib-sx__sp[data-fam="Intelligence"],.lib-sx[data-fam="Resources"] .lib-sx__sp[data-fam="Resources"],.lib-sx[data-fam="Systems"] .lib-sx__sp[data-fam="Systems"]{opacity:1;transform:translateY(-8px)}
.lib-sx__weft{position:absolute;inset:0;pointer-events:none}
.lib-sx__pick i{position:absolute;left:calc(var(--x) * 100cqw - var(--sw) / 2 - 4px);width:calc(var(--sw) + 8px);bottom:var(--weft);height:3px;background:#e3a948}
.lib-sx__pick--b{opacity:0}
.lib-sx__shuttle{position:absolute;left:0;width:100%;bottom:var(--weft);height:3px;pointer-events:none;overflow-anchor:none}
.lib-sx__shuttle i{position:absolute;left:-7px;top:-5px;width:14px;height:14px;border-radius:50%;background:#f0c46a;box-shadow:0 0 0 4px #e3a94833}
.lib-sx__beam{position:absolute;left:-2%;right:-2%;bottom:19px;height:3px;background:#6bb68f}
.lib-sx__fams{position:relative;z-index:1;list-style:none;margin:6px 0 0;padding:0;height:22px;container-type:inline-size}
.lib-sx__fams li{position:absolute;top:0;left:calc(var(--x) * 100cqw);transform:translateX(-50%);font:600 12px var(--gft-font-mono);letter-spacing:.1em;text-transform:uppercase;color:#d9e6de;white-space:nowrap}
.lib-sx__fams li b{color:#f0c46a}
.lib-sx__foot{position:relative;z-index:1;display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px 28px;align-items:center;margin-top:8px;padding-top:10px;border-top:1px solid #6bb68f40}
.lib-sx__facts{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px 28px;font:13px var(--gft-font-mono);color:#d9e6de}
.lib-sx__facts b{color:#f0c46a;font-weight:700;margin-right:4px}
.lib-sx__read{font:600 12.5px var(--gft-font-mono);color:#eef5f1;max-width:none;min-height:1.6em;padding:2px 10px;background:#0b3b38cc;border-left:3px solid #e3a948}
.lib-sx__read b{color:#f0c46a}
/* splash entrance: spines turn in from edge-on, the weft is thrown and beaten up to the floor tick */
:root[data-m-go] .lib-sx__body{animation-name:lib-sx-turn;animation-duration:600ms;animation-delay:calc(var(--i) * 12ms);animation-timing-function:cubic-bezier(.2,.8,.2,1);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
@keyframes lib-sx-turn{from{opacity:.2;transform:perspective(700px) rotateY(84deg)}}
:root[data-m-go] :is(.lib-sx__under,.lib-sx__weft){animation-name:lib-sx-throw;animation-duration:640ms;animation-delay:240ms;animation-timing-function:cubic-bezier(.3,.7,.2,1);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
@keyframes lib-sx-throw{from{clip-path:inset(-20px 100% -20px 0);transform:translateY(-26px)}70%{clip-path:inset(-20px 0 -20px 0);transform:translateY(-26px)}to{clip-path:inset(-20px 0 -20px 0);transform:none}}
:root[data-m-go] .lib-sx__rule{animation-name:lib-sx-rule;animation-duration:640ms;animation-delay:300ms;animation-timing-function:cubic-bezier(.2,.8,.2,1);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
@keyframes lib-sx-rule{from{transform:scaleX(0)}}
/* alive: the shuttle passes every 6 s and the shed swaps over/under on each pass (opacity only) */
:root[data-m-go] .lib-sx__rack[data-m-on] .lib-sx__shuttle{animation-name:lib-sx-pass;animation-duration:6s;animation-timing-function:ease-in-out;animation-iteration-count:infinite;animation-direction:alternate}
:root[data-m-go] .lib-sx__rack[data-m-on] .lib-sx__pick--a{animation-name:lib-sx-a;animation-duration:12s;animation-timing-function:linear;animation-iteration-count:infinite}
:root[data-m-go] .lib-sx__rack[data-m-on] .lib-sx__pick--b{animation-name:lib-sx-b;animation-duration:12s;animation-timing-function:linear;animation-iteration-count:infinite}
@keyframes lib-sx-pass{from{transform:translateX(0)}to{transform:translateX(100%)}}
@keyframes lib-sx-a{0%,47%{opacity:1}50%,97%{opacity:0}100%{opacity:1}}
@keyframes lib-sx-b{0%,47%{opacity:0}50%,97%{opacity:1}100%{opacity:0}}
/* hand-over: shelf drop. As the splash leaves, its spines compress onto the beam while the console shelf rises below */
@supports (animation-timeline:view()){
 :root[data-m-go] .lib-sx__rack{animation-name:lib-sx-drop;animation-duration:1ms;animation-timing-function:linear;animation-fill-mode:both;animation-timeline:--gft-splash;animation-range-start:exit 0%;animation-range-end:exit 100%}
}
@keyframes lib-sx-drop{to{transform:scaleY(.55)}}

@media(max-width:1000px){
 .lib-page .gft-splash__structure{inset:0}
 .lib-sx__fig{width:min(360px,44%)}
}
@media(max-width:640px){
 .lib-page .gft-container{width:min(1440px,calc(100% - 40px))}
 .lib-page .gft-splash h1{font-size:clamp(2.6rem,11.6vw,3.1rem)}
 .lib-page .gft-splash__content{padding-top:40px;padding-bottom:360px}
 .lib-page .gft-splash__lede{margin-top:16px;font-size:14px}
 .lib-page .gft-splash__actions{margin-top:18px}
 .lib-page .gft-splash__structure{inset:0;height:auto}
 .lib-page .gft-splash__structure::after{background:none}
 .lib-page .gft-splash__position{display:none}
 .lib-page .gft-splash__caption{max-width:20ch}
 .lib-sx__stage{grid-template-rows:minmax(0,1fr) auto auto auto auto;padding-top:0}
 .lib-sx__fig{grid-row:2;justify-self:stretch;width:auto;display:grid;grid-template-columns:auto minmax(0,1fr);gap:0 14px;align-items:end;margin-bottom:12px}
 .lib-sx__num{font-size:3rem;grid-row:1/3}
 .lib-sx__ruler{margin-top:0;height:16px}
 .lib-sx__eq{font-size:13px;margin-top:4px}
 .lib-sx__lab,.lib-sx__pills{display:none}
 .lib-sx__rack{grid-row:3;--sw:12px;height:150px}
 .lib-sx__sp b{display:none}
 .lib-sx__fams{grid-row:4;height:36px}
 .lib-sx__fams li{font-size:12px;letter-spacing:0}
 .lib-sx__fams li:nth-child(even){top:17px}
 .lib-sx__foot{grid-row:5}
 .lib-sx__facts{display:grid;grid-template-columns:1fr 1fr;gap:2px 12px;font-size:12px}
 .lib-sx__read{display:none}
}

/* ---------- Reduced motion and Calm: state stays, movement stops ---------- */
@media(prefers-reduced-motion:reduce){
 .lib-page *,.lib-page *::before,.lib-page *::after{transition-duration:.01ms!important;transition-delay:0s!important;animation-timeline:auto!important}
}
:root[data-motion=calm] .lib-page *,:root[data-motion=calm] .lib-page *::before,:root[data-motion=calm] .lib-page *::after{transition-duration:.01ms!important;transition-delay:0s!important}
/* /library/ Act II, paper: block 2 register console, block 3 loom register (sticky), block 4 reading route.
   Every spine, thread and warp position is var(--x) of the shared shelf (geo.ts) times the box width (cqw). */

/* ================= 2 · register console ================= */
.lib-ix{position:relative;padding-top:clamp(32px,3.6vw,52px);padding-bottom:clamp(44px,4.5vw,72px);color:var(--gft-night);overflow:clip}
.lib-ix__in{position:relative}
.lib-ix__warp{position:absolute;inset:-60px 0 -80px;pointer-events:none;container-type:inline-size;z-index:0}
.lib-ix__warp i{position:absolute;top:0;bottom:0;left:calc(var(--x) * 100cqw);width:1px;background:#0e4d4a29}
.lib-ix__warp i[data-f="0"],.lib-ix__warp i[data-f="2"],.lib-ix__warp i[data-f="4"]{background:#c98a2b38}
.lib-ix__head{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,1.08fr) minmax(0,.92fr);gap:24px clamp(28px,4vw,56px);align-items:stretch;margin-bottom:20px}
.lib-ix__intro .gft-eyebrow{margin-bottom:10px}
.lib-ix__intro h2{font-size:clamp(2.1rem,3.3vw,3.3rem);max-width:18ch;line-height:1.04}
.lib-ix__intro .gft-lede{font-size:clamp(1rem,1.18vw,1.14rem);max-width:54ch;color:var(--lib-soft);margin-top:12px}
.lib-ix__scope{display:grid;gap:12px;align-content:space-between;padding:18px 22px;background:var(--gft-night);color:var(--gft-paper);border:2px solid var(--gft-forest);border-left:6px solid #e3a948;box-shadow:0 12px 28px -16px #072d2b66}
.lib-ix__scopetop{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:10px 16px;padding-bottom:10px;border-bottom:1px solid #6bb68f44}
.lib-count{display:flex;align-items:baseline;gap:10px}
.lib-count b{font-size:clamp(2.6rem,4vw,3.8rem);line-height:.92;letter-spacing:-.07em;font-weight:850;color:#f0c46a;min-width:1.2ch;font-variant-numeric:tabular-nums}
.lib-count span{font:600 13.5px/1.4 var(--gft-font-mono);color:#e2ebe6}
.lib-ix__scopepill{display:inline-flex;align-items:center;padding:4px 10px;border:1px solid #6bb68f88;background:#0e4d4a;font:600 12px var(--gft-font-mono);color:#eef5f1;letter-spacing:.04em}
.lib-hover{font:600 15px/1.5 var(--gft-font-display);color:#eef5f1;min-height:3.1em;max-width:56ch;padding-left:12px;border-left:3px solid #6bb68f}
.lib-hover--dark{color:#eef5f1;border-left-color:#e3a948}

.lib-bar{position:relative;z-index:1;display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:8px 10px;border:2px solid var(--gft-night);border-radius:999px;background:#fff;box-shadow:0 8px 20px -14px #072d2b40}
.lib-bar__search{flex:1 1 250px;min-width:0}
.lib-bar input{width:100%;min-height:46px;padding:0 20px;border:1px solid #0e4d4a44;border-radius:999px;background:var(--gft-mist);color:var(--gft-night);font:500 16px var(--gft-font-display)}
.lib-chips{display:flex;flex-wrap:wrap;gap:6px}
.lib-chipbtn,.lib-reset{min-height:46px;padding:0 16px;border-radius:999px;border:1.5px solid var(--gft-night);background:#fff;color:var(--gft-night);font:700 14px var(--gft-font-display);display:inline-flex;align-items:center;gap:8px;cursor:pointer;transition:background-color 220ms,color 220ms,border-color 220ms}
.lib-chipbtn b{font:700 12.5px var(--gft-font-mono);padding:1px 7px;border-radius:999px;background:var(--gft-mist);color:var(--gft-night)}
.lib-chipbtn:hover,.lib-reset:hover{background:var(--gft-mist)}
.lib-chipbtn[aria-pressed=true]{background:var(--gft-night);color:var(--gft-paper)}
.lib-chipbtn[aria-pressed=true] b{background:#e3a948;color:var(--gft-night)}
.lib-reset{border-style:dashed}

/* Unified Dark & Layered Register Stage (40%+ viewport height spine rack + dark layered tile counter block) */
.lib-ix__deck{position:relative;z-index:1;margin-top:18px;padding:clamp(20px,2.5vw,32px);background:linear-gradient(180deg,#0a3633 0%,#072d2b 100%);color:var(--gft-paper);border:2px solid var(--gft-night);box-shadow:0 20px 44px -22px #072d2b88}
.lib-ix__rackwrap{--sw:calc(100cqw / 24 * .72);container-type:inline-size;view-timeline-name:--lib-ix-shelf;view-timeline-axis:block}
.lib-ix__rackhead{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 20px;margin-bottom:14px;padding-bottom:10px;border-bottom:1px solid #6bb68f40}
.lib-ix__rackhead .lib-kicker{color:#cfe0d6}
.lib-ix__floorbadge{display:inline-flex;align-items:center;gap:10px;font:600 12.5px var(--gft-font-mono);color:#e2ebe6}
.lib-ix__floorbadge span{padding:2px 8px;background:#8a5a12;color:#fff;text-transform:uppercase;letter-spacing:.06em;font-size:12px}
.lib-ix__floorbadge b{color:#f0c46a}
.lib-ix__shelf{list-style:none;margin:0;padding:0;position:relative;height:clamp(360px,42svh,396px);overflow-anchor:none}
.lib-ix__shelf li{position:absolute;bottom:0;left:calc(var(--x) * 100cqw - var(--sw) / 2);width:var(--sw);height:clamp(342px,40svh,378px);transform-origin:50% 100%}
.lib-spine{display:block;position:relative;width:100%;height:100%;color:var(--gft-paper);text-decoration:none;transition:opacity 320ms,transform 320ms cubic-bezier(.2,.8,.2,1)}
.lib-ix__body{position:absolute;inset:0;background:linear-gradient(180deg,#1c6b62 0%,#0e4d4a 56%,#082c2a 100%);border:1px solid #8fc9a8b8;box-shadow:inset 3px 0 0 #6bb68f55;border-bottom:0;transform-origin:50% 100%;overflow:clip}
.lib-ix__tick{position:absolute;left:-5px;right:-5px;bottom:76%;height:3px;background:#e3a948;box-shadow:0 0 8px #e3a94888;transition:background-color 320ms,box-shadow 320ms,opacity 320ms}
.lib-spine__id{position:absolute;left:0;right:0;top:10px;display:flex;justify-content:center;font:700 12px var(--gft-font-mono);writing-mode:vertical-rl;transform:rotate(180deg);letter-spacing:.06em;color:#f0c46a}
.lib-ix__spfam{position:absolute;left:0;right:0;top:56px;text-align:center;font:600 10px var(--gft-font-mono);letter-spacing:.04em;text-transform:uppercase;color:#cfe0d6;display:none}
.lib-ix__sptitle{position:absolute;left:0;right:0;top:28%;bottom:36px;display:flex;align-items:center;justify-content:flex-end;font:500 12px/1.15 var(--gft-font-display);writing-mode:vertical-rl;transform:rotate(180deg);color:#e2ebe6;text-decoration:none;overflow:clip;white-space:nowrap;text-overflow:ellipsis;padding-block:4px}
.lib-spine__idx{position:absolute;left:0;right:0;bottom:8px;text-align:center;font:600 12px var(--gft-font-mono);color:#b9d4c6}
.lib-spine:hover,.lib-spine:focus-visible,.lib-ix__shelf[data-filtered] .lib-spine:not([data-dim]){transform:translateY(-14px)}
.lib-spine:hover .lib-ix__body,.lib-spine:focus-visible .lib-ix__body{border-color:#f0c46a;background:linear-gradient(180deg,#298276 0%,#145c55 58%,#0b3835 100%)}
.lib-ix__shelf[data-filtered] .lib-spine:not([data-dim]) .lib-ix__tick{background:#f0c46a;box-shadow:0 0 12px #f0c46a}
.lib-ix__base{position:relative;height:5px;background:#6bb68f66;overflow:clip}
.lib-ix__base i{position:absolute;left:0;top:0;width:18%;height:100%;background:linear-gradient(90deg,transparent,#e3a948,transparent);overflow-anchor:none}
:root[data-m-go] .lib-ix__base i[data-m-live][data-m-on]{animation-name:lib-sweep;animation-duration:8s;animation-timing-function:linear;animation-iteration-count:infinite;animation-direction:normal}
@keyframes lib-sweep{from{transform:translateX(-100%)}to{transform:translateX(560%)}}
.lib-ix__fams{list-style:none;margin:0;padding:0;position:relative;height:42px}
.lib-ix__fams li{position:absolute;top:8px;left:calc(var(--x) * 100cqw);transform:translateX(-50%);display:grid;justify-items:center;gap:2px;white-space:nowrap}
.lib-ix__fams li b{font:700 12px var(--gft-font-mono);letter-spacing:.1em;text-transform:uppercase;color:#eef5f1}
.lib-ix__fams li span{font:500 12px var(--gft-font-mono);color:#b9d4c6}

.lib-ix__sum{display:grid;gap:10px;margin-top:12px;padding:14px 18px;background:#0c3d39;border:1px solid #6bb68f55}
.lib-ix__sumbar{position:relative;height:36px}
.lib-ix__sumbar i{position:absolute;left:0;right:0;bottom:0;height:6px;background:linear-gradient(90deg,#6bb68f,#e3a948);clip-path:inset(0 0 0 0);transition:clip-path 700ms cubic-bezier(.2,.8,.2,1),opacity 320ms}
.lib-ix__sumbar b{position:absolute;bottom:10px;left:calc(var(--x) * 100cqw);transform:translateX(-50%);display:inline-flex;align-items:center;gap:6px;padding:2px 8px;background:#072d2b;border:1px solid #e3a94888;font:700 12px var(--gft-font-mono);color:#f0c46a;white-space:nowrap}
.lib-ix__sumbar b em{font-style:normal;color:#cfe0d6;font-weight:500}
.lib-ix__summeta{display:flex;flex-wrap:wrap;justify-content:space-between;gap:6px 20px}
.lib-ix__sumhint,.lib-ix__sumtext{font:12.5px/1.55 var(--gft-font-mono);color:#d9e6de;max-width:none}
[data-lib-ruler=off] .lib-ix__sumbar i{clip-path:inset(0 100% 0 0);opacity:.35}
[data-lib-ruler=off] .lib-ix__tick{background:#e2ebe644;box-shadow:none}
[data-lib-ruler=on] .lib-ix__tick{background:#e3a948;box-shadow:0 0 0 1px #8a5a12}

.lib-ix__low{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(0,.92fr);gap:clamp(20px,3vw,40px);align-items:stretch;margin-top:20px;padding-top:20px;border-top:1px solid #6bb68f44}
.lib-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.lib-stat{display:grid;align-content:start;gap:6px;text-align:left;min-width:0;min-height:44px;padding:16px 18px 18px;border:1.5px solid #6bb68f66;background:#0c3d39;color:#eef5f1;font:inherit;position:relative;cursor:pointer;box-shadow:inset 0 3px 0 #6bb68f44;transition:background-color 260ms,border-color 260ms,transform 220ms}
.lib-stat__kicker{font:600 12px var(--gft-font-mono);letter-spacing:.08em;text-transform:uppercase;color:#b9d4c6;font-style:normal}
.lib-stat strong{display:block;font-size:clamp(2.3rem,3.4vw,3.4rem);line-height:1;letter-spacing:-.07em;font-weight:850;color:#fff;font-variant-numeric:tabular-nums}
.lib-stat span{display:block;font:12.5px/1.55 var(--gft-font-mono);color:#d9e6de;max-width:30ch}
.lib-stat:hover{background:#124c47;border-color:#8fc9a8;transform:translateY(-2px)}
.lib-stat[aria-pressed=true]{background:#145852;border-color:#e3a948;box-shadow:inset 0 4px 0 #e3a948}
.lib-stat--floor[aria-pressed=true]{background:#195248;border-color:#f0c46a}
.lib-stat[aria-pressed=true] .lib-stat__kicker{color:#f0c46a}
.lib-stat[aria-pressed=true]::after{content:'Active';position:absolute;top:14px;right:14px;padding:2px 8px;background:#e3a948;color:#072d2b;font:700 12px var(--gft-font-mono);letter-spacing:.08em;text-transform:uppercase}

.lib-readout{display:grid;gap:12px;align-content:space-between;padding:18px 22px;background:#0c3d39;border:1.5px solid #6bb68f66}
.lib-readout__top{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 12px;padding-bottom:10px;border-bottom:1px solid #6bb68f40}
.lib-readout__top .lib-kicker{color:#f0c46a}
.lib-readout__badge{font:600 12px var(--gft-font-mono);color:#eef5f1;padding:3px 9px;background:#072d2b;border:1px solid #6bb68f66}
.lib-ix__legend{margin:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 14px;padding:10px 12px;background:#072d2b;border:1px solid #6bb68f40}
.lib-ix__legend div{display:grid;gap:2px}
.lib-ix__legend dt{font:700 12.5px var(--gft-font-mono);color:#eef5f1}
.lib-ix__legend dt b{color:#f0c46a;margin-right:4px}
.lib-ix__legend dd{margin:0;font:12px/1.4 var(--gft-font-mono);color:#cfe0d6}
.lib-ix__hint{font:12px/1.6 var(--gft-font-mono);color:#cfe0d6;max-width:62ch}

/* hand-over: spines to warp. As the shelf leaves the frame, each spine thins into a thread (transform only) */
@supports (animation-timeline:view()){
 :root[data-m-go] .lib-ix__body{animation-name:lib-ix-thin;animation-duration:1ms;animation-timing-function:linear;animation-fill-mode:both;animation-timeline:--lib-ix-shelf;animation-range-start:cover 45%;animation-range-end:cover 100%}
 :root[data-m-go] .lib-spine__id{animation-name:lib-ix-fade;animation-duration:1ms;animation-timing-function:linear;animation-fill-mode:both;animation-timeline:--lib-ix-shelf;animation-range-start:cover 45%;animation-range-end:cover 80%}
}
@keyframes lib-ix-thin{to{transform:scaleX(.18)}}
@keyframes lib-ix-fade{to{opacity:0}}

/* ================= 3 · loom register (one sticky scene, varied right-column per family) ================= */
.lib-rg{padding-top:clamp(28px,3vw,48px);padding-bottom:clamp(40px,4vw,64px);color:var(--gft-night)}
.lib-rg__grid{display:grid;grid-template-columns:minmax(0,52fr) minmax(0,48fr);gap:clamp(28px,3.2vw,52px);align-items:start}
.lib-rg__stage{--sh:min(820px,calc(100svh - 40px));position:sticky;top:max(16px,calc((100svh - var(--sh)) / 2));height:var(--sh);display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:12px;padding:22px 26px 22px;color:#e2ebe6;isolation:isolate;overflow:clip}
.lib-rg__grounds{position:absolute;inset:0;z-index:-1}
.lib-rg__grounds i{position:absolute;inset:0;opacity:0;transition:opacity 600ms}
.lib-rg__grounds i[data-g="0"]{background:var(--gft-night);opacity:1}
.lib-rg__grounds i[data-g="1"]{background:#0e4d4a}
.lib-rg__grounds i[data-g="2"]{background:#1d2850}
.lib-rg__grounds i[data-g="3"]{background:#123f30}
.lib-rg__grounds i[data-g="4"]{background:#1d2b29}
.lib-rg__stage[data-step="1"] .lib-rg__grounds i[data-g="1"],.lib-rg__stage[data-step="2"] .lib-rg__grounds i[data-g="2"],.lib-rg__stage[data-step="3"] .lib-rg__grounds i[data-g="3"],.lib-rg__stage:is([data-step="4"],[data-step="5"]) .lib-rg__grounds i[data-g="4"]{opacity:1}
.lib-rg__top{display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-areas:"count fam" "rail rail";gap:10px 22px;align-items:end}
.lib-rg__count{grid-area:count;font:850 clamp(2.4rem,3.6vw,3.4rem)/1 var(--gft-font-display);letter-spacing:-.06em;color:#e2ebe6;font-variant-numeric:tabular-nums;max-width:none}
.lib-rg__fam{grid-area:fam;font:800 clamp(1.4rem,2vw,2rem)/1.1 var(--gft-font-display);letter-spacing:-.04em;max-width:none}
.lib-rg__fam small{display:block;font:12px/1.6 var(--gft-font-mono);letter-spacing:.1em;text-transform:uppercase;color:#e3a948;margin-top:4px}
.lib-rg__stack{display:inline-grid}
.lib-rg__stack>*{grid-area:1/1;opacity:0;transition:opacity 300ms}
.lib-rg__stage[data-step="0"] .lib-rg__stack [data-s="0"],.lib-rg__stage[data-step="1"] .lib-rg__stack [data-s="1"],.lib-rg__stage[data-step="2"] .lib-rg__stack [data-s="2"],.lib-rg__stage[data-step="3"] .lib-rg__stack [data-s="3"],.lib-rg__stage:is([data-step="4"],[data-step="5"]) .lib-rg__stack [data-s="4"]{opacity:1}
.lib-rg__rail{grid-area:rail;position:relative;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:4px}
.lib-rg__railline{position:absolute;left:10%;right:10%;top:21px;height:2px;background:#6bb68f55;overflow:clip}
.lib-rg__railline i{position:absolute;left:0;top:0;width:14%;height:100%;background:#e3a948;overflow-anchor:none}
:root[data-m-go] .lib-rg__railline i[data-m-on]{animation-name:lib-rg-run;animation-duration:7s;animation-timing-function:ease-in-out;animation-iteration-count:infinite;animation-direction:alternate}
@keyframes lib-rg-run{from{transform:translateX(0)}to{transform:translateX(614%)}}
.lib-rg__rail a{position:relative;display:grid;justify-items:center;gap:2px;min-height:44px;text-decoration:none;color:#cfe0d6;font:12px var(--gft-font-mono)}
.lib-rg__rail a b{display:grid;place-items:center;width:42px;height:42px;border-radius:50%;border:2px solid #6bb68f;background:#072d2b;font:700 15px var(--gft-font-display);color:#e2ebe6;transition:background-color 300ms,color 300ms,border-color 300ms}
.lib-rg__rail a[aria-current=step] b{background:#e3a948;border-color:#e3a948;color:#072d2b}
.lib-rg__loom{min-height:0;display:flex;align-items:center}
.lib-rg__svg{width:100%;height:100%;max-height:100%;overflow:visible}
.lib-rg__t{stroke:#6bb68f;stroke-width:3;opacity:.55}
.lib-rg__l{stroke:#e2ebe6;stroke-width:5;opacity:0;transform-box:view-box;transition:opacity 420ms,transform 520ms cubic-bezier(.2,.8,.2,1),stroke 300ms}
.lib-rg__l[data-on]{stroke:#e3a948;stroke-width:6.5}
.lib-rg__stage[data-step="0"] .lib-rg__l[data-f="0"],.lib-rg__stage[data-step="1"] .lib-rg__l[data-f="1"],.lib-rg__stage[data-step="2"] .lib-rg__l[data-f="2"],.lib-rg__stage[data-step="3"] .lib-rg__l[data-f="3"],.lib-rg__stage[data-step="4"] .lib-rg__l[data-f="4"]{opacity:1;transform:translateY(-18px)}
.lib-rg__svg path[data-dim]{stroke-opacity:.2}
.lib-rg__w{stroke:#e3a948;transition:opacity 420ms}
.lib-rg__w--ind{stroke:#aeb9f2;opacity:0}
.lib-rg__stage[data-step="2"] .lib-rg__w--ind{opacity:1}
.lib-rg__stage[data-step="2"] .lib-rg__w:not(.lib-rg__w--ind){opacity:0}
.lib-rg__gold{stroke:#e3a948}
.lib-rg__ind{stroke:#aeb9f2}
.lib-rg__node{fill:#e3a948;stroke:#072d2b;stroke-width:3}
.lib-rg__lab{font:600 19px var(--gft-font-mono);letter-spacing:.05em}
.lib-rg__lab--gold{fill:#f0c46a}
.lib-rg__lab--ind{fill:#c3cbf5}
.lib-rg__id{font:500 18px var(--gft-font-mono);fill:#b9cfc2}
.lib-rg__marks>g{opacity:0;transition:opacity 420ms}
.lib-rg__stage[data-step="0"] .lib-rg__marks [data-s="0"],.lib-rg__stage[data-step="1"] .lib-rg__marks [data-s="1"],.lib-rg__stage[data-step="2"] .lib-rg__marks [data-s="2"],.lib-rg__stage[data-step="3"] .lib-rg__marks [data-s="3"],.lib-rg__stage[data-step="4"] .lib-rg__marks [data-s="4"]{opacity:1}
.lib-rg__gap{fill:#1d2b29;opacity:0}
.lib-rg__redraw{stroke:#f0c46a;opacity:0}
.lib-rg__stage[data-step="4"] .lib-rg__redraw{opacity:1}
:root[data-m-go] .lib-rg__stage[data-step="4"] .lib-rg__gap{animation-name:lib-rg-gap;animation-duration:1000ms;animation-timing-function:linear;animation-fill-mode:both;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] .lib-rg__stage[data-step="4"] .lib-rg__redraw{animation-name:lib-rg-redraw;animation-duration:1000ms;animation-timing-function:cubic-bezier(.3,.7,.2,1);animation-fill-mode:both;animation-iteration-count:1;animation-direction:normal}
@keyframes lib-rg-gap{0%{opacity:0}8%,48%{opacity:1}64%,100%{opacity:0}}
@keyframes lib-rg-redraw{0%,46%{clip-path:inset(-10px 100% -10px 0)}100%{clip-path:inset(-10px 0 -10px 0)}}
.lib-rg__exit{opacity:0;clip-path:inset(-20px 100% -20px 0);transition:opacity 300ms,clip-path 900ms cubic-bezier(.2,.8,.2,1)}
.lib-rg__xw{stroke:#f0c46a}
.lib-rg__stage[data-step="5"] .lib-rg__exit{opacity:1;clip-path:inset(-20px -2% -20px 0)}
.lib-rg__stage[data-step="5"] .lib-rg__t{opacity:.8}
.lib-rg__read{display:grid;grid-template-columns:clamp(150px,13vw,200px) minmax(0,1fr);gap:22px;align-items:stretch;border-top:1px solid #6bb68f40;padding-top:16px}
.lib-rg__glyphs,.lib-rg__cards{display:grid}
.lib-rg__glyphs>figure,.lib-rg__cards>div{grid-area:1/1;opacity:0;visibility:hidden;transition:opacity 180ms linear,visibility 0s linear 180ms}
.lib-rg__glyphs>figure[data-on],.lib-rg__cards>div[data-on]{opacity:1;visibility:visible;transition:opacity 260ms ease-out,visibility 0s linear 0s}
.lib-rg__glyphs figure{margin:0;display:grid;justify-items:center;gap:6px;padding:12px 10px 8px;border:1px solid #6bb68f66;background:linear-gradient(180deg,#0e4d4a,#072d2b)}
.lib-rg__glyphs svg{width:100%;height:clamp(150px,19svh,200px)}
.lib-rg__glyphs figcaption{font:12px var(--gft-font-mono);letter-spacing:.1em;color:#e2ebe6}
.lib-rg__gw{transform-box:fill-box;transform-origin:center}
:root[data-m-go] .lib-rg__glyphs[data-m-on] .lib-rg__gw{animation-name:lib-rg-gw;animation-duration:8s;animation-timing-function:ease-in-out;animation-iteration-count:infinite;animation-direction:alternate}
@keyframes lib-rg-gw{from{transform:translateY(-6px)}to{transform:translateY(6px)}}
.lib-rg__card{display:grid;gap:10px;align-content:start}
.lib-rg__cid{font:12px/1.6 var(--gft-font-mono);letter-spacing:.1em;text-transform:uppercase;color:#e3a948}
.lib-rg__sub{font:italic 400 clamp(1.1rem,1.35vw,1.3rem)/1.4 var(--gft-font-serif);color:#e2ebe6;max-width:46ch}
.lib-rg__sub .gft-cite{margin-left:6px}
.lib-rg__sum{font-size:15px;line-height:1.6;color:#cfe0d6;max-width:56ch}
.lib-rg__card .lib-status{color:#cfe0d6}
.lib-rg__card .lib-status::before{background:#6bb68f}

/* Right column steps: per-family inline micro-chart, hoverable cards, scroll-linked active state & varied layouts */
.lib-rg__head{padding-top:4px;margin-bottom:18px;padding-bottom:18px;border-bottom:2px solid var(--gft-night)}
.lib-rg__head .gft-eyebrow{margin-bottom:10px}
.lib-rg__head h2{font-size:clamp(2.1rem,3.1vw,3.1rem);max-width:16ch}
.lib-rg__head .gft-lede{font-size:clamp(1rem,1.15vw,1.12rem);color:var(--lib-soft);margin-top:12px;max-width:48ch}
.lib-rg__step{position:relative;padding-top:clamp(36px,5svh,56px);padding-bottom:16px}
.lib-rg__step+.lib-rg__step{border-top:2px solid #0e4d4a33}
.lib-rg__shead{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(220px,.8fr);gap:18px;align-items:start;padding-bottom:20px}
.lib-rg__shead .gft-eyebrow{color:var(--lib-soft)}
.lib-rg__shead h3{font-size:clamp(1.6rem,2.3vw,2.25rem);margin:10px 0 10px;max-width:19ch;letter-spacing:-.045em;line-height:1.08}
.lib-rg__lede{font-size:15px;line-height:1.58;color:var(--lib-soft);max-width:46ch}

/* Per-family inline micro-chart */
.lib-rg__fchart{display:grid;gap:10px;padding:14px 16px;background:var(--gft-night);color:var(--gft-paper);border:1.5px solid var(--gft-forest);border-top:4px solid #e3a948;box-shadow:0 8px 20px -12px #072d2b55}
.lib-rg__step[data-lib-step="2"] .lib-rg__fchart{background:#1d2850;border-color:#5366b8;border-top-color:#aeb9f2}
.lib-rg__fchart-top{display:flex;justify-content:space-between;align-items:baseline;gap:8px;font:600 12px var(--gft-font-mono)}
.lib-rg__fchart-top b{color:#f0c46a;font-size:12.5px}
.lib-rg__fchart-top span{color:#cfe0d6}
.lib-rg__fstrip{display:grid;grid-template-columns:repeat(20,minmax(0,1fr));gap:3px;height:24px;align-items:end;padding:3px 4px;background:#051e1d;border:1px solid #6bb68f40}
.lib-rg__fstrip i{display:block;width:100%;height:42%;background:#6bb68f44;transition:height 260ms,background-color 260ms}
.lib-rg__fstrip i[data-hit]{height:100%;background:#e3a948;box-shadow:0 0 6px #e3a94888}
.lib-rg__fmix{display:flex;flex-wrap:wrap;justify-content:space-between;gap:4px 8px;font:12px var(--gft-font-mono);color:#cfe0d6;padding-top:6px;border-top:1px solid #6bb68f33}
.lib-rg__fmix b{color:#fff}

/* Varied right-column card layouts per family */
.lib-rg__cards-grid{display:grid;gap:14px;position:relative}
/* Family 0 (Industry): lead card full-width, remaining 4 in staggered 2-column grid */
.lib-rg__cards-grid[data-fam-grid="0"]{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}
.lib-rg__cards-grid[data-fam-grid="0"] .lib-tile:first-child{grid-column:1/-1;background:linear-gradient(180deg,#fff 0%,#f0ece1 100%);border-width:2px}
.lib-rg__cards-grid[data-fam-grid="0"] .lib-tile:nth-child(odd):not(:first-child){transform:translateY(16px)}
/* Family 1 (Operations): stepped 2-column cadence grid */
.lib-rg__cards-grid[data-fam-grid="1"]{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.lib-rg__cards-grid[data-fam-grid="1"] .lib-tile{border-top:4px solid var(--gft-forest)}
.lib-rg__cards-grid[data-fam-grid="1"] .lib-tile:nth-child(even){margin-top:22px}
/* Family 2 (Intelligence): indigo baseline split deck */
.lib-rg__cards-grid[data-fam-grid="2"]{grid-template-columns:minmax(0,1.12fr) minmax(0,.88fr);gap:14px;padding:14px;background:#e6eaf4;border:1.5px dashed #2c3e7a88}
.lib-rg__cards-grid[data-fam-grid="2"] .lib-tile{border-top:4px solid #2c3e7a}
.lib-rg__cards-grid[data-fam-grid="2"] .lib-tile:nth-child(even){transform:translateY(12px)}
/* Family 3 (Resources): material boundary bento frame */
.lib-rg__cards-grid[data-fam-grid="3"]{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;padding:16px;background:#ece9df;border:2px dashed #8a5a1288}
.lib-rg__cards-grid[data-fam-grid="3"] .lib-tile:nth-child(1),.lib-rg__cards-grid[data-fam-grid="3"] .lib-tile:nth-child(4){background:#faf8f3}
/* Family 4 (Systems): resilient spine staggered cascade */
.lib-rg__cards-grid[data-fam-grid="4"]{grid-template-columns:1fr;gap:12px;padding-left:18px;border-left:4px solid var(--gft-forest)}
.lib-rg__cards-grid[data-fam-grid="4"] .lib-tile:nth-child(2){margin-left:18px}
.lib-rg__cards-grid[data-fam-grid="4"] .lib-tile:nth-child(3){margin-left:36px}

/* Thread card (.lib-tile): hoverable, layered, with scroll-linked active state */
.lib-tile{display:flex;flex-direction:column;justify-content:space-between;gap:10px;padding:16px 18px;background:#fff;border:1.5px solid var(--gft-night);border-left:5px solid var(--gft-forest);box-shadow:0 6px 16px -10px #072d2b33;cursor:pointer;transition:background-color 260ms,color 260ms,border-color 260ms,box-shadow 260ms,transform 260ms}
.lib-tile:hover{border-color:#8a5a12;border-left-color:#c98a2b;box-shadow:0 12px 24px -12px #072d2b55}
.lib-tile__top{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px 10px}
.lib-tile__meta{font:600 12px/1.4 var(--gft-font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--lib-soft);margin:0}
.lib-tile__meta b{color:var(--gft-night);padding:1px 6px;background:var(--gft-mist);margin-right:4px}
.lib-tile__active-tag{font:700 12px var(--gft-font-mono);text-transform:uppercase;letter-spacing:.06em;padding:2px 8px;background:var(--gft-mist);color:var(--gft-night);transition:background-color 240ms,color 240ms}
.lib-tile__meter{display:flex;align-items:center;gap:10px}
.lib-tile__mtrack{flex:1;position:relative;height:5px;background:#d6e0da;overflow:clip}
.lib-tile__mtrack i{position:absolute;top:0;bottom:0;left:0;width:calc(var(--x) * 100%);background:var(--gft-forest);transition:background-color 240ms}
.lib-tile__meter em{font:600 12px var(--gft-font-mono);font-style:normal;color:var(--lib-soft);white-space:nowrap}
.lib-tile h4{font-size:clamp(1.2rem,1.5vw,1.45rem);line-height:1.15;letter-spacing:-.035em;font-weight:850;margin:0;max-width:24ch}
.lib-tile__sub{display:block;font:italic 400 15px/1.42 var(--gft-font-serif);color:var(--lib-soft)}
.lib-tile__sub .gft-cite{margin-left:4px}
.lib-tile__sum{display:none}
.lib-rg__cards-grid[data-fam-grid="0"] .lib-tile:first-child .lib-tile__sum,.lib-rg__cards-grid[data-fam-grid="4"] .lib-tile .lib-tile__sum{display:block;font-size:13.5px;line-height:1.52;color:var(--lib-soft);margin:0}
.lib-tile__foot{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 14px;padding-top:8px;border-top:1px solid #0e4d4a22}
.lib-chip{display:inline-flex;align-items:center;gap:7px;min-height:26px;padding:2px 10px;border:1px solid var(--gft-forest);border-radius:999px;font:600 12px var(--gft-font-mono);color:var(--gft-forest)}
.lib-chip::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--gft-forest)}
.lib-tile .gft-text-link{font-size:13.5px;font-weight:700}

/* Scroll-linked & hover active card highlight */
.lib-tile[data-on]{background:var(--gft-night)!important;color:var(--gft-paper);border-color:#e3a948;border-left:6px solid #e3a948;box-shadow:0 14px 30px -12px #072d2b88}
.lib-tile[data-on] .lib-tile__meta,.lib-tile[data-on] .lib-tile__meter em,.lib-tile[data-on] .lib-tile__sub,.lib-tile[data-on] .lib-tile__sum{color:#d9e6de!important}
.lib-tile[data-on] .lib-tile__meta b{background:#e3a948;color:var(--gft-night)}
.lib-tile[data-on] .lib-tile__active-tag{background:#e3a948;color:var(--gft-night);opacity:1}
.lib-tile[data-on] .lib-tile__mtrack{background:#194b46}
.lib-tile[data-on] .lib-tile__mtrack i{background:#f0c46a}
.lib-tile[data-on] .lib-tile__foot{border-top-color:#6bb68f40}
.lib-tile[data-on] .lib-chip{border-color:#8fc9a8;color:#eef5f1}
.lib-tile[data-on] .lib-chip::before{background:#f0c46a}
.lib-tile[data-on] .gft-text-link{color:#f0c46a}

/* Operable Family Distribution Chart at foot of loom (.lib-rg__tail) */
.lib-rg__tail{margin-top:28px;padding:24px 26px;background:var(--gft-night);color:var(--gft-paper);border:2px solid var(--gft-forest);border-top:5px solid #e3a948;display:grid;gap:16px;box-shadow:0 16px 36px -18px #072d2b88}
.lib-rg__tailhead{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:10px 18px;padding-bottom:12px;border-bottom:1px solid #6bb68f40}
.lib-rg__tail .lib-kicker{color:#f0c46a}
.lib-rg__tailtext{font:700 clamp(1.2rem,1.6vw,1.5rem)/1.28 var(--gft-font-display);letter-spacing:-.03em;max-width:34ch;color:#fff;margin-top:6px}
.lib-rg__tailbadge{padding:4px 10px;background:#0e4d4a;border:1px solid #6bb68f88;font:700 12px var(--gft-font-mono);color:#f0c46a}
.lib-rg__ledger{display:grid;gap:8px}
.lib-rg__lrow{display:grid;grid-template-columns:7.5rem minmax(0,1fr) auto;gap:14px;align-items:center;min-height:46px;padding:8px 14px;border:1px solid #6bb68f44;background:#0c3a37;color:#eef5f1;font:inherit;text-align:left;cursor:pointer;transition:background-color 220ms,border-color 220ms}
.lib-rg__lrow:hover{background:#124d48;border-color:#8fc9a8}
.lib-rg__lrow[aria-pressed=true]{background:#165852;border-color:#e3a948;box-shadow:inset 4px 0 0 #e3a948}
.lib-rg__lname{font:700 15px var(--gft-font-display);letter-spacing:-.02em;color:#fff}
.lib-rg__lrow[aria-pressed=true] .lib-rg__lname{color:#f0c46a}
.lib-rg__lbar{position:relative;height:26px;background:#072422;border:1px solid #6bb68f55;display:flex;align-items:center;padding:0 6px;overflow:clip}
.lib-rg__lfill{position:absolute;left:0;top:0;bottom:0;width:var(--w);background:linear-gradient(90deg,#1a6b61,#2f8a78);opacity:.65;transition:opacity 240ms}
.lib-rg__lrow[aria-pressed=true] .lib-rg__lfill{background:linear-gradient(90deg,#8a5a12,#e3a948);opacity:.85}
.lib-rg__lticks{position:relative;z-index:1;display:flex;gap:6px;align-items:center}
.lib-rg__lticks i{display:inline-grid;place-items:center;padding:1px 6px;background:#072d2b;border:1px solid #8fc9a888;font:600 12px var(--gft-font-mono);font-style:normal;color:#eef5f1}
.lib-rg__lrow[aria-pressed=true] .lib-rg__lticks i{border-color:#f0c46a;color:#f0c46a}
.lib-rg__lcount{font:600 12.5px var(--gft-font-mono);font-style:normal;color:#d9e6de;white-space:nowrap}
.lib-rg__lread{margin:0;padding:12px 14px;background:#072422;border-left:4px solid #e3a948;font:600 13.5px/1.5 var(--gft-font-mono);color:#eef5f1}

/* ================= 4 · reading route: dark warp transition, enlarged scrubber and route diagram ================= */
.lib-lm{position:relative;padding-top:0;padding-bottom:clamp(36px,4vw,56px);color:var(--gft-night)}
.lib-lm__bridge{background:linear-gradient(180deg,var(--gft-night) 0%,#0b3b38 65%,transparent 100%);height:56px;margin-bottom:18px;overflow:clip}
.lib-lm__bridge-in{position:relative;height:100%;container-type:inline-size}
.lib-lm__bridge-in i{position:absolute;top:0;bottom:0;left:calc(var(--x) * 100cqw - 1px);width:2px;background:#6bb68f55}
.lib-lm__bridge-in i[data-r]{width:3px;background:#e3a948}

.lib-lm__head{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:20px clamp(32px,5vw,80px);align-items:end;margin-bottom:20px}
.lib-lm__head .gft-eyebrow{margin-bottom:10px}
.lib-lm__head h2{font-size:clamp(2.2rem,3.5vw,3.5rem);max-width:16ch}
.lib-lm__head .gft-lede{font-size:clamp(1rem,1.2vw,1.15rem);color:var(--lib-soft);max-width:46ch}

.lib-lm__deck{background:var(--gft-night);color:var(--gft-paper);border:2px solid var(--gft-night);padding:20px 26px 22px;margin-bottom:20px;box-shadow:0 16px 36px -18px #072d2b77}
.lib-lm__cloth{--sx:0;position:relative;container-type:inline-size}
.lib-lm__cloth-top{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px 20px;margin-bottom:12px}
.lib-lm__cloth-top .lib-kicker{color:#f0c46a}
.lib-lm__ids{display:grid;max-width:none;font:600 13px/1.5 var(--gft-font-mono);color:#eef5f1;margin:0}
.lib-lm__ids>span{grid-area:1/1;opacity:0;transition:opacity 300ms}
.lib-lm__ids>span[data-on]{opacity:1}

.lib-lm__cloth-stage{position:relative;height:112px}
.lib-lm__warp{position:absolute;inset:0;z-index:1}
.lib-lm__t{position:absolute;top:6px;bottom:28px;left:calc(var(--x) * 100cqw - 2px);width:4px;background:#6bb68f55;transition:opacity 420ms,background-color 420ms}
.lib-lm__t[data-r]{background:#8fc9a8;width:5px}
.lib-lm__t b{position:absolute;top:calc(100% + 5px);left:50%;transform:translateX(-50%);font:600 12px var(--gft-font-mono);color:#cfe0d6}
.lib-lm__cloth[data-step="0"] [data-p=wp01],.lib-lm__cloth[data-step="1"] :is([data-p=wp01],[data-p=wp02]),.lib-lm__cloth:is([data-step="2"],[data-step="3"]) :is([data-p=wp01],[data-p=wp02],[data-p=wp03],[data-p=wp14]){opacity:1;background:#f0c46a;box-shadow:0 0 10px #e3a948}
.lib-lm__weft{position:absolute;left:0;right:0;top:44px;height:8px;border-radius:999px;background:#164b46;border:1px solid #6bb68f66}
.lib-lm__ride{position:absolute;left:0;right:0;top:44px;height:8px;border-radius:999px;background:linear-gradient(90deg,#c98a2b,#f0c46a);transform-origin:0 50%;transform:scaleX(var(--sx));transition:transform 760ms cubic-bezier(.2,.8,.2,1)}
.lib-lm__over{position:absolute;inset:0;z-index:2;pointer-events:none}
.lib-lm__over i{position:absolute;top:36px;height:24px;min-width:44px;padding:0 6px;left:calc(var(--x) * 100cqw - 22px);background:#072d2b;border:2px solid #f0c46a;border-radius:999px;display:grid;place-items:center}
.lib-lm__over i b{font:700 12px var(--gft-font-mono);color:#f0c46a}
.lib-lm__dot{position:absolute;z-index:2;top:48px;left:calc(100cqw - 11px);width:22px;height:22px;margin-top:-11px;border-radius:50%;border:3px solid #f0c46a;background:#072d2b;transition:background-color 400ms}
.lib-lm__cloth[data-step="3"] .lib-lm__dot{background:#f0c46a}
.lib-lm__shuttle{position:absolute;z-index:3;left:0;top:48px;width:100%;height:0;transform:translateX(calc(var(--sx) * 100%));transition:transform 760ms cubic-bezier(.2,.8,.2,1);pointer-events:none;overflow-anchor:none}
.lib-lm__shuttle i{position:absolute;left:-16px;top:-8px;width:32px;height:16px;border-radius:8px;background:#f0c46a;box-shadow:0 0 0 4px #072d2b,0 0 14px #e3a948}
.lib-lm__scrubrow{margin-top:8px}
.lib-lm__range{width:100%;accent-color:#e3a948;min-height:32px;cursor:pointer}

.lib-lm__ctrl{display:grid;grid-template-columns:auto auto minmax(0,1fr);grid-template-areas:"nodes btns read";gap:14px clamp(20px,3vw,40px);align-items:center;margin-top:14px;padding-top:14px;border-top:1px solid #6bb68f40}
.lib-lm__nodes{grid-area:nodes;display:flex;gap:10px}
.lib-node{display:grid;justify-items:center;gap:4px;min-width:68px;min-height:44px;padding:0;border:0;background:transparent;color:#e2ebe6;font:600 12px var(--gft-font-mono);cursor:pointer}
.lib-node b{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;border:2px solid #6bb68f;background:#0c3d39;font:700 16px var(--gft-font-display);color:#fff;transition:background-color 320ms,color 320ms,border-color 320ms}
.lib-node[data-done] b{background:#186058;border-color:#8fc9a8;color:#fff}
.lib-node[aria-pressed=true] b{background:#f0c46a;border-color:#f0c46a;color:var(--gft-night)}
.lib-lm__btns{grid-area:btns;display:flex;gap:8px}
.lib-lm__btn{min-width:48px;min-height:48px;padding:0 16px;border:2px solid #6bb68f;background:#0c3d39;color:#fff;font:700 15px var(--gft-font-display);cursor:pointer;transition:background-color 220ms,color 220ms,border-color 220ms}
.lib-lm__btn:hover{background:#15534d;border-color:#f0c46a}
.lib-lm__btn--play{min-width:170px;background:#e3a948;border-color:#e3a948;color:var(--gft-night)}
.lib-lm__btn[aria-pressed=true]{background:#f0c46a;border-color:#f0c46a;color:var(--gft-night)}
.lib-lm__read{grid-area:read;display:grid;gap:4px}
.lib-lm__read .lib-kicker{color:#cfe0d6}
.lib-lm__signal{display:grid;max-width:none;font:800 clamp(1.15rem,1.5vw,1.45rem)/1.25 var(--gft-font-display);letter-spacing:-.03em;color:#f0c46a;margin:0}
.lib-lm__signal>span{grid-area:1/1;opacity:0;transition:opacity 300ms}
.lib-lm__signal>span[data-on]{opacity:1}

.lib-lm__strip{position:relative;height:clamp(370px,45svh,430px);overflow:clip}
.lib-lm__track{--st:0;list-style:none;margin:0;padding:0;display:flex;gap:3%;height:100%;transform:translateX(calc(11% - var(--st) * 81%));transition:transform 820ms cubic-bezier(.2,.8,.2,1)}
.lib-lm__inst[data-step="1"] .lib-lm__track{--st:1}
.lib-lm__inst[data-step="2"] .lib-lm__track{--st:2}
.lib-lm__inst[data-step="3"] .lib-lm__track{--st:3}
.lib-lm__frame{flex:0 0 78%;display:grid;grid-template-columns:minmax(0,1.18fr) minmax(0,1fr);gap:28px;align-items:center;padding:26px 32px;background:#fff;border:2px solid var(--gft-night);border-top:6px solid var(--gft-forest);box-shadow:0 16px 36px -18px #072d2b44;color:var(--gft-forest);opacity:.22;transition:opacity 500ms}
.lib-lm__frame[data-on]{opacity:1;border-top-color:#c98a2b}
.lib-lm__frame:not([data-on]) .lib-lm__copy{visibility:hidden;transition:visibility 0s linear 420ms}
.lib-lm__frame[data-on] .lib-lm__copy{visibility:visible}
.lib-lm__svg{width:100%;height:auto;max-height:100%;padding:10px;background:#f6f4ef;border:1px solid #0e4d4a33}
.lib-lm__copy{display:grid;gap:12px;color:var(--gft-night)}
.lib-lm__copy .lib-kicker{color:#8a5a12}
.lib-lm__copy h3{font-size:clamp(1.6rem,2.2vw,2.2rem);letter-spacing:-.045em;line-height:1.1}
.lib-lm__copy p:not(.lib-kicker){font-size:16px;line-height:1.6;max-width:46ch;margin:0}
.lib-lm__fthreads{padding:8px 12px;background:var(--gft-mist);border-left:4px solid var(--gft-forest);font:600 13px var(--gft-font-mono)!important;color:var(--gft-night)}
.lib-lm__run,.lib-lm__pulse,.lib-lm__drop,.lib-lm__band{transform-box:fill-box;transform-origin:center}
:root[data-m-go] .lib-lm__strip[data-m-on] .lib-lm__run{animation-name:lib-lm-run;animation-duration:4s;animation-timing-function:linear;animation-iteration-count:infinite;animation-direction:normal}
:root[data-m-go] .lib-lm__strip[data-m-on] .lib-lm__pulse{animation-name:lib-lm-pulse;animation-duration:2.4s;animation-timing-function:ease-in-out;animation-iteration-count:infinite;animation-direction:alternate}
:root[data-m-go] .lib-lm__strip[data-m-on] .lib-lm__drop{animation-name:lib-lm-drop;animation-duration:2.6s;animation-timing-function:ease-in;animation-iteration-count:infinite;animation-direction:normal}
:root[data-m-go] .lib-lm__strip[data-m-on] .lib-lm__band{animation-name:lib-lm-band;animation-duration:4s;animation-timing-function:ease-in-out;animation-iteration-count:infinite;animation-direction:alternate}
@keyframes lib-lm-run{from{transform:translateX(0)}to{transform:translateX(96px)}}
@keyframes lib-lm-pulse{from{transform:scale(.92)}to{transform:scale(1.04)}}
@keyframes lib-lm-drop{from{transform:translateY(-30px);opacity:0}30%{opacity:1}to{transform:translateY(40px);opacity:0}}
@keyframes lib-lm-band{from{opacity:.45}to{opacity:1}}
.lib-lm .lib-note{margin-top:14px}

/* ================= tablet and phone ================= */
@media(max-width:1100px){
 .lib-ix__head,.lib-ix__low{grid-template-columns:1fr}
 .lib-rg__shead{grid-template-columns:1fr}
 .lib-rg__cards-grid[data-fam-grid="0"],.lib-rg__cards-grid[data-fam-grid="1"],.lib-rg__cards-grid[data-fam-grid="2"],.lib-rg__cards-grid[data-fam-grid="3"]{grid-template-columns:1fr}
 .lib-rg__cards-grid[data-fam-grid="0"] .lib-tile:nth-child(odd):not(:first-child),.lib-rg__cards-grid[data-fam-grid="2"] .lib-tile:nth-child(even){transform:none}
 .lib-rg__cards-grid[data-fam-grid="1"] .lib-tile:nth-child(even){margin-top:0}
 .lib-rg__read{grid-template-columns:140px minmax(0,1fr)}
 .lib-lm__frame{grid-template-columns:1fr}
 .lib-lm__svg{max-height:190px}
 .lib-lm__strip{height:540px}
 .lib-lm__ctrl{grid-template-columns:auto minmax(0,1fr);grid-template-areas:"nodes btns" "read read"}
}
@media(max-width:800px){
 .lib-lm__head{grid-template-columns:1fr}
 .lib-rg__grid{grid-template-columns:1fr;gap:0}
 .lib-rg__stage{--sh:38svh;top:0;z-index:3;grid-template-columns:minmax(0,1fr) 96px;grid-template-rows:auto minmax(0,1fr);grid-template-areas:"top glyph" "loom glyph";gap:6px 10px;padding:10px 12px;margin-inline:-20px;box-shadow:0 12px 24px -16px #072d2b88}
 .lib-rg__top{grid-area:top;grid-template-areas:"count fam";gap:12px}
 .lib-rg__rail{display:none}
 .lib-rg__count{font-size:1.9rem}
 .lib-rg__fam{font-size:1.2rem}
 .lib-rg__loom{grid-area:loom}
 .lib-rg__lab,.lib-rg__id{display:none}
 .lib-rg__read{display:contents}
 .lib-rg__glyphs{grid-area:glyph;align-self:center}
 .lib-rg__glyphs figure{padding:6px 4px 4px}
 .lib-rg__glyphs svg{height:96px}
 .lib-rg__cards{display:none}
 .lib-rg__head{padding-top:28px}
 .lib-tile{min-height:0;padding:16px}
 .lib-tile h4{font-size:21px}
 .lib-tile__sum{display:block;font-size:14.5px;line-height:1.58;color:var(--lib-soft)}
 .lib-rg__shead{padding-top:32px}
}
@media(max-width:640px){
 .lib-ix__intro h2{font-size:2.1rem}
 .lib-bar{border-radius:20px;padding:10px}
 .lib-bar__search{flex-basis:100%}
 .lib-chips{flex-wrap:wrap;overflow:visible;width:100%;gap:6px}
 .lib-chipbtn{flex:1 1 auto;justify-content:space-between;min-height:42px;padding:0 12px;font-size:13px}
 .lib-reset{width:100%;min-height:42px;justify-content:center}
 .lib-ix__deck{padding:14px}
 .lib-ix__rackwrap{--sw:30px;margin-top:8px}
 .lib-ix__shelf{height:auto;display:grid;grid-template-columns:repeat(10,minmax(0,1fr));gap:8px 4px;padding-top:8px}
 .lib-ix__shelf li{position:relative;left:auto;width:auto;height:68px}
 .lib-spine__id{font-size:12px;top:6px}
 .lib-ix__sptitle,.lib-spine__idx,.lib-ix__fams,.lib-ix__sumbar b{display:none}
 .lib-stats{grid-template-columns:1fr 1fr;gap:8px}
 .lib-stat{padding:12px}
 .lib-stat strong{font-size:2.1rem}
 .lib-stat::after{display:none}
 .lib-ix__legend{grid-template-columns:1fr}
 .lib-rg__cards-grid[data-fam-grid="4"] .lib-tile:nth-child(2),.lib-rg__cards-grid[data-fam-grid="4"] .lib-tile:nth-child(3){margin-left:0}
 .lib-rg__lrow{grid-template-columns:1fr;gap:6px}
 .lib-lm__deck{padding:14px}
 .lib-lm__cloth-stage{height:56px}
 .lib-lm__t{top:18px;bottom:auto;height:10px;width:10px;border-radius:50%;left:calc(var(--x) * 100cqw - 5px)}
 .lib-lm__t b,.lib-lm__over i b{display:none}
 .lib-lm__weft,.lib-lm__ride{top:22px}
 .lib-lm__over i{top:18px;width:12px;min-width:0;height:12px;padding:0;left:calc(var(--x) * 100cqw - 6px)}
 .lib-lm__dot,.lib-lm__shuttle{top:26px}
 .lib-lm__strip{height:560px}
 .lib-lm__track{gap:0;transform:translateX(calc(var(--st) * -100%))}
 .lib-lm__frame{flex-basis:100%;padding:16px;align-content:start}
 .lib-lm__svg{max-height:170px}
 .lib-lm__svg text{display:none}
 .lib-lm__ctrl{grid-template-columns:1fr;grid-template-areas:"nodes" "btns" "read"}
 .lib-lm__nodes{justify-content:space-between}
 .lib-lm__btn--play{flex:1;min-width:0}
}
/* /library/ Act III, night: block 5 interlude (opened by an iris), block 6 staircase (forest, sticky multi-state),
   block 7 plies (deep, with a mist panel as a paper breath), block 8 closing swatch (night, full-width instrument). */

/* ================= 5 · interlude: twenty fibre threads ================= */
.lib-tg{position:relative;background:var(--gft-paper);view-timeline-name:--lib-tg;view-timeline-axis:block}
.lib-tg__iris{position:relative;background:var(--gft-night);color:var(--gft-paper);padding-block:clamp(48px,5.5vw,88px) clamp(40px,4.5vw,72px);overflow:clip;isolation:isolate}
@supports (animation-timeline:view()){
 :root[data-m-go] .lib-tg__iris{animation-name:lib-tg-iris;animation-duration:1ms;animation-timing-function:linear;animation-fill-mode:both;animation-timeline:--lib-tg;animation-range-start:cover 0px;animation-range-end:cover 180px}
}
@keyframes lib-tg-iris{from{clip-path:circle(0% at 50% 0%)}to{clip-path:circle(150% at 50% 0%)}}
.lib-tg__atmos{position:absolute;inset:-30px;z-index:-1;background:repeating-linear-gradient(90deg,#6bb68f14 0 1px,transparent 1px 28px),repeating-linear-gradient(0deg,#6bb68f0c 0 1px,transparent 1px 28px);pointer-events:none;overflow-anchor:none}
.lib-tg__head{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:20px 40px;align-items:end}
.lib-tg__head h2{position:relative;z-index:1;font-size:clamp(2.2rem,3.6vw,3.8rem);max-width:15ch;margin-top:14px}
.lib-tg__fig{display:grid;justify-items:end;gap:10px}
.lib-tg__readout{font:600 16px/1.5 var(--gft-font-mono);color:#cfe0d6;max-width:none;text-align:right}
.lib-tg__readout b{font:800 clamp(1.6rem,2.4vw,2.2rem) var(--gft-font-display);color:#e2ebe6;letter-spacing:-.04em;margin-right:2px;font-variant-numeric:tabular-nums}
.lib-tg__stage{position:relative;margin-top:22px}
.lib-tg__field{--pitch:13px;--end:58%;position:relative;height:calc(20 * var(--pitch) + 24px);container-type:inline-size;view-timeline-name:--lib-fld;view-timeline-axis:block}
.lib-tg__zone{position:absolute;left:0;width:var(--end);top:0;bottom:0;border:1px dashed #6bb68f88;border-left:0;background:#6bb68f0d}
.lib-tg__zone em{position:absolute;right:10px;bottom:4px;font:600 12px var(--gft-font-mono);font-style:normal;letter-spacing:.1em;text-transform:uppercase;color:#a6dcbd}
.lib-tg__raw{position:absolute;right:0;bottom:4px}
.lib-tg__raw em{font:600 12px var(--gft-font-mono);font-style:normal;letter-spacing:.1em;text-transform:uppercase;color:#b9cbc1}
.lib-tg__row{--on:clamp(0,calc(var(--lit) - var(--k)),1);position:absolute;left:0;width:100%;top:calc(var(--k) * var(--pitch) + 6px);height:3px;transform-origin:0 50%}
.lib-tg__g{position:absolute;left:0;right:-40px;top:1px;height:2px;background:#8aa496;opacity:calc(1 - var(--on));transition:opacity 300ms}
.lib-tg__s{position:absolute;left:0;width:var(--end);top:0;height:3px;background:var(--gft-sage);opacity:var(--on);transition:opacity 300ms}
.lib-tg__end{position:absolute;left:calc(var(--end) - 4px);top:-2px;width:7px;height:7px;border-radius:50%;background:#bff0d2;opacity:var(--on);transition:opacity 300ms}
.lib-tg__mark{position:absolute;left:0;width:calc(var(--end) + 150px);top:calc(var(--at) * var(--pitch) + 2px);height:0;border-top:2px dashed #e3a948}
.lib-tg__mark em{position:absolute;right:0;top:-10px;padding:0 6px;background:var(--gft-night);font:600 13px var(--gft-font-mono);font-style:normal;color:#f0c46a;letter-spacing:.04em}
.lib-tg__cursor{position:absolute;left:0;right:0;top:2px;height:0;translate:0 calc(var(--lit) * var(--pitch));transition:translate 320ms cubic-bezier(.2,.8,.2,1)}
.lib-tg__cursor i{position:absolute;left:0;width:var(--end);top:-1px;height:2px;background:var(--gft-paper);box-shadow:0 0 0 4px #f6f4ef1f;transform-origin:0 50%}
.lib-giant{position:relative;font-size:clamp(6rem,13vw,13rem);line-height:.88;font-weight:850;letter-spacing:-.09em;color:var(--gft-sage);display:flex;align-items:baseline;font-variant-numeric:tabular-nums;pointer-events:none;text-shadow:0 0 30px #072d2b}
.lib-giant small{font-size:.48em;letter-spacing:-.04em;margin-left:.04em}
.lib-tg__ctrl{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:20px clamp(28px,4vw,64px);margin-top:22px;align-items:start}
.lib-tg__scrub{display:grid;gap:8px}
.lib-tg__scrub label{font:600 13px/1.5 var(--gft-font-mono);color:#cfe0d6;max-width:46ch}
.lib-tg__range{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px;align-items:center}
.lib-tg__range input{width:100%;accent-color:var(--gft-ochre);min-height:48px}
.lib-tg__range output{font:800 clamp(1.8rem,2.6vw,2.6rem) var(--gft-font-display);letter-spacing:-.05em;min-width:2.6ch;text-align:right;font-variant-numeric:tabular-nums}
.lib-tg__range output::after{content:'%'}
.lib-giant__label{font:13px/1.6 var(--gft-font-mono);color:#cfe0d6;max-width:48ch;min-height:4.8em}
.lib-tg__btns{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
.lib-tg__btns button{min-height:48px;padding:8px 12px;border:1px solid #6bb68f99;background:transparent;color:var(--gft-paper);font:700 14px/1.25 var(--gft-font-display);text-align:left;transition:background-color 280ms,color 280ms}
.lib-tg__btns button[aria-pressed=true]{background:var(--gft-sage);border-color:var(--gft-sage);color:var(--gft-night)}
.lib-tg__paras{display:grid;margin-top:14px}
.lib-tg__paras>div{grid-area:1/1;font-size:clamp(1rem,1.15vw,1.12rem);line-height:1.6;color:#e6efe9;max-width:56ch;opacity:0;visibility:hidden;transition:opacity 200ms linear,visibility 0s linear 200ms}
.lib-tg__paras[data-state="0"] [data-s="0"],.lib-tg__paras[data-state="1"] [data-s="1"],.lib-tg__paras[data-state="2"] [data-s="2"]{opacity:1;visibility:visible;transition:opacity 320ms ease-out 80ms,visibility 0s linear 0s}
.lib-tg .lib-note{color:#b9cbc1;margin-top:18px}
:root[data-m-go] .lib-tg__atmos[data-m-on]~.lib-tg__in .lib-tg__end{animation-name:lib-tg-shim;animation-duration:2.8s;animation-timing-function:ease-in-out;animation-iteration-count:infinite;animation-direction:alternate;animation-delay:calc(var(--k) * -140ms)}
@keyframes lib-tg-shim{from{filter:brightness(.8)}to{filter:brightness(1.6)}}
@supports (animation-timeline:view()){
 :root[data-m-go] .lib-tg__row{animation-name:lib-tg-stand;animation-duration:1ms;animation-timing-function:linear;animation-fill-mode:both;animation-timeline:--lib-fld;animation-range-start:cover calc(64% + var(--k) * .5%);animation-range-end:cover calc(90% + var(--k) * .5%)}
 :root[data-m-go] :is(.lib-tg__zone,.lib-tg__raw,.lib-tg__mark,.lib-tg__cursor){animation-name:lib-tg-fade;animation-duration:1ms;animation-timing-function:linear;animation-fill-mode:both;animation-timeline:--lib-fld;animation-range-start:cover 60%;animation-range-end:cover 72%}
}
@keyframes lib-tg-stand{0%{transform:translateX(0) translateY(0) rotate(0deg) scaleX(1)}45%{transform:translateX(calc(var(--x) * 100%)) translateY(0) rotate(0deg) scaleX(.12)}100%{transform:translateX(calc(var(--x) * 100%)) translateY(calc((19 - var(--k)) * var(--pitch))) rotate(-90deg) scaleX(.12)}}
@keyframes lib-tg-fade{to{opacity:0}}

/* ================= 6 · status staircase & multi-state sticky evidence visual (forest) ================= */
.lib-ev{background:#0e4d4a;color:var(--gft-paper);padding-top:clamp(44px,4.8vw,72px);padding-bottom:clamp(44px,4.8vw,68px);overflow:clip}
.lib-ev .gft-eyebrow{color:#d9e6de}
.lib-ev__grid{display:grid;grid-template-columns:minmax(0,53fr) minmax(0,47fr);gap:clamp(32px,4vw,58px);align-items:start}

/* Sticky multi-state visual stage on the left */
.lib-ev__stage{--ev-h:min(760px,calc(100svh - 44px));position:sticky;top:max(22px,calc((100svh - var(--ev-h)) / 2));display:grid;gap:14px;padding:22px 26px;background:var(--gft-night);border:2px solid #6bb68f88;border-top:5px solid #e3a948;box-shadow:0 20px 44px -22px #041d1b}
.lib-ev__stage-top{display:grid;gap:12px;padding-bottom:12px;border-bottom:1px solid #6bb68f40}
.lib-ev__stage-head{display:grid;grid-template-columns:auto minmax(0,1fr);gap:16px;align-items:end}
.lib-ev__count{font:850 clamp(2.1rem,3vw,2.8rem)/1 var(--gft-font-display);letter-spacing:-.06em;color:#f0c46a;font-variant-numeric:tabular-nums;margin:0}
.lib-ev__stitle{font:800 clamp(1.25rem,1.7vw,1.6rem)/1.12 var(--gft-font-display);letter-spacing:-.035em;color:#fff;margin:0}
.lib-ev__stitle small{display:block;font:600 12px/1.45 var(--gft-font-mono);color:#cfe0d6;letter-spacing:.04em;margin-top:3px}
.lib-ev__stack{display:inline-grid}
.lib-ev__stack>*{grid-area:1/1;opacity:0;transition:opacity 280ms}
.lib-ev__stage[data-state="0"] .lib-ev__stack [data-s="0"],.lib-ev__stage[data-state="1"] .lib-ev__stack [data-s="1"],.lib-ev__stage[data-state="2"] .lib-ev__stack [data-s="2"]{opacity:1}

.lib-ev__pills{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.lib-ev__pills button{display:flex;align-items:center;gap:8px;min-height:42px;padding:6px 10px;border:1px solid #6bb68f66;background:#0c3a37;color:#e2ebe6;font:700 13px var(--gft-font-display);text-align:left;cursor:pointer;transition:background-color 240ms,color 240ms,border-color 240ms}
.lib-ev__pills button b{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:#072d2b;border:1px solid #6bb68f;font:700 12px var(--gft-font-mono);color:#f0c46a;flex:none}
.lib-ev__pills button[aria-selected=true]{background:#e3a948;border-color:#e3a948;color:var(--gft-night)}
.lib-ev__pills button[aria-selected=true] b{background:var(--gft-night);border-color:var(--gft-night);color:#f0c46a}

.lib-ev__stair{position:relative;height:210px;padding:10px 14px;background:#0a3532;border:1px solid #6bb68f55;container-type:inline-size;view-timeline-name:--lib-stair;view-timeline-axis:block}
.lib-ev__treads{position:absolute;inset:0}
.lib-ev__tread{position:absolute;left:12px;right:12px;height:0}
.lib-ev__tread--rel{top:34px;border-top:2px dashed #e3a948aa}
.lib-ev__tread--draft{top:148px;height:5px;background:#c5d9ce;overflow:clip}
.lib-ev__tread--draft u{position:absolute;left:0;top:0;width:16%;height:100%;background:linear-gradient(90deg,transparent,#f0c46a,transparent);overflow-anchor:none;text-decoration:none}
:root[data-m-go] .lib-ev__tread--draft u[data-m-on]{animation-name:lib-sweep;animation-duration:7s;animation-timing-function:linear;animation-iteration-count:infinite;animation-direction:normal}
.lib-ev__tread--out{top:184px;border-top:2px solid #6bb68f88}
.lib-ev__riser{position:absolute;left:12px;top:34px;width:2px;height:150px;background:#6bb68f88}
.lib-ev__pulse{position:absolute;left:6px;top:143px;width:14px;height:14px;border-radius:50%;background:#e3a948}
.lib-ev__spines{position:absolute;inset:0}
.lib-ev__bundle{position:absolute;inset:0;transform-origin:calc(var(--bx) * 100%) 148px}
.lib-ev__bundle i{position:absolute;left:calc(var(--x) * 100cqw - 100cqw / 24 * .28);width:calc(100cqw / 24 * .56);top:52px;height:96px;background:linear-gradient(180deg,#6bb68f,#14524d);border:1px solid #a6dcbd88;transform-origin:50% 100%;display:flex;align-items:flex-end;justify-content:center;padding-bottom:4px}
.lib-ev__bundle i b{font:600 10px var(--gft-font-mono);color:#eef5f1;font-style:normal}
.lib-ev__stage[data-state="1"] .lib-ev__bundle i{background:linear-gradient(180deg,#e3a948,#8a5a12);border-color:#f0c46a}
.lib-ev__stage[data-state="2"] .lib-ev__bundle i{background:linear-gradient(180deg,#2a8a78,#0e4d4a);border-color:#bff0d2}
.lib-ev__labels{list-style:none;margin:0;padding:0;position:absolute;inset:0;pointer-events:none}
.lib-ev__lab{position:absolute;left:22px;display:flex;gap:10px;align-items:baseline;font:600 12px/1.35 var(--gft-font-mono);letter-spacing:.04em;color:#d9e6de}
.lib-ev__lab b{font:700 12.5px var(--gft-font-mono);text-transform:uppercase;letter-spacing:.08em;color:#fff}
.lib-ev__lab--rel{top:8px}
.lib-ev__lab--rel span{color:#f0c46a}
.lib-ev__lab--draft{top:156px}
.lib-ev__lab--out{top:188px}

.lib-ev__right{display:grid;gap:10px;align-content:start}
.lib-ev__read{font:600 13px/1.55 var(--gft-font-mono);color:#e2ebe6;max-width:none;margin:0}
.lib-ev__cond{display:grid;color:#f0c46a}
.lib-ev__cond>span{grid-area:1/1;opacity:0;transition:opacity 280ms}
.lib-ev__cond>span[data-on]{opacity:1}
.lib-panels{position:relative;display:grid;align-content:start;background:#0a3532;border:1px solid #6bb68f66;padding:14px 18px;color:#e2ebe6}
.lib-panel svg{width:100%;height:auto;max-height:185px;display:block}
.lib-ev .lib-svg-gold{fill:#f0c46a}
.lib-ev__stage[data-ready] .lib-panel,.lib-tabs[data-ready] .lib-panel{grid-area:1/1;opacity:0;visibility:hidden;transform:translateY(10px);transition:opacity 150ms linear,transform 150ms linear,visibility 0s linear 150ms}
.lib-ev__stage[data-ready] .lib-panel[data-on],.lib-tabs[data-ready] .lib-panel[data-on]{opacity:1;visibility:visible;transform:none;transition:opacity 320ms ease-out 160ms,transform 320ms ease-out 160ms,visibility 0s linear 0s}
.lib-ev__dot{transform-box:fill-box;transform-origin:center}
:root[data-m-go] .lib-panel[data-on] .lib-ev__thread{animation-name:lib-ev-draw;animation-duration:900ms;animation-delay:200ms;animation-timing-function:cubic-bezier(.3,.7,.2,1);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
@keyframes lib-ev-draw{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}
.lib-ev__plies{position:relative;height:28px;margin-top:4px}
.lib-ev__plies i{position:absolute;left:0;right:-26px;height:3px;border-radius:2px}
.lib-ev__plies i[data-p="0"]{top:3px;background:#6bb68f}
.lib-ev__plies i[data-p="1"]{top:12px;background:#e2ebe6}
.lib-ev__plies i[data-p="2"]{top:21px;background:#e3a948}
@supports (animation-timeline:view()){
 :root[data-m-go] .lib-ev__bundle{animation-duration:1ms;animation-timing-function:linear;animation-fill-mode:both;animation-timeline:--lib-stair;animation-range-start:cover 74%;animation-range-end:cover 100%}
 :root[data-m-go] .lib-ev__bundle[data-b="0"]{animation-name:lib-ev-ply0}
 :root[data-m-go] .lib-ev__bundle[data-b="1"]{animation-name:lib-ev-ply1}
 :root[data-m-go] .lib-ev__bundle[data-b="2"]{animation-name:lib-ev-ply2}
}
@keyframes lib-ev-ply0{to{transform:scaleX(.3) skewX(-26deg) rotate(14deg)}}
@keyframes lib-ev-ply1{to{transform:scaleX(.3) skewX(-30deg) rotate(18deg)}}
@keyframes lib-ev-ply2{to{transform:scaleX(.3) skewX(-34deg) rotate(22deg)}}

/* Right column condition step cards (sit cleanly in their own column with zero overlap) */
.lib-ev__steps{display:grid;gap:24px}
.lib-ev__head{display:grid;gap:12px;padding-bottom:18px;border-bottom:1px solid #6bb68f55}
.lib-ev__head h2{font-size:clamp(2.1rem,3.2vw,3.3rem);max-width:16ch;line-height:1.05}
.lib-ev__head .gft-lede{font-size:clamp(1.02rem,1.2vw,1.15rem);color:#e6efe9;max-width:48ch}
.lib-ev__cap{font:500 14px/1.6 var(--gft-font-mono);color:#d9e6de;max-width:58ch;padding:12px 14px;background:#0a3b38;border-left:4px solid #e3a948}

.lib-ev__cards{display:grid;gap:18px}
.lib-ev__card{display:grid;gap:12px;padding:22px 24px;background:#0a3b38;color:#eef5f1;border:1.5px solid #6bb68f66;border-left:6px solid #6bb68f;transition:background-color 280ms,color 280ms,border-color 280ms,box-shadow 280ms}
.lib-ev__card-top{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 12px}
.lib-ev__cnum{padding:2px 9px;background:#072d2b;border:1px solid #6bb68f88;font:700 12px var(--gft-font-mono);color:#f0c46a;text-transform:uppercase;letter-spacing:.06em}
.lib-ev__card .lib-kicker{color:#cfe0d6;font-size:12.5px}
.lib-ev__card h3{font-size:clamp(1.45rem,2vw,1.9rem);line-height:1.12;letter-spacing:-.04em;font-weight:850;margin:0}
.lib-ev__cbody{font-size:16px;line-height:1.62;color:#e2ebe6;margin:0;max-width:54ch}
.lib-ev__cfoot{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px 16px;padding-top:12px;border-top:1px solid #6bb68f40}
.lib-ev__cgate{font:600 12.5px var(--gft-font-mono);color:#f0c46a}
.lib-ev__cbtn{min-height:36px;padding:4px 12px;border:1.5px solid #8fc9a8;background:#072d2b;color:#eef5f1;font:700 12.5px var(--gft-font-mono);cursor:pointer;transition:background-color 220ms,color 220ms,border-color 220ms}
.lib-ev__card[data-on]{background:var(--gft-paper);color:var(--gft-night);border-color:#e3a948;border-left:6px solid #e3a948;box-shadow:0 16px 34px -16px #041d1b}
.lib-ev__card[data-on] .lib-ev__cnum{background:var(--gft-night);border-color:var(--gft-night);color:#f0c46a}
.lib-ev__card[data-on] .lib-kicker{color:#2a6e50}
.lib-ev__card[data-on] .lib-ev__cbody{color:var(--gft-night)}
.lib-ev__card[data-on] .lib-ev__cfoot{border-top-color:#0e4d4a33}
.lib-ev__card[data-on] .lib-ev__cgate{color:#8a5a12}
.lib-ev__card[data-on] .lib-ev__cbtn{background:var(--gft-night);border-color:var(--gft-night);color:#f0c46a}

/* ================= 7 · programme plies (deep, with a mist panel) ================= */
.lib-pg{background:#0a3734;color:var(--gft-paper);padding-top:clamp(44px,5vw,80px);padding-bottom:clamp(44px,5vw,72px);overflow:clip}
.lib-pg .gft-container{position:relative}
.lib-pg__head{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:20px clamp(32px,5vw,80px);align-items:end;margin-bottom:12px}
.lib-pg__head .gft-eyebrow{margin-bottom:14px;color:#cfe0d6}
.lib-pg__head h2{font-size:clamp(2.1rem,3.3vw,3.4rem);max-width:17ch}
.lib-pg__head .gft-lede{font-size:clamp(1rem,1.2vw,1.15rem);color:#d9e6de;max-width:46ch}
.lib-pg__tabs{position:relative;grid-template-columns:1fr;gap:0}
.lib-pg__yarn{position:absolute;top:0;left:calc(50% - 50vw);width:100vw;height:140px;pointer-events:none}
.lib-pg__yarn svg{width:100%;height:100%}
.lib-pg__flow{position:absolute;left:0;right:0;top:66px;height:8px;overflow:clip}
.lib-pg__flow i{position:absolute;left:0;top:0;width:12%;height:100%;background:linear-gradient(90deg,transparent,#f0c46aaa,transparent);overflow-anchor:none}
:root[data-m-go] .lib-pg__flow i[data-m-on]{animation-name:lib-sweep;animation-duration:7s;animation-timing-function:linear;animation-iteration-count:infinite;animation-direction:normal}
.lib-pg__nodes{position:relative;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;padding-top:36px}
.lib-pg__nodes button{font:inherit;background:transparent;border:0;color:inherit;position:relative;display:grid;justify-items:center;text-align:center;gap:10px;padding:0 8px 18px;min-height:44px;cursor:pointer}
.lib-pg__dot{display:grid;place-items:center;width:68px;height:68px;border-radius:50%;border:3px solid #e2ebe6;background:#0a3734;font:800 26px var(--gft-font-display);transition:background-color 320ms,color 320ms,transform 320ms}
.lib-pg__nodes button[aria-selected=true] .lib-pg__dot{background:#e3a948;border-color:#e3a948;color:var(--gft-night);transform:scale(1.1)}
.lib-pg__nodes .lib-kicker{color:#cfe0d6}
.lib-pg__nodes strong{font-size:clamp(1.3rem,1.9vw,1.9rem);line-height:1.12;letter-spacing:-.04em;font-weight:850;max-width:18ch}
.lib-pg__nodes button:not([aria-selected=true]) strong{opacity:.82}
.lib-pg__drop{position:absolute;left:calc(50% - 1.5px);top:100%;width:3px;height:22px;background:#e3a948;transform:scaleY(0);transform-origin:50% 0;transition:transform 420ms cubic-bezier(.2,.8,.2,1)}
.lib-pg__nodes button[aria-selected=true] .lib-pg__drop{transform:none}
.lib-pg__panels{margin:22px calc(50% - 50vw) 0;padding:clamp(24px,3vw,40px) max(48px,calc(50vw - 720px + 48px));background:#e2ebe6;color:var(--gft-night);border:0;border-top:3px solid #e3a948}
.lib-pg__panels .lib-panel{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(24px,4vw,64px);align-items:center}
.lib-pg__fig{margin:0;min-height:200px;display:grid;align-content:center;gap:14px}
.lib-pg__svg{width:100%;height:auto;max-height:210px}
.lib-pg__lab{font:700 14px var(--gft-font-mono);fill:currentColor;letter-spacing:.04em}
.lib-pg__bar{display:flex;height:64px;border:2px solid var(--gft-night)}
.lib-pg__bar i{position:relative;display:block;height:100%}
.lib-pg__raw{flex:95;background:repeating-linear-gradient(90deg,#8aa496 0 3px,transparent 3px 9px)}
.lib-pg__loc{flex:5;background:#2a6e50}
.lib-pg__bar em{position:absolute;top:calc(100% + 6px);left:0;font:600 13px var(--gft-font-mono);font-style:normal;white-space:nowrap}
.lib-pg__loc em{left:auto;right:0}
.lib-pg__tags{list-style:none;margin:28px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.lib-pg__tags li{font:600 12px var(--gft-font-mono);letter-spacing:.08em;text-transform:uppercase;padding:6px 10px;border:1px solid var(--gft-night)}
.lib-pg__copy{display:grid;gap:16px;justify-items:start}
.lib-pg__copy>p{font-size:clamp(1.1rem,1.4vw,1.4rem);line-height:1.5;max-width:52ch;color:var(--gft-night)}
.lib-pg__copy .lib-pg__cap{font:12px/1.6 var(--gft-font-mono);color:#35564e}
.lib-pg__copy .gft-button{background:var(--gft-night);border-color:var(--gft-night)}
.lib-pg__orbit{transform-box:view-box;transform-origin:210px 100px}
:root[data-m-go] .lib-pg__panels .lib-panel[data-on] .lib-pg__orbit{animation-name:lib-pg-orbit;animation-duration:6s;animation-timing-function:linear;animation-iteration-count:infinite;animation-direction:normal}
@keyframes lib-pg-orbit{to{transform:rotate(360deg)}}
:root[data-m-go] .lib-pg__panels .lib-panel[data-on] .lib-pg__tk{animation-name:lib-pg-tk;animation-duration:4s;animation-timing-function:steps(2,jump-none);animation-iteration-count:infinite;animation-direction:normal}
@keyframes lib-pg-tk{from{opacity:1}to{opacity:.2}}
.lib-pg .lib-inline-links{display:flex;gap:8px 32px;flex-wrap:wrap;margin-top:20px}
.lib-pg__run{position:absolute;right:-24px;top:68px;width:3px;height:4000px;background:#e3a948;pointer-events:none}

/* ================= 8 · closing swatch (night, full-width instrument + weft handover to footer) ================= */
.lib-sw{background:var(--gft-night);color:var(--gft-paper);scroll-margin-top:96px;padding-top:clamp(52px,5.5vw,84px);padding-bottom:0;overflow:clip}
.lib-sw>.gft-container{position:relative;display:grid;gap:clamp(22px,2.8vw,34px)}
.lib-sw__head{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:24px clamp(32px,4.5vw,64px);align-items:end;padding-bottom:20px;border-bottom:1px solid #6bb68f40}
.lib-sw__head-copy .gft-eyebrow{color:#cfe0d6;margin-bottom:10px}
.lib-sw__head-copy h2{font-size:clamp(2.2rem,3.4vw,3.5rem);max-width:16ch;line-height:1.05}
.lib-sw__head-copy .gft-lede{font-size:clamp(1.02rem,1.2vw,1.15rem);color:#d9e6de;max-width:52ch;margin-top:12px}
.lib-sw__head-meta{display:grid;gap:10px;padding:16px 20px;background:#0a3b38;border:1px solid #6bb68f66;border-left:5px solid #e3a948}
.lib-sw__count{font:600 15px var(--gft-font-mono);color:#eef5f1;margin:0}
.lib-sw__count b{font:800 2rem var(--gft-font-display);color:#f0c46a;letter-spacing:-.04em;margin:0 4px;font-variant-numeric:tabular-nums}
.lib-sw__note{font:12.5px/1.6 var(--gft-font-mono);color:#d9e6de;max-width:58ch;margin:0}

.lib-sw__inst{display:grid;gap:22px}
/* Full-width 5-question picker bar */
.lib-sw__qbar{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}
.lib-sw__qbtn{display:grid;align-content:space-between;gap:8px;padding:14px 14px 16px;border:1.5px solid #6bb68f66;background:#0a3835;color:#eef5f1;font:inherit;text-align:left;cursor:pointer;transition:background-color 240ms,border-color 240ms,transform 240ms}
.lib-sw__qbtn:hover{background:#124d48;border-color:#8fc9a8;transform:translateY(-2px)}
.lib-sw__qbtn[aria-pressed=true]{background:#155952;border-color:#e3a948;box-shadow:inset 0 4px 0 #e3a948}
.lib-sw__qmeta{display:flex;flex-wrap:wrap;justify-content:space-between;gap:4px 8px;font:600 12px var(--gft-font-mono)}
.lib-sw__qmeta b{color:#f0c46a;text-transform:uppercase;letter-spacing:.04em}
.lib-sw__qmeta em{font-style:normal;color:#cfe0d6}
.lib-sw__qbtn strong{font-size:14.5px;line-height:1.35;font-weight:750;color:#fff}

/* 22-spine woven swatch rack */
.lib-sw__swatch{--sp-top:26px;--sp-h:174px;--y1:calc(var(--sp-top) + var(--sp-h) * .38);--y2:calc(var(--sp-top) + var(--sp-h) * .66);--sw:calc(100cqw / 27 * .68);position:relative;height:218px;container-type:inline-size}
.lib-sw__warp{list-style:none;margin:0;padding:0;position:absolute;inset:0;z-index:1}
.lib-sw__warp li{position:absolute;left:calc(var(--x) * 100cqw - var(--sw) / 2);width:var(--sw);top:var(--sp-top);height:var(--sp-h);transform-origin:50% 100%}
.lib-sw__sp{position:relative;display:block;width:100%;height:100%;padding:0;border:0;background:transparent;color:var(--gft-paper);cursor:pointer;transition:transform 360ms cubic-bezier(.2,.8,.2,1)}
.lib-sw__body{position:absolute;inset:0;background:linear-gradient(180deg,#14524d,#072d2b);border:1px solid #6bb68f99;border-bottom:0}
.lib-sw__body::after{content:'';position:absolute;inset:-1px;border:2px solid #f0c46a;opacity:0}
.lib-sw__sp--x .lib-sw__body{background:transparent;border:1px dashed #e3a948}
.lib-sw__o1,.lib-sw__o2{position:absolute;left:-4px;right:-4px;height:3px;opacity:0;transition:opacity 300ms}
.lib-sw__o1{top:38%;background:#c98a2b}
.lib-sw__o2{top:66%;background:#f0c46a;height:4px}
.lib-sw__warp li:nth-child(odd) .lib-sw__o1{opacity:1}
.lib-sw__sp[data-in] .lib-sw__o2,.lib-sw__sp[data-qseq] .lib-sw__o2{opacity:1}
.lib-sw__id{position:absolute;left:0;right:0;top:8px;display:flex;justify-content:center;font:600 12px var(--gft-font-mono);color:#e2ebe6;writing-mode:vertical-rl;transform:rotate(180deg)}
.lib-sw__sp:hover,.lib-sw__sp:focus-visible{transform:translateY(-12px)}
.lib-sw__sp[data-qseq]{transform:translateY(-10px)}
.lib-sw__sp[data-qseq] .lib-sw__body{border-color:#f0c46a;background:linear-gradient(180deg,#1e6b62,#0b3b38)}
.lib-sw__sp[aria-pressed=true]{transform:translateY(-24px)}
.lib-sw__sp[aria-pressed=true] .lib-sw__body{background:linear-gradient(180deg,#2a7d6f,#0e4d4a)}
.lib-sw__sp[aria-pressed=true] .lib-sw__body::after{opacity:.95}
:root[data-m-go] .lib-sw__swatch[data-m-on] .lib-sw__sp[aria-pressed=true] .lib-sw__body::after{animation-name:lib-sw-breathe;animation-duration:3.2s;animation-timing-function:ease-in-out;animation-iteration-count:infinite;animation-direction:alternate}
@keyframes lib-sw-breathe{from{opacity:.35}to{opacity:1}}
.lib-sw__weft{position:absolute;inset:0;z-index:0;pointer-events:none}
.lib-sw__p1{position:absolute;left:-14px;right:-24px;top:var(--y1);height:3px;background:#c98a2b}
.lib-sw__turn{position:absolute;left:-14px;width:14px;top:var(--y1);height:calc(var(--y2) - var(--y1) + 4px);border:3px solid #e3a948;border-right:0;border-radius:10px 0 0 10px}
.lib-sw__p2{position:absolute;left:-14px;right:-24px;top:var(--y2);height:4px;background:#f0c46a;overflow:clip}
.lib-sw__p2 u{position:absolute;left:0;top:0;width:10%;height:100%;background:linear-gradient(90deg,transparent,#fff7e0,transparent);text-decoration:none;overflow-anchor:none}
:root[data-m-go] .lib-sw__p2 u[data-m-on]{animation-name:lib-sweep;animation-duration:6s;animation-timing-function:linear;animation-iteration-count:infinite;animation-direction:normal}
.lib-sw__in{position:absolute;right:-24px;bottom:calc(100% - var(--y1));width:3px;height:4000px;background:#c98a2b}
.lib-sw__out{position:absolute;right:-24px;top:var(--y2);width:3px;height:4000px;background:#f0c46a}
.lib-sw__base{position:absolute;left:0;right:0;bottom:14px;height:4px;background:#6bb68f55;overflow:clip}
.lib-sw__base i{position:absolute;left:0;top:0;width:18%;height:100%;background:linear-gradient(90deg,transparent,#e3a948,transparent);overflow-anchor:none}
:root[data-m-go] .lib-sw__base i[data-m-live][data-m-on]{animation-name:lib-sweep;animation-duration:9s;animation-timing-function:linear;animation-iteration-count:infinite;animation-direction:normal}

/* Full-width 2-column reading-route console card */
.lib-door__card{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(0,.92fr);gap:clamp(24px,3.6vw,48px);padding:clamp(24px,2.8vw,36px);border:2px solid var(--gft-sage);border-top:5px solid #e3a948;background:#0a3b38;box-shadow:0 20px 44px -22px #031918}
.lib-door__info{display:grid;gap:12px;align-content:space-between;transition:opacity 150ms linear,transform 150ms linear}
.lib-door__info[data-swap]{opacity:0;transform:translateY(8px)}
.lib-door__info:not([data-swap]){transition:opacity 320ms ease-out,transform 320ms ease-out}
.lib-sw__chips{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:0}
.lib-sw__chip{display:inline-flex;align-items:center;min-height:28px;padding:2px 12px;background:#f0c46a;color:var(--gft-night);font:700 13px var(--gft-font-mono);letter-spacing:.08em}
.lib-sw__famchip{display:inline-flex;align-items:center;min-height:28px;padding:2px 10px;background:#072d2b;border:1px solid #6bb68f88;color:#eef5f1;font:600 12px var(--gft-font-mono);text-transform:uppercase;letter-spacing:.06em}
.lib-sw__chips .lib-kicker{color:#cfe0d6}
.lib-door__info h3{font-size:clamp(1.5rem,2.1vw,2.1rem);letter-spacing:-.045em;margin:0}
.lib-door__pick{justify-self:start;display:inline-block;padding:6px 14px;border:1px solid #6bb68f;background:#072d2b;font:italic 400 clamp(1.25rem,1.7vw,1.6rem)/1.3 var(--gft-font-serif);color:#bfe8cf;max-width:none;margin:0}
.lib-door__sub{font-size:16px;line-height:1.52;color:#eef5f1;max-width:56ch;margin:0;font-weight:600}
.lib-door__sum{font-size:14.5px;line-height:1.58;color:#d9e6de;max-width:56ch;margin:0}
.lib-door__card .lib-status{color:#cfe0d6}
.lib-door__card .lib-status::before{background:var(--gft-sage)}
.lib-door__actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px 24px;padding-top:6px}
.lib-door__card .gft-button{justify-self:start;min-width:250px}
.lib-door__back{color:#f0c46a!important;font-size:13.5px}

/* Resolved reading sequence column */
.lib-door__seq{display:grid;gap:12px;align-content:start;padding:18px 20px;background:#072d2b;border:1px solid #6bb68f55}
.lib-door__seq-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:6px 12px;padding-bottom:10px;border-bottom:1px solid #6bb68f40}
.lib-door__seq-head .lib-kicker{color:#f0c46a}
.lib-door__seq-head span{font:600 12px var(--gft-font-mono);color:#cfe0d6}
.lib-door__seq-list{list-style:none;margin:0;padding:0;display:grid;gap:8px;position:relative}
.lib-door__seq-list li{position:relative}
.lib-door__seq-list a{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 12px;align-items:center;padding:10px 14px;background:#0c3b38;border:1px solid #6bb68f44;border-left:4px solid #6bb68f;color:#eef5f1;text-decoration:none;transition:background-color 220ms,border-color 220ms}
.lib-door__seq-list li[data-active] a,.lib-door__seq-list a:hover{background:#14524d;border-color:#e3a948;border-left-color:#e3a948}
.lib-door__seq-id{grid-column:1/-1;display:flex;gap:10px;align-items:center;font:600 12px var(--gft-font-mono)}
.lib-door__seq-id b{color:#f0c46a}
.lib-door__seq-id em{font-style:normal;color:#cfe0d6}
.lib-door__seq-list strong{font-size:15px;font-weight:750;color:#fff}
.lib-door__seq-state{font:600 12px var(--gft-font-mono);color:#bfe8cf;white-space:nowrap}

/* Weft handover bridge into the footer */
.lib-sw__handover{position:relative;display:grid;justify-items:start;gap:8px;padding-top:14px;padding-bottom:28px;border-top:1px solid #6bb68f40}
.lib-sw__hband{position:relative;width:100%;height:4px;background:linear-gradient(90deg,#e3a948 0%,#f0c46a 65%,#6bb68f 100%)}
.lib-sw__hband i{position:absolute;left:28px;top:-5px;width:14px;height:14px;border-radius:50%;background:#f0c46a;box-shadow:0 0 0 4px #072d2b,0 0 12px #e3a948}
.lib-sw__hlabel{font:600 12.5px var(--gft-font-mono);color:#d9e6de;letter-spacing:.06em;text-transform:uppercase;margin:0;padding-left:52px}
.lib-sw__hlabel b{color:#f0c46a}
.lib-sw__hdrop{position:absolute;left:34px;top:18px;bottom:-40px;width:3px;background:#e3a948}

/* ================= tablet and phone ================= */
@media(max-width:1100px){
 .lib-ev__grid{grid-template-columns:1fr}
 .lib-ev__stage{position:relative;top:auto}
 .lib-tg__ctrl{grid-template-columns:1fr}
 .lib-sw__head,.lib-door__card{grid-template-columns:1fr}
 .lib-sw__qbar{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:800px){
 .lib-tg__head,.lib-pg__head{grid-template-columns:1fr}
 .lib-tg__readout{text-align:left}
 .lib-tg__fig{justify-items:start}
 .lib-pg__panels .lib-panel{grid-template-columns:1fr}
}
@media(max-width:640px){
 .lib-tg__field{--pitch:7px;--end:56%;height:calc(20 * var(--pitch) + 24px)}
 .lib-tg__mark{width:calc(var(--end) + 110px)}
 .lib-tg__mark em{font-size:12px}
 .lib-giant{font-size:28vw}
 .lib-tg__btns button{font-size:13px;padding:6px 8px}
 .lib-ev__stage{padding:16px}
 .lib-ev__pills{grid-template-columns:1fr}
 .lib-ev__stair{height:224px}
 .lib-ev__tread--rel{top:42px}
 .lib-ev__bundle i{top:56px;height:92px}
 .lib-ev__tread--draft{top:148px}
 .lib-ev__tread--out{top:192px}
 .lib-ev__riser{top:42px;height:150px}
 .lib-ev__bundle i b{display:none}
 .lib-ev__lab{flex-direction:row;flex-wrap:wrap;gap:2px 8px;left:18px;right:10px;line-height:1.2}
 .lib-ev__lab--rel{top:6px}
 .lib-ev__lab--draft{top:156px}
 .lib-ev__lab--out{top:198px}
 .lib-panel svg text{display:none}
 .lib-pg__yarn{top:auto;bottom:auto;left:-20px;width:40px;height:100%}
 .lib-pg__yarn svg{display:none}
 .lib-pg__yarn::before{content:'';position:absolute;left:18px;top:0;bottom:0;width:4px;background:linear-gradient(90deg,#6bb68f 0 33%,#e2ebe6 33% 66%,#e3a948 66%)}
 .lib-pg__flow{display:none}
 .lib-pg__nodes{grid-template-columns:1fr;padding-top:8px;gap:8px}
 .lib-pg__nodes button{grid-template-columns:52px minmax(0,1fr);justify-items:start;text-align:left;align-items:center;column-gap:14px;padding:4px 0}
 .lib-pg__nodes button .lib-kicker{grid-column:2}
 .lib-pg__nodes button strong{grid-column:2;font-size:1.15rem}
 .lib-pg__dot{grid-row:1/3;width:52px;height:52px;font-size:20px}
 .lib-pg__drop{display:none}
 .lib-pg__panels{margin-inline:-20px;padding:20px}
 .lib-pg__svg{max-height:160px}
 .lib-pg__run,.lib-sw__in,.lib-sw__out{right:-12px}
 .lib-sw__qbar{grid-template-columns:1fr}
 .lib-sw__swatch{height:auto;margin-top:0}
 .lib-sw__warp{position:relative;display:grid;grid-template-columns:repeat(11,minmax(0,1fr));gap:22px 2px;padding-top:24px;background:linear-gradient(#f0c46a,#f0c46a) 0 calc(24px + 64px * .66)/100% 3px no-repeat,linear-gradient(#f0c46a,#f0c46a) 0 calc(24px + 64px + 22px + 64px * .66)/100% 3px no-repeat}
 .lib-sw__warp li{position:relative;left:auto;top:auto;width:auto;height:64px}
 .lib-sw__id{font-size:12px;top:4px}
 .lib-sw__o1,.lib-sw__weft{display:none}
 .lib-sw__base{position:relative;bottom:auto;margin-top:12px}
 .lib-door__card{padding:18px}
 .lib-door__card .gft-button{min-width:0;width:100%}
 .lib-door__info{min-height:0}
}
