/* ===================================================================
   科目一刷题 · 移动端增强层
   叠加在 style.css 之上：底部 Tab 导航 / 拇指区大幅触控 / 手势翻题
   / 动态视口 / 安全区 / 小屏与横屏适配。桌面端不启用。
   =================================================================== */

/* ---------- 动态视口（iOS Safari 地址栏收缩） ---------- */
:root{
  --vh: 1vh;
  --tabbar-h: 58px;
  --safe-b: env(safe-area-inset-bottom, 0px);
  --safe-t: env(safe-area-inset-top, 0px);
}

html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{
  min-height:calc(var(--vh, 1vh) * 100);
  overflow-x:hidden;
}

/* 桌面端：完全不改变原有布局 */
@media (min-width: 901px){
  #tabbar{display:none!important}
}

/* ===================================================================
   手机 / 平板竖屏：启用移动端布局
   =================================================================== */
@media (max-width: 900px){

  /* ---------- 顶栏精简 ---------- */
  #top{
    padding:calc(6px + var(--safe-t)) 12px 0;
  }
  #top .brand{font-size:15.5px}
  #top .badge{font-size:11.5px;padding:2px 9px}
  /* 横向滚动 tabs 在手机上换成底部 Tab 栏 */
  #tabs{display:none!important}
  #top{padding-bottom:8px}

  /* ---------- 内容区为底部 Tab 让位 ---------- */
  #stage{
    padding:12px 12px calc(var(--tabbar-h) + var(--safe-b) + 74px);
    max-width:100%;
  }
  body.km-playing #stage{
    padding-bottom:calc(var(--tabbar-h) + var(--safe-b) + 78px);
  }

  /* ---------- 卡片 ---------- */
  .card{
    border-radius:16px;
    padding:14px 13px;
    margin-bottom:11px;
  }

  /* ---------- 题目文字 ---------- */
  .qtext{
    font-size:16.5px;
    line-height:1.72;
    margin-bottom:12px;
    letter-spacing:.1px;
  }
  .meta{font-size:12px;gap:6px;margin-bottom:9px}
  .meta .tag{padding:1px 8px}

  /* ---------- 选项：拇指区大按钮 ---------- */
  .opt{
    min-height:54px;
    padding:14px 13px;
    margin:10px 0;
    border-radius:14px;
    font-size:15.5px;
    line-height:1.55;
    gap:11px;
    align-items:center;
  }
  .opt .k{
    flex:0 0 28px;height:28px;width:28px;
    border-radius:9px;font-size:13.5px;
  }
  .opt:active{transform:scale(.985);background:rgba(47,107,255,.10)}

  /* ---------- 结果 / 解析 ---------- */
  .res{font-size:14.5px;padding:12px 13px;line-height:1.75}
  .hint{font-size:14px;line-height:1.8;padding:12px 13px}

  /* ---------- 操作按钮行：铺满宽度、易点 ---------- */
  #stage > .row{
    gap:9px;
    margin-bottom:6px;
  }
  #stage > .row > button{
    flex:1 1 0;
    min-width:calc(50% - 6px);
    min-height:46px;
    font-size:14.5px;
    border-radius:13px;
  }
  #stage > .row > .grow{display:none}

  /* ---------- 首页入口大格子 ---------- */
  .grid2{grid-template-columns:1fr;gap:9px}
  .grid3{grid-template-columns:repeat(2,1fr);gap:9px}
  .tile{padding:15px 14px;min-height:74px;justify-content:center}
  .tile b{font-size:15.5px}
  .tile span{font-size:12.5px}

  /* ---------- 统计 ---------- */
  .stat{gap:12px;font-size:12.5px}
  .stat b{font-size:19px}
  .big{font-size:32px}

  /* ---------- 通用按钮 ---------- */
  button{font-size:14px;padding:9px 14px;min-height:40px}
  button.icon{min-height:38px;min-width:38px;padding:8px 11px;font-size:16px}

  /* ---------- 底部翻题栏 ---------- */
  .bar{
    padding:9px 12px;
    padding-bottom:calc(9px + var(--safe-b));
    z-index:45;
  }
  .bar .inner{gap:9px}
  .bar .inner button{
    min-height:44px;
    font-size:14.5px;
    padding:9px 15px;
  }
  .bar .grow{font-size:12.5px}

  /* 练习模式下：翻题栏抬到 Tab 栏之上，Tab 栏保留可点，随时能切走 */
  body.km-playing .bar{
    bottom:calc(var(--tabbar-h) + var(--safe-b));
    padding-bottom:9px;
    border-radius:14px 14px 0 0;
    box-shadow:0 -6px 20px rgba(24,48,92,.10);
  }
  body.km-playing .bar::after{
    content:'';position:absolute;left:0;right:0;bottom:-1px;height:1px;
    background:var(--line);
  }

  /* ---------- 答题卡：从底部弹出的网格 ---------- */
  .grid-wrap{
    max-height:70vh;
    padding:14px 12px calc(14px + var(--safe-b));
    border-radius:20px 20px 0 0;
    z-index:60;
  }
  .grid{grid-template-columns:repeat(auto-fill,minmax(44px,1fr));gap:8px}
  .grid b{height:42px;border-radius:11px;font-size:13.5px}

  /* ---------- 设置面板：全高抽屉 ---------- */
  .sheet-body{
    max-width:100%;
    max-height:92vh;
    padding:16px 15px calc(22px + var(--safe-b));
    border-radius:22px 22px 0 0;
  }
  .sw{padding:12px 0;font-size:14.5px}
  .sw i{flex:0 0 46px;height:26px}
  .sw i::after{width:20px;height:20px}
  .sw input:checked + i::after{transform:translateX(20px)}

  /* ---------- 列表项 ---------- */
  .li{font-size:14.5px;padding:13px 13px}
  .li .n{font-size:15px}

  /* ---------- 输入框：防 iOS 聚焦自动放大 ---------- */
  input[type=search],input[type=text]{font-size:16px;padding:11px 13px;min-height:44px}

  /* ---------- 图片放大层 ---------- */
  .zoom{padding:8px}
  .thumb{padding:8px}

  /* ---------- 折叠面板 ---------- */
  .acc>.h{padding:13px;font-size:14.5px;min-height:48px}
  .acc>.b{font-size:14px;line-height:1.8}

  /* ---------- 顶部练习进度细条 ---------- */
  #kmprog{
    position:fixed;left:0;right:0;top:0;height:3px;z-index:70;
    background:transparent;pointer-events:none;transition:opacity .2s;opacity:0;
  }
  #kmprog.on{opacity:1}
  #kmprog i{
    display:block;height:100%;width:0;
    background:linear-gradient(90deg,var(--acc2),var(--acc));
    transition:width .25s ease;
    box-shadow:0 0 8px rgba(47,107,255,.55);
  }
}

