/* v45：锁屏时钟去框 + 字体调细；心动棋盘换成爱心赛道和贴纸格子；测一测整体换成软糯手账风。
   不使用 emoji，装饰只用线条图案。 */

/* ========== 一、锁屏：去掉时间框，字体调细 ========== */
.lock-screen .lock-time {
  display: block; padding: 0; border: 0; border-radius: 0;
  background: none; box-shadow: none; -webkit-backdrop-filter: none; backdrop-filter: none;
  -webkit-text-fill-color: currentColor; background-clip: border-box;
  font-weight: 200; letter-spacing: 1px; line-height: 1.05;
  text-shadow: 0 1px 14px rgba(255,255,255,.35);
}
.lock-screen .lock-time::before, .lock-screen .lock-time::after { display: none !important; content: none; }
.lock-screen .lock-date {
  padding: 0; border: 0; border-radius: 0; background: none; box-shadow: none;
  -webkit-backdrop-filter: none; backdrop-filter: none;
  font-weight: 300; letter-spacing: 1.5px; font-size: 15px;
}
.lock-screen.lk-f-apple .lock-time { font-weight: 200; letter-spacing: 1px; text-shadow: 0 1px 14px rgba(255,255,255,.35); }
.lock-screen.lk-f-apple .lock-date { font-weight: 300; }
.lock-screen.lk-f-thin .lock-time { font-weight: 100; }
.lock-screen.lk-f-round .lock-time { font-weight: 300; }
.lock-screen.lk-f-serif .lock-time, .lock-screen.lk-f-serif .lock-date { font-weight: 300; }
.lock-screen.lk-f-mono .lock-time, .lock-screen.lk-f-mono .lock-date { font-weight: 300; }
.lock-screen.lk-f-app .lock-time, .lock-screen.lk-f-app .lock-date { font-weight: 300; }

