@charset "UTF-8";

/* ---- inline block 1/6 #ws-v5-mobile-nav ---- */

@media (max-width: 768px){
  /* V4.1.13 权威底部导航（单一来源，覆盖历史补丁）：今日 / 计划 / 词库 / 记录 / 我的 */
  html body nav button[data-tab]:not([data-tab="home"]):not([data-tab="plan"]):not([data-tab="lib"]):not([data-tab="records"]):not([data-tab="account"]){
    display:none!important; visibility:hidden!important;
  }
  html body nav > button[data-tab="home"]{display:flex!important;visibility:visible!important;order:1!important;}
  html body nav > button[data-tab="plan"]{display:flex!important;visibility:visible!important;order:2!important;}
  html body nav > button[data-tab="lib"]{display:flex!important;visibility:visible!important;order:3!important;}
  html body nav > button[data-tab="records"]{display:flex!important;visibility:visible!important;order:4!important;}
  html body nav > button[data-tab="account"]{display:flex!important;visibility:visible!important;order:5!important;}
  html body nav > button[data-tab="home"]::after{content:"今日"!important;}
  html body nav > button[data-tab="plan"]::after{content:"计划"!important;}
  html body nav > button[data-tab="lib"]::after{content:"词库"!important;}
  html body nav > button[data-tab="records"]::after{content:"记录"!important;}
  html body nav > button[data-tab="account"]::after{content:"我的"!important;}
}


/* ---- inline block 2/6 #wsDesktopFooterFit ---- */

/* V5.5.10 桌面左栏空间紧张：底部「低频入口」原本约 333px 高(9行)，把固定侧栏导航的下半截(设置/我的/反馈)
   挤到它后面看不到。这里把低频入口压紧到约 200px，给上方导航让出空间，让 9 个标签全部完整显示。仅 ≥769px。 */
@media(min-width:769px){
  /* 桌面左栏「今日目标」浮动卡与首页今日计划重复，且会盖住下方导航(设置/反馈)。桌面端隐藏，给导航让位。 */
  html.ws-v4-polish body .desktop-goal-card{display:none!important;}
  /* V6.6.1(用户反馈:桌面版PWA左栏"今日/计划/词库"压缩显示不全):目标卡已隐藏却仍为它预留 138–178px 死区,矮窗口(PWA 默认窗/笔记本)导航被挤出视口。
     归零该预留;footer 高度与 nav 底部同源,杜绝 footer(z61) 盖住导航。 */
  html.ws-v4-polish body{--desktop-goal-space:0px;--desktop-footer-h:clamp(150px,21vh,214px);}
  html.ws-v4-polish body .desktop-side-footer{height:auto!important;max-height:var(--desktop-footer-h)!important;padding:8px 22px 14px!important;overflow:auto!important;scrollbar-width:thin!important;}
  html.ws-v4-polish body .desktop-side-footer .desktop-side-title{margin:6px 0 1px!important;font-size:11px!important;line-height:1.3!important;}
  html.ws-v4-polish body .desktop-side-footer button{height:22px!important;min-height:22px!important;font-size:12.5px!important;}
}
@media(min-width:769px) and (max-height:720px){
  /* 矮窗口再压一档行高:9 个标签 9×34+8×4=338px,视口 ≥604px 都不用滚动 */
  html.ws-v4-polish body nav{gap:4px!important;padding-top:8px!important;padding-bottom:8px!important;}
  html.ws-v4-polish body nav button,html.ws-v4-polish body nav .desktop-only-nav{min-height:34px!important;padding:4px 14px!important;}
}


/* ---- inline block 3/6 #ws-study-focus-v1 ---- */