/* ===================================================================
   底部 Tab 导航
   =================================================================== */
#tabbar{
  position:fixed;left:0;right:0;bottom:0;z-index:50;
  display:flex;align-items:stretch;
  padding-bottom:var(--safe-b);
  background:var(--glass);
  -webkit-backdrop-filter:blur(24px) saturate(180%);
  backdrop-filter:blur(24px) saturate(180%);
  border-top:1px solid var(--line);
  box-shadow:0 -8px 28px rgba(24,48,92,.10);
  transition:transform .22s ease,opacity .22s ease;
  height:calc(var(--tabbar-h) + var(--safe-b));
  box-sizing:border-box;
}
#tabbar a{
  flex:1 1 0;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:2px;text-decoration:none;color:var(--dim);
  font-size:10.5px;letter-spacing:.2px;
  -webkit-tap-highlight-color:transparent;
  position:relative;
  padding:6px 2px 5px;
  transition:color .16s;
}
#tabbar a .ic{
  font-size:19px;line-height:1;
  transition:transform .18s ease;
}
#tabbar a.on{color:var(--acc);font-weight:700}
#tabbar a.on .ic{transform:translateY(-1px) scale(1.08)}
#tabbar a.on::before{
  content:'';position:absolute;top:0;left:50%;transform:translateX(-50%);
  width:22px;height:3px;border-radius:0 0 4px 4px;
  background:linear-gradient(90deg,var(--acc2),var(--acc));
}
#tabbar a:active{color:var(--acc)}
#tabbar a .dot{
  position:absolute;top:6px;right:calc(50% - 18px);
  min-width:15px;height:15px;border-radius:8px;padding:0 4px;
  background:var(--bad);color:#fff;font-size:9.5px;font-weight:700;
  display:none;align-items:center;justify-content:center;line-height:1;
}
#tabbar a .dot.on{display:flex}

[data-theme="dark"] #tabbar{background:rgba(16,24,40,.86)}

/* ===================================================================
   小屏（iPhone SE / 360px 级）
   =================================================================== */
@media (max-width: 380px){
  :root{--tabbar-h:54px}
  #top .brand{font-size:14.5px}
  #top .badge{font-size:11px;padding:1px 8px}
  .qtext{font-size:15.5px}
  .opt{font-size:15px;min-height:50px;padding:12px 11px}
  .grid3{grid-template-columns:1fr}
  #stage{padding-left:10px;padding-right:10px}
  #tabbar a{font-size:10px}
  #tabbar a .ic{font-size:18px}
}

/* ===================================================================
   横屏手机：压缩纵向留白
   =================================================================== */
@media (max-height: 480px) and (orientation: landscape){
  :root{--tabbar-h:48px}
  #top{padding:4px 12px 0}
  #stage{padding-top:8px}
  .qtext{font-size:15px}
  .opt{min-height:44px;padding:10px 12px;margin:7px 0}
  .card{padding:11px}
  #tabbar a .ic{font-size:16px}
  #tabbar a{font-size:9.5px}
}

/* ===================================================================
   手势力反馈 / 减少动效
   =================================================================== */
@media (prefers-reduced-motion: reduce){
  #tabbar, #tabbar a .ic, #kmprog i, #stage, .opt{transition:none!important}
}
