/* GENERATED by expansion/en/build/fork_kanji_shell.mjs from site/kanji/kanji.css. DO NOT EDIT BY HAND. */
:root{
  --paper:#f1f4f6;--panel:#fbfcfd;--ink:#232c36;--sub:#5d6b79;--line:#d7dee5;
  --indigo:#2f5378;--indigo-deep:#24405c;--verm:#c2452d;--verm-soft:#f0d9d2;
  --ok:#2f7d4f;--ok-soft:#dceee3;
  --font-mincho:"Yu Mincho","YuMincho","Hiragino Mincho ProN","Noto Serif JP","MS PMincho",serif;
  --font-gothic:"Yu Gothic","YuGothic","Hiragino Kaku Gothic ProN","Noto Sans JP","Meiryo",sans-serif;
  --kana-font:var(--font-mincho);
  --body-font:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  /* 보조 텍스트 하한 = 14px. 히라가나 학습판 시트(.ex-s 14px / .kp 15.5px)에 맞춘 값. */
  --kj-text-xs:.875rem;--kj-text-sm:.925rem;
  /* 10×10(모바일 5열) 한자표 셀 뜻만 예외로 작게 유지한다. 열 수가 고정이고 nowrap+ellipsis로
     '잘림'을 전제한 유일한 컴포넌트라 위 토큰 인상을 구조적으로 흡수할 수 없다.
     리터럴이 아니라 전용 토큰으로 둔 이유 = 나중에 불일치로 오해해 되돌리지 않게 하려고. */
  --kj-text-grid:.8rem;
}
:root[data-kana-font="gothic"]{--kana-font:var(--font-gothic)}
@media(prefers-color-scheme:dark){:root{
  --paper:#151a20;--panel:#1d242c;--ink:#e5e9ec;--sub:#98a5b2;--line:#303a45;
  --indigo:#8db4dc;--indigo-deep:#a9c6e5;--verm:#d96a52;--verm-soft:#4a2b23;
  --ok:#7ec996;--ok-soft:#203c2e;
}}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--body-font);line-height:1.6}
body.kj-scroll-lock{position:fixed;left:0;right:0;width:100%;overflow:hidden}
button,select,input{font:inherit}
button,a,select{touch-action:manipulation}
button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible,.kj-practice-card:focus-visible{outline:2px solid var(--verm);outline-offset:3px}
.kj-shell{width:min(1040px,calc(100% - 32px));margin:0 auto;padding:30px 0 42px}
.kj-header{margin-bottom:20px}
.kj-nav{display:flex;flex-wrap:wrap;gap:14px;align-items:center}
.kj-back{color:var(--sub);font-size:.9rem;text-decoration:none}
.kj-back:hover{color:var(--indigo)}
.kj-title-row{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-top:22px}
.kj-kicker{margin:0 0 4px;color:var(--verm);font-size:var(--kj-text-xs);font-weight:800;letter-spacing:.12em;text-transform:uppercase}
h1,h2,p{margin-top:0}
h1{margin-bottom:8px;color:var(--indigo-deep);font-size:clamp(1.55rem,4vw,2.35rem);line-height:1.25}
h1 span,.kj-cell-char,.kj-detail-glyph,.kj-practice-card [lang="ja"]{font-family:var(--kana-font)}
.kj-lead{max-width:680px;margin-bottom:0;color:var(--sub);font-size:.9rem}
.kj-total{flex:0 0 auto;min-width:108px;padding:12px 15px;border:1px solid var(--line);border-radius:10px;background:var(--panel);text-align:center}
.kj-total strong{display:block;color:var(--ok);font-size:1.65rem;line-height:1.1;font-variant-numeric:tabular-nums}
.kj-total span{font-size:var(--kj-text-xs);color:var(--sub)}
.kj-total-basis{display:block;margin-top:4px;color:var(--sub);font-size:var(--kj-text-xs);line-height:1.2}
.kj-practice-launch,.kj-board-section,.kj-method{margin-top:18px;padding:20px;border:1px solid var(--line);border-radius:13px;background:var(--panel)}
.kj-section-head{display:flex;align-items:center;justify-content:space-between;gap:18px}
.kj-section-head h2,.kj-method h2{margin:0;color:var(--indigo-deep);font-size:1.15rem}
.kj-unknown{display:flex;align-items:center;gap:7px;color:var(--sub);font-size:var(--kj-text-sm);white-space:nowrap}
.kj-practice-settings{display:flex;align-items:flex-start;gap:18px;margin:14px 0 10px}
.kj-char-direction,.kj-scope-control{display:grid;grid-template-columns:auto minmax(150px,auto);align-items:center;gap:4px 10px;color:var(--sub);font-size:var(--kj-text-sm)}
.kj-char-direction select,.kj-scope-control select{border:1px solid var(--line);border-radius:7px;background:var(--paper);color:var(--ink);padding:5px 28px 5px 9px}
.kj-scope-control small{grid-column:2;color:var(--sub);font-size:var(--kj-text-xs)}
.kj-font-control{position:relative;display:grid;grid-template-columns:auto minmax(118px,auto);align-items:center;align-self:start;gap:4px 10px;color:var(--sub);font-size:var(--kj-text-sm)}
.fontpick-btn{border:1px solid var(--line);border-radius:7px;background:var(--paper);color:var(--ink);padding:5px 9px;cursor:pointer;text-align:left}
.fontpick-btn[aria-expanded="true"]{border-color:var(--verm);color:var(--verm)}
.fontpick-btn .fp-cur{font-family:var(--kana-font);font-weight:700;margin-right:2px}
.fontpick-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:20;min-width:176px;max-width:calc(100vw - 24px);padding:5px;border:1px solid var(--line);border-radius:10px;background:var(--panel);box-shadow:0 8px 26px color-mix(in srgb,var(--ink) 20%,transparent);display:flex;flex-direction:column;gap:2px}
.fontpick-menu[hidden]{display:none}
.fontpick-opt{display:flex;align-items:center;gap:10px;width:100%;padding:8px 10px;border:0;border-radius:7px;background:transparent;color:var(--sub);font-size:var(--kj-text-xs);text-align:left;cursor:pointer}
.fontpick-opt:hover{background:var(--paper)}
.fontpick-opt .fp-prev{min-width:56px;color:var(--ink);font-size:23px;line-height:1}
.fontpick-opt .fp-name{flex:1}
.fontpick-opt .fp-tick{color:var(--verm);font-weight:700;opacity:0}
.fontpick-opt[aria-checked="true"]{color:var(--ink);font-weight:700}
.fontpick-opt[aria-checked="true"] .fp-tick{opacity:1}
.kj-practice-buttons{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.kj-practice-buttons button{display:grid;grid-template-columns:44px 1fr;grid-template-rows:auto auto;column-gap:10px;align-items:center;text-align:left;border:1px solid var(--line);border-radius:10px;background:var(--paper);color:var(--ink);padding:12px;cursor:pointer}
.kj-practice-buttons button:hover{border-color:var(--indigo);transform:translateY(-1px)}
.kj-practice-buttons span{grid-row:1/3;font-family:var(--kana-font);font-size:2rem;color:var(--verm)}
.kj-practice-buttons b{font-size:.9rem;color:var(--indigo-deep)}
.kj-practice-buttons small{font-size:var(--kj-text-xs);color:var(--sub)}
.kj-storage-note{margin:10px 0 0;color:var(--verm);font-size:var(--kj-text-xs)}
.kj-board-head{align-items:flex-end}
.kj-sort{display:flex;gap:4px;padding:3px;border:1px solid var(--line);border-radius:8px;background:var(--paper)}
.kj-sort button{border:0;border-radius:5px;background:transparent;color:var(--sub);padding:5px 10px;font-size:var(--kj-text-xs);cursor:pointer}
.kj-sort button.on{background:var(--indigo);color:var(--paper);font-weight:700}
.kj-board-note{margin:8px 0 18px;color:var(--sub);font-size:var(--kj-text-sm)}
.kj-lesson{margin-top:19px}
.kj-lesson:first-child{margin-top:0}
.kj-lesson-head{display:flex;align-items:baseline;gap:9px;margin-bottom:7px}
.kj-lesson-head h3{margin:0;color:var(--indigo-deep);font-size:.95rem}
.kj-lesson-head span{color:var(--sub);font-size:var(--kj-text-xs)}
.kj-grid{display:grid;grid-template-columns:repeat(10,minmax(0,1fr));gap:6px}
.kj-cell{position:relative;min-width:0;aspect-ratio:1/1.03;border:1px solid var(--line);border-radius:8px;background:var(--paper);color:var(--ink);cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4px;transition:border-color .14s,transform .14s,background .14s}
.kj-cell:hover{border-color:var(--indigo);transform:translateY(-1px)}
.kj-cell.known{border-color:var(--ok);background:var(--ok-soft)}
.kj-cell.known::after{content:"";position:absolute;right:5px;top:5px;width:6px;height:6px;border-radius:50%;background:var(--ok)}
.kj-cell-char{font-size:clamp(1.45rem,4.4vw,2.15rem);line-height:1.05;color:var(--indigo-deep)}
.kj-cell-meaning{max-width:100%;margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--sub);font-size:var(--kj-text-grid)}
.kj-method p{margin:9px 0 0;font-size:var(--kj-text-sm)}
.kj-sources{color:var(--sub)}
.kj-sources a{color:var(--indigo)}
footer{margin-top:20px;color:var(--sub);font-size:var(--kj-text-xs);text-align:center}
footer a{color:var(--indigo);text-decoration:underline;text-underline-offset:3px}

