/* Shared analysis modal and journal. Base dependencies: cabinet tokens, font and reset.
   Feature styles own their content variants; no acquired/retention feature CSS required. */
.lesson-switch-status{margin:12px 0 0;padding:8px 12px;border-left:3px solid var(--accent);border-radius:6px;background:var(--accent-soft-bg);color:var(--text);font-family:inherit;font-size:14px;font-weight:400;line-height:22px;overflow-wrap:anywhere}
.lesson-switch-status[hidden]{display:none}
    .rv2-modal{position:fixed;inset:0;z-index:200;background:var(--veil-bg);backdrop-filter:var(--veil-filter);-webkit-backdrop-filter:var(--veil-filter);display:none;align-items:center;justify-content:center;padding:40px 16px;overflow:auto}
    .rv2-modal.on{display:flex;animation:tlVeilIn 150ms ease-out}
    .rv2-modal.on .rv2-modal-box{animation:tlModalIn 180ms cubic-bezier(0.16,1,0.3,1)}
    .rv2-modal-box{background:var(--panel);border:1px solid var(--border);border-radius:18px;max-width:640px;width:100%;max-height:min(85vh,calc(100dvh - 80px));display:flex;flex-direction:column;overflow:hidden;padding:0;position:relative;box-shadow:0 16px 48px rgba(0,0,0,.20)}/* прокручивается содержимое, заголовок и крестик остаются на месте */
    .rv2-modal-box.rv2-modal--wide{max-width:920px}/* журнальная модалка группы шире (двухколоночный .jl-row); похвала-сторис на дефолтной 640 */
    .rv2-modal-h{font-size:16px;font-weight:600;margin:18px 60px 14px 20px;flex:none;color:var(--text)}
    .rv2-modal-body{min-height:0;overflow:auto;overscroll-behavior:contain;padding:0 20px 22px}
.rv2-modal-x{position:absolute;top:14px;right:14px}/* ui_close.css owns the control itself. */
    .jl-row{padding:18px 0;border-top:1px solid var(--border-soft)}
    .jl-row:first-child{border-top:0;padding-top:6px}
    .rv2-modal-box .jl-row{display:grid;grid-template-columns:292px 1fr;column-gap:24px}
    @media (max-width:640px){ .rv2-modal-box .jl-row{grid-template-columns:1fr;row-gap:10px} }
    .jl-anchor{padding-top:2px}/* микро-выравнивание термина с первой строкой разбора (из лабы, улов Кости) */
    .jl-term{font-size:21px;font-weight:700;line-height:var(--lh-26);color:var(--text)}
    .jl-ru{font-size:13.5px;color:var(--text-muted);margin-top:5px;line-height:var(--lh-20)}
    .jl-body{min-width:0}
    .jl-body>*{margin:0}
    .jl-body>*+*{margin-top:12px}
    .jl-q{background:var(--row-bg);border-radius:10px;padding:10px 12px}
    .jl-qwho{display:flex;align-items:center;gap:8px;margin-bottom:4px}
    /* Decorative quotation mark: enabled only for the inline learned column.
       The common quote owns its geometry; neighboring feature CSS is optional. */
    .jl-q--marked .jl-qwho::after{content:"";display:block;width:14px;height:14px;flex:0 0 14px;align-self:flex-start;margin-inline-start:auto;background:var(--accent);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7.5 5A3.5 3.5 0 0 1 11 8.5c0 4-1.7 6.8-5.2 8.5l-1.4-2.2c2.1-1 3.2-2.2 3.5-3.8h-.4a3.5 3.5 0 0 1 0-7Zm10 0A3.5 3.5 0 0 1 21 8.5c0 4-1.7 6.8-5.2 8.5l-1.4-2.2c2.1-1 3.2-2.2 3.5-3.8h-.4a3.5 3.5 0 0 1 0-7Z'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7.5 5A3.5 3.5 0 0 1 11 8.5c0 4-1.7 6.8-5.2 8.5l-1.4-2.2c2.1-1 3.2-2.2 3.5-3.8h-.4a3.5 3.5 0 0 1 0-7Zm10 0A3.5 3.5 0 0 1 21 8.5c0 4-1.7 6.8-5.2 8.5l-1.4-2.2c2.1-1 3.2-2.2 3.5-3.8h-.4a3.5 3.5 0 0 1 0-7Z'/%3E%3C/svg%3E") center/contain no-repeat}
    .jl-q--marked .jl-qname{min-width:0;overflow-wrap:anywhere}
    .jl-qava{width:20px;height:20px;border-radius:50%;background:var(--accent-soft-bg);color:var(--accent-hover);font-size:11px;line-height:var(--lh-16);font-weight:700;display:inline-flex;align-items:center;justify-content:center;flex:none}
    .jl-qname{font-size:12px;font-weight:600;color:var(--text-muted)}
    .jl-qtext{font-size:15px;color:var(--text);line-height:var(--lh-24)}
    .jl-expl{font-size:15px;color:var(--text-dim);line-height:var(--lh-22)}
    .jl-expl .en,.jl-qtext .en{color:var(--text)}
    :is(#rv2modal,.retention-modal){--jl-quote-bg:color-mix(in srgb,var(--accent) 8%,var(--panel))}
    :root.dark :is(#rv2modal,.retention-modal){--jl-quote-bg:color-mix(in srgb,var(--accent) 12%,var(--panel))}
    :is(#rv2modal,.retention-modal) .jl-q{background:var(--jl-quote-bg)}
    :is(#rv2modal,.retention-modal) .jl-ru,:is(#rv2modal,.retention-modal) .jl-qname,:is(#rv2modal,.retention-modal) .jl-expl{color:var(--text)}
    :is(#rv2modal,.retention-modal) .jl-qwho{align-items:baseline}
    :is(#rv2modal,.retention-modal) .jl-anchor{min-width:0}
    :is(#rv2modal,.retention-modal) .jl-term,:is(#rv2modal,.retention-modal) .jl-ru{overflow-wrap:anywhere}
    @media (min-width:641px){
      :is(#rv2modal,.retention-modal) .jl-row{align-items:first baseline}
      :is(#rv2modal,.retention-modal) .jl-anchor{padding-top:0}
    }
.en{font-family:'SF Mono','Menlo',monospace;font-size:.93em;line-height:inherit}
.jl-term .en{font-size:20px}
.jl-qtext .en{font-size:14px}
.jl-expl .en{font-size:13px}
    .jl-term-row{display:flex;align-items:center;gap:10px}
    .jl-term-row .jl-term{min-width:0}
@keyframes tlVeilIn{from{opacity:0}to{opacity:1}}
@keyframes tlModalIn{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}
@keyframes tlShake{0%,100%{transform:translateX(0)}25%{transform:translateX(-6px)}75%{transform:translateX(6px)}}
.rv2-modal.on .rv2-modal-box.tl-shake,.rv-modal.tl-shake,.po-card.tl-shake,.game-overlay-card.tl-shake{animation:tlShake 240ms ease}/* клик по вуали , встряска, не закрытие (канон); специфичность бьёт entry-анимацию */
@media(prefers-reduced-motion:reduce){.rv-backdrop,.rv-modal,.rv2-modal.on,.rv2-modal.on .rv2-modal-box,.rv2-modal.on .rv2-modal-box.tl-shake,.rv-modal.tl-shake,.po-card.tl-shake,.game-overlay-card.tl-shake{animation:none}}

