/* Pixelingo remaster — Université R4. Cadre rond = this layer; cadre pixel =
   the original component underneath. Keep box metrics and all event targets. */
html[data-ui-theme]{--rm-bg:#f0e5fa;--rm-surface:#fff9ee;--rm-secondary:#eee2f6;--rm-line:#aa96b9;--rm-text:#352844;--rm-muted:#74677f;--rm-blue:#365e7b;--rm-radius:14px;--rm-radius-large:20px;--rm-stroke:3px;color-scheme:light}
html[data-ui-theme=dark]{--rm-bg:#1b1d1f;--rm-surface:#222528;--rm-secondary:#292c30;--rm-line:#42474d;--rm-text:#e8e9e7;--rm-muted:#a8afb7;--rm-blue:#55beff;color-scheme:dark}
/* Legacy text helpers (empty states, notes, dates, hints) still consume --muted.
   Define its dark value on body too: the old pastel skin sets it there, so a
   root-only token cannot reach dialogs or newly mounted component-owned pages. */
html[data-ui-theme=dark] body{--ink:var(--rm-text);--muted:var(--rm-muted)}
/* High specificity is deliberate: historic ID selectors use !important.
   These are the component outlines, NOT additional focus/selection outlines. */
html[data-ui-frames=rounded]:not(#rm-a#rm-b#rm-c#rm-d) [data-rm-frame]{
 border-image-slice:0!important;border-image-width:0!important;border-image-outset:0!important;border-color:transparent!important;
 border-radius:var(--rm-radius)!important;outline:var(--rm-stroke) solid var(--rm-edge)!important;outline-offset:calc(-1 * var(--rm-stroke))!important;
 background:var(--rm-art,none) center/var(--rm-art-size,100% 100%) no-repeat var(--rm-face)!important;background-clip:border-box!important;box-shadow:none!important;
}
html[data-ui-frames=rounded]:not(#rm-a#rm-b#rm-c#rm-d) [data-rm-frame-before]::before,
html[data-ui-frames=rounded]:not(#rm-a#rm-b#rm-c#rm-d) [data-rm-frame-after]::after{
 border-image-slice:0!important;border-image-width:0!important;border-image-outset:0!important;border-color:transparent!important;border-radius:var(--rm-radius)!important;outline-offset:calc(-1 * var(--rm-stroke))!important;
}
/* Critical charge uses its frame's shadow as an animated gameplay signal. */
html[data-ui-frames=rounded]:not(#rm-a#rm-b#rm-c#rm-d) [data-rm-frame-before]:not(.arena-team-critical)::before,
html[data-ui-frames=rounded]:not(#rm-a#rm-b#rm-c#rm-d) [data-rm-frame-after]::after{box-shadow:none!important}
html[data-ui-frames=rounded]:not(#rm-a#rm-b#rm-c#rm-d) [data-rm-frame-before]::before{background:var(--rm-face-before)!important;outline:var(--rm-stroke) solid var(--rm-edge-before)!important}
html[data-ui-frames=rounded]:not(#rm-a#rm-b#rm-c#rm-d) [data-rm-frame-after]::after{background:var(--rm-face-after)!important;outline:var(--rm-stroke) solid var(--rm-edge-after)!important}
html[data-ui-frames=rounded]:not(#rm-a#rm-b#rm-c#rm-d) [data-rm-frame][data-rm-frame-before]::before,
html[data-ui-frames=rounded]:not(#rm-a#rm-b#rm-c#rm-d) [data-rm-frame][data-rm-frame-after]::after{content:none!important}
html[data-ui-frames=rounded] :is(dialog,.arena-panel,.fc-face,.workshop-controls,.onboarding-panel,.dex-content,.v2-settings-card,.gold-card,.account-card){--rm-radius:20px}
html[data-ui-frames=rounded] :is(button,input,select,textarea,summary,a,.pixel-key-preview>span){--rm-radius:12px}
html[data-ui-frames=rounded] :is(.arena-team-card,.ag-number,.home-status,.settings-tab){--rm-radius:11px}
html[data-ui-theme=dark]:not(#rm-a#rm-b#rm-c#rm-d) body{background-color:var(--rm-bg)!important;color:var(--rm-text)!important}
html[data-ui-theme=dark]:not(#rm-a#rm-b#rm-c#rm-d) [data-rm-surface]{background-color:var(--rm-surface)!important}
html[data-ui-theme=dark]:not(#rm-a#rm-b#rm-c#rm-d) [data-rm-ink]{color:var(--rm-ink,var(--rm-text))!important;text-shadow:none!important;-webkit-text-stroke:0!important}
html[data-ui-theme=dark]:not(#rm-a#rm-b#rm-c#rm-d) [data-rm-border]{border-color:var(--rm-line)!important}
html[data-ui-theme=dark]:not(#rm-a#rm-b#rm-c#rm-d) [data-rm-paper]{background-image:none!important;background-color:var(--rm-bg)!important}
html[data-ui-theme=dark][data-ui-frames=rounded]:not(#rm-a#rm-b#rm-c#rm-d) [data-rm-frame]{background-color:var(--rm-surface)!important;outline-color:var(--rm-accent,var(--rm-line))!important;color:var(--rm-text)!important}
html[data-ui-theme=dark][data-ui-frames=rounded]:not(#rm-a#rm-b#rm-c#rm-d) :is(button,a,summary)[data-rm-frame]{color:var(--rm-button-ink,var(--rm-text))!important}
html[data-ui-theme=dark][data-ui-frames=rounded]:not(#rm-a#rm-b#rm-c#rm-d) [data-rm-frame-before]::before{background:var(--rm-surface)!important;outline-color:var(--rm-accent-before,var(--rm-line))!important}
html[data-ui-theme=dark][data-ui-frames=rounded]:not(#rm-a#rm-b#rm-c#rm-d) [data-rm-frame-after]::after{background:var(--rm-surface)!important;outline-color:var(--rm-accent-after,var(--rm-line))!important}
/* Use the component's resting transform so an old :active translation does
   not add another 2px. Anchored buttons keep their existing centering. */
html[data-ui-frames=rounded]:not(#rm-a#rm-b#rm-c#rm-d) button[data-rm-frame]:is(:active,[data-pressed=true]):not(:disabled):not([aria-disabled=true]):not(.pixel-keyboard button){transform:var(--rm-rest-transform,translate(0)) translateY(2px)!important;translate:var(--rm-rest-translate,none)!important;filter:brightness(.96)}
@media(hover:hover){html[data-ui-frames=rounded] :is(button,a)[data-rm-frame]:hover:not(:disabled){filter:brightness(1.04)}}
html[data-ui-theme]:not(#rm-a#rm-b#rm-c#rm-d) :is(button,a,[role=button],summary,input,textarea,[tabindex]):not(:where(.promenade-screen,.promenade-screen *,.confirmation-window,.confirmation-window *)):not([data-rm-frame],[data-rounded-frame],[data-rounded-navigation]):not(.style-button):is(:focus,:active){outline:none!important;box-shadow:none!important}
html[data-ui-theme]:not(#rm-a#rm-b#rm-c#rm-d) :is(button,a,[role=button],summary,input,select,textarea,[tabindex]):not(:where(.promenade-screen,.promenade-screen *,.confirmation-window,.confirmation-window *)):not(.style-button):focus-visible{filter:brightness(1.16)!important}
html[data-ui-theme] :is(button,a,[role=button],summary){-webkit-tap-highlight-color:transparent}
html[data-ui-theme]:not(#rm-a#rm-b#rm-c#rm-d) .rm-nav-icon{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;max-width:none!important;max-height:none!important;min-width:0!important;min-height:0!important;transform:none!important;translate:none!important;object-fit:contain;pointer-events:none;margin:0!important;padding:0!important;image-rendering:pixelated}
html[data-ui-theme=dark] img:is([src*="nav-accueil-normal-contenu"],[src*="nav-reglages-"][src$="-contenu.png"],[src*="action-back-"][src$="-contenu.png"],[src*="logo-rom-retirer"]){filter:brightness(0) invert(.9)}
html[data-ui-theme] img[src$="/action-sound-normal-contenu.png"]{content:url('/assets/interface-remaster/listen-light.svg');image-rendering:auto!important}
html[data-ui-theme=dark] img[src$="/action-sound-normal-contenu.png"]{content:url('/assets/interface-remaster/listen-dark.svg')}
html[data-ui-theme] input:not([data-haptic-direct]),html[data-ui-theme] textarea{user-select:text;-webkit-user-select:text}
html[data-ui-theme=dark] input:is([type=checkbox],[type=radio],[type=range]){accent-color:#59de98}
/* Settings switches draw their track themselves: accent-color cannot preserve
   the enabled state when the dark surface adapter recolours that track. */
html[data-ui-theme=dark] #settings-dialog input[type=checkbox]:checked{--rm-surface:#67dbb7;background-color:#67dbb7}
/* Keyboard keeps its normal dimensions, position, fonts and commit-on-release. */
html[data-ui-frames=rounded]:not(#rm-a#rm-b#rm-c#rm-d) .pixel-keyboard button,
html[data-ui-frames=rounded]:not(#rm-a#rm-b#rm-c#rm-d) .pixel-key-preview:not(.is-cross),
html[data-ui-frames=rounded]:not(#rm-a#rm-b#rm-c#rm-d) .pixel-key-preview.is-cross>span{border-radius:12px!important;border-style:solid!important;border-width:3px!important;box-shadow:none!important;outline:none!important}
html[data-ui-frames=rounded]:not(#rm-a#rm-b#rm-c#rm-d) .pixel-key-preview:not(.is-expanded)::before,
html[data-ui-frames=rounded]:not(#rm-a#rm-b#rm-c#rm-d) .pixel-key-preview:not(.is-expanded)::after{content:none!important}
html[data-ui-frames=rounded]:not(#rm-a#rm-b#rm-c#rm-d) .pixel-key-preview:not(.is-expanded){clip-path:none!important;background:var(--preview-tone,#fff8ff)!important;filter:none}
html[data-ui-frames=rounded]:not(#rm-a#rm-b#rm-c#rm-d) .pixel-key-preview>span{transition:scale 100ms;outline:none!important;box-shadow:none!important}
html[data-ui-frames=rounded]:not(#rm-a#rm-b#rm-c#rm-d) .pixel-key-preview>.selected{scale:1.1;z-index:5!important}
html[data-ui-theme=dark]:not(#rm-a#rm-b#rm-c#rm-d) :is(.pixel-keyboard button,.pixel-key-preview>span){background:var(--rm-surface)!important;color:var(--rm-text)!important;border-color:var(--rm-line)!important}
html[data-ui-theme] [data-vowel=a]{--rm-vowel:#fe86d0}html[data-ui-theme] [data-vowel=i]{--rm-vowel:#59de98}html[data-ui-theme] [data-vowel=u]{--rm-vowel:#be91ff}html[data-ui-theme] [data-vowel=e]{--rm-vowel:#ffe45e}html[data-ui-theme] [data-vowel=o]{--rm-vowel:#55beff}
html[data-ui-theme=dark]:not(#rm-a#rm-b#rm-c#rm-d) :is(.pixel-keyboard,.pixel-key-preview)[data-kana-colors=true] [data-vowel]{color:var(--rm-vowel)!important;border-color:var(--rm-vowel)!important;outline-color:var(--rm-vowel)!important}
html[data-ui-theme=dark]:not(#rm-a#rm-b#rm-c#rm-d) .pixel-key-preview:not(.is-expanded){background:var(--rm-surface)!important}
html[data-ui-theme=dark]:not(#rm-a#rm-b#rm-c#rm-d) :is(input,textarea)::placeholder{color:#a8afb7!important;opacity:1}
/* Full-screen transparent dialog layers must remain transparent. */
html[data-ui-theme=dark]:not(#rm-a#rm-b#rm-c#rm-d) :is(.onboarding-dialog,.onboarding-speech-layer,.scene-speech-layer,#daily-streak,.arena-exit-dialog){background:transparent!important}
html[data-ui-theme=dark]:not(#rm-a#rm-b#rm-c#rm-d) :is(#settings-dialog,#vocabulary-dialog,#v2-console-picker,#discovery-detail,.arena-page,.account-page,.promenade-root,.promenade-page){background-color:var(--rm-bg)!important;background-image:none!important}
html[data-ui-theme=dark] .promenade-root{--cream:#222528;--ink:#e8e9e7;--lavender:#be91ff}
html[data-ui-theme=dark] :is(.v2-settings-card,.settings-section,.ag-header,.ag-nav,.ag-content,.dex-info,.fc-library,.reader-panel){background-color:var(--rm-surface);border-color:var(--rm-line)}
html[data-ui-frames=rounded]:not(#rm-a#rm-b#rm-c#rm-d) :is(#level-progress,.arena-xp-track,.home-progress){border-radius:999px!important;overflow:hidden}
html[data-ui-theme=dark]:not(#rm-a#rm-b#rm-c#rm-d) :is(#level-progress,.arena-xp-track,.home-progress){border-image:none!important;background:#42474d!important}
html[data-ui-theme=dark]:not(#rm-a#rm-b#rm-c#rm-d) :is(#level-progress-fill,.arena-xp-fill){border-image:none!important;background:#55beff!important}
html[data-ui-theme=dark] dialog::backdrop{background-color:#07090b70}
html[data-ui-frames=rounded]:not(#rm-a#rm-b#rm-c#rm-d) .dex-creature-card:is([data-rarity=EPIC],[data-rarity=LEGENDARY]){box-shadow:0 0 18px color-mix(in srgb,var(--rare) 60%,transparent)!important}
html[data-ui-theme=dark] .dex-character-screen.is-flippable::after{color:#59de98}
/* Dark collector cards: quiet graphite shell, muted slate drawing area. The
   latter keeps original black Kanji strokes readable without recolouring art. */
html[data-ui-theme=dark]:not(#rm-a#rm-b#rm-c#rm-d) .dex-creature-card{--rm-card-accent:#74bda6;background:#242c2c!important;outline-color:var(--rm-card-accent)!important}
html[data-ui-theme=dark]:not(#rm-a#rm-b#rm-c#rm-d) .dex-creature-card[data-rarity=EPIC]{--rm-card-accent:#be91ff;background:#292731!important}
html[data-ui-theme=dark]:not(#rm-a#rm-b#rm-c#rm-d) .dex-creature-card[data-rarity=LEGENDARY]{--rm-card-accent:#e1c572;background:#2d2b24!important}
html[data-ui-theme=dark]:not(#rm-a#rm-b#rm-c#rm-d) .dex-creature-card canvas{background:#929ea0;border-radius:14px}
html[data-ui-theme=dark]:not(#rm-a#rm-b#rm-c#rm-d) .dex-creature-card :is(.dex-character,.dex-creature-rarity){color:#e8e9e7!important}
html[data-ui-theme=dark]:not(#rm-a#rm-b#rm-c#rm-d) .dex-creature-card .dex-entry-status{color:#a8b6b3!important}
html[data-ui-theme=dark]:not(#rm-a#rm-b#rm-c#rm-d) .dex-creature-card::before{opacity:.13}
/* Daily cards keep the creator's native gold face and rarity effects in both themes. */
/* Cabinet shells and controls, including their original hit areas. */
html[data-ui-frames=rounded]:not(#rm-a#rm-b#rm-c#rm-d) :is(.promenade-dpad,.touch-dpad){background-image:url('/assets/interface-remaster/dpad-light.svg')!important;background-size:100% 100%!important;image-rendering:auto}
html[data-ui-theme=dark][data-ui-frames=rounded]:not(#rm-a#rm-b#rm-c#rm-d) :is(.promenade-dpad,.touch-dpad){background-image:url('/assets/interface-remaster/dpad-dark.svg')!important}
html[data-ui-theme=dark]:not(#rm-a#rm-b#rm-c#rm-d) :is(.promenade-root,.promenade-layout,#workspace,#console-stage,.v2-console-picker){background-color:var(--rm-bg)!important}
html[data-ui-theme=dark]:not(#rm-a#rm-b#rm-c#rm-d) .promenade-direction-key{background:#292c30!important;color:#be91ff!important}
html[data-ui-theme=dark]:not(#rm-a#rm-b#rm-c#rm-d) .promenade-voice{background-image:url('/assets/interface-remaster/listen-dark.svg')!important}
html[data-ui-theme=dark] :is(.promenade-fold,.promenade-history) img{filter:brightness(0) invert(.9)}
html[data-ui-theme=dark] .promenade-title-sprout{filter:invert(.85)}
/* Traduction obligatoire (eau/arbre) : le cadre rond efface box-shadow/outline de l'élément ; le halo et le repère
   fixe de petite-promenade.css:136-138 sont donc portés par un pseudo-élément, mêmes valeurs, sans l'ombre de relief. */
html[data-ui-frames=rounded] .promenade-root[data-translation-required=true] .promenade-translate::after{content:'';position:absolute;inset:-2px;border-radius:inherit;pointer-events:none;animation:promenade-translate-glow-rm 1.5s ease-in-out infinite}
@keyframes promenade-translate-glow-rm{0%,100%{box-shadow:0 0 0 2px #d5ffe966}50%{box-shadow:0 0 0 4px #e4ffec,0 0 15px 5px #d7ffe799}}
@media(prefers-reduced-motion:reduce){html[data-ui-frames=rounded] .promenade-root[data-translation-required=true] .promenade-translate::after{animation:none;outline:3px solid #e4ffec;outline-offset:2px}}
html[data-ui-theme=dark] .pupil-choices canvas{background:#929ea0;border-radius:10px}
html[data-ui-theme=light]:not(#rm-a#rm-b#rm-c#rm-d) .workshop-choices button[aria-pressed=true][data-rm-frame]{outline-color:#78ad98!important}
html[data-ui-theme=dark]:not(#rm-a#rm-b#rm-c#rm-d) .workshop-choices button[aria-pressed=true][data-rm-frame]{outline-color:#59de98!important}
html[data-ui-theme=dark]:not(#rm-a#rm-b#rm-c#rm-d) .workshop-navigation :is(#creator-back,#creator-next)::before{filter:brightness(0) invert(.85)}
html[data-ui-theme=dark] :is(#creator-skip-speech,.random-colors) .icon{filter:brightness(0) invert(.85)}
html[data-ui-frames=rounded] button[data-touch-key][data-rm-frame]::after{content:attr(data-touch-key);position:absolute;inset:0;display:grid;place-items:center;font:22px/1 PixelUI,sans-serif;color:#352844;pointer-events:none}
html[data-ui-theme=dark] button[data-touch-key][data-rm-frame]::after{color:#e8e9e7}
html[data-ui-frames=rounded] button:is([data-touch-key=Start],[data-touch-key=Select])[data-rm-frame]::after{font-size:15px}
/* Semantic actions stay unambiguous; nothing here changes enabled/disabled. */
html[data-ui-theme=light][data-ui-frames=rounded]:not(#rm-a#rm-b#rm-c#rm-d) [data-rm-action=positive]:not(:disabled){background-color:#c8f4e3!important;outline-color:#78ad98!important;color:#285540!important}
html[data-ui-theme=dark]:not(#rm-a#rm-b#rm-c#rm-d) :is([data-rm-action=positive],.arena-button.green,#answer-submit,#review-submit)[data-rm-frame]:not(:disabled){background-color:#59de98!important;outline-color:#59de98!important;color:#1b1d1f!important}
html[data-ui-theme=dark]:not(#rm-a#rm-b#rm-c#rm-d) :is(.red,.danger,.review-cancel)[data-rm-frame]{outline-color:#ff7383!important;color:#ff7383!important}
html[data-ui-theme=dark]:not(#rm-a#rm-b#rm-c#rm-d) [data-rm-frame]:disabled:not(.correct,.incorrect){outline-color:#42474d!important;color:#a8afb7!important}
/* A locked answer still needs its result colour. Continue after an error is
   red, as in University, rather than taking the ordinary positive action. */
html[data-ui-theme=dark]:not(#rm-a#rm-b#rm-c#rm-d) [data-rm-frame].correct{outline-color:#59de98!important;color:#59de98!important}
html[data-ui-theme=dark]:not(#rm-a#rm-b#rm-c#rm-d) [data-rm-frame].incorrect{outline-color:#ff7383!important;color:#ff7383!important}
html[data-ui-theme=light]:not(#rm-a#rm-b#rm-c#rm-d) :is(#answer-feedback.missed #next-question,#review-dialog:has(#review-feedback.bad) #review-next){background-color:#ffd6dc!important;outline-color:#b56779!important;color:#753e4c!important}
html[data-ui-theme=dark]:not(#rm-a#rm-b#rm-c#rm-d) :is(#answer-feedback.missed #next-question,#review-dialog:has(#review-feedback.bad) #review-next){background-color:#ff7383!important;outline-color:#ff7383!important;color:#1b1d1f!important}
html[data-ui-theme=dark]:not(#rm-a#rm-b#rm-c#rm-d) :is([data-rm-action=positive]:not(:disabled),[data-rm-frame].correct,[data-rm-frame].incorrect) [data-rm-ink]{color:inherit!important}
html[data-ui-frames=rounded] .remaster-theme-setting{gap:16px;justify-content:space-between}
/* Preserve smooth Japanese glyphs and existing authored font sizes. */
html[data-ui-theme] :is(.study-text,.japanese,.kana-glyph,[lang=ja]:not(html),.pixel-keyboard[data-mode=hiragana] button,.pixel-keyboard[data-mode=katakana] button,.pixel-key-preview):not(:where(.promenade-screen,.promenade-screen *)){font-family:'Noto Sans JP','Yu Gothic',Meiryo,sans-serif}
@media(prefers-reduced-motion:reduce){html[data-ui-theme] .pixel-key-preview>span{transition:none}}

/* Match existing dark navigation icons; retain every authored pixel and disabled opacity. */
html[data-ui-theme=dark][data-ui-frames=rounded] .main-actions .pixel-button .icon{color:var(--rm-button-ink,var(--rm-text))}
html[data-ui-theme=dark][data-ui-frames=rounded] .v2-command-art{filter:brightness(0) invert(.9)}

/* The collection owns these constant palettes; no per-card computed-style
   scan is needed. Sizes, native pixel frames and glyph artwork stay unchanged. */
html[data-ui-theme] .dex-tile{--rm-face:#faf3ff;--rm-edge:#a599b7;--rm-accent:#42474d;--rm-button-ink:#e8e9e7;--rm-art:none;--rm-art-size:auto;--rm-rest-transform:translate(0);--rm-rest-translate:none}
html[data-ui-theme=dark]:not(#rm-a#rm-b#rm-c#rm-d) .discovery-entry{color:#e8e9e7!important}
html[data-ui-theme=dark]:not(#rm-a#rm-b#rm-c#rm-d) .discovery-entry :is(.dex-tile,.dex-tile-character){color:#e8e9e7!important;text-shadow:none!important;-webkit-text-stroke:0!important}
html[data-ui-theme=dark]:not(#rm-a#rm-b#rm-c#rm-d) .discovery-entry :is(.dex-tile-number,.dex-tile-meaning){color:#a8afb7!important;text-shadow:none!important;-webkit-text-stroke:0!important}
html[data-ui-theme=dark]:not(#rm-a#rm-b#rm-c#rm-d) .discovery-entry.is-locked .dex-tile-character{color:#55beff!important}
/* Unread badges overlay the card edge without changing the grid or its content. */
html body #vocabulary-dialog .dex-tile{overflow:visible}
html body #vocabulary-dialog .dex-tile .dex-new-badge{position:absolute;top:2px;bottom:auto;right:6px;transform:translateY(-50%);z-index:1;pointer-events:none}
html[data-ui-theme=dark]:not(#rm-a#rm-b#rm-c#rm-d) .discovery-entry .dex-new-badge{padding:3px 6px;border:1px solid #625a70;border-radius:6px;background:#303139;color:#d5b8ff!important;font:13px/1 PixelUI,sans-serif;white-space:nowrap;text-shadow:none!important;-webkit-text-stroke:0!important;box-shadow:none}
@media(hover:hover){html[data-ui-theme] .dex-tile:hover{--rm-rest-transform:translateY(-2px)}}

/* Quiet Dex loading: empty native-sized cards, then a short staggered arrival. */
html body #vocabulary-dialog .dex-placeholder .dex-tile{--rm-radius:12px;min-height:126px;pointer-events:none}
html body #vocabulary-dialog .dex-placeholder .dex-tile:after{display:none}
html body #vocabulary-dialog .dex-placeholder{opacity:.55;animation:dex-placeholder-breathe 1.8s ease-in-out infinite alternate}
html body #kanji-library[data-loading=full] #kanji-total{min-height:26px}
html body #kanji-library[data-loading=full] #kanji-total:before{content:'';display:block;width:58%;max-width:240px;height:14px;margin:6px 0;border-radius:7px;background:#b8a8c5;opacity:.4}
html[data-ui-theme=dark] body #kanji-library[data-loading=full] #kanji-total:before{background:#727980}
html body #kanji-library[data-loading=full] .discovery-meter{visibility:hidden}
html body #kanji-library[data-loading]>.dex-credits{visibility:hidden}
html body #vocabulary-dialog .dex-arriving{animation:dex-card-arrive 300ms both;animation-delay:var(--dex-arrival-delay,0ms);transform-origin:center}
@keyframes dex-placeholder-breathe{to{opacity:.8}}
@keyframes dex-card-arrive{0%{opacity:0;transform:translateY(7px) scale(.97);animation-timing-function:cubic-bezier(.2,.75,.3,1)}70%{opacity:1;transform:translateY(-1px) scale(1.012);animation-timing-function:ease-out}100%{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){html body #vocabulary-dialog :is(.dex-placeholder,.dex-arriving){animation:none;transform:none;opacity:1}}
