/* ───────────────────────────────────────────────────────────── Pair Feed Cards – Shared Styles ───────────────────────────────────────────────────────────── */ /* ── Card shell ── */ .pair-card { width: 100%; max-width: 380px; border-radius: var(--r-lg); overflow: hidden; background: var(--surface); box-shadow: var(--shadow-card); } /* ── Header (sits below image) ── */ .pair-card-header { display: flex; justify-content: space-between; align-items: center; padding: 14px 20px 10px; } .pair-lang-pill { font-size: 11px; font-weight: 500; letter-spacing: 0.09em; color: #6B6556; font-family: var(--font-ui); text-transform: uppercase; } .pair-points-pill { color: var(--gold); font-size: 12px; font-weight: 500; font-family: var(--font-ui); display: flex; align-items: center; gap: 4px; } /* Thin divider below header */ .pair-header-divider { height: 0.5px; background: #E0DDD5; margin: 0 20px; } /* ── Section labels ── */ .pair-section-label { font-size: 10px; font-weight: 500; letter-spacing: 0.10em; text-transform: uppercase; color: #A89F8C; font-family: var(--font-ui); margin-bottom: 8px; } /* ── Icon buttons (TTS / translate) ── */ .pair-icon-btn { background: #F0EDE3; border: 0.5px solid #D8D3C5; border-radius: 10px; width: 38px; height: 38px; display: flex; align-items: center; justify-content: center; cursor: pointer; padding: 0; flex-shrink: 0; transition: background 0.15s, color 0.15s; color: #7A6E55; -webkit-user-select: none; user-select: none; } .pair-icon-btn:hover { background: #E0DAC8; } .pair-icon-btn.active { background: #C4A85A22; color: #B07840; } /* Hold-to-translate button */ .pair-hold-wrap { width: 38px; height: 38px; flex-shrink: 0; cursor: pointer; -webkit-user-select: none; user-select: none; border-radius: 10px; overflow: visible; } /* Ring fill animation — 2 seconds */ @keyframes holdRing { from { stroke-dashoffset: 100.53; } to { stroke-dashoffset: 0; } } /* ── Image area ── */ .pair-image-wrap { position: relative; width: 100%; aspect-ratio: 1 / 1; overflow: hidden; cursor: default; background: #1a1a1a; } .pair-image { width: 100%; height: 100%; object-fit: cover; display: block; transition: filter 0.28s ease; } .pair-image-wrap.chip-active .pair-image, .pair-image-wrap.chip-active .pair-image-placeholder { filter: brightness(0.45) saturate(0.7); } .pair-image-placeholder { width: 100%; height: 100%; min-height: 220px; background: linear-gradient(145deg, #EDE0CE 0%, #C8A882 100%); display: flex; align-items: center; justify-content: center; font-size: 40px; transition: filter 0.28s ease; } /* Overlay badge that appears above the image when a chip is active */ .pair-chip-highlight { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; pointer-events: none; animation: chipFadeIn 0.18s ease; } @keyframes chipFadeIn { from { opacity: 0; transform: scale(0.88); } to { opacity: 1; transform: scale(1); } } .pair-chip-highlight-badge { background: rgba(255, 252, 248, 0.97); border-radius: 18px; padding: 16px 28px 14px; text-align: center; box-shadow: 0 8px 40px rgba(0, 0, 0, 0.28); border: 1px solid rgba(200, 160, 100, 0.3); } .pair-chip-highlight-target { display: block; font-family: var(--font-display); font-size: 24px; font-weight: 700; color: #3A2515; line-height: 1.2; margin-bottom: 5px; } .pair-chip-highlight-native { display: block; font-family: var(--font-ui); font-size: 13px; color: #9A7D60; font-weight: 600; } /* Object-chip SVG bbox overlay */ .pair-bbox-svg { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; animation: chipFadeIn 0.2s ease; } /* ── Card body ── */ .pair-card-body { padding: 18px 20px 22px; } /* ── Vocabulary chips section ── */ .pair-vocab-section { margin-top: 16px; } .pair-vocab-chips { display: flex; flex-wrap: wrap; gap: 8px; } .pair-vocab-word { padding: 6px 14px; background: #F0EDE3; border-radius: 30px; border: 0.5px solid #D8D3C5; font-family: var(--font-display); font-size: 13px; font-style: italic; color: #7A5C2E; cursor: default; } /* Sentence action row (sentence + icon buttons) */ .pair-sentence-row { display: flex; align-items: flex-start; gap: 12px; } .pair-sentence-text { flex: 1; } /* Clickable sentence — tap to play audio */ .pair-sentence-clickable { cursor: pointer; user-select: none; } /* Word chips inside sentences — underline italic style */ .pair-word-chip { display: inline; font-style: italic; color: #7A5C2E; text-decoration: underline; text-decoration-color: #C4A85A; text-underline-offset: 3px; text-decoration-thickness: 1.5px; cursor: pointer; transition: color 0.15s, text-decoration-color 0.15s; user-select: none; background: none; border: none; padding: 0; border-radius: 0; font-weight: inherit; vertical-align: baseline; } .pair-word-chip:hover { color: #5C3D22; text-decoration-color: #B07840; } .pair-word-chip.active { color: #B07840; text-decoration-color: #B07840; text-decoration-thickness: 2px; } /* Sentence text (text-type cards) */ .pair-sentence { font-family: var(--font-display); font-size: 18px; line-height: 1.7; color: #3A2515; margin-bottom: 20px; } /* Question text */ .pair-question { font-family: var(--font-display); font-size: 17px; font-weight: 600; line-height: 1.65; color: #3A2515; margin-bottom: 16px; } /* Hint — native language translation */ .pair-hint { font-family: var(--font-ui); font-size: 13px; color: #A08868; line-height: 1.5; margin: -8px 0 16px; } /* ── Buttons ── */ .pair-btn-row { display: flex; gap: 10px; } .pair-btn { flex: 1; padding: 14px 10px; border-radius: 13px; border: none; font-family: var(--font-ui); font-size: 15px; font-weight: 700; cursor: pointer; letter-spacing: 0.01em; transition: transform 0.1s, filter 0.15s, opacity 0.15s; } .pair-btn:hover:not(:disabled) { filter: brightness(1.07); } .pair-btn:active:not(:disabled) { transform: scale(0.96); } .pair-btn:disabled { opacity: 0.75; cursor: default; } .pair-btn-primary { background: var(--accent-strong); color: #F5EDE0; } .pair-btn-locked { background: #E0DDD5; color: #B0A898; cursor: not-allowed; } .pair-btn-yes { background: var(--success); color: #fff; } .pair-btn-no { background: var(--danger); color: #fff; } .pair-btn-correct { background: var(--success); color: #fff; } .pair-btn-wrong { background: var(--danger); color: #fff; } /* ── Word option buttons ── */ .pair-options { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 6px; } .pair-option-btn { padding: 11px 18px; border-radius: 11px; border: 1.5px solid #DDD0BF; background: #FDFAF6; color: #3A2515; font-family: var(--font-ui); font-size: 15px; font-weight: 600; cursor: pointer; transition: transform 0.1s, background 0.15s, border-color 0.15s, color 0.15s; } .pair-option-btn:hover:not(:disabled) { background: #FFF0E0; border-color: #C8956A; } .pair-option-btn:active:not(:disabled) { transform: scale(0.95); } .pair-option-btn.selected { background: #FFF0DC; border-color: #C4A85A; color: #5C3D22; } .pair-option-btn.correct { background: var(--success); color: #fff; border-color: var(--success); } .pair-option-btn.wrong { background: var(--danger); color: #fff; border-color: var(--danger); } .pair-option-btn:disabled { cursor: default; } /* ── Feedback ── */ .pair-feedback { font-family: var(--font-ui); font-size: 14px; font-weight: 700; padding: 12px 0 2px; color: #3A2515; } .pair-feedback.correct { color: var(--success); } .pair-feedback.wrong { color: var(--danger); }