/* max-height 2줄 겹침: svh(툴바 보이는 상태 기준)로 실제 보이는 영역 안에 가둔다.
   svh 미지원 브라우저는 앞줄 vh를 그대로 쓴다. */
.kj-dialog{width:min(620px,calc(100% - 24px));max-height:90vh;max-height:90svh;margin:auto;padding:0;border:1px solid var(--line);border-radius:13px;background:var(--panel);color:var(--ink);box-shadow:0 16px 60px color-mix(in srgb,var(--ink) 35%,transparent);overflow:auto;overscroll-behavior:contain}
.kj-dialog::backdrop{background:color-mix(in srgb,var(--ink) 52%,transparent)}
.kj-dialog-inner{padding:20px}
.kj-dialog-top{display:flex;align-items:center;justify-content:space-between;gap:12px}
.kj-dialog-top h2{margin:0;color:var(--indigo-deep);font-size:1rem}
.kj-close{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;border:0;border-radius:8px;background:transparent;color:var(--sub);font-size:20px;line-height:1;padding:6px 10px;cursor:pointer}
.kj-close:hover{color:var(--ink)}
.kj-detail-hero{display:grid;grid-template-columns:118px 1fr;gap:20px;align-items:center;margin:16px 0 18px;padding:16px;border:1px solid var(--line);border-radius:11px;background:var(--paper)}
.kj-detail-glyph{font-size:5rem;line-height:1;text-align:center;color:var(--verm)}
.kj-detail-meaning{margin:0;color:var(--indigo-deep);font-size:1.2rem;font-weight:800}
.kj-detail-meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.kj-chip{border:1px solid var(--line);border-radius:999px;color:var(--sub);font-size:var(--kj-text-xs);padding:2px 8px}
.kj-chip.travel{border-color:var(--verm);color:var(--verm)}
.kj-known-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.kj-known-button{border:1px dashed var(--line);border-radius:999px;background:var(--panel);color:var(--sub);padding:6px 13px;cursor:pointer}
.kj-known-button.on{border-style:solid;border-color:var(--ok);color:var(--ok);background:var(--ok-soft);font-weight:700}
.kj-detail-section{padding:15px 0;border-top:1px solid var(--line)}
.kj-detail-section h3{margin:0 0 9px;color:var(--indigo-deep);font-size:var(--kj-text-sm)}
.kj-example-list{display:grid;gap:10px}
.kj-example-card{overflow:hidden;border:1px solid var(--line);border-radius:10px;background:var(--paper)}
.kj-example{display:grid;grid-template-columns:minmax(104px,.8fr) 1fr;gap:12px;padding:10px 11px}
.kj-example-word-line,.kj-context-line{display:flex;align-items:flex-start;gap:8px}
.kj-example-word,.kj-context-written{flex:1 1 auto;min-width:0}
.kj-example-word{font-family:var(--kana-font);font-size:1.25rem;color:var(--indigo-deep)}
.kj-highlight{color:var(--verm);font-weight:800}
/* 글자 뜻 peek(상세 전용) — 점선 = '누르면 뜻이 나온다'는 약속. 덱에 있는 한자에만 붙는다.
   .kj-highlight(빨강=대상)와 겹칠 수 있고, 두 신호는 직교라 함께 읽힌다. */
