/* ═══════════════════════════════════════════════
   mobile.css — 手机版适配层（断点 768px / 触屏优化 / safe-area）
   在 style.css 之后加载，仅覆盖移动端表现，桌面版不受影响
   ═══════════════════════════════════════════════ */

/* ───── 全局触屏优化（所有设备，无害） ───── */
*{touch-action:manipulation;-webkit-tap-highlight-color:transparent}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
html,body{overscroll-behavior:none}

/* 触屏设备：取消「粘滞 hover」，按压反馈交给 :active */
@media (hover:none){
  .btn:hover{background:var(--card);border-color:var(--line);transform:none;box-shadow:none}
  .btn-primary:hover{filter:none}
  .ev-next:hover{filter:none}
  .cer-btn:hover{filter:none}
  .cre-card:hover{border-color:var(--line);transform:none;box-shadow:none}
  .cre-radio:hover{border-color:var(--line)}
  .act-card:hover{border-color:var(--line);background:var(--card);transform:none}
  .act-card.locked:hover{border-color:var(--line)}
  .npc-row:hover{background:transparent}
  .ev-choice:hover{border-color:var(--line);background:var(--card);transform:none}
  .hs-reply:hover{border-color:var(--line);background:var(--card)}
  .tabbar .tab:hover{color:var(--text-dim);background:transparent}
  .slot-btn:hover{background:rgba(139,92,246,.1)}
  .phone-app:hover .ic{transform:none}
  .phone-msg:hover{background:transparent}
  .live-row:hover{background:transparent}
  .phone-back:hover{background:transparent}
  .switch{cursor:pointer}
}

