html, body { height: 100%; height: 100dvh; }
.app { height: 100%; height: 100dvh; }
button, select, [role="button"] { touch-action: manipulation; }
.stage { inset: calc(12px + env(safe-area-inset-top)) max(12px, env(safe-area-inset-right)) max(12px, env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-left)); grid-template-columns: minmax(0,1fr) minmax(310px,34%); overflow: hidden; grid-template-rows: minmax(0,1fr); }
.question { min-height: 0; padding: 16px 20px; }
.question .question-meta { padding-left: 52px; flex-wrap: wrap; gap: 8px; }
.floating-launcher { top: calc(12px + env(safe-area-inset-top)); width: 44px; height: 44px; }
.launcher-menu { left: max(16px,env(safe-area-inset-left)); }
.launcher-tools { right: max(16px,env(safe-area-inset-right)); }
.tablet-analysis-button { display:none; min-height:44px; border:1px solid var(--line); border-radius:24px; padding:8px 12px; color:var(--forest); background:var(--paper); font:inherit; font-size:14px; }
.tablet-offline-actions { display:flex; align-items:center; flex-wrap:wrap; gap:10px; width:100%; border-top:1px solid var(--line); padding-top:12px; }
.tablet-offline-status { font-size:12px; color:var(--muted); }
.topbar { top:calc(66px + env(safe-area-inset-top)); right:16px; max-width:calc(100vw - 32px); height:auto; flex-wrap:wrap; padding:14px; }
.topbar button { min-height:44px; }
.review-toggle, .tooltip-close { width:36px; height:36px; }
.translation-trigger { width:40px; height:40px; }
.article-note { cursor:pointer; }
.knowledge-tooltip { max-height: min(48dvh,400px); }
.contact-note { white-space:normal; padding-right:0; }
.analysis { min-height:0; overflow:auto; padding:18px; }
.analysis-content { animation:none; }
.analysis-tabs { flex-wrap:wrap; }
.analysis-tabs { padding-right:44px; }
.options { grid-template-columns:repeat(2,minmax(0,1fr)); }
.option { overflow-wrap:anywhere; }
.pager { grid-template-columns: minmax(90px,1fr) auto auto minmax(90px,1fr); gap:8px; }
.pager button { font-size:15px; }
#sectionJump { grid-row:2; grid-column:4; width:100%; min-height:44px; }
.sidebar { top:calc(66px + env(safe-area-inset-top)); bottom:max(14px,env(safe-area-inset-bottom)); width:260px; padding-bottom:20px; }
.progress-island { display:none; }
.review-panel { max-height:calc(100dvh - 100px); width:min(420px,calc(100vw - 32px)); }
.highlight-selection-menu button { min-height:44px; }
.question-passage { -webkit-user-select:text; user-select:text; }
@media (orientation: portrait), (max-width: 900px) {
  .stage, .stage.analysis-hidden { display:grid; grid-template-columns:minmax(0,1fr); grid-template-rows:minmax(0,1fr); }
  .tablet-analysis-button { display:inline-block; }
  .analysis { display:none; }
  body.tablet-analysis-open .analysis { display:block; position:fixed; z-index:24; inset:calc(12px + env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left)); box-shadow:0 20px 44px rgba(52,43,33,.22); padding-top:64px; }
  body.tablet-analysis-open .tablet-analysis-button { position:fixed; z-index:26; top:calc(16px + env(safe-area-inset-top)); right:72px; }
  .question .question-meta { padding-right:32px; }
  body.tablet-analysis-open .stage.analysis-hidden .analysis { display:block; visibility:visible; opacity:1; pointer-events:auto; }
  .question { min-height:0; height:100%; }
  .question .vocab-copy { min-height:0; }
  body.comprehension-question .question-passage, body.cloze-question .question-passage { font-size:19px; padding:16px 18px; }
}
@media (max-width:600px) {
  .question { padding:14px 12px; }
  .question-meta { font-size:13px; }
  .options, body.comprehension-question .options, body.cloze-question .options { grid-template-columns:minmax(0,1fr); }
  .option, body.comprehension-question .option { font-size:16px; }
  .pager { grid-template-columns:1fr auto 1fr; }
  .pager .confirm { grid-row:2; grid-column:1 / 3; }
  #sectionJump { grid-row:2; grid-column:3; }
  #nextQuestion { grid-row:1; grid-column:3; }
  .highlight-manager-button { font-size:12px; }
}