.kj-peek{cursor:pointer;border-bottom:1px dotted var(--line)}
.kj-peek:hover{border-bottom-color:var(--indigo)}
.kj-peek-tip{position:fixed;z-index:5;transform:translate(-50%,-100%);max-width:min(260px,80vw);border-radius:6px;background:var(--ink);color:var(--paper);font-size:var(--kj-text-xs);line-height:1.35;padding:4px 9px;pointer-events:none;opacity:0;transition:opacity .12s;box-shadow:0 3px 12px color-mix(in srgb,var(--ink) 32%,transparent)}
.kj-peek-tip.show{opacity:1}
.kj-example-read{color:var(--sub);font-size:var(--kj-text-xs)}
.kj-example-meaning{font-size:var(--kj-text-sm)}
.kj-context-list,.kj-word-contexts{display:grid;gap:7px}
.kj-word-contexts{padding:9px;border-top:1px solid var(--line);background:var(--panel)}
.kj-more-contexts{display:grid;gap:7px}
.kj-more-contexts[hidden]{display:none}
.kj-context-toggle{justify-self:start;border:1px solid var(--line);border-radius:999px;background:var(--paper);color:var(--sub);padding:4px 10px;font-size:var(--kj-text-xs);cursor:pointer}
.kj-context-toggle:hover{border-color:var(--indigo);color:var(--indigo)}
.kj-context{padding:10px;border-radius:8px;background:var(--paper)}
.kj-context-written{font-family:var(--kana-font);font-size:1.18rem;color:var(--indigo-deep)}
.kj-context-kana{margin:5px 0 0;color:var(--sub);font-size:var(--kj-text-sm)}
.kj-context-ko{margin:5px 0 0;font-size:var(--kj-text-sm)}
.kj-context-compact{padding:8px 9px}
.kj-context-compact .kj-context-written{font-size:1rem}
.kj-context-compact .kj-context-kana,.kj-context-compact .kj-context-ko{margin-top:3px;font-size:var(--kj-text-xs)}
.kj-detail-actions{display:flex;justify-content:space-between;gap:8px;margin-top:15px}
.kj-detail-actions button,.kj-return{border:1px solid var(--line);border-radius:7px;background:var(--paper);color:var(--indigo);padding:7px 11px;cursor:pointer}
.kj-detail-actions button:disabled{opacity:.4;cursor:default}
.kj-sound{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:36px;height:32px;padding:6px;border:1px solid var(--line);border-radius:999px;background:var(--paper);color:var(--sub);cursor:pointer}
.kj-sound[hidden]{display:none}
.kj-sound svg{display:block;width:16px;height:16px}
.kj-sound:hover{border-color:var(--indigo);color:var(--indigo)}
.kj-sound:active{transform:scale(.92)}
.kj-sound.speaking{border-color:var(--verm);color:var(--verm)}
@keyframes kjSoundPulse{0%,100%{transform:none}50%{transform:scale(1.08)}}
@media(prefers-reduced-motion:no-preference){.kj-sound.speaking{animation:kjSoundPulse .8s ease-in-out infinite}}

