.tb-catalog,.tb-reader-shell{font-family:Manrope,system-ui,sans-serif}
.tb-catalog{padding-bottom:56px}.tb-banner{background:linear-gradient(130deg,#eaf5f7,#eaf0ff);border:1px solid #d5e5ef;border-radius:23px;padding:28px;display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:24px}.tb-banner h2{font-size:clamp(23px,3vw,34px);margin:7px 0}.tb-banner p{margin:0;line-height:1.65;color:#36566a}.tb-banner-icon{font-size:68px;line-height:1;color:#147d85}.tb-filter{display:flex;gap:14px;flex-wrap:wrap;margin:20px 0}.tb-filter label{font-size:13px;font-weight:750;color:#344e65;min-width:200px}.tb-filter select,.tb-pager select{display:block;min-width:150px;width:100%;margin-top:5px;padding:10px 12px;border-radius:10px;border:1px solid #b9cdd8;background:white;color:#223a51;font:inherit}.tb-state-notice{background:#edf6f8;color:#345668;border-left:4px solid #29828a;padding:13px 16px;border-radius:8px;font-size:13px;margin:12px 0 22px;line-height:1.55}.tb-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:22px}.tb-card{overflow:hidden;border:1px solid #d8e5ec;background:white;border-radius:17px;box-shadow:0 10px 24px rgba(29,61,80,.07)}.tb-mini-cover{background:var(--tb-color);height:240px;color:white;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:20px;text-align:center;position:relative;gap:11px}.tb-mini-cover:before{content:'';position:absolute;width:200px;height:200px;border:1px solid rgba(255,255,255,.18);border-radius:50%;top:-63px;right:-73px}.tb-mini-cover>span:first-child{font-size:10px;font-weight:800;letter-spacing:1px}.tb-mini-glyph{font-size:58px;line-height:1;opacity:.89}.tb-mini-cover strong{font-size:21px;line-height:1.2}.tb-mini-cover small{font-size:13px;opacity:.92}.tb-card-content{padding:16px}.tb-card-content h3{font-size:16px;margin:0 0 7px}.tb-card-content p{font-size:12px;line-height:1.55;color:#5a7083}.tb-card-content p.tb-warning{color:#994b1c;font-weight:700}.tb-card-buttons{display:flex;flex-wrap:wrap;gap:8px;margin-top:15px}.tb-reader-shell{max-width:1080px;padding-bottom:50px}.tb-reader-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:13px 0}.tb-reader-toolbar>div{text-align:center;display:flex;flex-direction:column;font-size:12px;color:#5d7185}.tb-reader-toolbar>div strong{font-size:13px;color:#233851}.tb-book-frame{background:#dbe7ed;padding:30px;box-shadow:inset 0 1px 12px rgba(31,57,77,.09);border-radius:24px;perspective:1800px;min-height:640px;display:grid;place-items:center}.tb-page{width:min(100%,660px);min-height:560px;box-shadow:12px 14px 20px rgba(24,49,70,.13),inset -8px 0 15px rgba(20,43,66,.04);padding:clamp(22px,4vw,45px);border-radius:5px 14px 14px 5px;position:relative;overflow-wrap:anywhere}.tb-paper{background:#fffdf8;color:#294057;font-size:14px;line-height:1.75}.tb-paper h2{font-size:clamp(22px,3vw,29px);line-height:1.25;margin:12px 0 24px;color:#20384b}.tb-paper h3{font-size:15px;letter-spacing:.2px;color:#177f87;margin:18px 0 7px}.tb-paper p{margin:7px 0 12px}.tb-paper ol{padding-left:22px}.tb-paper li{margin:6px 0}.tb-overline{font-size:11px;font-weight:800;letter-spacing:1.5px;color:#51718c}.tb-note{border-left:4px solid #86bcb9;background:#eef8f5;padding:14px 18px;border-radius:3px 10px 10px 3px;margin:22px 0}.tb-note h3{margin-top:0}.tb-note p:last-child{margin-bottom:0}.tb-section{margin-bottom:22px}.tb-question{border-bottom:1px solid #dde7ed;padding:10px 0}.tb-question>strong{font-weight:750}.tb-question ul{list-style:none;padding:0;margin:9px 0}.tb-question li{font-size:13px;padding:2px 0;line-height:1.55}.tb-question li span{color:#217c8a;font-weight:800;padding-right:6px}.tb-lesson-link{margin-top:23px;display:flex;flex-wrap:wrap;gap:12px;align-items:center}.tb-lesson-link span{font-size:12px;color:#667f8e}.tb-toc{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:6px 18px}.tb-toc button{background:transparent;border:0;border-bottom:1px solid #e5eef1;padding:8px 0;text-align:left;font:inherit;font-size:12px;color:#263c54;cursor:pointer}.tb-toc button span{color:#217c8a;font-weight:800;padding-right:8px}.tb-cover{background:var(--tb-color,#146b83);color:white;display:flex;flex-direction:column;align-items:start;justify-content:center;gap:14px;isolation:isolate;min-height:650px}.tb-cover:before,.tb-cover:after{content:'';position:absolute;border:1px solid rgba(255,255,255,.13);border-radius:50%;z-index:-1}.tb-cover:before{width:530px;height:530px;top:-210px;right:-220px}.tb-cover:after{width:340px;height:340px;bottom:-190px;left:-180px}.tb-cover-mark{font-size:17px;font-weight:900;letter-spacing:1.1px;position:absolute;top:40px;left:44px}.tb-cover-mark small{font-size:10px;font-weight:500;display:block;opacity:.8;margin-top:5px}.tb-series{display:inline-block;letter-spacing:1.1px;font-size:12px;font-weight:850;border-radius:22px;background:#e9c693;color:#26384f;padding:8px 13px}.tb-cover h2{font-size:clamp(36px,7vw,60px);color:white;margin:0;line-height:1.05}.tb-cover h3{font-size:clamp(24px,3vw,32px);color:#ead19f;margin:0}.tb-cover-symbol{font-size:84px;line-height:1}.tb-cover p{font-size:15px;color:#e5f2f4}.tb-cover-bottom{position:absolute;bottom:35px;font-size:12px;letter-spacing:.4px;opacity:.8}.tb-pager{display:flex;align-items:end;justify-content:space-between;gap:10px;flex-wrap:wrap;margin:18px 0}.tb-pager label{font-size:12px;font-weight:700;color:#536e84}.tb-pager select{max-width:220px;font-size:12px}.tb-flip{animation:tbturn .36s ease-in-out;transform-origin:0% 50%}@keyframes tbturn{0%{transform:rotateY(-12deg);opacity:.7}100%{transform:rotateY(0);opacity:1}}.tb-small{font-size:12px;color:#536f80}.tb-empty{padding:30px;border:1px dashed #bdcdd5;border-radius:14px}.tb-reader-shell .tb-state-notice{margin-top:25px}@media(max-width:660px){.tb-banner-icon{display:none}.tb-book-frame{padding:8px;border-radius:12px}.tb-page{padding:22px;min-height:510px}.tb-cover{min-height:550px}.tb-reader-toolbar{flex-wrap:wrap;justify-content:center}.tb-reader-toolbar>div{order:3;width:100%}.tb-pager{justify-content:center}}
@media(prefers-reduced-motion:reduce){.tb-flip{animation:none}}
@media print{.tb-reader-toolbar,.tb-pager,.tb-state-notice{display:none!important}.tb-book-frame{box-shadow:none;padding:0;background:none}.tb-page{box-shadow:none;break-inside:avoid}}

/* 170DK: original high-resolution vector diagrams in online learning pages. */
.tb-learning-figure{margin:18px 0 20px;background:#f8fcfd;border:1px solid #d4e5ec;border-radius:13px;overflow:hidden}.tb-learning-figure img{display:block;width:100%;height:auto;aspect-ratio:880/250;object-fit:contain}.tb-learning-figure figcaption{color:#476577;font:600 11px/1.55 Manrope,system-ui,sans-serif;padding:4px 13px 11px}.tb-page .tb-learning-figure{max-width:100%;break-inside:avoid}@media print{.tb-learning-figure{break-inside:avoid}}

/* 170DL · PDF-exact animated book reader, no CDN dependency. */
.tb-reader-shell{max-width:1080px;margin:0 auto;padding-bottom:60px}
.tb-reader-shell .tb-state-notice{margin-top:22px;margin-bottom:20px}
.tb-reader-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;border:1px solid #d3e3ea;background:#fff;border-radius:16px;padding:12px 15px;margin:12px 0;box-shadow:0 8px 26px rgba(21,57,83,.05)}
.tb-toolbar-title{display:flex;flex-direction:column;align-items:center;gap:3px;flex:1;min-width:175px;color:#536a7d;text-align:center;font-size:12px}
.tb-toolbar-title strong{color:#223b55;font-size:14px}
.tb-toolbar-title span strong{font-size:12px}
.tb-print-actions{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:7px}
.tb-print-button{white-space:nowrap;background:#116d78;border-color:#116d78}
.tb-print-button:hover{background:#095561;border-color:#095561}
.tb-book-workspace{position:relative;display:grid;place-items:center;padding:24px clamp(12px,4vw,38px);background:radial-gradient(ellipse at top,#e8f2f5,#cfdee7);border:1px solid #c7dbe3;border-radius:22px;box-shadow:inset 0 2px 16px rgba(23,52,70,.09)}
.tb-book-stage{position:relative;isolation:isolate;aspect-ratio:612/792;width:min(100%,740px);background:#fff;border-radius:4px 12px 12px 4px;box-shadow:5px 9px 20px rgba(24,46,69,.24),-7px 4px 8px rgba(28,65,77,.08);perspective:1500px;transform-style:preserve-3d;overflow:hidden}
.tb-book-stage:after{content:'';position:absolute;top:0;bottom:0;left:0;width:9px;background:linear-gradient(90deg,rgba(15,34,54,.24),rgba(255,255,255,.17),transparent);pointer-events:none;z-index:5}
.tb-page-image{display:block;width:100%;height:100%;object-fit:fill;position:absolute;inset:0;background:white;user-select:none;-webkit-user-drag:none}
.tb-turn-leaf{z-index:4;backface-visibility:hidden;transform:rotateY(0);transition:transform .58s cubic-bezier(.22,.65,.26,1),filter .58s ease;box-shadow:0 0 16px rgba(0,0,0,.09)}
.tb-turn-forward{transform-origin:0 50%}.tb-turn-back{transform-origin:100% 50%}
.tb-turn-forward.tb-turn-active{transform:rotateY(-88deg);filter:brightness(.78)}
.tb-turn-back.tb-turn-active{transform:rotateY(88deg);filter:brightness(.78)}
.tb-real-pager{margin:18px 0 12px;display:flex;align-items:center;gap:12px;justify-content:center;flex-wrap:wrap}
.tb-real-pager label{display:flex;align-items:center;gap:10px}
.tb-real-pager select{margin:0;width:200px;max-width:38vw}
.tb-page-number{font-size:13px;font-weight:800;color:#2b5067;white-space:nowrap;font-variant-numeric:tabular-nums}
.tb-reader-help{text-align:center;font-size:12px;color:#587184;line-height:1.7;margin:0 0 24px}
.tb-book-workspace .tb-book-spine{position:absolute;left:calc(50% - min(50%,370px) - 11px);top:12%;height:75%;width:12px;background:linear-gradient(90deg,#a9c6d2,#d4e4e8);border-radius:8px;opacity:.55}
.tb-mini-brand{display:flex;align-items:center;gap:6px;font-size:11px!important;font-weight:800;letter-spacing:.02em;align-self:center}
.tb-mini-brand img{width:27px;height:30px;object-fit:contain;background:white;border-radius:5px;padding:2px}
.tb-catalog .tb-mini-cover{height:240px}
.tb-catalog .tb-mini-cover .tb-mini-glyph{font-size:76px;color:white}
@media(max-width:700px){.tb-book-workspace{padding:9px}.tb-reader-toolbar{justify-content:center}.tb-toolbar-title{order:-1;flex-basis:100%}.tb-real-pager{gap:8px}.tb-real-pager .btn{padding:9px 10px}.tb-real-pager label{order:5;flex-basis:100%;justify-content:center}.tb-real-pager select{max-width:260px}.tb-book-workspace .tb-book-spine{display:none}}
@media(prefers-reduced-motion:reduce){.tb-turn-leaf{transition:none}}
@media print{.tb-reader-toolbar,.tb-real-pager,.tb-reader-help,.tb-state-notice{display:none!important}.tb-book-workspace{border:0;padding:0;box-shadow:none}.tb-book-stage{max-width:100%;box-shadow:none;break-inside:avoid}}
/* Bookshelf thumbnails are actual branded PDF covers, not generic placeholders. */
.tb-catalog .tb-mini-cover.tb-mini-cover-art{display:block;position:relative;height:285px;padding:0;overflow:hidden;background:#e2edf2}
.tb-cover-thumb{display:block;width:100%;height:100%;object-fit:cover;object-position:center 12%;transition:transform .3s ease}
.tb-card:hover .tb-cover-thumb{transform:scale(1.025)}

/* 170DP: both pagers identical; the top pager anchors directly below sticky navigation */
.tb-reader-shell .tb-pager{border:1px solid #d4e5ed;border-radius:14px;padding:11px 13px;background:#fff;align-items:center;justify-content:space-between;scroll-margin-top:105px}
.tb-reader-shell .tb-pager .tb-chapter{min-width:135px}
.tb-reader-shell .tb-reader-toolbar .tb-print-actions{display:flex;flex-direction:row;gap:7px;flex-wrap:nowrap;align-items:center}
.tb-card-buttons{display:flex;gap:8px;flex-wrap:nowrap}
.tb-card-buttons .btn{flex:1;text-align:center;padding-inline:8px;justify-content:center}
.tb-book-stage{touch-action:pan-y;cursor:grab}
.tb-book-stage.tb-grabbing{cursor:grabbing}
@media(max-width:640px){.tb-reader-shell .tb-pager{gap:10px;justify-content:center}.tb-reader-shell .tb-reader-toolbar .tb-print-actions{width:100%;justify-content:center}}

/* Phase 170DQ: PDF cover opens the same flip reader as the adjacent button. */
.tb-catalog a.tb-cover-link{cursor:pointer;text-decoration:none;color:inherit;outline-offset:4px}
.tb-catalog a.tb-cover-link:focus-visible{outline:3px solid #135a91;outline-offset:4px}
.tb-catalog a.tb-cover-link:hover .tb-cover-thumb,.tb-catalog a.tb-cover-link:focus-visible .tb-cover-thumb{transform:scale(1.035)}

/* 170DU: Read-aloud controls inside the page-exact illustrated textbook reader. */
.tb-audio-panel{background:#f2f9fc;border:1px solid #b7d5e5;border-radius:14px;margin:12px 0 18px;padding:16px 18px;color:#17344b;}
.tb-audio-panel[hidden]{display:none!important}.tb-audio-heading{display:flex;flex-wrap:wrap;gap:8px 18px;align-items:center;color:#126879;}
.tb-audio-heading strong{font-weight:800}.tb-audio-panel p{margin:7px 0 10px;line-height:1.45;font-size:.91rem}
.tb-audio-buttons{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.tb-audio-buttons .btn{min-width:140px}
.tb-audio-buttons button:disabled{opacity:.55;cursor:not-allowed}.tb-audio-status{min-height:1.1rem;color:#31516a;}
@media(max-width:540px){.tb-audio-buttons .btn{min-width:0;flex:1 1 43%}.tb-audio-panel{padding:12px}}
/* Play buttons live in each printable page's left margin, aligned with exact Listen: lines. */
.tb-cue-play{position:absolute;z-index:8;left:1%;transform:translateY(-25%);width:5.8%;min-width:23px;max-width:45px;aspect-ratio:1;border-radius:50%;background:#125f8a;color:#fff;border:2px solid #fff;box-shadow:0 1px 6px #264b71a1;display:grid;place-items:center;font-size:clamp(12px,1.5vw,17px);cursor:pointer;touch-action:manipulation}
.tb-cue-play:hover{background:#1944a7}.tb-cue-play:focus-visible{outline:3px solid #efb03f;outline-offset:2px}
