@keyframes freedle-rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@keyframes freedle-pop{0%{opacity:0;transform:translate(-50%,-90%) scale(.92)}to{opacity:1;transform:translate(-50%,-100%) scale(1)}}.freedle-page{max-width:var(--content-max);margin:0 auto;padding:0 20px 120px;animation:freedle-rise .5s ease both}.freedle-page.zip-page .freedle-card{background:var(--zip-panel);border:1px solid var(--zip-line);border-radius:5px;box-shadow:none}.freedle-page.zip-page .freedle-drop{background:var(--zip-panel);border:1px dashed var(--zip-line-2);border-radius:5px;color:var(--zip-ink)}.freedle-page.zip-page .freedle-card-actions .primary{background:var(--zip-accent);color:#14110d;box-shadow:0 2px 0 var(--zip-accent-dk);border-radius:3px;font-family:var(--zip-display);text-transform:uppercase;letter-spacing:.07em}.freedle-page.zip-page .freedle-empty{background:var(--zip-panel);border:1px solid var(--zip-line);border-radius:5px;color:var(--zip-muted)}.freedle-hero{padding:clamp(32px,6vw,60px) 0 clamp(24px,4vw,40px)}.freedle-kicker{font-family:var(--font-mono);font-size:12.5px;font-weight:700;letter-spacing:.14em;color:var(--muted-2);margin-bottom:10px}.freedle-title{font-family:var(--font-display);font-weight:400;font-size:clamp(32px,5.6vw,56px);line-height:1.08;letter-spacing:.01em;margin:0 0 14px;text-wrap:balance}.freedle-sub{font-size:clamp(15px,1.7vw,17px);line-height:1.65;color:var(--muted);max-width:52ch;margin:0;text-wrap:pretty}.freedle-drop{cursor:pointer;border:2px dashed #c9c6bb;background:#fff;border-radius:16px;padding:clamp(28px,5vw,44px) 20px;text-align:center;transition:background .15s,border-color .15s;margin-bottom:clamp(30px,5vw,48px)}.freedle-drop.drag{border-color:var(--primary);background:var(--primary-soft)}.freedle-drop-icon{margin-bottom:10px;color:var(--primary)}.freedle-drop h2{font-family:var(--font-display);font-weight:400;font-size:clamp(18px,2.6vw,24px);letter-spacing:.02em;margin:0 0 6px}.freedle-drop p{margin:0;font-size:13.5px;color:var(--muted-2)}.freedle-shelf-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:16px}.freedle-shelf-head span{font-family:var(--font-mono);font-size:12.5px;font-weight:700;letter-spacing:.14em;color:var(--muted-2)}.freedle-shelf-head .count{font-size:11.5px;font-weight:500;letter-spacing:.03em}.freedle-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));grid-gap:14px;gap:14px;align-items:stretch}.freedle-card{background:#fff;border:1.5px solid var(--border);border-radius:14px;padding:16px;display:flex;flex-direction:column;gap:12px;min-width:0;height:100%}.freedle-card-catalog{min-height:228px}.freedle-card-top{display:flex;gap:12px;align-items:flex-start}.freedle-card-copy{min-width:0;flex:1 1}.freedle-cover{flex:none;width:44px;height:58px;border-radius:6px;color:#fbf3dd;display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-size:16px;box-shadow:inset -3px 0 0 rgba(0,0,0,.18)}.freedle-card-title{display:block;font-weight:700;font-size:14.5px;line-height:1.35;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.freedle-card-title+.freedle-pill{display:inline-block;margin:6px 0 4px}.freedle-pill.uploaded{background:#f3f1ea;color:#5c584c}.freedle-card-blurb{margin:0;font-size:13.5px;line-height:1.45;color:var(--muted);min-height:calc(1.45em * 2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.freedle-card-foot{margin-top:auto;display:flex;flex-direction:column;gap:10px}.freedle-catalog-row{display:flex;gap:8px;align-items:center;min-height:24px}.freedle-lang{display:inline-flex;gap:0;border:1px solid var(--border);border-radius:99px;overflow:hidden}.freedle-lang button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;font-family:var(--font-mono);font-size:10.5px;font-weight:700;letter-spacing:.06em;padding:3px 8px;color:var(--muted);cursor:pointer}.freedle-lang button.on{background:var(--ink,#33368f);color:#fff}.freedle-pill{font-family:var(--font-mono);font-size:11px;font-weight:700;letter-spacing:.06em;border-radius:99px;padding:4px 9px}.freedle-pill.free{background:var(--success-soft,#e9f5ee);color:var(--success,#1b7f4d)}.freedle-pill.paid{background:var(--accent-soft,#fcf1dc);color:var(--accent-deep-text,#b06e05)}.freedle-pill.owned{background:var(--primary-soft,#ecedfb);color:var(--primary,#33368f)}.freedle-pref-line{margin:-6px 0 18px;font-size:13px;line-height:1.45;color:var(--muted);max-width:72ch}.freedle-pref-line a{font-weight:700}.freedle-pref-cta{display:inline-block;margin-top:14px;font-weight:700;background:var(--text);color:var(--bg);border-radius:9px;padding:10px 16px}.freedle-confirm{position:fixed;inset:0;z-index:200;background:rgba(20,19,14,.45);display:flex;align-items:center;justify-content:center;padding:20px;box-sizing:border-box}.freedle-confirm-card{width:min(420px,100%);background:#fff;border-radius:16px;padding:22px 20px 18px;box-shadow:0 16px 40px rgba(20,19,14,.18)}.freedle-confirm-card h3{margin:0 0 8px;font-size:20px}.freedle-confirm-card p{margin:0 0 10px;color:var(--muted);font-size:14.5px}.freedle-confirm-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}.freedle-confirm-actions button{cursor:pointer;border-radius:9px;padding:9px 14px;font-weight:700;border:1.5px solid var(--border-strong);background:#fff}.freedle-confirm-actions button.ok{background:var(--text);color:var(--bg);border-color:var(--text)}.freedle-card-meta{display:block;margin-top:4px;letter-spacing:.03em}.freedle-card-meta,.freedle-prog-row{font-family:var(--font-mono);font-size:11px;color:var(--muted-2)}.freedle-prog-row{display:flex;justify-content:space-between;margin-bottom:5px}.freedle-prog-track{height:5px;border-radius:99px;background:#efece3;overflow:hidden}.freedle-prog-fill{height:100%;border-radius:99px;background:var(--primary)}.freedle-card-actions{display:flex;gap:8px;align-items:center}.freedle-card-actions .primary{cursor:pointer;flex:1 1;font-family:inherit;font-weight:700;font-size:13.5px;border:none;background:var(--text);color:var(--bg);border-radius:9px;padding:10px;min-height:40px;text-decoration:none;text-align:center}.freedle-card-actions .primary:hover{background:var(--primary);color:#fff}.freedle-card-actions .icon-btn{cursor:pointer;flex:none;width:40px;height:40px;border:1.5px solid var(--border-strong);background:#fff;border-radius:9px;display:flex;align-items:center;justify-content:center;color:#6e6c7e}.freedle-card-actions .icon-btn.danger{border-color:#e8c4be;color:#a03024}.freedle-card-actions .icon-btn:hover{background:#f4f2eb}.freedle-card-actions .icon-btn.danger:hover{background:#fbeae7}.freedle-empty{text-align:center;padding:32px 16px;color:var(--muted);border:1.5px dashed var(--border);border-radius:14px}.freedle-empty button{margin-top:14px;cursor:pointer;font-family:inherit;font-weight:700;font-size:13.5px;border:none;background:var(--primary);color:#fff;border-radius:9px;padding:10px 18px}.freedle-footer-note{border-top:1px solid var(--border);margin-top:40px;padding:24px 20px 0;text-align:center;font-size:13px;color:var(--muted-2)}.freedle-error{background:#fbeae7;color:#a03024;border-radius:10px;padding:12px 14px;margin-bottom:16px;font-size:14px}.freedle-toast{position:fixed;z-index:95;left:50%;bottom:150px;transform:translateX(-50%);background:var(--text);color:#f4f2eb;font-size:13px;font-weight:600;padding:10px 18px;border-radius:99px;box-shadow:0 10px 26px rgba(0,0,0,.3);animation:freedle-rise .2s ease both;pointer-events:none}.freedle-reader{min-height:100vh;transition:background .25s}.freedle-reader-header{position:fixed;top:0;left:0;right:0;z-index:60;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:transform .25s ease}.freedle-reader-header-inner{max-width:1100px;margin:0 auto;display:flex;align-items:center;gap:10px;padding:10px 16px}.freedle-reader-header .back{cursor:pointer;font-family:inherit;display:flex;align-items:center;gap:7px;font-weight:700;font-size:13.5px;border-radius:99px;padding:8px 14px;min-height:40px;background:transparent;text-decoration:none}.freedle-reader-header .doc-title{min-width:0;flex:1 1;font-weight:700;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.freedle-reader-header .tool{cursor:pointer;flex:none;width:40px;height:40px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-family:"IBM Plex Serif",Georgia,serif;font-weight:600;font-size:15px;background:transparent}.freedle-reader-main{margin:0 auto;padding:clamp(76px,10vh,100px) clamp(20px,5vw,40px) 120px;transition:max-width .25s}.freedle-chapter-label{font-family:var(--font-mono);font-size:10.5px;font-weight:700;letter-spacing:.18em;text-align:center;margin-bottom:26px}.freedle-chapter-title{font-weight:600;margin:0 0 .9em;text-wrap:balance}.freedle-body,.freedle-chapter-title{font-family:"IBM Plex Serif",Georgia,serif}.freedle-body{transition:color .25s}.freedle-body p{margin:0 0 1.1em;text-wrap:pretty;text-align:justify;-webkit-hyphens:auto;hyphens:auto}.freedle-body-html{text-align:initial;-webkit-hyphens:manual;hyphens:manual}.freedle-epub-host{display:block;width:100%;min-height:40vh}.freedle-epub-host:empty:before{content:"Loading chapter…";opacity:.45;font-size:.9em}.freedle-page-num{font-family:var(--font-mono);font-size:11px;text-align:center;margin-top:30px}.freedle-reader-footer{position:fixed;bottom:0;left:0;right:0;z-index:60;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:transform .25s ease}.freedle-reader-footer-inner{max-width:900px;margin:0 auto;padding:10px 20px 14px}.freedle-scrub{cursor:pointer;position:relative;height:22px;display:flex;align-items:center}.freedle-scrub-track{right:0}.freedle-scrub-fill,.freedle-scrub-track{position:absolute;left:0;height:5px;border-radius:99px}.freedle-scrub-fill{background:var(--primary)}.freedle-scrub-tick{width:2.5px;height:11px;border-radius:2px}.freedle-scrub-thumb,.freedle-scrub-tick{position:absolute;transform:translateX(-50%)}.freedle-scrub-thumb{width:14px;height:14px;border-radius:99px;background:var(--primary);box-shadow:0 2px 6px rgba(0,0,0,.3)}.freedle-nav-row{display:flex;justify-content:space-between;align-items:center;margin-top:4px}.freedle-nav-row button{cursor:pointer;font-family:inherit;font-weight:700;font-size:13px;border:none;background:transparent;padding:8px 10px;min-height:40px}.freedle-nav-row .mid{font-family:var(--font-mono);font-size:12px}.freedle-panel{position:fixed;z-index:70;border-radius:14px;padding:16px;box-shadow:0 16px 40px rgba(20,19,14,.25);animation:freedle-rise .2s ease both}.freedle-settings{top:64px;right:16px;width:min(300px,calc(100vw - 32px))}.freedle-panel-label{font-family:var(--font-mono);font-size:10.5px;font-weight:700;letter-spacing:.14em;opacity:.55;margin-bottom:8px}.freedle-fs-row{display:flex;align-items:center;gap:10px;margin-bottom:16px}.freedle-fs-row button{cursor:pointer;flex:none;width:44px;height:40px;border-radius:9px;font-family:"IBM Plex Serif",Georgia,serif;background:transparent}.freedle-fs-row .label{flex:1 1;text-align:center;font-family:var(--font-mono);font-size:12.5px;font-weight:700}.freedle-opt-row{display:flex;gap:8px;margin-bottom:16px}.freedle-opt-row:last-child{margin-bottom:0}.freedle-opt-row button{cursor:pointer;flex:1 1;font-family:var(--font-mono);font-size:11.5px;font-weight:700;border-radius:9px;padding:9px 4px;min-height:38px}.freedle-toc{top:0;left:0;bottom:0;z-index:80;width:min(320px,86vw);border-radius:0;overflow:auto;box-shadow:16px 0 44px rgba(20,19,14,.3)}.freedle-toc-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:16px}.freedle-toc-head button{cursor:pointer;border:none;background:transparent;font-size:18px;width:36px;height:36px}.freedle-toc-list{display:grid;grid-gap:2px;gap:2px;margin-bottom:22px}.freedle-toc-list button{cursor:pointer;font-family:inherit;text-align:left;display:flex;justify-content:space-between;gap:10px;border:none;border-radius:8px;padding:11px 10px;font-size:13.5px;font-weight:600;min-height:42px;background:transparent}.freedle-toc-list button span:last-child{font-family:var(--font-mono);font-size:11.5px;opacity:.55}.freedle-mark{color:inherit;border-radius:2px;padding:.08em .14em;margin:0 -.04em;box-decoration-break:clone;-webkit-box-decoration-break:clone;opacity:.88}.freedle-hl-item{border-left:3px solid #ffc94a;padding:6px 10px;font-family:"IBM Plex Serif",Georgia,serif;font-size:13px;line-height:1.55;opacity:.9;margin-bottom:8px}.freedle-hl-item .pg{display:block;font-family:var(--font-mono);font-size:10px;opacity:.55;margin-top:3px}.freedle-note-item{border-radius:9px;padding:9px 10px;font-size:13px;line-height:1.5;margin-bottom:8px}.freedle-sel{position:fixed;z-index:90;transform:translate(-50%,-100%);animation:freedle-pop .15s ease both}.freedle-sel-bar{display:flex;align-items:center;gap:2px;background:#191833;border-radius:12px;padding:6px;box-shadow:0 12px 30px rgba(0,0,0,.35)}.freedle-sel-bar button{cursor:pointer;border:none;background:transparent;color:#f4f2eb;font-family:inherit;font-size:12.5px;font-weight:700;padding:8px 10px;min-height:34px}.freedle-sel-bar .dot{width:34px;height:34px;display:flex;align-items:center;justify-content:center;padding:0}.freedle-sel-bar .dot span{width:17px;height:17px;border-radius:99px;display:block}.freedle-sel-bar .sep{width:1px;height:20px;background:rgba(244,242,235,.25);margin:0 4px}.freedle-sel-bar .define{color:#ffc94a}.freedle-modal{position:fixed;z-index:90;left:50%;bottom:90px;transform:translateX(-50%);width:min(420px,calc(100vw - 32px));border-radius:14px;padding:16px;box-shadow:0 16px 40px rgba(20,19,14,.3);animation:freedle-rise .2s ease both}.freedle-modal textarea{width:100%;box-sizing:border-box;min-height:70px;border-radius:9px;padding:10px;font-family:inherit;font-size:14px;background:transparent;outline-color:var(--primary);resize:vertical}.freedle-modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:10px}.freedle-modal-actions button{cursor:pointer;font-family:inherit;font-weight:700;font-size:13px;border-radius:9px;padding:9px 16px}.freedle-modal-actions .ghost{background:transparent}.freedle-modal-actions .solid{border:none;background:#191833;color:#faf9f5;padding:9px 18px}.freedle-quote{font-family:"IBM Plex Serif",Georgia,serif;font-size:12.5px;line-height:1.5;opacity:.7;border-left:3px solid #ffc94a;padding-left:9px;margin-bottom:10px}.freedle-loading{padding:80px 20px;text-align:center;color:var(--muted)}.freedle-reader-root .student-nav-bottom,.freedle-reader-root .student-nav-top{display:none!important}.freedle-page-notes{margin:18px 0 8px}.freedle-page-notes-label{font-family:var(--font-mono);font-size:11px;font-weight:700;letter-spacing:.12em;opacity:.55;margin-bottom:8px}.freedle-page-notes-row{display:flex;flex-wrap:wrap;gap:8px}.freedle-page-note-thumb{width:72px;height:72px;padding:0;border:1.5px solid var(--bd,#d9cfb4);border-radius:10px;overflow:hidden;background:#fff;cursor:pointer}.freedle-page-note-thumb img{width:100%;height:100%;object-fit:cover;display:block}.freedle-page-note-lightbox{position:fixed;inset:0;z-index:120;background:rgba(20,19,14,.72);display:flex;align-items:center;justify-content:center;padding:20px}.freedle-page-note-lightbox-card{width:min(520px,calc(100vw - 32px));max-height:calc(100vh - 48px);overflow:auto;background:#fbf6e9;border-radius:16px;padding:14px}.freedle-page-note-lightbox-card img{width:100%;max-height:70vh;object-fit:contain;border-radius:10px;display:block}.freedle-page-note-lightbox-card p{margin:10px 0 0;font-size:14px;line-height:1.45}.freedle-page-note-lightbox-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}.freedle-page-note-lightbox-actions button{cursor:pointer;border:1.5px solid #d9cfb4;background:#fff;border-radius:9px;padding:8px 12px;font:inherit;font-weight:700}.freedle-page-note-lightbox-actions button.danger{color:#b00020;border-color:#b00020}