/* Static-only adapters. Original app/pict/kaiwa/exam CSS is kept byte-for-byte. */
[hidden]{display:none!important}
#message:empty{display:none}
footer{max-width:1100px;margin:24px auto;padding:16px;text-align:center}
footer a{font-size:13px}
.brand{flex-wrap:wrap;row-gap:2px}
.brand-mark{overflow-wrap:anywhere}
.settings{margin:12px 0}
.settings>summary{cursor:pointer;font-weight:700}
.settings>.setgrid{margin-top:12px}
.set select{max-width:100%;min-width:0;padding:6px 10px;border:1px solid var(--line);border-radius:8px;background:var(--surface);font:inherit}
.libwrap .fstep .set select{width:100%}
.sortscroll .set{display:flex;align-items:center;gap:8px}
.sortscroll .lab{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.kwsth>img,.kwthumb>img{display:block;width:100%;height:100%;object-fit:cover}
.controls .moderow>.set{flex:1 1 120px}
.controls .tailrow>.set{flex:1 1 100px}
.controls{scroll-margin-top:80px}
.controls .status>p{max-width:45%;white-space:nowrap}
.line,.question{scroll-margin-top:var(--player-offset,300px)}
.en-text button.word{font:inherit;color:inherit;border:0;background:none;padding:0;cursor:pointer;text-decoration:underline dotted var(--muted);text-underline-offset:4px}
.speaking{background:var(--amber-dim);box-shadow:0 2px 0 var(--amber)}
.concealed{filter:blur(5px);cursor:pointer}
.concealed:focus{filter:none}
.word-popup{position:fixed;bottom:16px;right:16px;z-index:40;width:min(94vw,480px);max-height:70vh;overflow:auto;background:var(--surface);color:var(--ink);border:3px solid var(--pk-edge);border-radius:22px;padding:16px;box-shadow:0 4px 0 var(--pk-edge)}
.word-popup p{overflow-wrap:anywhere}
.keyboard-hint{font-size:13px;color:var(--red)}
.kaiwa-stage>img.bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.kaiwa-stage>img.who{position:absolute;left:14%;width:72%;bottom:-3%;height:auto;display:block}
.kaiwa-person.think{transform:rotate(-2deg)}
.kw .wrow>.set{display:flex;flex:1;min-width:0}
.kw .wrow>.set>.lab{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.kw .recording,.kw>.settings,.kw>.res{margin:14px 12px}
.kw .foot button{background:none;border:0;color:var(--sub);text-decoration:underline;font-size:14px}
.kw .bub .english,.kw .answer .english{font-size:19px;font-weight:600;line-height:1.4}
.kw audio{display:block;width:100%;margin-top:8px}
.exam:not(.solve) .xin,.exam.solve .bl{display:none}
.exam .xin{width:100%;max-width:100%;padding:8px;border:1px solid var(--line);background:#fff}
.exam .q{margin-bottom:18px}
.exam>.pill{display:block;margin:16px auto}
.upload .wrap{gap:16px}
.upload #app{gap:16px}
.upload textarea{width:100%;min-height:150px}
.upload input,.upload textarea{padding:9px 11px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}
.upload section{padding:16px}
@media(max-width:420px){.brand-mark{font-size:19px}.gnav a,.gnav .gnavset{min-width:44px}.brand{max-width:35%}}
@media print{header.site,footer,.setpop,.xbar,#message,.exam>.pill{display:none!important}.exam #stage{height:auto!important}.exam #pages{transform:none}.exam .xin{border:0;border-bottom:1px solid var(--line)}.exam .page{break-after:page}}
/* Original thumbnails use embedded SVGs; static assets are loaded as img. */
.kwsth>img.bg,.kwthumb>img.bg{position:absolute;inset:0;width:100%;height:100%}
.kwsth>img.who,.kwthumb>img.who{position:absolute;left:12%;width:76%;height:auto;bottom:-6%}
.wordlist button.we,.wordlist button.wj{font:inherit;border:0;background:none;color:inherit;cursor:pointer;text-align:left}
/* P4b: adapters for safe external images and the static player's original DOM. */
.lesson-heading{min-width:0}
.lesson-sub{font-family:var(--ja);font-weight:700;font-size:clamp(14px,3.96vw,24.48px);letter-spacing:.02em;margin:.35em 0 0;line-height:1.2}
.player .crumbs{margin:0 0 -16px;padding:0}
.relhead .small{margin-left:8px}
.relbtn img{height:auto;max-height:112.5px;flex:none}
.qg-resume{color:#d9822b}
.meter svg line:not(:first-child){stroke:var(--line)}
.meter svg line[stroke="var(--accent)"]{stroke:#d9822b}
.controls .bbtn[data-act=resume]{background:var(--pk-mint);color:var(--pk-on-face,#1d2340)}
.controls .bbtn[data-act=resume] svg{background:var(--pk-yellow)}
.controls .secmenu{grid-column:1/-1}
.line .who{text-transform:uppercase}
.line .done{margin-left:auto;border:0;box-shadow:none;background:none;color:var(--accent);padding:4px;font:inherit;font-size:12px;cursor:pointer;min-width:44px;min-height:32px}
.line .done:empty::before{content:'✓ 0回';color:var(--muted)}
.secbtns button[aria-pressed=true]{background:#d9822b;color:#fff}
.fchips label.off{opacity:.4;cursor:default}
body.kaiwa{--line:#1d2340;--shadow:0 3px 0 #1d2340}
body.kaiwa .cover{display:block;width:auto;aspect-ratio:auto;overflow:visible}
body.kaiwa .kwcard,body.kaiwa .pick button,body.kaiwa .you{border:3px solid #1d2340;box-shadow:0 3px 0 #1d2340}
/* An external character img must not inherit the sentence speaker label's border/padding. */
.kwsth>img.who,.kwthumb>img.who,.kaiwa-stage>img.who{border:0;padding:0;border-radius:0;background:none;max-width:none}
/* Match the embedded SVG's aspect handling, retaining the top sign in booth scenes. */
.kwsth>img.bg,.kwthumb>img.bg,.kaiwa-stage>img.bg{object-fit:fill}
.kaiwa-stage>img.bg{display:block}
.mestats .ic{width:24px;height:24px}
.mesec .shic .ic{width:100%;height:100%}
.metabs .ic{flex:none}
/* Expanded controls and text-entry/settings areas must remain reachable on phones. */
.controls.bar{top:calc(env(safe-area-inset-top,0px) + var(--site-height,58px))}
@media(max-width:560px){body.player:has(details.settings[open]) .bar,body.player:has(input:focus,textarea:focus) .bar,body.player .bar:has(.foldbar[aria-expanded=true]){position:relative;top:auto}.controls .foldbar{height:auto;min-height:38px}.controls .foldbar .fl{font-size:11px}.controls .foldbar .fs{font-size:10px}.controls .flowrow{gap:4px}.controls .chapgo,.controls .chapops{padding:4px 6px;font-size:11px}.controls .chapbtn{min-width:0}.controls .chapbtn .cbt{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}

body.mepage .mesec h2 .shic{border:2px solid var(--pk-edge);border-radius:50%;padding:6px;color:var(--ink);background:var(--pk-sky)}

/* The dialog owns scrolling; its content must not trap wheel chaining. */
.setsheet > .settings-scroll {
  overflow-x: hidden;
  overflow-y: auto;
  min-height: 0;
  overscroll-behavior: contain;
}
.settings-scroll > .global-settings {
  min-height: 0;
}
.settings-scroll > .global-settings > .setbody {
  overflow: visible;
  overscroll-behavior: auto;
}
