.app { font-family: 'Arial', sans-serif; max-width: 1200px; margin: 0 auto; padding: 20px; color: #333; } .app-header { text-align: center; margin-bottom: 40px; } h1 { font-size: 2.5rem; margin-bottom: 1rem; color: #2c3e50; letter-spacing: -0.5px; } .instructions { font-size: 1.1rem; line-height: 1.6; color: #555; max-width: 800px; margin: 0 auto; } .highlight { background-color: rgba(255, 255, 200, 0.5); padding: 0.2rem 0.5rem; border-radius: 4px; font-weight: 500; color: #444; } main { display: flex; justify-content: center; margin: 2rem 0; } .app-footer { text-align: center; margin-top: 60px; padding-top: 20px; border-top: 1px solid #eee; color: #777; font-size: 0.9rem; } .text-focus-morph { width: 100%; max-width: 800px; margin: 0 auto; padding: 20px; font-family: 'Arial', sans-serif; position: relative; min-height: 80vh; } .content-container { display: flex; flex-direction: column; gap: 1rem; position: relative; } /* Paragraph level */ .paragraph-container, .paragraph-wrapper { position: relative; padding: 1rem; border-radius: 8px; cursor: pointer; will-change: transform, opacity, filter, background-color; transition: background-color 0.2s ease; } .paragraph-container.selected, .paragraph-wrapper.selected { background-color: rgba(200, 220, 255, 0.1); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05); z-index: 1; } .paragraph { margin: 0; line-height: 1.6; text-align: left; } .sentences-container { display: inline; line-height: 1.7; text-align: left; } /* Sentence level */ .sentence, .sentence-wrapper { position: relative; padding: 2px 4px; border-radius: 4px; cursor: pointer; transition: background-color 0.2s ease; display: inline; will-change: transform, opacity, filter, background-color; } .sentence.selected, .sentence-wrapper.selected { background-color: rgba(200, 220, 255, 0.2); z-index: 2; } /* Word level */ .word-container, .word-wrapper { display: inline-block; padding: 2px 4px; margin: 0 2px; border-radius: 4px; cursor: pointer; transition: all 0.3s ease; will-change: transform, opacity, filter, background-color; position: relative; z-index: 1; /* Base z-index */ } .word-container.selected, .word-wrapper.selected { background-color: #ffffff; /* Fully opaque background */ width: 90%; max-width: 600px; margin: 1rem auto; display: block; padding: 1rem; box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15); z-index: 50; /* Higher than everything else */ position: relative; isolation: isolate; /* Creates a new stacking context */ } .word { font-weight: 500; position: relative; } /* Fix for the word details view */ .word-details-wrapper { width: 100%; overflow-y: auto; position: relative; margin: 0 auto; z-index: 55; /* Higher z-index */ background-color: #ffffff; /* Solid background */ border-radius: 8px; box-shadow: 0 0 0 1000px white; /* Create an extended white background */ } /* No longer needed - using word-backdrop element instead */ /* Backdrop overlay for word view */ .word-backdrop { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background-color: rgba(255, 255, 255, 0.9); z-index: 45; /* Between regular content and the word container */ pointer-events: none; /* Allow clicks to pass through */ } .word-content { background-color: white; border-radius: 8px; padding: 1.5rem; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08); max-height: 60vh; overflow-y: auto; position: relative; z-index: 56; /* Even higher z-index */ } .word-details { display: flex; flex-direction: column; gap: 0.8rem; background-color: white; border-radius: 8px; padding: 1rem; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08); position: relative; z-index: 56; /* Match word-content z-index */ } /* Ensure all word detail elements remain on top */ .word-container.selected *, .word-wrapper.selected * { position: relative; z-index: 1; } .word-header { display: flex; justify-content: space-between; align-items: flex-start; border-bottom: 2px solid rgba(255, 200, 200, 0.3); padding-bottom: 0.5rem; margin-bottom: 0.8rem; } .word-title, .word-text { font-size: 1.8rem; margin: 0; color: #2c3e50; flex: 1; } .word-phonetics, .word-phonetics.ipa { margin: 0.8rem 0; padding: 0.5rem; background-color: rgba(245, 245, 245, 0.5); border-radius: 4px; } .pronunciation-item { margin: 0.5rem 0; display: flex; align-items: center; gap: 0.5rem; } .ipa { font-family: serif; font-style: italic; background-color: rgba(255, 255, 255, 0.8); padding: 0.2rem 0.5rem; border-radius: 4px; font-weight: 500; } .pronunciation-tags { color: #666; font-size: 0.9rem; } .word-meanings { margin: 1rem 0; font-size: 0.95rem; color: #333; background-color: rgba(255, 255, 255, 0.8); padding: 0.8rem; border-radius: 6px; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); } .sense-container, .word-meaning { margin: 1rem 0; padding: 0.5rem; border-left: 3px solid rgba(255, 200, 200, 0.3); padding-left: 1rem; } .sense-header { display: flex; align-items: center; gap: 0.5rem; margin-bottom: 0.5rem; } .pos-tag { background-color: rgba(200, 220, 255, 0.3); color: #2c3e50; padding: 0.1rem 0.5rem; border-radius: 4px; font-size: 0.9rem; font-weight: 500; } .etymology { font-style: italic; color: #666; font-size: 0.9rem; } .sense-list { margin: 0.5rem 0; padding-left: 1.5rem; } .sense-item { margin: 0.3rem 0; } .glosses { line-height: 1.5; } /* Syllables display */ .syllables-section { margin: 1.5rem 0 0.5rem 0; padding-top: 1rem; border-top: 1px solid #eee; } .syllables-container { display: flex; flex-direction: column; gap: 0.8rem; } .syllables-row { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.8rem; margin-top: 0.5rem; } /* Compact syllables display for header */ .syllables-compact { display: flex; flex-wrap: wrap; gap: 0.4rem; align-items: center; margin-left: 1rem; } .syllable { display: inline-block; padding: 0.3rem 0.6rem; background-color: rgba(200, 255, 200, 0.2); border-radius: 6px; cursor: pointer; transition: all 0.2s ease; font-weight: 500; text-align: center; font-size: 0.9rem; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); } .syllable:hover { background-color: rgba(200, 255, 200, 0.4); transform: translateY(-2px); } .syllable.selected { background-color: rgba(200, 255, 200, 0.4); } .phoneme { display: inline-block; padding: 2px; margin: 0 1px; background-color: rgba(255, 255, 200, 0.2); border-radius: 2px; } /* Loading and error states */ .word-loading, .word-error { text-align: center; padding: 2rem; background-color: white; border-radius: 8px; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08); z-index: 56; } .word-error { color: #e74c3c; background-color: rgba(255, 200, 200, 0.1); } /* Navigation */ .back-button { position: fixed; top: 20px; left: 20px; padding: 8px 16px; background-color: #f0f0f0; border: none; border-radius: 4px; cursor: pointer; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); z-index: 100; transition: background-color 0.2s ease; } .back-button:hover { background-color: #e0e0e0; } /* Responsive adjustments */ @media (max-width: 768px) { .word-container.selected, .word-wrapper.selected { width: 100%; padding: 0.5rem; } .word-content, .word-details { padding: 1rem; } .word-title, .word-text { font-size: 1.5rem; } .word-header { flex-direction: column; align-items: flex-start; } .syllables-compact { margin-left: 0; margin-top: 0.5rem; } } /* Translation modal */ .modal-bg { width: 100vw; height: 100vh; background-color: rgba(0, 0, 0, 0.3); position: fixed; top: 0; left: 0; z-index: 100; } .modal-bg2 { position: relative; width: 100%; height: 100%; } .modal-fg { background-color: white; z-index: 101; border: 1px solid black; overflow-y: auto; padding: 1rem; width: 80%; height: max-content; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); border-radius: 8px; box-shadow: 0 4px 24px rgba(0, 0, 0, 0.2); } /* Translation button */ .translate-button { position: fixed; top: 20px; right: 20px; padding: 8px 16px; background-color: #f0f0f0; border: none; border-radius: 4px; cursor: pointer; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); z-index: 100; transition: background-color 0.2s ease; } .translate-button:hover { background-color: #e0e0e0; } .suword { margin-left: 0.5ch; margin-right: 0.5ch; } /* .suword.pred { */ /* color: gold; */ /* } */ /* Clause level */ .clause-container { max-width: 600px; white-space: normal !important; hyphens: auto; padding: 2px; border-radius: 4px; cursor: pointer; transition: background-color 0.2s ease; will-change: transform, opacity, filter, background-color; span { white-space: normal !important; } } .clause-container.selected { background-color: rgba(220, 200, 255, 0.2); z-index: 3; } .suword.subj { color: blue; /* border-bottom: 2px solid blue; */ } .suword.root { color: darkred; }