/* V6.6.1 全屏专注模式(用户反馈):只留 暂停 + 总进度条 + 卡片 + 作答按钮 */
body.ws-focus #study.on .study-brand,
body.ws-focus #study.on .study-top-meta,
body.ws-focus #study.on .study-progress,
body.ws-focus #study.on .study-book-strip,
body.ws-focus #study.on .study-aside{display:none!important;}
body.ws-focus #study.on .study-mobile-actions button:not([data-study-action="focus"]){display:none!important;}
@media(min-width:769px){
  body.ws-focus header,body.ws-focus nav,body.ws-focus .desktop-side-footer,body.ws-focus .desktop-goal-card,
  body.ws-focus header .header-actions,body.ws-focus #wsStatusScrim{display:none!important;}
  body.ws-focus #study.on .study-top,body.ws-focus #study.on .study-progress,
  body.ws-focus #study.on .study-body,body.ws-focus #study.on .study-foot{margin-left:0!important;}
  body.ws-focus #study.on .study-top{padding-top:18px!important;}
  body.ws-focus #study.on .study-body{grid-template-columns:minmax(0,1fr)!important;max-width:1040px;margin:0 auto!important;}
  body.ws-focus #study.on .study-foot{padding-right:44px!important;}
  body.ws-focus:has(#study.on) #toast{top:calc(64px + env(safe-area-inset-top,0px));}
}
@media(max-width:768px){ #study.on .study-focus-btn{display:none!important;} }
.study-focus-btn{cursor:pointer;}
.study-focus-btn[aria-pressed="true"]{color:var(--accent)!important;border-color:var(--accent)!important;}


/* ---- inline block 4/6 #wsStatsNavFix ---- */

/* V5.5.8 修复统计页底部导航：原 mobile-stats-active nav 多条规则打架（只剩"统计"标签、塌成左下小药丸）。
   这里把统计页底栏强制成和「我的」页一致的 5 格固定底栏（今日学习/词库/计划表/统计/我的）。只作用于统计页，不影响其它页。 */
@media(max-width:768px){
  html body.mobile-stats-active nav{position:fixed!important;left:10px!important;right:10px!important;bottom:calc(12px + env(safe-area-inset-bottom))!important;top:auto!important;z-index:1200!important;width:auto!important;height:auto!important;display:grid!important;grid-template-columns:repeat(5,1fr)!important;gap:0!important;margin:0!important;padding:9px 10px 10px!important;border:1px solid var(--line)!important;border-radius:22px!important;background:color-mix(in srgb,var(--card) 92%,transparent)!important;box-shadow:0 14px 34px rgba(48,38,25,.16)!important;backdrop-filter:blur(14px)!important;}
  html body.mobile-stats-active nav button{min-width:0!important;min-height:48px!important;height:48px!important;padding:3px 0!important;border:0!important;border-radius:16px!important;background:transparent!important;box-shadow:none!important;display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;gap:3px!important;font-size:0!important;line-height:1!important;color:var(--ink-soft)!important;font-weight:900!important;overflow:visible!important;}
  html body.mobile-stats-active nav button.active{background:color-mix(in srgb,var(--accent) 12%,transparent)!important;color:var(--accent)!important;}
  html body.mobile-stats-active nav button::before{display:block!important;font-size:18px!important;line-height:1!important;}
  html body.mobile-stats-active nav button::after{display:block!important;width:auto!important;height:auto!important;min-width:max-content!important;background:transparent!important;margin:0!important;padding:0!important;font-size:9px!important;line-height:1.18!important;color:currentColor!important;white-space:nowrap!important;}
  html body.mobile-stats-active nav button[data-tab="home"]::after{content:"今日学习"!important;}
  html body.mobile-stats-active nav button[data-tab="lib"]::after{content:"词库"!important;}
  html body.mobile-stats-active nav button[data-tab="plan"]::after{content:"计划表"!important;}
  html body.mobile-stats-active nav button[data-tab="stats"]::after{content:"统计"!important;}
  html body.mobile-stats-active nav button[data-tab="account"]::after{content:"我的"!important;}
}


/* ---- inline block 5/6 #wsShopDesktop ---- */

/* V5.5.9 桌面端商城弹窗：.mobile-ach-modal 及商城内容样式原本只在 @media(max-width:768px) 内，
   电脑端打开商城会是无样式的整屏块（=「打不开/错位」）。这里在 ≥769px 补一套等价样式，让商城在电脑端
   呈现为居中对话框。仅桌面生效、不碰手机端原规则。 */
@media(min-width:769px){
  .mobile-ach-modal{position:fixed;inset:0;z-index:13200;display:none;align-items:center;justify-content:center;padding:32px;background:rgba(28,24,20,.46);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);}
  .mobile-ach-modal.is-open{display:flex;}
  .mobile-ach-modal-panel{width:min(560px,100%);max-height:86vh;margin:0;display:flex;flex-direction:column;border:1px solid var(--line);border-radius:22px;background:var(--card,var(--paper));box-shadow:0 30px 80px rgba(20,15,8,.42);overflow:hidden;}
  .mobile-ach-modal-head{display:grid;grid-template-columns:1fr 36px;gap:8px;align-items:center;padding:18px 22px;border-bottom:1px solid var(--line);}
  .mobile-ach-modal-head b{font-size:18px;font-weight:900;color:var(--ink);}
  .mobile-ach-close{border:1px solid var(--line);border-radius:50%;width:36px;height:36px;background:color-mix(in srgb,var(--card) 80%,var(--paper));color:var(--ink-soft);font-size:19px;line-height:1;cursor:pointer;}
  .mobile-ach-modal-body{padding:20px 22px;display:flex;flex-direction:column;gap:12px;overflow:auto;}
  .mobile-shop-balance{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:6px;}
  .mobile-shop-balance>div{background:color-mix(in srgb,var(--accent) 12%,var(--card));border:1px solid color-mix(in srgb,var(--accent) 22%,var(--line));border-radius:14px;padding:13px 8px;text-align:center;}
  .mobile-shop-balance span{display:block;font-size:12px;color:var(--ink-soft);margin-bottom:4px;}
  .mobile-shop-balance b{font-size:23px;color:var(--accent);font-family:var(--serif,Georgia,serif);}
  .mobile-shop-list{display:flex;flex-direction:column;gap:10px;}
  .mobile-shop-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 15px;border:1px solid color-mix(in srgb,var(--line) 70%,transparent);border-radius:14px;background:color-mix(in srgb,var(--card) 60%,transparent);}
  .mobile-shop-item-copy b{display:block;font-size:14.5px;color:var(--ink);}
  .mobile-shop-item-copy small{font-size:12px;color:var(--ink-soft);}
  .mobile-shop-buy{border:0;border-radius:999px;background:var(--solid,var(--accent));color:var(--solid-text,#fff);font-weight:800;font-size:13px;padding:10px 16px;cursor:pointer;white-space:nowrap;}
  .mobile-shop-buy.disabled{opacity:.5;cursor:default;}
  .mobile-shop-owned{font-size:13px;font-weight:800;color:var(--accent);white-space:nowrap;}
  .mobile-ach-empty{font-size:12.5px;color:var(--ink-soft);line-height:1.6;text-align:center;padding:4px 2px;}
}


/* ---- inline block 6/6 #wsRqStyle ---- */

.ws-rq-bell{position:relative;display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:999px;border:1px solid var(--line);background:var(--card,var(--paper));color:var(--ink);cursor:pointer;font-size:18px;line-height:1}
.ws-rq-bell:hover{border-color:var(--accent)}
.ws-rq-dot{position:absolute;top:5px;right:5px;min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:var(--terra,#c2553f);color:#fff;font-size:10px;font-weight:800;display:none;align-items:center;justify-content:center;line-height:16px;box-sizing:border-box}
.ws-rq-dot.on{display:flex}
.ws-rq-mbell{position:fixed;top:auto;bottom:calc(156px + env(safe-area-inset-bottom,0px));left:auto;right:8px;z-index:9000;display:none;width:36px;height:36px;font-size:16px;opacity:.92;box-shadow:0 8px 20px rgba(20,15,8,.22);touch-action:none;user-select:none;-webkit-user-select:none}
.ws-rq-mbell.dragging{transition:none!important;box-shadow:0 12px 28px rgba(20,15,8,.28)}
@media(max-width:768px){.ws-rq-mbell.has{display:inline-flex}}
@media(min-width:769px){.ws-rq-mbell{display:none!important}}
.ws-rq-mask{position:fixed;inset:0;background:rgba(20,15,8,.5);z-index:13000;display:none;align-items:flex-start;justify-content:center;padding:36px 16px;overflow:auto}
.ws-rq-mask.on{display:flex}
.ws-rq-panel{width:min(560px,100%);background:var(--paper);border:1px solid var(--line);border-radius:22px;box-shadow:0 30px 80px rgba(20,15,8,.42);overflow:hidden}
.ws-rq-head{display:flex;align-items:flex-start;justify-content:space-between;padding:22px 24px 12px}
.ws-rq-title{font-family:var(--serif,Georgia,serif);font-size:23px;font-weight:800;color:var(--ink)}
.ws-rq-sub{font-size:12.5px;color:var(--ink-soft);margin-top:4px}
.ws-rq-x{background:none;border:none;font-size:24px;color:var(--ink-soft);cursor:pointer;line-height:1;padding:2px 4px}
.ws-rq-wallet{display:flex;gap:12px;padding:2px 24px 12px}
.ws-rq-coin{flex:1;display:flex;align-items:center;justify-content:space-between;padding:13px 16px;border-radius:14px;border:1px solid var(--line);background:var(--card,var(--paper));font-weight:800;color:var(--ink);font-size:13px}
.ws-rq-coin b{font-family:var(--serif,Georgia,serif);font-size:22px;color:var(--accent)}
.ws-rq-list{padding:2px 18px 6px;display:flex;flex-direction:column;gap:10px}
.ws-rq-task{border:1px solid var(--line);border-radius:16px;background:var(--card,var(--paper));padding:14px 16px}
.ws-rq-trow{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.ws-rq-tname{font-weight:800;color:var(--ink);font-size:15px}
.ws-rq-tdesc{font-size:12.5px;color:var(--ink-soft);margin-top:3px;line-height:1.5}
.ws-rq-rew{flex:0 0 auto;font-weight:800;font-size:12px;color:var(--accent);border:1px solid color-mix(in srgb,var(--accent) 45%,transparent);border-radius:10px;padding:6px 10px;white-space:nowrap}
.ws-rq-bar{height:7px;border-radius:999px;background:color-mix(in srgb,var(--ink) 10%,transparent);margin-top:11px;overflow:hidden}
.ws-rq-bar i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--accent),var(--terra,#c79a3e));transition:width .3s}
.ws-rq-foot{display:flex;align-items:center;justify-content:space-between;margin-top:9px}
.ws-rq-prog{font-size:12px;color:var(--ink-soft);font-weight:700}
.ws-rq-claim{border:none;border-radius:10px;padding:7px 16px;font-weight:800;font-size:13px;cursor:pointer;background:var(--solid,var(--accent));color:var(--solid-text,#fff)}
.ws-rq-claim[disabled]{opacity:1;cursor:default;background:transparent;color:var(--ink-faint,var(--ink-soft));border:1px solid var(--line)}
.ws-rq-claim.claimed{background:transparent;color:var(--accent);border:1px solid color-mix(in srgb,var(--accent) 40%,transparent);cursor:default}
.ws-rq-weekly{margin:8px 18px 20px;border:1px dashed color-mix(in srgb,var(--accent) 50%,transparent);border-radius:16px;background:var(--accent-soft);padding:16px}
.ws-rq-weekly h4{font-size:15px;font-weight:800;color:var(--ink);margin:0 0 4px}
.ws-rq-weekly p{font-size:12.5px;color:var(--ink-soft);line-height:1.55;margin:0 0 10px}
.ws-rq-weekly textarea{width:100%;min-height:88px;border:1px solid var(--line);border-radius:12px;background:var(--paper);color:var(--ink);padding:10px 12px;font:inherit;font-size:13px;resize:vertical;box-sizing:border-box}
.ws-rq-weekly input{width:100%;border:1px solid var(--line);border-radius:10px;background:var(--paper);color:var(--ink);padding:9px 12px;font:inherit;font-size:13px;margin-top:8px;box-sizing:border-box}
.ws-rq-cc{font-size:11.5px;color:var(--ink-soft);margin-top:6px;text-align:right}
.ws-rq-fbtn{margin-top:11px;width:100%;border:none;border-radius:12px;padding:11px;font-weight:800;font-size:14px;background:var(--solid,var(--accent));color:var(--solid-text,#fff);cursor:pointer}
.ws-rq-fbtn[disabled]{opacity:.55;cursor:default}
.ws-rq-empty{padding:26px;text-align:center;color:var(--ink-soft);font-size:13px}
.ws-rq-notif{padding:6px 18px 2px}
.ws-rq-notif-h{font-size:12px;font-weight:800;color:var(--ink-soft);letter-spacing:.04em;margin:2px 2px 8px;display:flex;align-items:center;gap:8px}
.ws-rq-readall{margin-left:auto;border:1px solid var(--line);background:var(--card);color:var(--accent);border-radius:999px;padding:3px 10px;font-size:11.5px;font-weight:800;cursor:pointer}
.ws-rq-notif-item{border:1px solid var(--line);border-radius:13px;background:var(--card,var(--paper));padding:11px 14px;margin-bottom:8px}
.ws-rq-notif-item b{display:block;font-size:13.5px;font-weight:800;color:var(--ink)}
.ws-rq-notif-item span{display:block;font-size:12px;color:var(--ink-soft);margin-top:2px;line-height:1.5}
.ws-rq-notif-item.act{cursor:pointer;border-color:color-mix(in srgb,var(--accent) 45%,transparent)}
.ws-rq-notif-item.act:hover{border-color:var(--accent)}
.ws-rq-notif-h em{display:inline-flex;align-items:center;justify-content:center;min-width:17px;height:17px;padding:0 5px;margin-left:5px;border-radius:999px;background:var(--terra,#c2553f);color:#fff;font-size:10px;font-style:normal;font-weight:800;vertical-align:middle}
.ws-rq-notif-scroll{max-height:38vh;overflow:auto;-webkit-overflow-scrolling:touch}
.ws-rq-notif-read{margin-top:2px}
.ws-rq-notif-read>summary{list-style:none;cursor:pointer;font-size:12px;font-weight:800;color:var(--ink-soft);letter-spacing:.04em;margin:2px 2px 8px;padding:7px 11px;border:1px solid var(--line);border-radius:11px;background:var(--card,var(--paper));user-select:none}
.ws-rq-notif-read>summary::-webkit-details-marker{display:none}
.ws-rq-notif-read>summary:before{content:"▸ ";color:var(--ink-faint,var(--ink-soft))}
.ws-rq-notif-read[open]>summary:before{content:"▾ "}
.ws-rq-notif-read[open]>summary{margin-bottom:8px}
/* 有可领奖励时：铃铛整体高亮成"气泡"+轻微脉冲，比小红点更显眼（手机/电脑同款） */
.ws-rq-bell.live{background:var(--accent-soft,color-mix(in srgb,var(--accent) 14%,transparent));border-color:var(--accent);color:var(--accent)}
/* V6.9.0 性能门：脉冲原来动铃铛自己的 box-shadow（只能主线程逐帧 tick），登录态每帧连带把首页星卷 / 学习页轨道整张 SVG 重排。
   改成伪元素上的 transform/opacity 环（合成器跑）。只挂手机浮动气泡：电脑铃铛的 box-shadow 被美化层 !important 钉死，脉冲从来没显示过，
   保持安静不变；气泡在 live 时原本就被动画盖掉投影，这里显式 box-shadow:none 保持同样外观 */
.ws-rq-mbell.live{box-shadow:none}
.ws-rq-mbell.live::after{content:"";position:absolute;inset:-1px;border-radius:inherit;pointer-events:none;z-index:-1;box-shadow:0 0 0 7px color-mix(in srgb,var(--accent) 18%,transparent);opacity:0;transform:scale(.9);animation:wsRqPulse 2.4s ease-in-out infinite}
@keyframes wsRqPulse{0%,100%{transform:scale(.9);opacity:0}50%{transform:scale(1);opacity:1}}
/* 可领取按钮做成更明确的主按钮：稍大、强调渐变、有投影 */
.ws-rq-claim:not([disabled]):not(.claimed){padding:8px 18px;font-size:13.5px;background:linear-gradient(135deg,var(--accent),var(--terra,#c79a3e));color:#fff;box-shadow:0 6px 16px color-mix(in srgb,var(--accent) 30%,transparent)}
.ws-rq-claim:not([disabled]):not(.claimed):hover{filter:brightness(1.06)}
.ws-rq-claim:not([disabled]):not(.claimed):active{transform:translateY(1px)}
/* 已完成可领的任务卡整卡轻高亮，引导去领 */
.ws-rq-task.claimable{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 7%,var(--card,var(--paper)))}
@media(prefers-reduced-motion:reduce){.ws-rq-bell.live,.ws-rq-mbell.live::after{animation:none}}