.kj-practice-dialog{width:min(590px,calc(100% - 24px))}
.kj-runner-meta{display:flex;align-items:center;justify-content:space-between;gap:10px;color:var(--sub);font-size:var(--kj-text-sm)}
.kj-round-contract{margin:8px 0 0;color:var(--sub);font-size:var(--kj-text-xs);text-align:center}
.kj-card-wrap{position:relative;margin:14px 0 12px}
.kj-practice-known{position:absolute;top:10px;right:10px;z-index:2;border:1px dashed var(--line);border-radius:999px;background:var(--panel);color:var(--sub);font-size:var(--kj-text-xs);padding:5px 12px;min-height:32px;cursor:pointer}
.kj-practice-known.on{border-style:solid;border-color:var(--ok);color:var(--ok);background:var(--ok-soft);font-weight:700}
.kj-practice-known:hover{border-color:var(--indigo);color:var(--indigo)}
.kj-practice-known.on:hover{border-color:var(--ok);color:var(--ok)}
.kj-practice-card{min-height:310px;padding:24px;border:1.5px solid var(--line);border-radius:12px;background:var(--paper);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;cursor:pointer}
.kj-practice-card:hover{border-color:var(--indigo)}
.kj-front-label{margin-bottom:12px;border:0;padding:0;background:transparent;color:var(--sub);font:inherit;font-size:.98rem;cursor:pointer}
.kj-front-main{font-family:var(--kana-font);font-size:clamp(2.25rem,11vw,4.8rem);line-height:1.25;color:var(--indigo-deep)}
.kj-front-main.sentence{font-size:clamp(1.3rem,5vw,2rem);line-height:1.65}
.kj-reveal{width:100%}
/* 정답면 주인공 = 크기·위치로 위계를 만든다(앞면 .kj-front-main과 같은 언어).
   색은 쓰지 않는다 — 본문 일본어 텍스트 안에서 빨강은 대상 한자(.kj-highlight) 몫이다.
   (--verm 자체는 kicker·포커스링·travel chip 등 페이지 액센트로도 계속 쓰인다 — 그건 본문이 아니라 크롬.) */
