.cropper-container{-webkit-touch-callout:none;direction:ltr;font-size:0;line-height:0;position:relative;-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.cropper-container img{backface-visibility:hidden;display:block;height:100%;image-orientation:0deg;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;width:100%}.cropper-canvas,.cropper-crop-box,.cropper-drag-box,.cropper-modal,.cropper-wrap-box{bottom:0;left:0;position:absolute;right:0;top:0}.cropper-canvas,.cropper-wrap-box{overflow:hidden}.cropper-drag-box{background-color:#fff;opacity:0}.cropper-modal{background-color:#000;opacity:.5}.cropper-view-box{display:block;height:100%;outline:1px solid #39f;outline-color:rgba(51,153,255,.75);overflow:hidden;width:100%}.cropper-dashed{border:0 dashed #eee;display:block;opacity:.5;position:absolute}.cropper-dashed.dashed-h{border-bottom-width:1px;border-top-width:1px;height:33.33333%;left:0;top:33.33333%;width:100%}.cropper-dashed.dashed-v{border-left-width:1px;border-right-width:1px;height:100%;left:33.33333%;top:0;width:33.33333%}.cropper-center{display:block;height:0;left:50%;opacity:.75;position:absolute;top:50%;width:0}.cropper-center:after,.cropper-center:before{background-color:#eee;content:" ";display:block;position:absolute}.cropper-center:before{height:1px;left:-3px;top:0;width:7px}.cropper-center:after{height:7px;left:0;top:-3px;width:1px}.cropper-face,.cropper-line,.cropper-point{display:block;height:100%;opacity:.1;position:absolute;width:100%}.cropper-face{background-color:#fff;left:0;top:0}.cropper-line{background-color:#39f}.cropper-line.line-e{cursor:ew-resize;right:-3px;top:0;width:5px}.cropper-line.line-n{cursor:ns-resize;height:5px;left:0;top:-3px}.cropper-line.line-w{cursor:ew-resize;left:-3px;top:0;width:5px}.cropper-line.line-s{bottom:-3px;cursor:ns-resize;height:5px;left:0}.cropper-point{background-color:#39f;height:5px;opacity:.75;width:5px}.cropper-point.point-e{cursor:ew-resize;margin-top:-3px;right:-3px;top:50%}.cropper-point.point-n{cursor:ns-resize;left:50%;margin-left:-3px;top:-3px}.cropper-point.point-w{cursor:ew-resize;left:-3px;margin-top:-3px;top:50%}.cropper-point.point-s{bottom:-3px;cursor:s-resize;left:50%;margin-left:-3px}.cropper-point.point-ne{cursor:nesw-resize;right:-3px;top:-3px}.cropper-point.point-nw{cursor:nwse-resize;left:-3px;top:-3px}.cropper-point.point-sw{bottom:-3px;cursor:nesw-resize;left:-3px}.cropper-point.point-se{bottom:-3px;cursor:nwse-resize;height:20px;opacity:1;right:-3px;width:20px}@media(min-width:768px){.cropper-point.point-se{height:15px;width:15px}}@media(min-width:992px){.cropper-point.point-se{height:10px;width:10px}}@media(min-width:1200px){.cropper-point.point-se{height:5px;opacity:.75;width:5px}}.cropper-point.point-se:before{background-color:#39f;bottom:-50%;content:" ";display:block;height:200%;opacity:0;position:absolute;right:-50%;width:200%}.cropper-invisible{opacity:0}.cropper-bg{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC)}.cropper-hide{display:block;height:0;position:absolute;width:0}.cropper-hidden{display:none!important}.cropper-move{cursor:move}.cropper-crop{cursor:crosshair}.cropper-disabled .cropper-drag-box,.cropper-disabled .cropper-face,.cropper-disabled .cropper-line,.cropper-disabled .cropper-point{cursor:not-allowed}.free-talk-page .chat-container{height:100%;display:flex;flex-direction:column;overflow:hidden}.free-talk-page .messages{flex-grow:1;padding:16px;overflow-y:auto;display:flex;flex-direction:column;gap:12px}.free-talk-page .message{padding:12px 16px;border-radius:18px;word-break:break-word;box-shadow:0 1px 2px rgba(0,0,0,.08);line-height:1.5;animation:fadeIn .3s ease-in-out;max-width:80%;position:relative;font-size:1.1em}.free-talk-page .system-message{align-self:center;max-width:90%;font-size:.9em;font-style:italic;color:var(--ion-color-medium-shade, #666);background-color:var(--ion-color-light-tint, #f0f0f0);box-shadow:none;text-align:center;border-radius:12px;padding:8px 16px}.free-talk-page .user-message{background-color:var(--ion-color-secondary);color:#fff;align-self:flex-end;border-bottom-right-radius:4px}.free-talk-page .message .clickable-word{cursor:pointer;border-bottom:1px dotted rgba(255,255,255,.7);transition:background-color .2s ease}.free-talk-page .system-message .clickable-word{border-bottom:1px dotted var(--ion-color-medium)}.free-talk-page .message .clickable-word:hover{background-color:rgba(255,255,255,.15);border-radius:3px}.free-talk-page .input-area-voice-only{display:flex;align-items:center;padding:8px;gap:8px;background:var(--ion-color-light);border-top:1px solid var(--ion-color-step-150, #e0e0e0)}.free-talk-page .textarea-wrapper-voice-only{flex:1;background-color:#fff;border-radius:20px;padding:0 16px;display:flex;align-items:center;min-height:44px;border:1px solid #ddd}.free-talk-page .textarea-wrapper-voice-only ion-textarea{--background: transparent;--padding-top: 10px;--padding-bottom: 10px;--padding-start: 0;--padding-end: 0;--placeholder-color: #8a8a8f;--placeholder-opacity: 1;color:#000}:root{--ion-font-family: "Nunito", sans-serif;--ion-color-primary: #26a69a;--ion-color-primary-rgb: 38, 166, 154;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #229287;--ion-color-primary-tint: #3dafa3;--ion-color-secondary: #9f5fa1;--ion-color-tertiary: #ec407a;--ion-color-success: #209443;--ion-color-warning: #FF9800;--ion-color-danger: #F44336;--ion-color-light: #f4f5f8;--ion-color-medium: #929c9c;--ion-color-dark: #222428;--ion-background-color: #f8f9fa;--ion-text-color: #212121;--ion-card-background: #ffffff;--radius: 20px;--completion-angle: 0deg}body{background-color:var(--ion-background-color);font-family:var(--ion-font-family);-webkit-overflow-scrolling:touch}ion-app{margin:0 auto;box-shadow:0 0 20px rgba(0,0,0,.1);position:relative;-webkit-backface-visibility:hidden;backface-visibility:hidden}ion-content{--background: var(--ion-background-color);will-change:transform}.page-padding{padding:25px 10px}.rounded{border-radius:var(--radius)}.section-card{background:var(--ion-card-background);border-radius:var(--radius);box-shadow:none;border:1px solid #e9ecef;overflow:hidden;margin-bottom:16px;transform:translateZ(0);width:97%;max-width:600px;margin-left:auto;margin-right:auto}.title-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 16px;color:var(--ion-color-primary-shade)}hr{border:0;border-top:1px solid #e0e0e0;margin:1rem 0}ion-button{--border-radius: 50px}.ion-color-success,.ion-color-warning{--ion-color-contrast: #ffffff !important}.screen{display:none}.screen.active{display:block;animation:fadeIn .3s ease-in-out}#welcome-auth-container{position:fixed;top:0;left:0;width:100%;height:100%;z-index:9999;display:flex;align-items:center;justify-content:center;background-color:var(--ion-color-primary-shade);color:#fff;transition:opacity .5s ease-out}.auth-card{background:rgba(26,36,48,.6);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.15);border-radius:16px;padding:2rem;width:90%;max-width:380px;text-align:center;box-shadow:0 8px 32px rgba(0,0,0,.37);animation:fadeIn .5s ease-in-out}.auth-card h4{color:#fff;text-shadow:1px 1px 3px rgba(0,0,0,.5)}.auth-card p{color:#e0e0e0;line-height:1.6}.logo-spinner-wrapper{position:relative;width:100px;height:100px;margin:1rem auto}.welcome-logo{width:100%;height:100%;max-width:100px;max-height:100px;border-radius:50%}.account-content-wrapper{max-width:400px;margin:0 auto}.avatar{width:40px;height:40px;border-radius:50%;overflow:hidden;flex-shrink:0}.avatar img{width:100%;height:100%;object-fit:cover}.avatar-large{width:80px;height:80px}.subtle{font-size:14px;color:#666}.profile-modal-header{display:flex;flex-direction:column;align-items:center;padding:24px 16px;background-color:var(--ion-color-primary-shade);color:#fff}.avatar-upload-container{position:relative;width:90px;height:90px;cursor:pointer}.avatar-upload-preview{width:100%;height:100%;border-radius:50%;border:3px solid rgba(255,255,255,.8);object-fit:cover;background-color:rgba(255,255,255,.2)}.avatar-upload-icon{position:absolute;bottom:0;right:0;background:#fff;color:var(--ion-color-primary-shade);border-radius:50%;width:32px;height:32px;display:flex;align-items:center;justify-content:center;font-size:20px;box-shadow:0 2px 4px rgba(0,0,0,.2)}.highlight-action-green{--color: var(--ion-color-success) !important;font-weight:600}.highlight-action-red{--color: var(--ion-color-danger) !important;font-weight:600}.cropper-modal-content{display:flex;flex-direction:column;height:100%}.cropper-container{flex-grow:1;overflow:hidden;background-color:#222}.cropper-container img{max-width:100%}#lesson-selection-container ion-select.full-width-select::part(text){font-size:18px;font-weight:700;color:var(--ion-color-primary-shade)}.full-width-select{width:100%;--padding-start: 0;font-weight:600}.lesson-card-wrapper{position:relative;background:#fff;border:1px solid #e9ecef;border-radius:20px;padding:4px;margin-bottom:16px;transition:all .3s ease;box-shadow:0 2px 8px rgba(0,0,0,.04)}.lesson-card-wrapper:hover{border-color:var(--ion-color-primary);box-shadow:0 4px 12px rgba(var(--ion-color-primary-rgb),.15)}.lesson-progress-container{padding:0 16px 16px}.sub-lesson-list{display:flex;flex-direction:column;align-items:center;margin-left:50px;padding-bottom:16px;position:relative}.sub-lesson-item{display:flex;align-items:center;position:relative;width:280px;transform:translateZ(0)}.sub-lesson-connector{position:absolute;left:33px;top:-8px;width:4px;height:16px;z-index:1;background-color:#e0e0e0;background-image:linear-gradient(var(--ion-color-primary),var(--ion-color-primary));background-repeat:no-repeat;background-size:100% 0;background-position:top;transition:background-size .4s ease-in}.sub-lesson-connector.animate-fill{background-size:100% 100%}.sub-lesson-item:first-child .sub-lesson-connector{display:none}.sub-lesson-circle{border-radius:50%;display:flex;align-items:center;justify-content:center;border-width:4px;border-style:solid;position:relative;z-index:2;background-color:#fff;cursor:pointer;transition:transform .3s ease;overflow:hidden;flex-shrink:0}.study-circle-lg{width:70px;height:70px;margin:12px 0}.normal-circle{width:50px;height:50px;margin:12px 10px}.sub-lesson-circle ion-icon{font-size:28px}.study-circle-lg ion-icon{font-size:40px}.sub-lesson-label{margin-left:16px;font-size:1.1em}.sub-lesson-image{width:100%;height:100%;object-fit:cover;border-radius:50%}.sub-lesson-circle.unlocked{border-color:#e0e0e0;color:var(--ion-color-primary-shade)}.sub-lesson-circle.unlocked:hover{transform:scale(1.05)}.sub-lesson-circle.unlocked.is-active{border-color:#e0e0e0}.sub-lesson-label.unlocked{color:var(--ion-color-dark)}.sub-lesson-circle.completed{border-color:var(--ion-color-primary);background-color:#fff;color:var(--ion-color-dark)}.sub-lesson-label.completed{color:var(--ion-color-medium)}.sub-lesson-connector.completed{background-color:var(--ion-color-primary)}.sub-lesson-circle.locked{border-color:#e0e0e0;background-color:#f5f5f5;cursor:not-allowed;position:relative}.sub-lesson-circle .locked-image{opacity:.4;filter:grayscale(100%)}.sub-lesson-label.locked{color:#bdbdbd}.sub-lesson-score{background-color:var(--ion-color-secondary);color:#fff;font-size:.8em;font-weight:700;padding:2px 8px;border-radius:10px;line-height:1;margin:8px}.completion-checkmark{position:absolute;bottom:-1px!important;left:50%!important;transform:translate(-50%)!important;width:20px;height:20px;color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;border:2px solid white;font-size:16px;z-index:4;box-shadow:0 1px 3px rgba(0,0,0,.2)}.completion-checkmark.perfect{background-color:var(--ion-color-success)}.completion-checkmark.good{background-color:var(--ion-color-warning)}.completion-checkmark.low{background-color:var(--ion-color-danger)}.lesson-card-completed{border:2px solid #4caf50;background:#f1f8e9}.lesson-card-wrapper.expanded{border:2px solid var(--ion-color-primary);box-shadow:0 6px 20px rgba(0,0,0,.08)}.lesson-completion-badge{position:absolute;top:10px;right:10px;z-index:5;filter:drop-shadow(0 2px 3px rgba(0,0,0,.2));opacity:0;animation:badge-appear .5s .2s cubic-bezier(.175,.885,.32,1.275) forwards}.lesson-completion-badge span{color:#fff;font-size:16px;font-weight:700;padding:4px 10px;border-radius:12px;border:2px solid white;line-height:1;margin:10px}.lesson-completion-badge.badge-low span{background-color:var(--ion-color-danger)}.lesson-completion-badge.badge-good span{background-color:var(--ion-color-warning)}.lesson-completion-badge.badge-perfect span{background-color:var(--ion-color-success);box-shadow:0 0 12px rgba(46,204,113,.8)}.study-page-title,.listen-page-title{font-size:1.6em;font-weight:800;color:var(--ion-color-dark);margin:0 0 16px;text-align:center}.requirement-card{background-color:#e3f2fd;border:1px solid #bbdefb;border-radius:12px;margin-bottom:24px;padding:12px 16px}.requirement-card .req-title{font-size:1.1em;font-weight:700;color:#0d47a1;display:flex;align-items:center;gap:8px;margin-bottom:8px;cursor:pointer}.requirement-card .requirement-list{list-style-type:none;padding-left:8px;margin:0;max-height:0;overflow:hidden;transition:max-height .3s ease-in-out,margin-top .3s ease-in-out}.requirement-card .requirement-list li{color:#1976d2;margin-bottom:4px;font-size:.9em}.requirement-card .toggle-icon{margin-left:auto;transition:transform .3s ease-in-out}.requirement-card.expanded .toggle-icon{transform:rotate(180deg)}.requirement-card.expanded .requirement-list{max-height:200px;margin-top:8px}.word-card-badge{position:absolute;top:10px;left:50%;transform:translate(-50%);z-index:20;font-weight:600}.study-text-content .dict-clickable-word{cursor:pointer;border-bottom:1px dotted var(--ion-color-secondary);transition:background-color .2s ease-in-out;padding:0 2px}.study-text-content .dict-clickable-word:hover{background-color:rgba(var(--ion-color-secondary-rgb, 159, 95, 161),.15);border-radius:4px}#review-session-card{background:linear-gradient(135deg,#a01759,var(--ion-color-primary))!important;color:var(--ion-color-secondary-contrast);border:none;animation:fadeInScale .5s ease-out forwards}.review-card-content{display:flex;align-items:center;gap:16px;padding:12px}.review-card-content dotlottie-wc{width:60px;height:60px;flex-shrink:0}.review-card-text{flex-grow:1}.review-card-text h4{margin:0 0 4px;font-weight:700;font-size:.9em}.review-card-text p{margin:0;opacity:.9;font-size:.7em}#start-review-session-btn{--border-radius: 20px;--box-shadow: 0 4px 6px rgba(0, 0, 0, .1);font-weight:600;flex-shrink:0;font-size:.8em}.word-card-study-container{position:relative;margin-bottom:20px}.flip-card{background-color:transparent;width:100%;aspect-ratio:16 / 10;perspective:1000px}.flip-card-inner{position:relative;width:100%;height:100%;text-align:center;transition:transform .6s;transform-style:preserve-3d;box-shadow:0 4px 12px rgba(0,0,0,.08);border-radius:16px}.flip-card.flipped .flip-card-inner{transform:rotateY(180deg)}.flip-card-front,.flip-card-back{position:absolute;width:100%;height:100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;border-radius:16px;background-color:#fff;border:1px solid #e0dccc;display:flex;flex-direction:column;overflow:hidden}.flip-card-back{transform:rotateY(180deg)}.card-content-main{flex:4;display:flex;justify-content:center;align-items:center;padding:20px;position:relative;background-color:#fffbf5}.card-content-sub{flex:1;background-color:#f8f9fa;border-top:1px solid #e0dccc;display:flex;justify-content:center;align-items:center;padding:10px;font-size:1.1em;font-weight:500;color:#555}.extrude-text{font-weight:700;line-height:1.2;transform-style:preserve-3d;position:relative}.extrude-text.front-face{font-size:3rem;font-family:Balsamiq Sans,sans-serif!important;background-image:linear-gradient(135deg,#ff6b6b,#e53e3e);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;--text-fill-color: transparent}.extrude-text.front-face:before{content:attr(data-text);position:absolute;top:0;left:0;z-index:-1;color:#701313;transform:translateZ(-20px);-webkit-text-stroke:1px rgba(0,0,0,.1)}.normal-text-back{font-size:2rem;line-height:1.2;color:var(--ion-color-primary-shade);font-weight:400}.study-card-controls{position:absolute;z-index:10;--button-size: 36px}.study-card-controls ion-button{--background: #f9efdf;--background-activated: rgba(0, 0, 0, .1);--color: #555;--padding-start: 0;--padding-end: 0;width:20px;height:20px;font-size:0px}.sound-button-control{top:5px;right:10px}.flip-button-control{top:5px;left:10px}.listen-progress-bar,.lesson-progress-bar-background{height:12px;background-color:#e0e0e0;border-radius:6px;overflow:hidden;position:relative}.listen-progress-bar{margin:8px 0 24px;--progress-background: var(--ion-color-primary)}.lesson-progress-bar-foreground{height:100%;background-color:var(--ion-color-primary);border-radius:6px;transition:width .5s ease-in-out}.lesson-progress-label{position:absolute;left:8px;top:50%;transform:translateY(-50%);font-size:9px;font-weight:700;color:#fff;text-shadow:0 0 2px rgba(0,0,0,.5)}.listen-question-area{text-align:center;margin-bottom:24px}.listen-question-area p{font-size:1.1em;color:var(--ion-color-dark);margin:16px 0}.listen-play-button{--border-radius: 50%;width:64px;height:64px;--box-shadow: 0 4px 15px rgba(0, 0, 0, .1);position:relative;z-index:1}.listen-play-button-study{--border-radius: 50%;width:50px;height:50px;--box-shadow: 0 4px 15px rgba(0, 0, 0, .1);position:relative;z-index:1}.listen-play-button ion-icon{font-size:32px}ion-button.is-audio-playing:before,ion-button.is-audio-playing:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;border-radius:50%;background-color:var(--ion-color-primary-shade);z-index:-1;opacity:.6;transform:scale(1);animation:wave-animation 1.5s infinite cubic-bezier(.25,.46,.45,.94)}ion-button.is-audio-playing:after{animation-delay:.75s}.audio-line.audio-playing{--background: var(--ion-color-primary-tint);--color: var(--ion-color-primary-contrast)}.listen-answer-tray{background:#f7f7f7;border-radius:12px;padding:16px;display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:center;border-bottom:4px solid #e0e0e0;transition:border-color .3s;min-height:84px}.listen-answer-tray.correct{border-bottom-color:var(--ion-color-success)}.listen-answer-tray.incorrect{border-bottom-color:var(--ion-color-danger)}.listen-answer-tray .placeholder{color:var(--ion-color-medium)}.listen1-modal-instance .listen-answer-area,.listen2-modal-instance .listen-answer-area{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;padding:24px 0;min-height:100px}.listen2-modal-instance .listen-answer-area{flex-direction:column;align-items:center}.listen-answer-area.disabled,.listen-answer-tray.disabled{opacity:.6;pointer-events:none}.word-chip{--background: #fff;--color: var(--ion-color-primary-shade);--border-radius: 12px;--padding-start: 16px;--padding-end: 16px;font-size:1.1em;font-weight:500;height:48px;box-shadow:0 4px #e0e0e0;transition:transform .1s ease,box-shadow .1s ease;text-transform:none;margin:0}.word-chip:active{transform:translateY(2px);box-shadow:0 2px #e0e0e0}.word-chip.correct{--background: var(--ion-color-success);--color: white;box-shadow:0 4px #1a7a3a}.word-chip.incorrect{--background: var(--ion-color-danger);--color: white;box-shadow:0 4px #c43228}.word-chip-multiline{height:auto!important;min-height:48px;--padding-top: 8px;--padding-bottom: 8px}.word-chip-multiline::part(native){white-space:normal;line-height:1.4}.speak-modal-instance .ion-page{display:flex;flex-direction:column}.speak-modal-instance ion-content{flex:1 1 auto;--overflow: auto}.speak-button-container,.check-button-container{flex-shrink:0;padding:16px 16px 8px;background-color:var(--ion-background-color);border-top:1px solid #e0e0e0}.transcribed-text{font-size:1.1em;font-weight:600;line-height:1.6;text-align:left}.correct-word{color:var(--ion-color-success)}.incorrect-word{color:var(--ion-color-danger);text-decoration-thickness:2px}.modal-header-primary{--background: var(--ion-color-primary);--color: var(--ion-color-primary-contrast)}.modal-header-primary ion-button{--color: var(--ion-color-primary-contrast)}ion-modal.auto-height-modal{--height: auto}.result-sheet-content{height:fit-content}.result-answer-content .answer-container{display:flex;align-items:center;gap:4px}.result-answer-content .answer-container h2{margin:0}.result-answer-content .answer-highlight.audio-playing span,.answer-highlight .clickable-word:hover{background-color:rgba(var(--ion-color-primary-rgb),.15);border-radius:4px;padding:2px 6px}.answer-highlight .clickable-word{border-bottom:2px dotted rgba(var(--ion-color-primary-rgb),.4);cursor:pointer;transition:background-color .2s ease}@media(min-width:768px){ion-modal{--height: 90%;--width: 50%;--max-height: 95vh;--border-radius: 20px;--box-shadow: 0 10px 30px rgba(0, 0, 0, .15)}}.talk-modal-instance .chat-container{height:100%;display:flex;flex-direction:column;overflow:hidden}.talk-modal-instance .messages{flex-grow:1;padding:16px;overflow-y:auto;display:flex;flex-direction:column}.talk-modal-instance .user-message-counter-badge{position:sticky;top:10px;margin:0 0 0 auto;width:fit-content;background-color:rgba(38,166,154,.8);color:#fff;padding:4px 10px;border-radius:12px;font-size:12px;font-weight:500;z-index:10;backdrop-filter:blur(2px)}.talk-modal-instance .message{padding:12px 16px;border-radius:16px;margin-bottom:8px;word-break:break-word;box-shadow:0 1px 2px rgba(0,0,0,.08);line-height:1.5;animation:fadeIn .3s ease-in-out;transition:transform .2s ease-in-out,box-shadow .2s ease-in-out,background-color .2s ease-in-out;position:relative}.talk-modal-instance .message.audio-playing{transform:scale(1.02);box-shadow:0 4px 12px rgba(var(--ion-color-primary-rgb),.3)}.talk-modal-instance .system-message{align-self:center;max-width:90%;font-size:.8em;font-style:italic;color:var(--ion-color-medium);background-color:var(--ion-background-color);box-shadow:none;text-align:center;display:flex;align-items:center;gap:4px;padding:8px 12px}.talk-modal-instance .user-message{background-color:var(--ion-color-tertiary);color:#fff;align-self:flex-end;border-bottom-right-radius:4px}.talk-modal-instance .bot-message{background-color:var(--ion-color-primary);color:#fff;align-self:flex-start;text-align:left;border-bottom-left-radius:4px}.talk-modal-instance .bot-message.audio-playing{background-color:var(--ion-color-primary-tint)}.talk-modal-instance .bot-message-feedback{background-color:#607d8b}.talk-modal-instance .bot-message-feedback-correct{background-color:var(--ion-color-success)}.talk-modal-instance .bot-message-feedback-partial{background-color:var(--ion-color-warning)}.talk-modal-instance .bot-message-feedback,.talk-modal-instance .bot-message-feedback-correct,.talk-modal-instance .bot-message-feedback-partial{color:#fff;align-self:flex-start;border-bottom-left-radius:4px}.talk-modal-instance .correction-box{margin-top:8px;padding:8px;background-color:rgba(0,0,0,.1);border-radius:8px;font-size:.9em}.talk-modal-instance .clickable-word{cursor:pointer;transition:background-color .2s ease}.talk-modal-instance .clickable-word:hover{background-color:rgba(255,255,255,.2);border-radius:4px}.talk-modal-instance .input-area{--padding-start: 8px;--padding-end: 8px;--padding-top: 4px;--padding-bottom: 4px;display:flex;gap:4px}.talk-modal-instance .textarea-wrapper{flex:1 1 auto;min-width:0;position:relative;display:flex;align-items:center}.talk-modal-instance #user-input{border:1px solid #e0e0e0;border-radius:20px;--padding-start: 16px;--padding-end: 44px;--padding-top: 10px;--padding-bottom: 10px;line-height:1.4;width:100%}.talk-modal-instance #record-btn{position:absolute;bottom:2px;right:4px;z-index:2;--padding-start: 0;--padding-end: 0;width:38px;height:38px}.talk-modal-instance #record-btn.is-recording{animation:pulse-animation 1.5s infinite}.talk-modal-instance #send-btn{flex-shrink:0}.talk-modal-instance .typing-indicator{display:flex;align-items:center;padding:10px}.talk-modal-instance .typing-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin:0 2px;animation:typing-blink 1.4s infinite both;background-color:rgba(255,255,255,.7)}.talk-modal-instance .typing-dot:nth-child(2){animation-delay:.2s}.talk-modal-instance .typing-dot:nth-child(3){animation-delay:.4s}.talk-modal-instance .evaluation-summary-card{align-self:stretch;max-width:100%;background-color:#f0f4f8;color:#333;border:1px solid #dcdcdc;margin-top:16px;text-align:left}.talk-modal-instance .evaluation-summary-card p{margin:4px 0}.talk-modal-instance .evaluation-summary-card hr{margin:8px 0}.talk-modal-instance .evaluation-summary-card .summary-q{font-style:italic;color:#555}.talk-modal-instance .evaluation-summary-card .summary-a{font-weight:500}.talk-modal-instance .evaluation-summary-card .summary-feedback{display:flex;align-items:flex-start;gap:6px}.talk-modal-instance .evaluation-summary-card .summary-feedback ion-icon{font-size:1.2em;margin-top:2px;flex-shrink:0}.talk-modal-instance .evaluation-summary-card .summary-feedback span{flex-grow:1}.talk-modal-instance .replay-tts-icon{flex-shrink:0;font-size:22px;color:var(--ion-color-primary);cursor:pointer;transition:color .2s,transform .2s;padding:8px}.talk-modal-instance .replay-tts-icon:hover{color:var(--ion-color-primary-shade);transform:scale(1.1)}.talk-modal-instance .system-message .replay-tts-icon,.talk-modal-instance .evaluation-summary-card .replay-tts-icon{color:rgba(0,0,0,.4)}.talk-modal-instance .system-message .replay-tts-icon:hover,.talk-modal-instance .evaluation-summary-card .replay-tts-icon:hover{color:rgba(0,0,0,.8)}.talk-modal-instance .message-text{display:inline-block}.talk-modal-instance .bot-message-preparation{background-color:#fffbeb;color:#333;align-self:stretch;max-width:95%;text-align:left;border-radius:12px;border:1px solid #e0dccc;display:flex;align-items:center;justify-content:space-between;gap:8px}.talk-modal-instance .bot-message-preparation .message-text{flex-grow:1}.talk-modal-instance .bot-message-hidden{background-color:#e0e0e0;color:var(--ion-color-primary);align-self:flex-start;text-align:left;border-bottom-left-radius:4px;cursor:pointer;display:inline-flex;align-items:center;gap:8px;padding:12px 16px;min-width:60px;justify-content:center}.talk-modal-instance .bot-message-hidden ion-icon{font-size:1.5em}.talk-modal-instance .bot-message-hidden .message-text{display:none}.input-area-voice-only{display:flex;align-items:center;padding:8px;gap:8px}.input-area-voice-only #record-btn-talk,.input-area-voice-only #send-btn-talk{flex-shrink:0}.textarea-wrapper-voice-only{flex:1;background-color:#f0f2f5;border-radius:20px;padding:0 16px;display:flex;align-items:center;min-height:40px}.textarea-wrapper-voice-only ion-textarea{--background: transparent;--padding-top: 10px;--padding-bottom: 10px;--padding-start: 0;--padding-end: 0;--placeholder-color: #8a8a8f;--placeholder-opacity: 1;pointer-events:none;color:#000}.dict-modal-wrapper{padding:24px;padding-bottom:calc(env(safe-area-inset-bottom,0px) + 24px);background:var(--ion-background-color, #f8f9fa)}.dict-search-container{position:relative;display:flex;align-items:center}#dict-search-input{width:100%;height:60px;font-size:22px;font-weight:500;color:var(--ion-text-color, #212121);background-color:#fff;border:2px solid #e0e0e0;border-radius:12px;padding:0 50px 0 55px;outline:none;transition:border-color .2s ease-in-out,box-shadow .2s ease-in-out}#dict-search-input:focus{border-color:var(--ion-color-secondary);box-shadow:0 0 0 3px rgba(var(--ion-color-secondary-rgb),.2)}.dict-search-container .search-icon{position:absolute;left:18px;font-size:26px;color:var(--ion-color-medium, #929c9c);cursor:pointer;transition:color .2s}.dict-search-container .search-icon:hover{color:var(--ion-color-secondary)}.dict-search-container .clear-btn{position:absolute;right:8px;--color: var(--ion-color-medium, #929c9c);--padding-start: 8px;--padding-end: 8px}.dict-search-container .clear-btn:hover{--color: var(--ion-color-danger)}ion-input.dict-search-input{--background: #ffffff !important;--border-radius: 12px;--border-width: 0px;--padding-start: 16px;--padding-end: 16px;min-height:50px;box-shadow:0 4px 12px rgba(0,0,0,.08);transition:border-color .2s ease-in-out,box-shadow .2s ease-in-out;margin-bottom:16px}.dict-search-input.ion-focused{--border-color: var(--ion-color-secondary);--box-shadow: 0 0 0 3px rgba(159, 95, 161, .2)}#ipa-chart-modal ion-content{--padding: 0;--background: #fefde8}#ipa-chart-modal .ipa-modal-content{padding:16px;font-family:Arial,sans-serif}.ipa-chart-section{margin-bottom:24px}.ipa-chart-title{font-size:1.8em;font-weight:700;color:#333;display:flex;align-items:center;gap:8px;margin-bottom:12px}.ipa-grid{display:grid;gap:1px;background-color:#333;border:1px solid #333}.ipa-grid.grid-8-cols{grid-template-columns:repeat(8,1fr)}.ipa-grid.grid-4-cols{grid-template-columns:repeat(4,1fr)}.ipa-diphthong-grid{display:flex;flex-direction:column;gap:1px;background-color:#333;border:1px solid #333;width:fit-content}.ipa-grid-row{display:flex;gap:1px}.ipa-grid-row .ipa-symbol-btn{min-width:60px;flex:1}.ipa-symbol-btn{background-color:#fff;border:none;padding:12px 8px;font-size:1.5em;font-weight:500;text-align:center;cursor:pointer;transition:background-color .2s;width:100%;height:100%}.ipa-symbol-btn:hover{background-color:#f0f0f0}button.ipa-symbol-btn:disabled{background-color:#fff;opacity:1;cursor:default}button.ipa-symbol-btn:disabled:hover{background-color:#fff}#ipa-video-modal{--width: 90%;--max-width: 720px;--height: auto;--border-radius: 16px}#ipa-video-modal ion-content,ion-content.content-centered{--display: flex;display:flex;align-items:center;justify-content:center}.video-wrapper{display:flex;align-items:center;justify-content:center;width:100%;height:100%;padding:16px;box-sizing:border-box}.ipa-video-container{position:relative;width:100%;max-width:720px;padding-top:56.25%;background-color:#000}.ipa-video-container iframe{position:absolute;top:0;left:0;width:100%;height:100%}ion-fab{bottom:calc(env(safe-area-inset-bottom,0px) + 20px)!important;right:16px!important}ion-fab-list ion-fab-button{--background: var(--ion-color-primary);--background-activated: var(--ion-color-primary-shade);--background-hover: var(--ion-color-primary-tint);--color: white}ion-fab-button.fab-button-danger{--background: var(--ion-color-danger);--background-activated: #c9302c;--background-hover: #e57373}.debug-logger-container{background:#1e1e1e;color:#d4d4d4;padding:12px;border-top:2px solid var(--ion-color-primary);margin-top:24px;border-radius:8px}.debug-logger-output{width:100%;height:120px;background-color:#111;color:#0f0;border:1px solid #444;border-radius:4px;padding:8px;font-family:Courier New,Courier,monospace;font-size:12px;resize:vertical}@property --completion-angle{syntax: "<angle>"; inherits: false; initial-value: 0deg;}.animate-complete:before{content:"";position:absolute;z-index:3;top:-4px;right:-4px;bottom:-4px;left:-4px;border-radius:50%;background:conic-gradient(var(--ion-color-success) var(--completion-angle),transparent 0deg);animation:clock-fill .8s ease-out forwards}@keyframes clock-fill{to{--completion-angle: 360deg}}.animate-unlock{animation:unlock-shake .6s ease-in-out}.lesson-card-animate-victory{animation:victory-pulse-bg .8s ease-out}#listen-game-area.effect-next-question{animation:slide-out-animation .3s ease-in forwards}#listen-game-area.effect-finish{animation:finish-effect-animation .6s ease-in forwards}.fade-out{animation:fade-out .3s ease-out forwards}.fade-in{animation:fade-in .3s ease-in forwards}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes wave-animation{0%{transform:scale(1);opacity:.6}to{transform:scale(2.2);opacity:0}}@keyframes badge-appear{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}@keyframes slide-out-animation{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(-50px)}}@keyframes finish-effect-animation{0%{transform:scale(1);opacity:1}to{transform:scale(.9);opacity:0}}@keyframes unlock-shake{10%,30%,50%,70%,90%{transform:translate(-5px) rotate(-3deg)}20%,40%,60%,80%{transform:translate(5px) rotate(3deg)}0%,to{transform:translate(0) rotate(0)}}@keyframes victory-pulse-bg{0%{box-shadow:0 0 rgba(32,148,67,.4)}to{box-shadow:0 0 0 20px rgba(32,148,67,0)}}@keyframes typing-blink{0%,to{opacity:.2}20%{opacity:1}}@keyframes pulse-animation{0%{box-shadow:0 0 rgba(var(--ion-color-danger-rgb),.7)}70%{box-shadow:0 0 0 10px rgba(var(--ion-color-danger-rgb),0)}to{box-shadow:0 0 rgba(var(--ion-color-danger-rgb),0)}}@keyframes fadeInScale{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes fade-out{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(-20px)}}@keyframes fade-in{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}ion-modal.debug-logger-modal{--height: 100%;--width: 100%}ion-modal.debug-logger-modal ion-content{--padding-start: 0;--padding-end: 0;--padding-top: 0;--padding-bottom: 0}ion-modal.debug-logger-modal .native-textarea,ion-modal.debug-logger-modal .textarea-wrapper,ion-modal.debug-logger-modal .textarea-wrapper-inner{height:100%!important;width:100%!important;min-height:inherit!important}ion-toast.pwa-update-toast::part(container){align-items:center}ion-toast.pwa-update-toast ion-button{font-size:15px;font-weight:700;text-transform:none;--padding-start: 12px;--padding-end: 12px}.keyword-highlight{color:#26a69a;border-bottom:2.5px dotted rgba(38,166,154,.5);font-weight:700}span.keyword-highlight.clickable-word{border-bottom:2.5px dotted rgba(38,166,154,.5)}ion-popover.notification-popover::part(arrow){display:none}ion-popover.notification-popover{--box-shadow: 0 8px 32px rgba(0, 0, 0, .18);--border-width: 1px;--border-style: solid;--border-color: rgba(0, 0, 0, .08);--border-radius: 16px;--width: 320px}ion-popover.notification-popover::part(backdrop){background-color:rgba(0,0,0,.4);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}@media(max-width:576px){ion-popover.notification-popover{--width: 95vw}}@media(min-width:768px){ion-popover.notification-popover{--width: 380px}}.notification-popover-content{max-height:80vh;display:flex;flex-direction:column;background:var(--ion-card-background)}.popover-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--ion-color-step-150, #e0e0e0);flex-shrink:0}.popover-header h3{margin:0;font-size:1.1em;font-weight:700}.popover-header ion-button{--color: var(--ion-color-primary);font-size:13px;font-weight:600;--padding-start: 4px;--padding-end: 8px;margin:0}.popover-header ion-button[disabled]{opacity:.4}.notification-popover-content ion-list{flex-grow:1;overflow-y:auto;padding:0;background:transparent}.notification-popover-content ion-item{--padding-start: 16px;--padding-end: 16px;--inner-padding-bottom: 5px;--inner-padding-top: 5px;--background-hover: rgba(var(--ion-color-primary-rgb), .08);transition:background-color .2s ease}.notification-popover-content ion-item.notification-unread{position:relative;--background: #cafdd4}@media(hover:hover){.notification-popover-content ion-item.notification-unread:hover{--background: #6bff86}}.notification-popover-content ion-item.notification-unread:before{content:"";position:absolute;left:6px;top:50%;transform:translateY(-50%);width:8px;height:8px;border-radius:50%;background-color:var(--ion-color-primary)}.notification-popover-content ion-item h2{font-size:1em;font-weight:500;margin-bottom:4px;white-space:normal;color:var(--ion-text-color)}.notification-popover-content ion-item.notification-unread h2{font-weight:700}.notification-popover-content ion-item ion-note{font-size:.8em}.no-notifications-item{text-align:center;--min-height: 120px;--background: transparent}.no-notifications-item p{margin:4px 0;color:var(--ion-color-medium)}.no-notifications-item p:first-child{font-size:2em}.word-image-container{width:100%;max-width:350px;margin:16px auto;padding:8px;background-color:#fff;border-radius:16px;box-shadow:0 8px 24px rgba(0,0,0,.1);border:1px solid rgba(0,0,0,.05);aspect-ratio:16 / 10;display:flex;align-items:center;justify-content:center}.word-image{width:100%;aspect-ratio:16 / 10;object-fit:cover;border-radius:12px;display:block}.listen-progress-bar{margin-bottom:4px}.listen-progress-bar-background{height:20px;width:100%;background-color:#e0e0e0;border-radius:13px;position:relative}.listen-progress-bar-foreground{height:100%;background-color:var(--ion-color-primary);border-radius:13px;transition:width .3s ease-in-out;position:absolute;top:0;left:0;z-index:1}.listen-progress-label{position:absolute;top:50%;left:5%;transform:translate(-50%,-50%);color:#fff;font-size:13px;font-weight:800;padding-left:20px;z-index:2;white-space:nowrap}.grammar-button{--background: linear-gradient(90deg, #e34545 0%, #4A00E0 100%);--background-activated: linear-gradient(90deg, #e34545 0%, #4100c6 100%);--color: white;--border-radius: 25px;--box-shadow: 0 4px 15px rgba(0, 0, 0, .2);--padding-start: 20px;--padding-end: 20px;font-size:.7em;text-transform:none;margin-top:16px;margin-left:auto;margin-right:auto;display:block;width:fit-content}.footer-toolbar{--padding-start: 16px;--padding-end: 16px;--padding-top: 8px;--padding-bottom: 8px}.grammar-box{background:#f9fafc;border:1px solid #e0e6ed;border-radius:12px;padding:16px 20px;font-size:15px;line-height:1.6;color:#333}.grammar-title{margin-top:0;color:#0d47a1;border-bottom:2px solid #e3f2fd;padding-bottom:4px;font-weight:600}.grammar-points{margin-top:8px;padding-left:18px}.grammar-points li{margin-bottom:4px}.note{color:#777;font-style:italic}.modal-score-achieved{font-size:.8em;font-weight:700;color:#fff;padding:2px 8px;border-radius:10px;margin-left:10px;vertical-align:middle}.modal-score-perfect{background:var(--ion-color-success-shade)}.modal-score-good{background:var(--ion-color-warning-shade)}.modal-score-low{background:var(--ion-color-danger-shade)}.sub-lesson-item{width:100%;max-width:320px;margin:0 auto}.study-circle-lg{width:60px;height:60px;margin:8px 0}.normal-circle{width:45px;height:45px;margin:8px}.study-circle-lg ion-icon{font-size:32px}.normal-circle ion-icon{font-size:24px}.sub-lesson-label{font-size:1.05em}.sub-lesson-connector{left:28px;height:16px;top:-8px}.completion-checkmark{width:18px;height:18px;font-size:14px}:root{--bg: var(--ion-color-dark-shade, #0b1220);--card: var(--ion-card-background, #1e293b);--text: var(--ion-color-dark-shade, #0b1220);--muted: var(--ion-color-medium, #94a3b8);--primary: var(--ion-color-primary, #38bdf8);--ring: rgba(var(--ion-color-primary-rgb), .35);--shadow: 0 12px 40px rgba(0, 0, 0, .35)}.dict-pop{position:fixed;z-index:10000;inset:auto auto 24px 24px;width:min(560px,92vw);background:var(--card);border:1px solid rgba(var(--text),.1);border-radius:12px;box-shadow:var(--shadow);overflow:hidden;transform-origin:bottom left;animation:pop .18s ease-out;display:flex;flex-direction:column;max-height:70vh}.dict-pop.hidden{display:none!important}@keyframes pop{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.dict-head{display:flex;align-items:center;gap:12px;padding:10px 12px;border-bottom:1px solid rgba(var(--text),.1);background:rgba(var(--ion-color-step-50-rgb),.7);backdrop-filter:saturate(140%) blur(6px);flex-shrink:0}.dict-word-container{display:flex;align-items:baseline;gap:10px;flex-shrink:1;min-width:0}.dict-head .word{font-size:22px;font-weight:600;color:rgb(var(--text));white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dict-head .phonetic{font-size:20px}.dict-head .spacer{flex:1}.dict-recent{padding:8px 12px;background-color:rgba(0,0,0,.15);border-bottom:1px solid rgba(var(--text),.1);line-height:1.6;flex-shrink:0;font-size:14px}.dict-recent a{color:var(--muted);text-decoration:none;cursor:pointer}.dict-recent a:hover{color:var(--primary);text-decoration:underline}#dict-close{all:unset;cursor:pointer;width:28px;height:28px;display:grid;place-items:center;border-radius:8px;background:var(--ion-color-step-200);border:1px solid rgba(var(--text),.1);color:var(--muted)}#dict-close:hover{background:var(--ion-color-step-300);color:rgb(var(--text))}.dict-body{flex-grow:1;overflow-y:auto;position:relative}.dict-body::-webkit-scrollbar{width:8px}.dict-body::-webkit-scrollbar-track{background:transparent}.dict-body::-webkit-scrollbar-thumb{background-color:rgba(148,163,184,.5);border-radius:4px}.dict-body::-webkit-scrollbar-thumb:hover{background-color:rgba(148,163,184,.7)}.dict-body .loader{display:grid;place-items:center;color:var(--muted);font-weight:500;padding:40px 0}.dict-audio-line{display:flex;justify-content:center;gap:12px;margin-top:6px}.dict-audio-line ion-button.speak-btn-ionic{--padding-start: 10px;--padding-end: 10px;--color: var(--muted);font-size:14px;font-weight:600;text-transform:uppercase;height:32px;--background: var(--ion-color-step-200);--background-hover: var(--ion-color-step-300);--border-radius: 8px}.dict-audio-line ion-button.speak-btn-ionic:hover{--color: var(--primary)}.dict-audio-line ion-button.speak-btn-ionic ion-icon{font-size:18px;margin-right:2px}.lb-wrap{font-family:-apple-system,Segoe UI,Roboto,Arial,sans-serif;font-size:16px;line-height:1.7;color:rgba(var(--text),.85);background-color:transparent;padding:8px 16px 16px}.lb-wrap .bg-grey{display:inline-block;font-size:1em;font-weight:600;color:var(--ion-color-success-contrast);background-color:var(--ion-color-success);padding:4px 10px;margin:20px 0 0;border-radius:4px}.lb-wrap i,.lb-wrap .examples div:first-of-type+div{color:var(--muted);font-style:normal}.lb-wrap .green{border-left:10px solid var(--ion-color-success-tint);padding-left:5px;margin:12px 0 0}.lb-wrap b,.lb-wrap .bold{font-weight:600;color:rgb(var(--text))}.lb-wrap .examples{margin-top:8px;margin-bottom:8px}.lb-wrap .examples div:first-of-type,.lb-wrap a.find_word{color:var(--primary);text-decoration:none}.lb-wrap a.find_word:hover{text-decoration:underline}.lb-wrap>div:last-child>b:before{content:"* ";font-weight:400}.lb-wrap>div:last-child a{margin-right:8px}.lb-wrap img,.lb-wrap .social{display:none!important}#dict-phonetic{font-weight:600;color:var(--primary)}.margin25{margin-left:25px}.grey{border-left:10px solid var(--ion-color-medium);padding-left:5px}.dict-tabs{display:flex;flex-wrap:wrap;gap:10px;padding:10px 16px 0;background:var(--card);border-bottom:1px solid rgba(0,0,0,.05)}.dict-tab-btn{background-color:transparent;color:var(--text);border:1px solid var(--ion-color-medium);border-radius:6px;padding:6px 12px;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s ease;opacity:.7}.dict-tab-btn:hover{opacity:1;background-color:rgba(0,0,0,.05)}.dict-tab-btn.active{background-color:#209443;color:#fff;border-color:#209443;opacity:1;box-shadow:0 2px 4px rgba(32,148,67,.3)}.dict-tab-content{display:none;animation:fadeIn .3s ease}.dict-tab-content.active{display:block}.dict-tab-content .lb-wrap .bg-grey{display:none!important}.dict-tab-content .lb-wrap{padding-top:10px}@keyframes fadeIn{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}