/* ═════════════ 移动端底部导航（默认隐藏，仅手机主界面显示） ═════════════ */
#mobile-nav{
  position:fixed;left:0;right:0;bottom:0;z-index:60;
  display:none;
  grid-template-columns:1fr 1fr 1.3fr 1fr 1fr;
  align-items:end;
  background:rgba(10,7,30,.95);backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
  border-top:1px solid var(--line);
  padding:6px 4px calc(6px + env(safe-area-inset-bottom));
  box-shadow:0 -8px 30px rgba(0,0,0,.35);
}
.mn-tab{
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
  padding:7px 2px;border-radius:12px;
  color:var(--text-dim);font-size:10px;font-weight:700;letter-spacing:1px;
  transition:color .15s;
}
.mn-tab i{font-size:21px;font-style:normal;line-height:1;margin-bottom:1px}
.mn-tab:active{background:rgba(139,92,246,.16)}
.mn-tab.on{color:var(--purple)}
.mn-tab.on i{filter:drop-shadow(0 0 9px var(--purple-glow))}
.mn-fab{
  width:56px;height:56px;border-radius:50%;
  background:linear-gradient(135deg,var(--purple-deep),var(--pink));
  color:#fff;font-size:21px;font-weight:900;
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 6px 24px rgba(139,92,246,.55);
  border:3px solid var(--bg1);
  transform:translateY(-18px);
  transition:transform .12s ease;
  margin:0 auto;
}
.mn-fab i{font-style:normal;transform:translateX(1px)}
.mn-fab:active{transform:translateY(-12px) scale(.93)}
.mn-fab span{display:none}
/* 执行本周/巡航进行中：执行键变红、脉冲提示「点击即停止」 */
.mn-fab.cruising{background:linear-gradient(135deg,#b3123f,var(--red));box-shadow:0 6px 24px rgba(255,92,122,.55);animation:glowPulse 1.2s infinite}
.mn-fab.cruising i{transform:translateX(0)}

/* ═════════════ 手机断点（竖屏手机） ═════════════ */
@media (max-width:768px){
  ::-webkit-scrollbar{width:4px;height:4px}
  body{font-size:14.5px;line-height:1.75}

  /* ─── 标题界面（封面） ─── */
  .title-logo{font-size:clamp(30px,8vw,52px);letter-spacing:clamp(2px,1vw,8px)}
  .title-logo-en{font-size:12px;letter-spacing:8px;margin-bottom:6px}
  .title-sub{font-size:15px;letter-spacing:6px}
  .title-motto{margin-top:8px;font-size:10.5px;letter-spacing:6px}
  .title-tag{font-size:11.5px;letter-spacing:2px;padding:0 22px}
  .title-quote{margin-top:14px;font-size:13.5px;letter-spacing:1px;padding:0 20px}
  .title-menu{margin-top:28px;width:min(330px,86vw);gap:12px}
  .title-menu .btn-big{width:100%;min-width:0;padding:13px 20px;font-size:16px;letter-spacing:2px}
  .title-hint{margin-top:22px;font-size:11px;padding:0 18px;line-height:1.8}
  .title-sea{height:46%;opacity:.85}
  /* 横屏（矮视口）压缩：竖屏标题规则在横屏会把菜单推出屏幕（无滚动时「设定」不可达） */
  @media (orientation:landscape){
    #screen-title{padding:14px 0 16px;justify-content:flex-start}
    .title-logo{font-size:26px;letter-spacing:3px;line-height:1.2;margin-bottom:2px}
    .title-logo-en{font-size:9px;letter-spacing:5px;margin-bottom:2px}
    .title-sub{font-size:12px;letter-spacing:4px;margin-top:2px}
    .title-motto{margin-top:4px;font-size:8.5px;letter-spacing:4px}
    .title-tag{font-size:10px;margin-top:4px}
    .title-quote{margin-top:8px;font-size:11.5px;padding:0 16px}
    .title-menu{margin-top:10px;gap:5px}
    .title-menu .btn-big{padding:5px 14px;font-size:13px}
    .title-hint{margin-top:6px;font-size:9.5px;line-height:1.5}
    .title-sea{height:42%}
    /* 作者信息转文档流：随内容滚动，绝对定位会盖住横屏下的菜单（#封面化） */
    .title-credit{position:static;margin-top:14px}
    .title-foot{position:static;margin-top:2px}
  }
  /* 作者信息上移（修复：#审查 原 bottom:18px 与免责声明 bottom:4px 重叠约2px） */
  .title-credit{bottom:calc(52px + env(safe-area-inset-bottom));font-size:13px;letter-spacing:4px}
  .title-foot{bottom:calc(6px + env(safe-area-inset-bottom));font-size:9.5px;padding:0 10px}

  /* ─── 角色创建 ─── */
  .create-wrap{padding:18px 14px calc(34px + env(safe-area-inset-bottom))}
  .create-head{flex-direction:column;align-items:flex-start;gap:10px;margin-bottom:16px}
  .create-title{font-size:24px;letter-spacing:4px}
  .create-steps{width:100%;overflow-x:auto;padding-bottom:2px}
  .step-dot{width:24px;height:24px;flex:none}
  .cre-title{font-size:18px}
  .cre-sub{font-size:12.5px}
  .cre-grid{grid-template-columns:1fr !important}   /* 覆盖内联两/三列 */
  .attr-dist{grid-template-columns:1fr;gap:7px}
  .attr-row .nm{width:64px;font-size:12px}
  .attr-row .bar{height:9px}
  .attr-row .vl{font-size:12.5px}
  .cre-input{font-size:16px;padding:11px 12px}      /* 16px 防 iOS 聚焦缩放 */
  select.cre-input{font-size:15px}
  .cre-radio{padding:10px 14px;font-size:14px}
  .cre-card{padding:13px 14px}
  .cre-card h4{font-size:15px}
  .cre-foot{flex-direction:column-reverse;gap:10px;margin-top:22px}
  .cre-foot .btn{width:100%;padding:12px 18px;font-size:15px}
  .btn-big{width:100%;min-width:0}
  .ju-card{width:min(380px,92vw);padding:26px 20px}
  .ju-card input.cre-input{font-size:18px}

  /* ─── 主界面顶栏（两行：日期行 + 状态行） ─── */
  #main-topbar{
    flex-wrap:wrap;gap:6px;padding:calc(8px + env(safe-area-inset-top)) 12px 6px;
    min-height:86px;align-content:start;
  }
  /* 修复（#审查）：safe-area-top 此前加到 padding-bottom——刘海下日期行被状态栏/刘海压住；
     另 top-date 改单行横滚，与 top-stats 同策略——多标记换行会把顶栏撑高、盖住状态行 */
  .top-date{min-width:0;flex:1;font-size:13.5px;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;white-space:nowrap}
  .top-date::-webkit-scrollbar{display:none}
  .top-actions{gap:6px}
  .top-actions #btn-phone,.top-actions #btn-save,.top-actions #btn-load{display:none}
  /* 快速保存保持可见（写入自动存档槽，不占手动三槽） */
  .top-stats{
    order:3;width:100%;flex:none;flex-wrap:nowrap;overflow-x:auto;
    gap:14px;padding:2px 0 3px;margin-left:0;-webkit-overflow-scrolling:touch;
    scrollbar-width:none;
  }
  .top-stats::-webkit-scrollbar{display:none}
  .stat-pill{flex:none;font-size:12px}
  .stat-pill .bar{width:52px;height:7px}
  .stat-pill .vl{min-width:auto;font-size:12.5px}

  /* ─── 主界面三栏 → 单页切换（底部导航控制） ─── */
  #main-grid{
    display:block;overflow-y:hidden;
    position:absolute;left:0;right:0;
    top:calc(86px + env(safe-area-inset-top));
    bottom:calc(72px + env(safe-area-inset-bottom));
    height:auto;
    padding:8px 10px;
  }
  .col-center,.col-left,.col-right{height:100%}
  .col-left,.col-right{display:none}
  #main-grid.m-schedule .col-left{display:flex}
  #main-grid.m-schedule .col-center,#main-grid.m-schedule .col-right{display:none}
  #main-grid.m-today .col-right{display:flex}
  #main-grid.m-today .col-center,#main-grid.m-today .col-left{display:none}
  .col-left,.col-right{overflow-y:auto;-webkit-overflow-scrolling:touch}
  .col-center{gap:8px}
  .panel{padding:12px 13px;border-radius:14px}
  .panel-title{font-size:12px}

  /* 页签横滚 */
  .tabbar{flex-wrap:nowrap;overflow-x:auto;margin:0 -10px;padding:2px 10px;gap:5px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .tabbar::-webkit-scrollbar{display:none}
  .tabbar .tab{flex:none;padding:8px 13px;font-size:13px}

  /* 行动卡片 2 列 */
  .act-grid{grid-template-columns:repeat(2,1fr);gap:8px}
  .act-card{padding:10px 11px}
  .act-card .ic{font-size:18px;margin-bottom:3px}
  .act-card .nm{font-size:12.5px}
  .act-card .ds{font-size:10.5px}
  .npc-ava{width:36px;height:36px;font-size:15px}
  .favor-bar{width:52px}
  .slot-row{padding:8px 0}
  .slot-time{width:40px;font-size:11.5px}

  /* 底部桌面操作栏 → 手机隐藏（由底部导航接管） */
  #bottom-bar{display:none}

  /* 行动确认浮层 → 底部全宽 */
  .confirm-strip{
    left:10px;right:10px;transform:none;bottom:calc(70px + env(safe-area-inset-bottom));
    flex-wrap:wrap;gap:10px;padding:12px 14px;border-radius:14px;
  }
  .confirm-strip .cs-info{width:100%}

  /* 引导气泡 → 底部提示条 */
  .tip-bubble{left:10px !important;right:10px;top:auto !important;bottom:calc(74px + env(safe-area-inset-bottom));max-width:none;z-index:92}
  .tip-bubble::before{display:none}

  /* Toast → 底部（拇指区） */
  #toast-wrap{top:auto;bottom:calc(74px + env(safe-area-inset-bottom));padding:0 12px;align-items:center;width:100%}
  .toast{font-size:13px;max-width:92vw;text-align:center;padding:10px 16px}

  /* ─── 手机模拟器 → 全屏沉浸 ─── */
  #phone-overlay{padding:0;background:rgba(4,3,12,.92)}
  .phone-shell{
    width:100vw;height:100vh;height:100dvh;
    border-radius:0;border:none;box-shadow:none;max-width:none;max-height:none;
  }
  .phone-notch{display:none}
  .phone-screen{padding-top:env(safe-area-inset-top)}
  .phone-appgrid{gap:18px 8px}
  .phone-app .ic{width:58px;height:58px;font-size:26px}
  .phone-app .nm{font-size:11px}

  /* ─── 事件弹窗 → 底部弹出全宽 ─── */
  #event-modal{padding:0;align-items:flex-end}
  .ev-card{width:100vw;max-height:96vh;max-height:96dvh;border-radius:20px 20px 0 0;border-bottom:none}
  .ev-scene{height:84px}
  .ev-scene .scene-emoji{font-size:52px}
  .ev-text{max-height:none;min-height:74px;flex:1 1 auto;font-size:16px;line-height:1.9;padding:10px 18px 6px}
  .ev-choices{flex:none;overflow-y:auto;max-height:38vh;max-height:38dvh;padding:12px 18px 6px}
  .ev-choice{padding:12px 15px;font-size:15px}
  .ev-header{padding:14px 18px 4px}
  /* 横屏手机（矮视口）：事件弹窗贴底+大场景会吃掉结果区高度，把「继续」挤到卡片外——
     居中卡片、压缩场景，结果区已有 max-height+overflow 兜底（软卡死修复） */
  @media (orientation:landscape){
    #event-modal{align-items:center;justify-content:center}
    .ev-card{max-height:96dvh;border-radius:20px}
    .ev-scene{height:56px}
    .ev-text{min-height:60px}
  }
  .ev-speaker{padding:4px 18px 0;font-size:13.5px}
  .ev-result{padding:10px 18px calc(16px + env(safe-area-inset-bottom));overflow-y:auto;max-height:52dvh;max-height:52dvh}   /* 滚动修复（#审查）：矮设备+最长结果事件时 next 不被裁 */
  .ev-result .rt{font-size:15px}
  .ev-next{padding:13px;font-size:15.5px;margin-top:2px}

  /* ─── 通用弹窗 → 底部弹出全宽 ─── */
  #modal-generic{padding:0;align-items:flex-end}
  .gen-card{
    width:100vw;max-height:88vh;max-height:88dvh;border-radius:20px 20px 0 0;
    padding:20px 16px calc(24px + env(safe-area-inset-bottom));
  }
  .gen-card h2{font-size:17.5px}
  .gen-card p{font-size:13.5px}
  .gen-actions{margin-top:16px}
  .gen-actions .btn{flex:1;padding:12px 14px;font-size:14.5px}
  #ai-chatbox{height:34vh !important;height:34dvh !important}
  .table{font-size:12px}

  /* ─── 设置抽屉 → 底部弹出全宽 ─── */
  #drawer{align-items:flex-end}
  .drawer-card{
    width:100vw;height:auto;max-height:86vh;max-height:86dvh;
    border-left:none;border-top:1px solid var(--line2);
    border-radius:20px 20px 0 0;padding:22px 16px calc(24px + env(safe-area-inset-bottom));
    animation:slideUp .3s ease;
  }
  .set-row{flex-direction:row;flex-wrap:wrap;gap:8px}
  .set-row > div:first-child{flex:1 1 60%}
  .set-row .cre-input{width:100% !important;max-width:100% !important}
  .set-row .switch{flex:none}

  /* ─── 公演 ─── */
  .show-wrap{width:100vw;height:100vh;height:100dvh;border-radius:0;border:none;padding-top:env(safe-area-inset-top)}   /* safe-area（#审查）：刘海下节目标签/分数此前被压住 */
  .show-stage{min-height:0}
  .timing-bar{width:92%;height:74px;border-radius:16px}
  .timing-label{bottom:104px;font-size:11px}
  .show-mc .q{font-size:16px;padding:0 6px}
  .show-seg{font-size:12px}
  .show-score{font-size:13.5px}
  .show-status{font-size:13px;white-space:nowrap;max-width:92vw;overflow:hidden;text-overflow:ellipsis}
  .cer-skip{top:calc(10px + env(safe-area-inset-top));right:10px}
  .ev-stop{top:calc(10px + env(safe-area-inset-top));right:10px}

  /* ─── 握手会 ─── */
  .hs-wrap{width:100vw;height:100vh;height:100dvh;border-radius:0;border:none;padding-top:env(safe-area-inset-top)}   /* safe-area（#审查）：刘海下握手会头部此前被压住 */
  .hs-top{flex-wrap:wrap;padding:12px 14px;gap:8px}
  .hs-timer{width:100%;display:flex;align-items:center;gap:10px}
  .hs-timer .bar{flex:1}
  .hs-timer .t{width:32px;text-align:right;margin-top:0}
  .hs-mood{font-size:14px;justify-content:flex-start}
  .hs-body{padding:14px 14px;gap:10px}
  .hs-fan-ava{width:48px;height:48px;font-size:20px}
  .hs-reply-bar{padding:12px 14px calc(12px + env(safe-area-inset-bottom))}
  .hs-reply{padding:11px 14px;font-size:14.5px}
  .hs-bubble{max-width:88%;font-size:13.5px}

  /* ─── 仪式演出层 ─── */
  #cer-body{padding:calc(24px + env(safe-area-inset-top)) 12px calc(24px + env(safe-area-inset-bottom))}
  .cer-count{font-size:clamp(84px,28vw,140px)}
  .cer-title{font-size:clamp(28px,8.6vw,50px);letter-spacing:clamp(3px,1.6vw,12px)}
  .cer-title-2{font-size:clamp(25px,7.6vw,42px);letter-spacing:4px}
  .cer-sub{font-size:12px;letter-spacing:4px}
  .cer-line{font-size:16px;max-width:100%}
  .cer-line.big{font-size:22px}
  .cer-line.small{font-size:13px}
  .cer-reveal{font-size:clamp(30px,9vw,56px);letter-spacing:2px;min-height:1.4em}
  .cer-wave{gap:8px 12px;max-width:100%}
  .cer-wave .w{font-size:22px}
  .cer-list{width:96vw;font-size:14.5px;max-height:72vh}
  .cer-list .li .rn{width:34px}
  .cer-quote{font-size:16.5px;max-width:100%;line-height:1.95}
  .cer-letter{width:96vw;font-size:14.5px;padding:18px 15px;line-height:1.95}
  .cer-photo{font-size:88px}
  .cer-shrine{font-size:110px}
  .cer-timeline{width:96vw;padding-left:22px}
  .cer-recap{gap:10px}
  .cer-recap .rc{min-width:76px;padding:10px 8px}
  .cer-recap .rc .v{font-size:19px}
  .cer-btn{padding:13px 34px;font-size:15px;margin-top:20px}

  /* 全屏文字演出 / 名片 */
  .fulltext{gap:14px}
  .fulltext .ft-line{font-size:17px;line-height:1.9}
  .fulltext .ft-line.big{font-size:25px}
  .namecard{width:92vw;padding:20px 14px}
  .namecard .nc-name{font-size:24px;letter-spacing:4px}
  .namecard .nc-stats{font-size:11px}

  /* 公演/握手会报告 */
  .show-report{width:100%}
  .report-row{font-size:13px}

  /* 图表/总结 */
  .summary-hero .big{font-size:27px}
  .curve-wrap{height:110px}
}

/* ═════════════ 手机断点内：主界面才显示底部导航 ═════════════ */
@media (max-width:768px){
  #mobile-nav{display:grid}
  #screen-main.hidden ~ #mobile-nav{display:none}
}
