.learning-shell{height:100dvh;width:100%;max-width:480px;margin:0 auto;display:flex;flex-direction:column;background:var(--page);position:relative;color:#4e3540}
.learning-header{height:68px;flex-shrink:0;display:flex;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid var(--line)}
.learning-header h1{flex:1;text-align:center;font-size:18px}.learning-header #actions{min-width:44px;display:flex;gap:4px}.icon-button{width:44px;height:44px;border:0;background:transparent;color:var(--rose);font-size:28px;display:inline-flex;align-items:center;justify-content:center;border-radius:22px;flex-shrink:0}
.icon-button.primary-icon{background:#fcecef;color:var(--rose);border:1px solid #edbccd;font-size:25px}.learning-content{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;padding:18px 16px 100px}.learning-content:empty{padding:0}.learning-notice{margin:0;padding:12px 18px;background:#fcecef;color:#79525f;font-size:13px;line-height:1.6}
.learning-composer{border-top:1px solid var(--line);padding:8px 12px max(12px,env(safe-area-inset-bottom));background:var(--page)}.input-row{display:flex;align-items:flex-end;gap:6px;border:1px solid #edbccd;border-radius:27px;background:#fffdfd;padding:5px 6px}.input-row textarea{max-height:130px;min-height:40px;line-height:1.6}.upload-label{cursor:pointer;font-size:25px}.draft-status{font-size:11px;color:var(--muted);text-align:center;margin:6px 0 0}
.learning-card{padding:17px;margin:0 0 12px;border:1px solid #f7e2e8;border-radius:19px;background:#fffdfd;line-height:1.7;overflow-wrap:anywhere}.learning-card h2,.learning-card h3{margin:0 0 7px;font-size:17px;line-height:1.55}.learning-card p{margin:5px 0;font-size:14px;white-space:pre-wrap}.learning-meta{font-size:12px!important;color:var(--muted)}.small-label{font-size:12px;color:var(--rose);margin:8px 0 3px}.definition{padding:12px 16px}.definition p{margin:3px 0;font-size:13px}.definition strong{color:var(--rose);margin-right:10px;font-weight:550}.section-title{font-size:16px;margin:18px 0 12px}
.package-button,.point-button{display:block;width:100%;text-align:left;color:inherit;cursor:pointer}.package-title{display:flex;align-items:center;gap:12px}.book-symbol{width:42px;height:42px;background:#fcecef;border-radius:13px;display:grid;place-items:center;font-size:25px;color:var(--rose)}.package-title strong{flex:1}.chevron{color:var(--rose);font-size:23px}.package-button p{margin-left:54px}.empty-state{padding:85px 15px;text-align:center;color:var(--muted);line-height:1.8}.empty-state strong{display:block;font-size:20px;color:var(--rose);margin-bottom:12px}.text-action{border:0;background:transparent;color:var(--rose);padding:10px 8px;min-height:44px;font-size:13px}.full-action{width:100%;margin:10px 0 0}.outline-action{border:1px solid #edbccd;background:#fffdfd;color:var(--rose);border-radius:23px;min-height:46px;padding:10px 18px}.floating-add{position:absolute;right:22px;bottom:max(24px,env(safe-area-inset-bottom));width:56px;height:56px;border:0;border-radius:50%;background:var(--rose);color:#fff;font-size:32px;box-shadow:0 5px 16px #b94f7133;z-index:2}
.segments{display:flex;border-radius:22px;background:#fcecef;padding:4px;margin:14px 0;gap:4px}.segments button{flex:1;border:0;border-radius:19px;padding:9px;background:transparent;color:var(--muted);font-size:14px}.segments button.selected{background:var(--rose);color:white}.advice-entry{display:flex;align-items:center;gap:12px;width:100%;text-align:left;color:inherit}.advice-entry span{flex:1}.advice-entry strong{display:block;font-size:15px}.advice-entry small{display:block;color:var(--muted);margin-top:3px;font-size:11px}
.draft-context{border-radius:18px;padding:10px 14px;background:#fcecef;font-size:13px;color:var(--muted);margin-bottom:18px}.draft-context strong{color:#4e3540;margin-left:12px}.draft-message{display:flex;gap:9px;margin:15px 0;align-items:flex-start}.draft-message.user{justify-content:flex-end}.draft-avatar{width:31px;height:31px;flex-shrink:0}.draft-bubble{background:#fffdfd;border:1px solid #f7e2e8;padding:12px 15px;border-radius:5px 20px 20px;max-width:calc(100% - 42px);font-size:16px;line-height:1.75;white-space:pre-wrap;overflow-wrap:anywhere}.user .draft-bubble{background:var(--bubble);border:0;border-radius:20px 20px 5px;max-width:88%}.result-title{font-size:15px;display:flex;justify-content:space-between;margin:23px 0 12px}.readonly-badge{font-size:11px;color:var(--muted)}.result-card{border-left:3px solid #edbccd}.inline-warning{color:#994558;font-size:13px;line-height:1.6;margin:9px 0}.attachment-row{display:flex;flex-wrap:wrap;gap:9px}.attachment-thumb{position:relative;width:78px;height:78px;margin:5px 0}.attachment-thumb img{width:100%;height:100%;object-fit:cover;border-radius:12px;border:1px solid var(--line)}.attachment-thumb button{position:absolute;right:-5px;top:-5px;border:0;width:24px;height:24px;border-radius:50%;background:var(--rose);color:white;font-size:18px}.source-quote{padding:12px;border-radius:12px;background:#fff8f6;white-space:pre-wrap;font-size:14px;border-left:3px solid #edbccd;line-height:1.7}.source-img{width:100%;max-height:260px;object-fit:contain;margin-top:10px;border-radius:12px}
.loading-state{text-align:center;padding:120px 18px 40px}.loading-symbol{width:94px;height:94px;background:#fcecef;border-radius:50%;display:grid;place-items:center;margin:0 auto 25px;font-size:40px;color:var(--rose)}.loading-state h2{font-size:22px}.loading-state p{font-size:14px;color:var(--muted)}.indeterminate{overflow:hidden;border-radius:20px;height:9px;background:#f6dce4;margin:25px 20px}.indeterminate::after{content:"";display:block;width:40%;height:100%;background:var(--rose);border-radius:20px;animation:travel 1.6s ease-in-out infinite}@keyframes travel{0%{transform:translateX(-100%)}100%{transform:translateX(350%)}}
.swipe-wrap{position:relative;overflow:hidden;border-radius:19px;margin-bottom:12px;background:#ac3554}.swipe-wrap .learning-card{margin:0;position:relative;z-index:1;transition:transform .15s;touch-action:pan-y}.swipe-wrap.revealed .learning-card{transform:translateX(-76px)}.delete-swipe{position:absolute;right:0;top:0;bottom:0;width:76px;background:#ac3554;border:0;color:white;font-size:15px}.swipe-wrap .delete-swipe:focus{z-index:3}.graph-canvas{width:100%;display:block;min-height:100px}.graph-canvas text{font-family:inherit;font-size:13px;fill:#4e3540}.graph-canvas rect{fill:#fcecef;stroke:#edbccd;stroke-width:1.5}.graph-canvas .active rect{fill:var(--rose);stroke:var(--rose)}.graph-canvas .active text{fill:white}.graph-canvas .related rect{stroke:var(--rose);stroke-width:2}.graph-canvas .dim{opacity:.5}.graph-canvas path{fill:none;stroke:#d9a4b6;stroke-width:1.8}.graph-canvas .graph-node{cursor:pointer}.graph-link{display:block;width:100%;text-align:left;padding:12px;border:1px solid var(--line);border-radius:12px;background:white;color:inherit;margin:8px 0}.graph-link small{display:block;color:var(--muted);line-height:1.7}.graph-extra{display:flex;flex-wrap:wrap;gap:8px}.graph-extra button{border:1px solid #edbccd;border-radius:18px;padding:10px;background:white;color:var(--rose)}.advice-step{border-left:2px solid #edbccd;padding:2px 0 8px 16px;margin:14px 0}.advice-step h3{font-size:16px;margin:2px 0 8px}.advice-step p{font-size:14px;line-height:1.8;white-space:pre-wrap}.hint{text-align:center;font-size:12px;color:var(--muted);line-height:1.7}
dialog{border:1px solid var(--line);border-radius:24px 24px 0 0;background:var(--page);color:inherit;width:100%;max-width:480px;max-height:88dvh;margin:auto auto 0;padding:18px 18px max(25px,env(safe-area-inset-bottom));overflow:auto}dialog::backdrop{background:#30182070}.modal-header{display:flex;align-items:center;justify-content:space-between}.modal-header h2{font-size:18px;margin:0}.modal-header .icon-button{font-size:30px}#modal-body{padding-top:14px}.modal-actions{display:flex;gap:10px;margin-top:24px}.modal-actions button{flex:1}.learning-entry{display:flex;gap:10px;margin-bottom:9px}.learning-entry a,.learning-entry button{flex:1;text-align:center;border:1px solid #edbccd;color:var(--rose);text-decoration:none;font-size:13px;padding:11px 8px;border-radius:23px;background:transparent;cursor:pointer;font:inherit}.shell[data-character="learner"]::before{background:none}
.learning-entry[hidden]{display:none}
.learning-heading{display:flex;align-items:center;justify-content:center;flex:1;min-width:0;gap:2px}.learning-heading h1{flex:0 1 auto;min-width:0;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#package-info{font-size:20px;width:38px}#package-info[hidden]{display:none}
img.learner,[data-character="learner"] .reply-avatar,.draft-avatar{object-fit:cover;object-position:center;border-radius:50%}
@media(prefers-reduced-motion:reduce){.indeterminate::after{animation:none;width:45%}.swipe-wrap .learning-card{transition:none}}

.icon-button:disabled{opacity:.45;cursor:default}.icon-button[aria-busy="true"]{opacity:.75}
.action-spinner{width:19px;height:19px;border:2px solid #edbccd;border-top-color:var(--rose);border-radius:50%;animation:action-spin .8s linear infinite}
@keyframes action-spin{to{transform:rotate(360deg)}}
.draft-feedback{margin:18px 0;padding:12px 15px;background:#fcecef;border-radius:15px;color:#79525f;font-size:14px;line-height:1.8;white-space:pre-wrap}
.prior-result{margin:18px 0;padding:12px 15px;border-left:2px solid #edbccd;background:#fff8f6;border-radius:0 12px 12px 0;color:var(--muted)}
.prior-result small{font-size:11px}.prior-result p{font-size:13px;line-height:1.7;white-space:pre-wrap;overflow-wrap:anywhere;margin:7px 0 0}
@media(prefers-reduced-motion:reduce){.action-spinner{animation:none}}

.pkg-select-overlay{position:fixed;inset:0;z-index:30;display:flex;align-items:flex-end;justify-content:center;background:#30182070}
.pkg-select-overlay[hidden]{display:none}
.pkg-select-dialog{width:100%;max-width:480px;max-height:80dvh;background:var(--page);border-radius:24px 24px 0 0;padding:18px 18px max(25px,env(safe-area-inset-bottom));overflow:auto}
.pkg-select-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.pkg-select-header h2{font-size:18px;margin:0;color:var(--rose)}
.pkg-select-close{border:0;background:transparent;color:var(--rose);font-size:28px;width:44px;height:44px;cursor:pointer;border-radius:22px}
.pkg-select-close:hover{background:#fcecef}
.package-select-row{display:flex;align-items:center;justify-content:space-between;width:100%;border:1px solid #edbccd;border-radius:19px;padding:14px 16px;margin-bottom:10px;background:#fffdfd;cursor:pointer;text-align:left;color:inherit;font:inherit}
.package-select-row:hover{background:#fcecef}
.package-select-row strong{font-size:15px;color:#4e3540}
.package-select-row span{font-size:12px;color:var(--muted)}