/* ========== 二、心动棋盘：爱心赛道 ========== */
#flightApp { --bd-font: "Yuanti SC", "Hannotate SC", "HanziPen SC", "PingFang SC", "Noto Sans SC", sans-serif; }
.bd-pl-o { fill: #fff; stroke: #fff; stroke-linejoin: round; }
.bd-pl-i { fill: url(#bdDots); stroke: url(#bdDots); stroke-linejoin: round; }
.bd-pl-s { fill: rgba(255,255,255,.55); stroke: rgba(255,255,255,.55); stroke-linejoin: round; }
.bd-trk-o { fill: none; stroke: #f4bfce; stroke-linejoin: round; stroke-linecap: round; }
.bd-trk-i { fill: none; stroke: #fff9fb; stroke-linejoin: round; stroke-linecap: round; }
.bd-trk-c { fill: none; stroke: #f4bfce; stroke-width: 1.6px; stroke-dasharray: 1 7; stroke-linecap: round; stroke-linejoin: round; }
.bd-stitch { fill: none; stroke: #fff; stroke-width: 1px; stroke-dasharray: 2.4 2.4; opacity: .9; pointer-events: none; }
.bd-ct {
  font-family: var(--bd-font); font-weight: 700; letter-spacing: .3px;
  paint-order: stroke fill; stroke: #fff; stroke-width: 2.6px; stroke-linejoin: round;
}
.bd-kao { font-family: var(--bd-font); font-size: 11px; fill: #d9a0b5; letter-spacing: 1px; }
.bd-cell:active rect { transform: none; }
.bd-cell:active .bd-body { transform: scale(.95); transform-box: fill-box; transform-origin: center; }
.bd-cell.vis rect { opacity: 1; }
.bd-cell.vis .bd-body { opacity: .72; }
.bd-cell.vis .bd-ct { opacity: .85; }
.bd-goal-t { font-family: var(--bd-font); }
.bd-legend span { font-family: var(--bd-font); font-weight: 600; }

/* ========== 三、共用：软糯手账风（圆体、细字、虚线缝边、点点底纹） ========== */
#tarotApp, #flightApp {
  --cute: "Yuanti SC", "Hannotate SC", "HanziPen SC", "PingFang SC", "Noto Sans SC", "Microsoft YaHei", sans-serif;
  --paper-dot: radial-gradient(circle at 6px 6px, rgba(255,255,255,.9) 1.4px, transparent 1.8px);
  --spark: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linejoin='round'%3E%3Cpath d='M12 3c.6 4.6 2.400 6.400 7 7-4.600.6-6.400 2.400-7 7-.6-4.600-2.400-6.400-7-7 4.600-.6 6.400-2.400 7-7z'/%3E%3C/svg%3E");
  --bowl: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 20s-7-4.400-7-10a4 4 0 0 1 7-2.600A4 4 0 0 1 19 10c0 5.600-7 10-7 10z'/%3E%3C/svg%3E");
}

/* ---- 测一测 ---- */
#tarotApp {
  --tr-ink: #5d4251; --tr-sub: #a88f9b; --tr-line: #f2dde5; --tr-card: #fffdfb;
  font-family: var(--cute); font-weight: 400;
}
#tarotRoot { background: #fff7f5 !important; background-image: radial-gradient(circle at 7px 7px, #ffe9ee 1.6px, transparent 2px) !important; background-size: 16px 16px !important; }
#tarotApp b, #tarotApp h2, #tarotApp h3, #tarotApp h4 { font-weight: 500; font-family: var(--cute); }
#tarotApp .tr-top { background: color-mix(in srgb, #fff7f5 86%, transparent); border-bottom: 1px dashed #f1d6df; }
#tarotApp .tr-title h2 { font-size: 21px; letter-spacing: 4px; font-weight: 400; }
#tarotApp .tr-title small { color: #b79ba8; letter-spacing: .3px; }
#tarotApp .tr-tabs { background: #fff; border: 1px dashed #efc9d6; padding: 3px; }
#tarotApp .tr-tabs button { font-family: var(--cute); font-size: 13px; }
#tarotApp .tr-tabs button.on { background: linear-gradient(180deg, #f1a9c0, #e48aab); box-shadow: 0 4px 10px rgba(228,138,171,.35); }
#tarotApp .tr-step i { border: 1px dashed #efc9d6; font-style: normal; }
#tarotApp .tr-step.on i { border-style: solid; box-shadow: 0 0 0 4px rgba(228,138,171,.2); }

/* 顶部大卡片：奶油粉渐变 + 缝边，替掉原来厚重的深色卡片 */
#tarotApp .tr-hero, #tarotApp .tf-hero {
  color: #7a4f66; border: 1.5px solid #fff;
  background: radial-gradient(circle at 12% 18%, rgba(255,255,255,.7) 0, transparent 45%), linear-gradient(150deg, #ffe0ea 0%, #f7e3f5 55%, #e3e8fb 100%);
  box-shadow: 0 12px 26px rgba(228,138,171,.22);
}
#tarotApp .tr-hero::before, #tarotApp .tf-hero::before { content: ""; position: absolute; inset: 0; background-image: radial-gradient(circle at 7px 7px, rgba(255,255,255,.75) 1.4px, transparent 1.8px); background-size: 15px 15px; pointer-events: none; }
#tarotApp .tr-hero::after, #tarotApp .tf-hero::after { content: ""; position: absolute; inset: 7px; border: 1.5px dashed rgba(255,255,255,.95); border-radius: 22px; pointer-events: none; }
#tarotApp .tr-hero small, #tarotApp .tf-hero small { color: #c98aa2; }
#tarotApp .tr-hero h3, #tarotApp .tf-hero h3 { font-weight: 400; color: #7a4f66; letter-spacing: .5px; }
#tarotApp .tr-stars { opacity: .5; filter: invert(1) hue-rotate(300deg); }

/* 白色分区卡：缝边 + 标题前的小闪星 */
#tarotApp .tr-sec { border: 1.5px solid #fff; box-shadow: 0 6px 18px rgba(214,150,170,.12); outline: 1.5px dashed #f3d6e0; outline-offset: -8px; padding: 18px; }
#tarotApp .tr-sec h4::before, #tarotApp .tf-h::before { content: ""; display: inline-block; width: 15px; height: 15px; margin-right: 6px; vertical-align: -2px; background: var(--tr-ac); -webkit-mask: var(--spark) center/contain no-repeat; mask: var(--spark) center/contain no-repeat; }
#tarotApp .tr-opt, #tarotApp .tr-sp { border-width: 1px; border-style: dashed; border-color: #efd3dd; background: #fffaf9; }
#tarotApp .tr-opt.on, #tarotApp .tr-sp.on { border-style: solid; background: #fff0f4; }
#tarotApp .tr-ic { border: 1px dashed #f0cfda; }
#tarotApp .ti-btn { font-family: var(--cute); border: 1px dashed #efc9d6; }
#tarotApp .tr-mini i, #tarotApp .tr-stack i, #tarotApp .tr-fan i { border-color: #fff; border-width: 2px; }
#tarotApp .tr-cta, #tarotApp .tr-next, #tarotApp .tr-nx { font-family: var(--cute); letter-spacing: 1px; }

/* ---- 飞行棋（首页 / 心动棋盘首页 / 记录） ---- */
#flightApp { font-family: var(--cute); font-weight: 400; }
#flightApp b, #flightApp h2, #flightApp h3 { font-family: var(--cute); font-weight: 500; }
#flightApp .fl-hero, #flightApp .bd-hero { border: 1.5px solid #fff; }
#flightApp .fl-hero::before, #flightApp .bd-hero::before { content: ""; position: absolute; inset: 0; background-image: radial-gradient(circle at 7px 7px, rgba(255,255,255,.7) 1.4px, transparent 1.8px); background-size: 15px 15px; pointer-events: none; }
#flightApp .fl-hero::after, #flightApp .bd-hero::after { content: ""; position: absolute; inset: 7px; border: 1.5px dashed rgba(255,255,255,.95); border-radius: 22px; pointer-events: none; }
#flightApp .fl-hero h2 { font-weight: 400; letter-spacing: 8px; }
#flightApp .bd-hero-copy h2 { font-weight: 400; letter-spacing: 3px; }
#flightApp .bd-entry { border: 1.5px solid #fff; }
#flightApp .bd-entry b { font-weight: 500; letter-spacing: 2px; }
#flightApp .fl-mode-card, #flightApp .bd-pack, #flightApp .bd-seg button, #flightApp .bd-pl { border: 1.5px dashed #efd3dd; }
#flightApp .bd-pack.on, #flightApp .bd-seg button.on, #flightApp .bd-pl.act { border-style: solid; }
#flightApp .bd-sec b { font-weight: 500; letter-spacing: 1px; }
#flightApp .bd-sec b::before { content: ""; display: inline-block; width: 13px; height: 13px; margin-right: 5px; vertical-align: -1px; background: var(--bd-pink2); -webkit-mask: var(--spark) center/contain no-repeat; mask: var(--spark) center/contain no-repeat; }
#flightApp .bd-primary { font-family: var(--cute); letter-spacing: 3px; font-weight: 500; border: 2px solid #fff; box-shadow: 0 8px 18px rgba(217,123,153,.3), 0 0 0 1px #f2bccb; }
#flightApp .bd-hero-art { opacity: 1; }
#flightApp .bd-ha-halo { fill: none; stroke: rgba(255,255,255,.7); stroke-width: 44px; stroke-linejoin: round; }
#flightApp .bd-ha-track { stroke-linejoin: round; }
#flightApp .bd-hero-art { width: 118px; height: 118px; right: -8px; }
#flightApp .bd-entry svg.bd-entry-art { width: 84px; height: 84px; }
#tarotApp .tf-hero { margin-top: 12px; }

/* ========== 四、游戏页：一屏放下，不用上下翻 ========== */
#flightApp:has(#bdGame) { overflow: hidden; }
#flightApp:has(#bdGame) #flightRoot { position: absolute; left: 0; right: 0; bottom: 0; top: var(--bd-rt, 38px); overflow: hidden; padding: 0; }
#flightApp .bd-game { position: relative; height: 100%; box-sizing: border-box; display: flex; flex-direction: column; padding: 2px 14px 12px; overflow: hidden; }
.bd-game .bd-top { flex: none; margin: 0 0 6px; }
.bd-game .bd-score { flex: none; margin-bottom: 4px; }
.bd-game .bd-pl { padding: 7px 10px; }
.bd-game .bd-tip { display: none; }
.bd-game .bd-boardwrap { flex: 1 1 0; min-height: 0; display: flex; align-items: center; justify-content: center; margin: 0 -8px 6px; padding: 0; }
.bd-game #bdSvg { width: 100%; height: 100%; display: block; overflow: visible; }
.bd-game .bd-legend { flex: none; flex-wrap: nowrap; overflow-x: auto; justify-content: flex-start; margin: 0 0 6px; padding-bottom: 1px; scrollbar-width: none; }
.bd-game .bd-legend::-webkit-scrollbar { display: none; }
.bd-game .bd-legend span { flex: none; white-space: nowrap; }
.bd-game .bd-dock { position: static; flex: none; }

/* 心动值 */
.bd-meter { flex: none; display: flex; align-items: center; gap: 6px; margin: 0 6px 6px; color: #c76b8c; font-size: 11.5px; }
.bd-meter .bd-mi { display: grid; place-items: center; }
.bd-meter small { letter-spacing: 1px; color: #b78a9c; }
.bd-meter i { flex: 1; height: 8px; border-radius: 99px; background: #fbe4ea; box-shadow: inset 0 0 0 1px #f6cfdb; overflow: hidden; }
.bd-meter i b { display: block; height: 100%; width: 0; border-radius: 99px; background: repeating-linear-gradient(45deg, #f59bb8 0 6px, #f8b3c8 6px 12px); transition: width .5s cubic-bezier(.2,.9,.3,1); }
.bd-meter em { font-style: normal; min-width: 22px; text-align: right; font-size: 11px; color: #b78a9c; }

/* TA 的实时回应：固定在棋盘下面一条，不用翻到页面底部 */
.bd-live { flex: none; width: 100%; min-height: 44px; display: flex; align-items: center; gap: 8px; margin: 0 0 6px; padding: 6px 10px; border: 1.5px dashed #f0cfda; border-radius: 16px; background: rgba(255,255,255,.72); color: var(--bd-ink); font: inherit; font-size: 13px; line-height: 1.45; text-align: left; opacity: .55; transition: opacity .25s; cursor: pointer; }
.bd-live.on { opacity: 1; }
.bd-live:empty::before { content: "TA 的小反应会出现在这里，点一下可以聊天"; color: #c0a2b0; font-size: 12px; }
.bd-live .bd-b { flex: 1; min-width: 0; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.bd-live.sys { justify-content: center; color: #b78a9c; font-size: 12px; }
.bd-live.me { justify-content: flex-end; color: #9a5b78; }
.bd-live .dots { display: inline-flex; gap: 4px; }
.bd-live .dots i { width: 6px; height: 6px; border-radius: 50%; background: #e6a2b9; animation: bdDot 1s infinite ease-in-out; }
.bd-live .dots i:nth-child(2) { animation-delay: .15s; } .bd-live .dots i:nth-child(3) { animation-delay: .3s; }
@keyframes bdDot { 0%, 80%, 100% { transform: translateY(0); opacity: .5 } 40% { transform: translateY(-4px); opacity: 1 } }

/* 小动作 */
.bd-gest { flex: none; display: flex; gap: 6px; margin: 0 0 8px; }
.bd-g { flex: 1; min-width: 0; position: relative; display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 7px 2px 5px; border: 1.5px dashed #efcad7; border-radius: 16px; background: rgba(255,255,255,.8); color: #c76b8c; transition: transform .15s, opacity .2s; }
.bd-g small { font-size: 10.5px; color: #a07f8f; letter-spacing: .5px; }
.bd-g:active { transform: scale(.94); }
.bd-g.cool { opacity: .4; pointer-events: none; }
.bd-g-chat { color: #7f78c4; border-color: #d9d2f1; }
.bd-g-chat.dot::after { content: ""; position: absolute; top: 5px; right: 14px; width: 8px; height: 8px; border-radius: 50%; background: #ff7ea5; box-shadow: 0 0 0 2px #fff; }
.bd-fly { position: absolute; left: 50%; bottom: 14%; z-index: 6; color: #ff7ea5; pointer-events: none; animation: bdFly 1.3s ease-out forwards; }
@keyframes bdFly { 0% { transform: translate(-50%, 0) scale(.6); opacity: 0 } 15% { opacity: 1 } 100% { transform: translate(-50%, -150px) scale(1.25); opacity: 0 } }

/* 聊天面板：需要的时候才从下面滑出来 */
.bd-chat { position: absolute; left: 0; right: 0; bottom: 0; z-index: 40; height: 54%; display: flex; flex-direction: column; gap: 8px; padding: 10px 14px 14px; box-sizing: border-box; border-radius: 26px 26px 0 0; background: var(--bd-card, #fffaf8); box-shadow: 0 -12px 34px rgba(150,100,130,.24); transform: translateY(105%); transition: transform .3s cubic-bezier(.2,.9,.3,1); }
.bd-chat.open { transform: none; }
.bd-chat-h { display: flex; align-items: center; justify-content: space-between; }
.bd-chat-h b { font-size: 14.5px; }
.bd-chat-h button { width: 34px; height: 34px; border: 0; border-radius: 50%; background: #f8ebef; color: #b86b80; display: grid; place-items: center; }
.bd-chat .bd-feed { flex: 1; min-height: 0; max-height: none; margin: 0; }
.bd-chat .bd-say { margin-top: 0; }
@media (max-height: 720px) { .bd-game .bd-legend { display: none; } .bd-game .bd-live { min-height: 38px; margin-bottom: 4px; } .bd-game .bd-gest { margin-bottom: 6px; } }

/* 线条小图标（替代 emoji） */
.li { display: inline-block; width: 1.15em; height: 1.15em; vertical-align: -.2em; line-height: 1; }
.li svg { width: 100%; height: 100%; display: block; }

/* ========== 五、经典飞行棋对局：一屏放下 ========== */
#flightApp.fl-fit { overflow: hidden; }
#flightApp.fl-fit #flightRoot { position: absolute; left: 0; right: 0; bottom: 0; top: var(--fl-top, 82px); overflow: hidden; padding: 0 14px 10px; box-sizing: border-box; display: flex; flex-direction: column; }
#flightApp.fl-fit .fl-game { flex: 1; min-height: 0; gap: 8px; }
#flightApp.fl-fit .fl-board-wrap { flex: 1 1 0; min-height: 0; display: flex; align-items: center; justify-content: center; }
#flightApp.fl-fit .fl-board { width: 100%; height: 100%; }
#flightApp.fl-fit .fl-dock { flex: none; padding: 9px 12px; }
#flightApp.fl-fit .fl-talk { flex: none; padding: 6px 12px 8px; }
#flightApp.fl-fit .fl-talk-head { display: none; }
#flightApp.fl-fit .fl-talk-body { max-height: 84px; padding: 2px 0 6px; }
#flightApp.fl-fit .fl-dock .fl-die, #flightApp.fl-fit .fl-die { transform: scale(.86); transform-origin: left center; }
@media (max-height: 740px) { #flightApp.fl-fit .fl-talk-body { max-height: 56px; } }

/* ========== 六、测一测互动区：钉在底部，可收起 ========== */
#tarotApp .tr-inter { position: sticky; bottom: 0; z-index: 20; max-height: 48vh; overflow-y: auto; margin-top: 10px; border-radius: 26px 26px 18px 18px; border: 1.5px solid #fff; box-shadow: 0 -10px 30px rgba(214,150,170,.26); }
#tarotApp .tr-inter .tr-who { cursor: pointer; position: relative; padding-right: 26px; }
#tarotApp .tr-inter .tr-who::after { content: ""; position: absolute; right: 2px; top: 50%; width: 9px; height: 9px; margin-top: -6px; border-right: 2px solid #d98aa8; border-bottom: 2px solid #d98aa8; transform: rotate(45deg); transition: transform .2s; }
#tarotApp .tr-inter.min .tr-who::after { transform: rotate(-135deg); margin-top: -2px; }
#tarotApp .tr-inter.min .tr-itabs, #tarotApp .tr-inter.min .tr-pane { display: none; }
#tarotApp .tr-inter.min { padding-bottom: 12px; }

/* ========== 七、恋爱飞行器任务：TA 的话钉在可见处 ========== */
#flightApp .flv-run .flv-ta { position: sticky; bottom: 10px; z-index: 8; box-shadow: 0 10px 26px rgba(150,100,130,.22); }
