:root{--color-intro: #d1e9ff;--color-seq: #fff4cc;--color-cause-effect: #ffdada;--color-example-detail: #e2fcd4;--color-conclusion: #f3e5f5;--color-intro-text: #004085;--color-seq-text: #856404;--color-cause-effect-text: #721c24;--color-example-detail-text: #155724;--color-conclusion-text: #4a148c;--color-contrast: #fff3e0;--color-contrast-text: #bf360c;--color-similarity: #e0f7fa;--color-similarity-text: #006064;--bg-app: #f8fafc;--bg-card: #ffffff;--border-color: #e2e8f0;--text-primary: #1e293b;--text-secondary: #64748b;--accent: #3b82f6;--accent-hover: #2563eb;--spacing-lg: 2rem;--spacing-md: 1rem;--spacing-sm: .5rem;--font-size-text: 1.25rem;--font-size-title: 2rem;--font-size-bank: 1.1rem}body{margin:0;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background-color:var(--bg-app);color:var(--text-primary);line-height:1.6}#root{min-height:100vh}.container{display:flex;flex-direction:column;width:100vw;height:100vh;margin:0;padding:0;overflow:hidden;max-width:none}h1{font-size:var(--font-size-title);text-align:center;margin-bottom:var(--spacing-sm);color:var(--text-primary)}.sticky-header{position:sticky;top:0;background:#fff;z-index:1100;padding:.75rem 2rem;border-bottom:1px solid var(--border-color);box-shadow:0 4px 6px -4px #0000001a}.main-header{display:flex;justify-content:space-between;align-items:center;width:100%}.header-left{display:flex;align-items:center;gap:1.5rem}.legend-bar{background:#f8fafc;border-bottom:1px solid var(--border-color);padding:.5rem 2rem;display:flex;justify-content:center;gap:2rem;z-index:1050}.legend-item{display:flex;align-items:center;gap:.5rem;font-size:.85rem;font-weight:500;color:var(--text-secondary)}.legend-swatch{width:12px;height:12px;border-radius:3px}.main-layout{display:flex;flex:1;min-height:0;overflow:hidden;gap:0}.workspace{flex:1;min-width:0;height:100%;overflow-y:auto;padding:var(--spacing-lg);background:var(--bg-app)}.mentor-area{background:var(--bg-card);padding:var(--spacing-lg);border-radius:12px;box-shadow:0 4px 6px -1px #0000001a}.paragraph{margin-bottom:var(--spacing-md)}.sentence-card{display:inline-block;padding:6px 12px;margin:4px;border-radius:6px;cursor:grab;background:#fff;border:1px solid var(--border-color);box-shadow:0 1px 3px #0000001a;transition:all .2s cubic-bezier(.4,0,.2,1);font-size:var(--font-size-text);line-height:1.6;position:relative;-webkit-user-select:none;user-select:none;vertical-align:middle}.sentence-card:hover{transform:translateY(-1px);box-shadow:0 4px 6px #0000001a;border-color:var(--accent)}.sentence-content{display:flex;align-items:center;gap:8px;width:100%}.workspace-delete-btn{opacity:0;background:none;border:none;padding:2px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;color:#94a3b8;margin-left:4px}.sentence-card:hover .workspace-delete-btn{opacity:1}.workspace-delete-btn:hover{color:#ef4444;transform:scale(1.1)}.sentence-card.selected{border-color:var(--accent);box-shadow:0 0 0 2px #fff,0 0 0 6px var(--accent)}.sentence-card.reading{animation:pulse 1.5s infinite;box-shadow:0 0 0 4px #fbbf24}@keyframes pulse{0%{opacity:1}50%{opacity:.7}to{opacity:1}}.function-intro{background-color:var(--color-intro);color:var(--color-intro-text)}.function-seq{background-color:var(--color-seq);color:var(--color-seq-text)}.function-cause_effect{background-color:var(--color-cause-effect);color:var(--color-cause-effect-text)}.function-example_detail{background-color:var(--color-example-detail);color:var(--color-example-detail-text)}.function-conclusion{background-color:var(--color-conclusion);color:var(--color-conclusion-text)}.function-contrast{background-color:var(--color-contrast);color:var(--color-contrast-text)}.function-similarity{background-color:var(--color-similarity);color:var(--color-similarity-text)}.mentor-area.paragraph-canvas{background:#fdfdfd;background-image:linear-gradient(90deg,transparent 79px,#abced4 79px,#abced4 81px,transparent 81px),linear-gradient(#eee .1em,transparent .1em);background-size:100% 1.8em;padding:2rem 2rem 2rem 6rem;border-radius:8px;line-height:1.8;box-shadow:0 10px 25px #0000000d;border:1px solid var(--border-color);min-height:400px}.paragraph{margin-bottom:2rem;position:relative}.composition-paragraph-wrapper,.discourse-chunk-wrapper{min-height:80px;position:relative}.composition-paragraph-wrapper .paragraph:empty,.discourse-highlight .paragraph:empty,.paragraph:not(:has(>*)){min-height:80px;border:1px dashed #ccc;border-radius:4px;display:flex;align-items:center;justify-content:center;position:relative;background:#cbd5e10d}.composition-paragraph-wrapper .paragraph:empty:before,.discourse-highlight .paragraph:empty:before,.paragraph:not(:has(>*)):before{content:"Drop sentences here";color:#94a3b8;font-size:.9rem;font-style:italic;pointer-events:none}body.dragging .paragraph:empty,body.dragging .paragraph:not(:has(>*)){background:#3b82f61a;border-color:var(--accent);border-style:solid;border-width:2px;box-shadow:0 0 0 2px #3b82f633;animation:dropZonePulse 1.5s ease-in-out infinite}@keyframes dropZonePulse{0%,to{background:#3b82f61a}50%{background:#3b82f626}}.sentence-item{display:inline;padding:2px 4px;margin:0;border-radius:4px;border:none;font-size:1.3rem;line-height:1.8;transition:background-color .2s;text-decoration:none;position:relative}.mentor-card{cursor:grab}.mentor-card:hover,.bank-card:hover{background-color:#3b82f60d}.mentor-card.selected{background-color:#3b82f61a;box-shadow:0 0 0 1px var(--accent)}.sentence-item.mentor-card.drag-over{background-color:transparent;box-shadow:none;transform:none}.sentence-item.mentor-card.drag-over:before,.sentence-item.mentor-card.drag-over:after{content:"";position:absolute;top:0;bottom:0;width:3px;background:var(--accent);opacity:0;transition:opacity .2s;box-shadow:0 0 6px var(--accent)}.sentence-item.mentor-card.drag-over[style*="--insert: 0"]:before{left:-4px;opacity:1}.sentence-item.mentor-card.drag-over[style*="--insert: 1"]:after{right:-4px;opacity:1}.insertion-point{display:inline-block;width:12px;height:1.5em;margin:0 -4px;vertical-align:middle;transition:all .1s ease;position:relative;z-index:5;cursor:crosshair}.insertion-point.active{width:12px;margin:0 6px}.insertion-point.active:after{content:"";position:absolute;left:50%;top:0;bottom:0;width:3px;background:var(--accent);border-radius:2px;transform:translate(-50%);box-shadow:0 0 6px var(--accent);animation:blink 1s infinite}@keyframes blink{50%{opacity:.3}}@keyframes caretPulse{0%,to{opacity:1;transform:scaleY(1)}50%{opacity:.7;transform:scaleY(.95)}}.bank-card{background:#fff;border:1px solid var(--border-color);padding:12px;border-radius:8px;cursor:grab;transition:all .2s;min-height:3rem;display:flex;align-items:center;position:relative}.bank-card:empty:before{content:"Type sentence...";color:#94a3b8;font-style:italic;font-size:.9rem}.bank-card.editing{border-color:var(--accent);box-shadow:0 0 0 2px #3b82f61a;background:#fff}.creator-menu{background:#f8fafc;border:1px solid var(--border-color);padding:12px;border-radius:8px;margin-bottom:12px}.creator-menu-title{font-size:.8rem;font-weight:700;text-transform:uppercase;color:#64748b;margin-bottom:8px;letter-spacing:.05em}.creator-menu-grid{display:flex;flex-wrap:wrap;gap:8px}.creator-option{padding:6px 10px;font-size:.85rem;border-radius:6px;cursor:pointer;border:1px solid var(--border-color);background:#fff;transition:all .2s}.creator-option:hover{transform:translateY(-1px);box-shadow:0 2px 4px #0000000d}.creator-option.intro{border-left:4px solid var(--color-intro)}.creator-option.seq{border-left:4px solid var(--color-seq)}.creator-option.cause_effect{border-left:4px solid var(--color-cause)}.creator-option.example_detail{border-left:4px solid var(--color-example-detail)}.creator-option.conclusion{border-left:4px solid var(--color-conclusion)}.creator-option.contrast{border-left:4px solid var(--color-contrast)}.creator-option.similarity{border-left:4px solid var(--color-similarity)}.bank-card.function-intro{border-left:4px solid var(--color-intro)}.bank-card.function-seq{border-left:4px solid var(--color-seq)}.bank-card.function-cause_effect{border-left:4px solid var(--color-cause)}.bank-card.function-example_detail{border-left:4px solid var(--color-example-detail)}.bank-card.function-conclusion{border-left:4px solid var(--color-conclusion)}.bank-card.function-contrast{border-left:4px solid var(--color-contrast)}.bank-card.function-similarity{border-left:4px solid var(--color-similarity)}.drag-handle{width:40px;height:4px;background:var(--text-secondary);border-radius:2px;opacity:.5}.bank-area{width:350px;flex-shrink:0;background:#fff;border-right:1px solid var(--border-color);display:flex;flex-direction:column;height:100%;overflow-y:auto;transition:all .3s ease;z-index:1000}.bank-area.closed{width:0;padding:0;opacity:0;transform:translate(-20px);margin-left:-20px;pointer-events:none}.bank-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-md);position:sticky;top:0;background:#fff;padding:4px 0;z-index:5}.bank-sections{display:flex;flex-direction:column;gap:var(--spacing-lg)}.bank-section h3{font-size:1.1rem;color:var(--text-secondary);margin-bottom:var(--spacing-sm);border-bottom:1px solid var(--border-color);padding-bottom:4px}.bank-grid{display:flex;flex-wrap:wrap;gap:var(--spacing-md)}.selection-prompt{background:#fffbeb;border:2px solid #fbbf24;color:#92400e;padding:var(--spacing-md);margin-bottom:var(--spacing-md);border-radius:8px;display:flex;align-items:center;gap:8px;font-weight:600;animation:slideIn .3s ease-out}.dragging-overlay{margin:0!important;padding:6px 12px!important;position:fixed!important;pointer-events:none!important;z-index:9999!important;opacity:.9;box-shadow:0 10px 25px #0003;cursor:grabbing;width:fit-content!important;max-width:600px!important;text-align:left!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:#fff;display:inline-block}.dragging-overlay.bank-card{border:1px solid var(--accent);border-left-width:4px}.dragging-overlay.sentence-card{border:1px solid var(--accent)}.dragging-overlay.discourse-chunk{box-shadow:0 15px 35px #00000040}@keyframes slideIn{0%{transform:translateY(-10px);opacity:0}to{transform:translateY(0);opacity:1}}.bank-edit-inline{display:block;min-width:100px;min-height:1.5em;outline:none}.bank-edit-i.bank-grid{display:flex;flex-direction:column;gap:var(--spacing-sm)}.bank-card{width:100%;display:block;text-align:left;background:#fff;border-bottom:1px solid var(--border-color);padding:8px 12px;border-radius:0;cursor:grab}.bank-card:hover{background-color:#3b82f60d}.dnd-placeholder{width:3px!important;height:1.5em!important;background-color:#2563eb!important;z-index:50!important;margin:0 4px!important;box-shadow:0 0 6px #2563eb99!important;border-radius:2px!important;display:inline-block!important;vertical-align:middle!important;pointer-events:none!important}.sortable-placeholder{opacity:1!important}.sortable-placeholder *{visibility:hidden!important;height:0!important;width:0!important;overflow:hidden!important}.is-dragging{cursor:grabbing}.bank-card.editing{box-shadow:0 0 0 2px var(--accent)}.function-none{background-color:#f1f5f9;color:var(--text-primary)}.bank-card[draggable=true]:active{cursor:grabbing;opacity:.5}.sentence-card,.bank-card{line-height:1.8}.hotspot{background-color:#3b82f633;border-bottom:2px dashed var(--accent);padding:2px 4px;cursor:text}.hotspot:focus{outline:none;background-color:#3b82f666}.warning-badge{position:absolute;top:-10px;right:-10px;background:#fbbf24;color:#92400e;font-size:.75rem;padding:2px 8px;border-radius:12px;font-weight:700;border:2px solid white}.controls{display:flex;justify-content:center;gap:var(--spacing-md);margin-bottom:var(--spacing-md)}button{padding:12px 24px;border-radius:8px;font-weight:600;cursor:pointer;border:none;transition:background .2s;font-size:1rem}button.primary{background:var(--accent);color:#fff}button.primary:hover{background:var(--accent-hover)}button.secondary{background:#e2e8f0;color:#1e293b}button.secondary:hover{background:#cbd5e1}.finish-view{background:#fff;padding:3rem;border-radius:16px;box-shadow:0 10px 15px -3px #0000001a;max-width:800px;margin:0 auto}.finish-text{font-size:1.5rem;line-height:1.8;white-space:pre-wrap}.finish-text p{margin-bottom:1.5rem}.modal{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:100}.mentor-card{position:relative;transition:all .2s ease}.mentor-card.drag-over{background-color:var(--accent-light);transform:scale(1.02);border:2px dashed var(--accent)}.mentor-remove-btn{position:absolute;top:-10px;right:-10px;background:#fff;border:1px solid var(--border-color);color:#ef4444;border-radius:50%;padding:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .2s ease,transform .2s ease;z-index:10;box-shadow:0 2px 4px #0000001a}.mentor-card:hover .mentor-remove-btn{opacity:1}.mentor-remove-btn:hover{transform:scale(1.2);background:#fee2e2}.bank-card[draggable=true]{cursor:grab}.bank-card[draggable=true]:active{cursor:grabbing}.bank-card input{width:100%;font-size:var(--font-size-bank);border:1px solid var(--accent);padding:4px;border-radius:4px}.insertion-point{display:inline-block;width:12px;height:2em;margin:0 -6px;vertical-align:middle;transition:all .2s ease;position:relative;z-index:5}.insertion-point.active{width:20px;margin:0 4px}.insertion-point.active:after{content:"";position:absolute;left:50%;top:0;bottom:0;width:4px;background:var(--accent);border-radius:2px;transform:translate(-50%)}.btn-mode{display:flex;align-items:center;gap:8px;padding:10px 16px;border-radius:8px;font-weight:600;border:1px solid var(--border-color);background:#fff;color:var(--text-secondary);cursor:pointer;transition:all .2s}.btn-mode:hover{background:#f1f5f9}.btn-mode.active{background:#4f46e5;color:#fff;border-color:#4338ca;box-shadow:0 4px 6px -1px #4f46e533}.discourse-chunk-wrapper{background:#3b82f60d;border-left:4px solid var(--accent);padding:1rem;margin-bottom:1.5rem;border-radius:8px;transition:all .2s ease;pointer-events:none}.discourse-chunk-wrapper>*{pointer-events:auto}.discourse-label{font-size:.75rem;font-weight:600;color:var(--accent);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.5rem}.discourse-highlight{background:#fff;padding:.75rem;border-radius:4px;min-height:50px}.discourse-chunk{background:#3b82f614;border-left:4px solid var(--accent);padding:1rem;margin-bottom:1rem;border-radius:8px;position:relative;transition:all .2s ease}.discourse-chunk:before{content:attr(data-label);position:absolute;top:-.5rem;left:1rem;background:var(--accent);color:#fff;font-size:.7rem;font-weight:600;padding:2px 8px;border-radius:4px;text-transform:uppercase;letter-spacing:.05em}.mode-discourse .discourse-chunk-wrapper:hover{background:#3b82f614;box-shadow:0 2px 8px #3b82f626}.mode-discourse .discourse-chunk:hover{background:#3b82f61f;box-shadow:0 2px 8px #3b82f626}.mode-discourse .discourse-chunk.dragging{opacity:.5;transform:scale(.98)}.mode-discourse .discourse-chunk.drag-target{background:#3b82f626;border-left-color:var(--accent-hover);box-shadow:0 0 0 2px var(--accent-light, #bfdbfe)}.phrase-mode-sentence{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:8px}.functional-chip{display:inline-flex;align-items:center;padding:6px 14px;border-radius:20px;background:#fff;border:1px solid var(--border-color);transition:all .2s;cursor:pointer;position:relative;margin:4px;font-weight:500;box-shadow:0 2px 4px #0000000d}.phrase-chip-group{display:inline-flex;flex-wrap:wrap;align-items:center;padding:8px;gap:6px;border-radius:8px;transition:all .2s;position:relative;background:#00000005}.phrase-content{display:inline-flex;flex-wrap:wrap;align-items:center;gap:6px;width:100%}.functional-chip:hover{filter:brightness(.95);transform:translateY(-1px)}.functional-chip.editing{box-shadow:0 0 0 2px var(--accent);background:#fff!important;cursor:text}.landing-page-component{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg-app)}.landing-page-component .landing-page{max-width:1000px;width:100%;margin:0 auto;padding:4rem 2rem;text-align:center}.landing-page-component .landing-header{margin-bottom:4rem}.landing-page-component .landing-header h1{font-size:3rem;font-weight:800;margin-bottom:1rem;background:linear-gradient(135deg,var(--accent),#1e40af);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.landing-page-component .landing-header p{font-size:1.25rem;color:#64748b}.landing-page-component .lesson-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:2rem;justify-content:center}.landing-page-component .lesson-card{background:#fff;border:1px solid var(--border-color);border-radius:16px;padding:2rem;cursor:pointer;transition:all .3s ease;display:flex;flex-direction:column;align-items:center;gap:1.5rem;box-shadow:0 4px 6px -1px #0000000d}.landing-page-component .lesson-card:hover{transform:translateY(-8px);box-shadow:0 20px 25px -5px #0000001a;border-color:var(--accent)}.landing-page-component .lesson-icon{font-size:4rem;background:#f1f5f9;width:100px;height:100px;display:flex;align-items:center;justify-content:center;border-radius:50%}.landing-page-component .lesson-info h3{font-size:1.5rem;margin-bottom:.5rem;color:#1e293b}.landing-page-component .lesson-info p{color:#64748b;line-height:1.6}.functional-chip-text{font-size:1.25rem;line-height:1.4;outline:none}.functional-chip-label{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;opacity:.7;margin-top:2px}.chip-participant{background-color:#eff6ff;border-color:#bfdbfe;color:#1e40af}.chip-process{background-color:#fffbeb;border-color:#fef3c7;color:#92400e}.chip-circumstance{background-color:#f0fdf4;border-color:#dcfce7;color:#166534}.chip-participant .functional-chip-label{color:#1e3a8a}.chip-process .functional-chip-label{color:#78350f}.chip-circumstance .functional-chip-label{color:#064e3b}@keyframes pulse-underline{0%{border-bottom-color:#eab308}50%{border-bottom-color:#fca5a5}to{border-bottom-color:#eab308}}.legend-container{display:flex;gap:1rem;flex-wrap:wrap;padding:1rem;background:#fff;border-bottom:1px solid var(--border-color);margin-bottom:1rem;border-radius:8px}.legend-item{display:flex;align-items:center;gap:.5rem;font-size:.9rem;color:var(--text-secondary)}.legend-swatch{width:16px;height:16px;border-radius:4px}.mode-discourse .paragraph-canvas{display:flex;flex-direction:column;gap:1rem}
