.cw-root{color:#15334b;min-width:0;margin:20px 0;font-size:14px;line-height:1.6}.cw-root *{box-sizing:border-box}.cw-toolbar{display:flex;align-items:center;justify-content:space-between;gap:15px;flex-wrap:wrap;margin-bottom:16px}.cw-kicker{font-size:10px;text-transform:uppercase;letter-spacing:1.3px;color:#74939d}.cw-root h3{font:normal 28px/1.25 Georgia,serif;margin:6px 0;text-wrap:balance}.cw-progress{font-size:11px;border:1px solid #cfe4df;background:#eef6f4;color:#52796f;padding:5px 10px;border-radius:30px}.cw-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(270px,.9fr);gap:25px}.cw-board,.cw-workspace{min-width:0}.cw-grid{display:grid;grid-template-columns:repeat(var(--cw-columns),minmax(0,1fr));padding:14px;gap:2px;border-radius:14px;background:linear-gradient(145deg,#142e48,#20445c);max-width:560px;box-shadow:0 8px 24px #10243e0a}.cw-cell,.cw-space{aspect-ratio:1;min-width:0;position:relative}.cw-cell{appearance:none;border:1px solid #d0e0e5;border-radius:3px;background:#f8fcfc;color:#234553;padding:0;font:500 clamp(12px,1.6vw,20px)/1 -apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;cursor:pointer}.cw-cell small{position:absolute;left:2px;top:2px;font-size:8px;line-height:1;color:#78949c}.cw-cell [data-cw-letter]{display:block;padding-top:4px}.cw-cell.cw-selected{background:#cce9e2;border-color:#b0d2c9;box-shadow:inset 0 0 0 1px #7bafa4}.cw-cell.cw-filled{font-weight:600}.cw-cell:hover{background:#e2f2ee}.cw-root button:focus-visible,.cw-root input:focus-visible{outline:3px solid #85c3bc;outline-offset:2px;z-index:1}.cw-tip{font-size:11px;color:#79909a;line-height:1.7;margin:12px 0 0;max-width:420px}.cw-direction{display:flex;gap:3px;background:#edf3f5;border:1px solid #d8e5e8;padding:4px;border-radius:9px;margin-bottom:12px}.cw-direction button{border:0;background:transparent;color:#69838f;border-radius:6px;padding:10px;font:inherit;font-size:11px;flex:1;min-height:42px;cursor:pointer}.cw-direction button[aria-pressed=true]{background:#fff;color:#234757;box-shadow:0 1px 4px #10243e08}.cw-clues{display:grid;gap:5px;max-height:330px;overflow-y:auto;overscroll-behavior:contain;padding:2px}.cw-clue{display:grid;grid-template-columns:20px minmax(0,1fr) auto;align-items:start;gap:8px;width:100%;text-align:left;border:1px solid transparent;border-radius:8px;background:transparent;color:#527080;padding:9px 10px;min-height:44px;font:inherit;font-size:12px;cursor:pointer}.cw-clue b{font-size:11px;color:#7b939d}.cw-clue small{font-size:9px;white-space:nowrap;color:#8a9da5}.cw-clue[aria-pressed=true]{background:#eef6f3;border-color:#d3e6e0;color:#315e60}.cw-active{border-top:1px solid #dce8eb;padding-top:15px;margin-top:15px}.cw-active-label{display:block;font-size:12px;color:#315866;margin-bottom:11px;line-height:1.7}.cw-entry{display:grid;grid-template-columns:repeat(var(--cw-length),minmax(0,1fr));gap:4px;max-width:440px}.cw-entry input{appearance:none;display:block;min-width:0;width:100%;max-width:44px;height:44px;border:1px solid #b9d3d5;border-radius:5px;background:#f9fcfc;text-align:center;padding:0;color:#1c4654;font:500 20px/1 -apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;text-transform:uppercase;box-shadow:none}.cw-keyboard{font-size:10px;color:#8397a1;line-height:1.65;margin:10px 0}.cw-clear{appearance:none;border:0;border-bottom:1px solid #d1dfdf;background:transparent;color:#627f89;padding:7px 0;font:inherit;font-size:11px;cursor:pointer;min-height:36px}.cw-clear:disabled{opacity:.45;cursor:default}@media(max-width:900px){.cw-layout{grid-template-columns:minmax(0,1fr);gap:20px}.cw-grid{max-width:460px;margin:auto}.cw-clues{max-height:240px}.cw-cell{font-size:17px}.cw-cell small{font-size:7px}.cw-workspace{max-width:560px;width:100%;margin:auto}}@media(max-width:500px){.cw-root{font-size:13px}.cw-grid{padding:9px;gap:1px;border-radius:10px}.cw-cell{font-size:12px;border-radius:2px}.cw-cell small{font-size:6px;left:1px;top:1px}.cw-cell [data-cw-letter]{padding-top:4px}.cw-root h3{font-size:25px}.cw-clue{grid-template-columns:17px minmax(0,1fr) auto;font-size:11px;padding:9px 7px;gap:5px}.cw-entry{gap:3px}.cw-entry input{font-size:17px;height:42px}.cw-tip{font-size:10px}.cw-direction button{font-size:10px;padding:9px 5px}}

.cw-root .cw-cell.cw-correct,.cw-root .cw-entry input.cw-correct{background:#e1f2e8;border-color:#8cbfa7;color:#285f47}.cw-root .cw-cell.cw-incorrect,.cw-root .cw-entry input.cw-incorrect{background:#f8e9e5;border-color:#cd9b8f;color:#8b4a41}.cw-root .cw-cell.cw-incorrect{box-shadow:inset 0 -2px 0 #c18d80}.cw-root .cw-entry input.cw-incorrect{box-shadow:inset 0 -2px 0 #c18d80}

.textbook-player{--tp-ink:#132e49;--tp-pearl:#f7fafb;--tp-line:#d5e2e6;--tp-teal:#4e8c87;color:var(--tp-ink);min-width:0}.textbook-player *{box-sizing:border-box}.tp-player{border:1px solid var(--tp-line);border-radius:24px;background:#f3f7f8;overflow:hidden;box-shadow:0 18px 55px #122b4209}.tp-header{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;padding:27px 30px;background:#122d49;color:#e7f1f2}.tp-kicker{font-size:10px;text-transform:uppercase;letter-spacing:1.45px;line-height:1.6;font-weight:600}.tp-header .tp-kicker{color:#b4d2d1}.tp-header .tp-title{font:normal clamp(23px,3.5vw,32px)/1.14 Georgia,serif;max-width:690px;margin:9px 0 12px;text-wrap:balance;overflow-wrap:anywhere}.tp-reference{font-size:12px;line-height:1.7;color:#bacfdd;margin:0;max-width:700px;overflow-wrap:anywhere}.textbook-player button,.textbook-player textarea,.tp-original-zoom button{font:inherit}.textbook-player button{cursor:pointer;line-height:1.4}.tp-source-trigger{flex:0 0 auto;display:flex;align-items:center;gap:10px;max-width:200px;color:#d7eeee;background:#ffffff08;border:1px solid #b6d6db55;padding:12px 15px;border-radius:12px;font-size:12px!important;text-align:left}.tp-source-trigger:hover{background:#ffffff14}.tp-source-trigger svg{flex:0 0 20px}.tp-workspace{display:grid;grid-template-columns:minmax(145px,180px) minmax(0,1fr);gap:0;align-items:start}.tp-with-source .tp-workspace{grid-template-columns:minmax(135px,160px) minmax(0,1fr) minmax(250px,32%)}.tp-route{padding:26px 17px;min-width:0}.tp-route-label{display:flex;justify-content:space-between;gap:8px;align-items:center;color:#637c8d;font-size:11px}.tp-route-label b{font-size:11px;font-weight:500;color:#2c536c}.tp-progress-track{height:4px;border-radius:9px;background:#dce8e9;overflow:hidden;margin:14px 0 21px}.tp-progress-track i{display:block;height:100%;background:linear-gradient(90deg,#75a5a1,#3d7875);border-radius:9px;transition:width .4s ease}.tp-route-cards{display:grid;gap:9px}.textbook-player .tp-route-card{display:flex;align-items:center;gap:10px;width:100%;border:1px solid transparent;border-radius:14px;padding:13px 8px;background:transparent;text-align:left;min-width:0;color:#4d657a}.tp-route-card>span:last-child{min-width:0}.tp-route-card b{display:block;font-size:12px;overflow-wrap:anywhere;font-weight:600}.tp-route-card small{display:block;font-size:9px;color:#6b8395;margin-top:5px;line-height:1.5}.tp-route-number{width:32px;height:32px;flex:0 0 32px;display:grid;place-items:center;border:1px solid #c3d5dc;border-radius:12px;color:#517289;font-family:Georgia,serif;font-size:17px;background:#fff9}.textbook-player .tp-route-card.active{background:#fff;border-color:#c7dbde;box-shadow:0 5px 16px #1a465608}.tp-route-card.active .tp-route-number{border-color:#3e7977;background:#3e7977;color:#fff}.tp-route-card.completed .tp-route-number{color:#316d62;background:#deeee7;border-color:#bedad0}.tp-route>p{font-size:10px;line-height:1.7;color:#6e8294;margin:22px 7px 0}.tp-paper{min-width:0;padding:30px;background:#fff;border-left:1px solid var(--tp-line);align-self:stretch;min-height:560px}.tp-task-top{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:23px}.tp-task-top .tp-kicker{color:#65808e}.tp-focus-button{display:flex;align-items:center;gap:7px;border:0;background:transparent;color:#577d87;padding:5px;font-size:11px!important}.tp-paper h3{font:normal clamp(23px,3vw,29px)/1.2 Georgia,serif;margin:0 0 17px;overflow-wrap:anywhere;text-wrap:balance}.tp-condition{white-space:pre-wrap;overflow-wrap:anywhere;font-size:clamp(16px,1.5vw,19px);line-height:1.85;padding:22px 24px;margin-bottom:26px;border:1px solid #dce7e9;background:#f7fafb;border-radius:15px;transition:background .2s,border-color .2s,box-shadow .2s}.tp-condition-focus .tp-condition{background:#eaf5f0;border-color:#70a49a;box-shadow:0 0 0 5px #7aa99a15}.tp-answer-label{display:grid;gap:10px;color:#607a8c;font-size:12px}.tp-answer-label textarea{display:block;width:100%;min-width:0;min-height:150px;max-height:550px;border:1px solid #cedde3;border-radius:13px;padding:17px 20px;color:#19394f;background:linear-gradient(#fff,#fbfdfd);font-size:16px;line-height:1.8;resize:vertical}.tp-answer-label textarea::placeholder{color:#9aadb9}.tp-answer-actions{display:flex;justify-content:space-between;flex-wrap:wrap;align-items:center;gap:10px;margin:17px 0 24px}.tp-complete{display:flex;align-items:center;justify-content:center;gap:9px;border:1px solid #b8d5d0;border-radius:12px;background:#eff7f3;color:#386c63;padding:12px 16px;font-size:12px!important}.tp-complete.selected{background:#dfeee7;border-color:#7eafa1;color:#285d50}.tp-clear{border:0;background:transparent;color:#788a97;font-size:11px!important;padding:10px 4px}.tp-clear-confirm{border:1px solid #decfc7;background:#faf7f4;padding:16px;border-radius:13px;font-size:13px;line-height:1.7;margin-bottom:20px}.tp-clear-confirm p{margin-top:0}.tp-clear-confirm button{border:1px solid #d5dfe5;border-radius:8px;padding:9px 12px;background:white;color:#445e71;margin:0 7px 3px 0;font-size:12px}.tp-teacher-key{border-top:1px solid #e1e9ed;padding-top:16px;margin:8px 0 22px}.tp-teacher-key>button{display:flex;align-items:center;gap:8px;border:0;background:transparent;color:#6c7f8c;padding:4px 0;font-size:12px!important}.tp-key-text{white-space:pre-wrap;overflow-wrap:anywhere;background:#f5f8fa;border:1px solid #dce5e9;border-radius:12px;padding:15px 18px;font-size:15px;line-height:1.75;margin-top:14px}.tp-teacher-key p{font-size:11px;line-height:1.7;color:#718593}.tp-task-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid #e1e9ed;padding-top:23px;margin-top:25px}.tp-task-footer>span{font-size:9px;line-height:1.6;color:#8698a4;text-align:center}.tp-task-footer button{min-height:41px;border-radius:10px;font-size:12px!important;display:flex;align-items:center;gap:8px;padding:10px 14px;flex:0 0 auto}.tp-back{border:1px solid #d5e1e7;background:#fff;color:#587386}.tp-next{border:1px solid #183e58;background:#183e58;color:#fff}.textbook-player button:disabled{opacity:.4;cursor:default}.textbook-player button:focus-visible,.textbook-player textarea:focus-visible,.textbook-player [tabindex]:focus-visible,.tp-original-zoom button:focus-visible{outline:3px solid #88b5b2;outline-offset:3px}.tp-source-panel{min-width:0;padding:24px 18px;background:#edf3f5;border-left:1px solid #d4e1e6;align-self:stretch}.tp-source-panel[hidden]{display:none}.tp-source-heading{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:18px}.tp-source-heading h3{font:normal 20px Georgia,serif;margin:7px 0 0}.tp-source-heading .tp-kicker{color:#718895}.tp-source-heading>button{border:0;background:transparent;color:#607b8a;padding:7px;border-radius:8px}.tp-original-image{display:block;width:100%;padding:7px;background:white;border:1px solid #ccdde3;border-radius:12px;overflow:hidden;text-align:center}.tp-original-image img{display:block;width:100%;max-height:620px;object-fit:contain;background:white}.tp-original-image span{display:flex;justify-content:center;align-items:center;gap:7px;font-size:11px;color:#667d8d;padding:11px 0 5px}.tp-original-download{display:inline-flex;margin:18px 0 5px;max-width:100%;overflow-wrap:anywhere;color:#527a87;font-size:11px;text-decoration:underline;text-underline-offset:4px}.tp-original-note{font-size:10px;color:#748994;line-height:1.7;overflow-wrap:anywhere;margin:15px 0}.tp-original-pdf{display:block;width:100%;height:530px;border:1px solid #cadae1;border-radius:10px;background:white}.tp-source-word{font-size:13px;line-height:1.7;color:#668190}.tp-source-loading{min-height:190px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:22px 10px;color:#6e8595;text-align:center;font-size:12px;line-height:1.8}.tp-source-loading>i{width:25px;height:25px;border:2px solid #d1e2e4;border-right-color:#73a6a2;border-radius:50%;animation:tp-spin 1.4s linear infinite}.tp-source-loading button{border:1px solid #c3d7df;border-radius:9px;background:#fff;color:#386273;padding:10px 12px;font-size:12px}.tp-save-line{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:15px 24px;background:#edf4f5;border-top:1px solid #d5e3e7;color:#688494;font-size:10px;line-height:1.7;min-height:47px}.tp-save-line button{border:0;background:transparent;color:#407d79;text-decoration:underline;font-size:11px!important}.tp-original-zoom{width:min(1150px,calc(100vw - 30px));max-height:calc(100dvh - 30px);border:1px solid #bdcfd8;border-radius:16px;background:#f0f5f7;padding:16px;color:#254b64;overflow:auto}.tp-original-zoom::backdrop{background:#0e263db3;backdrop-filter:blur(5px)}.tp-original-zoom header{display:flex;justify-content:space-between;align-items:center;gap:18px;font-size:13px;line-height:1.6;padding:4px 8px 18px}.tp-original-zoom header button{border:0;background:white;color:#345c70;border-radius:9px;padding:8px;flex:0 0 38px}.tp-original-zoom>img{display:block;max-width:100%;height:auto;margin:0 auto;background:white;border:1px solid #cbd9df}.tp-choice-options{display:grid;gap:9px;margin:0 0 25px}.tp-choice{display:flex;align-items:flex-start;gap:12px;text-align:left;border:1px solid #d2e0e5;border-radius:12px;background:#fcfdfd;color:#335b70;padding:14px 17px;white-space:pre-wrap;font-size:15px!important;overflow-wrap:anywhere}.tp-choice-dot{width:19px;height:19px;flex:0 0 19px;border-radius:50%;border:1px solid #bbd0d6;margin-top:2px;background:white}.tp-choice.selected{border-color:#6fa59c;background:#edf6f1}.tp-choice.selected .tp-choice-dot{background:#5d9289;box-shadow:inset 0 0 0 4px #edf6f1;border-color:#5d9289}.tp-matching{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:0 0 25px}.tp-matching-left,.tp-matching-right{display:flex;flex-direction:column;gap:9px;min-width:0}.tp-match-target{display:flex;flex-direction:column;gap:10px;width:100%;text-align:left;color:#3a5a6e;border:1px solid #cedde4;background:#f8fbfc;padding:14px;border-radius:12px;overflow-wrap:anywhere;font-size:14px!important;min-height:86px}.tp-match-target strong{font-weight:500;min-height:32px;display:flex;align-items:center;padding:8px 10px;background:#fff;border:1px dashed #c7dadd;border-radius:8px;color:#4c817b;white-space:pre-wrap}.tp-match-target i{font-style:normal;color:#abbcc4}.tp-match-target.drag-over{border-color:#5e9b91;background:#e3f1eb;box-shadow:0 0 0 4px #87b4a728}.tp-match-card{display:flex;align-items:center;gap:8px;width:100%;text-align:left;padding:15px 12px;border:1px solid #bdd5d4;border-radius:12px;background:#fff;color:#3a6e70;font-size:14px!important;min-height:55px;cursor:grab!important;box-shadow:0 4px 10px #244b5a07;transition:transform .18s,border-color .18s;overflow-wrap:anywhere}.tp-match-card:hover{transform:translateY(-2px)}.tp-match-card.selected{border-color:#4e9287;background:#edf7f2;box-shadow:0 0 0 3px #81b3a829}.tp-match-card svg{flex:0 0 16px;color:#8ca8ad}.tp-match-accessible{grid-column:1/-1;font-size:10px;line-height:1.75;color:#7c919c;margin:0}.tp-unavailable{border:1px solid #d1dfe6;background:#f6fafb;border-radius:15px;padding:25px;color:#647f91;font-size:14px;line-height:1.8}.textbook-player[data-tp-age=junior] .tp-condition{font-size:19px;line-height:1.9}.textbook-player[data-tp-age=junior] .tp-route-number{border-radius:50%;width:37px;height:37px;flex-basis:37px}.textbook-player[data-tp-age=senior] .tp-player{border-radius:17px}.textbook-player[data-tp-age=senior] .tp-condition{background:#fafbfc}.textbook-player[data-tp-age=senior] .tp-route-card{border-radius:9px}
@keyframes tp-spin{to{transform:rotate(360deg)}}
@media(max-width:1100px){.tp-with-source .tp-workspace{grid-template-columns:140px minmax(0,1fr)}.tp-with-source .tp-source-panel{grid-column:1/-1;border-left:0;border-top:1px solid #d4e1e6}.tp-source-panel [data-tp-source-content]{max-width:660px;margin:auto}.tp-source-heading,.tp-original-note{max-width:660px;margin-left:auto;margin-right:auto}.tp-original-image img{max-height:600px}.tp-header{padding:24px}.tp-paper{padding:25px}}
@media(max-width:760px){.tp-workspace,.tp-with-source .tp-workspace{grid-template-columns:minmax(0,1fr)}.tp-header{gap:16px;padding:22px 19px;flex-wrap:wrap}.tp-header .tp-title{font-size:clamp(22px,5vw,29px)}.tp-source-trigger{padding:10px 13px;max-width:none;font-size:11px!important}.tp-route{padding:17px 18px;border-bottom:1px solid #d5e2e6}.tp-route-label{max-width:100%}.tp-progress-track{margin:11px 0 15px}.tp-route-cards{display:flex;gap:8px;overflow-x:auto;max-width:100%;padding:2px 1px 7px;scroll-snap-type:x proximity}.textbook-player .tp-route-card{width:auto;flex:0 0 145px;padding:10px 9px;scroll-snap-align:start}.tp-route-card small{font-size:9px}.tp-route>p{margin:6px 0 0;font-size:9px}.tp-paper{border-left:0;padding:24px 19px;min-height:0}.tp-task-top{gap:8px;flex-wrap:wrap;margin-bottom:20px}.tp-condition{padding:18px;line-height:1.9}.tp-answer-label textarea{min-height:150px;padding:14px 16px}.tp-task-footer{flex-wrap:wrap;gap:12px}.tp-task-footer>span{flex-basis:100%;order:2;text-align:center}.tp-task-footer>button{flex:1;justify-content:center}.tp-next{margin-left:auto}.tp-source-panel{grid-column:1}.tp-source-panel{padding:22px 18px}.tp-save-line{padding:13px 19px}.tp-player{border-radius:18px}.tp-matching{gap:10px}.tp-match-target{padding:10px;font-size:13px!important}.tp-match-card{padding:12px 9px;font-size:13px!important}.tp-original-pdf{height:470px}}
@media(max-width:380px){.tp-header,.tp-paper{padding-left:15px;padding-right:15px}.tp-condition{padding:15px;font-size:16px}.tp-task-top .tp-kicker{font-size:9px}.tp-focus-button{font-size:10px!important}.tp-complete{padding:11px 12px;font-size:11px!important}.tp-route-card{flex-basis:138px!important}.tp-reference{font-size:11px}.tp-answer-actions{align-items:stretch}.tp-answer-actions button{flex:1 1 auto}.tp-matching{grid-template-columns:1fr}.tp-matching-right{display:grid;grid-template-columns:1fr 1fr}.tp-match-accessible{grid-column:1}}
@media(prefers-reduced-motion:reduce){.textbook-player *{animation:none!important;transition:none!important;scroll-behavior:auto!important}.tp-match-card:hover{transform:none}}

.tp-ordering{display:grid;gap:12px;margin-bottom:26px}.tp-order-card{min-width:0;border:1px solid #c8dce0;border-radius:14px;background:#f8fbfb;padding:17px;cursor:grab}.tp-order-card header{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:10px}.tp-order-card header>span{display:flex;align-items:center;gap:9px;color:#668a93;font-size:12px}.tp-order-card header>div{display:flex;gap:6px}.tp-order-card header button{border:1px solid #c8dadf;border-radius:8px;background:white;color:#517786;width:34px;height:32px;font-size:16px!important}.tp-order-card p{font-size:15px;line-height:1.85;white-space:pre-wrap;overflow-wrap:anywhere;margin:0;color:#34566b}.tp-order-card.drag-over{border-color:#669f92;background:#e9f5ed;box-shadow:0 0 0 4px #83b2a825}

.tp-legacy-note{font-size:10px;color:#a9c6d1;line-height:1.8;margin:10px 0 0;max-width:650px}.tp-availability-note{border:1px solid #d6e4e3;background:#f0f7f5;color:#577d7d;border-radius:12px;padding:15px 18px;font-size:12px;line-height:1.8;margin:-8px 0 25px}.tp-source-pages{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:16px}.tp-source-pages button{border:1px solid #cadbe1;border-radius:9px;padding:9px 12px;background:white;color:#5c7c8c;font-size:11px!important}.tp-source-pages button[aria-pressed=true]{background:#477b7c;color:#fff;border-color:#477b7c}
/* Do not let page-level aside/button styles reveal a closed source panel or
   reserve an implicit grid cell. Original bytes load only after explicit use. */
.textbook-player [hidden],.textbook-player .tp-source-panel[hidden]{display:none!important}
.textbook-player .tp-original-image{display:block}.textbook-player .tp-workspace{grid-template-columns:minmax(145px,180px) minmax(0,1fr)}
.textbook-player .tp-with-source .tp-workspace{grid-template-columns:minmax(135px,160px) minmax(0,1fr) minmax(250px,32%)}
.tp-header{padding:21px 25px;gap:18px}.tp-header .tp-title{margin:7px 0 8px}.tp-reference{font-size:11px;line-height:1.65;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.tp-legacy-note{font-size:10px;line-height:1.65;margin-top:7px}
.tp-illustration{height:180px;margin:0;display:grid;grid-template-rows:minmax(0,1fr) auto;background:#edf3f4;border-bottom:1px solid var(--tp-line);overflow:hidden}.tp-illustration>img{width:100%;height:100%;min-height:0;object-fit:cover;display:block}.tp-illustration figcaption{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:7px 20px;background:#f7fafb;color:#4c697d;font-size:11px;line-height:1.4;min-width:0}.tp-illustration figcaption>span{min-width:0;overflow-wrap:anywhere}.tp-illustration figcaption small{display:block;color:#788d9b;font-size:9px;line-height:1.4;margin-top:2px}.textbook-player .tp-illustration button,.textbook-player .tp-illustration-bar button{border:0;background:transparent;color:#537d81;font-size:10px!important;padding:7px 3px;min-height:30px;flex:0 0 auto;text-decoration:underline;text-underline-offset:3px;max-width:45%;white-space:normal}.tp-illustration-bar{display:flex;align-items:center;justify-content:flex-end;gap:12px;padding:4px 20px;background:#f7fafb;border-bottom:1px solid var(--tp-line);font-size:11px;color:#698290;line-height:1.5}.textbook-player .tp-illustration-bar button{max-width:100%}
.textbook-player .tp-required-source{display:flex;align-items:center;justify-content:flex-start;gap:8px;border:1px solid #ccdfe0;background:#f0f7f6;color:#47777b;padding:10px 12px;border-radius:10px;font-size:11px!important;line-height:1.5;min-height:40px;margin:-11px 0 24px;text-align:left;max-width:100%}.tp-required-source svg{flex:none}.tp-explanation{margin:0 0 20px;border:1px solid #dce6ea;border-radius:12px;padding:0 15px;background:#fafcfc}.tp-explanation summary{cursor:pointer;color:#5d7d8c;font-size:12px;line-height:1.6;padding:13px 0}.tp-explanation[open] summary{margin-bottom:8px}.tp-explanation .tp-answer-label{padding-bottom:15px}.tp-explanation summary:focus-visible{outline:3px solid #88b5b2;outline-offset:3px}
.tp-gaps{margin-bottom:25px}.tp-gap-guide b{font-weight:500;color:#355f70;font-size:15px}.tp-gap-guide p{color:#748c98;font-size:11px;line-height:1.8;margin:7px 0 17px}.tp-gap-slots{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:9px;margin-bottom:16px}.tp-gap-slot{display:flex;min-width:0;align-items:stretch;border:1px solid #cbdce1;background:#f6fafb;border-radius:12px;padding:3px;transition:background .18s,border-color .18s}.tp-gap-slot.active{border-color:#649b98;background:#edf7f3;box-shadow:0 0 0 2px #8bb5aa18}.tp-gap-slot.filled{background:#f0f6f6}.tp-gap-slot.drag-over{border-color:#3e857f;box-shadow:0 0 0 3px #7daea833}.textbook-player .tp-gap-slot>button[data-tp-gap-target]{display:flex;align-items:center;justify-content:flex-start;gap:8px;min-width:0;flex:1;min-height:44px;padding:8px 6px;background:transparent;border:0;text-align:left;color:#365f71}.tp-gap-slot>button>span{font-size:11px;min-width:21px;flex:0 0 21px;text-align:center;color:#6c9096}.tp-gap-slot strong{font-size:12px;line-height:1.5;font-weight:500;overflow-wrap:anywhere;min-width:0}.textbook-player .tp-gap-clear{width:27px;min-height:38px;flex:0 0 27px;padding:4px;border:0;background:transparent;color:#789198}.tp-word-bank{display:flex;flex-wrap:wrap;gap:8px;padding:15px;border:1px solid #d6e4e5;border-radius:14px;background:#f6faf9}.textbook-player .tp-word-card{display:flex;align-items:center;gap:7px;max-width:100%;min-height:43px;padding:10px 13px;border:1px solid #bfd6d5;border-radius:10px;background:#fff;color:#3c7171;box-shadow:0 3px 8px #244b5a05;font-size:14px!important;text-align:left;cursor:grab;overflow-wrap:anywhere}.tp-word-card svg{flex:none;color:#8ba9ab}.tp-word-card:active{cursor:grabbing}.tp-word-card span{min-width:0}.tp-gap-status{font-size:11px;line-height:1.7;color:#5e8585;margin:12px 0 8px;min-height:19px}
@media(max-width:1100px){.textbook-player .tp-with-source .tp-workspace{grid-template-columns:140px minmax(0,1fr)}}
@media(max-width:760px){.textbook-player .tp-workspace,.textbook-player .tp-with-source .tp-workspace{grid-template-columns:minmax(0,1fr)}.tp-header{padding:18px 19px;gap:13px}.tp-illustration{height:150px}.tp-illustration figcaption{padding:5px 13px;gap:8px}.textbook-player .tp-illustration button{min-height:39px;font-size:9px!important;padding:5px 0;max-width:40%}.tp-illustration figcaption small{font-size:8px}.tp-illustration-bar{padding:3px 14px}.tp-word-bank{padding:12px;gap:7px}.textbook-player .tp-word-card{padding:10px;font-size:13px!important;min-height:44px}.tp-gap-slots{grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:7px}}
@media(max-width:380px){.tp-header{padding:17px 15px}.tp-gap-slots{grid-template-columns:minmax(0,1fr)}.tp-word-bank{padding:10px}.tp-word-card svg{display:none}.textbook-player .tp-word-card{padding:9px 10px}.tp-illustration figcaption{font-size:10px}.tp-illustration figcaption small{font-size:8px}}
/* A compact gallery frame keeps the complete painting visible. Wide cropped
   banners can cut faces and make a decorative scene look like an exercise. */
.tp-illustration{grid-template-columns:240px minmax(0,1fr);grid-template-rows:minmax(0,1fr);gap:22px;align-items:center;padding:10px 24px;background:#f4f8f9}.tp-illustration>img{width:100%;height:160px;max-height:100%;object-fit:contain;object-position:center;border-radius:10px;background:#e8eff1;box-shadow:0 3px 15px #1537470a}.tp-illustration figcaption{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:10px;padding:0;background:transparent;font-size:13px;line-height:1.5}.tp-illustration figcaption>span{max-width:420px}.tp-illustration figcaption small{font-size:10px;margin-top:5px}.textbook-player .tp-illustration button{max-width:100%;padding:4px 0;min-height:32px;font-size:11px!important;text-align:left}
@media(max-width:760px){.tp-illustration{grid-template-columns:minmax(0,46%) minmax(0,1fr);gap:14px;height:150px;padding:10px 14px}.tp-illustration>img{height:130px}.tp-illustration figcaption{gap:5px;font-size:11px;line-height:1.4}.tp-illustration figcaption small{font-size:9px;margin-top:3px}.textbook-player .tp-illustration button{max-width:100%;min-height:38px;font-size:10px!important;padding:4px 0}}
@media(max-width:380px){.tp-illustration{grid-template-columns:minmax(0,44%) minmax(0,1fr);padding:9px 12px;gap:10px}.tp-illustration figcaption{font-size:10px}.tp-illustration figcaption small{font-size:8px}.textbook-player .tp-illustration button{font-size:9px!important}}

/* Lesson art belongs to the heading. Keep the complete painting and put source
   provenance in a user-controlled disclosure rather than a permanent banner. */
.tp-header{display:grid;grid-template-columns:minmax(0,1fr);align-items:center;padding:25px 28px;gap:22px;position:relative;background:linear-gradient(120deg,#142f4a,#102841)}
.tp-header.tp-header-art{grid-template-columns:minmax(0,1fr) minmax(190px,28%)}
.tp-heading-copy{min-width:0}.tp-header .tp-title{font:normal clamp(24px,3vw,35px)/1.16 Georgia,serif;margin:0 0 20px;max-width:100%;color:#eff5f5;text-wrap:balance;overflow-wrap:normal;word-break:normal}
.tp-header-tools{display:flex;align-items:flex-start;flex-wrap:wrap;gap:10px;min-width:0}.tp-header .tp-source-trigger{min-height:42px;padding:10px 13px;border-radius:10px;font-size:11px!important;max-width:100%}
.tp-book-info{min-width:0;max-width:100%;color:#c1d5df;font-size:11px;line-height:1.6}.tp-book-info>summary{display:flex;align-items:center;gap:8px;min-height:42px;padding:10px 4px;cursor:pointer;list-style:none;color:#c9dcdf}.tp-book-info>summary::-webkit-details-marker{display:none}.tp-book-info>summary:after{content:'⌄';font-size:15px;line-height:1}.tp-book-info[open]>summary:after{transform:rotate(180deg)}.tp-book-info[open]{flex:1 1 100%}.tp-book-content{max-width:680px;padding:13px 0 3px;border-top:1px solid #d3e4e629}.tp-book-content .tp-kicker{font-size:9px;letter-spacing:.65px;margin:0 0 7px}.tp-book-content .tp-reference{display:block;overflow:visible;font-size:11px;line-height:1.75}.tp-book-content .tp-legacy-note{font-size:11px;margin-top:9px;line-height:1.75}.tp-book-info>summary:focus-visible{outline:3px solid #88b5b2;outline-offset:3px;border-radius:6px}
.tp-header .tp-illustration{position:relative;display:block;align-self:center;width:100%;height:auto;aspect-ratio:3/2;grid-template-columns:none;grid-template-rows:none;padding:0;margin:0;border:0;border-radius:11px;overflow:hidden;background:transparent;box-shadow:0 9px 25px #061a2933}
.tp-header .tp-illustration>img{display:block;width:100%;height:100%;max-height:none;object-fit:contain;object-position:center;border-radius:0;background:transparent;box-shadow:none}
.textbook-player .tp-header .tp-illustration>button{position:absolute;top:7px;right:7px;display:grid;place-items:center;width:34px;height:34px;min-height:34px;max-width:none;padding:0;border:1px solid #d4e2e14d;border-radius:50%;background:#102a43b5;color:#f2f8f7;backdrop-filter:blur(6px);text-decoration:none}
.tp-header .tp-illustration-bar{grid-column:1/-1;padding:0;justify-content:flex-end;background:transparent;border:0;color:#c5dbe0}.textbook-player .tp-header .tp-illustration-bar button{padding:7px;min-width:36px;min-height:36px;max-width:100%;color:#c5dbe0;text-decoration:none}.tp-illustration-bar span{font-size:11px}
/* Every visible blank occupies its original place in the exercise prose. */
.tp-condition-inline{white-space:pre-wrap;line-height:2.75;padding:20px;overflow-wrap:normal;word-break:normal}
.tp-inline-gap{display:inline-flex;vertical-align:baseline;align-items:center;min-height:35px;max-width:100%;border:1px dashed #acc8cf;border-radius:8px;background:#f8fbfc;margin:1px 3px;white-space:normal;transition:background .18s,border-color .18s}
.textbook-player .tp-inline-gap>button[data-tp-gap-target]{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:64px;max-width:100%;min-height:34px;padding:5px 10px;border:0;border-radius:7px;background:transparent;color:#446b7d;font-size:15px!important;text-align:center;line-height:1.45}
.tp-inline-gap strong{font-weight:500;overflow-wrap:anywhere;min-width:0}.tp-inline-gap.active{border-style:solid;border-color:#5d9c98;box-shadow:0 0 0 2px #8db9b21c;background:#edf7f5}.tp-inline-gap.filled{border-style:solid;background:#eef5f7;border-color:#a8c7cf}.tp-inline-gap.correct{border-color:#77ab94;background:#e8f5ec}.textbook-player .tp-inline-gap.correct>button[data-tp-gap-target]{color:#2d7153}.tp-inline-gap.incorrect{border-color:#d7a09a;background:#fdf0ee}.textbook-player .tp-inline-gap.incorrect>button[data-tp-gap-target]{color:#a0524a}.tp-inline-gap.drag-over{border-color:#347f78;box-shadow:0 0 0 3px #72a79d33}.tp-inline-feedback{flex:none;font-size:13px;font-weight:600}.textbook-player .tp-inline-gap .tp-gap-clear{min-height:30px;width:24px;flex:0 0 24px;padding:3px;color:inherit}
.tp-gaps{margin:0 0 16px}.tp-gap-guide p{margin:6px 0 12px}.tp-gap-guide b{font-size:14px}.tp-word-bank{padding:12px;gap:7px}.textbook-player .tp-word-card{padding:8px 11px;min-height:39px;font-size:13px!important}.tp-gap-status{margin:8px 0 0;font-size:11px;min-height:0}.tp-condition-inline+.tp-required-source{margin-top:-6px}
@media(max-width:760px){.tp-header{padding:21px 19px;gap:17px}.tp-header.tp-header-art{grid-template-columns:minmax(0,1fr)}.tp-header .tp-title{font-size:clamp(21px,5.6vw,29px);line-height:1.2;margin-bottom:16px}.tp-header .tp-illustration{max-width:300px;justify-self:center}.tp-condition-inline{padding:16px;line-height:2.8;overflow-wrap:anywhere}.textbook-player .tp-inline-gap>button[data-tp-gap-target]{font-size:14px!important;padding:5px 8px;min-height:36px}.tp-gaps .tp-word-bank{max-height:205px;overflow-y:auto;overscroll-behavior:contain}.tp-gaps{position:relative}.tp-gap-guide p{font-size:11px}.tp-header .tp-illustration-bar{min-height:0}}
@media(max-width:380px){.tp-header{padding:18px 15px;gap:15px}.tp-header .tp-title{font-size:20px;line-height:1.22}.tp-header .tp-illustration{max-width:250px}.tp-header-tools{gap:7px}.tp-book-info>summary{font-size:10px}.tp-condition-inline{padding:13px}.textbook-player .tp-inline-gap>button[data-tp-gap-target]{font-size:13px!important;min-width:52px;padding:5px 7px}.tp-word-bank{padding:9px}.textbook-player .tp-word-card{font-size:12px!important;padding:8px}}

.tp-highlight{margin-bottom:25px}.tp-highlight-text{white-space:pre-wrap;overflow-wrap:anywhere;border:1px solid #d7e4e6;border-radius:14px;padding:20px;background:#f7fbfa;color:#33586c;font-size:16px;line-height:2.2}.textbook-player .tp-highlight-word{display:inline;vertical-align:baseline;font-size:inherit!important;line-height:inherit;letter-spacing:inherit;padding:2px 1px;margin:0;border:0;border-radius:3px;background:transparent;color:inherit;white-space:normal;text-decoration:none;text-underline-offset:5px;text-decoration-thickness:2px}.textbook-player .tp-highlight-word.selected{text-decoration-line:underline;background:#e4f1ee;color:#326f68}.textbook-player .tp-highlight-word.correct{background:#e4f3e8;color:#2d7153;text-decoration-color:#4e9674}.textbook-player .tp-highlight-word.incorrect{background:#fbedeb;color:#a0524a;text-decoration-color:#c7857c}.tp-highlight-selected{font-size:12px;line-height:1.8;color:#577d85;margin:12px 0}.tp-highlight-selected b{font-weight:500}.tp-highlight-gap{display:inline-block;max-width:100%;vertical-align:baseline}.textbook-player .tp-highlight-gap input{font:inherit;font-size:15px;line-height:1.4;color:#345f70;background:#f6fbfa;border:0;border-bottom:1px dashed #85aaa9;border-radius:3px;padding:7px 9px;width:155px;max-width:100%;margin:2px 3px;min-height:38px}.textbook-player .tp-highlight-gap input:focus{outline:2px solid #8bbab2;outline-offset:2px}.tp-highlight-word:focus-visible{outline:2px solid #8bbab2;outline-offset:2px}
@media(max-width:760px){.tp-highlight-text{padding:15px;font-size:15px;line-height:2.3}.textbook-player .tp-highlight-gap input{width:135px;font-size:14px}}

.tp-given-connections{margin:0 0 25px}.tp-connections{display:grid;gap:11px;margin-top:14px}.tp-connection{display:grid;grid-template-columns:minmax(85px,28%) minmax(25px,1fr) minmax(120px,46%);align-items:center;gap:0;min-width:0;color:#6c8c97}.textbook-player .tp-connection>button{border:1px solid #d2e0e4;border-radius:10px;background:#f9fcfc;color:#3c687b;min-height:46px;padding:10px;font-size:14px!important;min-width:0;overflow-wrap:anywhere}.tp-connection>span{font-size:13px;line-height:1.7;border:1px solid #d4e4e3;border-radius:10px;background:#f3f9f7;color:#507e7e;padding:10px 12px;min-width:0;overflow-wrap:anywhere}.tp-connection>svg{width:100%;height:24px;color:#a4bec3;overflow:visible}.tp-connection path{stroke:currentColor;stroke-width:1.5;fill:none}.tp-connection circle{fill:currentColor}.textbook-player .tp-connection.selected>button{border-color:#64a09b;background:#e4f2ed;color:#2c7167;box-shadow:0 0 0 2px #9cc9bc22}.tp-connection.selected>svg{color:#4b9387}.tp-connection.selected>span{background:#e6f3ed;border-color:#90bcb0;color:#376f64}
@media(max-width:380px){.tp-connection{grid-template-columns:minmax(68px,29%) minmax(18px,1fr) minmax(100px,50%)}.textbook-player .tp-connection>button{font-size:12px!important;padding:9px 6px}.tp-connection>span{font-size:11px;padding:9px}}

.tp-free-gap{display:inline-flex;align-items:center;vertical-align:baseline;max-width:100%;border-bottom:1px dashed #8aaeb3;background:#f5faf9;border-radius:5px;margin:1px 3px}.textbook-player .tp-free-gap input{width:120px;max-width:100%;min-width:0;border:0;background:transparent;font:inherit;font-size:15px;line-height:1.4;padding:7px 9px;min-height:37px;color:#355e70;border-radius:4px}.tp-free-gap>.tp-inline-feedback{min-width:19px;padding-right:5px;font-size:12px;color:inherit}.tp-free-gap.correct{background:#e8f5ec;border-bottom-color:#66a187;color:#347456}.tp-free-gap.incorrect{background:#fcf0ed;border-bottom-color:#ca9991;color:#a75b51}.tp-free-gap input:focus{outline:2px solid #8bbab2;outline-offset:2px}.tp-free-gap input::placeholder{color:#a0b6bc}
@media(max-width:760px){.textbook-player .tp-free-gap input{width:108px;font-size:14px;min-height:38px}}

/* Reviewed word chips already present the printed bank. Preserve its exact text
   in the DOM while giving the original exercise prose a comfortable rhythm. */
.textbook-player .tp-condition-inline{line-height:1.9}.textbook-player [data-tp-original-bank][hidden]{display:none!important}

/* The complete crossword prompt remains one click away. Its exact clue text is
   already present beside the grid, so it need not precede the activity twice. */
.tp-condition-details{border:1px solid #d7e3e7;border-radius:11px;background:#f8fbfc;margin:0 0 20px;overflow:hidden}.tp-condition-details>summary{cursor:pointer;padding:13px 16px;color:#527687;font-size:12px;line-height:1.6}.tp-condition-details>.tp-condition{border:0;border-top:1px solid #e0e9ec;border-radius:0;margin:0;background:transparent}.tp-condition-details>summary:focus-visible{outline:3px solid #88b5b2;outline-offset:-3px}
