:root{--light-bg: #E0E0E0;--dark-bg: #202124;--light-surface: #ffffff;--dark-surface: #2d2e30;--light-text-primary: #202124;--dark-text-primary: #e8eaed;--light-text-secondary: #5f6368;--dark-text-secondary: #bdc1c6;--light-primary: #1a73e8;--dark-primary: #8ab4f8;--light-primary-hover: #185abc;--dark-primary-hover: #aecbfa;--light-border: #dadce0;--dark-border: #5f6368;--light-error: #d93025;--dark-error: #f28b82;--light-info-text: #1967d2;--dark-info-text: #8ab4f8;--light-card-bg: #e8f0fe;--dark-card-bg: #3c4043;--light-disabled-bg: #f1f3f4;--dark-disabled-bg: #313235;--light-disabled-text: #a1a3a6;--dark-disabled-text: #7f8184;--light-shadow-color-1: rgba(60, 64, 67, .1);--dark-shadow-color-1: rgba(0, 0, 0, .3);--light-shadow-color-2: rgba(60, 64, 67, .08);--dark-shadow-color-2: rgba(0, 0, 0, .2);--light-focus-shadow-color: rgba(26, 115, 232, .25);--dark-focus-shadow-color: rgba(138, 180, 248, .35);--light-button-focus-shadow-color: rgba(26, 115, 232, .35);--dark-button-focus-shadow-color: rgba(138, 180, 248, .45);--light-button-text: white;--dark-button-text: var(--dark-bg);--flashcard-width: 240px;--flashcard-height: 320px;--light-secondary-button-bg: #e8eaed;--dark-secondary-button-bg: #3c4043;--light-secondary-button-text: var(--light-text-primary);--dark-secondary-button-text: var(--dark-text-primary);--light-secondary-button-hover-bg: #dadce0;--dark-secondary-button-hover-bg: #4a4d50;--light-danger-button-bg: #fce8e6;--dark-danger-button-bg: #5c2b29;--light-danger-button-text: #c5221f;--dark-danger-button-text: #f28b82;--light-danger-button-hover-bg: #f9bdbb;--dark-danger-button-hover-bg: #7d3733;--light-drag-over-bg: rgba(26, 115, 232, .08);--dark-drag-over-bg: rgba(138, 180, 248, .12);--concept-card-color: var(--dark-primary);--light-intro-bg: #e8f0fe;--dark-intro-bg: #31363e;--light-chat-bg: var(--light-surface);--dark-chat-bg: var(--dark-surface);--light-user-message-bg: #d1eaff;--dark-user-message-bg: #37474f;--light-model-message-bg: #f1f3f4;--dark-model-message-bg: #4a4e51;--light-code-bg: #f1f3f4;--dark-code-bg: #2d2e30;--light-blockquote-border: #ccc;--dark-blockquote-border: #555;--light-exercise-bg: #f8f9fa;--dark-exercise-bg: #35363a;--focus-ring-width: 3px;--focus-ring-offset: 1px}body{font-family:Google Sans,Roboto,Arial,sans-serif;margin:0;background-color:var(--dark-bg);color:var(--dark-text-primary);display:flex;justify-content:center;align-items:flex-start;min-height:100vh;padding:24px;box-sizing:border-box}.container{background-color:var(--dark-surface);padding:32px 48px;border-radius:16px;box-shadow:0 4px 12px var(--dark-shadow-color-1),0 8px 24px var(--dark-shadow-color-2);width:90%;max-width:1024px;text-align:center;margin-top:24px;margin-bottom:24px}h1{color:var(--dark-primary);margin-bottom:24px;font-size:2.2em;font-weight:500}h2{color:var(--dark-text-primary);margin-top:36px;margin-bottom:20px;font-size:1.7em}p{margin-bottom:24px;color:var(--dark-text-secondary);line-height:1.65}.definition,.flashcard-example,.chat-message,.introduction-text-container,.term,.concept-title,.chat-title,.exercise-problem,.exercise-solution,.exercises-title{word-wrap:break-word}.definition p,.flashcard-example p,.chat-message p,.introduction-text-container p,.term p,.concept-title p,.chat-title p,.exercise-problem p,.exercise-solution p,.exercises-title p{margin-top:.5em;margin-bottom:.5em;line-height:1.6}.definition p:first-child,.flashcard-example p:first-child,.chat-message p:first-child,.introduction-text-container p:first-child,.term p:first-child,.concept-title p:first-child,.chat-title p:first-child,.exercise-problem p:first-child,.exercise-solution p:first-child,.exercises-title p:first-child{margin-top:0}.definition p:last-child,.flashcard-example p:last-child,.chat-message p:last-child,.introduction-text-container p:last-child,.term p:last-child,.concept-title p:last-child,.chat-title p:last-child,.exercise-problem p:last-child,.exercise-solution p:last-child,.exercises-title p:last-child{margin-bottom:0}.definition strong,.flashcard-example strong,.chat-message strong,.introduction-text-container strong,.term strong,.concept-title strong,.chat-title strong,.exercise-problem strong,.exercise-solution strong,.exercises-title strong{font-weight:700;color:var(--dark-text-primary)}.definition em,.flashcard-example em,.chat-message em,.introduction-text-container em,.term em,.concept-title em,.chat-title em,.exercise-problem em,.exercise-solution em,.exercises-title em{font-style:italic}.definition ul,.definition ol,.flashcard-example ul,.flashcard-example ol,.chat-message ul,.chat-message ol,.introduction-text-container ul,.introduction-text-container ol,.exercise-problem ul,.exercise-problem ol,.exercise-solution ul,.exercise-solution ol{margin-top:.5em;margin-bottom:.5em;padding-left:2em;text-align:left}.definition li,.flashcard-example li,.chat-message li,.introduction-text-container li,.exercise-problem li,.exercise-solution li{margin-bottom:.25em;line-height:1.5}.definition code,.flashcard-example code,.chat-message code,.introduction-text-container code,.exercise-problem code,.exercise-solution code{background-color:var(--dark-code-bg);padding:.2em .4em;margin:0;font-size:85%;border-radius:3px;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace}.definition pre,.flashcard-example pre,.chat-message pre,.introduction-text-container pre,.exercise-problem pre,.exercise-solution pre{background-color:var(--dark-code-bg);padding:1em;margin:.5em 0;overflow:auto;border-radius:4px;border:1px solid var(--dark-border)}.definition pre code,.flashcard-example pre code,.chat-message pre code,.introduction-text-container pre code,.exercise-problem pre code,.exercise-solution pre code{padding:0;margin:0;font-size:100%;border-radius:0;background-color:transparent;border:none}.definition blockquote,.flashcard-example blockquote,.chat-message blockquote,.introduction-text-container blockquote,.exercise-problem blockquote,.exercise-solution blockquote{border-left:4px solid var(--dark-blockquote-border);padding-left:1em;margin:.5em 0;font-style:italic;color:var(--dark-text-primary)}.definition hr,.flashcard-example hr,.chat-message hr,.introduction-text-container hr,.exercise-problem hr,.exercise-solution hr{border:0;height:1px;background-color:var(--dark-border);margin:1em 0}textarea{width:calc(100% - 34px);padding:16px;margin-bottom:16px;border:1px solid var(--dark-border);border-radius:10px;font-size:1rem;min-height:120px;background-color:var(--dark-card-bg);color:var(--dark-text-primary);resize:vertical;transition:border-color .2s ease,box-shadow .2s ease}textarea:focus{outline:none;border-color:var(--dark-primary);box-shadow:0 0 0 var(--focus-ring-width) var(--dark-focus-shadow-color),inset 0 1px 1px #0000000d}.file-input-container{display:flex;align-items:center;justify-content:center;gap:12px;margin-bottom:16px;padding:12px;border:2px dashed var(--dark-border);border-radius:10px;flex-wrap:wrap;transition:background-color .2s ease,border-color .2s ease}.file-input-container.drag-over{border-color:var(--dark-primary);background-color:var(--dark-drag-over-bg)}.file-input-label{background-color:var(--dark-secondary-button-bg);color:var(--dark-secondary-button-text);padding:10px 18px;border:1px solid var(--dark-border);border-radius:10px;cursor:pointer;font-size:.95rem;font-weight:500;transition:background-color .2s ease,color .2s ease,border-color .2s ease,box-shadow .2s ease;display:inline-block}.file-input-label:hover{background-color:var(--dark-secondary-button-hover-bg);border-color:var(--dark-text-secondary)}#pdfInput,#importSetInput{width:.1px;height:.1px;opacity:0;overflow:hidden;position:absolute;z-index:-1}#pdfInput:focus+.file-input-label,#importSetInput:focus+.file-input-label,.file-input-label:focus-visible{outline:none;border-color:var(--dark-primary);box-shadow:0 0 0 var(--focus-ring-width) var(--dark-focus-shadow-color)}.file-name-display{font-size:.9rem;color:var(--dark-text-secondary);margin-left:8px;text-align:left;flex-grow:1;word-break:break-all}.paste-image-container{display:flex;flex-direction:column;align-items:center;gap:12px;margin-bottom:24px}.paste-image-target{width:100%;max-width:400px;min-height:60px;border:2px dashed var(--dark-border);border-radius:10px;display:flex;justify-content:center;align-items:center;cursor:pointer;transition:border-color .2s ease,background-color .2s ease;background-color:var(--dark-card-bg);text-align:center}.paste-image-target:hover,.paste-image-target:focus,.paste-image-target.drag-over{border-color:var(--dark-primary);background-color:var(--dark-drag-over-bg)}.paste-image-target:focus{outline:none;box-shadow:0 0 0 var(--focus-ring-width) var(--dark-focus-shadow-color)}#pasteImagePlaceholder{color:var(--dark-text-secondary);font-size:.95rem}#pastedImagesPreviewContainer{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:10px;width:100%;max-width:450px}.pasted-image-preview-item{position:relative;border:1px solid var(--dark-border);border-radius:8px;overflow:hidden;box-shadow:0 1px 3px var(--dark-shadow-color-2)}.pasted-image-preview-item img{display:block;width:80px;height:80px;object-fit:cover;border-radius:7px}.remove-pasted-image-button{position:absolute;top:2px;right:2px;background-color:#00000080;color:#fff;border:none;border-radius:50%;width:20px;height:20px;font-size:12px;line-height:20px;text-align:center;cursor:pointer;transition:background-color .2s ease}.remove-pasted-image-button:hover{background-color:#d93025cc}#clearPastedImageButton{font-size:.85rem;padding:6px 12px;min-width:auto}.import-export-container,.action-buttons-container{display:flex;justify-content:center;gap:16px;margin-bottom:16px;flex-wrap:wrap}button#generateButton,button.secondary-button,button.danger-button{padding:12px 20px;border:none;border-radius:10px;cursor:pointer;font-size:1rem;font-weight:500;transition:background-color .2s ease,box-shadow .2s ease,color .2s ease,transform .1s ease;min-width:180px}button#generateButton:active,button.secondary-button:active,button.danger-button:active{transform:translateY(1px)}button#generateButton:focus-visible,button.secondary-button:focus-visible,button.danger-button:focus-visible{outline:none;box-shadow:0 0 0 var(--focus-ring-width) var(--dark-button-focus-shadow-color)}button#generateButton{background-color:var(--dark-primary);color:var(--dark-button-text);box-shadow:0 1px 2px var(--dark-shadow-color-2)}button#generateButton:hover{background-color:var(--dark-primary-hover);box-shadow:0 2px 4px var(--dark-shadow-color-1)}button#generateButton:disabled{background-color:var(--dark-disabled-bg);color:var(--dark-disabled-text);cursor:not-allowed;box-shadow:none;transform:none}button.secondary-button{background-color:var(--dark-secondary-button-bg);color:var(--dark-secondary-button-text);border:1px solid var(--dark-border)}button.secondary-button:hover{background-color:var(--dark-secondary-button-hover-bg);border-color:var(--dark-text-secondary)}button.danger-button{background-color:var(--dark-danger-button-bg);color:var(--dark-danger-button-text);border:1px solid transparent}button.danger-button:hover{background-color:var(--dark-danger-button-hover-bg);border-color:var(--dark-danger-button-text)}.response-length-selector-container{margin-bottom:16px;display:flex;justify-content:center;align-items:center;gap:8px;flex-wrap:wrap}.response-length-selector-container label{font-size:.95rem;color:var(--dark-text-secondary)}#chatResponseLength{padding:8px 12px;border:1px solid var(--dark-border);border-radius:8px;background-color:var(--dark-surface);color:var(--dark-text-primary);font-size:.9rem;min-width:150px;transition:border-color .2s ease,box-shadow .2s ease}#chatResponseLength:focus{outline:none;border-color:var(--dark-primary);box-shadow:0 0 0 var(--focus-ring-width) var(--dark-focus-shadow-color)}.error-message{color:var(--dark-error);margin-top:16px;margin-bottom:16px;font-weight:500;min-height:1.5em}.introduction-text-container{display:none;margin:24px 0;padding:16px 20px;background-color:var(--dark-intro-bg);border-left:5px solid var(--dark-primary);border-radius:10px;text-align:left;font-size:1rem;line-height:1.6;color:var(--dark-text-primary)}.introduction-text-container p{margin-bottom:0;color:inherit}.introduction-text-container .error-text{color:var(--dark-error);font-style:italic}.introduction-text-container .info-text{color:var(--dark-info-text);font-style:italic}#savedSetsSection{margin-top:32px;padding-top:24px;border-top:1px solid var(--dark-border);text-align:left}#savedSetsSection h2{text-align:center;margin-bottom:20px}.saved-sets-list{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:20px}.saved-set-item{background-color:var(--dark-surface);padding:20px;border-radius:12px;margin-bottom:0;display:flex;flex-direction:column;gap:12px;border:1px solid var(--dark-border);box-shadow:0 2px 5px var(--dark-shadow-color-2);transition:transform .2s ease-out,box-shadow .2s ease-out}.saved-set-item:hover{transform:translateY(-3px);box-shadow:0 4px 10px var(--dark-shadow-color-1)}.saved-set-name{font-weight:500;font-size:1.05rem;color:var(--dark-text-primary);flex-grow:1;word-break:break-word}.saved-set-actions{display:flex;gap:10px;align-items:center}.saved-set-actions button{padding:8px 14px;font-size:.875rem;min-width:auto;border-radius:8px}.saved-set-actions .load-set-button{background-color:var(--dark-primary);color:var(--dark-button-text);border:none}.saved-set-actions .load-set-button:hover{background-color:var(--dark-primary-hover)}.saved-set-actions .delete-set-button{background-color:var(--dark-danger-button-bg);color:var(--dark-danger-button-text);border:1px solid transparent}.saved-set-actions .delete-set-button:hover{background-color:var(--dark-danger-button-hover-bg);border-color:var(--dark-danger-button-text)}.flashcard-group{width:100%;margin-bottom:36px;padding:24px;border-radius:12px;background-color:var(--dark-surface);border:1px solid var(--dark-border);box-shadow:0 2px 6px var(--dark-shadow-color-1)}.concept-title{font-size:1.6em;font-weight:500;color:var(--dark-text-primary);margin-bottom:24px;text-align:left;padding-bottom:10px;border-bottom:3px solid}.concept-title>*:first-child{margin-top:0}.concept-title>*:last-child{margin-bottom:0}.concept-cards-container{display:flex;flex-wrap:wrap;gap:20px;justify-content:flex-start;margin-bottom:24px}.no-cards-in-group-message{width:100%;text-align:center;font-style:italic;color:var(--dark-text-secondary);padding:20px 0}.flashcards-container{display:flex;flex-direction:column;gap:24px;margin-top:32px;align-items:stretch}.flashcard{background-color:transparent;width:var(--flashcard-width);height:var(--flashcard-height);border:none;border-radius:12px;cursor:pointer;perspective:1200px;box-shadow:none;transition:transform .2s ease-out}.flashcard:hover{transform:translateY(-3px)}.flashcard:focus-visible{outline:var(--focus-ring-width) solid var(--concept-card-color, var(--dark-primary));outline-offset:var(--focus-ring-offset);border-radius:12px}.flashcard-inner{position:relative;width:100%;height:100%;text-align:center;transition:transform .7s cubic-bezier(.4,0,.2,1),box-shadow .3s ease;transform-style:preserve-3d;box-shadow:0 3px 8px var(--dark-shadow-color-1);border-radius:12px}.flashcard.flipped .flashcard-inner{transform:rotateY(180deg)}.flashcard-front,.flashcard-back{position:absolute;width:100%;height:100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:20px;box-sizing:border-box;border-radius:12px;border:1px solid var(--dark-border);background-color:var(--dark-card-bg);overflow-y:auto;border-top:6px solid var(--concept-card-color, var(--dark-primary))}.flashcard-back{transform:rotateY(180deg);justify-content:flex-start}.flashcard:hover .flashcard-inner{box-shadow:0 6px 16px var(--dark-shadow-color-1)}.flashcard:hover .flashcard-front,.flashcard:hover .flashcard-back{border-color:var(--concept-card-color, var(--dark-primary))}.term{font-size:1.25em;font-weight:500;color:var(--dark-text-primary);margin-bottom:0;line-height:1.3;align-self:center}.term>*:first-child{margin-top:0}.term>*:last-child{margin-bottom:0}.definition{font-size:1em;color:var(--dark-text-secondary);line-height:1.5;text-align:left;width:100%;overflow-y:auto;margin-bottom:12px}.flashcard-example{font-size:.95em;color:var(--dark-info-text);line-height:1.45;text-align:left;width:100%;margin-top:10px;padding-top:10px;border-top:1px dashed var(--dark-border);font-style:italic}.exercises-section-container{margin-top:24px;padding:20px;border:1px solid var(--dark-border);border-radius:12px;background-color:var(--dark-exercise-bg)}.exercises-title{font-size:1.3em;font-weight:500;color:var(--dark-text-primary);margin-top:0;margin-bottom:16px;text-align:left;padding-bottom:8px;border-bottom:2px solid var(--concept-card-color, var(--dark-primary))}.exercises-title>*:first-child{margin-top:0}.exercises-title>*:last-child{margin-bottom:0}.no-exercises-message{font-style:italic;color:var(--dark-text-secondary);padding:10px 0;text-align:center}.solved-exercises-list{display:flex;flex-direction:column;gap:20px}.solved-exercise-item{padding:16px;border:1px solid var(--dark-border);border-left:4px solid var(--concept-card-color, var(--dark-primary));border-radius:8px;background-color:var(--dark-surface);box-shadow:0 1px 3px var(--dark-shadow-color-2)}.exercise-problem-title,.exercise-solution-title{font-size:1.1em;font-weight:500;color:var(--dark-text-primary);margin-top:0;margin-bottom:8px}.exercise-problem-title>*:first-child,.exercise-solution-title>*:first-child{margin-top:0}.exercise-problem-title>*:last-child,.exercise-solution-title>*:last-child{margin-bottom:0}.exercise-solution-title.collapsible-title{cursor:pointer;position:relative;padding-right:20px}.exercise-solution-title.collapsible-title:after{content:"▼";position:absolute;right:0;top:50%;transform:translateY(-50%);font-size:.8em;transition:transform .2s ease-in-out}.exercise-solution-title.collapsible-title[aria-expanded=true]:after{transform:translateY(-50%) rotate(-180deg)}.exercise-solution-title.collapsible-title:focus-visible{outline:var(--focus-ring-width) solid var(--concept-card-color, var(--dark-primary));outline-offset:var(--focus-ring-offset);border-radius:4px}.exercise-problem{font-size:1rem;line-height:1.6;color:var(--dark-text-primary);margin-bottom:12px;text-align:left}.exercise-solution{font-size:.95rem;line-height:1.6;color:var(--dark-text-secondary);padding-top:12px;border-top:1px dashed var(--dark-border);margin-top:12px;text-align:left}.chat-section-container{margin-top:24px;padding:20px;border:1px solid var(--dark-border);border-radius:12px;background-color:var(--dark-chat-bg)}.chat-title{font-size:1.2em;font-weight:500;color:var(--dark-text-primary);margin-top:0;margin-bottom:16px;text-align:left}.chat-title>*:first-child{margin-top:0}.chat-title>*:last-child{margin-bottom:0}.chat-history{height:300px;overflow-y:auto;border:1px solid var(--dark-border);border-radius:8px;padding:12px;margin-bottom:16px;background-color:var(--dark-bg)}.chat-message{padding:10px 14px;border-radius:16px;margin-bottom:8px;max-width:85%;word-wrap:break-word;line-height:1.45;font-size:.95rem;white-space:pre-wrap;box-shadow:0 1px 2px var(--dark-shadow-color-2)}.user-message{background-color:var(--dark-user-message-bg);color:var(--dark-text-primary);margin-left:auto;text-align:right;border-bottom-right-radius:4px}.model-message{background-color:var(--dark-model-message-bg);color:var(--dark-text-primary);margin-right:auto;text-align:left;border-bottom-left-radius:4px}.model-message.error-text{background-color:var(--dark-danger-button-bg);color:var(--dark-danger-button-text);box-shadow:none}.chat-input-area{display:flex;gap:10px;align-items:center}.chat-input{flex-grow:1;padding:10px 14px;border:1px solid var(--dark-border);border-radius:10px;font-size:.95rem;background-color:var(--dark-card-bg);color:var(--dark-text-primary);transition:border-color .2s ease,box-shadow .2s ease}.chat-input:focus{outline:none;border-color:var(--dark-primary);box-shadow:0 0 0 var(--focus-ring-width) var(--dark-focus-shadow-color),inset 0 1px 1px #0000000d}.chat-input:disabled{background-color:var(--dark-disabled-bg);color:var(--dark-disabled-text)}.chat-mic-button{padding:8px 10px;background-color:var(--dark-secondary-button-bg);color:var(--dark-secondary-button-text);border:1px solid var(--dark-border);border-radius:10px;cursor:pointer;font-size:1.2rem;line-height:1;transition:background-color .2s ease,color .2s ease,box-shadow .2s ease}.chat-mic-button:hover{background-color:var(--dark-secondary-button-hover-bg)}.chat-mic-button:focus-visible{outline:none;box-shadow:0 0 0 var(--focus-ring-width) var(--dark-focus-shadow-color)}.chat-mic-button.listening{background-color:var(--dark-primary);color:var(--dark-button-text);border-color:transparent}.chat-mic-button:disabled{background-color:var(--dark-disabled-bg);color:var(--dark-disabled-text);cursor:not-allowed;border-color:var(--dark-border)}.chat-send-button{padding:10px 16px;background-color:var(--dark-primary);color:var(--dark-button-text);border:none;border-radius:10px;cursor:pointer;font-size:.95rem;font-weight:500;transition:background-color .2s ease,box-shadow .2s ease}.chat-send-button:hover{background-color:var(--dark-primary-hover)}.chat-send-button:focus-visible{outline:none;box-shadow:0 0 0 var(--focus-ring-width) var(--dark-button-focus-shadow-color)}.chat-send-button:disabled{background-color:var(--dark-disabled-bg);color:var(--dark-disabled-text);cursor:not-allowed;box-shadow:none}footer{margin-top:48px;padding-top:24px;border-top:1px solid var(--dark-border);color:var(--dark-text-secondary);font-size:.9rem}