.kj-reveal-primary{font-family:var(--kana-font);font-size:1.65rem;color:var(--indigo-deep)}
.kj-reveal-reading{margin-top:7px;color:var(--indigo-deep);font-size:1rem}
.kj-reveal-ko{margin-top:3px;color:var(--sub);font-size:.92rem}
.kj-reveal-meaning{margin-top:11px;font-size:.98rem}
.kj-reveal-support{display:grid;gap:7px;margin-top:14px;text-align:left}
.kj-reveal-support-title{margin-top:4px;color:var(--sub);font-size:var(--kj-text-xs);font-weight:800}
.kj-reveal-list{display:grid;gap:5px}
.kj-reveal-example,.kj-reveal-context{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:7px 9px;border-radius:7px;background:var(--panel);font-size:var(--kj-text-xs)}
.kj-reveal-example-copy{display:grid;grid-template-columns:minmax(105px,.65fr) 1fr;gap:8px;min-width:0;flex:1 1 auto}
.kj-reveal-example-word,.kj-reveal-context [lang="ja"]{font-family:var(--kana-font);color:var(--indigo-deep)}
.kj-reveal-context{grid-template-columns:1fr}
.kj-reveal-context [lang="ja"]{font-size:var(--kj-text-sm)}
.kj-reveal-example-copy span:last-child,.kj-reveal-context span:last-child{color:var(--sub)}
.kj-inline-sound{width:32px;height:30px;padding:6px}
.kj-practice-contexts{padding:0;border-top:0;background:transparent;text-align:left}
.kj-runner-buttons{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}
.kj-runner-buttons button{border:1px solid var(--line);border-radius:8px;background:var(--paper);color:var(--indigo);padding:9px 14px;cursor:pointer}
.kj-runner-buttons .kj-runner-sound{width:36px;height:36px;padding:7px;border-radius:999px;color:var(--sub)}
.kj-runner-buttons .primary{border-color:var(--indigo);background:var(--indigo);color:var(--paper);font-weight:700}
.kj-runner-buttons button:disabled{opacity:.4;cursor:default}
.kj-runner-buttons button:disabled:hover{border-color:var(--line)}
.kj-empty{padding:48px 18px;text-align:center}
.kj-empty h2{color:var(--indigo-deep)}
.kj-empty p{color:var(--sub);font-size:var(--kj-text-sm)}
.kj-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

