/* Today's Cure · home "Begin with Mind Cures" 3D bookshelf (tcshelf1 2026-11-01; tcshelf2 hover pop-out; tcshelf3 2026-11-02 real-book look).
   Mind Cures, Body Cures, Soul Cures stand free in a row. Only Mind Cures opens. Pure CSS 3D + /assets/js/shelf.js, no libraries.
   tcshelf3: hardcover boards with squares over a cream page block, rounded spine (5 facets, one continuous print + light),
   concave fore edge, headbands, cloth/paper grain (tiny inline PNGs), contact shadow + ambient occlusion, slight natural lean.
   GENERATED: edit tools/shelf3/shelf.src.css, then python3 tools/shelf3/gen_geom.py. Own section below the June 1 feature panel.
   Without JS (or if shelf.js fails) the whole section stays hidden. */
.tcs{display:none;--W:200px;--H:300px;--D:64px;--b:calc(var(--D)*0.04);--s:calc(var(--D)*0.055);--P:calc(var(--D) - 2*var(--b) - 1.5px);--ease:cubic-bezier(.22,.8,.24,1);--t:.95s;--edge:#e6dac3;--tx-cloth:url(data:image/png;base64,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);--tx-pages:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAACCAIAAAAcv48iAAAA/ElEQVR42u2QzU5CURCD25k5mKAIgkYT3/+lXLlRIiBykZh4z/y4wFdw57ds0qYtj5snElWIcJKqBiAzKmv//nZ3/1hVp89hdr3Ybl6Wq/s+flubiAjAzIhwUgBUJkXM7OvrNJ3O3EcRRVUBqgYUKSQjXETdu4gCiOiqdhz2i5vbcw4A915VrU122/XN8u5cqffRvbc2MWsRfjx+XF7ORFRVM1PVqhJAZmVGVYlIRKiImgF07wAIUqhq4V4oVSN/Laq2fn1erR7OuogOh93VbK7agOp9jIjWWmsX57v6+B0ZqmbWSJAyHN7niyXAqgx3USWFRFWR8rvtn7/mBw+pk71ac4IaAAAAAElFTkSuQmCC);--tx-grain:url(data:image/png;base64,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);margin-top:1rem}
.tcs-ready .tcs{display:block}
.tcs-sec:not(.tcs-ready){display:none}
.tcs-sec .tcs{margin-top:0}
.tcs-panel .btns{display:flex;flex-wrap:wrap;gap:.6rem;margin:1.1rem 0 .6rem}
.tcs-panel .btn{padding:.85rem 1.1rem}
.tcs-panel .more{font-family:var(--caps);font-size:.8rem;letter-spacing:.16em;text-transform:uppercase;color:var(--gold-text)}
/* row of books, free-standing */
.tcs-scene{position:relative;height:calc(var(--H) + 200px);perspective:1500px;perspective-origin:50% 25%;margin-top:1rem;-webkit-tap-highlight-color:transparent;touch-action:manipulation}
.tcs-world{position:absolute;left:50%;top:46%;transform-style:preserve-3d;transform:rotateX(-6deg) rotateY(var(--ry,0deg));transition:transform .6s var(--ease)}
.tcs-row{transform-style:preserve-3d}
.tcs-floor{position:absolute;left:50%;top:50%;width:calc(var(--D)*3 + 260px);height:120px;margin:-60px 0 0 calc((var(--D)*3 + 260px)/-2);transform:translateY(calc(var(--H)/2 + 4px)) rotateX(90deg);background:radial-gradient(closest-side,rgba(60,45,25,.13),rgba(60,45,25,.05) 60%,rgba(60,45,25,0));pointer-events:none}
.tcs-book{position:absolute;left:0;top:0;transform-style:preserve-3d;transition:transform var(--t) var(--ease);outline:none}
.tcs-book.tcs-live{cursor:pointer}
.tcs-book .tcs-f{position:absolute;left:0;top:0;backface-visibility:hidden;-webkit-backface-visibility:hidden}
.tcs-book *{transform-style:preserve-3d}
/* spine: an invisible hit/focus plane at the joint line; the visible spine is 7 facets on an arc, each showing its slice of one print */
.tcs-spine{width:var(--D);height:var(--H);margin:calc(var(--H)/-2) 0 0 calc(var(--D)/-2);transform:translateZ(calc(var(--W)/2))}
.tcs-sf{position:absolute;left:50%;top:0;height:100%;overflow:hidden;backface-visibility:hidden;-webkit-backface-visibility:hidden;transform-style:flat}
.tcs-sf *{transform-style:flat}
.tcs-sa{position:absolute;top:0;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:calc(var(--H)*.085) 0;color:var(--ink);
  background:var(--tx-cloth) 0 0/22px 22px,linear-gradient(180deg,var(--acc) 0 calc(var(--H)*.045),rgba(0,0,0,.16) calc(var(--H)*.045),transparent calc(var(--H)*.05) calc(100% - var(--H)*.05),rgba(0,0,0,.14) calc(100% - var(--H)*.045),var(--acc) calc(100% - var(--H)*.045)),var(--cream)}
.tcs-sa::before{content:"";position:absolute;inset:calc(var(--H)*.06) calc(var(--D)*.125);border:1px solid var(--acc);opacity:.55;pointer-events:none}
.tcs-sl{position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(90deg,rgba(40,26,8,.30) 0,rgba(40,26,8,.10) 9%,rgba(255,250,236,.30) 30%,rgba(255,250,236,.08) 46%,rgba(40,26,8,0) 58%,rgba(40,26,8,.12) 80%,rgba(40,26,8,.34) 100%),
             linear-gradient(180deg,rgba(255,255,255,.10),rgba(255,255,255,0) 22%,rgba(30,20,8,0) 82%,rgba(30,20,8,.20) 97%,rgba(30,20,8,.32))}
.tcs-sp-sun{flex:none;width:calc(var(--D)*.34);height:calc(var(--D)*.17);border-radius:999px 999px 0 0;background:var(--acc);background:linear-gradient(160deg,color-mix(in srgb,var(--acc) 62%,#fff),var(--acc) 55%,color-mix(in srgb,var(--acc) 82%,#000))}
.tcs-sp-title{writing-mode:vertical-rl;font:500 min(calc(var(--D)*.33),calc(var(--H)*.068))/1 var(--serif-display);letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;text-shadow:0 .5px 0 rgba(255,255,255,.55),0 -.5px 0 rgba(0,0,0,.08)}
.tcs-sp-dia{flex:none;width:7px;height:7px;background:var(--acc);transform:rotate(45deg)}
.tcs-sp-author{writing-mode:vertical-rl;font:600 calc(var(--H)*.03)/1 var(--caps);letter-spacing:.14em;text-transform:uppercase;white-space:nowrap}
/* spine caps (top/bottom of the rounded back): hollow + cloth rim */
.tcs-cap{position:absolute;left:0;top:0;background:radial-gradient(ellipse 50% 100% at 50% 0,rgba(52,36,16,.72) 0 55%,color-mix(in srgb,var(--acc) 70%,#000) 72%,var(--acc) 86%)}
/* headbands: striped silk roll where the page block meets the spine */
.tcs-hb{width:var(--P);height:calc(var(--D)*.075);margin:calc(var(--D)*-.0375) 0 0 calc(var(--P)/-2);
  background:linear-gradient(180deg,rgba(0,0,0,.30),rgba(0,0,0,0) 35%,rgba(255,255,255,.28) 55%,rgba(0,0,0,.28)),repeating-linear-gradient(90deg,var(--acc) 0 1.3px,#f1e7d2 1.3px 2.6px)}
.tcs-hb-t{transform:translate3d(0,calc(var(--H)/-2 + var(--s) - .6px),calc(var(--W)/2 - var(--D)*.0375)) rotateX(90deg)}
/* page block: inset by the squares on top, bottom and fore edge; fine irregular page lines */
.tcs-pt,.tcs-pb{width:var(--P);height:calc(var(--W) - var(--s));margin:calc((var(--W) - var(--s))/-2) 0 0 calc(var(--P)/-2);
  background:linear-gradient(90deg,rgba(60,40,15,.22),rgba(60,40,15,.04) 14%,rgba(255,255,255,.10) 50%,rgba(60,40,15,.04) 86%,rgba(60,40,15,.22)),
             linear-gradient(180deg,rgba(255,255,255,.12),rgba(255,255,255,0) 30%,rgba(60,40,15,0) 85%,rgba(60,40,15,.22)),var(--tx-pages) 0 0/84px 100%,#efe5d1}
.tcs-pt{transform:translate3d(0,calc(var(--H)/-2 + var(--s)),calc(var(--s)/2)) rotateX(90deg)}
.tcs-pb{transform:translate3d(0,calc(var(--H)/2 - var(--s)),calc(var(--s)/2)) rotateX(-90deg)}
.tcs-ff{width:var(--P);height:calc(var(--H) - 2*var(--s));margin:calc(var(--H)/-2 + var(--s)) 0 0 calc(var(--P)/-2);transform:translateZ(calc(var(--W)/-2 + var(--s))) rotateY(180deg);
  background:linear-gradient(90deg,rgba(60,40,15,.14),rgba(60,40,15,.02) 30% 70%,rgba(60,40,15,.14)),linear-gradient(180deg,rgba(60,40,15,.25),rgba(60,40,15,0) 6%,rgba(60,40,15,0) 94%,rgba(60,40,15,.25)),var(--tx-pages) 0 0/84px 100%,#efe5d1}
/* Body/Soul: one top face = back board edge | pages | front board edge, with the headband at the spine end */
.tcs-topm{width:var(--D);height:var(--W);margin:calc(var(--W)/-2) 0 0 calc(var(--D)/-2);transform:translateY(calc(var(--H)/-2 + .4px)) rotateX(90deg);
  background:linear-gradient(90deg,#d9ccb2 0,var(--edge) calc(var(--b)*.5),#d4c6aa var(--b),rgba(60,40,15,.28) var(--b),rgba(60,40,15,.05) calc(var(--b) + 14%),rgba(255,255,255,.1) 50%,rgba(60,40,15,.05) calc(86% - var(--b)),rgba(60,40,15,.28) calc(100% - var(--b)),#d4c6aa calc(100% - var(--b)),var(--edge) calc(100% - var(--b)*.5),#d9ccb2 100%),
    linear-gradient(180deg,rgba(0,0,0,.28),rgba(0,0,0,0) 35%,rgba(255,255,255,.28) 55%,rgba(0,0,0,.28)) 0 100%/100% calc(var(--D)*.075) no-repeat,
    repeating-linear-gradient(90deg,var(--acc) 0 1.3px,#f1e7d2 1.3px 2.6px) 0 100%/100% calc(var(--D)*.075) no-repeat,
    linear-gradient(180deg,rgba(60,40,15,.12),rgba(60,40,15,0) 8%),var(--tx-pages) 0 0/84px 100%,#efe5d1}
.tcs-frontc{width:var(--W);height:var(--H);margin:calc(var(--H)/-2) 0 0 calc(var(--W)/-2);transform:rotateY(90deg) translateZ(calc(var(--D)/2))}
/* boards: thin edges (board thickness --b); the back board edges are fixed, the front board edges ride on the opening leaf */
.tcs-bb,.tcs-be{background:linear-gradient(90deg,rgba(0,0,0,.10),rgba(255,255,255,.18) 50%,rgba(0,0,0,.16)),var(--tx-grain) 0 0/48px 48px,var(--edge)}
.tcs-bb-t,.tcs-bb-b{width:var(--b);height:var(--W);margin:calc(var(--W)/-2) 0 0 calc(var(--b)/-2)}
.tcs-bb-t{transform:translate3d(calc(var(--D)/-2 + var(--b)/2),calc(var(--H)/-2),0) rotateX(90deg)}
.tcs-bb-b{transform:translate3d(calc(var(--D)/-2 + var(--b)/2),calc(var(--H)/2),0) rotateX(-90deg)}
.tcs-bb-f{width:var(--b);height:var(--H);margin:calc(var(--H)/-2) 0 0 calc(var(--b)/-2);transform:translate3d(calc(var(--D)/-2 + var(--b)/2),0,calc(var(--W)/-2)) rotateY(180deg)}
.tcs-bi{width:var(--W);height:var(--H);margin:calc(var(--H)/-2) 0 0 calc(var(--W)/-2);transform:rotateY(90deg) translateZ(calc(var(--D)/-2 + var(--b)));background:linear-gradient(270deg,rgba(60,40,15,.18),rgba(60,40,15,0) 12%),#efe5d2}
.tcs-be{position:absolute}
.tcs-be-t,.tcs-be-b{left:0;width:100%;height:var(--b);transform-origin:50% 0;transform:rotateX(-90deg)}
.tcs-be-t{top:0}.tcs-be-b{top:100%}
.tcs-be-f{left:100%;top:0;width:var(--b);height:100%;transform-origin:0 50%;transform:rotateY(90deg)}
/* covers. Faces with their own content are transform-style:flat: as preserve-3d, Chrome left parts of the open title page unpainted. */
.tcs-backc{width:var(--W);height:var(--H);margin:calc(var(--H)/-2) 0 0 calc(var(--W)/-2);transform:rotateY(-90deg) translateZ(calc(var(--D)/2));background:var(--cream) center/100% 100%;border-radius:3px 0 0 3px;transform-style:flat}
.tcs-hinge{position:absolute;left:0;top:0;width:var(--W);height:var(--H);margin:calc(var(--H)/-2) 0 0 calc(var(--W)/-2);transform:rotateY(90deg) translateZ(calc(var(--D)/2))}
.tcs-leaf{position:absolute;inset:0;transform-origin:0 50%;transition:transform calc(var(--t)*1.25) cubic-bezier(.3,.7,.2,1)}
.tcs-leaf .tcs-fc,.tcs-leaf .tcs-ic{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden}
.tcs-fc{background:var(--cream) center/100% 100%;border-radius:0 3px 3px 0;transform-style:flat}
.tcs-fc *,.tcs-backc *,.tcs-title-pg *{transform-style:flat}
/* paper grain + hinge groove (french joint) + soft edge falloff on every cover */
.tcs-gl{position:absolute;inset:0;pointer-events:none;border-radius:inherit;
  background:linear-gradient(90deg,rgba(60,40,15,.20) 0,rgba(60,40,15,.05) 2.4%,rgba(255,252,240,.30) 4%,rgba(60,40,15,.22) 5.3%,rgba(60,40,15,.06) 6.6%,rgba(60,40,15,0) 9%,rgba(60,40,15,0) 93%,rgba(60,40,15,.10) 99%,rgba(60,40,15,.18)),
             linear-gradient(180deg,rgba(60,40,15,.08),rgba(60,40,15,0) 4%,rgba(60,40,15,0) 95%,rgba(60,40,15,.12)),var(--tx-grain) 0 0/48px 48px}
.tcs-backc .tcs-gl{transform:scaleX(-1)}
.tcs-ic{left:2px!important;transform:translateZ(calc(-1*var(--b))) rotateY(180deg);background:linear-gradient(90deg,rgba(60,40,15,.16),rgba(60,40,15,0) 10%),linear-gradient(90deg,#efe5d2,#F6EFE2 30%)}
.tcs-title-pg{position:absolute;inset:var(--s) var(--s) var(--s) 2px;transform:translateZ(calc(-1*var(--b) - .5px));background:linear-gradient(90deg,rgba(60,40,15,.22),rgba(60,40,15,.06) 5%,rgba(60,40,15,0) 14%),linear-gradient(180deg,rgba(60,40,15,.05),rgba(60,40,15,0) 6% 94%,rgba(60,40,15,.06)),#FBF8F1;transform-style:flat;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.4rem;text-align:center;font-family:var(--caps);letter-spacing:.2em;color:var(--ink);backface-visibility:hidden}
.tcs-title-pg b{font-weight:500;font-size:calc(var(--W)*.09)}.tcs-title-pg i{font:italic calc(var(--W)*.06) var(--serif);letter-spacing:0;color:var(--muted)}
/* designed covers (Body Cures, Soul Cures): same family as the Mind Cures cover */
.tcs-gen{background:var(--cream);color:var(--ink);display:flex;flex-direction:column;align-items:center;text-align:center;padding-top:calc(var(--H)*.13)}
.tcs-gen::before,.tcs-gen::after{content:"";position:absolute;border:1px solid var(--acc);pointer-events:none}
.tcs-gen::before{inset:calc(var(--W)*.04)}.tcs-gen::after{inset:calc(var(--W)*.055);opacity:.6}
.tcs-gen .tcs-t{font:500 calc(var(--W)*.2)/.98 var(--serif-display);letter-spacing:.01em;text-transform:uppercase}
.tcs-gen .tcs-r{display:flex;align-items:center;gap:6px;margin:calc(var(--H)*.035) 0;color:var(--acc)}
.tcs-gen .tcs-r::before,.tcs-gen .tcs-r::after{content:"";width:calc(var(--W)*.2);height:1px;background:currentColor}
.tcs-gen .tcs-r i{width:5px;height:5px;background:currentColor;transform:rotate(45deg)}
.tcs-gen .tcs-hz{position:relative;width:78%;height:1px;background:linear-gradient(90deg,transparent,var(--acc) 20% 80%,transparent);margin-top:calc(var(--H)*.16)}
.tcs-gen .tcs-hz::before{content:"";position:absolute;left:50%;bottom:0;width:calc(var(--W)*.13);height:calc(var(--W)*.065);margin-left:calc(var(--W)*-.065);border-radius:999px 999px 0 0;background:var(--acc)}
.tcs-gen .tcs-hz::after{content:"";position:absolute;left:50%;bottom:0;width:calc(var(--W)*.19);height:calc(var(--W)*.095);margin-left:calc(var(--W)*-.095);border-radius:999px 999px 0 0;border:1px solid var(--acc);border-bottom:0;opacity:.7}
.tcs-gen .tcs-a{position:absolute;left:0;right:0;bottom:calc(var(--H)*.08);font:500 calc(var(--W)*.065)/1 var(--caps);letter-spacing:.2em;text-transform:uppercase}
.tcs-gen.tcs-back-gen{padding:0}
.tcs-book.tcs-mind{--acc:#B8893B}.tcs-book.tcs-body{--acc:#8C6A4F}.tcs-book.tcs-soul{--acc:#6E6A86}
/* contact shadow (tight, dark, hugs the footprint) + ambient occlusion (wide, soft), on the floor plane */
.tcs-book .tcs-shadow{position:absolute;width:calc(var(--W) + 90px);height:calc(var(--D) + 80px);margin:calc((var(--D) + 80px)/-2) 0 0 calc((var(--W) + 90px)/-2);
  transform:translateY(calc(var(--H)/2 + 1px + var(--lift,0px))) rotateX(90deg) rotateZ(90deg);
  background:radial-gradient(farthest-side at 0 50%,rgba(24,15,5,.55),rgba(24,15,5,.22) 45%,rgba(24,15,5,0)) calc((var(--W) + 90px)/2 + var(--W)/2 + var(--D)*.12 - 2px) 50%/22px calc(var(--D) + 6px) no-repeat,
             radial-gradient(closest-side,rgba(24,15,5,.62) 0 72%,rgba(24,15,5,.30) 86%,rgba(24,15,5,0)) 50% 50%/calc(var(--W) + var(--D)*.45) calc(var(--D) + 9px) no-repeat,
             radial-gradient(closest-side,rgba(28,18,6,.30),rgba(28,18,6,.12) 55%,rgba(28,18,6,0)) 50% 50%/calc(var(--W) + 40px) calc(var(--D) + 34px) no-repeat,
             radial-gradient(closest-side,rgba(40,28,12,.16),rgba(40,28,12,.06) 55%,rgba(40,28,12,0)) 50% 50%/100% 100% no-repeat;
  transition:opacity .5s,transform var(--t) var(--ease)}
.tcs-book.tcs-pulled .tcs-shadow{opacity:.45}
.tcs-book.tcs-live:focus-visible .tcs-spine{outline:2px solid var(--gold-text);outline-offset:3px}
/* tcshelf2: Mind Cures pops out on mouse hover / keyboard focus (JS adds .tcs-pop + inline lift and cursor tilt).
   Body Cures and Soul Cures never get .tcs-pop. Touch devices never get it (mouse pointer events only). */
.tcs-tilt{position:absolute;left:0;top:0;transform-style:preserve-3d;transition:transform .7s cubic-bezier(.34,1.45,.64,1)}
.tcs-lean{position:absolute;left:0;top:0;transition:transform var(--t) var(--ease)}
.tcs-book.tcs-pop{transition:transform .7s cubic-bezier(.34,1.4,.64,1)}
.tcs-book.tcs-pop .tcs-tilt{transition:transform .32s cubic-bezier(.22,.9,.3,1.1)}
.tcs-book.tcs-pop .tcs-shadow{transform:translateY(calc(var(--H)/2 + 1px + var(--lift,0px))) rotateX(90deg) rotateZ(90deg) scale(1.6,1.45);opacity:.24;transition:opacity .5s,transform .7s cubic-bezier(.34,1.4,.64,1)}
.tcs-mind .tcs-spine{transition:box-shadow .5s ease}
.tcs-mind.tcs-pop .tcs-spine{box-shadow:0 0 0 1px rgba(184,137,59,.25),0 0 38px 6px rgba(214,170,90,.45)}
.tcs-mind .tcs-sa::after,.tcs-mind .tcs-leaf .tcs-fc::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:linear-gradient(105deg,transparent 35%,rgba(255,250,235,.0) 40%,rgba(255,250,235,.5) 50%,rgba(255,250,235,0) 60%,transparent 65%) no-repeat;background-size:300% 100%;background-position:100% 0;opacity:0;transition:opacity .4s ease,background-position 0s .4s}
.tcs-mind.tcs-pop .tcs-sa::after,.tcs-mind.tcs-pop .tcs-leaf .tcs-fc::after{opacity:1;background-position:0 0;transition:opacity .25s ease,background-position 1.1s cubic-bezier(.3,.6,.3,1) .08s}
.tcs-book.tcs-open .tcs-leaf{transform:rotateY(-162deg)}
.tcs-book:not(.tcs-mind){transition:transform var(--t) var(--ease),visibility 0s linear .3s}
.tcs-scene.tcs-is-open .tcs-book:not(.tcs-mind){visibility:hidden;transition:transform var(--t) var(--ease),visibility 0s}
.tcs-scene.tcs-is-open~.tcs-caption{visibility:hidden}
.tcs-caption{text-align:center;min-height:4.2rem;margin-top:-1rem;transition:opacity .4s}
.tcs-caption .tcs-ct{font:500 var(--step-1)/1.2 var(--serif-display);margin:0}
.tcs-caption .tcs-cs{font:italic var(--step--1)/1.4 var(--serif);color:var(--muted);margin:.2rem 0 0}
.tcs-caption .tcs-soon{font:600 .7rem/1 var(--caps);letter-spacing:.2em;text-transform:uppercase;color:var(--muted);opacity:.75}
/* panel */
.tcs-panel{position:absolute;z-index:5;left:calc(50% + var(--W)*.42);top:46%;width:min(400px,40vw);transform-origin:0 50%;transform:translateY(-50%) perspective(1200px) rotateY(-88deg);opacity:0;pointer-events:none;transition:transform calc(var(--t)*1.1) var(--ease) .25s,opacity .5s ease .25s;background:var(--paper);border:1px solid var(--line);padding:1.6rem 1.6rem 1.4rem;box-shadow:0 30px 60px -30px rgba(17,17,17,.35)}
.tcs-scene.tcs-is-open .tcs-panel{transform:translateY(-50%) perspective(1200px) rotateY(0);opacity:1;pointer-events:auto}
.tcs-panel h3{font-size:var(--step-3);margin:0 0 .2em}
.tcs-panel .tcs-line{font-style:italic;color:var(--muted);margin-bottom:.6rem}
.tcs-close{position:absolute;top:.6rem;right:.6rem;width:40px;height:40px;border:1px solid var(--line);background:var(--paper);font:400 22px/1 var(--serif);cursor:pointer;color:var(--ink)}
.tcs-close:hover{border-color:var(--ink)}
.tcs-hint{margin-top:.5rem;font-style:italic;color:var(--muted);text-align:center;font-size:var(--step--1)}
@media (max-width:760px){
 .tcs{--W:150px;--H:225px;--D:50px}
 .tcs-scene{height:calc(var(--H) + 170px)}
 .tcs-scene.tcs-is-open{height:auto;padding-top:calc(var(--H) + 110px)}
 .tcs-scene.tcs-is-open .tcs-world{top:calc(var(--H)/2 + 60px)}
 .tcs-panel{position:relative;left:auto;top:auto;width:auto;margin:0 1rem;transform-origin:50% 0;transform:perspective(1000px) rotateX(-80deg);display:none}
 .tcs-scene.tcs-is-open .tcs-panel{display:block;transform:perspective(1000px) rotateX(0);animation:unfold calc(var(--t)*1.1) var(--ease) .2s both}
 @keyframes unfold{from{transform:perspective(1000px) rotateX(-80deg);opacity:0}to{transform:perspective(1000px) rotateX(0);opacity:1}}
}
@media (prefers-reduced-motion:reduce){.tcs{--t:0s}.tcs-world,.tcs-leaf{transition:none}.tcs-book.tcs-pop,.tcs-tilt,.tcs-lean,.tcs-book.tcs-pop .tcs-tilt,.tcs-book .tcs-shadow,.tcs-book.tcs-pop .tcs-shadow{transition:none}.tcs-mind .tcs-sa::after,.tcs-mind .tcs-leaf .tcs-fc::after{display:none}.tcs-panel,.tcs-scene.tcs-is-open .tcs-panel{transition:none;animation:none}}
/* shelf intro: no orphaned last word (Kemal, Nov 1) */
.tcs-sec .section-head .lede{text-wrap:balance}
/* ---- generated geometry (gen_geom.py) ---- */
.tcs-sf{width:calc(var(--D)*0.2099 + 1px);margin-left:calc(var(--D)*-0.1049 - .5px)}
.tcs-sa{width:calc(var(--D)*1.0515)}
.tcs-sf:nth-child(1){transform:translateZ(calc(var(--D)*-0.8229)) rotateY(-25.028deg) translateZ(calc(var(--D)*0.9571))}.tcs-sf:nth-child(1) .tcs-sa{left:calc(var(--D)*0.0000 + .5px)}
.tcs-sf:nth-child(2){transform:translateZ(calc(var(--D)*-0.8229)) rotateY(-12.514deg) translateZ(calc(var(--D)*0.9571))}.tcs-sf:nth-child(2) .tcs-sa{left:calc(var(--D)*-0.2103 + .5px)}
.tcs-sf:nth-child(3){transform:translateZ(calc(var(--D)*-0.8229)) rotateY(0.000deg) translateZ(calc(var(--D)*0.9571))}.tcs-sf:nth-child(3) .tcs-sa{left:calc(var(--D)*-0.4206 + .5px)}
.tcs-sf:nth-child(4){transform:translateZ(calc(var(--D)*-0.8229)) rotateY(12.514deg) translateZ(calc(var(--D)*0.9571))}.tcs-sf:nth-child(4) .tcs-sa{left:calc(var(--D)*-0.6309 + .5px)}
.tcs-sf:nth-child(5){transform:translateZ(calc(var(--D)*-0.8229)) rotateY(25.028deg) translateZ(calc(var(--D)*0.9571))}.tcs-sf:nth-child(5) .tcs-sa{left:calc(var(--D)*-0.8412 + .5px)}
.tcs-cap{width:var(--D);height:calc(var(--D)*0.1400);margin:calc(var(--D)*-0.0700) 0 0 calc(var(--D)/-2)}
.tcs-cap-t{clip-path:polygon(0.00% 0,100.00% 0,100.00% calc(var(--D)*0.0000),91.67% calc(var(--D)*0.0452),83.33% calc(var(--D)*0.0805),75.00% calc(var(--D)*0.1070),66.67% calc(var(--D)*0.1255),58.33% calc(var(--D)*0.1364),50.00% calc(var(--D)*0.1400),41.67% calc(var(--D)*0.1364),33.33% calc(var(--D)*0.1255),25.00% calc(var(--D)*0.1070),16.67% calc(var(--D)*0.0805),8.33% calc(var(--D)*0.0452),0.00% calc(var(--D)*0.0000));transform:translate3d(0,calc(var(--H)/-2),calc(var(--W)/2 + calc(var(--D)*0.0700))) rotateX(90deg)}
.tcs-cap-b{clip-path:polygon(0.00% 100%,100.00% 100%,100.00% calc(100% - var(--D)*0.0000),91.67% calc(100% - var(--D)*0.0452),83.33% calc(100% - var(--D)*0.0805),75.00% calc(100% - var(--D)*0.1070),66.67% calc(100% - var(--D)*0.1255),58.33% calc(100% - var(--D)*0.1364),50.00% calc(100% - var(--D)*0.1400),41.67% calc(100% - var(--D)*0.1364),33.33% calc(100% - var(--D)*0.1255),25.00% calc(100% - var(--D)*0.1070),16.67% calc(100% - var(--D)*0.0805),8.33% calc(100% - var(--D)*0.0452),0.00% calc(100% - var(--D)*0.0000));transform:translate3d(0,calc(var(--H)/2),calc(var(--W)/2 + calc(var(--D)*0.0700))) rotateX(-90deg)}
.tcs-pt{clip-path:polygon(0.00% calc(var(--D)*0.0000),8.33% calc(var(--D)*0.0233),16.67% calc(var(--D)*0.0422),25.00% calc(var(--D)*0.0566),33.33% calc(var(--D)*0.0669),41.67% calc(var(--D)*0.0730),50.00% calc(var(--D)*0.0750),58.33% calc(var(--D)*0.0730),66.67% calc(var(--D)*0.0669),75.00% calc(var(--D)*0.0566),83.33% calc(var(--D)*0.0422),91.67% calc(var(--D)*0.0233),100.00% calc(var(--D)*0.0000),100% 100%,0 100%)}
.tcs-pb{clip-path:polygon(0 0,100% 0,100.00% calc(100% - var(--D)*0.0000),91.67% calc(100% - var(--D)*0.0233),83.33% calc(100% - var(--D)*0.0422),75.00% calc(100% - var(--D)*0.0566),66.67% calc(100% - var(--D)*0.0669),58.33% calc(100% - var(--D)*0.0730),50.00% calc(100% - var(--D)*0.0750),41.67% calc(100% - var(--D)*0.0730),33.33% calc(100% - var(--D)*0.0669),25.00% calc(100% - var(--D)*0.0566),16.67% calc(100% - var(--D)*0.0422),8.33% calc(100% - var(--D)*0.0233),0.00% calc(100% - var(--D)*0.0000))}