@media(max-width:720px){
  .kj-shell{width:min(100% - 20px,620px);padding-top:18px}
  .kj-title-row{align-items:flex-start;gap:12px}
  .kj-total{min-width:82px;padding:10px}
  .kj-practice-launch,.kj-board-section,.kj-method{padding:15px}
  .kj-practice-settings{flex-wrap:wrap;gap:10px 18px}
  .kj-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:7px}
  .kj-cell{padding:4px 1px}
  .kj-cell{aspect-ratio:1/1}
  .kj-cell-char{font-size:clamp(1.65rem,9vw,2.2rem)}
  .kj-practice-buttons{grid-template-columns:1fr}
  .kj-practice-buttons button{grid-template-columns:40px 1fr}
}
@media(max-width:420px){
  .kj-title-row{display:block}
  .kj-total{display:flex;align-items:baseline;justify-content:center;gap:5px;width:max-content;margin-top:13px}
  .kj-total strong{font-size:1.25rem}
  .kj-section-head{align-items:flex-start}
  .kj-board-head{display:block}
  .kj-sort{width:max-content;margin-top:10px}
  .kj-detail-hero{grid-template-columns:88px 1fr;gap:12px;padding:12px}
  .kj-detail-glyph{font-size:4rem}
  .kj-example{grid-template-columns:1fr;gap:2px}
  .kj-reveal-example-copy{grid-template-columns:1fr;gap:1px}
  .kj-dialog-inner{padding:15px}
  .kj-practice-card{min-height:290px;padding:18px}
  .kj-practice-card.revealed{padding:15px}
}
/* ── 폰 가로(landscape) 대응 ──
   조건 = 가로 + 뷰포트 높이 520px 이하. 통상적인 데스크톱·아이패드 가로(768px)·모든
   세로는 걸리지 않는다. 다만 기기를 구분하는 조건은 아니라서 창을 520px 미만으로 줄인
   데스크톱·분할화면도 걸린다 — 그 높이에선 전체화면이 오히려 나으므로 그대로 둔다.
   한자 연습은 설정이 팝업 밖(.kj-practice-launch)에 있어 접을 필터가 없다 —
   전체화면 + 뼈대 고정 + 치수 축소만 한다. */
@media (orientation:landscape) and (max-height:520px){
  /* [open] 필수 — <dialog>는 UA 스타일시트가 dialog:not([open]){display:none}을 준다.
     [open] 없이 display:flex를 걸면 닫힌 다이얼로그가 화면에 보인다. */
  .kj-practice-dialog[open]{display:flex;flex-direction:column}
  /* 전체화면. inset:0이 아니라 top:0+height:100svh인 이유: fixed의 inset:0은 iOS에서
     큰 뷰포트(ICB) 기준이라 하단이 툴바 밑으로 잘려 도달 불가가 된다. */
  .kj-practice-dialog{top:0;left:0;right:0;bottom:auto;width:auto;max-width:none;height:100svh;max-height:100svh;margin:0;border-radius:0;border-width:0;overflow:hidden}
  /* 카드가 남은 높이를 받으려면 flex 체인이 dialog → #kj-practice-content →
     .kj-dialog-inner → .kj-card-wrap 까지 끊기지 않아야 한다. */
  .kj-practice-dialog > div,
  .kj-practice-dialog .kj-dialog-inner,
  .kj-practice-dialog .kj-card-wrap{display:flex;flex-direction:column;flex:1 1 auto;min-height:0}
  .kj-practice-dialog .kj-dialog-inner{padding:8px 13px}
  .kj-practice-dialog .kj-card-wrap{margin:6px 0}
  /* safe center = 내용이 넘칠 때 중앙정렬로 윗부분이 스크롤 불가가 되는 것을 막는다 */
  .kj-practice-dialog .kj-practice-card{flex:1 1 auto;min-height:0;overflow-y:auto;justify-content:safe center;padding:12px}
  .kj-practice-dialog .kj-runner-buttons{flex:0 0 auto}
  .kj-practice-dialog .kj-round-contract{margin-top:4px}
  /* 가로에선 높이가 희소 자원 — 글리프 기준을 vw가 아니라 svh로 잡는다
     (vw 기준이면 가로 폭 844px 탓에 항상 최댓값으로 커진다). */
  .kj-front-main{font-size:clamp(2rem,15svh,4.8rem)}
  .kj-front-main.sentence{font-size:clamp(1.15rem,6svh,2rem)}
  .kj-front-label{margin-bottom:7px}
  .kj-reveal-support{margin-top:8px}
  .kj-runner-buttons button{padding:7px 13px}
}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
